• HOME
  • お役立ち記事
  • エンジニアの開発手法「アジャイル」「ウォーターフォール」の特徴について
main-visual

エンジニアの開発手法「アジャイル」「ウォーターフォール」の特徴について

2022/09/09

システム開発に携わる方は「どんな手法で開発していけば、プロジェクトを最短期間で最大の利益を上げられるのか」を考えることが多いですよね。
代表的な開発手法「ウォーターフォール型開発」と「アジャイル型開発」それぞれの特徴について、どのくらい把握していますか?
開発手法への理解を深めて開発したいシステムに適した手法を選択できるようになれば、案件に参画するときにも役立ちます。
今回は、代表的な開発手法「ウォーターフォール型手法」と、「アジャイル型手法」、そして「プロトタイプ型開発手法」についてもお話ししていきます。
「自分が担当する工程以外はよく知らない」「開発の全体像はよくわからない」という方は、この機会に開発手法についての認識を深めてくださいね。

目次

  1. ウォーターフォール型開発
  2. アジャイル型開発
  3. 【番外編】プロトタイプ型開発
  4. まとめ

ウォーターフォール型開発

特徴・進め方

特徴

1970年代に確立されて長く取り入れられてきた手法です。
滝の水が上から下へ流れる様子から命名されたとおり、【要件定義→基本設計→詳細設計→開発→テスト→運用】といった工程を順番に行っていきます。
各フェーズごとのドキュメントや成果がはっきりしていて、計画的に進めやすいため、システム開発の経験が浅い方でもイメージしやすいのも特徴です。

こんな開発におすすめ

大規模な組み込みソフトウェアや通信システムの開発のような、仕様の変更が少ないシステムの開発に向いています。
また、要件が固定的でドキュメントも明確化されていること、そして使用する技術が成熟していて経験者が多い場合などは、ウォーターフォール型がふさわしいでしょう。

開発メンバー

要件定義、基本設計、詳細設計、開発、テスト、そして運用のそれぞれのフェーズに人員が割り当てられます。
進め方がシンプルなので、アジャイル開発のようにチームやマネージャーがプロセスに関するトレーニングをする必要はありません。

メリットとデメリット

メリット

すべての工程が計画だてて進められるので、予算の見積もりや必要なエンジニアの数が想定しやすい点がメリットです。また、フェーズごとの成果をチェックしやすく、進捗情報が管理しやすい、途中で人員変動があっても引継ぎを行いやすいのも利点といえます。
そしてフェーズごとに担当が決まっているため、エンジニアは専門分野に集中して取りかかれること、大規模な案件では人数が多いため、多少スキルや経験が不足しているエンジニアでも業務経験を積みながら案件に参画できるといった点も魅力でしょう。

デメリット

前の工程での作業ミスが発見された場合、手直しをする時間とコストのロスが大きくなってしまう点が大きなデメリットです。
また、開発の途中で仕様の変更や追加があった場合も対応が難しくなります。
そして、開発期間が長期化しやすく、長いものだと数年に渡って行われることも。そうすると要件が陳腐化してしまい、開発が完了した時点では需要が低いサービスになってしまうこともあります。
これらのデメリットに対して、要件定義を念入りに行い仕様変更が無いようにする、1つの工程が完了したらエラーが出ないかを念入りに確認する、といった対策が望まれます。

今後の課題

実際の開発の現場では、上記のような対策を取っていても、「見積もりと実績に乖離がある」「仕様変更による出戻りが多い」「開発スピードが遅い」といった課題が生じています。
企業が求める要件を念入りに洗い出していても、数年後には状況は変わってしまうことが多く、「スピード」と「高品質」の両軸を求める時代の需要にそぐわなくなってきているという風潮は否めません。
こういった問題に対処するため、アジャイル型開発の採用が増えてきました。

アジャイル型開発

特徴・進め方

特徴

2000年代から採用され始め、「アジャイル(Agile)」=「素早い」という言葉のとおり、スピーディーに動くソフトウェアをリリースして依頼者に届けるという手法です。
ウォーターフォール型手法のようにフェーズごとに100%のものを作りこむのではなく、1~4週間ほどのサイクルで【計画→設計→実装→テスト】を反復させてブラッシュアップを繰り返し、リリース時に最高のものを届けることを目標としています。
ブラッシュアップの時点では依頼者のFBも取り入れながら行うため、依頼者の要望を取り入れながら仕様を変更・追加することができ、短期間で高品質なプロダクトに落とし込むことができます。
アジャイル開発の中でも、特にチームのコミュニケーションを重視した「スクラム開発」が代表的です。

アジャイル(スクラム)型開発の進め方

「スクラム」とはラグビーのスクラムのこと。以下のフェーズに沿って開発を進めます。

(1)スプリントプランニング:計画

スクラムマスター主導のもと、チームのメンバーでプロジェクトの目標を設定し、作業の優先順位を付けてタスクを整理します。
ちなみに「スプリント」とは計画に基づき【設計→開発→テスト→リリース】をするサイクルのこと。期間は1か月を上限としているため、短期間での計画となります。

(2)デイリースクラム:朝会

1回15分程の朝会を定期的に行い、進捗状況の確認や修正・課題への意思決定を行います。

(3)スプリントレビュー:評価

出来上がったプロダクトに対して、チームと依頼者を含めてレビューを行います。ここで修正や仕様の追加があれば、また計画を立て進めていきます。

(4)スプリントレトロスペクティブ:振り返り

スプリント終了時に行われる振り返りです。プロダクトを達成させるためのチームの在り方について、業務の内容やコミュニケーションの方法などについて改善点が無かったかを話し合います。
そして問題に対しての解決策を明確化し、品質を高める方法を探っていきます。

開発メンバー

以下の役割を担う10人以内の開発メンバーから構成されます。

プロダクトオーナー

ソフトウェア開発における投資対効果「ROI」を最大化させるために責任をもち、プロダクトバックログという優先度を付ける作業を行います。
依頼者の事業を熟知したメンバーや責任者がこの役割を担います。

プロジェクトマネージャー

プロジェクト開発のスケジュール、リソース、人員の確保といった管理を行います。

スクラムマスター

開発メンバーを支援するコーチのような存在で、プロジェクト成功に向けてマネジメントします。
開発ルールや進め方の決定権はメンバーがもち、メンバーが自分たちで考えて進めていくようにサポートをします。アジャイルやスクラムに関する理解と経験が必要となる重要なポジションです。

開発メンバー

実際に手を動かして開発を進めていくポジションです。メンバーそれぞれが特定の分野や技術に強みをもち、自律的に行動していきます。
基本的にメンバー間で細かく役割分担を行うというよりは、1人が複数のタスクを担うことが多い傾向があります。

こんな開発におすすめ

アジャイル開発は、流行に左右されやすく、仕様変更を前提としたECサイトやSNSなどのWebサービスや、Webアプリ、スマホアプリ、ゲームの開発に向いています。
特にアプリやゲームは、開発中やリリース後にユーザーのニーズが変わることも多く、類似サービスとの差別化を図るために迅速にシステムを改善させていく必要があります。
また「大まかな要件は決まっているが、あとはプロジェクトの進行に伴って決めていきたい」といったプロジェクトの開発にもおすすめです。
逆に、多数の人員を必要として高コストを要する大規模な案件にはあまり向かないでしょう。

メリットとデメリット

メリット

優先順位の高いシステムから開発を行うことができ、ユーザーからの要求や仕様の変更に対して臨機応変に対応できるとメリットがあります。
また、不具合が生じたときにもすぐに対処可能なので、修正にかかる負担が少ない点もメリットでしょう。
短期間で計画から実装を繰り返してブラッシュアップを重ね、より品質が高いものに作り上げていくので、エンジニアにとっても、プログラミングの技術だけでなくコミュニケーションスキルの向上にもつながります。

デメリット

変更や追加を受け入れながら開発を進めていくと、開発の方向性がぶれやすく、スケジュールにズレが生じたり、予想よりもコストがかかってしまったりすることがあります。
また、あらかじめ優秀な人材を採用して、チームや依頼者との間で開発手法の理解を深めておかなければ、計画が途中で頓挫してしまうこともあるため注意が必要です。
チーム間で開発に関する優先順位・作業コスト・プロジェクトの目的などを計画したものプロダクトバックログで確認し、随時参照しながら開発を進めていくようにするといいでしょう。

【番外編】プロトタイプ型開発

特徴・進め方

特徴

アジャイル開発手法と似ていますが、開発の初期段階で「試作品(プロトタイプ)」を完成させ、依頼者のチェックのもと細かい仕様やプログラムを肉付けしていく手法です。

こんな開発におすすめ

依頼者がプロダクトの漠然としたイメージしかなく、具体的な案が思いつかない場合に向いています。エンジニアが試作品を提供しながらイメージを可視化させていくことができます。

メリットとデメリット

メリット

こちらも仕様の変更を前提としているため、依頼者は修正や追加の依頼をしやすい点がメリットです。完成形が見えている状態で開発を進められるので、依頼者と開発者の認識のズレが生じにくいのも効率的です。

デメリット

試作品を作るのに時間や費用がかかってしまったり、依頼者のフィードバックに合わせて何度も試作品を作ったりすると開発者の負担が大きくなる点がデメリットです。
依頼者の予算に合わせた開発になるように調整する必要があるでしょう。

まとめ

上で紹介した開発手法以外にも、ウォーターフォールとアジャイルの長所を生かした「スパイラル型開発」や「MVCモデル」「DevOps」といった開発手法あります。
コミュニケーションを重視している開発手法や、それぞれの担当業務を細かく分担されている手法まで様々ありますね。それぞれのプロジェクトに合った手法を知るとともに、今後どのような現場でどんな関わり方をすれば理想とするエンジニアになれるのか、を考える参考になれば幸いです。
「この開発手法を取り入れている案件はあるかな?」「市場価値の高いエンジニアになるために経験を積みたい」など、誰かに相談したいと思ったら、ぜひエージェントを活用してみてくださいね。

お役立ち記事一覧へ

・フリーランスだけど安定して働いていきたい
・年収アップするためにはどうしたらいいのだろう

気になることは、どんな些細なことでも
お気軽にご相談ください。

IT業界において経験豊富な弊社キャリアサポーターが、1対1でお話をさせていただきます。フリーランスの皆様のスキル、過去のご経験を元に今後のキャリアプランを一緒に築いていくためのご提案させていただきます。
今後のキャリアや、技術面において不安な事もお気軽にご相談下さい。

オンライン相談をしてみる

無料会員登録

60秒で登録完了!

  • HOME
  • お役立ち記事
  • エンジニアの開発手法「アジャイル」「ウォーターフォール」の特徴について