こんにちは、Webディレクターのともぞうです。
突然ですが、皆さんは「ウォーターフォールモデル」や「アジャイル開発」といった言葉をご存知ですか。
これらはシステム開発における有名な手法です。名前は聞いたことがあるが実際にどういったものかはわからない、という方もいらっしゃるのではないでしょうか。
そこで今回は、この二大開発手法についてまとめたものを記事にしました。ぜひ、この記事を参考にして、発注する側も、制作する側も知識を深めてもらえればと思います。
ウォーターフォールモデル
上流工程から下流工程へ順次移行していく開発手法で、水が下に落ちていく様を模した名前となっています。
プロジェクトや担当範囲によって異なる場合がありますが、工程は下記の6つに分けられます。
- 工程
-
- 要求定義
- 外部設計(概要設計)
- 内部設計(詳細設計)
- 開発(プログラミング)
- テスト
- 運用
各工程を順番に完了していくのがウォーターフォールモデルの特徴です。
例えばTOPデザインにOKが出てから実装へ進む、という流れがわかりやすいと思います。OKが出る前に実装を進めることはしません。
このモデルは、変化に弱く、一度完了した工程には戻れない、と勘違いされることが多いのですが、問題や漏れがあった場合は、前工程から再スタート・見直しをすることが提唱されています。
いつからか戻ることはできないと理解されるようになってしまいました……
メリット
- つくるものが明確
- 各工程で成果物ができるので進捗状況が明確
- 計画的な開発なため品質の担保がしやすい
- 工程が並行して行われることはないので、無駄な時間を使わない可能性が高い
デメリット
- 各工程を漏れなく終わらせる必要があり、漏れがあった場合は時間をロスする可能性がある
- 多くのドキュメントをつくる必要があり、発注側はそれを理解する必要がある
- 実際に動くものを触るまでは時間がかかる(要求定義でプロトタイプを制作するのであれば別)
向いている案件
スケジュール管理がしやすいことから、大規模なシステム開発に向いているとよくいわれます。また、制作したいものがある程度決まっているものは向いていると思います。
ちなみによくウォーターフォールモデルはWFと略されることがあります。WFはワイヤーフレームの略語でもよく使われるので、注意が必要です。略語って難しいですね……
アジャイル開発
「Agile」は日本語で「素早い」や「敏捷」という意味です。つまりアジャイル開発とは、素早い開発ということです。
その言葉のとおり、アジャイル開発ではイテレーションと呼ばれれる1〜4週間程度の期間内で一つの機能を開発・リリースしていきます。イテレーションの期間は開発チームによって設定が変わります。
イメージとしては1つの機能に対してイテレーション期間内にウォーターフォールモデルであげた各工程を実施していく感じです。
メリット
- 動くものを早い段階で触ることができる
- 要求が変更になったときに応えやすい(柔軟性が高い)
- 無駄な機能を開発するリスクが低い
デメリット
- 全体像を把握しにくく、スケジュール管理が難しい
- 各月での成果物が不明瞭
- アジャイル開発に精通している人が必要
向いている案件
つくりたいもののイメージはあるが、要件まで落としきれていないときにこの手法は役立ちます。また、優先度やつくるものが変わる頻度の高いビジネスにも向いています。
LIGがよく用いる開発手法
制作するサイトのタイプによって変えることが多いです。
タイプは大きく下記の2種に分かれます。
- コーポレートサイトやメディアサイトなどの一般的なサイト
- 会員機能やフルスクラッチ開発が必要になりそうなWebサービスとなるサイト
前者ではウォーターフォールモデルを採用することが多く、後者だとアジャイル開発っぽい手法を取り入れることもあります。
案件の比率的には、コーポレートサイト制作やメディアサイト制作が多いため、ウォーターフォールモデルでの開発が多い印象ですが、完全にウォーターフォールモデルを踏襲しているかというとそうではなく、クライアントの承認フローや要望・納期などにあわせて柔軟に対応しています。
さいごに
開発手法は一種のフレームワークですが完全に踏襲する必要はあまりなく、実際は企業の性質や案件によって若干のカスタマイズを行うことの方が多いと思います。
また、ウォーターフォールモデルは叩かれがちという印象がありますが、これは市場の変化が大きいのだと思います。刻一刻と変化する市場に対してウォーターフォールモデルではなかなか対応しにくくなってきていることが批判を生む要因の1つだと感じます。
いまのご時世だと日々変わるビジネス要求に対して、素早く開発も応えていけるようにする必要があります。そのため、アジャイル開発が注目されているのだと思います。
ただ、ウォーターフォールモデルが完全にダメかというとそれは違うと考えています。
ビジネス要求の反映が重要で、ユーザーの意見が重視されるWebサービスやエンタープライズ向けの開発には向いていないかもしれませんが、コーポレートサイトやメディアサイトのようなデザイン性が重視されるものであれば、実装を並行しておこなわずともProttなどのプロトタイプツールを使うことで、擬似的に動くものを早い段階で確認してもらうことができます。
そのためウォーターフォールモデルを採用することで、確実にプロジェクトを進めることができます。
「どちらのほうが優れているか」というよりも「何をつくりたいのか」や、「どのようにつくっていきたいか」で手法を選択していくことが重要です。