【やさしく学べるWeb制作】 ウォーターフォールとアジャイルの違いってなに?
高橋 雪
何かと難しいWeb制作やシステム開発の用語。
このシリーズでは、なるべくわかりやすい説明を目指しています!
Webサイトやシステムを作るときの方法として、「ウォーターフォール」という方法があります。
しかし、最近はAIやビッグデータなど新しい技術を使ったシステムが増えていて、
「アジャイル」という方法もよく使われるようになってきました。
今回は、「ウォーターフォール」と「アジャイル」の違いや、
アジャイルを使うときにどんな場面で使うといいか、気をつけることなどをお話しします。
ウォーターフォール型とは
ウォーターフォール型は、システムを作るときに昔からよく使われてきた方法です。
「ウォーターフォール」は英語で「滝」という意味で、
その名前のとおり、滝の水が上から下に流れるように、順番に作業を進めていきます。
途中で戻らない、一度だけ完成品を渡すという特長があります。
▼ウォーターフォール型の簡単な特長と流れ
ステップ | 用語 | 説明 | 主な作業 |
---|---|---|---|
1 | 企画 | 課題解決のためのアイデアを考える | 企画資料作成 |
2 | 要件定義 | どんなシステムを作るか決める | ・プロジェクト計画 ・要件定義書作成 ・サイトマップ作成 ・そのほか資料 |
3 | 外部設計 | ・どんな画面になるかをデザインを作る ・どうしたら使いやすくなるかを考える ・どのように操作するかを考える ・システム間でのデータの流れや、どのデータを送受信するかを定義する | ・ワイヤーフレーム作成 ・モックアップ作成 ・UX設計 ・UI設計 ・外部インターフェース設計 |
4 | 内部設計 | ・どうやって動くか考える ・どんなデータを使うかを考える ・どうやって計算するかを考える | ・データベース設計 ・クラス図作成 ・シーケンス図作成 |
5 | 開発 | 設計した内容にあわせて、プログラムを書く | コーディング |
6 | テスト | プログラムが正しく動くか確認する | テストの実施 |
7 | 受け入れテスト | お客様がソフトウェアを確認する | お客様によるテスト実施 |
8 | 納品 | ソフトウェアをお客様に引き渡す | |
9 | リリース | ソフトウェアを公開する | ・デプロイメント ・公開作業 |
10 | 運用保守 | システムが適切に運用されるように管理する。 運用とサポートを行う。 |
アジャイル型とは
アジャイル(Agile)という言葉は、英語で「すばやく」という意味です。
「お客様が満足することを一番に考え、価値のあるソフトウェアを、早く継続的に提供すること」を目的にしています。
その他にも12個のルールがありますが、ここでは割愛します。
具体的な方法としては、短い時間(数週間から数か月)で「計画を立てる」「作る」「テストする」「直す」を何度も繰り返して、少しずつシステムを作り上げます。
アジャイルには、スクラムやXPといったやり方がありますが、厳しいルールはありません。
とはいえ、アジャイルと言うと、スクラムを指すことが多いです。
1. スクラムとは
スクラムは、チームのみんなで協力して少しずつゴールに近づく、アジャイル開発方法の一つです。
「スクラム」という言葉は、もともとはラグビー用語です。
試合中、選手たちがボールを取り合うために集まって押し合うことを「スクラム」と言います。
この時、みんなが力を合わせることが大切で、それによってチームが強くなったり弱くなったりすると言われています。
▼スクラムの簡単な特長と流れ
1~6までの流れを「スプリント( 短距離を全力で力走・力泳すること)」と呼びます。
アジャイル開発でも、ウォーターフォール型と同じく、ある程度要件定義を行います。
立上げ段階:
・プロジェクト全体の目的や目標、大まかな全体像を決める
・各スプリントの大まかな作業リストも用意する
・初期の技術調査、主要なリスクの洗い出し、必要に応じた技術的な検証も行う
・小さなチーム(10人以下)を作る
スプリント1回目以降:
・そのスプリントで作るものを具体的に決める(そのスプリントの機能の要件定義、設計)
・そのスプリントで達成したいユーザーの希望(ユーザーストーリー)を具体化し、優先順位を決める
・そのスプリントの対象のものを作る
・そのスプリントでできたものをレビュー(見直し)し、次のスプリントを調整する
▼スプリント1回目以降の流れ
ステップ | やること | 用語 | 説明 |
---|---|---|---|
1 | チームで計画を立てる | スプリントプランニング | ・メンバーの要望をまとめたり、システムを利用するユーザーの希望を具体化する(ユーザーストーリー) ・2~4週間の間で何を作るか決める ・優先順位を考えて、実現可能な機能を選ぶ ・作業にかかる時間を考える |
2 | やることリストを作る | プロダクトバックログ | ・作りたいものや機能など、やることのリストを作る ※リストは常に、更新・見直しをする |
3 | 作る | 実装、開発 | ・計画に沿って、2~4週間で少しずつ作る |
4 | 毎日ちょっとだけ話し合う | デイリースクラム | ・毎日15分くらい話し合う ・確認する ・「昨日何をやったか」 ・「今日は何をやるか」 ・「困っていることはあるか」 |
5 | 作ったものを見せ合う | スプリントレビュー | ・作ったものをみんなで確認する ・フィードバックをもらう |
6 | 振り返りをする | スプリントレトロスペクティブ | ・できたものをみんなで確認する ・「うまくいったこと」「もっとよくするために何ができるか」をみんなで話し合う |
小さな目標を設定してみんなで協力しながらコツコツ進めるという方法で、特にチームワークや効率が重視されています。
2. XP(エクストリームプログラミング)とは
XPは、お客様とのコミュニケーションを大切にして、すばやく良いものを作るための方法です。
1サイクルを1~2週間で行い(イテレーション)、テストファーストの思想や、ペアプログラミングを行うのが特長です。ここでは説明を割愛します。
3. スクラムとXPの違い
スクラムとXPは、どちらも小さなチームで短い時間でシステムを開発する方法ですが、目的が少し違います。
・スクラムは、チームがうまく働けるようにすることに力を入れている。みんなで協力して、効率よく仕事を進めることが大切。
・XP(エクストリームプログラミング)は、作るものの質を良くすることや、お客様とのコミュニケーションを大事にしている。お客さんが本当に満足できるものを作るために、よく話し合うことが重要。
どちらの方法が良いかは、プロジェクトの内容によって変わるので、必要に応じて使い分けると良いです。
ウォーターフォール型とアジャイル型の違い
さて、ウォーターフォール型とアジャイル型の違いを何となく理解できたでしょうか?
ウォーターフォール型とアジャイル型の違いを以下の表にまとめました:
項目 | ウォーターフォール型 | アジャイル型 |
---|---|---|
導入背景 | 確実にできそうなことをしっかりとやりたい場合 | うまくいくかわからないけど、試しながら進めたい場合 |
主な目的 | 納期、品質、予算の達成 | チームの生産性、効率化、スピード感 |
開発プロセス | 長い期間で開発サイクルを1度行う | 短い期間で開発サイクルを繰り返す |
変更への対応 | 途中での変更が難しい | 柔軟に対応できる |
お客様との関わり | 最終納品まで関わりが少ない | 頻繁にコミュニケーションを取る |
ドキュメント | 開発前に全てドキュメント化 | 必要最低限のドキュメント |
リリースの頻度 | 全機能を完成させてリリース | 小さな機能ごとにリリース |
チーム構成 | 専門家が分業 | チーム全員が複数の作業を担当 |
チームに必要なスキル | 専門スキル | 多機能なスキル |
主な開発メンバー | ・プロジェクトオーナー ・プロジェクトマネージャー ・UI/UXデザイナー ・フロントエンドエンジニア ・バックエンドエンジニア ・データベースエンジニア ・QAエンジニア | ・プロジェクトオーナー ・スクラムマスター(チーム進行管理) ・複数⼈の開発者 ・フルスタックエンジニア(フロントとバック両方担当) ・DevOpsエンジニア(インフラと開発の橋渡し) ・UI/UXデザイナー ・QAエンジニア(テスト担当) |
テスト | 最後に一括して行われる | スプリントごとにテストを行う |
向いているプロジェクト | 大規模で変更が少ないプロジェクト ・業務システムの開発 ・建設プロジェクト ・医療システム | 小規模で変更の多いプロジェクト ・新しいウェブサービス(MVP)の立ち上げ ・モバイルアプリの機能追加 ・スタートアップ向けのプロダクト開発 ・変化の激しいインターネット関連サービス |
主な契約形態 | 業務委託 ※ただし、要件定義時は準委任契約であることが多い | 準委任契約 |
ウォーターフォール型は、計画を厳密に管理したい場合や、大規模なプロジェクトに向いているのに対し、アジャイル型は、変化が予想されるプロジェクトや、早期リリース・フィードバックを重視する開発に適しています。
アジャイル開発のよくある誤解
アジャイル開発は、すぐに変更できたり、スピードが速いため、便利な方法に見えます。
また短期間で開発ができるため、ウォーターフォール型よりも安く済むと思われがちです。
ですが、アジャイル開発をするには、色々な専門スキルを持っていて、自分からどんどん進められるプロのチームが必要です。
アジャイル開発にかかるお金
たとえば、アジャイル開発で活躍するエンジニアの相場は次の通りです。
・ミドルレベル(経験が3~5年) 約80~120万円/人月
・シニアレベル(経験5年以上) 約120~160万円/人月
・エキスパートレベル(それ以上、特別なスキルあり) 約160万円以上/人月
もし「安くていいや」と思って、アジャイル開発をあまり理解していない人材や、必要なスキルがない人をチームに入れてしまうと、コミュニケーションコストが膨らみ、スムーズに作業を進められなくなり、アジャイル開発の良さが出せなくなります。
アジャイル開発の契約形態
また、アジャイル開発は準委任契約になる場合が多いです。
そのため、「最後まで作る」という責任を負いません。(「完成責任」と言います)
そのため、当初の想定から大幅に計画がずれたり、お客様の要求が後から増えすぎたりすると、いつまでもプロダクト(製品)が完成しないこともあり、チームのみんなが疲れてしまい、うまく機能しなくなることがあります。
ハイブリット型の開発手法は可能なのか?
やることは可能ですが、あまり意味がないとする見解が多いです。
例えば初めはウォーターフォール型で要件定義や設計を行い、その後の実装段階でアジャイルに移行して変更もOKとするのであれば、そもそも要件定義をしっかりする意味が薄い為です。
まとめ
アジャイル型は、まずは動くソフトを作って、それを少しずつ改良していくことで、良いものにしていく手法です。最初から完璧なものを作るのが目的ではありません。
ウォーターフォール型は、確実にできそうなものを、しっかりと実現するための手法です。
参考情報:
スプリントプランニングとは?スクラムにおける役割や手順を解説
イテレーションとは?スプリントとの違いや開発プロセスを解説!
弊社では、これまでの経験をもとに、クライアントのニーズに応じた最適なシステムをご提案しています。
カスタムオーダーシミュレーターの導入をお考えの際は、ぜひご相談ください。
▼ユニフォームに特化したカスタムオーダーシミュレーター
カスタムオーダーシミュレーター「MyCOS(マイコス)」
▼アイテムやグッズに特化したカスタムオーダーシミュレーター
カスタムオーダーシミュレーター「MyCOS GOODS(マイコスグッズ)」
▼3Dモデルを利用したカスタムオーダーシミュレーター
3Dシミュレーターシステム「MyCOS 3D(マイコススリーディー)」