【図解】アジャイル開発とは?具体的な進め方も解説


昨今ではビジネスの現場でDX(デジタルトランスフォーメーション)を推進するため、
「アジャイル開発が必要」という話をよく聞くようになりました。アジャイル開発とは、これまでよく使われていたウォーターフォール開発に代わり、主流となりつつある開発手法です。この記事ではアジャイル開発とは何か、具体的な進め方やメリット・デメリットについて解説します。

アジャイル開発とは?


アジャイル開発(agile software development)とは、現在よく使われているソフトウェアやシステムの開発手法の1つです。アジャイル開発では機能単位の小さなサイクルで、計画から設計・開発・テストまでの工程を繰り返すことにより開発をすすめます。

速やかにソフトウェアやシステムをリリースするのに適した(agile=素早い・俊敏な)開発手法ということで、アジャイル開発と名付けられました。

従来の開発手法(ウォーターフォール開発)とは?


ウォーターフォール開発とは、従来から使われてきた開発手法です。ウォーターフォール開発では、あらかじめソフトウェアなどの全機能に関する要件定義や設計を綿密に行ってから開発に入ります。

その上で、プロジェクト全体で「要件定義→設計→実装→テスト→運用」という順に工程を進めていきます。ウォーターフォール開発では、これらの工程を水が下に落ちていくように(=ウォーターフォール)一方通行で行うのが前提です。

基本的に最初の要件定義や設計が絶対であり、後からの変更は想定していません。また顧客に開発したソフトウェアなどを手渡すのは、プロジェクトの全工程が終了したあとです。

ウォーターフォール開発とアジャイル開発の違いは?

アジャイル開発では、はじめに厳密な仕様設計を行いません。おおよその仕様や要求を取りまとめて、開発をすすめます。設計についての余白を残しておくことによって、開発着手後の仕様変更にも柔軟に対応できるようにするわけです。

これがウォーターフォール開発との大きな違いです。アジャイル開発では、開発途中での仕様変更を想定に入れて工程をすすめます。

くわえてアジャイル開発では機能ごとの小単位で開発を繰り返す点も、ウォーターフォール開発と異なる点です。全機能の開発終了後の提供となるウォーターフォール開発に対し、アジャイル開発では開発終了した機能から順次顧客へ提供できます。

<ウォーターフォール開発とアジャイル開発の違いまとめ>

ウォーターフォール開発 アジャイル開発
仕様と要求 厳密に取りまとめてから開発を進める。開発途中での変更は想定していない。 大枠だけを決めて開発をすすめる。開発途中での変更や追加をあらかじめ想定する。
開発の工程 全機能について「要件定義→設計→実装→テスト→運用」という工程を一回限り行う。後戻りは想定していない。 機能ごとに「要件定義→設計→実装→テスト→運用」という工程を繰り返す。
顧客への提供のタイミング 全ての機能の開発が終了し、プロジェクトが完了しあと。 開発が終了した機能から随時提供することが可能。

アジャイル開発の流れ

アジャイル開発の概要を見てきました。それではアジャイル開発は、どのような流れで進められるでしょうか。ここではアジャイル開発の大まかな流れについて解説します。

①【リリース計画】おおよその仕様と要求を決定する

仕様や要求を取りまとめる過程のことを、アジャイル開発ではリリース計画と呼びます。リリース計画はあくまで開発をすすめるにあたっての、おおよその方向性を示したものであり絶対ではありません。開発の過程で、リリース計画にはなかった仕様や要求が加わることもしばしばです。

②【イテレーション】短期間のサイクルを繰り返し、開発を進める

リリース計画がまとまったら、開発段階に入ります。アジャイル開発において、機能ごとに「要件定義→設計→実装→テスト」を短期間のサイクルで繰り返すことを「イテレーション(=iteration/反復・繰り返し)」と呼びます。

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

一口にアジャイル開発と言っても、その手法にはいくつかの種類があります。ここでは、その中でも代表的な手法を3つ紹介します。

【スクラム】チームで密にコミュニケーションを取って開発をすすめる手法

スクラムは、アジャイル開発のなかでも最も有名な開発手法です。ラグビーの「スクラム」のように、チームががっちりと連携し合って開発を進めていく手法を指します。

スクラムで重視されるのは、チーム間のコミュニケーションです。チームは自らで計画して、開発の状況や進め方、開発途中の機能の品質などについて逐次確認し合い情報共有をはかります。「デイリースクラム(朝会)」などのミーティングをはじめ、コミュニケーションの機会を増やすことも必要です。

逆にコミュニケーションが滞ってしまうと、スクラムは失敗します。リリースした機能が正常に動作しない、要求された通りの機能になっていないなどの問題が生じる可能性が高くなります。

【エクストリーム・プログラミング(XP)】開発中の仕様変更を柔軟に許容する手法

エクストリーム・プログラミング(XP)とはアジャイル開発のうち、開発途中で仕様変更が必要となった際、最も柔軟に対応可能な手法です。エクストリーム・プログラミングでは、要件定義からテストまでの工程を繰り返す中で、顧客とのコミュニケーションを頻繁に行います。

顧客は開発メンバーの1人として参加し、「オンサイト顧客」とも呼ばれます。そうして開発メンバーはオンサイト顧客との調整の中で生じた仕様変更の要望を受け入れ、少しずつ完成を目指していくわけです。

エクストリーム・プログラミングは、技術的な手法を駆使して仕様変更に対応することを目指します。そのためプログラマーを中心とした手法であるとも言われます。

【ユーザー機能駆動開発(FDD)】ユーザーの目線を重視する手法

ユーザー機能駆動開発(FDD)は、顧客(ユーザー)目線でみてより品質の高い機能を開発することを重視した手法です。ユーザー機能駆動開発では最初に、「その機能に対して顧客が本当に求めるものは何か」を明確にする必要があります。その上で、機能ごとにチームを分け開発をすすめていきます。

そうしてソフトウェア・システムの開発を繰り返し、顧客にとって適切な間隔で提供していくことがユーザー機能駆動開発の趣旨です。顧客がソフトウェアの各機能に求める根本的な要望に寄り添うことを重視することから、品質が高い機能を開発しやすい手法と言われます。

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

従来通りのウォーターフォール開発ではなく、アジャイル開発を選ぶメリットやデメリットはどんなところにあるのでしょうか。以下、メリット・デメリットをそれぞれ解説します。

メリット

アジャイル開発の主なメリットは、仕様変更にスムーズに対応できることと、開発のスピードが早いこと、顧客の要望を満たしやすいことです。

最初に全機能の仕様を詳細に設計するウォーターフォール開発では、仕様変更の必要が生じると開発工程を後戻りするコストが膨大となります。一方、アジャイル開発では途中での仕様変更を最初から計算に入れ、仕様を厳密に決定しません。その上で仮に仕様変更の必要が発生しても後戻りしやすいように、機能単位で細かく開発工程を繰り返します。

そのため、仕様変更に対応するコストが少なくてすむのです。開発途中での仕様変更に柔軟に対応できることから、結果的に開発スピードが早くなるのもアジャイル開発の大きなメリットです。くわえてウォーターフォール開発と比べ結果的に顧客の要望に対して細やかに応じやすく、顧客満足度を上げやすい手法とも言えます。

デメリット

ウォーターフォール開発と異なり、アジャイル開発では最初に厳密な機能設計や開発スケジュールの設定は行いません。良くも悪くも仕様変更に柔軟に応じることから、ウォーターフォール開発と比べると、開発の方向性や目的がぶれてしまいやすいのがデメリットです。

またスケジュールを柔軟に決められる分、ウォーターフォール開発と比べると全体的な進捗をコントロールしづらい面があります。チームごとに機能開発を進めているため全体の状況を管理できず、結果的に納期が遅れるという事態が発生しやすいです。

開発の種類ごとに向き・不向きがある

アジャイル開発は仕様変更に対応しやすい、開発スピードが早くなると言ったメリットがある一方で、前述の通りデメリットもあります。そのため全てのケースにおいてアジャイル開発が適しているとは言えません。なかには従来通りのウォーターフォール開発の方が適しているケースもあるのです。

ここではウォーターフォール開発・アジャイル開発、それぞれがどんなケースに適しているか主な例を紹介します。

ウォーターフォール開発が向いているケースの例

ずっと以前から安定稼働していたシステムをリプレースするときのように、開発途中で仕様変更が発生しないプロジェクトもあります。そういったケースでは、イテレーションを繰り返して開発を進めるアジャイル開発はかえって非効率です。従来通りのウォーターフォール開発を選んだ方がよいでしょう。

また情報を正確に記録することが必要な管理系のシステムでは、柔軟な仕様変更より厳密な要件定義が必要となります。管理系システムの開発でも、アジャイル開発よりウォーターフォール開発の方が適しています。

アジャイル開発が向いているケースの例

アジャイル開発は、開発途中で仕様変更の必要が生じる可能性が高いプロジェクトに適しています。たとえば技術革新が目覚ましいモバイル業界や研究分野等での開発では、仕様変更のニーズが生じる可能性が高くアジャイル開発向きです。また簡単に操作できるUIが必要なソフトウェア開発のように、要望に細やかに対応する必要がある場合もアジャイル開発が適しています。

まとめ

アジャイル開発は開発中の仕様変更に柔軟に対応し、従来よりも短い期間での開発を実現する手法です。アジャイル開発では、あらかじめ厳密な仕様決定をせず、機能ごとの小さな単位での開発を繰り返します。こうすることで、仕様変更が発生した際に、後戻りがしやすくなるのです。

これらのメリットからアジャイル開発は、従来のウォーターフォール開発に代わり主流となりつつあります。しかし必ずしも全てのケースにおいて、アジャイル開発が適しているわけではありません。

たとえば開発途中で仕様が変更されることがないと断定できるケースでは、ウォーターフォール開発の方が効率がよいです。開発の内容によって選ぶべき開発の手法が異なるため、ケースごとにどちらが適しているか判断するようにしましょう。

コンテナサービス

人気記事ランキングトップ10

コンテナサービス

様々なビジネスニーズに応える柔軟なスペックと自由な構成 KAGOYA CLOUD IaaS

カテゴリ一覧

新着記事Pick Up!