/note/tech

ユーザーストーリーを書くのがかったるいので「背景・目的・対応内容」に落ち着いた話

要約:

■ 1. 概要と経緯

  • スクラム開発のPBIにユーザーストーリー形式を使う煩雑さを問題視しAIとの対話を通じて「背景・目的・対応内容」という3点セットに辿り着いた備忘録
  • ユーザーストーリーはケント・ベックが1990年代のクライスラーC3プロジェクトで導入した概念
  • ユーザーストーリーの本来の目的は完璧な書類の作成ではなく「チームの認識を揃えること(対話への招待状)」であり形式へのこだわりは本末転倒

■ 2. 各要素の役割と不足点

  • 背景・目的・ストーリーの位置づけ:
    • 背景: なぜ今これが必要か(広域)
    • 目的: これによって何を実現したいか(中域)
    • ユーザーストーリー: 誰が何をすればその目的が叶うか(詳細)
  • ストーリーだけでは不足する点:
    • ストーリーのWhyにはミクロな目的が入るがマクロな背景は抜け落ちやすい
    • 例: 「コストを削減したい」は書けるが「来月までに削減しないとプロジェクトが凍結される」という背景は伝わらない
    • この背景を知っているかどうかでチームの動き方が変わる
  • 背景・目的だけでは不足する点:
    • 具体的な対応内容がないとチームが迷走し実装に入れない
  • Howだけを書く場合に陥る3つの罠:
    • 対応内容の目的化: 「チケットにこう書いてあるから」と非効率なやり方に固執する
    • レビューの質低下: Whyがないとコードが動くかのスペルチェックしかできない
    • 属人化: 後から「なぜこうしたのか」が分からなくなり先祖返りが起きる

■ 3. 「背景・目的・対応内容」の構造

  • 各項目の定義:
    • 背景(Context): 現状の課題・制約条件(今何が起きているか)
    • 目的(Why + Goal): 理由と目指す状態(どうなれば成功か)
    • 対応内容(How): 作業手順・チェックリスト(具体的に何をするか)
  • 目的の書き方:
    • WhyとGoalの両方を1文に含める
    • 「[痛み]を解決するために[目指す状態・数値]を実現する」の型を使用
    • Whyだけでは終了条件が不明 / Goalだけでは実施理由が伝わらない
  • 日本語の「目的」には理由と目標の両方のニュアンスが含まれ英語のContext/Why/Howより直感的に書ける

■ 4. 階層ごとの使い分け

  • エピック:
    • 背景: 厚めに記述
    • 目的: 最重要
    • 対応内容: 記載しない(方針のみ)/ 役割: 北極星
  • PBI:
    • 背景: 補足程度
    • 目的: あり
    • 対応内容: あり / 役割: ロードマップ
  • タスク:
    • 背景: 不要
    • 目的: 不要
    • 対応内容: 詳細に記述 / 役割: 足元の作業
  • エピックに対応内容を書かない理由:
    • 最初にやり方を固定すると改善の余地が失われる
    • 背景と目的があればエンジニアが自律的に考えられる
    • 対応内容まで指示するとチームが作業者になる
  • タスクに背景・目的を書かない理由:
    • 親PBIで合意が取れていればタスクは実行レベルで書く方が親切
    • 迷ったら親PBIに戻れれば十分

■ 5. テンプレート

  • PBIテンプレート:
    • 背景(Context): 現状の課題や依頼の経緯を1〜2行
    • 目的(Why + Goal): 「[痛み]を解決するために[目指す状態・数値]を実現する」
    • 対応内容(How): 具体的な実装・改修の方針 / 満たすべき受け入れ条件
  • エピックテンプレート:
    • 背景(Context): プロジェクト全体の背景や技術的負債の状況
    • 目的(Why + Goal): 「[痛み]を解決するために[目指す状態・数値]を実現する」
    • 対応内容はPBIに委ねる
  • タスクテンプレート:
    • 対応内容(How)のみ: 設定変更・動作確認・プルリク作成などを列挙
    • 対応内容が10行を超えた場合はPBIが大きすぎるサインであり背景と目的を共通にしたままPBIを分割する

■ 6. dbt-coreのPRテンプレートとの比較

  • dbt-coreのPRテンプレートはProblem(何が起きているか)とSolution(どう解決するか)の2項目で構成
  • ProblemはContextとWhyに相当 / SolutionはHowに相当
  • チケットもPRも「何が問題でどう対処するか」を伝えるという点で構造は同じ
  • OSSメンテナが大量のPRを捌くために削ぎ落とした結果の形であり説得力がある

■ 7. 壁打ちで得た気づきと導入のポイント

  • ユーザーストーリーの「〈価値〉のためだ」は部分最適になりやすくマクロな背景は別途必要
  • 目的はWhyとGoalを1文で書く(「〇〇のために〇〇を実現する」の型)
  • エピックの対応内容を書かないことでチームの自律性を維持する
  • タスクは対応内容だけで十分であり親PBIへのリンクさえ切れなければよい
  • 導入時は引き算が有効:
    • 背景が自明なら1行でよい
    • 目的が前と同じなら「〇〇と同じ」でよい
    • 対応内容がその場で決まらないなら「調査する」から書き始める