ユーザーストーリー #
概要 #
ユーザーストーリーとはユーザーの要求(誰が、どのような目的で、何をしたいのか)を表わすものです。
ユーザーストーリーでは、ユーザーの要求を以下の形式で記載します。
As [ユーザー(ペルソナ)]
I want [ユーザーがしたいこと]
So that [結果として得られること]
また、ユーザーストーリーが達成していることを確認する基準(Acceptance Criteria)を以下の形で記載します。
Scenario:
Given [状況やコンテキスト]
When [アクション]
Then [結果]
なぜユーザーストーリー? #
ユーザーストーリーは、どのユーザーにどのような価値を提供するかを明確にすることができます。一つ一つの小さい価値を表すユーザーストーリーを利用することで、以下のメリットを得られます。
- 要件の変更に対しても柔軟に対応できる
- 都度チームで認識を合わせられる
- 手戻りがあっても最小で済む
- 開発順序を変更しやすい
- 頻繁にデプロイ/リリースできる
ユーザーストーリーのポイント #
INVESTモデルに従う
Independent
独立してリリースできるようにします。 これにより優先順位を見直しやすくなります。 ユーザーストーリー間で関連性がある場合、開発順序やリリース範囲について注意が必要となります。
Negotiable
交渉によって内容を変更することを許容します。 途中で要件の変更があった場合でも変化を受け入れ、チームメンバー全員で共有してユーザーストーリーの見直しを行います。
Valuable
ユーザーに何らかの価値を提供するものにします。 価値を提供しないものの開発者が作業する必要があるものは、ユーザーストーリーではなく、開発のための作業(chore)の一つとしてタスク管理します。 また、ログ出力などシステム監視の機能については、運用担当者/システム管理者をペルソナとしてユーザーストーリーを作成します。
Estimatable
開発者が複雑さを見積もることができる内容にします。 開発者と意見を交えて、複雑さを見積もるのに必要な情報を記載します。
Small
価値を提供する、十分に小さいサイズのユーザーストーリーとします。 プロジェクトやチームによりますが、十分に小さくすると1ストーリーを半日〜1日程度で完了できます。
Testable
ユーザーストーリーが達成していることを確認する基準を明確にします。 基準が明確に記述できない場合はユーザーストーリーのサイズが大きすぎる可能性があります。
ユーザー視点で書く
ユーザーに価値を提供することに集中するよう、ユーザーストーリーにはユーザー視点で記載するようにし、プロダクトにおける実現方法に関わる内容は記載しません。システム構成、実装方法はユーザーストーリーを見て開発者が判断し実現します。
ただし、ユーザーストーリーが大き過ぎて開発を進めづらいなどの場合には、チーム内で実現方式について認識を合わせた上で、システムの構造に合わせてユーザーストーリーを小さく分割することも可能です。 例えば、DBやキューへのデータ登録を行う機能とそのデータの参照を行う機能を2つのストーリーに分割して、DBへの登録を含めた方法で確認を行います。ペルソナを利用する
ユーザーストーリーの記述でペルソナを利用することで、チーム内で価値を提供するユーザーの認識を揃えることができます。また、具体的なユーザー像をイメージでき、ユーザー視点に立って開発を進めるのに役立ちます。
短くわかりやすいタイトルをつける
短くて誰が見てもわかるタイトルをつけることで、バックログ管理をしやすくなります。
説明に役立つ情報を付与する
言葉だけで説明が難しい場合、モックアップやワイヤーフレーム、ユーザーの業務フローなどをユーザーストーリーに添付/紐付けします。 ユーザーストーリーを見るメンバーが共通の理解を得られるようにすることが重要です。