世界的にDX(デジタル・トランスフォーメーション)化が推進されている中で、「アジャイル開発」の必要性が高まっています。アジャイル開発とは、システムやソフトウェアの開発において現在主流となっている手法で、機能単位でプロジェクトチームを組み短い期間でテストと実装を繰り返します。従来のウォーターフォール開発では仕様に基づいた各工程を分割して開発を進めるため、アジャイル開発と比較すると実装までの期間が長い特徴があります。
本記事では、アジャイル開発について概要や歴史とともに、ウォーターフォール開発との違いについて詳しく解説していきます。
アジャイル開発とは?
アジャイル(Agile)とは、直訳すると「素早い」を意味します。
アジャイル開発はシステムやソフトウェア開発における手法のひとつです。機能単位でプロジェクトチームを組んで要件定義→設計→開発→テスト→リリース(運用)の開発工程を小さいサイクルで繰り返します。
こうした実装までのサイクルはイテレーションと呼ばれ、アジャイル開発の手法によってはスプリントとも呼ばれます。ただし両者は厳密に使い分けされているわけではありません。
機能単位でリリースするアジャイル開発は、最初から完成された製品を提供するのではなく、ブラッシュアップを適宜行うことで段階的にシステムやソフトウェアの完成度を高めるため開発期間中の仕様変更に強いのが特徴です。
「アジャイルソフトウェア開発宣言」
アジャイル開発が積極的に取り入れられるようになったのは、2000年代に17名の技術者・プログラマーがアメリカ・ユタ州で「アジャイルソフトウェア開発宣言」を行ったことがはじまりとされています。
包括的なドキュメントよりも動くソフトウェアを、
契約交渉よりも顧客との協調を、
計画に従うことよりも変化への対応を、
価値とする。すなわち、左記のことがらに価値があることを認めながらも、私たちは右記のことがらにより価値をおく。
© 2001, 上記の著者たち
この宣言は、この注意書きも含めた形で全文を含めることを条件に自由にコピーしてよい。(引用:アジャイルソフトウェア開発宣言)
また、背景には動くソフトウェアを可能な限り短い間隔(数週間~数ヶ月)でリリースするなど、顧客満足を最優先とした「アジャイルソフトウェアの12の原則」も存在しています。
従来の価値観を否定しない一方で、新たに画期的な手法を取り入れる柔軟性のもとアジャイル開発が誕生しました。
いま、アジャイル開発が注目される背景とDXの潮流
アジャイル開発が世界中で注目される背景には、DXとの相互関係があります。DXを進めるためには、変化の激しいビジネス環境に対して、スピード重視で製品やサービスを市場に投入する必要があります。従来のウォーターフォール開発のスピード感では競合他社に先を越される可能性があり、段階的に実装と改善を繰り返すアジャイル開発が重視されています。
しかしアジャイル開発はソフトウェアの内製を前提に定義された開発手法です。一部の企業を除くとソフトウェアの内製化が進んでいない日本企業の多くは、課題や環境の変化に適宜対応できるアジャイル開発とは相性が悪いという問題を抱えていました。
近年ようやく、日本国内においてもDXの世界的な潮流に乗ってアジャイル開発が注目されはじめています。アジャイル開発を取り入れることで、競合や顧客ニーズの変化に応じた仕様変更などの対応を柔軟に行えるようになります。
アジャイル開発とウォーターフォール開発の違い
機能単位でこまかく要件定義からテスト、リリースまでを繰り返すアジャイル開発と違い、ウォーターフォール開発は最初にシステム自体の仕様を決めて要件定義や設計、プログラミングやテストなどを、工程ごとに分けて段階的に進行する手法です。
全体の機能設計を完成させてから開発が進むため、開発に着手するまでの時間が長かったり、急な仕様の変更や追加への対応が困難だったりとデメリットもありますが、以下のようなメリットもあります。
・工程ごとに担当者を割り振れる(担当者は自分の作業のみに集中できる)
・開発前に作業量や工程が確定するため、予算が立てやすい
事前にプロダクトの骨格が完成された状態で進行することから、スケジュールに余裕を持たせやすく、作業工程や個人の能力を考慮してメンバーをアサイン出来ることから、新人教育にも役立てられています。
プロジェクトの内容によってはウォーターフォール開発のほうが適切な場合も多く、それぞれの手法の特徴を理解したうえで使い分けることが重要です。
アジャイル開発とウォーターフォール開発の使い分け
アジャイル開発とウォーターフォール開発は、それぞれ向き不向きがあります。基本的には、小規模なプロジェクトや仕様変更が予測されるケースにはアジャイル開発が、堅牢なシステムや大規模開発を行う場合はウォーターフォール開発が最適です。
一方で、近年は大規模開発においてもアジャイル開発を選択するケースもあり、多様化する顧客ニーズや市場環境を想定して、以下のようにアジャイル開発とウォーターフォール開発を併用することもあります。
ウォーターフォール開発先行型
ある程度の仕様が固まっており、将来的に変更が予見される場合はウォーターフォール開発で先行させつつ、仕様変更が生じたときにアジャイル開発で対応していくことで、大々的な改修を行う必要なく継続的な仕様変更にも対応できるようになります。
アジャイル開発先行型
顧客の要望や課題が明確となっていない場合はアジャイル開発を先行で進めつつ、明確になった段階でウォーターフォール開発に切り替えると、仕様変更の影響を最小限に抑えながら合理的に開発を進められます。
アジャイル開発、3つの手法
アジャイル開発には複数の手法が存在し、スクラム、エクストリーム・プログラミング(XP)、ユーザー機能駆動開発(FDD)の3つが代表的です。
簡単にまとめると、ラグビーのスクラムのようにチームで密に連携をとりあって開発するのが「スクラム」、開発中の仕様変更に柔軟に対応するのが「XP」、顧客視点を重視するのが「FDD」となります。
それぞれ見ていきましょう。
スクラム
スクラムは、アジャイル開発を行ううえで最も採用されている手法です。プロダクトオーナーとスクラムマスター、開発チームが少人数でチームを組み、機能単位で開発を進めます。
スクラムマスター:全体の調整役としてプロダクトオーナーや開発チームが抱える課題の解決に取り組みます
開発チーム:プロダクトオーナーの意向に沿って開発を進め、機能単位で責任を持ち業務を進めます
要件定義や計画、設計から開発、テスト、リリースまでを1つのサイクルとして繰り返し、プロダクトを完成させる手法です。
チームの人数は10人以下となるケースが一般的で、少数精鋭でプロダクトを素早くリリースし、ユーザーのニーズやフィードバックを取り入れつつブラッシュアップをはかります。機能ごとの要件定義からリリースまでのサイクルはスプリントと呼ばれ、1か月程度を上限に開発を進めていきます。
エクストリーム・プログラミング(XP)
エクストリーム・プログラミング(Extreme Programming:XP)とは、技術者を中心とした手法で、開発途中で仕様変更や機能追加が必要となった際、最も柔軟に対応可能な手法です。機能単位で要件定義から設計、テスト、リリースまで一連の開発を繰り返し行う点は他の手法と共通しており、エクストリーム・プログラミング(XP)の特徴としては、効率的な開発を行うためにペアプログラミングを取り入れたり、あらかじめコーディング規約を定めたうえで作業に取り組んだりする点があげられます。
エクストリーム・プログラミング(XP)をメインの手法とする場合、チームの開発者は5つの価値と呼ばれる、開発にあたっての重視ポイントを念頭において取り組むことが大切とされています。
・コミュニケーション
・シンプル
・フィードバック
・勇気
・尊重
ステークホルダー間のコミュニケーションを重視しつつ、頻繁にテストを行ってフィードバックにも耳を傾けます。設計は必要最低限のシンプルなものを心がけ、一方で仕様変更や設計変更を柔軟に受け入れる勇気を持つことも重要としています。
ユーザー機能駆動開発(FDD)
ユーザー機能駆動開発(Feature Driven Development:FDD)は、顧客にとっての価値を重視した手法です。ソフトウェアを適切な間隔で繰り返しリリースさせ完成させていきます。
ユーザー機能駆動開発(FDD)も基本的な流れは他の手法と同じく、機能単位での開発です。顧客のビジネスモデルを理解したうえで開発を進める必要があり、ビジネスモデリングの中で必要な機能を洗い出し、ソフトウェアの開発を反復的に行うのが特徴です。
アジャイル開発のメリットと注意点
プロジェクトにアジャイル開発を取り入れる際は、トラブルを避けるため、メリットに加えて注意点も理解しておきましょう。
メリット
アジャイル開発の主なメリットとして、以下の3つがあげられます。
・柔軟かつスピーディーに開発できる
・多様な顧客ニーズに臨機応変に対応できる
・工数やコストを調整しつつ開発できる
動く機能を反復的に開発、リリースするため、ソフトウェアの市場投入までの時間を短縮できるのが最大のメリットです。昨今のビジネス環境は変化が激しいため、サービスインを早期に実行できなければトレンドに遅れてしまうおそれがあります。
また、機能ごとに開発を行うことで仕様変更や追加機能など顧客ニーズに低コストで対応しやすく、工数の調整も容易です。
注意点
顧客ニーズを反映しやすいアジャイル開発ですが、一方で以下の注意点もあります。
・コンセプトや方向性がブレる可能性がある
・計画当初のコストを超過する恐れがある
・要望によっては進捗やスケジュールに影響が出る
仕様変更や追加要望に都度応えていると、本来のコンセプトや方向性からブレてしまうおそれがあります。また、柔軟に応えすぎると計画当初に想定していたコストを超える可能性も高くなり、場合によっては進捗やスケジュールの遅延にもつながります。
DX時代に最適なアジャイル開発
アジャイル開発は、世界的なDX時代を迎えている現代の開発手法として最適です。競合他社に先を越されない、いち早くサービスインできる点もメリットですが、顧客ニーズや新たな技術革新、環境の変化に対応するには開発途中の仕様・要件の変更に柔軟に対応できるアジャイル開発が求められます。
一方で顧客ニーズに応えすぎるとコストや進捗に影響が出てしまうことから、期限を定め目的を意識した進行が求められます。場合によってはウォーターフォール開発との併用も効果的です。それぞれのメリットを意識しながら、自社にとって最も適した開発手法を採用しましょう。