アジャイル開発とは? 開発の流れとメリット・デメリット

アジャイル開発とは? 開発の流れとメリット・デメリット

ソフトウェア開発の世界では、ウォーターフォール開発と呼ばれる、要件定義からテスト・運用まで段階を経て開発するモデルが普及していました。しかし、開発が複雑化する現在、開発中の仕様変更に対応できる、新たな開発モデルの探求が続いています。
その結果、近年開発手法として採用されているものの一つに、アジャイル開発があります。そこで今回は、アジャイル開発の基礎知識とウォーターフォール開発との違い、アジャイル開発の流れ、主な手法である「スクラム」の概要、メリット・デメリットを解説します。

アジャイル開発とは

アジャイル開発とは、短い開発期間で小さな機能を一つずつ実装することによって、リスクを最小限に抑える開発手法です。機能ごとに完成品が出来上がるため、顧客の要望に沿って修正を繰り返すことが容易になります。

アジャイル開発は、自社開発を前提としている企業から生まれた手法です。日本では従来、SI業界の影響力が大きく、長らく長らくウォーターフォール開発が開発モデルの中心とされてきました。アジャイル開発は、そのウォーターフォール開発とは異なるアプローチによる新しい開発手法として登場し、近年、急速に普及してきたという経緯があります。

ウォーターフォール開発との違い

従来、主流であったウォーターフォール開発では、要求定義⇒外部設計⇒内部設計⇒開発 (プログラミング) ⇒テスト⇒運用という段階を経てシステムを作り上げていきます。いわゆる上流工程から下流工程へと順次移行しながら開発を進めていくのが一般的です。

これに対し、アジャイル開発では最初から詳細な計画を立てるのではなく、計画は変更されるものという前提で開発を行います。最初に決めるのはおおよその仕様のみで、その仕様に沿って1~4週間程度の期間の短いイテレーション (反復、繰り返しの意) 開発を行っていきます。この繰り返しによって個々の機能を独立して完成させていくため、開発期間中に仕様変更があっても柔軟に対応し、リスクを抑えることができます。

アジャイル開発の流れ

アジャイル開発では、1~4週間のイテレーション開発の期間を設け、その反復ごとにシステム全体に新たな機能を追加していきます。どのような機能の開発を行うかは、業務プロセスが確定しているかどうか、優先度が高く重要な機能かどうかといった基準で決められます。一般的な開発の流れは次のようなものです。

1.計画

開発範囲全体を短い期間で開発できる範囲に細かく区分し、業務プロセスの優先度を考慮してどの機能を開発対象とするかを決めます。

2.開発

1で決めた範囲の機能の要求を決定し、設計、実装、テスト、修正を行います。

3.リリース

発注者の受け入れテストに合格した機能をリリースします。

その後、次に着手する機能を決めて、1~3の作業を繰り返していきます。

アジャイル開発の主な手法「スクラム」とは

アジャイル開発には複数の異なる手法がありますが、その代表と言えるのが「スクラム」です。ラグビーのスクラムに由来する名前が示すとおり、この開発技法ではチーム (5~9人が適当とされる) が一体となってプロジェクトを進めていくことに重点が置かれます。そして具体的に、チーム一丸となるために次のようなプロセスが定義されています。

1.デイリースクラム

毎朝、チームで集まって朝会を開き、プロジェクトの状況、問題点、障害などを一人ひとり報告し、共有します。朝会は15分以内で完了させるといった決まりもあります。

2.リリースプランニング

プロジェクト立ち上げ時に開発するプロダクトの項目 (機能) を整理し、優先順位と開発に必要な期間、開発難易度などについてチーム全体でプランニングします。その際にプロダクトバックログ (優先順に並べた機能の一覧) を作成します。

3.スプリントプランニング

一つのイテレーション期間で、プロダクトバックログからどの項目を選んで開発するかを決定し、そのスプリントにおける目標などを設定します。スプリントとは実際の一つのイテレーション期間における開発フェーズのことです。通常、1~4週間の期間が設定されます。

4.スプリント

スプリントが実施され、開発メンバーが実際にプロダクトバックログの項目にある機能を開発していきます。

5.スプリントレビュー

スプリント終了後には必ずスプリントレビューを行います。顧客、開発メンバー、マネージャーなどを集め、一つのイテレーション期間に完成したソフトウェアが安定動作することをデモンストレーションします。また、レビュー時に必要に応じて新たなプロダクトバックログ項目が追加されることもあります。

6.振り返り

スプリントにおける目標の達成度、良かった点、問題点、改善点、次回のスプリントの展望などを開発メンバー間で話し合います。

アジャイル開発のメリット

ここからはアジャイル開発のメリットを解説します。近年、アジャイル開発のプロジェクトが増え続けている理由を把握しておきましょう。

急な仕様変更や追加に対応しやすい

アジャイル開発は、最初から細かい計画を立てません。開発対象を細かく分割し、機能ごとに実装するので、途中で仕様の変更や追加があっても柔軟に対応できます。

クライアントのフィードバックを開発に反映できる

クライアントは、ソフトウェアの完成図をイメージできていません。そこで、まずは動くものをつくり、ソフトウェアのフィードバックを受けるのです。すると、そのフィードバックを開発に反映することができ、完成したソフトウェアがクライアントのイメージと異なる失敗が避けられます。

評価やテストが早くできる

アジャイル開発では、計画からテストまでを短い期間で繰り返します。すると、ウォーターフォール開発で発生するような、テスト段階で発覚する重要な問題などを早期に発見できるようになるのです。

アジャイル開発のデメリット

アジャイル開発にはデメリットもあります。以下の解説をよく読み、デメリットを上手くカバーするためのスキルを磨きましょう。

全体のスケジュール管理が難しい

ウォーターフォール開発であれば、設計が終わると実装、実装が終わるとテスト、のように開発が進むので、全体のスケジュールや進捗を把握することが容易です。しかし、アジャイル開発では常に修正を繰り返すので、全体のスケジュール管理が難しいです。

高度なコミュニケーションが必要

仕様変更や追加に対応するためには、クライアントとの高度なコミュニケーションが必要になります。
ウォーターフォール開発であれば、主に開発のリーダーレベル以上の人がクライアントとやり取りします。しかしアジャイル開発では、ソフトウェアのエンジニアが直接クライアントとやり取りする機会も出てくるでしょう。

また、アジャイル開発では同期的なコミュニケーションを強く推奨しています。そのため、開発者やクライアント側の担当者を含めて、開発に携わるすべてのメンバーが一カ所に集まって仕事をすることが多いです。

最終製品の方向性がぶれやすい

アジャイル開発は、完成品のイメージが変化する前提で開発を進める手法です。そのため、最終製品の方向性がぶれやすくなるのが特徴的です。

通常のクライアントは、開発側ほどソフトウェア開発に精通していません。最終製品の方向性を決めるためには、開発側がクライアントの言いなりにならずに、クライアントにとって有益な提案を行う力が必要です。
このように、アジャイル開発にもメリット・デメリットの両方があります。しかし、製品の修正が容易な開発手法なので、これから普及していく開発手法であることは間違いありません。

今後の開発案件で対応する可能性が高いので、今回ご紹介したようなアジャイル開発の基礎について理解しておきましょう。

求人詳細ページへのリンク

職種関連カテゴリ

アジャイル開発とは? 開発の流れとメリット・デメリットのページです。ITエンジニア・移動体通信エンジニア(技術者)の派遣求人ならブレーンゲート。株式会社ブレーンネットはシステムエンジニアやネットワークエンジニア、プログラマーの派遣・転職をサポートいたします。