アジャイルプラクティス


副題:達人プログラマに学ぶ現場開発者の習慣
著者:Venkat Subramaniam Andy Hunt 角谷信太郎/監訳 木下史彦/監訳
出版社:オーム社  2007年12月刊  \2,520(税込)  203P


アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣    購入する際は、こちらから


私の愛読しているブログのひとつ「わたしが知らないスゴ本は、きっとあなたが読んでいる」で本書を知った。このブログの筆者Dainさんが、「marsさんが、「システム開発に関わる人はみんな読めー」と強力にオススメするにつられて読む。これはスゴ本。marsさん、良い本を教えていただき、ありがとうございます。」と絶賛していたのは2月中旬。ソフトウェアエンジニアのはしくれとして僕もぜひ読んでみたいと思い、さっそく手に取った。


読みはじめたまでは良かったが、やはり僕は「はしくれ」なので、まず「アジャイル」の意味が分からない。もちろん「プラクティス」も分からないし、「イテレーション」と言われても「はぁ?」ってなもんである。
そんな読者を想定してか、冒頭の「アジャイルの本質」で本書のキーワード「アジャイル」について解説してある。


本書によれば、「アジャイル」という名前が付けられた開発手法は、2001年2月に発表された「アジャイルマニフェスト」に端を発している。よりよいソフトウェア開発方法を解明しようとして議論した結果、次のような価値観が根底に据えられたのである。
  - プロセスやツールよりも、人と人との交流を(重視する)
  - 包括的なドキュメントよりも、動作するソフトウェアを(重視する)
  - 契約上の交渉よりも、顧客との協調を(重視する)
  - 計画に従うことよりも、変化に対応することを(重視する)


この「アジャイルマニフェスト」を実現するための具体的手法を述べるため、本書は次のような章立てで構成されている。


  第1章 アジャイルソフトウェア開発
  第2章 アジャイルの初心
  第3章 アジャイルさを育む
  第4章 ユーザが求めるものを提供する
  第5章 アジャイルなフィードバック
  第6章 アジャイルなコーディング
  第7章 アジャイルデバッグ
  第8章 アジャイルなコラボレーション
  第9章 終章:アジャイルへ踏み出す


それぞれ章はいくつかの節に分かれているが、その節の構成がおもしろい。
まず最初に「悪魔のささやき」が登場し、アジャイルでない方向へ読者を誘い込もうとする。悪魔に負けない解説文を駆使してアジャイルの方向に読者を向けたあと、正反対の結論をこんどは「天使」が高らかに宣言するというベタな展開。秀逸なのがその後の「こんな気分」というセクションで、2〜3行でアジャイルな考え方を的確にまとめてくれる。最後に必ず「バランスが肝心」というセクションで行き過ぎにブレーキをかけているのが、いかにも「アジャイル」だ。


ドキッとさせられたり、感心したりする指摘が多かった中で、特に身につまされたのが、次の内容。

呼び出す側が、呼び出されるオブジェクトの状態に基づいて判断して、呼び出される側のオブジェクトの状態を変更すべきではない。ここで呼び出す側が実装しようとしているロジックは、呼び出されるオブジェクトの責務だ。呼び出す側の責務ではない。オブジェクトの外側での判断や状態変更を許してしまうと、オブジェクトのカプセル化を破ることになる。これはバグの温床になりかねない。

     第6章 アジャイルなコーディング “Tell, Don't Ask”――求めるな、命じよ より
                    ※太字は原文のまま


今コーディングしているプロトタイププログラムがしっちゃかめっちゃかになってきたのは、そういうことだったのか!! なあ〜るほど。



ちょうど読み終わったころ、福島正伸さんの出版記念パーティで小飼弾氏と話していて本書が話題になった。
「プログラム制作の基本を反省する機会になった。良い本だった」と僕が感想を述べると、さすがに一言居士の小飼氏。「コーディングの具体例がほとんど載っていないのは致命的。契約の問題もあって公開しづらいのかもしれないが、それなら、こんな奥歯に物がはさまったような本を出さなきゃいい」と、バッサリ切って捨てた。


今でもコーディングし続けている小飼氏ならではの厳しい視点だ。でも、そこまで言わなくてもいいじゃないか。(ちなみに、小飼氏は自身の書評ブログ「404 Blog Not Found」で本書を取り上げていない)


やっぱり僕の書評には、褒めたい本だけを取り上げていこう。