アジャイル開発・ウォーターフォール開発とは?開発手法の違いをわかりやすく解説

アジャイル開発・ウォーターフォール開発とは?開発手法の違いをわかりやすく解説

ともぞう

ともぞう

こんにちは、Webディレクターのともぞうです。

シシステムやソフトウェアを開発する手法にはさまざまありますが、中でも有名なのがアジャイル開発ウォーターフォール開発です。

今回は、この二大開発手法の違いや特徴を比較、さらには失敗しないための開発手法の選び方ついて、初心者の方にもわかりやすく解説いたします。

開発手法の使い分けができるようになりたい、という方もぜひ参考にしてみてください。


※2018年9月に公開されたものを、最新情報を踏まえ編集部で校正・更新しました。

そもそも「アジャイル開発」「ウォーターフォール開発」とは?

まずはそれぞれの開発手法がどんなものなのか、特徴をみていきましょう。

アジャイル開発とは

アジャイル開発とは

「Agile(アジャイル)」は、日本語で「素早い」や「敏捷」という意味があります。アジャイル型の開発ではスプリント(またはイテレーション)と呼ばれる、機能単位での「企画→設計→開発→実装→テスト」といった開発工程を繰り返して、短期間で素早く開発を進めていきます。

スプリントの期間は開発チームによって設定が変わりますが、1〜4週間程度が一般的です。

アジャイル開発では、あらかじめ厳密に仕様を決めないため、プロジェクトを進めながら柔軟に仕様変更・修正ができます。したがって顧客ニーズや市場変化が変わるケースでは、アジャイル開発が適していると言えるでしょう。

このような特徴から、開発チームは顧客ニーズを的確に捉える必要があり、プロジェクト進行時は密にコミュニケーションをとることが求められます。

ウォーターフォール開発とは

ウォーターフォール開発とは

比較してウォーターフォール開発とは、開発工程を上流工程から下流工程へ順次移行していく開発手法です。水が下に落ちていく様を模し、ウォーターフォールという名前になっているそうです。

ウォーターフォール型の開発では、はじめに要件定義を詳細まで固め、その後は定義した内容をもとに順に開発を進めていきます。例えばTOPデザインにOKが出てから実装へ進む、という流れがわかりやすいと思います。OKが出る前に実装を進めることはしません。

開発工程はプロジェクトや担当範囲によって異なる場合がありますが、主に下記の6つに分けられます。

ウォーターフォールモデルの開発工程
  • 要求定義
  • 外部設計(概要設計)
  • 内部設計(詳細設計)
  • 開発(プログラミング)
  • テスト
  • リリース

ウォーターフォール開発では、最初に要件定義を固め、1つの工程が完了したら次、次が完了したらその次、といったように1つずつ工程を完了させていきます。

(ちなみによくウォーターフォールモデルはWFと略されることがあります。WFはワイヤーフレームの略語でもよく使われるので、注意が必要です。略語って難しいですね……)

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

アジャイル開発、ウォーターフォール開発の特徴がわかったところで、続いて両者の違いについてみていきましょう。

開発工程ごとの違いと、メリット・デメリットをそれぞれ比較しながら解説します。

開発工程ごとの違い

まずは各開発工程ごとに、どのような違いがあるのか見ていきましょう。アジャイル開発とウォーターフォール開発の違いを工程別にまとめると、以下の通りです。

アジャイル開発 ウォーターフォール開発
要件定義 詳細な要件は決めず、開発チームが顧客ニーズの理解を深めることを重要視する。プロトタイプやモックアップなどの仮の成果物を作成し、顧客からフィードバックを受け取りながら調整を行う。 細かいところまで固めた要件仕様書を作成し、それをもとに開発を始める。途中での変更は想定していない。
開発 機能単位での小さな開発(企画〜リリースまで)を繰り返しながらプロジェクトを進める。 作成した要件仕様書をもとに、上流から下流までの各工程を1つずつ完了させながらプロジェクトを進める。
テスト工程 機能単位での開発毎にテストをおこなう。 プロジェクトの開発フェーズの最後にテストを行う。
コミュニケーションのとり方 顧客と開発チームが密にコミュニケーションをとりながら開発を進める。また開発チーム内でも密なコミュニケーションが必要となる 顧客と開発チームのコミュニケーションは、要件定義などの上流工程で多くなり、それ以降は比較的少ない。

アジャイル開発は、顧客ニーズや市場変化にあわせて、柔軟に開発を進めていく手法です。

開発を始める段階では要件定義は大枠で決めるのみで、開発を進めながら方針を定めていきます。そのため、顧客の要求が変化しやすいプロジェクトや、スピーディーな開発が求められるプロジェクトに向いています。

顧客と開発チーム間でのコミュニケーションはもちろん、開発チーム内でのコミュニケーションも密にとる必要があるため、チームメンバーのコミュニケーション能力やモチベーションが高い場合は適用しやすく、逆に低い場合はかなり進めにくくなります。

一方ウォーターフォール開発は、まず初めに要件定義をしっかりと固め、それに従って各工程を1つずつ完了させていく手法です。

アジャイルと比較してプロジェクトの全体像を把握しやすいですが、途中での変更が難しいというデメリットがあります。

顧客と開発チーム間でのコミュニケーションは、主に上流工程で多くなり、下流工程になれば少なくなるのが一般的です。

各開発モデルのメリット・デメリット

ここまで紹介してきたような違いから、各開発手法では以下のようなメリット・デメリットがあります。以下に比較表を作成しましたので参考にしてみてください。

アジャイル メリット

  • 市場の変化に対応しやすい
  • 無駄な機能を開発するリスクが低い
  • 要求が変更になったときに応えやすい
デメリット

  • 全体像を把握しにくく、スケジュール管理が難しい
  • 開発費用の見通しがつきにくい
  • コミュニケーションが複雑化しやすい
ウォーターフォール メリット

  • 各工程で成果物ができるので進捗状況が明確
  • 計画的な開発なため品質の担保がしやすい
  • 工程が並行して行われることはないので、無駄な時間を使わない可能性が高い
デメリット

  • 各工程を漏れなく終わらせる必要があり、漏れがあった場合は時間をロスする可能性がある
  • 発注側は多くのドキュメントを理解する必要がある
  • 実際に動くものを触るまでは時間がかかる

それぞれ詳しく紹介します。

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

アジャイル開発では、機能単位で開発を進めていき、1つの開発期間はウォーターフォールモデルよりも短期間になります。そのため、市場の変化にも対応しやすく、要求変更があったときも柔軟に対応することができるというメリットがあります。結果として、無駄な機能を開発する可能性も低いのが特徴です。

一方で、全体像を把握しにくく、スケジュール管理や予算の見通しをすることが難しいというデメリットもあります。また、スプリントごとに目標を設定してレビューや調整をおこなうこととや、開発中に変更が起こることがあるため、ウォーターフォール開発よりもコミュニケーションコストが発生しやすいという点も注意が必要です。

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

ウォーターフォール手法では、要件定義のフェーズで完全に要件を把握し、それを基に設計・開発を行うため、要件に対してのバグは少なくなります。

一方で、変化に弱く、一度完了した工程に問題や漏れがあった場合は、前工程から再スタート・見直しをすることが提唱されています。

(前工程は戻れない、と勘違いされることが多いのですが、戻ることは可能です。いつからか戻ることはできないと理解されるようになってしまいました……)

また、発注者側は最初に多くのドキュメントを理解する必要があり、結構な労力が必要になるのもデメリットといえるでしょう。

さらに、アジャイル開発では機能ごとに開発を進めるため実際に動くものを早く見ることができるのですが、ウォーターフォールの場合は、プロトタイプの制作予定がない限り、実際に動くものを触るまでには時間がかかります。

どっちの開発手法を選ぶべき?アジャイルとウォーターフォールの使い分け

ここまで解説してきた通り、アジャイル開発はプロジェクト進めながら柔軟に仕様を変更していく開発手法で、ウォーターフォールは予め固めた要件仕様書をもとに各工程を一つずつ順番に進めていく開発手法です。

それぞれ向き不向きがあるため、ここでは各開発手法はどのように使い分けるべきなのか、改めて解説していきます。

ポイントは「仕様変更があるか」

結論、開発手法を決めるポイントは、仕様変更があるかどうかです。

ウォーターフォール開発は最初に要件仕様を明確にし、それをもとに開発を進めていきます。そのため、作りたいものが決まっており仕様変更の可能性がない場合に適した開発手法であると言えるでしょう。例えば、大規模なシステム開発や建設プロジェクトなど、作業が明確に定義されている場合、コーポレートサイトやメディアサイトなどの一般的なWebサイトの場合はウォーターフォール手法での開発が向いています。

ウォーターフォール開発が向いているプロジェクト
  • 要件が明確で変更がないプロジェクト(基幹システムのリプレース等)
  • リリース期限が明確に決まっている
  • 大規模なシステム開発や建設プロジェクトなど、作業が定義されている
  • コーポレートサイトやメディアサイトなどの一般的なサイト

一方、アジャイル開発は、最初に要件を固めず、ユーザーや顧客の反応を見ながら開発を進めていく手法です。そのため、仕様変更の可能性があるシステムやソフトウェアを開発する場合に適した開発手法と言えるでしょう。

例えば、作りたいもののイメージはあるがプロジェクトを進めながら固めていきたいケースや、優先度や作るものに変更の可能性があるケース、最初に一部の機能をリリースしてその後機能を拡張させていきたいなどの場合は、アジャイル手法での開発が向いています。

また、アジャイル開発はその特性上、プロジェクト開始時にスケジュールやコストの見通しがつきづらいです。そのため、リリース期限が明確に決まっているシステムや、予算が厳しいプロジェクトでは避けた方がよいでしょう。

アジャイル開発が向いているプロジェクト
  • つくりたいもののイメージはあるが、要件は不明瞭である
  • スケジュールや予算が厳しくないプロジェクトである
  • 比較的、小規模なプロジェクトである
  • 優先度やつくるものが変わる頻度の高いビジネスである
  • ユーザーの意見を反映させながら開発を進めたい
  • 会員機能やフルスクラッチ開発が必要になりそうなWebサービス

両開発手法を組み合わせた「ハイブリッド開発」とは

ウォーターフォール型とアジャイル型は相反するような開発手法のようにも思えますが、実は両者のメリットを取り入れた「ハイブリッド開発」というものがあります。

ハイブリッド開発では、要件定義と設計の段階ではウォーターフォール型のように段階的にプロジェクトを進めていき、その後の開発プロセスで、アジャイル型のようなスプリント単位での開発に切り替えます。開発プロセスでは小規模な開発チームで、各機能の開発〜テストまでを行うのが一般的です。

なお、スプリント間では、ウォーターフォール型の要素を取り入れて、チームが進捗管理や品質管理を行います。

ハイブリッド開発は、ウォーターフォール開発における変更への対応が難しいといったデメリットや、アジャイル開発における予算やスケジュールの不明確性といったデメリットを解消できるとして、多くの企業で採用されている開発手法です。

さいごに

ここまで、ウォーターフォール開発とアジャイル開発の特徴や違いについて解説しました。

開発手法は一種のフレームワークですが完全に踏襲する必要はあまりなく、実際は企業の性質や案件によって若干のカスタマイズを行うことの方が多いと思います。

また、ウォーターフォールモデルは叩かれがちという印象がありますが、これは市場の変化が大きいのだと思います。刻一刻と変化する市場に対してウォーターフォールモデルではなかなか対応しにくくなってきていることが批判を生む要因の1つだと感じます。

いまのご時世だと日々変わるビジネス要求に対して、素早く開発も応えていけるようにする必要があります。これが、アジャイル開発が注目されている理由です。

 

ただ、ウォーターフォールモデルが完全にダメかというとそれは違います。

ビジネス要求の反映が重要で、ユーザーの意見が重視されるWebサービスやエンタープライズ向けの開発には向いていないかもしれませんが、コーポレートサイトやメディアサイトのようなデザイン性が重視されるものであれば、実装を並行しておこなわずともProttなどのプロトタイプツールを使うことで、擬似的に動くものを早い段階で確認してもらうことができます。

そのためウォーターフォールモデルを採用することで、確実にプロジェクトを進めることができます。

「どちらのほうが優れているか」というよりも「何をつくりたいのか」や、「どのようにつくっていきたいか」で手法を選択していくことが重要です。

 

LIGなら

LIGでは、制作するサイトのタイプによって手法を変えています。これまでの実績では、タイプは大きく下記の2種に分かれます。

  • コーポレートサイトやメディアサイトなどの一般的なサイト
  • 会員機能やフルスクラッチ開発が必要になりそうなWebサービスとなるサイト

前者ではウォーターフォールモデルを採用することが多く、後者だとアジャイル開発手法を取り入れることもあります。

案件の比率的には、コーポレートサイト制作やメディアサイト制作が多いため、ウォーターフォールモデルでの開発が多い印象ですが、完全にウォーターフォールモデルを踏襲しているかというとそうではなく、クライアントの承認フローや要望・納期などにあわせて柔軟に対応しています。

開発を検討中でしたら、ぜひお気軽にご相談ください。
 
ご相談はこちらから

関連記事

この記事のシェア数

ディレクターのともぞうです。 趣味はサバゲー、ツーリングです!! 月一くらいで出撃しています┌◯

このメンバーの記事をもっと読む