アジャイル開発とは?プロセスや手法、メリット・デメリットまで解説

現代ビジネスにおいて、プロダクトやサービスの開発はよりスピード感を求められています。変化の激しい世の中のニーズに柔軟に対応しながら、ユーザーの満足度を高めるのに適した開発手法として有効なのが「アジャイル開発」です。

今やアジャイルはソフトウェア開発に留まらず、組織作りや商品開発、果ては経営理論でも採り入れられる考え方になっています。本記事では、アジャイル開発とは何か、アジャイル開発のメリット・デメリット、どのようなプロジェクトにアジャイル開発が向いているのかについて解説します。

アジャイル開発とは?

「アジャイル開発」とは、小さな機能単位を短期間(2~4週間)で繰り返し開発する手法です。従来の「ウォーターフォール開発」と呼ばれる開発モデルよりも短期間で「実際に動くソフトウェア」をリリースでき、顧客や関係者からフィードバックを受けながら開発を進めていけるのが大きな特徴です。

もともと「アジャイル(agile)」は「素早い、俊敏な」という意味を持ちます。必要最小限の機能を決め、優先度の高い順に短期間でソフトウェアをリリースできることからアジャイル開発と呼ばれるようになりました。

一般ビジネスにおいてもアジャイルのマインドは浸透してきており、プロジェクトマネジメントや組織作り、プロダクト開発やマーケティングなど幅広いシーンで見られるようになっています。

アジャイル開発誕生の背景

アジャイル開発が提唱されて注目を集めたのは2001年。アメリカの技術者やプログラマーによって「Manifesto for AgileSoftware Development(アジャイルソフトウェア開発宣言)」が提唱されました。一般ビジネスにおいてもアジャイルな考え方は広まっているため、ビジネスシーンで応用が利くフレームワークになりつつあります。

ではここで、アジャイルの考え方を確認しておきましょう。

プロセスやツールよりも個人と対話を、

包括的なドキュメントよりも動くソフトウェアを、

契約交渉よりも顧客との協調を、

計画に従うことよりも変化への対応を、

価値とする。すなわち、左記のことがらに価値があることを認めながらも、私たちは右記のことがらにより価値をおく。

参照元:Kent Beck、Mike Beedle、Arie van Bennekum、Alistair Cockburn、Ward Cunningham、Martin Fowler、James Grenning、Jim Highsmith、Andrew Hunt、Ron Jeffries、Jon Kern、Brian Marick、Robert C. Martin、Steve Mellor、Ken Schwaber、Jeff Sutherland、Dave Thomas

実際、従来のウォーターフォール開発では契約による合意ばかりが重視される傾向があり、設計書やテスト仕様書などの膨大なドキュメントの作成に追われてばかりで、肝心のシステムが不十分なことは珍しくありませんでした。

アジャイル開発は、ドキュメントよりも実際に動くソフトウェアを提供に重きをおいており、顧客と一緒に開発を進めることでよりよい成果を出すマインドセットを訴えています。

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

アジャイル開発とウォーターフォール開発との違いは「リリースする機能の大きさ」といえます。アジャイル開発が1つのソフトウェアを小さな機能を小分けにして開発・リリースするのに対して、ウォーターフォール開発ではソフトウェアを完全な状態でリリースします。

たとえば、ECサイトを構築する場合を考えてみましょう。

<アジャイル開発>

商品登録機能、検索機能、カート機能、レビューシステムなどを機能ごとにスプリント(開発期間)を設定し、1つずつ実装、テスト、リリースをします。ECサイトは少しずつ機能が追加されていき、最終的に目標とするサイトができあがります。また、途中経過も顧客からフィードバックを受けて改善もしていきます。

<ウォーターフォール開発>

商品登録機能、検索機能、カート機能、レビューシステムなど、必要な機能を要件定義で洗い出し、すべての機能を設計します。実装は設計に従い、テストも実施したうえで顧客に納品します。仕様変更は計画の大幅な変更を意味するため、敬遠されやすくなります。

このように、アジャイル開発は細かく機能を追加していくのに対して、ウォーターフォール開発は一気に作り上げていくのが大きな違いです。

アジャイル開発のプロセス

アジャイル開発では以下のプロセスを1週間から4週間で繰り返します。

  1. リリース計画
  2. 開発
  3. リリース

このプロセスのセットをスプリント(反復期間)と呼び、小さな機能単位を短期間で次々にリリースしていきます。開発チームは機能単位で計画を立てて動くため、仕様変更や方針転換が容易になっています。

商品開発においても、アジャイルな手法を用いてMVP(Minimum Viable Product)を作成、早期にユーザーからのフィードバックを収集する手法があります。フィードバックをもとに商品改良を繰り返し、市場に受け入れられる確率を高めるのです。

アジャイル開発の代表的な手法の種類

アジャイル開発には複数の手法があります。それぞれ特徴があるため、適切な手法を採用することが重要です。

Scrum (スクラム)

スクラムは、アジャイル開発の代表的な手法で、チーム全体の強いコミュニケーションと自己組織化を重視するフレームワークです。プロダクトオーナーが方向性を示し、スクラムマスターが進行をサポートし、開発者が実装を担当します。スクラムが向いているのは、オンラインサービスの機能追加など、顧客や市場のニーズが変わりやすいプロジェクトです。

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

エクストリーム・プログラミング(XP)は、事前の計画よりも柔軟な対応を重視するアジャイル開発手法です。顧客の要望が変わることを前提にしているため、詳細な初期計画は立てず、顧客からのフィードバックを定期的に受けつつ、動作するソフトウェアを頻繁にリリースするのが特徴です。

XPの代表的な手法として「ペアプログラミング」があります。これは2人1組で作業し、1人がコードを記述し、もう1人がそのコードをレビューする方法です。異なる視点でコードを見られるため、バグを発見しやすくなり、より高品質なコードを実装できます。

XPは頻繁なフィードバックとコミュニケーションが求められるため、顧客の要望が不確定なプロジェクトや、頻繁に仕様変更が起きるプロジェクトに適しているでしょう。

FDD (フィーチャー駆動開発)

ユーザー機能駆動開発(Feature Driven Development、FDD)は、実際に動くソフトウェアを定期的に提供する開発手法です。顧客にとっての価値(フィーチャー)を基準にした「フィーチャーリスト」に基づいて計画、設計、構築が進められます。

FDDの特徴は、まず事前にビジネスモデリングを行い、顧客のビジネスニーズを明確にすることです。これにより、重要な機能の優先順位が決まり、チームはビジネス価値に直結する機能から着手します。

開発中は機能の完成ごとに頻繁にリリースするため、顧客がプロジェクトの進行を追いやすく、適時フィードバックを提供できます。顧客価値に重きをおくようなプロジェクトには、FDDがおすすめです。

LSD (リーンソフトウェア開発)

リーンソフトウェア開発(Lean Software Development)は、「リーン思考」をソフトウェア開発に応用した手法です。リーン思考とは、製造工程から無駄を排除し、必要なものだけを残す考え方。「リーン(lean)」は「無駄のない」という意味を持ちます。

1980年代に、トヨタ自動車が工場で生産量や部品の発注数を適切にコントロールした「リーン生産方式」が由来です。顧客からのフィードバックを早く得て、迅速な改善が必要なプロジェクトや、限られたリソースで効率的に開発を進めたいプロジェクトに向いているでしょう。

Kanban (かんばん)

Kanbanは、開発プロジェクトの進捗を可視化し、効率的に管理する手法です。トヨタの「カンバン方式」をソフトウェア開発に適用したもので視覚情報から行動を促すために使われます。この手法は、作業フローを最適化し、必要なタイミングで仕事を進める「ジャストインタイムデリバリー」に重点をおいています。

カンバンボードには「To Do」「進行中」「完了」の3つの列が設けられ、タスクはその状況に応じて移動することで現在の状況が一目でわかるようになります。このようにKanbanは、タスクの状況をリアルタイムで把握する必要があるプロジェクトに向いています。

アジャイル開発を採り入れるメリットとデメリット

アジャイル開発を採り入れるメリットとデメリットにはどのようなものがあるでしょうか。それぞれ見ていきましょう。

メリット

アジャイル開発では、小さな機能単位で開発・テストを繰り返します。そのため、開発中にバグがあったとしても最小限の手戻りで済む可能性が高まります。最初に合意した設計やスケジュールが重視されるあまり、問題発見のタイミングが遅れると影響が広範囲に及ぶウォーターフォール開発とは大きく異なる点です。

また、アジャイル開発は設計段階ですべての仕様を作り込まないため、仕様変更にも柔軟に対応できます。開発中には実際のソフトウェアを見せながら顧客のフィードバックを受けられるのは、設計書を眺めながら議論をするよりもはるかに建設的な対話が可能です。

デメリット

アジャイル開発のデメリットは、全体スケジュールが読みにくく、計画が曖昧になりやすい点です。アジャイル開発では、機能単位でスケジュールを決めながら仕様変更にも柔軟に対応します。そのため、全体スケジュールが延びてしまうことも珍しくありません。

また、アジャイル開発には各自で必要なタスクを判断し、行動できるスキルが求められます。そのため、開発メンバーの実力が不足していたり、コミュニケーションが不十分だったりすると組織として機能しにくくなります。

アジャイル開発が適したプロジェクト

アジャイル開発は「仕様変更が発生しやすい」「最短で製品を発表したい」プロジェクトに向いています。たとえば、市場の状況を見ながら機能の優先度を随時変更したいプロジェクトではアジャイル開発が向いています。ほかにも、ビジネス環境が変化してしまう前にシェアを獲得したい場合は最短でのプロダクトリリースが求められるでしょう。

アジャイル開発に適さないプロジェクト

アジャイル開発に適さないプロジェクトは、要件が明確になっていて全体スケジュールが固まっているプロジェクトです。たとえば、特定のリミットに完全なプロダクトを提供する必要があるケースが挙げられます。こういったプロジェクトでは、時間をかけて準備をするウォーターフォール開発のほうが適しているでしょう。

アジャイル開発を採り入れている事例

アジャイル開発は、多くの企業やプロジェクトで採用されています。いくつかご紹介しましょう。

Spotify

Spotifyは、アジャイル手法を効率化させる独自の組織モデル「Spotifyモデル」を導入し、成功を収めた事例として知られています。世界最大級の音楽ストリーミングサービスであるSpotifyは、チームの自律性を尊重し、イノベーションを促進する文化を構築することで、膨大な数のユーザーに音楽体験を提供し続けています。

その特徴的な組織作りの1つが「Squad」と呼ばれるチーム体制です。Squadは、独自のフレームワーク(スクラム、カンバンなど)を選択し、自分たちの方法で目標を達成する権限を持ちます。さらに、チーム間の連携を促進するために、複数のSquadをまとめる部隊(Tribe)や専門領域ごとのチャプター(Chapter)、興味に基づくギルド(Guild)といったグループを形成しています。

このようにSpotifyでは、組織の柔軟性と効率性を高めるため、アジャイル的な組織作りに取り組んでいるのです。

全日空 

ANA(全日本空輸)は、1997年に航空券のインターネット予約やマイレージプログラムを導入するなど、早くからデジタル化に取り組んできました。同社は、ビジネス要求の変化に迅速に対応するため、モバイルアプリ開発においてアジャイル手法を導入。サービスごとにサイロ化していたシステムを、共通部分をAPIゲートウェイでアクセスできる構造に変更し、システムアーキテクチャをシンプル化しました。

アジャイル導入の際、米Pivotal Softwareのアジャイル開発支援サービス「Pivotal Labs」を参考に、課題整理やトライアル開発、評価を約5か月かけて実施。反復型開発やDevOpsを組織に定着させたのが成功のポイントといえるでしょう。

参照:激動の航空業界、たゆまぬ事業要求にアジャイル開発で応える―ANAシステムズ 

デンソー

自動車部品メーカーとして知られるデンソーでは、アジャイル開発を採用してプロダクトを発表しています。「yuriCargo」は、スマートフォンで運転をスコアリングするスマートフォン用のアプリケーション。

スマートフォンに内蔵されているGPSや加速度センサーを使って車の急停止や急加速、急ハンドルなどを検知して安全運転できているかを採点してくれます。さらに、ミッションをクリアするとメダルを獲得できるゲーム要素も楽しめます。

同社は、ユーザーのニーズを重視した「マーケットドリブン」「クライアントファースト」という考えを採り入れ、ユーザーからのフィードバックをもとに改善を繰り返し、2020年7月のローンチから5か月で1,700ユーザーの獲得に成功しました。

参照:「yuriCargo」で安心・安全なモビリティ社会を実現 組織と社会をアジャイルに変えるデンソーの挑戦

アジャイル開発を進めるために活用したいツール

アジャイル開発を効率的に進めたいのであれば、ツールを活用するのがおすすめです。ここでは、数あるツールの中からGitLabを紹介します。

GitLab

GitLabは、アジャイル開発を効率的に進めるための強力なツールで、ソフトウェア開発の全プロセスを1つのプラットフォームでカバーします。プロジェクト管理やアジャイルボード、CI/CD(継続的インテグレーション/デリバリー)、Wiki機能などチームで効率的に開発を進める機能が満載です。

TD SYNNEX ではアジャイル開発のプラットフォームとして活用できるパブリッククラウド(IaaS/PaaS)「Microsoft Azure」「Google Cloud」「IBM Cloud」などを取り扱っています。下記のページもあわせてご覧ください。

パブリッククラウド(IaaS/PaaS)とは
DevOps (デブオプス)とは?仕組みやメリット、アジャイル開発の違いなどをわかりやすく解説

アジャイル開発でユーザーニーズにあったプロダクトを

ユーザーニーズにあわせて柔軟な仕様変更ができるアジャイル開発は、変化の早い現代ビジネスにマッチした開発手法です。短期間で目に見えるプロダクトを開発し、ユーザーのフィードバックを受けながらブラッシュアップしていけば、自然と市場に受け入れられやすいプロダクトになるでしょう。ぜひ、本記事を参考にアジャイル開発の考え方をビジネスに採り入れてみてください。

[著者プロフィール]
Y.Kuroda
MLエンジニア&Web開発者&ITライター。MLエンジニアとして働きながらとSEOの知見を活かした記事を執筆しています。ライター業務を効率化するWebサービス『MOJI-KA』を開発・運用中です。

製品・サービスについてのお問合せ

情報収集中の方へ

導入事例やソリューションをまとめた資料をご提供しております。

資料ダウンロード
導入をご検討中の方へ

折り返し詳細のご案内を差し上げます。お問い合わせお待ちしております。

お問い合わせ