1
/
5

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

新しいシステム構築や、アプリケーションの開発を行う場合、開発手法を決める必要があります。

開発手法を決めず、関係者が思い思いに作業を行ってしまうと、収拾がつかなくなってしまいます。

開発手法として有名なのは、ウォーターフォール開発とアジャイル開発です。

どちらも多く使われている手法ですが、実際に経験したことがないとよく分からないかもしれません。

本記事では、ウォーターフォール開発とアジャイル開発の概要、

それぞれの開発手法が向いているシステム開発について解説します。

出典:Unsplash https://unsplash.com/photos/ntZM993INp0

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

ウォーターフォール開発とアジャイル開発の大きな違いは、その開発プロセスの進め方にあります。

ウォーターフォール開発は上流工程から下流工程へ、各工程を後戻りしない前提で進めていく手法。

アジャイル開発は機能単位で小さな開発を繰り返していく手法です。

以前(2000年頃まで)のシステム開発は、何を作るかの全体像を決めて全体を設計してから開発するというウォーターフォール型の開発が主流でした。

しかし、時代に合わせて迅速に仕様変更を行うことが求められるようになり、アジャイル開発が普及していきました。

以下、具体的に見ていきましょう。

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

ウォーターフォールは、日本語で「滝」を意味します。

上流から下流へ「水が流れ落ちる」様に工程が進むことから、名前が付けられました。

ウォーターフォール開発では、以下の工程(手順)に沿って開発を進めます。

・要件定義…システムの要件(システムでいつまでに、何を実現したいのか)を確認する

・設計…要件定義をもとに、実装する機能や仕様を決める

・製造…設計をもとに、プログラミング言語を用いて開発する

・テスト…製造物にバグ等の問題がないかどうかをチェックする

・リリース…テストしたシステムを、アプリストアへ登録するなど、顧客が実際に使えるようリリースする

・運用・保守…リリースしたシステムについて、問い合わせやエラー対応を行う。また、顧客要望に応じて小規模な改修を行う。


要件定義から運用・保守まで、上から順番に実行します。

基本的には、上の工程が完了してから次の工程に進むため、途中で上の工程に戻らない仕組みとなっています。

各工程には、作成するドキュメントが決められており、先行工程で作成されたドキュメントが、後続工程のインプットとして利用されます。

例えば、設計工程で作成された設計書(仕様書)をもとに、製造工程で実際にプログラムを組む、というイメージです。

アジャイル開発とは

アジャイルは、日本語で「素早い」を意味します。

開発に時間がかかるウォーターフォール開発と比べて、素早く開発することを目的としていることから、名前が付けられたと言われています。

アジャイル開発では、ウォーターフォール開発でも登場した開発工程を、小さな機能単位に分割し、短い期間で繰り返し行います。この繰り返しのことを「イテレーション(反復)」と呼びます。

そのため、基本的にウォーターフォール開発の工程と同じことを行いますが、短い期間で実施することもあり、アジャイル開発特有の用語がありますので、以下にご紹介します。

・スクラム…アジャイル開発の主流な方法。

全工程の関係者が一体となってシステム開発を行う方法です。ラグビーのスクラムが語源と言われています。

・ユーザーストーリー…プロジェクトの最終目標。

ウォーターフォール開発の要件定義に近いですが、顧客向けに一般的な言葉で説明されるもの、とされています。

・リリース計画…いつまでに、どの機能をリリースするかというプロジェクト全体を管理する計画。

・イテレーション…一連の工程を短期間で繰り返すこと。

・スプリント…1つのイテレーション内で行う開発工程のこと。

また、イテレーションごとに、どの機能を実現させるかという計画を「スプリント計画」と呼びます。

最終的な目標として1つのシステムを構築することについては、ウォーターフォール開発と変わりません。

しかし、ウォーターフォール開発はすべての機能が実装されて始めてリリースされるのに対し、アジャイル開発では機能ごとにリリースする、ということが大きな違いです。

出典:Unsplash https://unsplash.com/photos/tfNyTfJpKvc

ウォーターフォール開発、アジャイル開発の向いているシステム開発とは

ウォーターフォール開発、アジャイル開発ともに、現在も使われている開発手法です。

理由はそれぞれ向き、不向きがあるからです。

それぞれに向いている開発パターンを説明します。

ウォーターフォール開発が向いている開発

ウォーターフォール開発は、大規模・大人数でシステム開発を行う場合に向いています。

大規模・大人数で開発を行う場合、関係者の合意をとるには時間がかかります。

そのため各工程を厳密に区切りその都度問題がないか確認する、というやり方の方が合っています。

また、工程で区切ることで関係者の割り当てがしやすいというメリットがあります。

例えば、開発にあたりプログラマーを雇う場合。

作業がない設計工程を除外し、製造工程やテスト工程のみ入ってもらうといったことができます。

大規模開発では、保有スキルがバラバラな関係者をコントロールする必要があるため、ウォーターフォール開発の方が向いているといえるでしょう。

アジャイル開発が向いている開発

一方でアジャイル開発は、小規模・少人数でシステム開発を行う場合に向いています。

もともと、アジャイル開発が生まれた背景として、ウォーターフォール開発が顧客の要望に対して柔軟に対応できない、すべての機能が完成するまで中身を確認できない、という問題点がありました。

アジャイル開発では、要件から重要な機能を優先してリリースし、顧客に使ってもらい、要望をフィードバックする、といった柔軟な対応が可能です。


foriioでは、アジャイル開発(スクラム開発)を採用し、開発を行なっています。

これまで、アジャイル開発で業務に取り組んだことがない方も

アジャイル開発での業務が得意な方も、様々な経験をされてきた

エンジニアを募集しています。ぜひ一度ご応募ください。

より使いやすいポートフォリオサービスを提供し続けるためにも、

活躍してくださるエンジニアさんを募集しています!

ご応募をお待ちしております。

株式会社foriio's job postings

Weekly ranking

Show other rankings