基礎から実践まで!正しく覚える、理解するアジャイル用語集①:よく使うアジャイル用語

今回は、利用頻度の高いアジャイル開発に関わる基本概念と混同しやすい用語を整理し、アジャイルを始めたばかりの方にもご理解いただけるように、わかりやすく解説します。
連載記事:
「アジャイル用語集①:よく使うアジャイル用語」
「アジャイル用語集②:アジャイル開発と混同しやすい用語」
「アジャイル用語集③:代表的なアジャイル開発手法とは」
1.アジャイル開発(Agile Development)とは
アジャイルソフトウェア開発宣言を作成したメンバーより設立されたアジャイルアライアンスでは、アジャイル開発について下記のように記述しています:
「アジャイルとは、変化を生み出し、変化に対応する能力です。それは、不確実で激動の環境に対処し、最終的に成功する方法です。」
「アジャイルソフトウェア開発は、スクラム、エクストリームプログラミング、機能駆動型開発 (FDD)などのフレームワーク以上のものです。」
「アジャイルソフトウェア開発は、ペアプログラミング、テスト駆動型開発、スタンドアップ、計画セッション、スプリントなどのプラクティス以上のものです。」
「アジャイルソフトウェア開発は、アジャイルソフトウェア開発のマニフェストとその背後にある12の原則で表明された価値と原則に基づく、一連のフレームワークと実践の総称です。」
簡単に纏めるとアジャイル開発とは、アジャイルマニフェストとその12の原則(詳細は後続の節を参照)の価値観に基づき、システム(ソフトウェア)を変化に迅速かつ柔軟に対応できるよう開発する手法の総称です。
代表的なアジャイル開発手法はスクラム(Scrum)、エクストリームプログラミング(Extreme Programming)、カンバン(Kanban)、リーン(Lean)、SAFeなどがあります。
最初から要件定義や設計を細部まで厳密に確定してから一回の大きなサイクルで開発を進めるウォーターフォール開発に比べて、アジャイル開発の場合では一度ですべてを作ろうとせずに、優先度の高い重要な機能から着手し、設計・開発・デプロイというサイクルを短期間に繰り返してシステムをブラッシュアップしていくので、従来の開発手法に比べてアジャイル開発の場合はサービスインまでの期間を短縮できますし、途中に仕様変更が発生しても素早く対応可能です。
2.アジャイルソフトウェア開発宣言(アジャイルマニフェスト)/ アジャイルソフトウェアの12の原則
1990年代から、ウォーターフォールに代表される当時の開発手法はビジネス変化のスピードに対応できておらず、サービスインまでの期間をより短縮し、要件変更をより柔軟に対応できる開発モデルが求められるようになりました。こうした業界のフラストレーションから、「アジャイルソフトウェア開発宣言(アジャイルマニフェストとも呼ばれます)」と「アジャイルソフトウェアの12の原則」が生まれました。現在のアジャイル開発の指針となる存在です。
「アジャイルソフトウェア開発宣言」では、ソフトウェア開発におけるアジャイルアプローチを導く下記4つの基本的な価値観を提唱しています。
①プロセスやツールよりも個人と対話を
②包括的なドキュメントよりも動くソフトウェアを
③契約交渉よりも顧客との協調を
④計画に従うことよりも変化への対応を
いずれも従来のウォーターフォール開発手法の弊害に対する改善策を提示しています。
「アジャイルソフトウェアの12の原則」は、どのように変化へ積極的に対応し、顧客を中心に仕事を行うか、具体的な進め方を提示しています。要約して下記となります:
①顧客満足を最優先し、価値のあるソフトウェアを継続的に提供する
②要求の変更を歓迎し、変化を味方につけることによって、お客様の競争力を引き上げる
③動くソフトウェアをできるだけ短い期間でリリースする
④ビジネス側の人と開発者は一緒に働く
⑤意欲に満ちた人々を集めて、良い環境と支援を提供し、信頼する。
⑥フェイス・トゥ・フェイスで会話し、情報を伝える
⑦動くソフトウェアこそが進捗の尺度
⑧アジャイルプロセスは持続可能な開発を促進する。一定のペースを継続的に維持する
⑨技術的卓越性と優れた設計に対する注意を怠らない
⑩シンプルさ(無駄なく作業する)が本質
⑪最良のアーキテクチャ・要求・設計は自己組織的なチームから生み出される
⑫チーム効率をもっと高める方法を定期的に振り返り、最適なやり方を調整する
我々がアジャイル開発を採用するとき、方法論やプラクティスだけではなく、このような価値観や行動原則をしっかりと理解することが大事なこととなります。
3.ディシプリンド・アジャイル(Disciplined Agile)とは
ディシプリンド・アジャイル(以下はDA)は、もともとIBMで開発されたアジャイルのフレームワークで、その後ディシプリンド・アジャイル・コンソーシアムに譲渡され、2019年にPMIに買収されました。
The PMI Disciplined AgileのサイトでDAについて、以下のように説明しています。
「DAは様々なアジャイルプラクティスを利用して、チームや組織にとって最適な作業方法を導くツールキットです。」
「DAはベストプラクティスのコレクションを規定するのではなく、直面している状況を考慮して、目的に合った最適な方法を選択し、後で進化させる方法を教えてくれます。」
「DAは、既有のプラクティスと方法をいつどのように適用するかについてアドバイスを提供します。 ある意味では、スクラム、Kanban、PMBOK®ガイドなどのソースはプロセスのレンガを提供し、DAはレンガを効果的に組み合わせるモルタルを提供します。」
上述のように、DAは具体的な開発手法ではないし、どの開発手法にフォーカスしていることもなく、ハイブリッドのアジャイルアプローチを利用して、選択可能なオプションを提供し、状況や問題に応じてどのようなプラクティスが推奨されるか要約しています。開発者はDAを参照してスクラム、XP、Kanbanなどと組み合わせて使用しても可能です。
参考サイト:
https://www.pmi.org/disciplined-agile
https://www.pmi.org/disciplined-agile/introduction-to-disciplined-agile
https://www.pmi.org/disciplined-agile/ip-architecture/disciplined-agile-is-a-hybrid
DAについてより詳しく知りたい方は、当領域の専門家である藤井智弘氏の解説を読んでください。
「ディシプリンド・アジャイルとは?エンタープライズ領域で失敗しないためのポイントを解説する」
4.エンタープライズアジャイルとは
エンタープライズ領域のアジャイル開発を形容する言葉として、エンタープライズアジャイルという用語をよく聞くようになりましたが、明確な定義が定められていないようです。野村総合研究所のコラムでは、この言葉が用いられる文脈を分析して、以下の4つのいずれかを意図していることが多いと述べています。
①組織としてのアジャイル開発支援
②大規模なアジャイル開発
③基幹システムのアジャイル開発
④ウォーターフォールとの組合せ
④については多くのエンタープライズ企業における現状を表していますが、目指すべきアジャイル開発とは言えないので、①~③は「エンタープライズアジャイル」という言葉に持たれる意味に近いと思われます。
大企業の中に1つ、2つのアジャイルチームを立ち上げるだけではエンタープライズアジャイルとは言えません。エンタープライズ企業にアジャイルを導入するには、組織の変更として、ビジネス習慣、人材リソース、作業プロセスなどあらゆる面で従来のやり方と大きく変わりますので、その違いを明確に理解し、意識的に行動変革して、アジャイル開発へ取組むことが必要でしょう。
これからアジャイル開発を採用しようとしている企業の担当者は、以下の記事もお勧めします。
多くの企業が知らない エンタープライズ・アジャイル開発 成功の要件
5.イテレーション(iteration)とは
イテレーションとは、反復、繰り返しという意味です。
アジャイルアライアンスでは、アジャイル開発におけるイテレーションについて、以下のように記述しています。
「アジャイルプロジェクトにおけるイテレーションはタイムボックスであり、その継続期間はプロジェクトによって異なりますが、通常は1~4週間です。ほとんどのプロジェクトではその期間が一度決まったら固定されます。
開発前の非常に短い『ビジョンと計画』フェーズと最後の『終了』フェーズを除いて、全プロジェクトが一連の反復で構成されることがアジャイルアプローチの重要な特徴です。
通常、イテレーションはカレンダーの週に合わせて調整されており、利便性を考慮して月曜日に開始し金曜日に終了すると設定しているプロジェクトが多いが、異なる規則を採用しても大丈夫です。
1イテレーションの期間が固定されているため、チームはスピードと残りの作業量に基づいて、プロジェクトの残りの期間を(100%正確ではありませんが)見積もることができます。」
設計、開発、テストなど一連の工程を短い期間にまとめ何度も繰り返すことで次第に完成度を高めていくアジャイルアプローチの中で、このサイクルの単位となるのがイテレーションです。スクラムに馴染みのある方は「スプリント」という用語を使用していますが、両者はほぼ同じ意味と考えてよいです。