アジャイルにはさまざまな用語があり、本質を理解するのは意外に難しい。間違った解釈をすればプロジェクトは混乱する。正しい理解が成功の条件だ。専門家であるテクノロジックアートの設楽氏に用語の本質を解説してもらう。

設楽 秀輔
テクノロジックアート アジャイルソフトウェア開発グループ グループリーダー

word1 アジャイル宣言

図1●アジャイル宣言で掲げる四つの「価値」
図1●アジャイル宣言で掲げる四つの「価値」
ウォーターフォール型で重視する要素(価値)とアジャイル開発で重視する価値を対比。ウォーターフォール型の価値を否定しているのではなく、重要であることを認めつつ、新たな価値にも目を向けることを促している

 アジャイル開発の各手法の提唱者が合意した宣言で、アジャイルの根幹ともいうべき精神を表す。ウォーターフォール型開発で重視すべき要素(価値)を四つ挙げ、それぞれに対するアジャイルの価値を提示している(図1)。

 新しい四つの価値が、あたかも既存の四つの価値を置き換えるように見えるがそうではない。これまでの価値の重要性は認めつつ、別の新しい価値に目を向けることを促している。

word2 自己組織化

 アジャイル開発が目指す行動規範のこと。チームを構成する各メンバーは自分自身をコントロールして自律的に行動し、目標に向かってチームの成長に貢献する。この成長を「自己組織化」と呼び、変化への適応能力を高める上で重要な条件となる。

 優秀なメンバーでなければ自律的に行動できないと考えがちである。もちろんアジャイル開発の管理者には自己組織化したチームを率いる高い能力が求められる。だがメンバーの自律性は環境によって育まれるもの。優秀なメンバーを集めなければアジャイル開発ができないと考えるのは間違いだ。

word3 アジャイル開発手法

 ウォーターフォール型に代表されるプロセス重視・手続き重視の開発手法に対するアンチテーゼとして生まれてきた開発手法。草の根的・同時多発的に提唱され、それらの一連の手法を総称してアジャイル開発手法(またはアジャイル開発方法論)と呼ぶ。

 具体的な手法は多岐にわたるが、中でも「XP(eXtreme Programming)」と「スクラム」が現在最も使われている。しかしXPのイメージだけでアジャイル開発手法を語るのは間違いのもとである。「モデル駆動開発(MDA:Model Driven Architecture)」や、ビジネスモデリングを事前に実施する「FDD(Feature Driven Development)」などもアジャイル開発手法である。

word4 タイムボックス

 時間軸を一定の期間で区切り、その期間内で作業を進める考え方。時間のリズムを優先し、期間の延長や短縮は行わない。期間内に出来上がったソフトウエアをその期間の成果物のスコープ(範囲)とするのが特徴である。

 これに対してウォーターフォール型の場合、成果物のスコープを事前に決めておき、間に合わなければ要員の投入や期間の延長で乗り切る。アジャイル開発では、要員と期間は固定とし、成果物の量を調整して対応する。

word5 TDD(テスト駆動開発)

 5~12はXPの用語である。TDDは、主に単体テストの仕様を先に作り、後からそれをパスするようにコードを書く手法である。テストという用語から、とかく品質管理のプラクティス(実践項目)と考えがちだ。しかし実際は、設計や開発の手法と考えるのが正しい。設計や開発の作業をテストの観点(何を作ればパスするか)から小刻みに検証することで、設計や開発の精度を高められる。開発者が自信を持ってコードを作れるようになる効果もある。

 ただし、すべてのテスト仕様をコードよりも先に書く必要はない。TDDで作成しなかったテストは、品質向上のために後から追加すればよい。