アジャイル開発とは、開発プロセス全体を通して発注者と開発者がコミュニケーションを活発にとることを前提とし、開発着手後も仕様変化への柔軟な対応ができる開発スタイルを指します。
その手法は複数あり、代表的なものは以下の5種類です。
このように一言でアジャイル開発と言っても、その手法はさまざまで、手法によって進め方や向いている状況も異なります。最適な手法を選ぶことで、より一層、開発プロジェクトを進めやすくなるでしょう。
例えば、100名を超えるような大規模開発には、ユーザー機能駆動開発が適しています。
また、アジャイル開発では、スクラムとエクストリームプログラミングなど複数の手法を組み合わせることで、開発するソフトウェアなどの完成度を上げることもできます。
アジャイル開発を成功させるには、各手法の特徴や進め方を把握し、プロジェクトの内容に合わせて選んだりカスタマイズしたりすることが大切です。
そこで今回は、アジャイル開発を使いこなしプロジェクトを成功させるうえで押さえるべき、アジャイル開発の種類に関するポイントをご紹介します。
【当記事のポイント】
・代表的なアジャイル開発手法5種類 ・アジャイル開発の手法は複数種類を組み合わせるのもおすすめ ・最適なアジャイル開発の種類を選ぶためのポイント ・【種類別】アジャイル開発を成功させるポイント |
以上のような内容を把握しておけば、アジャイル開発の主な種類について概要を把握し、プロジェクトに取り入れられそうかどうかを正しく検討することができるようになるでしょう。
アジャイル開発はうまく使いこなせば、仕様変更やエラー修正に柔軟に対応しながらニーズどおりの開発ができる反面、よく理解しないまま採用すると、失敗のリスクが高い手法です。だからこそ、開発の目標や体制に合わせて、有効活用できるようになりましょう。
1.代表的なアジャイル開発手法5種類
冒頭でもお伝えしたとおり、代表的なアジャイル開発手法は以下の5種類です。
代表的なアジャイル開発手法 | |
種類 | 特徴 |
スクラム | ・プロジェクトの進捗・スケジュール管理を重視 ・スプリントの反復、デイリースクラムで毎日短時間のミーティングをすることなどが特徴 |
エクストリーム プログラミング(XP) | ・仕様変更などへの対応力を高めることを重視 ・計画にこだわらず開発者の経験を重視して開発を進めるのが特徴 |
ユーザー機能駆動開発 (FDD) | ・大規模開発にも対応しやすい ・機能ごとにチームを分けるのが特徴 |
リーンソフトウェア開発(LSD) | ・リーン生産方式をソフトウェア開発に流用 ・ムダを省くことなど7つの原則が特徴 |
適応型ソフトウェア開発(ASD) | ・継続的に変更が発生する場合も適応可能 ・短い期間のサイクルを繰り返すことが特徴 |
ここでは、各手法の概要や特徴などを解説しますので、アジャイル開発の活用を検討する際の参考にしてください。
1-1.スクラム
スクラムとは、「スプリント」と呼ばれる1〜4週間の開発工程を複数回繰り返す、アジャイル開発の手法の1つのことです。スプリントごとに少人数でチームを組んで、1つ以上の成果物(インクリメント)を仕上げる必要があります。
スプリントとは、以下のとおりスプリントプランニング・デイリースクラム・スプリントレビュー・ふりかえりを含むプロセスのことです。
上記のとおり、各スプリントには4つのプロセスがあります。
スプリントの基本的な流れ | |
スプリントプランニング | ・スプリントの開始時に行うミーティング ・スプリントの開発内容や進め方を決める |
デイリースクラム | ・スプリント期間中に毎日行う15分程度のミーティング ・進捗や今日の目標・開発を進めるうえでの課題などを共有 |
スプリントレビュー | ・スプリントの最後に行う会議の1つ ・今回のスプリントの成果や今後の流れを共有 |
ふりかえり | ・スプリントの最後に行う会議 ・今回のスプリントに対する評価や反省点を確認し、次回以降に向けた改善点を検討 |
このようにスクラムは、
・1つのスプリントが短期間で計画が立てやすい
・スプリント中は毎日デイリースクラムと呼ばれる短時間のミーティングで進捗を共有する
といった特徴があります。プロジェクトのスケジュール・進捗を円滑にすることに重点を置いた手法であることが他の手法との違いです。
なお、スクラムはプロジェクトの管理をしやすくすることに特化した手法で、ソフトウェア開発のプロセス全体を網羅したノウハウではありません。
シンプルな構成のスクラムは他の手法と組み合わせやすく、さまざまな開発に応用しやすいので、今回ご紹介する5種類の中でもっとも活用されています。
最後に、スクラムのメリット・デメリットを確認しておきましょう。
スクラムのメリット・デメリット | |
メリット | ・シンプルな手法なので汎用性が高く、さまざまな開発で活用できる ・チームで開発するので、タスクを分担して効率的に作業を進められる |
デメリット | ・チームワークやコミュニケーションがうまく取れないと、開発の遅れや質の低下につながる |
1-2.エクストリームプログラミング(XP)
エクストリームプログラミング(Extreme Programing)とは、最初にプロジェクト全体の細かな計画は立てず短期間の開発サイクルを繰り返す中で計画を決めていくことで仕様変更が発生した際のコストを抑え、状況変化への対応力を高めるための手法のことです。
「Extreme Programing」を省略し、「XP」と呼ばれることもあります。
2名のプログラマーが共同してプログラミングを行うことで作業を効率化するとともに、高品質化を実現するペアプログラミングなどが特徴です。
エクストリームプログラミングでは、以下のような流れで計画を立て、作業結果のフィードバックを行います。
状況の変化を前提とするエクストリームプログラミングでは、最初にプロジェクト全体の細かな計画は立てず、上記のようなサイクルを短期間に複数回反復させることで、発注者のニーズを最大限反映しながら開発を進めます。
イテレーションとは、ソフトウェアを設計して開発しテストするまでのサイクルを指し、エクストリームプログラミングでは、このイテレーションを何度も反復することが特徴です。
サイクルの反復のなかで開発の方向性を固めていくために、他のプログラマーや顧客との密接なコミュニケーション(オンサイト顧客)を重視するエクストリームプログラミングには、以下のようなメリット・デメリットがあります。
エクストリームプログラミングのメリット・デメリット | |
メリット | ・仕様変更が生じても迅速に対応できる ・顧客のニーズを細やかに反映させやすく顧客満足度の向上につながる |
デメリット | ・ペアプログラミングのような共同作業やコミュニケーションの重視が特徴なので、作業内容が単純な場合や相性が悪い場合は作業効率が下がる |
1-3.ユーザー機能駆動開発(FDD)
ユーザー機能駆動開発(Feature Driven Development)とは、ユーザーから見た機能の単位で開発チームを分けることで、大規模なプロジェクトにも対応できる手法のことです。
英語名を省略してFDDと呼ばれることもあります。なお、英語名称の「Feature(フィーチャー)」とは、ユーザーから見た機能の単位のことで、スケールが小さい傾向にあるのが特徴です。
ユーザー機能駆動開発の流れは、以下のとおり、まず全体モデルを作成し開発の全体像を明らかにしたうえで、機能(フィーチャー)ごとに切り分けて計画や設計・構築を行っていきます。
フィーチャー単位でのサイクルを繰り返すことで、プロジェクト全体を完成させていきます。
開発単位を小さくするユーザー機能駆動開発では、
・反復するサイクルが短く、1~2日程度
・チーム内外でのコミュニケーションはミーティングではなく、ドキュメントのやり取りが中心
といった点が特徴です。
ユーザー機能駆動開発のメリット・デメリット | |
メリット | ・機能重視で開発を進めるので、高品質なシステムを作れる ・大規模な案件でも対応できる |
デメリット | ・ユーザーの優先する機能を重視するので、ユーザーニーズを把握するのに時間がかかるとスケジュールが遅延しやすい |
1-4.リーンソフトウェア開発(LSD)
リーンソフトウェア(Lean Software Development)開発とは、トヨタ自動車の生産方式などに代表されるリーン生産方式をソフトウェア開発に応用したもので、以下の7つの原則に該当する手法のことです。
このように、無駄を省いて品質の高い開発を行うことを重視しているのが特徴であるリーンソフトウェア開発には、決まったプロセスやノウハウはありません。上記の原則に当てはまる開発プロセスすべてが該当します。
メリット・デメリットは次のとおりです。
リーンソフトウェア開発のメリット・デメリット | |
メリット | ・開発にかかるムダな時間や不要な作業をなくすことができる ・フィードバックを重視するので顧客の要望どおりの開発ができる |
デメリット | ・多くのフィードバックを得るために開発・テストの工程を繰り返すため、コストが高くなる場合がある |
1-5.適応型ソフトウェア開発(ASD)
適応型ソフトウェア開発(Adaptive Software Development)とは、継続的な仕様変化に適応することを重視した手法で、複雑なシステムや状況変化の激しい場合に適した開発手法のことを指します。
以下のとおり、思索(スペキュレーション)・協調(コラボレ―ション)・学習(ラーニング)のサイクルを繰り返すことが特徴です。
各段階では、次のような作業を行います。
適応型ソフトウェア開発の基本的な流れ | |
思索 (スペキュレーション) | ・どのような機能をどういう手順で作るか決める ・未確定の部分はサイクルの反復の中で決めていく ・具体的には、発注者の要求事項の確認・チームや計画の作成など |
協調 (コラボレ―ション) | ・実際に開発作業を行う ・開発チーム内で密接にコミュニケーションを取りながら進める |
学習 (ラーニング) | ・成果物について品質の評価・レビューを行う ・ユーザー視点・技術的観点などさまざまな視点からレビューをもらい、今後どう改善していくべきか学習する |
メリット・デメリットは、以下のとおりです。
適応型ソフトウェア開発のメリット・デメリット | |
メリット | ・継続して状況が変化する場合も臨機応変に対応することができる ・レビューを踏まえて開発チームが成長していくので、質の高いソフトウェア開発が期待できる |
デメリット | ・当初未確定の部分はサイクルの反復の中で決めるので、開発が進むにつれて方向性がずれやすい |
2.アジャイル開発の手法は複数種類を組み合わせるのもおすすめ
これまでにご紹介したとおり、アジャイル開発の各手法は、基本の流れだけを示すものや、ノウハウ・原則だけのものなど、さまざまです。
そのため、1つの手法で完結させるのではなく、複数の手法のよいところを組み合わせることで、開発するシステムの完成度を上げることができます。
1つの手法ではカバーできないニーズや開発上の課題を、他の手法のノウハウを取り入れることで補い、各開発の内容や環境に最適なプロセスを作り上げられるからです。
手法の組み合わせ方に特に決まりはありませんが、スクラムとエクストリームプログラミング(XP)は相性がよいので、参考までにご紹介します。
スクラムとエクストリームプログラミング(XP)の組み合わせ例 |
スクラムのスプリントのフレームワークを採用したうえで、 ・プログラミングはペアプログラミングで行い、知識の共有と新たな開発のアイディア創出を狙う ・プロダクトオーナーをエクストリームプログラミングのオンサイト顧客と同様に扱い、開発チームとより密接にコミュニケーションをとる機会を増やす |
上記以外にも、「開発をどのように進めたいのか」その目的に応じて、他の手法を取り入れていくとよいでしょう。
例えば、作業工程に無駄があると感じているなら、リーンソフトウェア開発の原則を取りれると効果的です。
このように、アジャイル開発の各手法は1つで完結するものではなく、ベースとなる手法を決めたうえで別の手法のよいところを組み合わせることで、さらなる有効活用につながることを覚えておきましょう。
3.最適なアジャイル開発の種類を選ぶためのポイント
アジャイル開発の手法についてどの種類を選ぶか検討する際は、以下のとおり、メンバーの数や質を把握しておくと、最適なものを選びやすくなります。
最適なアジャイル開発の種類を選ぶためのポイント |
1. 開発に携わるメンバーの規模に合わせて選ぶ 2. 集められるチームのレベル感に合わせて選ぶ |
なぜ上記のポイントが大切なのか、その理由をご紹介していきます。
3-1.開発に携わるメンバーの規模に合わせて選ぶ
アジャイル開発の手法を選ぶ際は、開発に携わるメンバーの規模に合わせて決めることが、開発を成功させるために大切です。
例えば、スクラムは小規模なら最適だが大規模には向かない、逆にユーザー機能駆動開発は大規模に対応しやすいなど、手法によって運用するのに最適な開発規模が違う場合があるからです。
最適な規模感の目安 |
・スクラムは、チームが5~6名程度の比較的小さい規模の開発に向いている ・エクストリームプログラミングは、20名前後の中規模開発にも向く ・100名を超えるような大規模開発は、ユーザー機能駆動開発がおすすめ |
3-2.集められるチームのレベル感に合わせて選ぶ
開発に関係するメンバーのレベル感、例えばアジャイル開発の経験の有無や主体的なコミュニケーションが得意かどうかなども、手法を選ぶ際の基準の1つです。
理由として、アジャイル開発の種類や開発環境に応じて、開発の難易度が変わってくることが挙げられます。
例えば、アジャイル開発未経験者しか集められず、開発の利害関係人が多い場合に、スクラムを選んでも、調整に難航し質の高いソフトウェア開発は見込めないでしょう。
開発を進めるうえで求められるメンバーのレベルと、実際に集められるメンバーのレベルを対応させることを意識して、手法を選ぶことが大切です。
4.【種類別】アジャイル開発を成功させるポイント
それぞれの手法で、スムーズに開発を進めたり成果を上げたりするには、押さえておくべきポイントがあります。
ここでは、特に気を付けたいワンポイントを種類別にご紹介しますので、参考にしてください。
【種類別】アジャイル開発の成功ポイント | |
スクラム | プロジェクトの開発チームとそのリーダーが主体的に役割を果たすことが成功ポイントなので、あらかじめ各自の役割分担を正しく把握しておく |
エクストリームプログラミング | 臨機応変に仕様変更に対応することが前提なので、経験豊富な開発メンバーを揃えておくと開発難易度が下がる |
ユーザー機能駆動開発 | ユーザーの機能に対する優先順位が決まらないと開発が進まないので、ユーザーがプロジェクトに求めるものを早期に明確にする |
リーンソフトウェア開発 | 開発・テストの工程を多く繰り返すことが前提なので、コストを抑えるためにも、複雑な開発では本当にこの手法を選ぶべきかどうかを慎重に検討する |
適応型ソフトウェア開発 | 学習(ラーニング)段階のレビューが充実していると開発の質の向上や効率化につながるので、レビューをしっかり出せる環境を整える |
このように、各手法の特徴に応じて成功ポイントは異なります。アジャイル開発を円滑に進めるためにも、種類ごとの概要などを把握したうえで活用することが大切です。
5.まとめ
今回は、アジャイル開発の種類について概要やメリット・デメリット、選び方のポイントなどをご紹介しました。最後に、要点を再確認しておきましょう。
代表的なアジャイル開発手法5種類は、以下のとおりです。
代表的なアジャイル開発手法5種類 | |
スクラム | ・プロジェクトの進捗・スケジュール管理を重視 ・スプリントの反復、デイリースクラムで毎日短時間のミーティングをすることなどが特徴 |
エクストリーム プログラミング | ・仕様変更などへの対応力を高めることを重視 ・計画にこだわらず開発者の経験を重視して開発を進めるのが特徴 |
ユーザー機能駆動開発 | ・大規模開発にも対応しやすい ・機能ごとにチームを分けるのが特徴 |
リーンソフトウェア開発 | ・リーン生産方式をソフトウェア開発に流用 ・ムダを省くことなど7つの原則が特徴 |
適応型ソフトウェア開発 | ・継続的に変更が発生する場合も適応可能 ・短い期間のサイクルを繰り返すことが特徴 |
上記のようなアジャイル開発の手法は、複数種類を組み合わせてカスタマイズすることで、よりニーズに合ったソフトウェア開発ができるようになります。
最適なアジャイル開発の種類を選ぶためのポイントは、
・開発に携わるメンバーの規模に合わせる
・集められるチームのレベル感に合わせる
の2つです。
また、アジャイル開発を成功させるには、種類ごとにポイントを押さえた人選や進め方をすることが重要といえるでしょう。
今回ご紹介したポイントを参考にして、適切なアジャイル開発の種類を選び、開発の目標や体制に合わせた有効活用に挑戦してみてはいかがでしょうか。