ユーザーストーリーマッピングで初期開発機能を洗い出す

はじめに

PythonのWebアプリケーションフレームワークFlaskを使って、「消耗品買い物リスト」を作ってみるシリーズ第8回目です。

今回は「ユーザーストーリーマッピング」という手法で、作るものの計画を立てます。

前回まで

今回やること

前回でテスト自動化・デプロイ自動化の設定が終わり、ようやく機能の開発をしていこう、という段です。早くも一ヶ月近く経ってしまいましたが少しずつ進捗出していきます。

初期構想から時間が経ちすぎているので、今回で改めて、どんなサービスにするかを整理します。
具体的には、「ユーザーストーリーマッピング」という手法を用いて、初期リリースに含める実装機能を洗い出していきます。

ユーザーストーリーマッピングとは?

サービス開発の手法の一つで、ユーザーがサービスをどう使うか?という視点から、時系列に体験や機能をマッピングしていきながら、その体験に必要な機能を整理していくものです。
時系列と体験をマッピングすることで、初期リリースにどこまで機能を含めるか、次に何を実装するかを検討できます。

具体的には、ユーザーの一連の行動や体験、各行動や体験において必要な機能を時系列で付箋でホワイトボードに貼り出すなどして洗い出します。それから、時間軸で横、抽象度で縦に並べ替えていきます。

詳しい書き方は記事末尾に記載のリンクをご参照ください。

実際にやってみる

今回作る「消耗品買い物リスト」について、ユーザーストーリーマッピングをしてみます。

消耗品の買い忘れを防ぐために、「買い物や出先で、切れている/そろそろ切れるものリストが参照できる」サービスというのが概要ですが、もう少し分解してみます。

オンラインホワイトボード: Miroのテンプレート機能を活用する

ストーリーマッピングをどこに書くかという点では、オンラインホワイトボードサービスMiroを使いたいと思います。
ホワイトボードに付箋をペタペタ貼るアナログ作業をオンラインで、かつ複数人で共有して同時編集もできる非常に便利なサービスです。
今回の「消耗品買い物リスト」は一人で作るものですが、単純にホワイトボード機能として優れているのと、ユーザーストーリーマッピングのテンプレートもちょうど用意されているので、これに乗っからない手はないだろうということでMiroを使います。

※ちなみに他にも色々なフレームワークのテンプレートが用意されています。

Miroのテンプレートを使う上での留意点

ユーザーストーリーマッピングのやり方は、「最初にユーザーストーリーを洗い出し→そのあと並べ替え」という流れが多いようです。
対してMiroのテンプレートにおいては、縦軸(抽象度)のレイヤーが初手から分けられているので、「大きな粒度で見たユーザーの行動→それを構成するタスク→タスクを実現するユーザーストーリーの洗い出し」という流れになりやすいなと感じました。

実例

こんな感じになりました。

「MVP」が初期リリースに含めるもの、「Backlog」はその後随時実装していくものです。

おそらく、開発を進めると更新が多分に入ると思いますが、ひとまずはこのような体験を実現するために、各パートの機能を作っていきます。

リストに落とすと以下のような感じです。

  • 自分用アイテムリストの作成
    • 専用URLの発行
  • 消耗品アイテムの登録
    • アイテム登録
    • アイテムの設定情報変更
    • アイテムのステータス更新
  • 購入すべきアイテムの確認・更新
    • 確認
      • アイテム、ステータス、最終ステータス更新日時の表示
      • 要購入ステータスが一番上にソートされている
    • 更新
      • アイテムステータスの変更
      • ステータスの自動更新
  • アイテムリストの共有
    • 専用URLによる共有

専用URLの発行は、ログインしなくともリストの作成・共有ができるように、リストごとに専用URLを発行する、というアプローチを取ります。

ログイン機能については、「ログインが必要」というだけでユーザー側のハードルもぐぐっと上がるため、「使われる機能が作れるか?」を先に検証します。
ただの買い物リストなので、リストが漏れても大きな問題にはならないであろうというのも理由です。
※もちろん開発が進行してどこかのタイミングでは実装が必要になるかと思います。

そんなわけで。
まずは根幹となる、「自分用アイテムリストの作成」機能を作ります。

終わりに

小さなサービスですが、ユーザーストーリーマッピングをやってみたことで、「何を」「どのような順番で」「どこまで」実装すべきかの見通しを立てることができました。

次回からはどんどんコードを書いていきます。

参考