システム開発にはアジャイル開発とウォーターフォール開発の大きく二つの開発手法があります。
アジャイル開発は「サービスインまでの期間を短縮できる」「仕様変更や要件変更に柔軟に対応できる」といった特徴があるため、近年はベンチャー企業だけでなく大企業でも取り入れている企業が増えています。
そんなアジャイル開発ですが、良い点ばかりではありません。
本記事ではアジャイル開発の特徴やメリット・デメリットを解説します。
アジャイル開発を正しく理解し、導入可否を判断できるようにしましょう。
アジャイル開発とは、2001年にアメリカにおいて「アジャイルソフトウェア開発宣言」として原則をまとめ確立された開発手法です。
「アジャイル(agile)」という言葉の意味通り、プロジェクトを小さい単位に分けて「素早く」システム開発を進めていきます。
アジャイル開発の特徴は、プロジェクトを小さいタスクに分けて、イテレーション(スプリントとも言う)と呼ばれる短い期間ごとに開発していく点です。
イテレーションごとに進めるタスクを決めて、機能を1つずつ実装することができるので、仕様変更に強く、ユーザーの要望を柔軟に反映することができます。
アジャイル開発において、イテレーションは基本的に1~2週間程度の期間で設定され、その期間ごとに各機能を開発、実装することで大きなシステムを完成させるので、アプリ開発や管理保守といった継続的な契約に向いている開発手法です。
反対に、成果物を納品して完了の買い切り型の契約や、長年手作業で行っていた工程をシステム化するなど、既に作るべき機能が明確に定まっている場合には適していません。

もう1つの開発手法であるウォーターフォール開発との大きな違いは、その可逆性にあります。
ウォーターフォール開発では、「要件定義→設計→実装→テスト→リリース」と上流から下流へ水が流れるようにリリースまでの各工程を段階的に完了させます。
ウォーターフォール開発では基本的に前の工程に戻ることはありません。つまり一度決めた要件を変更することは基本的にNGです。
変更する場合は変更会議など必要なステップを踏む必要がありますが、ウォーターフォール開発において要件変更を発生させることは遅延や失敗のリスクになるので、基本的に要件変更はせず、要件定義工程できちんと要件を決め切ることをおすすめします。
一方でアジャイル開発はイテレーション毎に要件定義を行うので、柔軟に要件を変更できます。
前のイテレーションで決めた要件を実装した後に、「やっぱり思ってたのと違う」「これだと業務が回らない」などの理由により、次回イテレーションで再度要件を変更する、といった進め方が可能になります。

アジャイル開発の中にもいくつかの種類があります。ここでは、用いられることの多い3つの種類の概要を紹介します。
スクラム開発
スクラム開発は、もっとも有名なアジャイル開発手法です。
開発チームのメンバーが自分たちで主体的に計画立案を行うことで開発を進め、チームリーダーとなるスクラムマスターがチーム内外との連絡調整を行います。
スクラム開発ではイテレーションのことをスプリントと呼びますが同じ意味で用いられます。
エクストリーム・プログラミング(XP)
事前の計画よりも仕様・要件の途中変更への柔軟な対応を重要視した手法です。
エンジニアがペアを組み、コーディング内容を互いに確認しながら作業を進めるため、エラーや仕様変更に対応しやすくなっています。
ユーザー機能駆動開発(FDD)
ユーザーに対してシステムが生み出す機能や価値を重視した開発手法です。
ユーザーへヒアリングを行い、開発する機能ごとにチームを編成します。
念入りなヒアリングが必要になる一方で、価値の高い機能を実装しやすいのが特徴です。
ここからはアジャイル開発を導入するメリットについて紹介します。
アジャイル開発は、ユーザーだけでなく開発を行うプログラマーやシステムエンジニアにとってもメリットのある手法であることが分かります。
仕様変更やユーザーのニーズに対応しやすい
アジャイル開発ではイテレーションごとに実装した機能に対するフィードバックをユーザーからもらうため、要望とのズレが生じにくいのがメリットです。
また、仕様変更があった場合でも、作業サイクルが小さいため手戻りとなる工数も少ないため、柔軟に対応することができます。
ユーザー側もイテレーションごとに打ち合わせを行うことで、ニーズと乖離したシステムが開発されるのを防ぐことが可能です。
要件定義が明確でなくても対応が可能
アジャイル開発では、ユーザーがどのような機能を欲しているか、全体像が見えていない状態であっても、プロジェクトの進行に合わせて固めていくことができるメリットがあります。
ウォーターフォール開発では実装に入る前に要件定義や仕様設計書を詳細に作成する必要があるため、ユーザーが自身のニーズについて整理できていない状態だと、開発に着手することができず、プロジェクトが停滞してしまいます。
トラブルに強く突発的な対応が少ない
アジャイル開発では、小さい単位で作業サイクルを回しているのでシステムエラーなどのトラブルが発生した場合でも振り返る作業範囲が小さく済むのがメリットです。
ウォーターフォール開発では、要件定義で決まった内容をもとにスケジュールや予算を見積もるため、仕様変更やトラブルが発生した際に追加作業が発生することが多いです。そのため、プログラマーやエンジニアにとってもアジャイル開発はメリットのある開発手法といえます。
アジャイル開発のデメリットは開発しているシステムの全体像が把握しにくいことです。
イテレーションごとに実装する機能を決め開発を行い、リリースまで手掛けるため、開発しているシステムの全体像を見失いやすいです。
プロジェクトの指針をしっかり持っていないと、システム開発にブレが生じる可能性があります。
そのためアジャイル開発では、ユーザーストーリーが重要です。
ユーザーストーリーとは、ユーザーが実現したいことを簡潔にまとめたもので、打ち合わせの中で構築されます。
このユーザーストーリーを基にシステム開発に必要なタスクをまとめたプロダクトバックログが作成され、イテレーションごとにプロダクトバックログから作業を行うタスクを選定し、機能開発を行います。
ユーザーストーリーが明確になっていれば、場当たり的な開発になることを防ぎ、一貫したシステム開発を行うことが可能です。
今回は、アジャイル開発の特徴やメリット・デメリットについて紹介しました。
アジャイル開発はユーザーだけでなく、プログラマーやシステムエンジニアにとってもメリットの多い開発手法です。
今後従来のウォーターフォール開発からアジャイル開発へ転換する企業も増えることが予想されます。
本記事を執筆している KICK ZA ISSUE株式会社では、アジャイル開発のプロジェクトマネジメント経験を持つITコンサルタントが多く在籍しております。
アジャイル開発の導入を検討されている企業様は、ぜひお気軽にご相談ください。
ご相談は無料ですので、お気軽に こちら からお問合せください。
ありがとうございました。
コンサルタント転職・副業情報発信メディア - Day1キャリア
国内最大級のコンサルタントマッチングプラットフォーム - コンサルデータバンク