こんにちは。クラウドエース編集部です。

新型コロナウイルスの感染拡大を受け、多くの企業でニューノーマルに適応した DX 化が推進されている現在。「オンライン決済やテレワークに対応したプロダクトを開発するために、アジャイル開発が必要」と耳にしたことのある人も多いのはないでしょうか。

アジャイル開発とは、短期サイクルで設計からテストまでを繰り返しながら開発を進めていく手法で、途中変更に柔軟に対応できることや、スピーディにリリースできることが特徴です。今回は、アジャイル開発の概要とメリット、主な手法や開発の流れについて、わかりやすく説明していきます。

アジャイル開発とは

アジャイル開発とは、ソフトウェアやシステムにおける開発手法のひとつです。アジャイル(= agile )とは、英語で「素早い」「俊敏な」を意味する言葉です。その言葉通り、スピーディにソフトウェアやシステムをリリースできることが大きな特徴となっています。

簡単に説明すると、アジャイル開発では1~4週間という短い開発期間単位を採用して、計画、設計、開発、テストまでのサイクルを繰り返しながら、開発を進めていきます。優先度の高い機能から開発を行うことで、素早くリリースすることが可能です。また、リリース後に、依頼主やユーザーの声を製品に反映することもできます。大きな単位でシステムを区切らないため、開発途中に仕様や要件の変更が生じても柔軟に対応できることもメリットです。

このように、従来の開発手法に比べて、サービスインまでの期間を短縮できること、開発途中での仕様や要件の変更に対応しやすいことが、アジャイル開発の大きな特徴です。

従来のウォーターフォール開発との違いって?

アジャイル開発が登場する前は、「ウォーターフォール開発」と呼ばれる手法が一般的でした。ウォーターフォール開発では、アジャイル開発のように短い開発期間を採用するのではなく、最初に計画や全体の機能設計を決め、それに沿って開発やテストをしていきます。

ウォーターフォール開発には、開発スケジュールが立てやすかったり、予算の見積もりが取りやすかったりというメリットがある手法です。一方で、仕様や計画の変更がしにくかったり、リリース時に全ての要件をクリアしなければならなかったりというデメリットがあるのも事実です。最初に決定した設計・計画を重視する手法であるため、変更や不具合によっては大幅な後戻りが必要な場合もあり、時間やコストがかかるリスクもありました。

上記のようなウォーターフォール開発のデメリットを解消できる手法が、アジャイル開発です。アジャイル開発では最初に綿密な設計・計画を立てるのではなく、小さな単位で計画からテストを繰り返すため、不具合や要件の変更が生じた際にも戻る工数が少なく済みます。また、開発途中に仕様や要求の変更にも柔軟に対応できるため、開発途中に顧客からフィードバックを受け、ニーズに最大限応えることもできるのです。

アジャイル開発の手法

アジャイル開発とひとくちに言っても、さまざまな開発手法があります。ここでは、以下の3つのアジャイル開発の手法について解説します。

  • スクラム
  • エクストリーム・プログラミング( XP )
  • ユーザー機能駆動開発( FDD )

1つずつの手法について、詳しく見てみましょう。

スクラム

1つ目のアジャイル開発の手法は「スクラム」です。これは最も有名なアジャイル開発の手法と言えるでしょう。スクラムという言葉を聞くと、ラグビーの試合を思い浮かべる人もいるかもしれませんね。ラグビーにおけるスクラムとは、チームメンバーが肩を組み合い一団となり、ボールを前に進めることです。アジャイル開発におけるスクラムも、同じようにチームが一体となって開発を進める枠組みのことを指します。

スクラム開発の大きな特徴は、チームワークを重視することです。チームで開発を進めるために、スクラムには「役割分担」「バックログ」という仕組みがあります。

役割分担

スクラムでは基本的に、固定のメンバーで開発が進められます。チームメンバーにはそれぞれ、プロダクトの方向性を決定し、一定期間ごとに評価する「プロダクトオーナー」、計画に沿って開発を進める「開発者」、開発全体の調整役を担う「スクラムマスター」などの役割が与えられます。

スクラムでは1人のリーダーを立てるのではなく、チームメンバー全員が主体となり開発をします。そのため、生産性の高め目標を達成するには、全員と綿密にコミュニケーションを取り合うことが大切になってきます。

バックログ

バックログとは、簡単に言うとチームにおける開発目標や作業計画のことです。具体的には、「スプリント・バックログ」と「プロダクト・バックログ」の2種類があります。

1つ目のバックログは「プロダクト・バックログ」。これは、開発すべき機能や改善点などに優先順位をつけてリスト化したものを指します。プロダクト・バックログは定期的にチーム全員に共有され、全体の進捗状況を把握するためにも使われます。

2つ目のバックログは「スプリント・バックログ」。スプリントとは、1週間、2週間といったある一定の開発サイクルの単位を指します。スプリント・バックログはプロダクト・バックログをもとに作成され、いつ、どんな機能を追加するのか、そのためにどんな作業が必要かなどの計画が記されます。これら2つのバックログをもとに、開発を進めます。

このように、チームで役割分担をしながら、計画や進捗を全員でチェックして開発を進めていくのが、スクラムの特徴です。

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

2つ目のアジャイル開発の手法は「エクストリーム・プログラミング( Extreme Programming = XP )」です。これは、プロジェクトの仕様や要件は開発途中で変更されることを前提にして、事前の計画よりも途中変更への柔軟な対応を重視する手法です。変化に細かく対処するため、素早いリリースが必要な場合や、少人数チームでの開発に最適とされます。

エクストリーム・プログラミングの大きな特徴は、以下の5つの価値が提唱されていること。これらの価値をチーム内で共有しながら開発を進めることで、エクストリーム・プログラミングの真価が発揮されます。

  • コミュニケーション…チーム内および顧客との綿密なコミュニケーションを重視する
  • シンプル…最初の設計は必要最低限にして、追加が必要な場合は随時対応する
  • フィードバック…頻繁にテストを行い、顧客からのフィードバックを受けて追加修正する
  • 勇気…仕様や設計の変更に立ち向かう勇気を持つ
  • 尊重…チームメンバーを互いに尊重し合う

これらの価値を重視しながら開発を進めることで、エクストリーム・プログラミングの柔軟性の高さやリリースまでの期間短縮などのメリットを十分に活かせます。

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

3つ目の手法は、「ユーザー機能駆動開発( Feature Driven Development = FDD )」。これは、ユーザー目線に立って、価値のある機能の開発を重視した手法です。ユーザーがプロジェクトにおいて必要とする機能を洗い出し、設計、開発、テストを短期で繰り返し、適切な間隔でユーザーに提供します。

ユーザー機能駆動開発では、開発する機能ごとにチームを分けて計画や設計をします。そのため、大規模な案件にも対応しやすいというメリットがあります。また、機能に重点を置いた方法であるため、価値の高い機能を開発できることも大きな利点と言えるでしょう。

アジャイル開発の工程・流れ

ここまで、アジャイル開発の3つの手法について紹介してきました。続いては、アジャイル開発では具体的にどのような工程で開発が進められるかについて見ていきましょう。どの手法であっても、基本的には同じ流れで開発が進められます。

冒頭で解説した通り、アジャイル開発では、1~4週間という一定の期間で計画からテストまでを進めていきます。このサイクルのことを「イテレーション( iteration )=反復・繰り返し)」と呼びます。イテレーションごとに顧客のフィードバックを受け、システム全体に新たな機能を追加していくのです。

具体的な流れとしては、まずは開発するプロジェクト全体を、短い期間での開発範囲に細かく分けます。そして、機能や業務プロセスの優先度を踏まえて、どの機能をいつ開発するかを決めます。ただし、この段階では細かい計画や設計は決めません。前述の通り、アジャイル開発では仕様や要件の途中変更が前提になっているためです。

大まかな計画を立てた後は、すぐに開発に進みます。計画で決められた範囲の機能の要求を決定し、設計、実装、テストを行います。そして、イテレーションごとに顧客のテストに合格した機能をリリースします。フィードバックに応じて、機能の修正や追加をすることもあるでしょう。

その後は、次に開発する機能を決めて、設計〜リリースまでの流れを繰り返します。

アジャイル開発はクラウド利用で真価を発揮する

ここまで解説してきた通り、アジャイル開発には、スピーディにサービスをリリースできたり、顧客やユーザーのフィードバックを反映させやすいというメリットがあります。

しかし、このようなメリットは、オンプレミス環境では十分に感じられない場合があります。アジャイル開発の利点を活かすためには、クラウド環境が必須と言えます。

その理由は、オンプレミス環境では、サーバやネットワーク機器の調達に時間を要するため、1〜4週間という短い期間で次々と開発しても、サーバーがなければデプロイできないからです。また、オンプレミス環境は、本番との環境が異なるため、実際のパフォーマンスをテストしにくいという問題もあります。

しかし、クラウドなら開発環境・本番環境共にインターネットからアクセスすることになります。また、開発した機能を実装したサーバを一時的に用意することも可能です。これらを用いることで、顧客に限定公開し、リリース前にフィードバックを受けることもできるようになったのです。さらに、パフォーマンスはリリース後にでも調整できるため、調達待ちもなくなります。

このように、アジャイル開発ではクラウド環境を選択することで、スピーディなリリースや、顧客のフィードバックに対する柔軟な修正・変更を実現でき、そのメリットを十分に活かせるのです。

まとめ

ここまで、アジャイル開発の概要や手法、流れについて紹介してきました。アジャイル開発は、従来のウォーターフォール開発と比較して、開発途中の仕様や要件の変更への柔軟な対応や、スピーディにサービスインできることが強みの開発手法です。

このようなメリットから、アジャイル開発は特に DX 推進に適した手法として現在注目されています。ただし、当然ですが、全てのプロジェクトでアジャイル開発を採用すべきというわけではありません。例えば、安定性が最重視される基幹システムの開発や、開発途中で仕様が変更されることがないケースでは、ウォーターフォール開発の方が効率よく開発できるでしょう。

この記事を参考にしながら、各プロジェクトに最適な開発手法の選択を検討してみてください。

合わせて読みたい