開発手法で「アジャイル開発」というものがあります。近年さまざまな企業から注目や導入されている、プロジェクトをスピーディーに進めるために考案された新規開発手法です。
アジャイル開発という名称は、読者の皆さんも1度は耳にしたことがあるかもしれませんが、「アジャイル/Agile=すばしっこい・機敏な」という意味です。これを見ると、「何かスピーディーですごそうだ」と思った方もいるのではないでしょうか?
どのような開発手法なの?
メリットとデメリットはなに?
注目されているならもっと知りたい
今回はそんなアジャイル開発について、開発手法やメリット、デメリットなど基礎知識の説明から導入事例の紹介など、初心者に向けて網羅的に解説しています。ぜひ参考にしてください。
アジャイル開発とは?
アジャイル開発とは、ソフトウェア開発手法のひとつであり、システム全体を小規模な機能に分割し、それぞれの機能を数週間程度で実装していく開発のことです。
他の手法と比較して、短期間で迅速かつ適応的に行われ、システム全体を長期間かけて開発するのではなく、小規模な反復(イテレーション)を繰り返して、システムに徐々に機能を追加していきます。
この各反復において、実装だけではなく、文書化、リリース、評価も行います。
アジャイル開発の流れ
アジャイル開発は以下の2段階で行っていきます。
リリース計画
どのような開発であっても、最初におこなうのはリリースまでの計画です。
何回も会議を開催して厳密に仕様を決定してから、「さあ作業に取り掛かろう」という企業は多いと思いますが、アジャイル開発では基本会議は1回で、仕様などは「こんなものかなあ」とだいたいの感覚で決定します。
これは「開発する上で仕様や設計の変更がたくさんある」ということが念頭にあり、そのような新規開発でガッチリ仕様を決定しても意味がないと考えいるからです。
だいたいの計画で大丈夫?と思われるかもしれませんが、仕様が決まっていないため、追加や修正に対応しやすくなり、顧客のニーズに最大限応えられます。
イテレーション
開発段階における作業のサイクルです。イテレーションは「反復」という意味です。
大規模な開発なら、これを小規模な開発に分け、それぞれの開発を「計画」→「設計」→「実装」→「テスト」を何回も繰り返しながら、機能開発を行っていきます。
細かい開発を何回も繰り返していくのです。
どのようなプロジェクトで効果を発揮する?
アジャイル開発は以下ようなプロジェクトで力を発揮します。
- 1から新しいものを開発する
- 開発中に仕様変更や追加がたくさん予想される
- 日進月歩で技術の進歩が見られる産業
このように、既存となる仕組みが無く、企画段階で仕様を完全に決定しない、新規開発のプロジェクトに向いています。
このようなプロジェクトは中途での変更や追加が数多く発生するので、システムを小規模に分けて、短時間で機能をどんどん追加していく手法が効果的です。
一方で、アジャイル開発が効果を発揮できない場面もあります。例えば、工場などにおける人間が行っていた部品の仕分けの工程を、ロボットに変更してシステム化を行う場合です。
このようなプロジェクトは、人間が行っていた作業工程をロボットに反映させるだけです。開発する機能がすでに決定しており、途中変更や追加もほとんどないためアジャイル開発は適用できません。
どのような素晴らしい手法でも、適合と不適合はあるものです。自身のプロジェクトがどのようなものか理解したうえで、開発手法を決定することが重要です。
アジャイル開発の主な手法3つ
アジャイル開発には、2000年代以前から採用されている代表的な3つの手法が存在します。それぞれ「ユーザー機能駆動開発」、「スクラム」、「エクストリームプログラミング」と呼ばれ、異なる特徴があります。
また、3つの手法は独立したものではなく、複数の手法を同時に取り入れることも可能です。本項目では、それぞれの手法の特徴と、各手法がどのようなソフトウェアや開発チームに適しているのかを解説します。
手法1:ユーザー機能駆動開発
ユーザ機能駆動開発とは、顧客にとっての機能価値という観点で、機能を分割し開発を進める手法です。
「Feature Driven Development(FDD)」とも呼ばれ、顧客にとっての機能価値(feature)をリスト化して、順次実装します。完成させてからではなく、ユーザーにとって適切な間隔で実際に動作するソフトウェアとしてリリースします。
ユーザーとのコミュニケーションや市場調査が重要になる手法です。
手法2:スクラム
スクラムは、古くからあるアジャイル開発の手法で、チーム内でのコミュニケーションと連携を重視する手法です。
メンバー自身で計画を立案し、短い期間で計画と実装とレビューの反復(イテレーション)を繰り返します。そのため、日常的なコミュニケーションと定期的な会議で進捗状況を把握する必要があります。
短期間の反復の繰り返しであるため、要求や必要事項の途中変更にも、計画を立て直して柔軟に対応できるのが特徴です。
手法3:エクストリームプログラミング
エクストリームプログラミングとは、最初の計画より柔軟性を重視する開発手法です。
要求が刻々と変化するような開発や、完全な計画が難しい難易度の高い開発にも適しています。チームは後述する「5つの価値」を共有して、同じ判断基準で開発を進めることが推奨されます。
- コミュニケーション
- シンプル
- フィードバック
- 勇気
- 尊重
この5つの価値の中には、適宜方針を変更する「勇気」も含まれており、自動テストを導入するなどして、変更コストを下げることがこの手法のポイントになります。
アジャイル開発のメリット
アジャイル開発のメリットは、短時間でシステムの修正が可能であることと、密なコミュニケーションによるフィードバックです。
2001年、アジャイル開発を推奨していた17人の専門家によって作成された「アジャイルソフトウェア開発宣言」では、「個人と対話」「動くソフトウェア」「顧客との協調」「変化への対応」といった事柄に価値をおくとされています。
これらはアジャイル開発のメリットそのものでもあります。
⇒参考:アジャイルソフトウェア開発宣言
短時間で修正可能
アジャイル開発では、数週間程度の短期間の反復を繰り返すため、変更やトラブルが生じた際に短時間で修正が可能です。
従来の開発手法では、全体の計画と手順を最初に決定してしまうため、問題が発生したり一部機能が変更になったりした場合は、工程を戻してやりなおす必要があります。
しかし、アジャイル開発においては、計画、実装、評価を1つの反復でおこなうため、次の反復での修正だけで済み、短期間で対応が可能になります。
密なコミュニケーションによるフィードバック
アジャイル開発では、頻繁にチームや顧客とのコミュニケーションをとるため、開発中に顧客やメンバーからのフィードバックを受け取ることができます。
従来の開発手法では、最初の計画と最後の評価の段階での意思疎通が重要で、齟齬がないようきっちりとした要件定義が必要になっていました。
しかし、アジャイル開発では、途中で顧客からの要求や開発者からの提案が可能で、より満足度の高いソフトウェアを提供することができます。
アジャイル開発のデメリット
アジャイル開発は、迅速で柔軟であるために、デメリットもいくつか存在します。
例えば、全体像が見えにくい、コンセプトがぶれやすいなどのデメリットがあり、これらは、上記のメリットとトレードオフの関係になっています。
全体像が見えにくい
アジャイル開発においては、小規模な反復を繰り返すためシステムの全体像が見えにくいです。
その結果、進捗管理やスケジュール管理が難しくなり、納期に間に合わなかったり、トラブルが共有されておらず連鎖的に問題が発生したりといった事態が起こり得ます。
こうしたデメリットは、コミュニケーションを密にとることで、軽減されます。
コンセプトがブレやすい
アジャイル開発では、要求の変更や仕様の変更を柔軟に受け入れるため、コンセプトがブレやすいという問題があります。
結果的に、当初の目的とは異なるソフトウェアが開発され、当初の課題が見過ごされてしまうという事態も起こり得ます。定期的な会議で方針の修正をおこなうか、あるいは、こういったコンセプトの変更も許容するのか、顧客とチームでの相談が必要です。
その他の開発手法 ~アジャイル開発とどう違う?~
アジャイル開発以外にも多くのソフトウェア開発で採用されている手法があります。
その中から、本項目では「ウォーターフォール開発」、「スパイラル開発」、「プロトタイプ開発」の3つをとりあげ、アジャイル開発と比較したメリットやデメリットを解説します。
ウォーターフォール開発
ウォーターフォール開発とは、ソフトウェア全体をいくつかの作業工程に区切って、順次完遂していく手法です。もっともポピュラーな開発手法で、古くから採用されています。
要件定義、設計、開発など、それぞれの工程が大規模で厳密であり、滝が流れ落ちるように以前の工程には戻らないことが特徴です。
前の工程が終わるまで先に進めないため、時間はかかりますが、後戻りが少なく進捗管理がしやすくなります。
スパイラル開発
スパイラル開発とは、設計とプロトタイピングを何度か繰り返して開発していく手法です。ウォーターフォール開発とアジャイル開発の中間のような手法といえます。
途中の機能追加や変更も可能で、アジャイル開発より反復の期間は長く(数ヶ月)回数は少ないため、短期間での開発が難しい大規模なプロジェクトに適しています。
一方で、反復を前提としているため要件定義やレビューが甘くなるという問題もあります。
プロトタイプ開発
プロトタイプ開発とは、開発の初期にプロトタイプを作成し、顧客の確認、評価を受けてシステムの仕様を決定していく手法です。
他の手法と比較して、プロトタイプの作成が仕様に先立つという点が異なります。プロトタイプを先に作り、顧客との意思疎通や起こりうる問題を予測することで、開発工程の無駄をなくします。
大規模なプロジェクトは、プロトタイプの作成が難しく工数がかかりすぎてしまうため、適していません。
アジャイルソフトウェア開発宣言に定義される12の原則
「アジャイルソフトウェア開発宣言に定義される12の原則」とは、アジャイル開発において、チームが従うべきとされている原則です。
2001年の「アジャイルソフトウェア開発宣言」の中で「アジャイル宣言の背後にある原則」としてまとめられ、「動くソフトウェア」といったアジャイル開発が重視する概念や、開発の方針、心構えなどが含まれています。
アジャイル開発をおこなう際には、目を通しておくべき文書と言えるでしょう。
⇒参考 情報処理推進機構:アジャイルソフトウェア開発宣言の読みとき方
アジャイル開発導入事例
アジャイル開発はさまざまな企業で導入され、その効果を発揮し、利益や価値を生み出しています。ここではアジャイル開発の導入事例を紹介していきます。
富士通ソフトウェアテクノロジーズ
こちらの企業では、日々増加する新規案件を素早く開発するために、アジャイル開発の導入を目的とした研修を紹介しています。
実際のアジャイル開発を適用する案件を請け負ったいう設定で研修を行った感想などが記載されているので、アジャイル開発の研修を考えている方は、一読の価値ありです。
実際の記事は以下のURLです。
⇒富士通ソフトウェアテクノロジーズ:人材育成・研修サービス Agile⁺ Studio Dojo 導入事例 https://www.fujitsu.com/jp/group/fst/about/resources/case-studies/case01/
株式会社アミティー
こちらの企業では、新学校管理システムの開発に、アジャイル開発を採用した事例です。
アジャイル開発を選択した理由や、導入により得られたメリットが記載されているので、アジャイル開発の導入を考えている人に一度読んでもらいたいです。
実際の記事は以下のURLです。
⇒JBSS:アミティー様 新学校管理システムの開発手法に 「アジャイル」を採用https://agile-x.jbcc.co.jp/showcase/agile/casestudy-amity.html
KDDI株式会社
アジャイル開発を導入すると決めたときの不安や、実際の経験、効果が記載されています。
アジャイル開発の臨場感が伝わってくる内容ですので、アジャイル開発に興味がある人、導入を考えている人など、さまざまな方に読んでもらいたいと思います。
実際の記事は以下のURLです。
⇒Scrum Inc. Japan:KDDI株式会社(auでんきチーム)https://scruminc.jp/scrum-consulting-and-coaching/casestudies/kddi/
アジャイル開発の特性を活かしたシステム開発をしよう
この記事では、アジャイル開発についての基礎知識を紹介しました。アジャイル開発のメリット、デメリットを理解し、特性を活かしてシステム開発をおこなうことが重要です。
また、実際にアジャイル開発を進める上では、チームのメンバーがアジャイル開発の理念や行動原理を理解し、共有している必要があります。
システムの規模や特徴に合わせて、アジャイル開発を取り入れ、効率的にソフトウェア開発を進めましょう。
挫折せず目的を達成するなら
専属マンツーマンレッスンの侍エンジニア

プログラミング学習の挫折率は約90%と言われています。学習を成功させるには、モチベーションを維持して成長を実感できる環境が必要です。
侍エンジニアなら「現役エンジニア講師」、「学習コーチ」、「Q&A掲示板」トリプルサポート体制であなたの学習をサポートするほか、オーダーメイドカリキュラムで必要なことだけを学べるため、さまざまなランキングでNo1という実績を挙げています。
挫折せず最短でプログラミングを習得したいなら侍エンジニアがおすすめです!