どのアジャイル型プロセスも,“人間中心”で変化に強いことが共通している。ただし,当然ながらプロセスの種類によって,定義している作業内容や手順は異なる。Part2では開発作業の「重視ポイント」に注目して分類した,3タイプの特徴を解説する。

 Part1でも述べた通り,アジャイル型プロセスとは1種類の開発プロセスを示す言葉ではない。ソフトウエアを無駄なく,かつ手早く作成するための開発プロセス全般を指す総称である。「ユーザーの要求はシステム開発期間中に絶えず変化する」ことを前提とし,この変化に適応するためにメンバー間のコミュニケーションを重視することや,できる限り作業の無駄を省くことが共通している。

 Part2ではアジャイル型プロセスを3つのタイプに分類し,各タイプの特徴を説明する。これによって,各グループに属するアジャイル型プロセスがどんな狙いで考案されたものかを理解していただくことが狙いである。

2つの軸でプロセスを分類

 Part1で説明したように,この講座では開発プロセスを2つの軸で表される平面上で分類している(図1)。2つの軸とは,「人とのかかわり方」と「関心領域」である。筆者の所属するアジャイルプロセス協議会のメンバーが,各々の経験を基に分類したものだ。なぜこの2つの軸を採用したのか,当協議会の見解を紹介しつつ,内容をおさらいしておこう。

図1●アジャイル型プロセスを中心にした,開発プロセスの分類
図1●アジャイル型プロセスを中心にした,開発プロセスの分類
アジャイル型プロセスは,開発作業を進める上で重視するポイント(関心領域と呼ぶ)によって,3つのタイプに分類できる

 最初の軸である「人のかかわり方」で言えば,この軸に沿って右側に行くほど,開発チームのメンバーや顧客といった,人同士のかかわり方がアクティブ(能動的,積極的)なプロセス,左側に行くほどパッシブ(受動的)なプロセスであることを意味している。アジャイル型プロセスは,いずれも図の右側に位置づけられる。

 もう一方の軸である「関心領域」とは,端的に言えば開発作業を進める上で重視するポイントのことである。どのような人たちに向くプロセスかを決める要素と言ってもいいだろう。採用している具体的な方法論や開発手順は,その開発プロセスの関心領域によって決まっている。Part1では,この軸を「生産性を測定する上で重視している指標」と紹介した。開発プロセスとは結局のところ,顧客が望むソフトウエアを効率よく作るためのものであり,その意味で関心領域は,生産性の指標にほかならない。

 一般に開発プロセスに定義されている手順や方法論は,動作するソフトウエアを開発者個人が効率よく開発するためのものと,計画の策定や進捗の管理といったプロジェクトやチームの生産性を維持・向上するためのものに分けることができる。前者をプロダクト・プロセス,後者をマネジメント・プロセスと呼ぶ。関心領域による分類とは,ある開発プロセスがプロダクト・プロセスとマネジメント・プロセスのいずれを重視しているかを表したものだ。

重視するポイントで3分類

 関心領域に従って分類すると,アジャイル型プロセスは3つのタイプに分かれる。

 プロダクト・プロセスを重視するタイプ(以下,プロダクト重視タイプと呼ぶ)には,XP(Extreme Programming)やFDD(Feature Driven Development)など,図1の右上に位置するプロセスが該当する。一方,マネジメント・プロセスを重視するタイプ(マネジメント重視タイプ)に属するのは,ScrumやASD(Adaptive Software Development)などである(右下)。そして図の中央に位置するCrystalは,プロダクト重視タイプとマネジメント重視タイプのどちらにも偏らず,中立的であるという意味を込めて,「中庸タイプ」と名づけた。

 プロダクト重視のアジャイル型プロセスは,個々の開発者の視点から,「ソフトウエアをどうやって効率的に作るのか」に焦点を当てている。その基本的な考え方は,天才的なコーディングの腕を持つ“スーパープログラマ”の仕事ぶりを,個々の開発者が真似するというものだ。すなわち,スーパープログラマの仕事の進め方のエッセンスを取り入れたプロセスである。