アジャイル開発とは?メリット・デメリット、向いているプロジェクト

2021年11月1日

発注側の要望に対応するため、システム開発ではさまざまな開発手法が存在しています。代表的な例といえるのが、上流工程から下流工程にプロジェクトを進めるシンプルなウォーターフォールモデルです。

一方で、近年ではアジャイル型という開発手法も注目されています。一般的なウォーターフォールモデルとは根本から大きく異なるアジャイル型です。具体的にはどういった開発手法なのでしょうか。こちらでは、アジャイル型の基礎知識やメリット・デメリット、向いているプロジェクトについてお話しします。

アジャイル開発の基礎知識

アジャイル開発とはどんな開発手法なのでしょうか。以下では、アジャイル開発の概要や工程、同じように開発手法として一般的なウォーターフォールモデルとの違いについてお話しします。

アジャイル開発とは?

アジャイル開発とは、システム開発を小さな単位に分け、実装とテストを繰り返しながらプロジェクトを進めること。アジャイル(Agile)には「素早い」「機敏な」という意味があります。

アジャイル開発における開発サイクルの単位をイテレーションと呼びます。1サイクルは1~4週間ほどの期間です。リリースしたい機能ごとに、イテレーション内で要件定義→設計→開発→テスト→リリースの工程を行います。顧客からのフィードバックを得て改善を行う工程を反復し、品質を高めていくソフトウェア開発手法です。アジャイル開発は開発途中に仕様や設計の変更があることを前提としています。その点が従来の開発プロセスとの大きな違いです。

2001年にアメリカ・ユタ州に集まった17人の技術者・プログラマーがまとめた「アジャイルソフトウェア開発宣言」から広まった概念とされています。この宣言では、「変化への対応」が重要な価値であるとうたわれていました。アジャイル開発の手法は複数ありますが、この価値はすべてに共通する原則です。

アジャイル開発の工程

STEP1:リリース計画

まず、大まかな仕様やスケジュールを開発側と発注側で決めます。ユーザーストーリーと呼ばれる発注側のシステムへの要求を、開発側が簡潔にまとめる流れが一般的です。この資料は要件の代わりとして開発の参考になります。プロジェクトのゴール、イテレーションのサイクルの長さ、ユーザーストーリーの優先順位などを開発側と発注側で決めていきますが、リリース計画は進捗具合に応じて更新されていくケースも少なくありません。

STEP2:イテレーション

要件定義→設計→開発→テスト→リリースをイテレーション内で行い、成果物と顧客の要望の差異を確認していきます。改善点を次のイテレーションに反映して、顧客の要望に近づけていきます。短期間でイテレーションを反復するためには、効率が重要です。

効率的にイテレーションを回すためにツールが使用されます。専用のツールを利用すると設計・プログラミング・テストといった工程を一部自動化できます。現在は多数のプロジェクト管理ツールが提供されており、開発現場の作業効率向上に貢献しています。

ウォーターフォールモデルとの違い

ウォーターフォールモデル(ウォーターフォール型開発)とは、あらかじめすべての開発工程の計画を立ててから開発を進めることです。最初に必要なリソースを先に確保して、計画に沿って進めていきます。仕様や要求の変更があった場合、追加で多くの費用や開発期間が必要になることがあります。

そのため、修正や変更を前提とした開発には向きません。一般的に普及している主流な開発方法ですが、仕様変更への適応を重視しているアジャイル開発とは考え方が正反対といえる手法です。どちらにもメリット・デメリットがあるため、特徴を理解した上で最適なプロジェクトに適用する必要があります。

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

アジャイル開発にはメリットの一方、デメリットもあります。状況や希望に応じて最適な他の開発手法を比較検討して採用するため、アジャイル開発の以下のようなメリット・デメリットを知っておきましょう。

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

  • トラブル発生時の修正工数が少なく済みやすい

小さな機能単位で開発しているため、トラブル発生前の工程に戻って修正する工数が少なくなります。一方、ウォーターフォールモデルの場合はまとめて開発しているため、トラブル発生箇所によっては、手戻りの工数が多くなりやすいことが難点であり、場合によっては、設計を再度行うこともあります。

  • ニーズに応じやすい

アジャイル開発では各イテレーションで顧客要望とのすり合わせが行われ、改善点が見つかれば次回のイテレーションで反映されます。そのため、顧客のニーズに応じやすい点がメリットです。

  • 開発スピードが速い

各機能を切り分けて開発し、優先度の高い機能からテストを完了させてその都度リリースするため、開発チームが、開発にかける時間を短縮して実装することができます。ウォーターフォールモデルのような手戻りが少ない点も、スピード感を高めている要因のひとつです。

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

  • 全体のスケジュールを管理しにくい

アジャイル開発は機能ごとにスケジュールを設定するため、プロジェクト全体のスケジュールや進捗状況を把握しにくい傾向があります。開発期間が長くなることもあり、期限が決まっていてリリースタイミングをコントロールしなければならないプロジェクトには向きません。

  • 開発の方向性がぶれやすい

アジャイル開発は明確な仕様を決めず、要件の追加や修正・変更を繰り返していく方式です。そのため、開発の方向性がぶれやすいという問題点があります。当初の方向性から大きく外れないように、またムダに工期を伸ばさないためにも、常に方向性のコントロールが必要です。

アジャイル開発の主な手法

アジャイル開発には複数の手法があります。それぞれ特徴があるため、適切に選択することが重要です。以下では代表的なアジャイル開発の手法を紹介します。

スクラム

スクラム(Scrum)とはチーム単位で開発を行う手法です。メンバー各自の役割を決めますが、明確なタスクや工程の振り分けは行われません。メンバー自身が計画を立案します。スクラムにおいてリーダー的な役割を担当するのがスクラムマスターです。スクラムマスターが内部の調整やインシデント管理を行います。他のメンバーにもそれぞれ役割(ロール)を設定して開発していきます。

スクラムマスターを含め、メンバー全員で責任を共有するのがスクラムのあり方です。チーム主体の開発手法のため、コミュニケーションが重視されます。メンバーのスキルをそれぞれが把握することにより、臨機応変かつ効率的な開発を実現可能です。スクラムでは、イテレーションをスプリントと呼ぶ場合があります。明確な区別はされておらず、意味の大きな違いはないため、そのままイテレーションと呼ばれることも少なくありません。

エクストリーム・プログラミング(XP)

エクストリーム・プログラミング(XP)は、要件や仕様の変更に対して柔軟に対応するための手法です。エンジニアがペアを組み、コーディングをお互いにサポートしながら作業を行うペアプログラミングの手法です。エラーや仕様変更に対応しやすい点が強みです。

一方で、エンジニアのスキルに依存しやすい手法です。未熟なエンジニアの場合、開発の効率が大きく低下してしまうケースがあります。また、ペアを組むエンジニア同士の相性が悪い場合はコミュニケーション不足やストレスによって効率が低下する可能性があるため、リソース確保の際は考慮が必要です。

ユーザー機能駆動開発(FDD)

ユーザー機能駆動開発(FDD)は、ユーザーの目線から価値のある機能を選定し、その機能を中心に開発する手法です。発注側にヒアリングを行い、必要な機能を適切な計画で開発していきます。機能ごとにチームを編成して開発が行われます。価値が高い機能を実装しやすい手法ですが、計画段階から発注側との入念なコミュニケーションが必要です。

アジャイル開発が向いているプロジェクトのケース

上述したメリット・デメリットを踏まえて、最適なプロジェクトにアジャイル開発を採用することが重要です。以下では、アジャイル開発が向いているプロジェクトの例をご紹介します。

状況の変化で仕様変更の可能性がある場合

アジャイル開発は柔軟な対応ができる手法のため、時代の変化に伴い、ニーズが変わりやすい業種のプロジェクトに向いています。代表的な例がIT業界です。業界によっては、事前にニーズの変化を予測できないことがあります。また、状況の変化で実装する機能の優先順位が変わることも考えられるでしょう。短納期でシステムが必要になる場合は特にこうしたケースが多く見受けられます。

アジャイル型は短いサイクルで完成した機能をリリースし、そこで得たフィードバックを次のサイクルに活かします。そのため、フレキシブルな開発が実現でき、必要な仕様が不透明な場合でも対応可能です。

要件の全体像が明確ではない場合

プロジェクトの全体像が見えている状態で開発を開始するのが基本です。しかし、実際の現場では要件が固まる前に開発を始めなければならないケースもあります。アジャイル開発の場合、全体像が見えていない場合でもプロジェクトの進行に応じて固めていけばよいため、大きな支障はありません。

クライアント自身も開発に参画する場合

システム開発では、クライアントがプロジェクトに参画することも少なくありません。ウォーターフォーモデルの場合は一般的にシステムの最終チェックなどにクライアント型の担当者が参加しますが、アジャイル型ではさらに重要性が高まり、チームメンバーとして側面が強くなります。

スクラムにおけるプロダクトオーナーの役割をクライアントが担うケースが一般的です。チームの一員として直接要件を伝えてくれるため、柔軟な対応を実現できます。

テスト用のサンプルを作ってから、ニーズを反映したプロダクトを作りたい場合

顧客によってはコミュニケーションがうまくとれず、要求のヒアリングが困難な場合があります。アジャイル型開発であれば、漠然とした顧客の要求からテスト用にサンプルを作って顧客に運用してもらい、そこからニーズを汲み取って改良していくことも可能です。

要件定義を細かく行うよりもニーズに沿ったシステムができあがり、開発期間も短く済むケースがあります。

アジャイル開発の特徴を把握し適切なプロジェクトで採用することが重要

アジャイル開発の基本的な情報についてお伝えしました。仕様変更などに対する柔軟性に優れる、開発をスピーディーにできるといったメリットがある一方で、すべてのプロジェクトに適しているわけではありません。もうひとつの代表的な開発モデルであるウォーターフォールモデルを含め、プロジェクトに合った最適な開発手法を採用することが大切です。

アジャイル開発の工程でのシステム構築をご検討の際は、経験豊富なエンジニアが多く、開発コストもお得なYAZにご相談ください。プロジェクトに応じた開発手法の提案もサポートいたします。

この記事を書いた人

ITコラム部YAZ

YAZ ITコラム部

IT業界に関心がある方へ向けて、専門用語を分かりやすく発信しています!

関連記事

おすすめの記事