アジャイル開発では、要件定義(および要件定義書)やドキュメントは不要といった話をよく耳にします。では、どのように要件定義が行われ、システムや要件(要求)に対する成果物が作られていくのでしょうか。そこで本記事では、アジャイル開発の要件定義における前提やその方法、実際に行う流れから「作られる成果物」まで詳しく解説します。そもそもアジャイル開発とはそもそもアジャイル開発とは、プロジェクトを小さい単位で区切って開発する手法のことです。短期間のサイクルで開発工程を繰り返し(イテレーション)、計画から設計、実装からテストといった順にリリースを繰り返します。機能単位で開発を進めることで、プロジェクトの大枠を決めてプロジェクトをスタートでき、計画途中の仕様変更にも柔軟に対応できます。アジャイル開発の主流であるスクラムとはアジャイル開発の主流となっているスクラム(Scrum)は、チームが一丸となってシステム開発を行うフレームワークのことです。今回は、このアジャイル開発における要件定義について詳しく解説しますので、概要から知りたい方は以下のページをご覧ください。【関連記事】【2022年版】アジャイル開発とは?特徴や費用・見積もりの内容までプロが解説アジャイル開発の要件定義における基本アジャイル開発の要件定義は、従来型であったウォーターフォールと比べて厳密な仕様設計・内容の決定を実施しない特徴があります。およその仕様や要求を取りまとめ、設計に対して余白を残す形で定義することにより「開発後からでも柔軟に仕様変更へ対応できる」ためです。変化し続ける市場に対抗するためには、開発途中での仕様変更が必要不可欠となります。また、小さな単位で開発を繰り返すことで完成した機能ごとに顧客へ提供でき、細かくフィードバックを実施・反映できることで価値の最大化を狙うこともできます。ただし、アジャイル開発には必ずしもこの要件定義が実施されるとは限りません。要件定義はフェーズを指し示すものではなく、要件(要求)の大枠を決めるまでのプロセスとして取り扱われる傾向にあるからです。また、要件という言葉を使わずに「ユーザーストーリー(顧客の意図や要求の断片など)」という概念によって、ステークホルダーとの合意形成を実施するといったケースもあります。ここからは、もう少し詳しく要件定義について知るために、前提となる知識を以下にわけて補足します。アジャイル開発における要件定義の前提ドキュメント・計画不要という認識の誤りアジャイル開発における要件定義の前提アジャイル開発の要件定義は、「顧客(クライアント)は要件(要求)を正確に明言化および理解できていない」という前提で成り立っています。例えば、システムは何かの課題を解決するために作られるのが一般的ですが、実際に開発する際には未知数である項目が多くあります。仮説を前提に作られたものである以上、「解決できるはず」という状態からプロジェクトが進むはずです。では、この要件(要求)を明確に満たすシステムを作るためにはどうするべきかというと、「実際に作りながら検証する」しか方法が有力な候補となります。アジャイル開発は、この側面をよく理解して作られており、機能を作りながら実際に検証(フィードバックを得る)ことで、求める要件にマッチしたシステムを開発できる手法です。また、ウォーターフォールにおける仕様変更というデメリット(ネガティブ)な傾向に対し、アジャイルは最初から要件定義を細かく決めておくのは困難であるという前提によって、仕様変更はいわゆるメリット(ポジティブ)に置き換えられます。こうした要件定義の前提があるからこそ、現代の急速に変化を続ける市場に対し、適切なシステムやプロダクトを作り上げる方法としてアジャイル開発を選ぶといったことがあるわけです。そして、アジャイル開発における要件定義は、この要件(要求)の大枠を決めることで、どのような機能が必要で・どのように開発するのかを決めて(プロダクトバックログ)、優先順位をつけて落とし込むことで開発を行う形となります。ドキュメント・計画不要という認識の誤りアジャイル開発は、しばしば「ドキュメントは不要の開発」「計画を立てない開発」といった誤解を生むことがあります。その背景には、アジャイル開発が普及するきっかけと言われている2001年「アジャイルソフトウェア開発宣言」に記述された以下の文章が挙げられます。プロセスやツールよりも個人と対話を、包括的なドキュメントよりも動くソフトウェアを、契約交渉よりも顧客との協調を、計画に従うことよりも変化への対応を、出典:アジャイルソフトウェア開発宣言アジャイル開発におけるドキュメントや計画の必要性が低いとする文面により、こうした誤解が生まれたとされています(諸説あります)。しかし、あくまでも価値をどこに置くかであり、アジャイル開発には要件定義およびドキュメントや計画が必要であるケースはあります。ただし、要件にあわせて複数の機能が求められる一方で、その「求める要件」が変われば「機能の選択肢が異なる」という性質があり、ウォーターフォールのように細かく内容を決めるといった形式をとることはほぼないでしょう。アジャイル開発の要件定義書とはそもそも要件定義書とは、開発会社が情報をまとめて、発注者に提出する書類のことです。成果物の完成イメージをすり合わせできるもので、ヒアリングによって合意を得られた内容が盛り込まれます。アジャイル開発は、仕様変更に強い側面を持った開発手法であるものの、限られた工数で際限なく変更を続けることはできません。あらかじめ作るべき機能であったり、どのようなモデルに仕上げるのかだったりなどを把握しておく必要があります。そのため、アジャイル開発の要件定義書では「ユーザーストーリー」を基本とし、そこに合わせて以下の例に挙げる内容を書き記します。誰がなぜ何をしたいのか などステークホルダーとの合意形成には、この要件定義書を作成する手法が一般的です。要件定義書となるユーザーストーリーの原則アジャイル開発における要件定義書となるユーザーストーリーは、以下に挙げた6つの原則にしたがって書くとまとめやすくなります。Independent(独立している)Negotiable(交渉可能である)Valuable(価値がある)Estimable(見積もりができる)Small(小さい)Testable(テストできる)これらの頭文字をとって「INVEST」と呼ばれ、開発側で発生する事象に影響されにくく、顧客(クライアント)の視点を常に意識して開発を継続するために作られます。また、要件定義書となるユーザーストーリーは小さく作られることでスケジュールを立てやすく、さらには要件の変更によって必要な機能の変化にも柔軟に対応できるというアジャイルならではといえます。なお、要件定義書の基本については以下の記事でまとめているので、ぜひ参考にしてください。【関連記事】システム開発の要件定義書とは?項目や内容をプロがまとめてみた【一言メモ】要件定義には、依頼の内容やシステム全体の概要および機能要件に加えて、予算やスケジュールが記載されています。一方で、ユーザーストーリーには「誰が・どのような目的で・何をしたいのか」という機能がかなえるべき経験・体験が短い文章でまとめられています。要件定義ではあるものの、その粒度は大きく異なり、要件が変化するかどうかといった部分にも違いがあるのが特徴です。ユーザーストーリーの活用と流れユーザーストーリーは、プロジェクトのマネージャーまたはプロダクトオーナー(スクラムの場合)によって作成されるのが基本です。そして、ストーリーの実装が予定されている間はエンジニアに共有され、そのストーリーが完了した時点で顧客へ返還される仕組みとなります。ユーザーストーリーはそのもので利用するものではなく、ユーザーストーリーマッピングによって全体を視覚化することがあるため、優先順位と時系列の軸で記されることでプロジェクトを俯瞰でき、どのようにリリースするか(リリース計画)が決められるといった流れとなることもあります。アジャイル開発の要件定義に関連するドキュメントとはアジャイル開発では、「ドキュメントは不要である」といった認識が広がっている傾向にあります。しかし、実際にはドキュメントを使用することがあり、以下の種類に大別できます。開発者用:設計書等の開発に必要な情報をまとめたドキュメント顧客用:顧客との合意形成に必要な認識をまとめたドキュメント契約書類:顧客との契約に必要な形式的なドキュメント保守運用書類:保守・運用に関する情報をまとめたドキュメントいずれもある程度まで形式が決まっていますが、開発者用のドキュメントは各社によって異なります。例えば、ソースコードの書き方が決められていたり、メンテナンスを実施しやすいフォーマットであったりするなどが挙げられます。アジャイル開発の要件定義における流れアジャイル開発の要件定義における流れは、以下のとおりです。ユーザーストーリーを作成するユーザーストーリーマッピングを実施するプロダクトバックログを作成するまず、顧客(クライアント)が持つ要件(要求)に合わせて、ユーザーストーリーを作成します。この際、本記事で触れた以下の原則(INVEST)にしたがって書くことを意識します。Independent(独立している)Negotiable(交渉可能である)Valuable(価値がある)Estimable(見積もりができる)Small(小さい)Testable(テストできる)次に、必要に応じてユーザーストーリーから「ユーザーストーリーマッピング」を実施します。ペルソナを設定したり、ユーザーの行動・感情を時系列に並べたりすることで、価値を視覚的に整理し、プロダクトの方向性を明確化するためです。そこから、プロダクトバックログと呼ばれる「開発チームが目標を達成するために必要なアイテム・タスク」に、優先順位をつけてリスト化したものを作成します。なお、このバックログは顧客(クライアント)が理解できる言葉でまとめるようにし、進捗の共有にも用いられます。こうした流れでアジャイル開発の要件定義が実施され、開発効率や完成率を高めながら、求められる要件(要求)にあったシステムを開発する形が一般的です。【補足】アジャイル開発の要件定義で成果物は何になるのか補足として、アジャイル開発の要件定義で決められない「成果物」は何になるのかに触れておきます。アジャイル開発の要件定義では、変化する要件(要求)に対応するため、ユーザーストーリーが用いられます。その際、明確な機能のゴールを示すものではないため、『成果物が曖昧』であることが特徴的です。ただ、アジャイル開発のゴールは「特定のシステムを開発すること」ではなく、「要件(要求)を満たすこと」であることから、成果物を納品するという形式でないケースが意外に多くあります。あえて、成果物として明確にする場合には、アジャイル開発におけるスプリントによって開発した「動くシステム(いわゆるデモ)」の存在が挙げられます。スプリントにおいて、レビューが行われる際にもこのデモを成果物とし、議論が交わされることになるためです。こうした背景からアジャイル開発の成果物を考えた際には、「スプリントで作られたデモ」を想定しておくと良いでしょう。なお、スプリントレビューに関しては、以下のページをご覧ください。【関連記事】スプリントレビューとは|概要や目的・やり方をわかりやすく解説%3Cdiv%20style%3D%22background-color%3A%20%23eee%3B%20border%3A%201px%20solid%20%23ddd%3B%20padding%3A%2020px%3B%20margin%3A%20auto%3B%22%3E%0A%3Ca%20href%3D%22https%3A%2F%2Fn-v-l.co%2Fservice%2Ftechunit%3Futm_source%3Dblog%26utm_medium%3Dbanner%26utm_campaign%3Darticle-inside-banner%22%20target%3D%22_blank%22%20rel%3D%22noopener%22%20style%3D%22display%3A%20block%3B%20text-decoration%3A%20none%3B%22%3E%0A%20%20%20%20%3Cimg%20src%3D%22https%3A%2F%2Fstorage.googleapis.com%2Fstudio-cms-assets%2Fprojects%2FmoWvdvrgq6%2Fs-2400x1000_v-frms_webp_ddb5b203-e59b-466d-8584-d2f68df1e023.png%22%20alt%3D%22%E3%83%86%E3%83%83%E3%82%AF%E3%83%A6%E3%83%8B%E3%83%83%E3%83%88%22%20style%3D%22width%3A%20100%25%3B%20height%3A%20auto%3B%22%3E%0A%3C%2Fa%3E%0A%0A%20%3Cp%20style%3D%22color%3A%20%23555%3B%20line-height%3A%201.6%3B%22%3ETechUnit%EF%BC%88%E3%83%86%E3%83%83%E3%82%AF%E3%83%A6%E3%83%8B%E3%83%83%E3%83%88%EF%BC%89%E3%81%AF%E3%80%81%E6%8A%80%E8%A1%93%E3%82%B3%E3%83%B3%E3%82%B5%E3%83%AB%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%81%A8%E5%B0%82%E5%B1%9E%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%83%81%E3%83%BC%E3%83%A0%E3%81%AE%E6%A7%8B%E7%AF%89%E3%82%92%E8%A1%8C%E3%81%86%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%A7%E3%81%99%E3%80%82%3C%2Fp%3E%0A%20%3Cp%20style%3D%22color%3A%20%23555%3B%20line-height%3A%201.6%3B%22%3E%E4%B8%8B%E8%A8%98%E3%81%AB%E5%BD%93%E3%81%A6%E3%81%AF%E3%81%BE%E3%82%8B%E6%96%B9%E3%81%AF%E3%81%8A%E6%B0%97%E8%BB%BD%E3%81%AB%E3%81%94%E7%9B%B8%E8%AB%87%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%3C%2Fp%3E%0A%20%3Cdiv%0A%20%20%20style%3D%22margin-top%3A%2020px%3B%20padding%3A%200%3Bbackground-color%3A%20%23fff%3B%20margin-bottom%3A%2010px%3B%20padding%3A%2010px%3B%20border-radius%3A%205px%3B%20box-shadow%3A%200%202px%204px%20rgba(0%2C0%2C0%2C0.1)%3B%22%3E%0A%20%20%20%3Cul%20style%3D%22list-style%3A%20none%20!important%3B%20%22%3E%0A%20%20%20%20%20%3Cli%3E%E2%9C%94%20%3Cspan%20style%3D%22color%3A%20red%3B%22%3E%20%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%81%8C%E9%80%80%E8%81%B7%E3%81%97%E3%81%A6%E3%81%97%E3%81%BE%E3%81%A3%E3%81%9F%3C%2Fspan%3E%3C%2Fli%3E%0A%20%20%3Cli%3E%E2%9C%94%20%3Cspan%20style%3D%22color%3A%20red%3B%22%3E%20%E9%96%8B%E7%99%BA%E3%81%8C%E9%80%B2%E3%81%BE%E3%81%AA%E3%81%84%3C%2Fspan%3E%3C%2Fli%3E%0A%20%20%3Cli%3E%E2%9C%94%20%3Cspan%20style%3D%22color%3A%20red%3B%22%3E%20%E3%81%99%E3%81%90%E3%81%AB%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%82%92%E5%A2%97%E3%82%84%E3%81%97%E3%81%9F%E3%81%84%3C%2Fspan%3E%3C%2Fli%3E%0A%20%20%3Cli%3E%E2%9C%94%20%3Cspan%20style%3D%22color%3A%20red%3B%22%3E%20%E4%BB%8A%E4%BE%9D%E9%A0%BC%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E9%96%8B%E7%99%BA%E4%BC%9A%E7%A4%BE%E3%81%AB%E4%B8%8D%E6%BA%80%E3%81%8C%E3%81%82%E3%82%8B%3C%2Fspan%3E%3C%2Fli%3E%0A%20%20%20%3C%2Ful%3E%0A%20%3C%2Fdiv%3E%0A%0A%20%3Cp%20style%3D%22color%3A%20%23555%3B%20line-height%3A%201.6%3B%22%3E%0A%20%20%20%3Cspan%20style%3D%22color%3A%20%23007bff%3B%20font-weight%3A%20bold%3B%22%3E%E8%B2%BB%E7%94%A8%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%97%E3%81%AA%E3%81%84%E3%81%94%E7%9B%B8%E8%AB%87%E3%81%AE%E6%AE%B5%E9%9A%8E%E3%81%A7%E3%80%81%E3%80%8C%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E8%A7%A3%E6%9E%90%E3%80%8D%E3%80%8C%E8%A6%81%E4%BB%B6%E5%AE%9A%E7%BE%A9%E3%80%8D%E3%81%AB%E9%96%A2%E4%B8%8E%E3%81%97%E3%80%81%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%AF%8E%E3%81%AB%E6%9C%80%E9%81%A9%E3%81%AA%E3%83%81%E3%83%BC%E3%83%A0%E3%82%92%E3%81%94%E6%8F%90%E6%A1%88%E3%81%97%E3%81%A6%E3%81%8A%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2Fspan%3E%0A%20%3C%2Fp%3E%0A%3Cp%20style%3D%22color%3A%20%23555%3B%20line-height%3A%201.6%3B%22%3E%0A%E3%83%97%E3%83%A9%E3%83%B3%E3%81%AB%E5%BF%9C%E3%81%98%E3%81%A6%E6%9F%94%E8%BB%9F%E3%81%AA%E9%96%8B%E7%99%BA%E4%BD%93%E5%88%B6%E3%82%92%E6%A7%8B%E7%AF%89%E3%81%84%E3%81%9F%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E3%82%82%E3%81%A1%E3%82%8D%E3%82%93%E3%80%81%E9%96%8B%E7%99%BA%E7%8A%B6%E6%B3%81%E3%81%AB%E5%BF%9C%E3%81%98%E3%81%9F%E3%83%A1%E3%83%B3%E3%83%90%E3%83%BC%E3%81%AE%E5%A2%97%E6%B8%9B%E3%82%82%E5%8F%AF%E8%83%BD%E3%81%A7%E3%81%99%E3%80%82%3C%2Fp%3E%0A%0A%20%3Cp%20style%3D%22color%3A%20%23555%3B%20line-height%3A%201.6%3B%22%3E%0A%20%20%20%3Cspan%20style%3D%22color%3A%20%23007bff%3B%20font-weight%3A%20bold%3B%22%3E%E7%84%A1%E6%96%99%E7%9B%B8%E8%AB%87%E3%82%82%E6%89%BF%E3%81%A3%E3%81%A6%E3%81%8A%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2Fspan%3E%E3%81%BE%E3%81%9A%E3%81%AF%E3%81%8A%E6%B0%97%E8%BB%BD%E3%81%AB%E3%81%8A%E5%95%8F%E3%81%84%E5%90%88%E3%82%8F%E3%81%9B%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%EF%BC%81%3C%2Fp%3E%0A%20%3Cdiv%20style%3D%22text-align%3A%20center%3B%20margin-top%3A%2030px%3B%20margin-bottom%3A%2020px%22%3E%0A%20%20%20%3Ca%20href%3D%22https%3A%2F%2Fn-v-l.co%2Fservice%2Ftechunit%3Futm_source%3Dblog%26utm_medium%3Dbanner%26utm_campaign%3Darticle-inside-banner%22%0A%20%20%20%20%20target%3D%22_blank%22%20rel%3D%22noopener%22%0A%20%20%20%20%20style%3D%22display%3A%20block%3B%20background-color%3A%20%23ff9d00%3B%20color%3A%20white%3B%20padding%3A%2020px%2020px%3B%20text-decoration%3A%20none%3B%20border-radius%3A%205px%3B%20border%3A%201px%20solid%20%23d67c00%3B%20box-shadow%3A%203px%203px%205px%200px%20rgba(0%2C0%2C0%2C0.3)%3Bwidth%3A50%25%3Bmargin%3A%20auto%3B%22%3E%0A%20%20%20%20%20%E3%81%8A%E5%95%8F%E3%81%84%E5%90%88%E3%82%8F%E3%81%9B%E3%81%AF%E3%81%93%E3%81%A1%E3%82%89%20%20%20%3C%2Fa%3E%0A%20%3C%2Fdiv%3E%0A%3C%2Fdiv%3E%0Aまとめアジャイル開発の要件定義は、ユーザーストーリーを作成することで対応します。ユーザーストーリーはマッピングされたり、プロダクトバックログを作成したりするのに使われ、プロジェクトにおける要件(要求)を満たした成果物を開発する流れです。また、以下の流れで要件定義が行われるのが基本となります。ユーザーストーリーを作成するユーザーストーリーマッピングを実施するプロダクトバックログを作成する要件定義書となるユーザーストーリーは小さく作られることでスケジュールを立てやすく、さらには要件の変更によって必要な機能の変化にも柔軟に対応できるというアジャイルならではといえます。ぜひ本記事を参考に、アジャイル開発によるシステム開発を検討してみてください。