ThoughtWorksアンソロジー

ThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーション

ThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーション

献本いただいた。マーティン・ファウラーたちで有名なThoughtWorksのスタッフによるエッセイ集。このレベルの記事を書ける人がこれだけ集まってるというのは、改めてThoughtWorksってのはすごい会社なんだなぁ。で、Seleniumに象徴的なように、みんなが考えるけど実現可能性はどうだろうかと思うようなことを、実際に実現してしまう会社なんだよね。

冒頭の、"ビジネスソフトウェアの「ラストマイル」を解決する"では、ソフトウェアシステムが機能要求を満たしてから実稼働に至るまでを「ラストマイル」と呼んで、このコストをどう解決するかを論じている。結論としては自動化がメインのようだ。

ソフトウェア開発において利害関係者が適切なコミュニケーションを保ってアジャイルさをもたらすことや、自動化によってリスクを減らしていくこと。これを理念だけじゃなく、実践に移す上での具体論が本書の各章に続いている。レイヤーは章ごとに異なるものの、どれもすぐに試してみようと思える程度に具体的でありながら、同一の前提には立っていない開発者が活かせる程度に一般的でもあるように書かれている。

2-4章は読み物として「ふーん」と思って読んだ。2章ではファウラーがRubyの言語内DSLのいろんな設計を試みて、そのデザインの利点と欠点を論じている。まー、頭を整理する役には立ったけど言語内DSLという概念に出会ったときほどの衝撃はない。3章はいろんなパラダイムの言語に触れようぜ、といって言語を分類してる。この主張には全面的に賛成だけど、言語オタクの端くれとしては特に面白いものでもなかった。「たとえ仕事で特定の言語しか使わなくとも複数言語を学ぶ意味」を知らない人は是非読むべきだろう。

8-10章は今自分が扱っている領域とは離れているので直接的に感じるところはなかったけれども、ためにはなるという感じ。

11, 12章が個人的には一番面白かった。単体テストから受け入れテストまでの継続的インテグレーションを経てデプロイに至るまでをスマートにするための留意点や、各段階のテストにおいてのチェック項目などが書かれている。

この辺の問題意識は今の私の取り組みに丁度マッチしていて使いやすい。つまり、単体テストを徹底していって自動化することは当たり前であって、ではその次にデプロイに至るまでのプロセスで何をすべきか。それをどうやって自動化すべきか。単体テストとは異なり多く時間やリソースを喰うこともあるそういったテストを無駄なく行うにはどうしたらよいのか。これらの問いに対する簡潔な答えをここにまとめにるには私の理解はまだ足りない。だから、11-12章を読めとしか答えられない。けれども、この本の記述をたよりにすぐに実践に移して体得していこうと思える本であった。

読んですぐに(いくらかは)役に立ち、でもそれだけでは消化不良で、実践していって真価を得る、というのが総合的評価かなぁ。2, 3年後ぐらいに「ここが今の私の下地にある」とかこの本を引き合いに出せると素敵だと思う。