WEB & SYSTEMS

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

ウォーターフォール開発は最初に全体を決めて順番に作る進め方、アジャイル開発は小さく作って確かめることをくり返す進め方です。違いを表で比べ、どちらが向くかの目安と、組み合わせる形を、はじめての方向けに説明します。

この記事の要点

  • ウォーターフォール開発は、要件定義・設計・開発・テストを順番に進め、前の工程に戻らないことを前提にします
  • アジャイル開発は、短い期間で作って確かめることをくり返し、優先順位を見直しながら進めます
  • 決まっている部分と決まっていない部分を分けて、2つを組み合わせる形もあります

システム開発の進め方には、大きく分けて「ウォーターフォール開発」と「アジャイル開発」があります。最初に全体を決めて順番に作るのがウォーターフォール開発、小さく作って確かめることをくり返すのがアジャイル開発です。

どちらが優れているというものではなく、作るものがどこまで決まっているかで向き不向きが分かれます。はじめての方に向けて、2つの違いと選び方を説明します。

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

ウォーターフォール開発とは、要件定義・設計・開発・テスト・リリースの工程を、上から下へ順番に進める開発の進め方です。滝(ウォーターフォール)の水が上から下へ流れ、逆には戻らない様子から、こう呼ばれます。

各工程の終わりに、決めたことや作ったものを確かめてから、次の工程に進みます。最初に全体を決めるため、費用・期間・体制の見通しを立てやすいのが利点です。

気をつけたいのは、途中の変更に手間がかかる点です。テストの段階で「この画面は使いにくい」と気づいても、設計まで戻って直す必要があります。動くものを実際に触れるのが終わりに近い時期になるため、思い違いに気づくのも遅くなりがちです。

ウォーターフォール開発の工程の進み方

要件定義最初に全体を決めます
設計
開発
テスト使いにくいと気づいても、設計まで戻って直す必要があります
リリース

各工程の終わりに確かめてから、次の工程に進みます。動くものを触れるのが終わりに近い時期になるため、思い違いに気づくのも遅くなりがちです

アジャイル開発とは

アジャイル開発とは、作るものを小さな単位に分け、短い期間で「作って確かめる」をくり返しながら進める開発の進め方です。アジャイルは、英語で「すばやい」「身軽な」という意味です。

数週間ほどの短い期間(スプリントと呼ばれます)ごとに、優先順位の高いものから作り、動く形にして確かめます。確かめた結果を見て、次の期間に何を作るかを決め直します。アジャイル開発の代表的なやり方にスクラムがあります。

早い時期から動くものを触れるため、使い勝手の問題に早く気づき、変更も次の期間で取り込みやすくなります。一方で、発注する側も期間を通して打ち合わせと判断に関わり続ける必要があり、最初の時点では、全体の費用や終わる時期を細かく決めにくい面があります。

違いを表で比べる

大きな違いは、「中身をいつ決めるか」と「動くものをいつ見られるか」です。

比べる点ウォーターフォール開発アジャイル開発
進め方工程を順番に、1回で進める小さな単位で、作って確かめるをくり返す
中身を決める時期最初にまとめて作りながら少しずつ
途中の変更前の工程に戻るため、手間が大きい次の期間で取り込みやすい
動くものを見られる時期終わりに近い時期早い時期から少しずつ
発注する側の関わり最初の要件定義と、最後の確認に多い期間を通して続く
費用と期間の見通し最初に立てやすい範囲を調整しながら決めていく

どちらが向くか

作るものがはっきり決まっているならウォーターフォール開発、作りながら決めたいならアジャイル開発が向いています。

ウォーターフォール開発が向く場面

  • 制度の変更への対応など、作るものがはっきり決まっている
  • ほかのシステムや取引先と、使い始める日を合わせる必要がある
  • 社内の承認のために、最初に全体の費用と期間を決めておきたい

アジャイル開発が向く場面

  • 新しいサービスなど、使う人の反応を見ながら中身を決めたい
  • AIを使う仕組みなど、実際のデータで試さないと結果が分からない
  • 使い始めた後も、改善や機能の追加を続けたい

アジャイル開発を選ぶ場合は、社内に、優先順位を決められる担当者を置けるかを先に考えておきます。判断する人がいないと、作りながら決める進め方がうまく回りません。

反対に、ウォーターフォール開発を選ぶ場合は、最初の要件定義に十分な時間をかけます。後から変えにくい進め方なので、現場で使う人に早い段階で話を聞き、画面の試作などで思い違いがないかを確かめておくと安心です。どちらの進め方でも、できあがったものを確かめる人と、その方法は、始める前に決めておきます。

組み合わせる形もある

実際の開発では、2つを組み合わせることもよくあります。決まっている部分と決まっていない部分を分けて、進め方を変える考え方です。

たとえば、最初に要件定義で全体の方向と大きな決まりごとを固め、作る部分は短い期間をくり返して進める形があります。会計とつながる部分のように変えにくいところは計画どおりに作り、画面やAIの部分は試しながら作る、という分け方もあります。

変えにくい部分と、試しながら作る部分を分ける

  • 変えにくい部分会計とつながる部分などは、計画どおりに作ります
  • 画面やAIの部分試しながら作ります

最初に要件定義で全体の方向と大きな決まりごとを固め、作る部分は短い期間をくり返して進める形もあります

契約の形との関係

開発の進め方によって、合う契約の形も変わります。最初に全体を決めるウォーターフォール開発では、完成に対してお金を払う請負契約が使われることが多く、作りながら決めるアジャイル開発では、作業に対してお金を払う準委任契約が使われることが多くあります。

契約の形の違いや、契約のときの注意は、システム開発の請負契約と準委任契約は、何が違うかで詳しく説明しています。最初にどこまで決めておくかの考え方は、要件定義で決めること:はじめての方へもあわせてご覧ください。

当社のご支援

当社のソリューション提供では、まず小さな範囲で試作し、実際のデータで使えるかを確かめてから本開発に進みます。現場に入るFDEでは、技術者がお客様の現場に入り、要件を決めながら試作と改善を短い間隔でくり返します。進め方のご相談はお問い合わせからどうぞ。

  • アジャイル開発
  • ウォーターフォール開発
  • 開発の進め方

この記事に出てくる用語

この記事を書いた人

桐谷 彰人 取締役COO

システムエンジニアとして、ビジネスモデルの策定から要件定義、開発、コードレビューまでを担当してきました。運送管理、飲食業向けのDX、ECサイトなど、さまざまな業界のシステム開発に携わっています。

このコラムは一般的な情報の提供を目的としたもので、個別の状況への助言ではありません。製品・サービスの名前と内容は、記事の更新日の時点のものです。

あわせて読みたい

Webとシステム開発のコラムを見る コラムの一覧に戻る