概要
この連載コラム「エンジニアの羅針盤 – 技術と実践の探求」では、変化の激しいIT業界において、エンジニアが日々の業務で直面する様々な課題や、より効率的かつ高品質な開発を実現するための知見を幅広く共有します。アジャイル開発やDevOpsといった開発手法から、データ基盤、セキュリティ、テスト、生産性向上まで、現場で培われた実践的なノウハウ、最新技術の活用事例、そしてキャリアパスまで、多岐にわたるテーマを深掘りしていきます。読者の皆様が自身の技術力を高め、より良い開発を実現するための一助となれば幸いです。
今回はアジャイル開発において、お客様の立場に立った開発を行うために重要な要素である、ユーザーストーリーについて考えてみたいと思います。
ユーザーストーリーとは?
ユーザーストーリーは、エンドユーザーの視点から特定の機能や要件を表現する短い、一文、二文から成る記述です。これは「誰が」「何を」「なぜ」必要としているかを明確にすることで、開発チームが具体的な価値を理解しやすくします。
ウォーターフォール開発における要件定義との違いとしては、開発プロセスの中で状況の変化やフィードバックに応じて変更が許容されるという点が挙げられます。
ユーザーストーリーの例
以下に一般的によくあるユーザーストーリーの例を挙げます。
- 利用者は、メッセージを投稿できる機能が欲しい。
- 利用者は、掲示板を利用したい。
- 管理者は、利用者全員が閲覧できる掲示板に告知事項を投稿したい。
- 管理者は、HTML5とCSS3を使用してカスタマイズ可能な掲示板が欲しい。
- 利用者は、メッセージ投稿、ファイル共有、ビデオチャット、ができる一つのプラットフォームが欲しい。
これらの例はいずれも悪い例です。それぞれの問題点を以下でご説明します。
- 利用者は、メッセージを投稿できる機能が欲しい。
→この例では、誰が誰に対してメッセージを送りたいのか、利用者の立場や用途が不明瞭です。
一方通行で良いのか、双方向でのやり取りが必要なのか、リアルタイム性が必要なのかによって、掲示板、メール、チャットなど実現手段は大きく変わってしまいます。
- 利用者は、掲示板を利用したい。
→この例では、「目的」が不明瞭です。
掲示板で他の利用者に告知をしたいのか、それとも交流したいのか、どのような目的で掲示板を利用するかがわからないため、利用者が何を期待しているか、どのような機能を実装すべきかがわかりません。
- 管理者は、利用者全員が閲覧できる掲示板に告知事項を投稿したい。
→この例は、具体的に書かれているように見えますが、「理由」が不明確です。
この機能が実装されることにより、どのような利益があるのかがわかりません。
そのため、実装の優先度を判断するための重要な情報が欠けてしまいます。
- 管理者は、HTML5とCSS3を使用してカスタマイズ可能な掲示板が欲しい。
→この例では、実現手段に焦点を当てすぎています。
「HTML5とCSS3」はあくまで手段の1つであり、目的ではありません。
機能ファーストで考えてしまうことは、ユーザーニーズの本質を見失ってしまうリスクがあります。
- 利用者は、メッセージ投稿、ファイル共有、ビデオチャット、ができる一つのプラットフォームが欲しい。
→この例では、スコープを広げ過ぎています。ユーザーストーリーは管理しやすい粒度で細分化することが望ましいとされています。
1つのユーザーストーリーの中で多くの機能や要件をカバーしようとすると、管理や実装が困難になります。
例えば、大きなストーリーになってしまうと、優先順位の入れ替えやリリースサイクルへの組み込みがしづらくなり、迅速なフィードバックを得られる機会の損失になるリスクがあります。また、見積工数とのギャップが発生するリスクも高まり、計画に影響を与える可能性があります。
良いユーザーストーリーとは?
良いユーザーストーリーを作成するためには、次の要素を明確化することが重要です。
- 誰が:役割、立場
- 何を:やりたいこと(目的)、想定される状況
- なぜ:解決したい問題点(理由)、解決できるとどのような利益があるのか
もう一度、先の例を考え直してみましょう。
- 利用者は、メッセージを投稿できる機能が欲しい。
→営業部の社員は、顧客訪問の詳細をチームに迅速に共有できるメッセージ投稿機能が欲しい。
これにより、即座にフィードバックを得て、営業戦略を調整できる。
- 利用者は、掲示板を利用したい。
→プロジェクトマネージャーは、プロジェクトの進捗や重要な更新をチームに伝えるための掲示板機能が欲しい。
これにより、プロジェクト関連の情報を中央集約し、透明性を高めることができる。
- 管理者は、利用者全員が閲覧できる掲示板に告知事項を投稿したい。
→人事部の社員は、社内イベントやポリシーの変更を掲示板に投稿できる機能が欲しい。
これにより、全社員が最新の情報にアクセスでき、コミュニケーションの効率が向上する。
- 管理者は、HTML5とCSS3を使用してカスタマイズ可能な掲示板が欲しい。
→マーケティングチームのメンバーは、ブランドイメージに合わせてデザインをカスタマイズできる掲示板が欲しい。
これにより、社内コミュニケーションをブランド戦略に沿った形で行うことができる。
- 利用者は、メッセージ投稿、ファイル共有、ビデオチャット、ができる一つのプラットフォームが欲しい。
→技術部門のメンバーは、ドキュメント共有と議論ができるシンプルな掲示板機能が欲しい。
これにより、技術的な議論と資料の共有が効率的に行えるようになる。
あくまで例えではありますが、ユーザーが何を望んでいるのか、よりイメージをしやすくなったのではないでしょうか?
実際には、さらにヒアリングや擦り合わせをさせていただき、より精度を詰めていく工程が必要になります。
おわりに
ユーザーの声は、実際にサービスを利用されるお客様→お客様の管理者→ユニリタのフロント部門→開発部門というように、二重の防護壁を経て伝わります。
開発者はエンドユーザーから最も遠い立場にありながら、一方でエンドユーザーが直接触れるサービスを作ることになります。
だからこそ、お客様の視点を理解することは重要です。
しかし、それは想像だけで賄えるものではなく、より実態を知る方に情報を求めに行く姿勢も必要なのだろうと思います。
コメント
投稿にはログインしてください