Bill Wake氏は2003年にINVESTチェックリストを作成し、チームが説得力のあるユーザーストーリーを書くための覚えやすい一連のガイドラインを提供しました。この頭字語を考案したのはWake氏ですが、Mike Cohn氏の2004年の著書『User Stories Applied:For Agile Software Development(アジャイルソフトウェア開発のためのユーザーストーリー実践)』によってこのチェックリストは広く知られるようになりました。
ユーザーストーリーは、開発者の間で注目を集めるようになっても、意図的に非公式なものにとどめられていました。これらは、計画や議論を容易にするために、インデックスカードや付箋に記載されます。見た目はまったく重要ではありません。その代わりに、ユーザーストーリーは本質と機能を重視します。
今日では、開発者は実用的なユーザーストーリーを書くために、INVESTの頭字語に従っています。
- 独立している:各ユーザーストーリーは他のストーリーから独立しているべきです。これにより、ストーリー間の重複や依存を最小限に抑えつつ、任意の順序でユーザーストーリーに取り組むことができます。独立したユーザーストーリーでは、柔軟な優先順位付け、開発、納品が可能です。また、独立したユーザーストーリーは、計画の複雑さを軽減します。
- 交渉可能である:ストーリーは厳格な契約ではなく、議論の出発点です。詳細は、プロダクトオーナーと開発チームの間の共同作業を通じて洗練されていきます。これらのストーリーは反復的であり、チームがより多くの情報を収集するにつれて変更されるべきです。交渉可能なユーザーストーリーは、継続的な対話を促進し、最善の解決策の創出を可能にします。これにより、特定の実装方法への時期尚早なコミットメントを防ぎます。
- 価値がある:構築中のプロダクトの目標は、エンドユーザーに価値を届けることにあります。ストーリーに価値がなければ、時間をかけるに価値はないでしょう。価値のあるユーザーストーリーは、開発努力が意味のある成果に集中することを保証し、ユーザーやビジネス目標に貢献しない機能の作成を回避します。
- 見積もり可能である:ユーザーストーリーの規模を大まかに見積もることができなければなりません。これにより、作業の優先順位付けとスケジュール設定を効果的に行うことができます。見積もり可能なユーザーストーリーは、計画立案、優先順位付け、予測を容易にします。ストーリーの見積もりができない場合は、さらに対話を重ねるか、分割する必要があることを示唆しています。
- 小さい:ユーザーストーリーは、開発者が単一のイテレーション内(通常は3日間以内)でコーディングとテストを完了できるほど小さく設定します。これにより、作業の安定した流れが促進され、迅速なフィードバックが可能になり、リスクが軽減され、進捗状況がより可視化されます。
- テスト可能である:すべてのユーザーストーリーは、ユーザーにリリース可能か、あるいは変更が必要かを判断する明確な基準を備えている必要があります。テスト可能なユーザーストーリーは、チームが「完了」したことを認識するのに役立ち、実装された機能が期待通りに動作することを証明できるようにします。これは品質保証を支援します。
3CプロセスとINVEST基準は、共生関係にあります。対話段階は、ストーリーが交渉可能かつ見積もり可能であることを確保するために重要です。確認段階は、テスト可能性の側面に直接対応します。また、カードは、焦点を絞った生産的な対話を促進できるほど小さく、かつ独立したものを表現するべきです。プロダクトチームは、3Cの共同作業段階において、INVESTを品質チェックリストとして活用できます。
ユーザーペルソナを定義する
汎用的なユーザーではなく、具体的なユーザーペルソナを使用することは、ユーザーストーリーの影響力と明確さを大幅に高めます。ペルソナとは、プロダクトを利用する可能性のあるさまざまなユーザータイプを特定するために、ユーザー調査に基づいて作成された架空の人物像です。ペルソナは、チームが共感を築き、ユーザーの動機、行動、目標に対する深い理解を得るのに役立ちます。
ペルソナを作成する際、チームはアンケート調査、インタビュー、フォーカスグループを通じて、ユーザー調査を実施することが一般的です。一度定義されたこれらのペルソナ名は、ユーザーストーリーの「[ペルソナ名]として」の部分で一貫して使用されるべきです(例:単に「マネージャーとして」ではなく「マーケティングマネージャーのサラとして」とする)。この具体性により、ストーリーが十分に理解されたユーザーセグメントのニーズに真に焦点を当てていることが保証されます。
ユーザーストーリーの主要要素
適切に作成されたユーザーストーリーは、通常、3つの核心的な要素を中心に構成され、それはしばしば簡潔な文の構造で表現されます。
- 役割:この要素は、ユーザーのアイデンティティまたはペルソナを定義します。ユーザーの動機と重視する関心事を捉えることは極めて重要です。この段階で、明確に定義されたユーザーペルソナを活用することは、共感を生み、影響力のあるストーリーを作成する上で非常に効果的です。
- 目標:この部分は、ユーザーがプロダクトまたは特定の機能を通じて達成しようとしていることを説明します。実装方法やUI要素を詳細に記述するのではなく、ユーザーの意図と望ましい成果を記述することに焦点を置くべきです。
- 利点:この重要な部分では、ユーザーが掲げられた目標を達成したい理由を明確に述べます。これは、ユーザーのニーズを駆り立てる価値、利点、または動機を強調し、機能をより大きな目的に関連付け、開発努力を正当化します。この部分は、システム要件ではなく、必ず真のビジネス価値またはユーザー価値を記述することが極めて重要です。システム要件に焦点を当てると、真のニーズが見落とされる可能性があるためです。