新年のごあいさつ & 2018年のふりかえり by @masaru_b_cl

あけましておめでとうございます。本年もよろしくお願いいたします。

さて、この2年くらい書いてなかったのですが、色々ありましたので久しぶりにふりかえりをしておこうかなーと思います。

1月

書評 | テスト駆動開発(オーム社)

テスト駆動開発が@t_wadaの手により復活したので、その書評を遅まきながら書きました。

さらに1年以上経つのですが、今度2月9日に再販記念のTDDBCを長岡で久々に開きますので、ぜひおいでください!

「TDDBC 長岡 2019-02」を2019/2/9(土)に開催します! #tddbc | DevelopersIO

3月

第55回 長岡IT開発者勉強会に参加しました

第55回勉強会(2018/03/17) – 長岡 IT開発者 勉強会(NDS)

テーマ「入門・初心者向け」ということでしたので、新しい世界の学び方というタイトルで私も発表してきました。これまで新入社員研修などで培った「学ぶ」ということへの知見をまとめることができて、自分でもよかったです。

5月

書評 | Adaptive Code (C#実践開発手法 第2版) 

監訳者の@tnagasawaが募集していたレビュアーに応募して当選したので、書評を書きました。

この本のコードはC#ですが、アジャイル開発プロセスの1つである「Scrum(スクラム)」の説明や、最も有名なオブジェクト指向設計原則「SOLID」について丁寧に解説しているので、他の言語をメインとする方にもおすすめです。

バッチプログラミング入門 by C#

新入社員研修用に新たに書いたテキストです。.NETのコンソールアプリの開発手順って案外まとまった情報が無いので、結局自分で書くことになっちゃいました。

車窓からのTDD by C#

新入社員研修用に新たに書いたテキストその2。TDDを研修に取り入れるに当たって、写経用に「車窓からのTDD – オブジェクト倶楽部」をなぞるやり方についてまとめました。

6月

Windowsフォームによる業務プログラミングチュートリアル

新入社員研修用に新たに書いたテキストその3。「アプリを作ろう! Visual C#入門 Visual C# 2017対応」のような入門書の次に身につけるべきことである、PDSやフォーム間の依存関係などを解説したテキストが見つからなかったので書きました。

このテキスト自体は2年ほど前に社内では使っていたのですが、せっかくなので社内向けの内容をデトックスして公開することにしました。

システム開発者のためのネットワーク入門

新入社員研修用に新たに書いたテキストその4。例によって、「ちょうどいい」感じの量でネットワークについての最低限の知識やコマンドが学べるテキストがなかったので書きました。

7月

docs.microsoft.com の ja-jp へフィードバックして改善された話

Microsoft Docsの日本語訳について誤りがあるというのが、twitterでちょっとバズってたので、せっかくなのでフィードバックして直してもらった顛末です。

MS Docsに限らず、日本語ドキュメントはメンテナンスが行き届いていないことが結構あります。間違いを見つけたら悪態をついているだけでなく、気軽にフィードバックして貢献することで、ちょっとだけ世界が良くなるのでおすすめです。

9月

クラスメソッド事業開発部にジョインした@masaru_b_clこと高野 将です

色々思うところがあり、自分の身を置く環境を変えようと数年来考えてきたのですが、ついにそれが実りました。

これまでの環境とはだいぶ違うので大変なことも多いですが、なんとかやっています。

なお、クラスメソッドではブログを書くことを推奨しているので、以後のブログは会社ブログであるDevelopers.IOに書いています。

元WindowsユーザーのVimmerでVSCoderが、入社1週間でMacにインストール・設定したものまとめ

会社ブログの第一弾です。私はこれまでMacを触ったこともなかったので、色々設定したことを備忘録としてまとめました。

近年はVimやGitについてくるターミナル環境のGit Bashでの操作に慣れていたこともあり、案外すんなりと使えるようになったのはよかったです。

NDSのポッドキャスト「NDS FM」の第5回に出演しました

7/7に開催された長岡 IT開発者 勉強会(NDS) 第56回勉強会にて@dictavからアナウンスのあった、NDSの公式ポッドキャストNDS FMに出演し、私のコミュニティ遍歴やNDSとの出会いと今まで、新入社員研修や転職についてお話ししました。

NDS FM#005: 私とコミュニティ活動とNDS

私自身もRebuild.fmajitofmなど、結構ポッドキャストを聞くのは好きな方ですので、NDS FMは非常に良い試みだと思っています。今後も機会があればちょくちょく出演していこうと思います。

10月

あらゆる「学習・教育」がテーマの第57回 長岡IT開発者勉強会に参加しました&私も新入社員研修の作り方について発表してきました

第57回勉強会(2018/09/29) – 長岡 IT開発者 勉強会(NDS)

テーマが「学習・教育」だったので、このタイミングしかないと思って私も「新入社員研修の作り方」について発表してきました。数年やってきた知見をまとめて発表する場が持てて、非常によかったです。

何故教えるのか、何を教えるのか、どうやって教えるのか 〜 「新入社員研修の作り方〜完全版〜」のプレゼンを実況中継風に再現

その発表をブログエントリとしてまとめました。超頑張ってまとめた割に、反応が薄くてちょっと残念でしたが、必要としている人に長く届き続けるものになれば良いなと思います。

11月

NDSFM 第9回「NDS第57回勉強会振り返り会」に出演しました

さらにふりかえりを行なったNDS FMにも出演しました。

NDS FM#009: NDS第57回勉強会振り返り会

12月

最強のMarkdown編集環境を模索する

仕事でよくMarkdownを書くので、その知見をまとめました。

日経 xTECHにGitHub入門記事を執筆しました

久々のWINGSプロジェクトの仕事で、GitHubの入門記事を執筆しました。

初めてのGitHub | 日経 xTECH(クロステック)

この記事は、雑誌「日経SYSTEMS」の2019年1月号に「インサイト 『今から間に合う GitHub超入門』」としても掲載されます。

日経SYSTEMS 2019年1月号 | 日経 xTECH(クロステック)

まとめ

昨年は環境を変えたこともあり、.NET系から離れてました。そのせいもあり、コードでのアウトプットがほぼないのが少し気になりますね。ただ、どうやら私はコードを書いていないと死んでしまう人種ではないようなので、また気分が乗ったら自分のペースでやっていこうかなーと。

コード以外のアウトプットは、これまで自分の中に溜まっていた知見を出したものが多かった感じですね。正直ある程度出し切った感じはあるので、現職でのインプットを元に、また違う視点でのアウトプットを増やしていけるよう頑張ります。

あと、アウトプットの形として、新たにポッドキャストが増えたのはよかったですね。@dictav++

今年の抱負

当面は現職の業務をこなしつつ、業務ドメインやマイクロサービスなどの知見をアウトプットしていければと思います。あと、コードも感を失わない程度には書いていきたいですね。

とはいえ、1年は長いので、状況が変わったらそれなりにフットワーク軽くやってく所存です。

あと、既に述べたように2月に久々のTDDBC開催を予定しているので、このイベントの成功も頑張ります!

広告

所属が変わりました

クラスメソッド事業開発部にジョインした@masaru_b_clこと高野 将です

https://dev.classmethod.jp/etc/join-takano/

というわけで、転、ほげともいわれることになりました。

心機一転頑張ります!

docs.microsoft.com の ja-jp へフィードバックして改善された話

TL;DR;

本文

ちょっと前に話題になってたこれら

関連です。

このフィードバックは最終的に改善されることになりました。

それを受け、直ったというページを見たら、まだ違和感が……

要はMSの日本語ドキュメントガイドラインにも書いてある、いわゆる「半角文字」と「全角文字」の間にスペースがないというわけです。

というわけで、改めてフィードバックしたのがこちら

続くコメントを見てもらうとわかるのですが、最初はほかのチケットと同じとみなされ、即クローズされてしまいました。

https://github.com/dotnet/docs.ja-jp/issues/140#issuecomment-408531738

しかしその後、別の担当者の方から「同じではなく、対応すべき指摘である」というコメントと共に再オープンされました。

https://github.com/dotnet/docs.ja-jp/issues/140#issuecomment-408611899

そして、今日無事対応したという連絡がありました。

https://github.com/dotnet/docs.ja-jp/issues/140#issuecomment-408998722

2018/7/31 10:00現在はまだdocs側は直っていないようですが、じきに直るでしょう。

まとめ

ちゃんとプロセス含めて改善されているようなので、どんどんフィードバックしましょう ╭( ・ㅂ・)و̑ グッ

おまけ

このフィードバックについて対応されたなーと思った後に、@megascusさんのツイートを発見

まとめたよ!

追記

その後確認したら、更新された!と思ったら……

pre.png

なぜだーーーーーーっ!

というわけで即座に再コメント。

https://github.com/dotnet/docs.ja-jp/issues/140#issuecomment-409138735

はてさてどうなることやら。

追記のおまけ

@matarilloさんのこれが当たってるんじゃないだろうか……

追記の追記

直ってた!チケットもクローズされた!

post

書評 | Adaptive Code (C#実践開発手法 第2版) by @masaru_b_cl

監訳者の長沢智治氏(@tnagasawa)より献本御礼。

https://shop.nikkeibp.co.jp/front/commodity/0000/P53540/

本書は以前書評を書いた「C#実践開発手法」の第2版です。

新刊『Adaptive Code 〜 C#実践開発手法 第2版』 – 長沢智治のブログ
https://nagasawa.blog/entry/adaptive-code-second-edition-japanese

本書の特徴は何といっても「C#」がタイトルからなくなったことです。初版の書評で、私は次のように書きました。

「C#ならでは」というものも、それほど多くはないという印象でした。この点については少し残念でした。

しかし、本書ではC#かどうかは重要ではなく、いかに「適応力のある(≒Adaptive)」なコードを書くかに主眼があることがより明確になりました。これは非常に素晴らしいことです。

本エントリでは、初版から変わったところを中心に、私が思ったことを紹介します。

レガシーコード改善がより実践的に

本書は初版では一緒の章になっていた「テスト」と「リファクタリング」が別々の章になりました。これにより、元の「Adaptive」でないレガシーコードの改善の手順が、より実践的になりました。

特に良いと思ったのは、最初に「仕様化テスト」を用意するところです。しかも、テスティングフレームワークを使うのではなく、ただのコンソールアプリでよいという割り切りが素晴らしいです。

テスティングフレームワークを使うと、どうしても入出力ファイルの扱いで制約を受けて、うまくテストすることができないことがあります。それを、対象コードをそのまま動かすことで、とにかく変更前後の結果が同じかどうかを比較できるようにすることが、何よりも大事だというメッセージと受け取りました。

テストが手厚い

前述のように「テスト」と「リファクタリング」が分かれたことにより、「テスト」についてより包括的に書かれています。初版ではほぼ「ユニットテスト」しか扱っていませんでしたが、より大きなテストアンチパターン、「テスト駆動開発」と「テストファースト開発」の違いなど、かなり情報が増えており、とても良いと思いました。

Code ContractとUnity(DIコンテナの方)はちょっと……

初版から「契約による設計」を強制するツールとして第9章に「Code Contracts」が出てきます。ただ、正直最新のVSに対応していませんし、製品としても今はあまりメンテナンスされていない印象ですので、ちょっとなーと思いました。

また、Unityを使ったDI(依存性の注入)についても、今は「Unity」といったらゲーム開発ツールの方を先に思い浮かべてしまいますし、.NET Coreに標準でDIの仕組みが入ったこともあり、ちょっと古い感じはあります。


初版の書評でも述べた通り、本書は初心者がSOLID原則などを学ぶのにも適しています。タイトルからC#もなくなりましたし、他の言語を扱っている人にもぜひ読んでもらいたいと思います。

それでは、最後に恐らく間違いを見つけたので、そちらも紹介しておきます。

「第9章 リスコフの置換原則」のp.299 リスト9-30は、p.297の図9-6と見比べてみると、IEntityRepository<TEntity>の型引数にoutキーワードが足りません。おそらく正しくは、IEntityRepository<out TEntity>の間違いだと思います。

第55回 長岡IT開発者勉強会に参加しました #nds55

第55回勉強会(2017/03/17) – 長岡 IT開発者 勉強会(NDS)
http://nagaoka.techtalk.jp/no55

テーマ「入門・初心者向け」

毎年恒例の春企画、新社会人・新入生に向けた入門者向けのテーマで発表お願いします。(まだ3月ですが)
特定のテーマにおける入門的なテーマでもOKです。もちろんテーマ外の発表も歓迎です。

に参加、発表してきました。

テックトーク

pythonはじめの一歩(コードとかではなく) by @civic

NDS主催のcivicさんの発表です。Python環境のハマらない作り方についてでした。

https://docs.google.com/presentation/d/1K6a1fBdQyD51k4EJrZyRsGsw5N1ftaTN7zn7TrqRm_A

Pythonは触る機会が今のところないのですが、Windowsは公式インストーラーがお勧めということですので、触る必要が出てきたらそうしようと思います。

個人的に面白かったのは、pythonのライブラリなどのパッケージ管理は、プロジェクト単位ではなく「仮想環境」単位ということでした。ほかのツールは、プロジェクトフォルダーの下に必要なモジュールを置くことが多く、なるほど文化の違いとは面白いものだ、と。

あわせて読みたい

長岡IT開発者勉強会 #nds55 に参加・運営してきました | civic site
https://www.civic-apps.com/2018/03/18/nds55/

プロジェクトマネジメント入門 by hiro_ishibashi

ProjMのいしばしさんによる入門でした。

この一言に集約される気がしますね。

Docker for Mac/Windows ではじめる Kubernetes by @hayajo

はてなのはやじょさんのセッション。

個人的にはDockerはさわりはやってますが、その先は全く使ってないのでちょいとついてくのつらかったんですが、研修とかでAPサーバー・DBサーバーのセットをえいやって配るのに便利そうだなーと思いました。これは懇親会で直接聞いたら、そういう用途もよくあるということだったので、理解ずれて無くて安心。

なお、「Kubernetes」の発音は、はてなでは「クバネテス」が多数派だそうです。

はじめてのソフトウェアテスト技法 ー 同値分割・境界値分析編 by @kasacchiful

笠原さんのテスト入門第二弾。テスト技法の初歩的なところを説明していただきました。

「同値分割」の時に使えるツールに「同値図」というのが出てきて、これまで私はツリーでやってきたのでいい情報でした。連続値の分析には数直線、離散値には同値図が向いているとのこと。

質問で出た、「境界値自体が外部からの入力になる場合はどうしたらよいですか?」はとっても良い質問で、「ドメイン分割」や「デシジョンテーブル」で戦うという話でした(私もそう思います)。

きっとこれ、「現在の日時で~」みたいなのでも同じこと言えそうな感じですね。隠れた入力値をいかに割り出せるかがポイントでしょう。

アウトプットのすゝめ 〜春のエモを添えて〜 by @shinpei0213

猫型さんによるエモーショナルなセッション。

とにかく「やらなければ、はじまらない……」ということで、アウトプットするとこんなにいいことがあるよっていう熱い思いをぶつけてくださいました。

んで、おそらくぶつけられてる対象なんだと↓から読み取りましたので頑張る。

フリーランスで割と長くリモートでやってる僕が気をつけていること by @nemuzuka

片桐さんのリモートワークにまつわるあれこれでした。積極的にアピールすることや、全部残すとかがポイントなんですが、結局リモート関係なくやった方が職場環境よくなることがたくさんでした。あと、リモートワーク可能かどうかは組織による部分もかなり大きいとのこと。たしかに。

今後なにかしらそういう時が来たら全力で参考にさせてもらいたいと思います。

あわせて読みたい

長岡IT開発者勉強会(NDS)の第55回勉強会に参加してきた #nds55 – nemuzukaの「明日から本気出す」
http://nemuzuka.hatenablog.com/entry/2018/03/19/232308

Amazon Neptuneに入門してみる by @yuw27b

某大学の研究室勤務というWatanabeさんによる、AWSのマネージドグラフDBサービス「Neptune」の紹介でした。

昨年もNeo4jなどのグラフDBについて紹介してくださったのですが、商用で使い物になるグラフDBはあんまりなくて、今後本命になるかもしれないということでした。今のところ、まだプレビュー段階で、ごく一部のリージョンでしか使えませんし実践投入できないそうなのですが、ハマるところはありそうなので早くプレビュー取れるとよいですね。

質疑応答では、「プロパティグラフ」、「RDF」のどちらがどんな用途に向いているか、といった質問があり、「プロパティグラフ」はパス解析などができるが組み合わせ爆発に注意、「RDF」は問い合わせに使うSPARQLの都合でパス解析はできないのでノードの偏りなどの解析向きということでした。

新しい世界の学び方 by @masaru_b_cl

私のセッションで、テックな話題はいっぱいあるだろうからということで、誰でも使える「学び方」の紹介でした。

セッションで取り上げた「ラーニング・パターン」は実際とっても有用なので、個人・チームでぜひ読んでほしいです。

質疑では「何が原理原則かわからない問題」について聞かれ、「わかる」という感じだったのですが、そのあたりは有識者が手を差し伸べるのが一番早かろうといった旨を答え、公開したスライドにもちょっち反映させました。

アイコンフォントを手作りしよう by @gatabutsu

やまざきさんによる「ライブ・アイコンフォント作成」も含んだ面白いセッションでした。「長岡市の形をしたアイコンが欲しい」という無茶ぶりに、見つけた地図からアイコンフォントをフォトショップ、イラストレーターなどを駆使して何とかした話を紹介してくださいました。

なかなかにニッチな仕事ですが、手持ちの武器で何とかする姿は正直かっこよかったです。

LT

数年ぶりにJSを使った件 by @gonchan93

WSHでJScriptやることになったらprototypeとESとの違いにハマった話でした。

滅ぼしたい気持ちはわかるが、無理だ。

Blazor(.NETのWeb Assembly対応したSPAフレームワーク)について by @AILight

C# で Single Page Web Application が書ける Blazor が凄かった件 – Qiita
https://qiita.com/jsakamoto/items/20d4893f6c8cdb0356f6

でもちょっと話題になったBlazorについて。

「System.dllをGETしてる……!?」と皆さんから驚きの声が上がりました。

実際WebフロントエンドはXamarinもカバーできていない領域なので、.NETのWebフロントエンド開発の(来ないかもしれないけど)未来を感じます。

Azure開発の感想 by ToruAbe

初めて開発にAzureとVSTSとVSとC#使ってみた感想でした。

また一人VSの魅力に取りつかれてしまったか……

ながおか技術教育支援機構についてのお知らせ by masarunagai

かれこれ15年くらいやってる、小中学生向けにプログラミングを教える非営利団体の紹介から、タイトルの機構を立ち上げるというアナウンスでした。

昨年RoboCupで優勝した高専生はそのプログラミングイベントのOBだそうで、小さいうちから「楽しむ」ことを一番にやってきたといういいお話でした。

初めてを楽しもうよ by @84taka0310

今年度取り組んできた初めてのことの紹介。

各地のイベントにとりあえず飛び込んでみる行動力は素晴らしいです!

はじめてのAWS認定資格取得 by @kasacchiful

会社の都合でAWS認定資格を取ることになった顛末。

キオスク端末試験は地雷で、日本だと秋葉原会場が良いとのこと、承知。

懇親会

久々にお会いするメンツと主にお話ししてました。

  • はてなのはやじょさんのTLが超楽しそう
  • Rで始まるWebフレームワークの功罪
  • #rebuildfmで聞いたところだ!
  • インフラ勉強会が超面白い
  • 新潟価格と京都価格と東京価格

みたいなとりとめのないことを話しながら、楽しいひと時でした。

 

最後に

NDSは今回のトークセッションでもわかるように、非常に多様な話を気軽にできる場です。

ぜひ参加して、「あなたの」体験を話してみてください!

書評 | テスト駆動開発(オーム社)

https://www.ohmsha.co.jp/book/9784274217883/

本書は、残念ながら絶版になってしまった「テスト駆動開発入門(ピアソン・エデュケーション)」を、日本におけるTDDの第一人者である和田卓人氏(@t_wada)が訳しなおしたものです。

しかし、本書はただ訳が新しくなっただけではありません。

  • サンプルコードの強化
    • 言語とテスティングフレームワークが執筆時の最新バージョンに!
    • サンプルコードの変更箇所がわかりやすく明示されるように!
    • TODOリストも箇条書きでわかりやすく!
    • 各章の最後にその省のサンプルコード全掲示!
  • 付録C「訳者解説:テスト駆動開発の現在」
    • 原著が出版されてからこれまでのTDDの経緯を和田さんが書き下ろし

といった特徴があります。この辺りは、和田さんのエントリや、ajito.fmの和田さん登場回などでも詳しく説明されていますので、そちらをどうぞ。

このエントリでは、これらのことを踏まえつつ、私が読んで思ったことを書いていきます。

訳註が最高!

本書を読んでいて、地味に素晴らしいと思ったのは、「訳註」の存在でした。

色々な人が本書のレビューを書いていますが、訳注に触れたものはあまりありませんでした。しかし、この訳註こそ、陰ながら読者を支える非常に重要な役割を果たしていると思います。

例えば、

  • 初出する用語について補足する
  • コードを変更してテストを実行した際の挙動を補足する
    (「ここで実行すると○○と××が失敗するが、□□を実施して実行すると成功するようになる」)
  • 過去のバージョンを対象とした記述について現在はどうであるのか補足する

といったケースがいくつも追加されています。これがあることで、読者は書籍を写経しながら読み進めながらも、迷いなくより現実にあった形を知ることができるようになっています。

おそらく、この訳註は本書の執筆中に著者、レビュアー、編集者とで何度も調整されたものでしょう。関係者の努力にただただ感謝するばかりです。

参考文献も最高!

本書は「テスト駆動開発」という「開発手法」を解説していることもあり、「設計原則」、「パターン」、「テスト手法」、「開発プロセス」など、多くのことを扱っています。そのため、それぞれについてより深く扱っている各種の書籍を、本書の「参考文献」から知ることができます。

また、より素晴らしいことに、前著出版後に改版されているものについても、しっかりと照会されています。本書の参考文献から、さらにたどっていくことで、膨大な先人の知識、ノウハウが得られることでしょう(このあたりは、TDDBCのクロージングセッションなどで、和田さんがよく言っていますね)。

全部書いてある!

前著を読んでからだいぶ経ち、久しぶりに本書を読んだのですが、それでもTDDに関する内容が全部書いてあることに驚かされました。

既にTDDを実践していたり前著を持っている人でも、本書の第Ⅲ部―中でも「第25章 テスト駆動開発のパターン」、「第26章 レッドバーのパターン」、「第27章 テスティングのパターン」、「第28章 グリーンバーのパターン」、「第29章 xUnitのパターン」、「第32章 TDDを身につける」―は読み返してみると、新たな発見や気付きが得られると思います。

 

本書は、昨今では当たり前になりつつある「テストを書く」というスキルを身に付けるのに、最初の一冊として非常に優れていると思います。ぜひ、書籍を手に取り、できれば和田さんも進めているように「写経」しながら読み進め、開発者として使える「武器」を増やしてほしいと思います。