代表的なアジャイルソフトウェア開発フレームワーク
通常、アジャイルチームは形成期に入るにあたり、作業方法を整理するためのフレームワークを検討します。足がかりとなるフレームワークを選択することで、個々の役割を定義し、作業のスケジュールを立てて、チームのコラボレーションを整理することができます。これまでに、作業方法を整理するためのフレームワークがいくつも登場しています。
「15th State of Agile Report」に掲載されている以下のグラフは、世界中のアジャイルチームが採用しているアジャイルの手法とプラクティスの内訳を示したものです。
出典: 15th Annual State of Agile Report
では、各フレームワークを簡単に見ていきましょう。
スクラム
スクラムは、複雑な問題を解決したり、価値の高いソフトウェア製品を開発できる基盤をチームに提供したりする人気のフレームワークです。作業の整理と実行に役立つロール、イベント、成果物、ルールが定められています。スクラムは以下を柱としています。
また、5つの重要な価値(献身、勇気、集中、寛容、敬意)があります。
スクラムはアジャイルチームにとって代表的なフレームワークのひとつです。新たに結成されたアジャイルチームはまずスクラムを採用することが多いものです。スクラムでは、チームを定義して編成するうえでわかりやすいフレームワークが用意されているためです。
ただし、パフォーマンスの高いスクラムチームを構築するには、フレームワークの価値を最大化できるよう、時間と労力をかけて原則を理解してから実装する必要があります。スクラムガイドに記載されているように、スクラムは簡易でわかりやすいものの、習得するのは難しいのです。
カンバン
カンバンは手法やフレームワークではありませんが、この要素を利用するとチームのパフォーマンスが向上することが多いものです。カンバンは、日本語の「看板」に由来しています。「カンバンボード」は、チームの作業を視覚化してわかりやすくする目的で、広くアジャイルチームで使用されています。各作業項目は通常、ユーザーストーリー、要件、タスクなどが、実行すべき作業に関する具体的な情報とともに記載されたカードの形にまとめられます。
カンバンアプローチでは、「プル方式」で作業を進めます。つまり、ある項目の作業完了を受けて別の項目の作業を開始します。個々の作業項目や作業のフェーズに期限を設けることはありません。
カンバンは以下の5つの原則に基づいています。
- ワークフローの視覚化
- 進行中の作業量の制限
- システム内での項目の動きの管理
- 作業ポリシーの明確化
- コラボレーションによる改善
カンバンボードで作業を視覚化するだけでなく、個人やチームが抱える進行中の作業を制限して、マルチタスクやコンテキスト切り替えにより非効率が生じないようにすることも重視されます。
スクラムバン
名前からもわかるとおり、スクラムバンはスクラムとカンバン を組み合わせたハイブリッドアプローチです。通常、アジャイルチームはまずスクラムに取り組み、そのうえでカンバンの原則も適用してパフォーマンスと効率の向上を目指します。スクラムがチーム、イベント、成果物の構成を定め、カンバンがプロセスにおけるバックログ項目の動きを円滑にするという形です。
スクラムバンの実装は多岐にわたります。チームによっては、チームや成果物の構成にはスクラム方式を採用しつつ、イベントについては変更を加えて厳密なタイムボックスの定義を排除することもあります。従来の見積もり手法(プランニングポーカーなど)を使用するチームもあれば、作業にタイムボックスという制限をかけず大まかな見積もりで済ませるチームもあります。
一般にスクラムバンは、スクラムで定められている構造化されたアプローチから、カンバンの推奨する自律型組織へ向かううえでの自然な通過点とみなされます。
リーンアジャイル(リーンソフトウェア開発)
カンバンと同じく、リーンアジャイルもフレームワークではありません。リーンアジャイルの原則は、アジャイルチームの効率やパフォーマンスを改善する目的で、スクラム、カンバンなどの手法と組み合わせて使用されることが多いものです。
リーンアジャイルの主な目標は、アジャイルソフトウェア開発プロセスから無駄を省いて効率を向上させることです。
リーン開発は以下の7つの原則に基づいています。
- 無駄を省く
- 学習効果を高める
- できるだけ遅く決定する
- できるだけ早くデリバリーする
- チームに権限を委譲する
- 最初から整合性を意識する
- 全体を最適化する
これらの原則は、改善に向けた新たなツール、手法、視点となります。アジャイル成熟度にかかわらず、どのようなチームでもリーンアジャイル手法を採用することでメリットを得ることができます。新しいチームにとっても成熟途上のチームにとっても、「できるだけ遅く決定する」、「チームに権限を委譲する」などの原則は開発の重要な基礎となります。
成熟したアジャイルチームも、無駄を省き、学習効果を高めることで、こうしたチームの長所である継続的な学習サイクルをさらに効果的なものにすることができます。
エクストリームプログラミング
エクストリームプログラミング(XP)は、短い開発サイクルで開発を行うことで要件の変更に伴うコストを削減することに焦点を当てた開発手法です。XPは顧客満足度に重点を置き、開発者が顧客ニーズの変化に対応して価値を最大化するためのプラクティスを定義します。この手法で特に重視されるのがチームワークです。主要なステークホルダ(マネージャー、顧客、開発者)が協力して優れたソリューションを提供できるようにします。
エクストリームプログラミングには、一連の価値、原則、プラクティスがあります。XPにおける5つの価値は次のとおりです。
- シンプルさ
- コミュニケーション
- フィードバック
- 尊重
- 勇気
ソフトウェア製品開発の全体的なアプローチを導く指針としては、フィードバック、シンプルに捉える、変化を受け入れるという原則があります。
XPのみを使用するアジャイルチームの数は比較的少ないものの、Kent Beckらが定めた機能的・技術的プラクティスの多くは広く普及しています。その結果、チームやイベント、成果物の整理にスクラムを使用し、製品実装の推進にはXPのルールを使用するというアジャイルチームが増えています。
その他のアジャイルフレームワーク
- ビヘイビア駆動開発(BDD): 開発者、QA、ビジネスのステークホルダで継続的にコミュニケーションをとり、開発を開始する前に機能を十分に理解するというソフトウェア開発手法です。BDDは各ユーザーストーリーに5つの「なぜ」の原則を適用して、ビジネス成果をユーザーストーリーの目的に関連付けるようにします。
- テスト駆動開発: 短い開発サイクルで、小規模かつ具体的なテストケースを使用してアプリケーションを開発するプロセスです。開発者はまずテストケースを作成し、そのテストを実行して、何をすれば失敗するかを確認します。その後、コードを記述してテストを再実行します。そして問題がなければ次のテストに進みます。失敗した場合はテストに合格するまでコードの更新を繰り返します。このアプローチの目標は、まずアプリケーションに追加したコードを適切なテストに合格させることです。
- ユーザー機能駆動開発: 5つの基本的なアクティビティ(モデル全体の開発、機能リストの作成、機能ごとの計画、機能ごとの設計、機能ごとの開発)で構成されるモデル駆動の短いイテレーションプロセスです。
- ハイブリッド/自社開発システム: 上記のフレームワークと、その他のアプローチを併用しているチームもあります。こうしたハイブリッド構成では、複数のフレームワークの要素を組み合わせて企業やチームに固有の手法にすることが多いものです。
ハイブリッドアプローチの多くは、従来のウォーターフォールとスクラムの組み合わせ(いわゆるスクラムフォール)、ウォーターフォールアプローチを使用した反復型開発(ただし反復サイクルは短い)、動的システム開発手法といったカテゴリに分類されます。
これらのアプローチで実現できるアジリティのレベルは、チームのスキル、組織の文化、ソリューションの複雑さによって大幅に異なります。
大規模なアジャイル
アジャイルのフレームワーク、原則、手法は、もともと小規模なチームやチーム内の少人数のグループ向けに設計されたものでした。しかし、経営者や顧客、チームは、小規模なアジャイルチームでの成功を、全社の大規模チーム群に拡大したいと考えるようになりました。この目標を達成するために登場したのが、アジャイルを拡大するための新しいフレームワークです。こうした大規模なアジャイルフレームワーク には、Nexus、SAFe、Scrum at Scale、LeSS、Disciplined Agileなどがあります。
多くのチームは、スクラムで使用したスキル、トレーニング、インフラを活用できることからScrum of Scrums、Enterprise Scrum、Nexusを好んで利用しています。大規模なアジャイルは、アジャイルソフトウェア開発領域において急成長している分野であり、今後数年間で多くの変化を見せるだろうと予想されています。
まとめ
最適なアジャイルフレームワークを選択するには、組織の個別のニーズ、プロジェクト要件、チームの実態を考慮する必要があります。意思決定の前に、各フレームワークの強み、制約、組織の文化との親和性を評価することが重要です。
絶えず進化・変化し続けるビジネス環境において、アジャイルフレームワークは組織が不確実性に対処し、イノベーションを推進して、優れた成果を上げるための有用なツールとなります。アジャイルの導入が、競争や変化の激しい世界において成功するための第一歩となるのです。