アジャイル開発は、近年システム開発の現場でよく聞かれる言葉の一つです。
言葉自体は聞いたことがあるものの「アジャイル開発とは、どのような開発方法なのか」「どういったメリット・デメリットがあるのかよく分からない」という方も多いのではないでしょうか。
そこで今回は、アジャイル開発の特徴やメリット・デメリットを詳しく解説します。
アジャイル開発の進め方や、代表的な手法もまとめました。アジャイル開発をテーマに徹底解説しますので、これからアジャイル開発を検討したい方は参考にしてください。
監修者プロフィール
島添 彰
合同会社Solashi Japan 代表取締役。サントリーにて社内向けシステムの開発・運用に携わる。Yper株式会社を創業し、CTO・CPOとしてプロダクトの立ち上げ・グロースに従事。
アジャイル開発とは
アジャイル開発(agile software development)とは、小単位で実装とテストを繰り返しながら開発を進める開発手法です。
もともとアジャイル(agile)は、「素早い」「俊敏な」などの意味があります。スピーディーにシステムやソフトウェアを開発できることからアジャイル開発と呼ばれています。
ここではアジャイル開発と従来のウォーターフォール開発との違いや、それぞれに適したケースを見ていきましょう。
アジャイル開発とウォーターフォール開発の違い
ウォーターフォール開発とは、システム開発の設計や実装、テストなどの各工程を段階的に完了させる開発手法です。
ウォーターフォール開発のメリットは、開発にかかる予算を事前に把握しやすく、プロジェクトメンバーのアサイン計画を立てやすい点です。
しかし、ウォーターフォール開発は、途中で機能を追加することが非常に難しく、基本的に後からの変更には対応できません。すべての機能の要件定義や計画を事前におこなってから、開発に着手するためです。
また、開発したシステムやソフトウェアを顧客に手渡すのはプロジェクトの全工程が完了した後になります。
一方、アジャイル開発は、機能ごとに分けて、開発作業を進めます。要件定義から設計、実装、テスト、運用までの工程を小さな単位で繰り返すのが特徴です。
開発が完了した機能から随時、お客さまに提供します。従来の開発手法であるウォーターフォール開発よりも開発期間を短縮できるのが特徴です。
また、システム開発会社と発注元の会社が一つひとつの機能を確認しながら、二人三脚で開発を進められます。
アジャイル開発が向いているケース
アジャイル開発は、開発作業の途中で仕様変更が生じる可能性の高いプロジェクトに適しています。
具体的には、アプリケーションやゲーム、Web関連のサービスなどの開発が挙げられます。
これらのサービスは世の中のトレンドに影響されやすく、開発途中で顧客のニーズが変わるケースも珍しくありません。アジャイル開発であれば、急な仕様変更や新機能の追加・修正にも柔軟に対応できます。
ほかにも、簡単に操作できるUI(ユーザーインターフェイス)が求められているソフトウェアの開発にもアジャイル開発が適しています。
ユーザーが理解しやすく、簡単に操作できるUIを実現するには、発注者から寄せられる、さまざまな要望に細やかな対応をする必要があるからです。
すなわち、短い期間で改修を繰り返し、ユーザの声を聞きながらプロダクトの完成形を見つけていくプロジェクトの進め方には、スクラム開発のように、短い期間の意思決定をする方法が用いられることが多くなります。
ウォーターフォール開発が向いているケース
ウォーターフォール開発は、情報を正確に記録する必要がある管理系システムの開発や、銀行ATMの開発などのプロジェクトに適しています。
業務フローが固まっており、実装する機能の一覧を比較的作りやすく、ゴールを定めて、そこまでの開発の工数/工期を見積もっていく手法です。
管理系システムや銀行ATMの開発などではシステム障害が起きないように、リリースの早さよりも品質の高さを重視する必要があります。
ウォーターフォール開発では、各工程で細かいチェックを実施するため、細かいミスや不具合などを発見・修正しながら開発作業を進めることが可能です。
また、多くの工数や時間がかかる大規模プロジェクトもウォーターフォール開発のほうが適しています。
ウォーターフォール開発では、プロジェクト全体の作業量を事前に把握できます。そのため作業量に応じて大量のエンジニアのリソースを確保したり、工程によって人数を抑えたりなどコントロールをおこなえます。
アジャイル開発が生まれた背景
アジャイル開発が生まれた背景には、昨今のビジネス環境の変化が大きく影響しています。ウォーターフォール開発の場合は、下記の2点が大きな課題となっていました。
- 従来型の開発では開発時間を正確に算出できなかった
- 顧客ニーズに迅速に応えることが求められた
これらの課題に対してなぜアジャイル開発が有効なのか、詳しく解説していきます。
従来型の開発では開発時間を正確に算出できなかった
従来のウォーターフォール開発の場合、開発にかかる時間を正確に算出できませんでした。
事前にプロジェクトを完了するまでの時間を見積もっていても、実際には数倍の時間を要することがありました。予想外の不具合や手戻りが発生し、予想していた時間よりも超過することは珍しくなかったのです。
また、工数が膨らむことによって、開発したシステムやソフトウェアの品質が低下したり、納期が遅れたりとデメリットを被っていました。
このような背景から誕生したのが、アジャイル開発です。アジャイル開発では、スケジュールを区切りながら開発作業を進められます。
そのため、成果物の品質やコスト、納期を調整しやすく、プロジェクトマネジメントを円滑におこなえるメリットがあります。
顧客ニーズに迅速に応えることが求められた
近年のビジネスでは、スピード感をもって価値のあるプロダクトを顧客に提供し続けることが求められています。
これはシステム開発の業界でも同様です。開発者側で最高のプロダクトを作っても、発注者のニーズに応えるものでなければ意味がありません。
また、プロダクトを使っているユーザーの反応や意見を取り入れつつ、よりよいものに修正することが、ビジネス価値を向上させるために重要となっています。
ウォーターフォール開発は、企画から市場にリリースまでの期間が半年〜数年単位となっているケースが多いため、ユーザーへの提供は年に1、2回程度となります。そのため顧客ニーズに応えながら開発作業を進めることが困難でした。
一方でアジャイル開発では、顧客からのフィードバックを得て、定期的に改善することが可能です。顧客ニーズに応えながら開発作業をスムーズに進められます。
アジャイル開発のメリット・デメリット
アジャイル開発は、具体的にどのようなメリットやデメリットがあるのでしょうか。
アジャイル開発を採用する場合、メリットを最大限に活かし、デメリットを抑えることが大切です
ここでは、アジャイル開発のメリット・デメリットを詳しく解説します
アジャイル開発のメリット
アジャイル開発の最大のメリットは、突発的な仕様変更に対してスムーズに対応できる点です。
アジャイル開発は、途中で仕様や設計変更があることを最初から計算に入れ、仕様を厳密には決めていません。その前提で計画を立てるため、スピーディーに開発を進められます。
仮に仕様変更が発生しても後戻りしやすく、仕様変更に対応するコストも抑えることが可能です。
またアジャイル開発は、機能単位で細かく開発を進めるため、顧客の要望に最大限応えられる点もメリットです。
アジャイル開発では、双方向のコミュニケーションを取り、発注者からのフィードバックを受けながら開発を進めていけます。
アジャイル開発のデメリット
アジャイル開発は、厳密な機能設計やスケジュール設定はおこなわれません。ウォーターフォール開発と比べると、開発の方向性・目的がぶれやすい点がデメリットです。
また発注者とのコミュニケーションを重視するあまり、開発会社が修正や追加要件に応え続けようとした結果、プロジェクトの一貫性を損なう可能性があります。
またチームごとに機能の開発を進めるため、開発プロジェクト全体の進捗はコントロールしづらくなるでしょう。
全体の進捗状況を管理できないと、結果的に納期が遅れる可能性もあります。
アジャイル開発の代表的な手法
アジャイル開発にはさまざまな手法が存在しますが、代表的な手法が下記の5つです。
- スクラム
- エクストリームプログラミング(XP)
- ユーザー機能駆動開発(FDD)
- リーンソフトウェア開発(LSD)
- 適応型ソフトウェア開発(ASD)
ここでは、それぞれの開発手法の特徴、メリットを解説します。
スクラム
スクラムとは、スプリントと呼ばれている1〜4週間の開発工程を複数回繰り返す手法のことです。
スプリントは、下記の4つのプロセスで成り立っています。
- スプリントプランニング(スプリントの開発内容や進め方を決める)
- デイリースクラム(スプリント期間中に毎日実施するミーティング)
- スプリントレビュー(スプリントの成果や今後の流れを共有する)
- 振り返り(評価や反省点を確認する、次回以降の改善点を検討する)
スクラムは基本的にチーム単位で開発を進めるため、タスクを分担できるのが特徴です。
チームワークやコミュニケーションが重視されており、効率的に作業を進めていけるのがメリットになります。
エクストリームプログラミング(XP)
エクストリームプログラミング(XP=Extreme Programing)とは、発注者のニーズを反映しながら開発を進める手法のことです。プロジェクト全体の詳細な計画は立てません。
エクストリームプログラミングは、共同作業やコミュニケーションが重視されており、ソフトウェアの設計・開発・テストの工程を繰り返しおこなうのが特徴です。
各工程を何度も反復するなかで、開発の方向性を固める流れとなっています。そのため、仕様変更が生じても迅速に対応できます。
また、発注者のリクエストが反映されやすく、顧客満足度の向上につながる点もメリットです。
ユーザー機能駆動開発(FDD)
ユーザー機能駆動開発(FDD=Feature Driven Development)とは、ユーザーから見た機能の単位で開発チームを分けて開発作業を進めていく手法のことです。
ユーザー機能駆動開発では、1機能ごとに全体モデルの作成から計画、設計、構築までのサイクルを1~2日程度でおこなうのが特徴です。
また、チーム内外でのコミュニケーションは基本的にドキュメントでのやり取りが中心になります。
ユーザー機能駆動開発は高速で開発を進められるため、改善を繰り返しながら高品質なシステムを作りやすいのがメリットです。また、大規模な案件にも対応しやすいでしょう。
リーンソフトウェア開発(LSD)
リーンソフトウェア開発(LSD)とは、開発にかかるムダな時間や不要な作業をなくした開発手法のことです。
トヨタ自動車の生産方式で採用された「リーン生産方式」をソフトウェア開発に応用したものとなっています。
リーンソフトウェア開発では、無駄を省いて品質の高い開発をおこなうことを重視しており、決まったプロセスやノウハウを持たずに開発作業を進めるのが特徴です。
発注者フィードバックを重視した開発をおこないます。要望どおりに早く開発作業が進んでいき、速やかにリリースできる点がメリットです。
ただし、多くのフィードバックが必要になります。場合によっては、開発・テストの工程が増えてしまい、コスト高になる可能性があります。
適応型ソフトウェア開発(ASD)
適応型ソフトウェア開発(ASD=Adaptive Software Development)とは、複雑なシステムや激しい状況変化に適した開発手法のことです。
適応型ソフトウェア開発では、思索(スペキュレーション)・協調(コラボレ―ション)・学習(ラーニング)の3つのサイクルを繰り返しおこないます。
顧客ニーズの変化に応じて臨機応変に開発作業を進められるのがメリットです。また、レビューを踏まえたうえで開発作業を進められるため、成果物の品質も高めやすいでしょう。
アジャイル開発の基本的な進め方
アジャイル開発の基本的な進め方は下記のとおりです。
- リリース計画を立案する
- 開発作業の優先順位を決める
- イテレーションを繰り返して成果物の開発を続け
- 開発の終了時期を決定する
ここでは、アジャイル開発の基本的な進め方を詳しく解説します。
リリース計画を立案する
まずは、リリース計画を立案します。リリース計画とは、3〜6ヶ月先の主要なマイルストーンまでの計画を指します。
計画の最後に1度だけリリースする形ではなく、3〜6ヶ月の計画の中に複数回のリリースが組み込まれているのが一般的です。
アジャイル開発のリリース計画では、発注者が実現したい要求をまとめつつ、厳密なスケージュールは定めずに柔軟に対応できるスケジュールを立てるのがポイントです。
余裕があるスケジュールを立てておくことで、開発途中で発生する仕様の変更に迅速に対応できるようになるでしょう。
開発作業の優先順位を決める
続いて、リリース計画に基づき、開発作業の優先順位を決めていきます。アジャイル開発では機能ごとに開発作業を進めていくのが基本です。
まずは開発対象の機能をリストアップし、どの機能を優先的に開発するのかを決めていきましょう。
しかし、アジャイル開発では開発の優先順位を何度も見直すケースが発生します。そのため、開発する順番が入れ替わったり、機能自体を新たに追加したりすることはよくあるでしょう。
基本的には顧客の要望やフィードバックをヒアリングし、そのうえで開発作業を進めていく形がよいでしょう。
イテレーションを繰り返して成果物の開発を続ける
開発作業の優先順位を決めたら、イテレーションを繰り返して成果物の開発を続けていきます。
イテレーションとは、一連の工程を繰り返しおこなう開発サイクルのことです。
イテレーションはアジャイル開発の基本的な概念であり、一連の工程をスピーディーに繰り返すことで、開発上で起こりえるトラブルに対して迅速に発見・改善できます。
アジャイル開発のような進め方をする場合、請負契約のように納期のお見積りをして都度発注すると契約だけで時間がかかります。したがって、ラボ型での契約が前提となります
アジャイル開発では、下記の流れで開発を続けるのが一般的です。
- 要件定義
- 設計
- 開発
- テスト
まずは、優先順位の高い機能から着手し、イテレーションを繰り返しながら成果物の開発を進めていきましょう。
開発の終了時期を決定する
アジャイル開発は、発注者と開発会社間で開発終了時期を決めてから終了します。
基本的には、必要な要件を満たしているかどうかがプロジェクト終了の条件です。仮にすべての開発作業が終了しても、顧客側で機能の品質面で不安がある、または機能が不足していると感じた場合は開発を継続することになるでしょう。
一方開発途中でも、機能が十分に搭載していると発注者が判断した場合は、その時点でプロジェクトは終了となります。
プロジェクトの終了時期は、顧客側と相談・協議したうえで決めるようにしましょう。
アジャイル開発で設計書を作成するメリット・デメリット
アジャイル開発ではスピード感が重視されているため、設計書などのドキュメントは不要と考えられる傾向にあります。
しかし、実際のアジャイル開発を採用している現場では、設計書や仕様書の細かいルールは現場によって異なるようです。
ここでは、アジャイル開発で設計書を作成するメリット・デメリットと、どのようなときに設計書が必要であるかを解説します。
アジャイル開発で設計書を作成するメリット
アジャイル開発で設計書を作成する最大のメリットは、要件に関する認識齟齬を防止できる点です。
設計書が何も準備されていない状態で開発を進めていくと、要件に関する認識の齟齬が生じやすくなります。
メンバー間で認識を合わせるための時間を費やした結果、実装までに多くの時間がかかるかもしれません。
また、何らかの事情でエンジニアが抜ける場合でも、設計書を使ったほうが十分な引き継ぎが可能になります。
将来的に開発のメンバーが変わったり、担当している作業を引き継がなければいけなかったりする場合は、設計書を作成したほうがよいでしょう。
アジャイル開発で設計書を作成するデメリット
アジャイル開発で設計書を作成するデメリットは、設計書の作成に時間がかかる点です。
メンバーの一人が設計書の作成に回れば、その分実装までのスピード感が失われることにつながります。
また、一度設計書を作成すると、柔軟に内容を変更することが難しくなる点もデメリットです。
特に短いスパンで改変を繰り返すシステムの場合は、設計書をわざわざ作成してもリリースの度に内容が古くなります。
設計書を作成するメンバーの負担も大きくなるため、チーム全体の進捗に影響が及ぶ可能性もあります。
アジャイル開発において設計書を作ったほうがよいケース
たとえば、複数のシステムを跨いで処理する機能を開発したいときは、設計書を作っておくとよいでしょう。
複数のシステムを跨いだ処理は実装の難易度が高く、複雑な処理を必要とします。行動で説明するよりも設計書を作成して説明したほうが理解しやすくなります。
テキストや図などを使いながら説明することで、メンバー間の認識を合わせやすくなるでしょう。
また、チームメンバー間にスキルのギャップがあるときも設計書を作るのがおすすめです。
開発経験が豊富なエンジニアが設計書を作成し、開発経験が浅いエンジニアが設計書を参考に開発作業を進めることで、チーム全体の開発スキルを高められます。
品質・スピードを両立したアジャイル開発を実現するSolashi
本記事ではアジャイル開発をテーマに、ウォーターフォール開発との違いや代表的な手法、進め方を解説しました。
アジャイル開発の依頼を検討しているのであれば、品質・スピードを両立したアジャイル開発を実現する「Solashi Co., Ltd」にご依頼ください。
弊社はベトナムを拠点に置く、システム開発会社です。
Webフレームワークを利用した高速なプロトタイピングと、アジャイル開発のアプローチによって、品質・スピードを両立した開発をおこないます。仮に仕様書がなくても、アジャイル式ですぐに開発をスタートすることが可能です。
また、エンジニアはハノイ工科大学やベトナム国家大学、貿易大学等のトップ校出身者を中心に、優秀な人材を採用しています。事業立ち上げ経験のある日本人PMも在籍しており、伴走型支援やIT導入コンサルティングサービスもおこなっています。
アジャイル開発を検討している方は、ぜひ「Solashi Co., Ltd」までお気軽にお問い合わせください。
島添 彰
合同会社Solashi Japan代表。1989年4月生まれ、福岡県出身。大阪府立大学大学院情報数理科学専攻修了。2014年サントリーホールディングスのIT機能をもつ「サントリーシステムテクノロジー株式会社」に入社。自動販売機の配送管理や効率化、販売管理システムの開発から運用、導入まで広く担当する。2017年にYper株式会社を創業、同社のCTO・CPOに就任。アプリ連動型の置き配バッグ「OKIPPA(オキッパ)」の立ち上げ・プロダクトのグロースに携わる。東洋経済社の名物企画「すごいベンチャー100」、Forbes誌による「Forbes 30 Under 30 Asia 2019」に選出される。