このブログでは、プロジェクトの開発手法(ウォーターフォール、アジャイル、MVP)について詳しく解説します。各手法の特徴、メリット、デメリット、向いているプロジェクトの種類について学んでいきましょう。
ご挨拶
皆さん、こんにちは!龍です。長らくブログの更新を休んでいましたが、今回は久しぶりに執筆をしています。YouTubeへの出演など、ブログ以外の活動も行っていますが、常に学び続けて良いブログを書くための知識を深めています。
今回は『プロジェクトの開発手法』について解説します。X(旧:Twitter)などで話題になることもありますね。業務を通じて得たプロジェクト進行に関する体験をもとに、所感を交えながら執筆していきます。こちらの解説をベースに「DevOps」の解説を進めていきます。DevOpsの記事はこちらです。
プロジェクトの進め方
開発手法をまとめてみます。具体的には「ウォーターフォール」「アジャイル開発」「MVP開発」について説明します。
ウォーターフォール開発
ウォーターフォール開発は、「要件定義」から「リリース」まで上流から下流まで順番に進めていく手法です。一つ一つのステップが終了するごとに次の工程に進むため、要件定義や設計が進まなければアプリケーション開発に入ることができません。各フェーズに対する理解が深まるため、各ステップの重要性が際立ちます。
メリット
- 各フェーズごとに分担して開発
- スケジュールの管理がしやすい
理想的な状態(バグもなければ、仕様変更もない)では、スケジュールの管理がしやすいプロジェクト手法です。
デメリット
- 仕様変更が発生した場合の影響が大きい
- すべての要件を考慮する必要がある
上流から下流までのすべてのステップがつながっているため、一つのステップが遅れることで「手戻り」としてスケジュールに影響します。仕様変更や要件漏れが発生するたびに影響が大きくなります。
向いているプロジェクト
ウォーターフォール向きなプロジェクトは、比較的要件が定まっているシステムです。
アジャイル開発
アジャイル開発は、「設計」から「リリース」までを1サイクルとして、短いスパンで繰り返すことで機能を開発する手法です。実装したい機能を細分化してサイクルに当てはめていきます。要件定義はサイクルごとに行い、サイクルの終了ごとにリリースが行われるため、頻繁なリリースが発生します。最終的なゴール(製品)に向かってマイルストーン(小さな機能)を設定しながら進む開発手法です。
メリット
- 仕様変更に柔軟に対応できる
- リリースの頻度が高く、高い開発スピード
機能ごとに「要件定義」を実施するため、柔軟に仕様変更に対応できます。それすなわち、フィードバックを取り込みやすくなるということでもあります。
デメリット
- メンバー全員に設計からテストのスキルが必要
- スケジュール管理が難しい
スケジュール管理が複雑になる点です。僕が知っている手法では、1サイクルを2週間と設定してアジャイル開発を行っていました。1サイクルの中で対応する機能を適切に分割する必要があります。適切に分割されていない場合、サイクル内に対応できなかったり、予定よりも多い時間を投入したりといった事態が発生します。アジャイル開発を実施するには、アジャイル開発の手法に対する知識が必要です。
向いているプロジェクト
アジャイル向きなプロジェクトは、機能を細分化して実装できるシステムです。比較的に仕様の決定権がチームと近い位置にあるプロジェクト、自社サービスなどが向いています。
MVP(Minimum Viable Product)
MVPは「アジャイル」と混同されがちな開発手法です。実際に僕も勘違いしていました。
MVPは、リリースごとに目的をはっきりとさせて実装していく手法です。「アジャイル」や「ウォーターフォール」では機能のリリースに注目しますが、「MVP」ではリリース後のフィードバックを取り込んでプロジェクトを成長させることに注目しています。
以下のようなイメージで進めます。
Ver | 目的 | 成果物 |
---|---|---|
1 | 甘いもの | クッキー |
2 | 柔らかい甘いもの | 薄いパンケーキ |
3 | 柔らかく、ホイップクリームがのっている甘いもの | ベルベットケーキ |
4 | 柔らかく、ホイップクリームと果物がのっている甘いもの | 豪華なパンケーキ |
最初に「甘いもの」の最小限の要望で「クッキー」を作りました。その後、フィードバックを受けながら最終的に「豪華なパンケーキ」にたどりつきました。フィードバックを取り込みながら開発を進めるのが「MVP開発」の最大の特徴です。
メリット
- フィードバックを開発に取り込みやすい
- リリースの頻度が高く、高い開発スピード
デメリット
- フィードバックの分析や解析の知識が必要
- スケジュール管理が難しい
大規模な開発には適応が難しい点が挙げられます。
プロジェクトの目的が明確に決まっていない場合、フィードバックの選択によって当初想定していたプロジェクトとは異なるプロジェクトになる可能性があります。
向いているプロジェクト
フィードバックをもとに取り込むため、比較的小さなプロジェクトや仕様が決まっていない(プロトタイプ)開発に適しています。
実際に「MVP開発」に取り組んで学んだ観点ですが、プロジェクトの目的を忘れてはなりません。「フィードバック」が大きな要素となります。どのフィードバックを機能として盛り込むのかは、プロジェクトの目的と照らし合わせながら判断する必要があります。目的がぶれると、作成段階でまったく異なるアプリケーションになる可能性があります。
比較
どの開発手法が良いかはプロジェクトごとに判断する必要があります。ここでは、メリットとデメリットを列
挙し、所感を交えながらどのようなプロジェクトに向いているかを述べます。
どの開発手法を採用するにしても、要件定義はしっかりとする必要があります。「ウォーターフォール」と比較して、他の二つでは高頻度なリリースが想定されます。高頻度なリリースが発生する開発手法では、GitHubを活用したCI/CD環境の構築などが必要です。
おわり
今回の記事をまとめましょう。今回はプロジェクトの開発手法について詳しく見てきました。それぞれの手法には特徴、メリット、デメリットがあり、また、特定の種類のプロジェクトに向いていることを理解することが重要です。
「ウォーターフォール」は一つ一つのステップを順番に進める手法で、要件が比較的決まっているプロジェクトに適しています。「アジャイル」は短いスパンで開発を繰り返す手法で、機能を細分化して実装できるプロジェクトに適しています。そして、「MVP開発」はリリースごとに目的を明確にして実装を進め、フィードバックを取り込むことに焦点を当てた手法で、仕様が決まっていないプロジェクトやプロトタイプ開発に適しています。
それぞれの手法の選択はプロジェクトの具体的な状況や要件によります。適切な手法を選ぶことで、開発の効率性と成功率を高めることができます。
次回のブログでは、DevOpsについて詳しく解説します。DevOpsは開発(Development)と運用(Operations)の統合を目指す考え方で、アジャイル開発やMVP開発など高頻度リリースを支えるための重要な手法です。次回もお楽しみに!
それでは、今回はこれで終わります。ご覧いただきありがとうございました。