ユーザーストーリーとは何か?アジャイル開発におけるユーザー要求について解説
ユーザーストーリーとは
ユーザーストーリーとは、システムがユーザーにとってどのような価値をもたらすのかを示すものです。
アジャイル開発において、要件定義の代わりに使われる概念です。1つのユーザーストーリーはとても短いものですが、必ず1つの価値があります。
ユーザーストーリーは、顧客とプログラマが会話をするためのメモとしての役割も担うため、専門用語はなるべく使わず、ユーザーが日常的に使う言葉で作成します。
ユーザーストーリーの作成方法
ユーザーストーリーの3C
ユーザーストーリーは、次に挙げる"Card(カード)"、"Conversation(会話)"、そして"Confirmation(確認)"という3つの「C」に注意して作成していきます。
ここからはユーザーストーリーの3つのCを解説していきます。
Card(カード)
ユーザーストーリーはカードまたは付箋などに書かれます。
Conversation(会話)
顧客の要求の詳細はカードを手がかりにして、会話を通じて顧客からプログラマに伝えられます。
Confirmation(確認)
顧客とプログラマに認識の違いがないか、正しく実装されているか、受け入れテストを行います。
ユーザーストーリーのテンプレート
Cardに記載されるテンプレートとして次のものが提唱されています。
- “As a <who>, I want <what> so that <why>"
この文章を日訳すると、以下のようになります。
- 『<who>として、<what>を達成したい。それは<why>だからだ』
テンプレートに当てはめると、例えば「銀行の顧客として、ATMからお金を引き出したい。それは購入したいものがあるからだ」といったユーザーストーリーができます。
ユーザーストーリーの原則
ユーザーストーリーは次に挙げる6つの原則に従うと書きやすいとされています。それぞれの単語の頭文字をとって『INVEST』と呼ばれます。
Independent(独立している)
ユーザーストーリーはそれぞれ独立して重複しないようにします。重複するとスケジュールが任意に立てられないためです。
Negotiable(交渉可能である)
ユーザーストーリーは機能を明示的に約束するものではありません。詳細は開発中に顧客とプログラマによって共同作成されます。よって、交渉可能なものでなければいけません。
Valuable(価値がある)
ユーザーストーリーは、顧客にとって価値があるものが書かれている必要があります。
Estimable(見積もりができる)
正確な見積もりは必要ありませんが、顧客がストーリーを順位付けすることができれば、スケジューリングがしやすくなります。
Small(小さい)
ユーザーストーリーは最大で数人から数週間の作業に相当するのが望ましいです。ストーリーが大きくなると、正確な見積もりが得られないため分割します。
Testable(テストできる)
ユーザーストーリーが達成できているのか、顧客が確認できる必要があります。
ユーザーストーリーとユースケースとの違い
ユーザーストーリーとよく似た概念にユースケースがあります。
ユースケースはユーザー(アクター)とシステムのやり取りを定義します。
例えば、「顧客はATMからお金を引き出す」というのがユースケースです。ユースケースは要件定義であり、その後に分析、設計といったプロセスが続きます。
ユーザーストーリーは要件ではありません。ユーザーストーリーはあくまで視点はユーザーにあります。ユーザーストーリーを作成した後は、顧客とプログラマの会話というプロセスになります。そうして詳細が決まっていきます。
なぜユーザーストーリーが必要なのか
アジャイル開発では詳細なスケジュールは決めません。短いサイクルを繰り返している間に全体像が見えづらくなります。そのため、開発の軸がずれてきたり、スケジュールのコントロールが難しくなったりするというデメリットがあります。
ユーザーストーリーは、開発側の都合に引きずられず、顧客の視点を維持しながら開発を進めるために必要です。また、一つひとつのストーリーは小さく作られるのでスケジュールが立てやすくなります。
また、アジャイル開発では要件は変更されることを前提としているため、詳細を会話によって詰めていくユーザーストーリーは適切といえます。
ユーザーストーリーをどのように使用するのか
ユーザーストーリーは、通常プロジェクトマネージャーや、スクラム開発の場合はプロダクトオーナーによって作成されます。ストーリーの実装が予定されているときにプログラマに渡され、ストーリーが完了すると顧客に返されます。
通常、ユーザーストーリーを書き出したあとは、ユーザーストーリーマッピングという手法を使って全体像を視覚化します。
ユーザーストーリーマッピング
ユーザーストーリーマッピングとは、ユーザーストーリーを優先順位と時系列を軸に配置したものです。プロジェクトを俯瞰して見ることができ、どのユーザーストーリーをリリースしていくのかを決めます。
ユーザーストーリーマッピングを作成する手順は次のとおりです。
- ユーザーストーリーをCardに書き出します。
- 時間軸と優先順位を意識して配置します。
- バックボーン(ストーリーの骨格)を設定します。
- リリースラインを引きます。
- リリースラインにしたがって開発していきます。