アジャイルは、ITシステムの開発概念の一種で、採用している開発現場も多く見られます。しかし具体的にどのような概念なのかを聞かれると説明しにくいかもしれません。
本記事では、アジャイルの基礎知識として、アジャイル開発の流れや向いているプロジェクトの特徴について解説。また、アジャイルとウォーターフォール・スクラムとの違い、アジャイル開発の手法についても紹介します。
アジャイルとは
アジャイルとは、ITシステムの開発概念のひとつで、小さな開発サイクルを何度も繰り返していく手法のことです。アジャイルの語源は英語の「Agile:素早い」から来ています。アジャイルを取り入れたシステム開発は、新製品や新機能をいち早くリリースできるなどのメリットがあります。
開発の流れとアジャイル開発に向いているプロジェクト
アジャイルを取り入れた開発の流れは以下のとおりです。
工程 | 実施内容 |
---|---|
リリース計画 | システムの各機能に優先順位をつける 計画段階では機能の仕様は大まかに決め、開発工程で柔軟に対応する |
イテレーション (反復) |
リリース計画に従い、優先度の高い機能から順番に以下の開発工程を繰り返す 1.計画2.設計 3.実装 4.テスト 5.リリース |
リリース計画では、システムの各機能に優先順位をつけ、どの順番でリリースするかを決めます。この時点では、機能の仕様を細かく詰めません。
リリース計画が完了したら、開発工程であるイテレーション(反復)に進みます。イテレーションは計画時に決めた回数分繰り返し、開発の計画からリリースまで一般的には約1~2週間単位で完了。次のイテレーションに入ります。
顧客はリリース時に機能を確認して意見を出し、開発チームでは臨機応変に意見を取り入れて開発を進めていく、という流れです。
アジャイルとウォーターフォールとの違い
ITシステムの開発手法として以前から存在するウォーターフォールは、計画からリリースまでの工程は、開発期間中それぞれ1回のみ行います。リリースを細かく何度も繰り返すアジャイルとの大きな違いは、ひとつの開発工程で全機能の作業を完了してから次に進む点です。
ウォーターフォールとアジャイルとを、開発の流れで比較すると以下のようになります。
ウォーターフォール | 計画 | 設計 | 実装 | テスト | リリース |
アジャイル | イテレーション1 | イテレーション2 | イテレーション3 | イテレーション4 | イテレーション5 |
計画 設計 実装 テスト リリース |
計画 設計 実装 テスト リリース |
計画 設計 実装 テスト リリース |
計画 設計 実装 テスト リリース |
計画 設計 実装 テスト リリース |
ウォーターフォールでは、各開発工程で、全機能の開発を終わらせます。各工程が終わる段階では、すべての作業が正しく終わっていることが前提で、リリースは最後の1回のみです。
このように、ウォーターフォールとアジャイルは、それぞれの特徴によって使い分けたい開発手法と言えます。開発工程を把握しやすいウォーターフォール型の開発は大規模なシステム開発に適しています。一方、アジャイル開発は小規模で仕様の変更が発生しやすいプロダクトの開発に適した方法です。
アジャイルとスクラムとの違い
スクラムとは、アジャイルを取り入れた開発手法の一種で、アジャイル開発を推進するためのフレームワークのことです。アジャイルとスクラムとの違いは、概念か具体的な手法か、という点にあります。
アジャイルはITシステム開発をどう進めるかの「概念」を定義したものですが、スクラムはその「概念」を取り入れて具体的に開発を進めていく方法を定義しています。スクラムは、開発チーム内の密なコミュニケーションがカギとなる開発手法で、チームで協力しながらイテレーション内の各工程を進めていきます。
アジャイルの英語表現
アジャイルの英語表現は「Agile」であり、単語を直訳すると「俊敏な」「機敏な」という意味です。短期間で何度もリリースを繰り返す様を表現しています。Agileを使った英語の例文は以下のとおりです。
・My development team is adopting agile development.
(私の開発チームでは、アジャイル開発を採用している。)
・Scrum, an agile development methodology, emphasizes communication within the team.
(アジャイルの開発手法であるスクラムでは、チーム内のコミュニケーションを重視する。)
アジャイル開発のメリット3つ
アジャイル開発のメリットは、以下の3点です。
スピーディにプロダクトや新機能を提供可能
アジャイル最大のメリットは、プロダクト(製品)や新機能をいち早く試せる点です。イテレーション期間は1~2週間なので、顧客側はあまり待つ必要なく機能を試せます。
ウォーターフォールの場合は、すべての機能が完成しないとリリースされません。そのため、製品や新機能を使えるまでには時間がかかります。
不具合が発覚した際の手戻り工数が少ない
アジャイル型の開発では、不具合が見つかっても、不具合が発生したイテレーション内で対応するため手戻り工数は少なくて済みます。例えば、イテレーション3のテスト工程で不具合が見つかっても、イテレーション3の設計工程に戻るだけでよく、イテレーション1やイテレーション2に戻る必要はありません。
一方、ウォーターフォールの場合は、設計工程で固めた仕様書を正として開発を進めます。そのため、テスト工程で見つかった不具合の原因が設計にある場合、大幅な手戻りとなることもあります。
ユーザーのニーズに最大限応えやすい
アジャイルでは、顧客が寄り早い段階で製品の動作などを確認でき、製品に対してフィードバックをかけることが可能です。開発チームは顧客のフィードバックを取り入れてこまめに対応を行うため、顧客の満足度を高められます。
アジャイル開発のさまざまな手法
アジャイル開発の概念を取り入れた具体的な開発手法を紹介します。
スクラム
スクラムはアジャイル開発の手法の中でも、現在もっとも有名なものです。スクラムでは、イテレーションのことをスプリントと呼び、1スプリントの期間は1~4週間となります。チームは、開発の優先順位を設定したリスト「プロダクトバックログ」を常に更新し、優先順位の高い要望から対応します。
開発チームには、チームの開発するプロダクトに責任を持つプロダクトオーナーと、チーム内の運営を円滑に進める役割のスクラムマスターがいます。どちらの役割も、開発チームの運営をスムーズに進めるためにコミュニケーションを重視して行動する点が、スクラムの特徴です。
エクストリーム・プログラミング(XP)
エクストリーム・プログラミング(eXtreme Programming)は、仕様変更を柔軟に受け入れて開発することを重視するスタイルの開発手法です。初期の計画よりも仕様変更を重視するため、より柔軟で顧客や最新動向に沿った製品を開発できる点が、最大のメリットと言えるでしょう。
本手法で重視する価値観は、「コミュニケーション」「シンプル」「フィードバック」「勇気」の4点で、特に大胆な仕様変更を取り入れる「勇気」は重要です。
ユーザー機能駆動開発(FDD)
ユーザー機能駆動開発(Feature Driven Development)は英語の頭文字をとってFDDと略される開発手法です。FDDでは顧客の業務を洗い出して可視化します。そのうえで、業務機能単位で開発リストを作成して優先順位をつけ、イテレーションを進めていきます。
本手法では、初期段階の要件定義が重要になる点が、他の開発手法と違う点です。
アジャイル開発を進める上での注意点
メリットの多いアジャイル開発ですが、実際に開発を進める上では、注意点がいくつかあります。いずれも実際に進めてみると発生しがちな問題なので、事前に対策を考えておきましょう。
開発の方向性がブレやすい
アジャイル開発では、初期の計画にどんどん変更が加わる可能性があり、その結果初期に決めていた開発の方向性がブレてしまうこともあります。顧客から機能の追加や仕様変更がある場合は、開発プロダクトの方向性に問題がないかをよく話し合いましょう。
プロジェクトのコントロールが難しい
アジャイルでは、仕様変更などの要望を柔軟に受け入れるため、プロジェクト全体の進捗が把握しにくいというデメリットがあります。
当初の計画で仕様変更に対する工数を見積もっていたとしても、作業ボリュームを最初から確定するのは困難です。ウォーターフォール型の開発と比べると、高度なプロジェクト運営が求められます。
アジャイル開発の特徴を知り現場で活かそう
アジャイルは、小さな開発サイクルを何度も繰り返していく、ITシステムの開発概念のひとつです。アジャイル開発の具体的な手法としてはスクラムなどがあります。
比較的小規模で、ユーザーの意見をできる限り多く取り入れたいプロジェクトでは、アジャイルが適しています。大規模プロジェクトに向いているウォーターフォール開発とともに、どちらにも対応できるよう基礎的な知識として身に付けておきましょう。