かんたんで複雑な、ウェブサービスの作り方を紐解くブログ

ウォーターフォールとアジャイルどちらを選ぶべきか?

Management
2021/08/03

ウェブサービスを作成する時にプロジェクトを進める方法として、大きく「ウォーターフォール」と「アジャイル」の2つの方法があります。 https://www.seguetech.com/waterfall-vs-agile-methodology/ https://www.trustradius.com/buyer-blog/difference-between-agile-vs-waterfall もともとはウォーターフォールが主流でしたが、現在では求められるスピードが上がってきたことなどから、アジャイルのアプローチを採用する会社も増えてきています。 今回の記事では「ウォーターフォール」と「アジャイル」のどちらを採用すべきか、そのメリット・デメリットをまとめていきます。

ウォーターフォールの特徴とメリット・デメリット

まずウォーターフォールの特徴としては「いくつかのフェーズに分割し、直線的にプロジェクトが進行していく」ことが大きな特徴となります。 具体的なフェーズとしては、以下などがあります。 ■要件定義フェーズ ■設計フェーズ ■実装フェーズ ■テストフェーズ 基本的には、前のフェーズが完了するタイミングでカスタマーにより承認が行われ、次のフェーズに進んでいきます。 では、このウォーターフォールにおけるメリット・デメリットはどのようなものでしょうか。 【メリット】 ■プロジェクト初期で、最終的な成果物の全容を定義できる ■プロジェクトスコープが明確に定義される ■プロジェクト全体における進捗度合いが明示される ■それぞれのメンバーが必要なフェーズに集中し、その他フェーズでは他のプロジェクトに関われる ■ソフトウェアの全体像・整合性を見据えた上で構築できる ■それぞれのフェーズで結論がドキュメント化され、全体で合意できる 【デメリット】 ■カスタマーがプロジェクト初期段階の要件定義書だけでは、どのようなソフトウェアが出来上がるか判断できない ■初期の要件定義でソフトウェアの大枠が決まってしまうため、変更を加えることが難しい ■要件定義・設計完了後の実装段階ではカスタマーは深くプロジェクトに関われず、最終成果物に納得できないことが発生する このように、基本的にはプロジェクトの初期段階で全体像を確定できることにより、最終的なスケジュール・コストを算出しやすい反面、一度決めた後の柔軟な変更が難しいというデメリットがあります。

アジャイルの特徴とメリット・デメリット

次にアジャイルの特徴としては「スプリント」と呼ばれる一定期間(例えば1週間など)に区切り、その期間の中で「優先順位の高い機能」から順番に開発を行っていくプロジェクトの進め方です。スプリント完了後にカスタマー・プロジェクトチーム全体でレビューを行い、次のスプリントを繰り返し行っていきます。 近年アジャイルを採用する会社も増え、少しずつウェブサービスを作成する現場でも利用することが増えてきました。このアジャイルに関してもメリット・デメリットをまとめてみます。 【メリット】 ■カスタマーは早い段階で完成した成果物を見て方向性を確認し、必要に応じて修正などができる ■スピード感を持って、ミニマムのプロダクトを公開できる ■当初の計画から変更が発生しても、素早く対処できる ■必要以上にドキュメント作成に時間を必要としない ■ユーザーフレンドリーのプロダクトを作りやすい ■プロダクトの全体像が確定していなくてもスタートできる 【デメリット】 ■プロジェクト全体のタイムラインを明確に定義することが難しい ■一度のスプリントでは開発が完了しないことが多々ある。結果としてコストや期間が変動する ■各メンバーがプロジェクトに常に専念できる状況が必要 ■スプリントで少しずつ作成を行っていくことにより、リファクタリングが必要になる このように、常に少しずつ開発を行っていくことにより、スピード感を持ちつつ変化に強く、またユーザーフレンドリーなプロダクトを作りやすい反面、全体のスケジュールやコストを予め算出しづらいというデメリットが発生します。

最後に感想として

では、ウォーターフォールとアジャイル、結局どちらの手法を選ぶべきなのでしょうか。こればかりは、明確に定義することが難しいというのが正直なところです。 ただ一つの基準となるのは「プロジェクトに関わる人数」かと思っています。人数が多いほど、さまざまな意見が行き来し、またプロジェクトやプロダクトの方向性が完全に変わってしまうリスクが高まります。 そのため、ウォーターフォールを採用し、各フェーズで承認を行うことで大枠の方向性・スケジュール・コストなどを合意し、計画に沿って進めていく必要性が大きくなります。 反対に、少人数で素早く進めたい場合には、アジャイルが最適になります。スピード感が早く、かつ適宜変更を加えながらプロジェクトを進められることにより、結果としてより良いプロダクトを生み出しやすくなります。 所属する組織や関与者にも関連するプロジェクトの進め方、いかがでしょうか。読んでくださった方、ありがとうございます。