ソフトウェアやシステムの開発手法である「アジャイル開発」は、素早くプロダクトを生み出し、市場や顧客の変化へ柔軟に対応できます。
本記事では、アジャイル開発の特徴やメリットを詳しくまとめています。基本的な進め方にも触れていますので、ぜひ参考にしてください。
アジャイル開発とは
アジャイル開発とは、現在主流となっているソフトウェアやシステム開発の手法です。アジャイル(agile)という単語には、直訳すると「機敏な」「素早い」という意味があります。
アジャイル開発は、開発工程を計画(要件定義)・設計・実装・テストに細分化し、それぞれの工程で開発を進めていきます。
MVP(Minimum Viable Product)をリリースし、小さいサイクルで何度も改善を繰り返し、ユーザーにとって価値ある機能を優先的に開発します。スピードと柔軟性に優れており、以下のようなプロジェクトに向いています。
- 要件定義が定まっていないプロジェクト
- 方向性が途中で変わる可変性の事業やプロジェクト
- クライアントが開発に携われるプロジェクト
徐々にサービスをグロースし、方向転換や調整等が求められる開発にアジャイル開発は大きな効果を発揮します。
ウォーターフォール開発との違い
ウォーターフォール開発とは、アジャイルと同様の開発段階をそれぞれ1つずつ完成させて進める手法です。階層ごとに機能を確実に構築・完成させてから、次工程を開発します。
最初に決めた開発定義を着実に実行するのに最適な手法であり、前工程が必ず合っているという前提で開発が進められるのが大きな特徴です。
ウォーターフォール開発は、以下のようなプロジェクトに向いています。
- 要件定義に膨大な時間とコストをつぎ込んだ大型プロジェクト
- 基幹システムの構築など品質が重要視される開発
各開発工程を段階的に分けて取り組むため、プロジェクト全体のスケジュールが立てやすい手法です。そのため、事前に各開発工程に割く時間や人員数などを把握できます。
また、設定した開発定義を確実にシステムに反映させられるので、思い描いた通りのシステムの開発が可能です。
開発手法 | ウォーターフォール開発 | アジャイル開発 |
---|---|---|
開発に要する時間 | 長い(半年~3年) | 短い(1ヶ月~3ヶ月) |
人員(リソース)計画 | 立てやすい | 立てにくい |
要件変更の可否 | 不可 | 可能 |
作業イメージ | 計画書通りに進める | 突発事案に対応して進める |
テストの実施タイミング/回数 | 実装が終わってからまとめて実施 | イテレーションごとに何度もテストを繰り返す |
アジャイル開発の代表的な手法と違い
アジャイル開発には、代表的な手法として3つが挙げられます。
スクラム | エクストリーム・プログラミング(XP) | ユーザー機能駆動開発(FDD) | |
---|---|---|---|
開発主導者 | クライアント | プログラマー | ユーザーニーズ |
導入シーン | 通常業務 | 仕様変更発生時 | 機能開発 |
その他の特徴 | チーム間の密なコミュニケーションが必要 | 仕様変更に着手する『勇気』が必要とされる | 開発に着手する前にビジネスモデリングが必須 |
スクラム
スクラムとは、アジャイル開発でよく選ばれる手法の1つです。ラグビーのスクラム(試合の再開時に、双方のチームのFWがボールを奪うために組む)が語源であり、スクラムを組むようにチーム一丸となって開発に取り組みます。
スクラムで重要視されるのは、チーム内のコミュニケーション。プロジェクトの開発における、フレームワークが定められており、1日・週間ごとの短いスパンで進捗確認が行われます。
開発は、イテレーションごとに、計画立案→設計→実装の繰り返しで進められます。
エクストリーム・プログラミ(XP)
エクストリーム・プログラミング(XP)は、技術面に重きをおいた開発手法です。クライアントが開発メンバーに加わることから、この手法における顧客はオンサイト顧客とも呼ばれます。
開発を主導するのはプログラマーであり、開発中に生じた新規要望へ合わせて仕様変更に技術的な要素を交えて対応します。そのため、成果物の完成度が高まるのも大きな特徴です。
顧客との密なコミュニケーションも欠かせないため、次につながりやすい手法です。
ユーザー機能駆動開発(FDD)
ユーザー機能駆動開発(FDD)は、ユーザー目線で有益な機能を開発する手法です。
多くの開発では、クライアント(顧客)の要望に従って作業を進めるのが一般的です。しかし、ユーザー機能駆動開発はユーザーが本質的に求めるニーズから機能を分けて開発します。
それぞれの機能を突き詰めた開発ができ、ユーザーのニーズに寄り添った品質の高い開発を有利に進められます。
アジャイル開発のメリット
アジャイル開発のメリットは、大きく分けて以下の3つです。
- MVPリリースまでの期間が短くなる
- 不具合修正・仕様変更へ柔軟に対応できる
- 要望に合わせた開発が実現する
MVPリリースまでの期間が短くなる
アジャイル開発は、MVPの素早いリリースに向いています。MVPとは、Minimum Viable Productの略で、最小限のプロダクトを意味します。
ユーザーにとって優先度の高い機能から開発を進めていくため、成果物の付加価値が高められるのが大きな特徴です。
ウォーターフォールに代表されるような開発手法だと、リリースまでの期間は半年〜3年です。一方でアジャイル開発を活用すれば、MVPリリースまでの期間は1~3ヶ月に短縮できます。
不具合修正・仕様変更へ柔軟に対応できる
アジャイル開発は、短いサイクルを繰り返すため、不具合の修正や仕様の変更へ柔軟に対応できます。
例えば、ウォーターフォール開発では、1つの開発に不具合や仕様変更が生じると、問題の発生箇所を調べるために作業工程のすべてが振り出しに戻るのが特徴です。
対してアジャイル開発は、開発作業を細かい工程ごとにまとめています。発生した不具合や仕様変更に応じ、いてレーションを戻す・繰り返すだけで対応できます。
要望に合わせた開発が実現する
アジャイル開発ではイテレーションごとに調整できるため、顧客の要望に沿った開発が実現します。
当初定めた要件定義から、ブレることなく作業ができるのはウォーターフォール開発の強みですが、要望に合わせた開発には不向きです。一方でアジャイル開発には、要件定義の必要はありません。
仕様変更のように顧客ニーズが変われば、その都度、開発に反映させられます。
アジャイル開発のデメリット
アジャイル開発には、2つのデメリットがあります。
- 全体スケジュールの調整が難しい
- 方向性がズレてしまう
全体スケジュールの調整が難しい
アジャイル開発では、可変的かつ柔軟的に開発を進めるため、納期が前後しやすい傾向にあります。場合によっては調整を何度も繰り返した結果、納期を大幅に超えるケースもあるでしょう。
最小プロダクトごとに取り組む課題が違うため、作業進捗はその都度変化します。開発工程を横断したコミュニケーションを増やしながら、全体のスケジュールを調整しなければなりません。
アジャイル開発の強みを活かしながら、納期がオーバーしないようにスケジュール調整役を立てるのも効果的です。
方向性がズレてしまう
アジャイル開発では、要件定義を細かく決定しないため、方向性がズレる可能性があります。
仕様変更や追加を何度も繰り返すと、プロジェクトの全体像は次第に、当初想定していたものとは異なったものとなるでしょう。
修正対応をするたびに、方向性にズレがないかや納期がいつになるのかを見極めることが大切です。プロジェクトの完成を目標に定めることで、方向性がぶれないよう管理できます。
顧客からの要望やユーザーニーズなど、最終的なゴールを定めておくのがおすすめです。
アジャイル開発の基本的な進め方
アジャイル開発は、シンプルな2つの工程によって進められます。
- リリース計画の策定
- イテレーションの繰り返しで開発
①リリース計画の策定
アジャイル開発の第一段階は、リリース計画(開発の仕様と要求)の策定です。
通常であれば要件定義から詳細を決め、すべてが整った段階で開発に着手しますが、アジャイル開発であれば要件定義を定めずに作業を始められます。
リリース計画が細かく策定できるほど開発のスピードは上がり、柔軟に仕様変更ができるでしょう。
②イテレーションの繰り返しで開発
アジャイル開発2ステップ目は、イテレーションの繰り返しです。
イテレーションとは、計画(初回はMVPリリース)→設計→実装→テストの4工程を1つのサイクルとし、これを何回も繰り返して開発を行うことを意味します。
同じ作業を繰り返すため、イテレーションは回数を重ねていくことになります。
アジャイル開発に関連する覚えておきたい専門用語
アジャイル開発においてよく耳にする、専門用語について解説します。
- イテレーション(iteration)
- スプリント
- オンサイト顧客
- ベロシティ
- リプレース(replace)
イテレーション(iteration)
イテレーションとは、アジャイル開発における最小の一連工程を意味します。
開発サイクルに含まれるのは、設計・開発(実装)・テスト・改善の4工程です。
短期間で同じ工程を繰り返すため、開発におけるナレッジが蓄積しやすいという大きな特徴があり、エクストリーム・プログラミング(XP)の1つに組み込まれています。
スプリント
スプリントとは、アジャイル開発におけるプロジェクト全体の仕事の進め方の定義(フレームワーク)です。
イテレーションが反復そのものを意味するのに対し、スプリントは反復の単位を表します。
イテレーションとの厳密な線引きがないため、スクラムにおけるスプリントをイテレーションと表現する場合もあります。
オンサイト顧客
オンサイト顧客とは、エクストリーム・プログラミングにおいてプロジェクトチームに参加する顧客を意味します。
チームからの質問に回答し、開発に積極的に関わります。
開発要求を打診したり、クライアント企業側の希望を伝えるのが仕事です。
顧客は、個人ではなくチームでプロジェクトに加わります。
ベロシティ
ベロシティとは、アジャイル開発のスクラムにおけるチームの開発速度を意味します。
アジャイル開発では、最初に要件定義を行わないために、開発スケジュールが後ろ倒しになることが少なくありません。
ベロシティが割り出せると、開発スピードからプロジェクト全体の完了時期の目安が分かります。また、開発チームの作業効率がわかると、進捗管理や人事評価に活用できます。
リプレース(replace)
リプレースとは、ハードウエアやシステム機器を新しいものに入れ替える作業です。
アジャイル開発では、仕様変更やクライアントからの要望変更が適宜入るため、現行業務に対してハードウェアの容量が間に合わなくなることがあります。
リプレースを適宜行い、現行プロジェクトに適したハードを適宜選びましょう。
まとめ
アジャイル開発とは何か、代表的な手法からメリットとデメリットについて解説しました。
顧客からのレスポンスが受けやすい環境下で、なおかつ開発コストが追加でかかってもかまわなければ、アジャイル開発は有効に機能します。
ユーザーのニーズを開発に随時活かしたいのであれば、おすすめの手法です。
ただし、技術面のバリューを追求するあまり、プロジェクトの納期を大幅に押してしまう場合もあります。
プロジェクトリーダーを立てるなどして、納期コントロールも行うと良いでしょう。