アジャイル開発者の習慣-acts_as_agile
第2回 仕組みを育てる
すばらしい製品というのは,単に良い習慣の副産物でしかありません。
『Ship It!』(注1)
- 注1)
- 『Ship It! ― ソフトウェアプロジェクト成功のための達人式ガイドブック』(Jared Richardson/William Gwaltney Jr.(著),でびあんぐる(訳),オーム社)
はじめに
本連載では「アジャイルに開発する人達(アジャイル開発者)が開発するからアジャイル開発である」と考え,アジャイル開発者になるために必要なスキルを磨くための習慣を紹介しています(図1)。
図1 アジャイル開発者の習慣
| 習慣の構成要素 |
|---|
|
| 本連載で紹介した習慣 |
|
前回紹介した習慣は,習慣を身につけるための習慣(メタ習慣),「フィードバックを重視する」でした。
第2回である今回は,最初の具体的な習慣として「仕組みを育てる」習慣を紹介します。そのために,アジャイル開発者にとっての「仕組み」とは何か,なぜ重要なのかを説明――する前に,先日体験した印象深い経験について語らせてください。
RubyKaigi2007のDave Thomasとアジャイル
6月9,10日に日本Ruby会議2007(RubyKaigi2007)が開催されました(と書くと他人事のようですが,私は実行委員でした)。会期の最後に行われたDave Thomas(編注)による基調講演は,氏のRubyへの愛と,爆発的拡大を始めたRubyコミュニティのこれからのあり方について真摯に語る,粋で素敵な深く心に響く講演でした(写真1(注2))。
いちRuby好きとして行動しつつもRubyプログラマとしてRubyコミュニティに貢献できていない私は,氏の講演に大いに勇気づけられ,当日は感極まって思わず泣いてしまいました。
Dave ThomasはRubyの海外での認知のきっかけをつくった立役者であるだけでなく,『達人プログラマー』(注3)の共著者であり,アジャイルソフトウェア開発宣言(アジャイルマニフェスト)の署名メンバーでもあります。
“Be flexible and agile”
Dave Thomasによる基調講演は,私の個人的な感慨とは別に,本連載としても興味深い内容がありました。それはほかならぬ氏による「アジャイル」という言葉の使い方についてです。
講演でDave Thomasは,新しくRubyにやってくる人々にRubyコミュニティが伝えるべき価値の一つとして「柔軟かつアジャイルに」ということを挙げました。また,講演後の質疑応答でも「Rubyコミュニティはアジャイルだ」という発言をしていました。
アジャイル=適応性+持続可能性
Rubyの開発コミュニティは,たとえば計画ゲームやテストファーストといったアジャイル開発のプラクティスを熱心に実践しているわけでもなければ,自分たちが「アジャイルである」と標榜しているわけでもありません(注4)。
にもかかわらず,Dave ThomasはRubyコミュニティを「アジャイル」だと言いました。氏がこのとき「アジャイル」という言葉に込めた意味は「状況の変化に迅速に適応しながら開発を持続させていくこと」だったと私は理解しています。
アジャイルは単純な納期の早さではない
私は最近,Ruby on Railsを採用するプロジェクトについての相談を受けることが多くなりました。その際,先方から「スケジュールが短期なのでアジャイルに開発したい」と言われることが少なからずあります。
残念ながら,アジャイル開発が実現するものは,開発するソフトウェアのライフサイクル全体を通じた変化への適応性と開発の持続可能性であって,単純な納期の早さではありません。
アジャイル開発の「俊敏さ」
よくあるアジャイル開発の説明は「アジャイルとは『俊敏な』という意味である」という記述から始まるものです。ここでの俊敏さとは,従来型の開発――事前に策定した包括的で綿密な計画を絶対視する開発――と比較しての,ソフトウェアのライフサイクル全体を通じての相対的な開発速度の速さです(注5)。
例えるなら,アジャイル開発の速さはマラソン走者の速さであって,短距離走者の速さではありません。「10分でブログアプリケーションを構築できる」といった開発速度の速さも,短距離走の速さです。
- 編注)
- Dave Thomasさんと小飼弾さんの対談が,連載コラム「小飼弾のAlpha Geekに逢いたい♥」に掲載されています。
- 注2)
- 講演の内容は,zundaさんによるRubyKaigi公式サイトの速報ログに詳しいです。
- 注3)
- 『達人プログラマー ― システム開発の職人から名匠への道』(Andrew Hunt/David Thomas(著),村上 雅章(訳),ピアソン・エデュケーション)
- 注4)
- 念のため補足しておくと,Ruby開発コミュニティはテストケースを大事にしています。ただ,典型的なアジャイル開発プロジェクトのようにはテストをソフトウェア設計の中心に据えているわけではない,という意味です。
- 注5)
- こうした補足説明が必要になるということは,「アジャイル」という言葉は実はあまりよい名前ではないのかもしれません


