プロジェクトマネジメント無料相談受付中 お問い合わせはこちら

アジャイル開発とは何か?ウォーターフォール開発との違いや進め方のポイントを解説します

システム開発あるいはソフトウェア開発を成功に導くための手法として、注目を集めている「アジャイル開発」。自社のプロジェクトにアジャイル開発が有効かどうかを判断するためには、アジャイル開発の概要や特徴を把握しておかなくてはいけません。今回は、伝統的な開発手法であるウォーターフォール開発とアジャイル開発を比較しながら、その違いや進め方のポイントについて解説します。

目次

アジャイル開発とは

ソフトウェアやシステムの開発手法には、ウォーターフォール開発、プロトタイピング開発、スパイラル開発など複数の手法が存在します。アジャイル開発とは、そうした開発手法の中でもスピード感をもって開発を進行できる手法です。なお、アジャイル(Agile)という英単語には、「素早い」「機敏な」といった意味があります。

アジャイル開発の一般的な進行手順がこちらです。

  1. 開発するシステムの大枠を決定する
  2. 搭載する機能ごとに開発メンバーを構成する
  3. 「要件定義→設計→実装→テスト」という開発サイクルをくり返す

アジャイル開発の大きな特徴として、機能ごとに開発を進めていく点が挙げられます。上記の開発サイクルを短期間で繰り返すことで、要件を満たすような開発を可能にします。

アジャイル開発とウォーターフォール開発との違い

ウォーターフォール開発は、搭載する全ての機能に要件定義を行ってから開発をスタートさせる手法です。全ての進行手順が厳密に決められているため、開発がスタートしてからは上流工程から下流工程へと順番に開発を進めることになります。そのため、スケジュール管理がやりやすい、進捗状況が把握しやすいといったメリットが生まれるのです。

アジャイル開発とウォーターフォール開発の違いを表で確認しましょう。

 アジャイル開発ウォーターフォール開発
開発規模   
小規模開発が向いているプロジェクトに携わるメンバーが多い大規模開発に向いている
開発プロセス    仕様の大枠を決めてから開発がスタートする 機能ごとに「要件定義→設計→実装→テスト」という開発プロセスを繰り返す全ての機能について、厳密に要件定義などを行ってから開発がスタートする 上流から下流へと、順番に工程が消化されていく
開発期間短期長期
納品のタイミング     作業が完了した機能から納品可能全ての機能の開発が終了してから納品となる

アジャイル開発のメリット・デメリット

アジャイル開発では、システムやソフトウェアに搭載される機能ごとに開発が進みます。仕様変更や機能の追加が発生しても、工程を後戻りさせるリスクが小さいため、コストを抑えやすい点がメリットです。

アジャイル開発は途中変更を想定した開発手法のため、リリース開発※においてウォーターフォール開発のように全ての機能を厳密に決める必要がありません。大枠を決めてから開発をスタートできるため、最終的なリリースまでの期間を短縮することも可能です。

※リリース開発~顧客が要求する機能や要求を取りまとめる作業のこと。開発がスタートする前に行う

一方で、アジャイル開発には「プロジェクト全体の方向性がブレやすい」というデメリットが存在します。仕様の大枠を決めているとはいえ、各機能がそれぞれ開発を進めているため、全体の方向性がブレやすくなるのです。また、複数の機能を並行して開発する場合、スケジュール管理や進捗の把握がやりにくくなるでしょう。

ウォーターフォール開発のメリット・デメリット

ウォーターフォール開発のメリットは、スケジュール管理や進捗状況を把握しやすいことです。はじめにシステムの要件定義を厳密に決定してから開発をスタートさせるため、計画に従って工程を進めていけば必ずシステムが完成するというシンプルな仕組みになっています。結果的に、プロジェクトに必要なチームメンバーを確保しやすいほか、予算も立てやすくなるでしょう。

一方で、ウォーターフォール開発は、開発途中での頻繁な仕様変更を想定していません。そのため、仕様変更によって開発期間の延長や追加コストが発生する可能性があります。

例えば、開発後期のプロセスで問題が見つかれば、開発の前段階あるいは前々段階にまで後戻りして修正する事態が発生するかもしれません。全ての機能の開発が終了してから成果物が完成するため、依頼主への納品もプロジェクト後となります。

アジャイル開発の主な手法と進め方

アジャイル開発には特徴が異なる手法が存在します。「スクラム」「エクストリーム・プログラミング」「ユーザー機能駆動開発」という3つの手法をみていきましょう。

スクラム

スクラムは、開発チーム間のコミュニケーションを重視した手法で「スクラム開発」とも呼ばれています。スクラムでは、役割の異なるメンバーが互いに連携を取りながらプロジェクトの達成を目指す点が大きな特徴です。スクラムの構成メンバーと役割を以下の表で確認しましょう。

構成メンバー主な役割
プロダクトオーナープロジェクトの意思決定を行う
スクラムマスター各メンバーと協力して、スケジュール管理や課題解決などを行いチームを機能させる
開発エンジニア開発作業を進める

一般的にスクラムは以下の3ステップで進行します。

  • ステップ1.プロダクトバックログを作成する
  • ステップ2.スプリントプランニングを実施する
  • ステップ3.開発作業を実施する

以下、ステップごとの目的や意味を解説します。

ステップ1.プロダクトバックログを作成する

プロダクトバックログとは、開発に必要な項目(機能や品質など)に優先順位をつけてリスト化したものです。プロダクトバックログを作成することで、スプリント計画で取りかかる作業や全体の目標ゴールが明確になります。

ステップ2.スプリントプランニングを実施する

スプリントとは、「要件定義→設計→実装→テスト」という開発サイクルを繰り返すことを指します。そしてスプリントプランニング(スプリント計画)とは、スプリントの作業計画を立てることです。

開発するシステムあるいはソフトウェアの仕様、チームメンバーの練度などを勘案して、実現可能なプランを立案します。作業の内容や工程が具体的になるため、プロジェクトのスケジュールを立てやすくなるというメリットがあります。

なお、機能ごとに開発を繰り返す工程について、スクラム開発では「スプリント」と呼び、後述するエクストリーム・プログラミング(XP)では「イテレーション」と呼びます。厳密な意味合いは異なるのですが、アジャイル開発の基礎知識を学ぶ際は、同義の言葉と捉えて問題ありません。

ステップ3.開発作業を実施する

スクラムでは、スプリントプランニングをもとにそれぞれの開発メンバーがスプリントを実施して、プロジェクトの完成を目指します。

特徴的な工程が、「デイリースクラム」というチームメンバーを集めたイベントを行う点です。デイリースクラムとは、プロジェクトの進捗状況や作業内容を確認するための集まりのこと。毎日決まった時間に同じ場所で15分以内に行うというルールが定められており、主に開発者に発言権があるといった特徴があります。時間、場所、発言権などが決められている点が、ミーティングや朝礼との違いといえるでしょう。

こうした進め方を通して、チームメンバー間で積極的にコミュニケーションの機会を持ち、プロジェクトを成功に導いていくのです。

エクストリーム・プログラミング(XP)

エクストリーム・プログラミング(XP)とは、顧客の要望に柔軟に対応できる手法です。「設計→実装→テスト」という開発サイクルをくり返す中で、顧客とコミュニケーションをとり意見や要望を確認するため、顧客の要望に柔軟に対応できます。少人数の開発メンバーで素早いリリースを目指す場面でも効果を発揮します。

ユーザー機能駆動開発(FDD)

ユーザー機能駆動開発(FDD)とは、顧客からみて価値の高い機能を開発することを目的とした手法です。ユーザー機能駆動開発では、顧客が何を求めているかを明確にすることが最も重要視されます。そのうえで、必要な機能を切り分けて、それぞれ開発チームを構築して顧客ニーズに沿った開発につなげるのです。

アジャイル開発とウォーターフォール開発のどちらを選ぶべきか

アジャイル開発とウォーターフォール開発ではどちらを選ぶべきなのでしょうか。アジャイル開発が適切なケースとウォーターフォール開発が適切なケースをそれぞれ解説します。

アジャイル開発が適切なケース

開発途中の仕様変更が予測できる場合は、アジャイル開発が向いています。例えば、開発とレビューを並行させて開発を進めたいという要望に応える場合です。

また、2週間から3週間で納品して欲しいといった早期の納品が求められているケースも、完成した機能から納品できるアジャイル開発が適切です。

ウォーターフォール開発が適切なケース

後戻りを想定していないシステムやソフトウェアの開発には、ウォーターフォール開発が向いています。具体的には、基幹システムの構築といった中規模から大規模開発です。

これらの開発では細かい仕様は最初に決定されているため、各工程を1つずつ正確に達成していくことが求められます。仕様変更に対応するために開発部分に余白を設けるアジャイル開発は、こうした開発を不得意としています。

まとめ

アジャイル開発とは、「要件定義→設計→実装→テスト」という開発サイクルを、機能ごとに進行させる開発手法です。大枠を決めて開発をスタートできるといった身軽さや、仕様変更や機能の追加といった開発途中の変更事項を想定した柔軟な開発手法が特徴です。

従来型の開発手法であるウォーターフォール開発にはないメリットがある一方、開発の方向性がブレやすく、スケジュール管理に手間がかかるといったデメリットも存在します。アジャイル開発の導入を検討する際は、自社にとってのメリット・デメリットを検討することからはじめてみましょう。

この記事が気に入ったら
フォローしてね!

是非シェアをお願いいたします。
  • URLをコピーしました!
  • URLをコピーしました!
目次