目次

  1. アジャイルの要件定義の考え方
  2. 全体像:要件の階層
  3. 上流で押さえるべきこと
  4. ユーザーストーリーの基本
  5. 受け入れ条件(Acceptance Criteria)
  6. ストーリーの見つけ方・広げ方
  7. ストーリーの分割
  8. 非機能要件の扱い
  9. Definition of Ready / Definition of Done
  10. プロダクトバックログの管理
  11. よくある失敗と対策
  12. ストーリーのテンプレート
  13. 参考になる体系・資料

1. アジャイルの要件定義の考え方

ウォーターフォールのように開発前に要件を確定させるのではなく、価値の高いものから少しずつ具体化し、作って確かめながら要件を育てていくのがアジャイルの要件定義。

観点ウォーターフォールアジャイル
確定のタイミング開発前に一括で確定必要になる直前に詳細化(Just-in-Time)
主な成果物要件定義書プロダクトバックログ、ユーザーストーリー
変化への姿勢変更は管理・抑制する対象変化は学びとして歓迎し、優先順位で吸収する
合意の方法文書の承認継続的な対話と、動くソフトウェアでの確認
完成の判定要件をすべて満たしたか成果(アウトカム)が出たか

ただし「ドキュメントを書かない」わけではない。目的・制約・非機能要件など、後から変えにくいものは早めに言語化しておく。


2. 全体像:要件の階層

要件は粒度ごとに階層化して管理する。上位ほど早く・粗く、下位ほど遅く・細かく決める。

プロダクトビジョン        … なぜこのプロダクトを作るのか
  └ プロダクトゴール / OKR … 一定期間で達成したい成果
      └ エピック          … 大きな機能のまとまり(複数スプリントにまたがる)
          └ ユーザーストーリー … 1スプリント内で完了できる価値の単位
              └ 受け入れ条件  … ストーリーの完了を判定する具体的条件
                  └ タスク    … 開発チームが実装のために分解した作業

3. 上流で押さえるべきこと

ストーリーを書き始める前に、以下をチームと関係者で共有する。

3.1 プロダクトビジョン

エレベーターピッチ形式で書くと、ブレない判断軸になる。

[対象顧客] の
[課題・ニーズ] を解決するための
[プロダクト名] は
[プロダクトのカテゴリ] である。
これは [主要な価値] を提供し、
[競合・代替手段] とは違って
[差別化ポイント] を備えている。

3.2 成果指標(アウトカム)

  • 「何を作るか(アウトプット)」ではなく「何が変わるか(アウトカム)」で目標を置く
  • 例:「申請機能をリリースする」ではなく「経費精算のリードタイムを平均5日から2日にする」

3.3 ペルソナ

  • 主要な利用者像を2〜4人程度に絞って定義する
  • 役割、目的、困りごと、利用環境、ITリテラシーなどを記載する
  • ストーリーの「〜として」は、このペルソナやロールを使う

3.4 インセプションデッキ(推奨)

プロジェクト開始時に「我々はなぜここにいるのか」「やらないことリスト」「トレードオフスライダー」などをチームで作り、期待値をそろえる。

3.5 制約と非機能要件

セキュリティ、性能、法令、既存システム連携などはスプリントの途中で後付けしにくい。初期に洗い出して、後述の方法で管理する。


4. ユーザーストーリーの基本

4.1 フォーマット

<役割・ペルソナ> として、
<目的・得たい価値> のために、
<やりたいこと> がしたい。

例

経費申請者として、
立替金を早く受け取るために、
スマートフォンで領収書を撮影してその場で申請したい。
  • 役割:誰のためのストーリーか(「ユーザー」ではなく具体的なロール)
  • やりたいこと:利用者視点の行動(システムの内部処理ではない)
  • 目的:最も重要。これがあると、より良い解決策の提案や優先度判断ができる

4.2 3つのC

ストーリーは仕様書ではなく、会話のきっかけ。

C意味
Card(カード)短い記述。詳細を書きすぎない
Conversation(会話)PO・開発者・テスト担当・利用者の対話で詳細を詰める
Confirmation(確認)受け入れ条件で、完成を確認できるようにする

4.3 INVEST:良いストーリーの条件

条件意味チェックの問い
Independent(独立)他のストーリーに依存しない単独で着手・リリースできるか
Negotiable(交渉可能)実現方法は話し合いで決められる画面や実装方法まで固定していないか
Valuable(価値がある)利用者や顧客に価値がある「誰が嬉しいのか」を説明できるか
Estimable(見積もり可能)チームが規模を見積もれる不明点が多すぎないか
Small(小さい)1スプリント内に完了できる数日〜1週間程度で終わるか
Testable(テスト可能)完了を判定できる受け入れ条件が書けるか

5. 受け入れ条件(Acceptance Criteria)

5.1 書き方のポイント

  • ストーリーごとに3〜7個程度を目安にする(多すぎるなら分割のサイン)
  • 正常系だけでなく、エラー・境界値・権限のケースも書く
  • 実装方法ではなく、観察できる振る舞いを書く
  • スプリント計画の前までに、PO・開発者・テスト担当で合意しておく

5.2 Given / When / Then 形式(Gherkin)

シナリオ: 領収書を撮影して申請する
  Given ログイン済みの申請者が申請画面を開いている
  When  領収書を撮影し、金額・日付・用途を入力して申請する
  Then  申請が「承認待ち」状態で登録される
  And   上長に承認依頼の通知が送られる

シナリオ: 必須項目が未入力
  Given ログイン済みの申請者が申請画面を開いている
  When  金額を入力せずに申請する
  Then  「金額を入力してください」と表示され、申請は登録されない

シナリオ: 上限額を超える申請
  Given 申請者の1件あたりの申請上限が5万円に設定されている
  When  60,000円で申請する
  Then  上限超過のため事前承認が必要である旨が表示される

5.3 チェックリスト形式(簡易版)

シンプルなストーリーなら箇条書きでも良い。

- [ ] JPEG / PNG / PDF の領収書を添付できる
- [ ] 1ファイル10MBを超える場合はエラーを表示する
- [ ] 申請完了後、申請一覧に「承認待ち」で表示される

5.4 曖昧さを避ける

悪い例良い例
検索が速いこと検索結果が2秒以内に表示されること
エラーを適切に表示する金額が未入力の場合「金額を入力してください」と入力欄の下に表示する
管理者が編集できる「経理管理者」ロールのみが承認済み申請の金額を修正でき、修正履歴が残る

6. ストーリーの見つけ方・広げ方

6.1 ユーザーストーリーマッピング

ストーリーを「利用者の行動の流れ」に沿って並べ、全体像と抜け漏れを可視化する手法。

[アクティビティ]  経費を記録する ─── 申請する ─── 承認する ─── 精算を受け取る
                    │              │            │             │
[ステップ]        領収書を撮る     内容を確認    申請を確認    入金を確認する
                  金額を入力       提出する      承認/差戻し
                    │              │            │             │
─────── リリース1(MVP)───────────────────────────────────────────
[ストーリー]      撮影して添付     申請を提出     承認する      入金通知を受け取る
─────── リリース2 ──────────────────────────────────────────────
                  OCRで金額読取    下書き保存     一括承認      精算履歴を見る
─────── リリース3 ──────────────────────────────────────────────
                  交通系ICから取込  定期申請       代理承認      会計システム連携

効果

  • 横軸(流れ)で全体の抜け漏れが見える
  • 縦軸(優先度)で切ると、端から端まで使える最小のリリース(MVP) が決められる
  • 関係者全員で同じ絵を見ながら議論できる

6.2 ストーリーを引き出す問い

  • この人は、このプロダクトを使う前後に何をしているか?
  • 一番困っていること、一番時間がかかっていることは何か?
  • うまくいかなかったとき(エラー、キャンセル、やり直し)はどうするか?
  • 他にこの業務に関わる人(承認者、管理者、監査担当)は誰か?
  • 初めて使うとき、慣れてきたとき、それぞれ何が必要か?

7. ストーリーの分割

大きすぎるストーリー(エピック)は、価値を保ったまま縦に切る。 「画面だけ」「APIだけ」「DBだけ」のように技術レイヤーで横に切ると、単独で価値を生まないので避ける。

分割パターン

パターン例(元:経費を申請できる)
ワークフローの段階申請する / 承認する / 差し戻す
業務ルールのバリエーション交通費 / 宿泊費 / 接待交際費
データのバリエーション円建て / 外貨建て
入力方法手入力 / 領収書撮影 / CSV取込
ハッピーパスと例外正常な申請 / 上限超過時の事前承認
操作(CRUD)申請を作成 / 編集 / 取消
シンプル→高度1件ずつ承認 / 一括承認
性能を後回しにまず動く版 / 1万件でも2秒以内に改善
スパイク(調査)を切り出すOCRライブラリの精度検証(タイムボックス)

分割の目安:チームのベロシティに対して、1ストーリーがスプリント容量の1/4〜1/6程度に収まる大きさ。


8. 非機能要件の扱い

ユーザーストーリーだけでは非機能要件が抜けやすい。次の3つを組み合わせて管理する。

8.1 制約として全ストーリーに適用(DoDに組み込む)

すべてのストーリーで満たすべきもの。

  • 例:「主要画面は3秒以内に表示」「入力値はサーバー側でも検証」「WCAG 2.2 AA準拠」

8.2 個別ストーリーの受け入れ条件に含める

特定の機能だけに関わるもの。

  • 例:「申請一覧は1万件あっても2秒以内に表示される」

8.3 独立したストーリーにする

利用者や運用者の視点で書けるもの。

運用担当者として、
障害の原因を素早く特定するために、
エラー発生時にリクエストIDつきのログを検索したい。

チェックの観点:可用性、性能、セキュリティ、運用・監視、データ移行、アクセシビリティ、法令・個人情報保護(詳細は IPA「非機能要求グレード」が参考になる)


9. Definition of Ready / Definition of Done

9.1 Definition of Ready(着手可能の定義)

スプリントに入れる前に満たしているべき条件。チームで合意して使う(厳しすぎると逆にフローが止まるので注意)。

  • ストーリーの「役割・やりたいこと・目的」が書かれている
  • 受け入れ条件があり、PO と開発者が合意している
  • 見積もり済みで、1スプリントに収まる大きさである
  • 依存関係・外部要因(他チーム、外部API等)が把握されている
  • 必要に応じて画面モックやデータ例が用意されている
  • 未解決の大きな疑問点がない

9.2 Definition of Done(完成の定義)

すべてのストーリーに共通する品質基準。

  • 受け入れ条件をすべて満たしている
  • コードレビューが完了している
  • 自動テスト(単体・結合)が書かれ、すべて成功している
  • 非機能の共通基準(性能・セキュリティ・アクセシビリティ)を満たしている
  • 本番相当の環境にデプロイされている
  • 必要なドキュメント(API仕様、運用手順など)が更新されている
  • PO が受け入れを確認している

10. プロダクトバックログの管理

10.1 DEEP:良いバックログの条件

条件意味
Detailed appropriately上位は詳細に、下位は粗くてよい
Estimated見積もりがついている
Emergent学びに応じて常に追加・変更・削除される
Prioritized価値・リスク・コストに基づいて並んでいる

10.2 優先順位付けの手法

  • 価値 × コスト:価値が高くコストが低いものから
  • MoSCoW:Must / Should / Could / Won’t
  • WSJF:(事業価値 + 時間的緊急性 + リスク低減)÷ 規模
  • リスク優先:技術的に不確実なものを早めに検証する

10.3 バックログリファインメント

  • スプリント中に定期的に(目安:作業時間の10%以内)実施する
  • 次の1〜2スプリント分のストーリーを Ready の状態にしておく
  • PO だけでなく、開発者・テスト担当も参加して、受け入れ条件や分割を一緒に考える
  • 不要になったストーリーは迷わず削除する

10.4 実例で具体化する手法

  • 実例マッピング(Example Mapping):ストーリー(黄)・ルール(青)・具体例(緑)・疑問(赤)のカードで25分程度で整理する。赤が多ければまだ Ready ではない
  • Three Amigos:ビジネス(PO)・開発・テストの3者でストーリーを検討し、視点の偏りを防ぐ

11. よくある失敗と対策

失敗対策
「ユーザーとして」ばかりで、誰のためか分からないペルソナや具体的なロールを使う
目的(〜のために)が抜けている、形だけ目的が書けないストーリーは価値を再検討する
技術タスクをストーリー形式で書いている(「開発者としてDBを作りたい」)利用者価値に紐づけるか、タスクとして扱う
ストーリーが大きすぎてスプリントに収まらない7章の分割パターンで縦に切る
画面レイアウトや実装方法まで指定している振る舞いと価値に絞り、方法はチームとの会話で決める
受け入れ条件が正常系だけエラー・境界値・権限のケースを必ず検討する
非機能要件が抜けて後で大きな手戻り初期に洗い出し、DoD・受け入れ条件・独立ストーリーで管理する
バックログが数百件に膨れて誰も見ない定期的に削除・統合する。遠い将来分はエピックのまま粗く保つ
PO が一人で書いて開発者に渡すだけリファインメントや Three Amigos で一緒に作る
リリースしたが成果を測っていないアウトカム指標を決め、リリース後に検証して次に活かす
「アジャイルだから」と全体像を考えないストーリーマップとビジョンで全体を見渡す

12. ストーリーのテンプレート

## [ID] ストーリー名
 
**ストーリー**
<役割> として、<目的> のために、<やりたいこと> がしたい。
 
**背景・補足**
- なぜ今これが必要か、関連する課題やデータ
- 関連エピック:
- 関連資料(モック、業務フロー等):
 
**受け入れ条件**
- シナリオ1:(正常系)
  - Given
  - When
  - Then
- シナリオ2:(例外・エラー系)
  - Given
  - When
  - Then
 
**非機能・制約**
- 例:〇件のデータで〇秒以内に表示
 
**対象外(このストーリーではやらないこと)**
-
 
**未解決の疑問**
- [ ] 質問内容(担当・期限)
 
**見積もり**:〇 ポイント
**優先度**:

13. 参考になる体系・資料

  • 『ユーザーストーリー実践入門』(Mike Cohn):ユーザーストーリーの書き方と INVEST
  • 『ユーザーストーリーマッピング』(Jeff Patton):ストーリーマップによる全体像とリリース計画
  • 『アジャイルサムライ』(Jonathan Rasmusson):インセプションデッキ
  • スクラムガイド:プロダクトバックログ、完成の定義の公式な定義
  • BDD / Gherkin:Given / When / Then による受け入れ条件と自動テストの連携
  • IPA「非機能要求グレード」:非機能要件の観点チェック

0件のページ