冥冥乃志

ソフトウェア開発会社でチームマネージャをしているエンジニアの雑記。アウトプットは少なめです。

follow us in feedly

Adaptive Code 第2版を読んだ

長澤さんよりご恵投いただきました(厳正なる抽選の上)。多謝。

Adaptive Code ~ C#実践開発手法 第2版 (マイクロソフト関連書)

Adaptive Code ~ C#実践開発手法 第2版 (マイクロソフト関連書)

3行所感

所感

本の内容をなぞるだけのレビューは大嫌いなので、ここは読みながら私が感じたことを書いてみたいと思います。

コードは書いた瞬間から鮮度が落ちていくもので、それに抗う必要がある

致し方ないことですよね。プロダクトが未来永劫同じ使われ方をして、同じニーズにこたえ続けるわけではなく、ユーザや市場も変化し続けているわけです。そのため、プロダクトが果たさなければならない役割も変化し続ける。

で、これも仕方のないことですが、コード自体はリリースしたタイミングを起点に次のリリースまでどんどん鮮度が落ちていきます。書き逃げのようなプロダクトならともかく、ユーザとともに育っていくつもりのプロダクトなら、この変化に対応しないといけないわけです。本書ではこの変化に対応しやすいコードのことを「Adaptive Code(適応的なコード)」と称しているわけです。

そして、これにどうやって抗うのか、ということが書いてあります。中でも重要なポイントは以下の3点だと思いました。

  • 適時にリリースできるようにする
  • コードの上でも抽象と具象を分ける
  • 抽象ベースに依存関係を作りやすい構成にする

デリバリーフレームワークという言葉と構成に感じる強い意志

「Adaptive Code」というタイトルながら、本書の頭1/3くらいは「デリバリーフレームワーク」と表現された開発プロセス(Scrumとカンバン)と、コードの配置の仕方について力を入れて書かれています。いうなれば兵站に相当するようなことなわけですが、具体的なコーディングテクニックの前にやるべきこと、考えることについて目を向けており、章立てから非常に強い意志を感じる構成です。個人的にはやっぱりカンバンが好きだなあ、と思いました。

それはそうと「デリバリーフレームワーク」というのは良い表現ですね。コードもデリバリーも適応的にいくべきだ、という思いを感じる表現です。著者がカンバンを成熟したチームのためのフレームワークと表現しているのは、カンバンの方がよりシンプルでかつ適応的であると考えているのでしょう。

ただ、カンバンのところにある「サービスクラス」と「SLA」の例えは、ちょっと唐突な感じがしました。このところは理解するのに少し時間がかかったというか、まだちゃんと理解できているか怪しいところです。

すべてはインターフェイスのために(違

Javaを使い始めのころは、インターフェイスの利点をよくわかっていませんでした。そのころに入った案件では、結構うまくインターフェイスを利用していたのですが、「どうせ実装クラス出てくるのにぶっちゃけ邪魔だなー」としか。それからデザインパターンを知り、インターフェイスを使って柔軟性を確保する方法を知り、今となってはインターフェイスの恩恵を受けないことなど考えられないくらいです。

で、本書では、段階的にその利点を感じながら使いどころを抑えていくためのサンプルとコーディングテクニックにあふれています。それはもう、インターフェイスを使いやすくするために各種パターンやコーディングテクニックがあるのだ、と言わんばかり(あくまで「言わんばかり」ですよ)。

まとめ

長澤さん、ありがとうございます。とても良い本でした。

初学者の段階からすべてを把握することは厳しいかもしれませんが、備えておくべき資質になると思うので、早いうちから読んでいく本だと思います。また、C Sharpに限らず(第2版は原題から外されている模様)、オブジェクト指向言語を扱ってコードを書いている人には有用な本だと思います。