アジャイル開発は、ウォーターフォール開発と並んで、ソフトウェア開発の主要なスタイルです。本記事ではアジャイルとは何か、基本的な言葉の説明をし、ウォーターフォール開発との比較を交えつつ、それぞれのメリット・デメリットを見ていきます。さらにアジャイル開発全体の流れを説明します。

アジャイル開発とは?

21世紀に入って誕生した、新しいプロダクト開発の手法がアジャイル開発です。ここでは従来の開発手法であるウォーターフォール開発と比較しながら、アジャイルの手法を見ていきましょう。

アジャイルとは?

「アジャイル」とは「素早い」を意味するagileという言葉から来ています。「アジャイル」という言葉が広く知られるようになったのは、2001年2月に出された「アジャイルソフトウェア開発宣言」がきっかけでした。

この開発宣言を出したのは、従来の時間がかかり、硬直した開発手法に不満を抱いていた17人のソフトウェア開発者たちです。

彼らはユタ州に集まり、自由な雰囲気の中でディスカッションを重ね、自分たちに共通する価値観を「アジャイルソフトウェア開発宣言」にまとめたのです。その宣言の中心となるのが以下のマインドセットでした。

プロセスやツールよりも個人と対話を、
包括的なドキュメントよりも動くソフトウェアを、
契約交渉よりも顧客との協調を、
計画に従うことよりも変化への対応を  

この背景にあるのは、時間をかけて立派なソフトウェアを開発するよりも、クライアントの困りごとをすばやく解決して満足してもらおう、そこからさらにクライアントも含めて話し合いとテストを繰り返しながら、少しずつソフトウェアを改良し、完成度を高めていこう、という考え方でした。以降このアジャイルの手法は、ソフトウェア開発の主流となっていきました。

  • アジャイル開発とは?

    上流から段階を経て下りていく開発イメージを滝になぞらえたのがウォーターフォール開発です

ウォーターフォール開発とは?

アジャイル開発について知る前に、アジャイル開発とは対比して語られることもある「ウォーターフォール開発」について紹介します。「ウォーターフォール」とは滝のことです。そこから転じて、ウォーターフォール開発とは、滝の水がだんだん下へ流れていくように、一つひとつ工程を完了させながら、完成に近づけていく手法のことを指します。

古くから建設業や製造業で取られていた手法で、最初にクライアントが求める要求定義を元に設計がなされ、全体のスケジュールが決まります。各工程は専門の担当者によってスケジュール通りに進められます。

ウォーターフォール開発のメリットとデメリット

ウォーターフォール開発の主なメリットには次の2点を挙げることができます。

  1. 開発されるものが最初に確定されるため、計画が立てやすい
  2. 綿密に計画が立てられているため進捗管理がしやすい

反面デメリットには、次の2点が挙げられます。

  1. 途中で変更することが難しい
  2. 全体の完成までに時間がかかる

アジャイル開発の誕生

ウォーターフォール開発の2点の大きなデメリットは、クライアントのニーズに柔軟な対応が求められる場合や、速やかな問題解決が望まれるソフトウェア開発にとっては重大な問題でした。変化への対応と素早い開発への要請から、アジャイル開発という新しい開発手法が生まれたのです。

  • アジャイル開発とは?

    ソフトウェア開発は従来のものとは違う開発手法が求められました

アジャイル開発の特徴

アジャイル開発の最大の特徴は、ウォーターフォール開発よりも短いサイクルで製品をリリースできる点にあります。

アジャイル開発では、クライアントの要求を元に設計し、開発し、テストした段階で、必要最小限の機能を持った製品を一旦リリースします。その製品をクライアントに使ってもらい、そのフィードバックを受けて、さらに設計、開発、テストを行い再度リリースする…というサイクルを経て、ソフトウェアをクライアントが求める完成形へと近づけていきます。

  • アジャイル開発の特徴

    アジャイル開発の模式図

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

アジャイル開発は主に以下の4点のメリットがあります。

  1. クライアントと合意形成を重ねながら開発するため、クライアントニーズを十分に満たした開発が可能になる
  2. 開発期間を短縮できる
  3. ムダのない開発ができる
  4. チーム全体で取り組むため、チーム力が向上する

反面、以下の2点のデメリットもあります。

  1. 事前に厳密な計画を立てず、変更も多いため、方向性がぶれやすい
  2. 全体のスケジュールや進捗状態が把握しにくい

このようなデメリットを回避するために、アジャイル開発では定期的な「ふりかえり」が重要視されています。

  • アジャイル開発の流れ

    すべてを完成させてリリースではなく、大枠ができあがった時点で一旦リリースし、そこから細かくアップデートを重ねることで、完成に近づけていくのがアジャイル開発の特徴です

アジャイル開発の流れ

アジャイル開発にはいくつかの手法があります。ここではその中で代表的なスクラムを元に、アジャイル開発の流れを見ていきましょう。

スクラムとは?

スクラムは、アジャイル開発の中でももっとも古くから行われているもので、チームが一丸となって行うことから、ラグビーの「スクラム」になぞらえて呼ばれる手法です。

スクラムを始めアジャイル開発では、関係者全員を「チーム」として扱います。チームの中には、開発に直接関与するスクラムチームと、製品のクライアントやユーザー、また会社内で製品に間接的に関与する営業部や経営陣などをステークホルダー(利害関係者)と呼ばれる人々がいます。

製品のユーザーや経営陣も巻き込んだ「チーム」によって、スクラムは担われます。

プロダクトバックログ

従来の「要件定義」に変わるもので、実装予定の機能に優先順位をつけて記述したものです。優先順位がつけられた作業リストを全員が把握できるようにしておきます。

プロダクトバックログが従来の「要件定義」と大きく異なるのは、「ユーザーストーリー」というストーリー形式で書かれている点です。

ストーリー形式で「誰のために(ペルソナ)」「何のために(ニーズ)」「何をする(目的)」として記載されます。そうすることによってチーム全体がつねに「自分たちが誰のために、何のために、何をしようとしているのか」を把握できるようになります。

スプリントプランニング

プロダクトバックログを元に、1回の小さなサイクル(スプリントと呼ばれる1~4週間で決められた期間)の計画を立てます。その期間内に達成すると選定されたタスクリストは、スプリントバックログと呼ばれます。

デイリースクラム

毎日の小さなサイクルの中での開発をデイリースクラムと呼びます。決まった時間にミーティングを行い、1日の方向性やタスクを確認した後、1日の小さなスクラムを完了します。

スプリントレビュー

1回のスプリントが終了した時点で、ステークホルダーを交え、デモンストレーションを行います。要求に応えられていないところはないか、開発が不十分のところはないかを確認します。レビューの結果、ステークホルダーの満足が得られる機能はリリースされ、不十分な機能は次のスプリントへ持ち越されます。

スプリントレトロスペクティブ(ふりかえり)

スプリント全体をふりかえり、問題点などを確認し、次のスプリントへつなげていきます。

  • アジャイル開発の特徴

    アジャイル開発のスクラムという手法はラグビーのスクラムに由来します

アジャイル開発とスパイラル開発の違い

アジャイル開発とウォーターフォール開発のほかに、「スパイラル開発」と呼ばれる開発モデルがあります。ここではスパイラル開発とアジャイル開発の違いについて説明します。

スパイラル開発とは、システム開発の工程をいくつかの機能別に区切ったうえで、「設計」「実装」「テスト」などを繰り返していきながら完成を目指す方法を指します。アジャイル開発とスパイラル開発はシステムの開発工程を反復するという共通点を持ちますが、開発において重要視する点が異なります。

アジャイル開発

アジャイル開発は最初から明確に計画を立てずに開発対象となるシステムを機能ごとに分割し、それぞれに「計画」「設計」「実装」「テスト」といった工程を行う手法です。少しずつ機能を追加開発していきながら、最終的にシステム全体の開発を行うというイメージです。機能ごとに開発工程を反復する品質重視の手法であるため、顧客やユーザに見せる段階でも一定のクオリティーは担保されています。

スパイラル開発

スパイラル開発は初期段階で機能の方向性を明確に設計したうえで、それを具体化したプロトタイプを作成します。一通り動作が確認できるレベルのプロトタイプなので、最初の時点では十分なクオリティーに達していません。そのプロトタイプを顧客やユーザに評価してもらい、その評価に対して工学的分析を行って設計とプロトタイプの反復を繰り返すという計画重視の手法です。

***

「顧客の困りごとを素早く解決するために、何を提供すべきか」。これは今日のあらゆる企業が問われていることです。アジャイル開発はその回答のひとつとして、ソフトウェア開発の世界で誕生しました。

顧客の「困りごと」を分解し、重要な問題を素早く解決することに焦点を当てたアジャイル開発の基本を理解することは、ソフトウェアやアプリの開発を目指す人にとって、大きな助けになります。

見慣れない言葉の多い分野ですが、基本を理解し、実践に移す中で、言葉も自然に理解できるようになります。アジャイル開発の基本的な手法と流れを理解することで、実践に役立ててください。