山本 修一郎
この連載コラム「山修の開発文書品質入門」では,開発文書に携わる皆さんに役立ちそうな開発文書の品質につながる知識を分かりやすく解説します. バック・ナンバ |
これまで,要求仕様書の書き方について説明してきました.本稿では,ユーザーストーリーを紹介して,要求仕様との関係を説明します.
ユーザー視点で,顧客価値と対応付けて機能要求を定義する手法がユーザーストーリーです.ユーザーストーリーの英語構文は,次の通りです.
As a <User>, I want <Function> so that <Value>.
ここで,ユーザー<User>,機能<Function>,価値<Value>が変化する部分です.ユーザー,機能,価値は,Who,What,Whyに対応しています
ユーザーストーリーでは,この構文に従って,ユーザーが求める機能と価値を抽出することができます.日本語でユーザーストーリーを書くと,語順が変わりますが,次のようになります.
表1のようにして,ユーザーストーリーを作成できます.まずユーザー像を特定します.次いで,ユーザーが解決したい問題,すなわち機能を使う目的を明確にします.最後に,目的を実現する機能を抽出します.この各手順では,ユーザー像,目的,機能を識別するために役立つ質問を示しています.また,手順で作成するユーザー像,目的,機能を例示しています.
手順 | 質問 | 例 |
ユーザー像を特定 | 機能を必要とするのは誰か? 誰のための機能か? |
サービスの会員 |
目的を明確化 | 顧客が解決すべき問題は何か? 機能を実現する目的は何か? |
ログイン操作を省略したい |
機能を抽出 | 目的を実現する機能は何か? 顧客の問題解決に,機能がどのように役立つか? |
会員番号とパスワードの保存機能 |
ユーザーストーリーを単文で記述することになるので,たくさんのユーザーストーリーができます.そこでユーザーストーリーをまとめる方法が必要になります.ユーザーストーリーマッピングは,小ストーリーを集めた中ストーリーからさらにそれをまとめた大ストーリーへと段階的にユーザーストーリーを構造化する手法です(図1).中ストーリーで物語(ストーリー)のまとまりを作ります.中ストーリーをまとめることで,大きな物語の流れを説明できます.
図1 ユーザーストーリーマッピングの構造
図書館の受付係が使う図書貸出管理システムを例として,ユーザーストーリーを記述してみます.図書貸出管理システムの以下の機能に対するユーザーストーリーは表2の通りです.
表2 図書貸出管理システムのユーザーストーリー
ID | ユーザー | 機能要求 | 目的(ユーザー体験) |
1 | 受付係 | 会員検索 | 登録済み会員の確認 |
2 | 受付係 | 貸出履歴検索 | 貸出リスクの低減 |
3 | 受付係 | 貸出登録 | 図書館利用履歴の保存 |
このように,ユーザーストーリーによって,機能要求に対するユーザーとその目的を明確にできることが分かります.
ユースケースの記述では,システム機能を記述します.しかし,ユーザーによるシステム機能の操作を記述しないので,ユーザー操作とシステム機能との整合性を確認する必要があります.そこで,図2に示すように,ユーザー操作とシステム機能との対応表を用いて,イベント条件と機能を明確化することができます.図2では,ユーザー操作①に対してシステム機能②が実行され,次いでユーザー操作③が発生してシステム機能④が実行されることを示しています.
図2 ユーザーストーリーとユースケースの関係
ビデオ貸出システムに対するユーザー操作とシステム機能の関係を表3に示します.ユーザー操作では,ユーザーストーリーの記述から,ユーザーと目的を省略して,機能を使う操作を記述しています.
表3 ユーザー操作とシステム機能要求
ユーザー操作(会員) | システム機能要求 |
メニュ画面を表示する | |
メニュ画面の[ビデオ貸し出し]リンクを押す | |
ビデオ貸し出し画面を表示する | |
レンタルしたいビデオを選択し、[次へ]ボタンを押下する | |
選択されたビデオの在庫の数を確認し、レンタル日数の入力画面を表示する | |
レンタル日数を入力し、[レンタルボタン]を押下する | |
配送システムに会員情報を送り、ビデオの配送を依頼し、レンタル結果画面を表示する [処理終了ボタン]を表示する |
|
レンタル結果画面を確認し、[処理終了ボタン]を選択する | |
処理を終了する |
表3の記述を見ると,USDM(Universal Specification Description Manner)と似ていることに気づかれた方もいると思います.USDMでも表形式で機能要求を記述します.USDMと表3の違いは,ユーザー操作をシステム機能と分離するとともに,関係を明確にしている点です.そういう意味で,USDMにユーザー操作を対応付けていることになります.また,ユーザーストーリーに基づいてUSDMを作成する方法を表3が示していることになります.
[1]asana, 優れたユーザーストーリーの書き方, https://asana.com/ja/resources/user-stories