アジャイル開発は、システムやソフトウェア開発におけるプロジェクトマネジメント手法のひとつです。
従来の開発方法に比べて開発スピードも速くなり仕様変更にも強いため、多くのシステム開発にも取り入れられている手法です。
非常にメリットの多いプロジェクトマネジメント手法ではありますが、すべての開発に適しているわけではありません。
正しく理解して活用しなければかえって非効率になってしまいます。
この記事ではアジャイル開発の詳細やメリット、従来の開発手法との違いについて解説します。
アジャイル開発に適したプロジェクトについても解説していますので、ぜひ最後までご覧ください。
プロジェクトマネジメントにおけるアジャイル開発とは
アジャイル開発はシステムやソフトウェア開発におけるプロジェクトマネジメント手法のひとつです。
システム全体を機能単位で区切り、小単位で「計画→設計→実装→テスト」を繰り返して開発を進めていく手法です。
従来の開発手法と比較して開発スピードが速くなることから、アジャイル(素早い・機敏な)開発と呼ばれています。
「システム開発に変更・追加は生じるもの」という考えを前提として、こまめなリリースを繰り返し顧客からのフィードバックを多く得ることで、品質を高めていくソフトウェア開発手法です。
アジャイル開発とウォーターフォール開発の違い
アジャイル開発は、機能単位で「計画→設計→実装→テスト」を繰り返し開発を進めていく開発手法です。
一方、ウォーターフォール開発は工程単位で開発を進める手法で、全機能について「計画→設計→実装→テスト」の工程を一回限りおこないます。
また、計画の立て方にも大きな違いがあります。
アジャイル開発は「仕様の変更や追加が発生する」ことを前提としているため、臨機応変に対応できるようにおおまかな計画しか立てません。
しかしウォーターフォール開発は、開発途中での変更を想定していないため、厳密に計画を決めてから開発に進みます。
ほかにも、リリースのタイミングも大きく異なる点です。
アジャイル開発は開発が完了した機能から都度リリースするのに対し、ウォーターフォール開発は全機能の開発が完了しプロジェクトが終わった際にリリースをおこないます。
アジャイル開発の基礎知識
アジャイル開発では必ず押さえたい専門用語があります。
- リリース計画
- イテレーション(スプリント)
- ユーザーストーリー
詳しく解説します。
1:リリース計画
リリースとは、サービスの仕様や機能を公開することです。
先述した通り、アジャイル開発では全機能を開発してから公開するのではなく、都度公開していきます。
そのため、初めにプロジェクト全体を管理するため「いつどんな仕様・機能を公開するか」というリリース計画を立てます。
しかし、計画の段階では細かな仕様は決めず、おおよその方向性だけを決定します。
これは「開発途中で仕様や変更が生じるのは当然」という前提があるためです。
あえておおまかな計画にとどめ、変更や追加に柔軟に対応できるようにすることで、顧客の要望を最大限に応えることが可能です。
2:イテレーション(スプリント)
イテレーション(iteration)とは、英語で「反復・繰り返し」の意味がある単語です。
アジャイル開発において、機能単位で「計画→設計→実装→テスト」のサイクルを繰り返すことをイテレーション(反復)と呼びます。
アジャイル開発の開発手法であるスクラム開発(記事下で紹介)では、イテレーションを「スプリント」と呼びます。
若干の特徴の違いはありますが、大きな意味では同じで厳密な区別はなくスクラムでもイテレーションという言葉を使う場合もあります。
イテレーションの期間は1週間~4週間ほどで、スピーディーに開発サイクルを回していきます。
イテレーションごとに機能をリリースしつつ「イテレーション1」「イテレーション2」と繰り返しながら開発を進めます。
3:ユーザーストーリー
ユーザーストーリーとは、サービスがユーザーにとって「どのように使われるか」「どのような価値があるか」をまとめたものです。
システム要件の代わりに、アジャイル開発ではユーザーストーリーをベースに検討を進めていきます。
サービスを使う際に「誰が」「何を」「どうする」という情報を簡潔にまとめます。
通常、現場では付箋やカードに書き出されて、ユーザーストーリーをグルーピングしたり優先順位をつけたりして
リリース計画に反映させていきます。
アジャイル開発の手法
続いては、アジャイル開発における代表的な3つの開発手法について解説します。
- スクラム
- エクストリームプログラミング(XP)
- ユーザー機能駆動開発(FDD)
スクラム
スクラムはコミュニケーションを中心として効率的に開発を進める手法であり、アジャイル開発における代表的な手法のひとつです。
チームワークを重視した開発手法であり、チームを組んでメンバー全員に役割を設定し、コミュニケーションと取りながらチーム一丸となって開発にあたります。
ご想像の通り、ラグビーのスクラムが語源となっています。
メンバーの役割は設定しますが、明確なタスクや工程の振り分けはおこなわず、メンバー自身でメンバー自身が計画を立案します。
メンバー全員がそれぞれに役割を持って開発に取り組むため、さまざまな作業を同時進行可能です。
ほかにも、コミュニケーションの充実によりメンバー全員がお互いのスキルできるようになるため、効率的な開発をおこなえます。
ただし、コミュニケーションが不足していると動作に問題が生じたり、開発に遅れが生じたりするなどのトラブルが発生しやすい点に注意が必要です。
名前の通りスクラムを組むようにチーム全員が一丸となって開発を進めなければなりません。
エクストリームプログラミング(XP)
エクストリームプログラミング(XP)は仕様変更に対する柔軟性を重視した手法です。
「コミュニケーション」「シンプル」「フィードバック」「勇気」「尊重」という、開発において重要となる5つのポイントを「価値」として定めチーム内で共有するのが特徴になります。
- コミュニケーション:開発チーム内はもちろん、顧客とのコミュニケーションを重視してプロジェクトを成功に導く
- シンプル:プラン段階の設計は、基本的な機能だけにとどめてシンプルに描く
- フィードバック:顧客からのフィードバックを得て、必要機能を洗い出す
- 勇気:当初の計画を大幅に変更する勇気を持つ
- 尊重:チームメンバーを尊重する
XPでは基本的にエンジニア2人一組でペアを組み、1人はコードを組み・1人は確認補佐をする「ペアプログラミング」のスタイルをとります。
コミュニケーションを重視するXPならではの開発スタイルです。
ペアプログラミングで進めることで、エラーへの迅速な対応や柔軟な仕様変更が可能となっているのです。
ただしXPはその開発スタイルから、エンジニアのスキルに依存しやすい手法ともいえます。
そのため、エンジニアのスキルが不足している場合、開発効率が大きく低下してしまう点には注意が必要です。
ユーザー機能駆動開発(FDD)
ユーザー機能駆動開発は、顧客にとっての機能価値を重視した開発手法です。
方法としては、「5つの基本活動」に則って開発を進めます。
- 全体モデル開発
- フィーチャーリストの構築
- フィーチャー毎の計画
- フィーチャー毎の設計
- フィーチャー毎の構築
ここでいうフィーチャー(feature)とは、機能のことです。
とくにFDDでは、フィーチャーは2週間以内で開発できる機能でなくてはいけません。
大きな機能は、より細かく2週間以内で開発できる小さな機能へと分解していき、
フィーチャーをリストアップするところから開発がスタートします。
フィーチャーリストから開発計画を立てて、フィーチャー毎に設計パッケージを作成し、
各フィーチャー毎にコーディングを実行していきます。
そのため、2週間おきスピーディーに機能開発が進んでいきます。
アジャイル開発のメリット・デメリット
ここでは、アジャイル開発のメリットとデメリットについて解説します。
アジャイル開発のメリット
アジャイル開発の主なメリットは以下の3つです。
- 問題発生時の修正工数を少なくできる
- 顧客ニーズを取り入れやすい
- 開発スピードが速くなる
アジャイル開発は小さな機能単位で開発するため、問題が発生しても手戻りが少なくすみます。
結果、ウォーターフォール型にくらべて少ない工数で修正可能です。
また、アジャイル開発ではイテレーションごとに顧客の要望とのすり合わせを行います。
その際に、改善点が見つかれば次のイテレーションに組み込むことも可能なため、非常に顧客ニーズを取り入れやすいです。
アジャイル開発では機能単位で完成させてその都度リリースするため、開発にかける時間を短縮することが可能です。
また、先述した手戻りが少ない点も開発スピードが速くなる大きな要因といえるでしょう。
アジャイル開発のデメリット
アジャイル開発の主なデメリットは以下の2つです。
- 全体スケジュールの管理が難しい
- 開発の方向性がずれやすい
アジャイル開発では、機能ごとにスケジュールを設定するため、プロジェクト全体のスケジュールや進捗管理が難しいです。
また、アジャイル開発は、最初の段階で厳格な仕様は決めず、必要に応じて追加・変更を繰り返す手法です。
そのため、内容が変わりやすさと比例して方向性もぶれやすくなっています。
アジャイル開発の向き不向き
ここでは、アジャイル開発に向いているプロジェクトと向いていないプロジェクトについて解説します。
向いているプロジェクト
アジャイル開発は、開発の途中で仕様変更や追加が生じる可能性が高いプロジェクトに向いています。
例をあげるとモバイルアプリやゲームソフト、Webサービスのシステムなどです。
また、顧客の要望に細かく対応する必要があるプロジェクトなどもアジャイル開発が向いているといえるでしょう。
向いていないプロジェクト
開発途中で仕様変更が発生しないプロジェクトや、安全性や正確性が求められるプロジェクトにはアジャイル開発は向いていません。
例をあげると、基幹システムや金融システムなどの管理系のシステムがそれにあたります。
このようなケースではアジャイル開発では非効率になってしまうためウォーターフォール開発を選択したほうがよいでしょう。
まとめ:アジャイル開発のメリット・デメリットを理解し有効活用しよう
システム開発におけるプロジェクトマネジメント手法であるアジャイル開発について解説しました。
アジャイル開発は従来の工程ごとに開発を進めるのではなく、機能ごとに開発を進める手法です。
機能単位で完成させるため、従来の開発にくらべ期間を短縮して顧客にリリースが可能になります。
また機能ごとにリリースするため、顧客からの要望も取り入れやすく顧客のニーズにあった開発が可能です。
メリットの多いアジャイル開発ですが「全体のスケジュールが把握しにくい」「方向性がぶれやすい」などデメリットもあるため、こまめな進捗管理や状況把握が重要です。
また、アジャイル開発にも向き不向きがあり、向いていないシステムをアジャイル開発でおこなうとかえって非効率になる場合もありますで、本記事で紹介した内容を参考に状況にあわせて開発手法を使い分けましょう。
ちなみに、私たちビーイングコンサルティングは、TOCやCCPMを用いた業務改善のコンサルティング企業。
これまで数多くの企業様へコンサルを行い、成果を挙げてきました。
「品質管理に役立つTOCについて、くわしく知りたい」という方は、以下より無料で資料をダウンロードしてください。