civicship-api 要件精緻化質問票
要件定義書を分析し、不明確な点・抜け漏れを質問形式で洗い出します。プロダクトオーナーやステークホルダーに確認すべき事項を整理します。
使用方法
bash
# 要件定義書から質問を生成 /refinement-questionnaire docs/requirements/point-expiration.md # 機能概要から質問を生成 /refinement-questionnaire "ポイント有効期限機能" # 不明確な要件の明確化 /refinement-questionnaire "複数ウォレット対応"
引数:
- •
$ARGUMENTS: 要件定義書パス、または機能名
質問生成プロセス
ステップ1: 要件の理解
提供された要件を分析:
markdown
## 要件の概要 **機能名:** ポイント有効期限機能 **提供された要件:** - ポイントに有効期限を設定したい - 有効期限が切れたポイントは使えなくする - 有効期限前にユーザーに通知したい **明確な点:** - ✅ ポイントに有効期限を設ける - ✅ 有効期限切れポイントは使用不可 - ✅ 事前通知が必要 **不明確な点:** - ❓ 有効期限の長さは? - ❓ 既存ポイントはどうするか? - ❓ 有効期限切れポイントは削除?保持? - ❓ 通知のタイミングは? - ❓ ポイント送受信時の有効期限は?
ステップ2: ビジネスルールの質問
ビジネスロジックの詳細を確認:
markdown
## カテゴリ1: ビジネスルール ### Q1: 有効期限の長さ **質問:** ポイントの有効期限はどのくらいですか? **選択肢:** - [ ] A. 付与日から1年 - [ ] B. 付与日から6ヶ月 - [ ] C. カレンダー年度末(12月31日) - [ ] D. その他: ___________ **追加質問:** - 有効期限は全ポイント共通ですか、それとも種類によって異なりますか? - キャンペーンポイントは別の有効期限を設定できますか? --- ### Q2: 既存ポイントの扱い **質問:** 既存のポイント(有効期限なし)はどうしますか? **選択肢:** - [ ] A. 無期限のまま維持(新規ポイントのみ有効期限あり) - [ ] B. 遡及的に有効期限を設定(例: 付与日から1年) - [ ] C. 一律で〇年〇月〇日に有効期限設定 - [ ] D. その他: ___________ **影響:** - A: ユーザー間で不公平感の可能性 - B: 既存ユーザーへの影響大(利用規約変更必要) - C: 全ユーザーに一斉通知必要 **追加質問:** - 既存ユーザーへの事前通知期間は?(推奨: 30日以上) - 利用規約の変更は必要ですか? --- ### Q3: 有効期限切れポイントの処理 **質問:** 有効期限が切れたポイントはどうしますか? **選択肢:** - [ ] A. 自動的に削除(残高から減算) - [ ] B. アーカイブ(履歴として保持、使用不可) - [ ] C. 一定期間(〇日間)は復元可能 - [ ] D. その他: ___________ **追加質問:** - 削除する場合、ユーザーに通知しますか? - 失効ポイントの履歴を表示しますか? - 復元可能にする場合、復元条件は?(カスタマーサポートのみ、ユーザー自身で可能) --- ### Q4: ポイント送受信時の有効期限 **質問:** ユーザーAがユーザーBにポイントを送った場合、有効期限はどうなりますか? **選択肢:** - [ ] A. 送信元の有効期限を引き継ぐ - [ ] B. 送信時点で新たに有効期限を設定(送信日から1年) - [ ] C. 無期限にする - [ ] D. その他: ___________ **シナリオ例:** - ユーザーA: 100pt(有効期限: 2026-12-31) - ユーザーAがユーザーBに50pt送信 - ユーザーBの50ptの有効期限は? **追加質問:** - 有効期限が近いポイントを優先的に送信しますか? - ユーザーは有効期限を意識せずに送信できますか? --- ### Q5: 複数の有効期限が混在する場合 **質問:** ユーザーが複数の有効期限のポイントを持つ場合、使用順序は? **選択肢:** - [ ] A. FIFO(先入先出): 古いポイントから使用 - [ ] B. 有効期限が近いものから使用 - [ ] C. ユーザーが選択 - [ ] D. その他: ___________ **シナリオ例:** - ポイントA: 100pt(有効期限: 2026-06-30) - ポイントB: 50pt(有効期限: 2026-12-31) - ユーザーが30pt使用する場合、どのポイントから減算? **追加質問:** - 使用順序をユーザーに表示しますか? - ユーザーが使用順序を変更できますか?
ステップ3: UI/UXの質問
ユーザー体験の詳細を確認:
markdown
## カテゴリ2: UI/UX ### Q6: 有効期限の表示方法 **質問:** 有効期限はどのように表示しますか? **選択肢:** - [ ] A. 常に表示(ウォレット画面に常時表示) - [ ] B. 有効期限が近い場合のみ表示(残り30日以内) - [ ] C. 詳細画面でのみ表示 - [ ] D. その他: ___________ **表示形式:** - [ ] A. 日付形式(2026-12-31) - [ ] B. 相対形式(あと30日) - [ ] C. 両方 - [ ] D. その他: ___________ **追加質問:** - 有効期限が迫っている場合、警告色で表示しますか? - 複数の有効期限がある場合、どう表示しますか? --- ### Q7: 通知のタイミングと頻度 **質問:** 有効期限の事前通知はいつ送りますか? **選択肢(複数選択可):** - [ ] A. 30日前 - [ ] B. 7日前 - [ ] C. 3日前 - [ ] D. 1日前 - [ ] E. 当日 - [ ] F. その他: ___________ **通知方法:** - [ ] LINE通知 - [ ] アプリ内通知 - [ ] メール - [ ] プッシュ通知 - [ ] その他: ___________ **追加質問:** - ユーザーは通知のオプトアウトができますか? - 通知の文言は?(例: 「〇〇ptが〇日後に失効します」) - 通知のタイミングはユーザーがカスタマイズできますか? --- ### Q8: エラーメッセージ **質問:** 有効期限切れポイントを使おうとした場合、どんなメッセージを表示しますか? **選択肢:** - [ ] A. 「ポイントの有効期限が切れています」 - [ ] B. 「このポイントは使用できません」 - [ ] C. 「ポイントが不足しています」(有効期限を明示しない) - [ ] D. その他: ___________ **追加質問:** - エラーメッセージに次のアクションを提示しますか? - 例: 「新しいポイントを獲得するには→」 - エラー時に失効ポイントの履歴を見せますか?
ステップ4: 技術的詳細の質問
実装に必要な技術仕様を確認:
markdown
## カテゴリ3: 技術仕様 ### Q9: 有効期限のデータ型 **質問:** 有効期限はどの精度で管理しますか? **選択肢:** - [ ] A. 日付のみ(YYYY-MM-DD) - [ ] B. 日時(YYYY-MM-DD HH:MM:SS) - [ ] C. 日時 + タイムゾーン - [ ] D. その他: ___________ **推奨:** 日付のみ(管理がシンプル、ユーザーも理解しやすい) **追加質問:** - 有効期限は日本時間(JST)基準ですか? - 23:59:59 までか、00:00:00 までか? --- ### Q10: バッチ処理の実行タイミング **質問:** 有効期限切れポイントの自動失効はいつ実行しますか? **選択肢:** - [ ] A. 毎日深夜(例: 2:00 AM) - [ ] B. 毎時(例: 毎時0分) - [ ] C. リアルタイム(ポイント使用時にチェック) - [ ] D. その他: ___________ **追加質問:** - バッチ処理が失敗した場合の対処は? - 処理時間はどれくらいを想定?(推定: 1,000ユーザーで10秒) - バッチ処理中のポイント使用はブロックしますか? --- ### Q11: パフォーマンス要件 **質問:** 有効期限チェックによるパフォーマンス劣化は許容できますか? **現状:** - ポイント使用時のレスポンスタイム: 平均 50ms **有効期限チェック追加後の推定:** - ポイント使用時のレスポンスタイム: 平均 55ms(+5ms) **選択肢:** - [ ] A. 許容できる(+10ms以内なら問題なし) - [ ] B. 許容できない(現状維持必須) - [ ] C. その他: ___________ **追加質問:** - パフォーマンス目標値は?(例: 100ms以内) - 負荷テストは実施しますか?
ステップ5: 例外ケースの質問
エッジケースの扱いを確認:
markdown
## カテゴリ4: 例外ケース ### Q12: マイナス残高の防止 **質問:** 有効期限切れポイントが失効した結果、残高がマイナスになる可能性はありますか? **シナリオ:** - ユーザーのポイント: 100pt(有効期限: 明日) - ユーザーが予約でポイント使用予約(未決済) - 翌日、100ptが失効 - 予約決済時に残高不足 **選択肢:** - [ ] A. 予約時にポイントをロック(失効対象外) - [ ] B. 失効時に予約をキャンセル - [ ] C. その他: ___________ --- ### Q13: システム障害時の対応 **質問:** バッチ処理が失敗した場合、どうしますか? **選択肢:** - [ ] A. リトライ(3回まで) - [ ] B. アラート通知のみ(手動対応) - [ ] C. 次回実行時にまとめて処理 - [ ] D. その他: ___________ **追加質問:** - 失効日を過ぎてもバッチ未実行の場合、ユーザーはポイントを使えますか? - システム障害で通知が送れなかった場合の対応は? --- ### Q14: データ移行時のリスク **質問:** データ移行で問題が発生した場合のロールバック手順は? **選択肢:** - [ ] A. 自動ロールバック(バックアップから復元) - [ ] B. 手動ロールバック(DBクエリ実行) - [ ] C. ロールバック不可(前進のみ) - [ ] D. その他: ___________ **追加質問:** - バックアップの保持期間は? - ロールバック時のダウンタイムは許容できますか?
ステップ6: コンプライアンスの質問
法的・規約面の確認:
markdown
## カテゴリ5: コンプライアンス ### Q15: 利用規約の更新 **質問:** 利用規約に有効期限の条項を追加する必要がありますか? **選択肢:** - [ ] A. はい(追加必要) - [ ] B. いいえ(既存条項でカバー) - [ ] C. 不明(法務に確認) **追加質問:** - 利用規約変更時、ユーザーへの同意取得は必要ですか? - 事前通知期間は?(推奨: 30日前) --- ### Q16: 個人情報保護 **質問:** 失効ポイントの履歴はどれくらい保持しますか? **選択肢:** - [ ] A. 無期限 - [ ] B. 1年間 - [ ] C. 3ヶ月間 - [ ] D. 保持しない(削除のみ) - [ ] E. その他: ___________ **追加質問:** - プライバシーポリシーの更新は必要ですか? - ユーザーは失効履歴を削除できますか? --- ### Q17: 会計処理 **質問:** 有効期限切れポイントの会計処理はどうしますか? **選択肢:** - [ ] A. 引当金を取り崩す - [ ] B. 営業外収益として計上 - [ ] C. その他: ___________ **追加質問:** - 経理部門との調整は完了していますか? - 税務上の影響は確認済みですか?
ステップ7: 運用の質問
運用面の詳細を確認:
markdown
## カテゴリ6: 運用 ### Q18: カスタマーサポート対応 **質問:** ユーザーから「ポイントが消えた」と問い合わせがあった場合の対応は? **選択肢:** - [ ] A. 失効履歴を見せて説明 - [ ] B. 特例でポイント復元 - [ ] C. 規約に従い復元不可 - [ ] D. その他: ___________ **追加質問:** - カスタマーサポート向けマニュアルは作成しますか? - FAQに有効期限の説明を追加しますか? --- ### Q19: 管理画面の機能 **質問:** 管理者は有効期限を手動で設定・変更できますか? **選択肢:** - [ ] A. できる(全権限) - [ ] B. 一部のみ(延長のみ可能など) - [ ] C. できない(自動設定のみ) - [ ] D. その他: ___________ **追加質問:** - 管理者による一括設定は必要ですか? - 監査ログは記録しますか? --- ### Q20: モニタリング **質問:** どの指標を監視しますか? **選択肢(複数選択可):** - [ ] A. 失効ポイント総数(日次) - [ ] B. 失効ユーザー数(日次) - [ ] C. 通知送信成功率 - [ ] D. バッチ処理実行時間 - [ ] E. その他: ___________ **追加質問:** - 異常値のアラート基準は?(例: 失効ポイント > 10万pt/日) - ダッシュボードは作成しますか?
ステップ8: 質問の優先度付け
質問を優先度別に整理:
markdown
## 質問の優先度 ### 🔴 Critical(実装前に必須) | # | 質問 | 理由 | |---|------|------| | Q1 | 有効期限の長さ | 実装の前提条件 | | Q2 | 既存ポイントの扱い | データ移行に影響 | | Q3 | 有効期限切れポイントの処理 | ビジネスルール | | Q4 | ポイント送受信時の有効期限 | ユーザー体験に直結 | | Q15 | 利用規約の更新 | 法的リスク | **推奨アクション:** プロダクトオーナーに即座確認 --- ### 🟡 High(Phase 1で決定推奨) | # | 質問 | 理由 | |---|------|------| | Q5 | 複数有効期限の使用順序 | UXに影響 | | Q6 | 有効期限の表示方法 | UI設計に必要 | | Q7 | 通知のタイミング | 実装工数に影響 | | Q10 | バッチ処理のタイミング | インフラ設計に影響 | **推奨アクション:** 1週間以内に決定 --- ### 🟢 Medium(Phase 2で決定可) | # | 質問 | 理由 | |---|------|------| | Q8 | エラーメッセージ | 実装中に調整可能 | | Q11 | パフォーマンス要件 | テスト後に調整可能 | | Q18 | カスタマーサポート対応 | 運用開始前でOK | **推奨アクション:** 実装中に決定 --- ### 🔵 Low(後から決定可) | # | 質問 | 理由 | |---|------|------| | Q19 | 管理画面の機能 | Phase 2の機能 | | Q20 | モニタリング | 運用後に追加可能 | **推奨アクション:** リリース後に検討
ステップ9: 質問票の生成
確認すべき質問を整理したドキュメント:
markdown
# 要件精緻化質問票 **機能名:** ポイント有効期限機能 **作成日:** 2026-01-15 **回答期限:** 2026-01-22(1週間後) --- ## 回答依頼 以下の質問について、プロダクトオーナー・ステークホルダーに確認をお願いします。 --- ## 🔴 Critical(即座に回答必要) ### Q1: 有効期限の長さ [ ] A. 付与日から1年 [ ] B. 付与日から6ヶ月 [ ] C. その他: ___________ **回答:** ___________ --- ### Q2: 既存ポイントの扱い [ ] A. 無期限のまま維持 [ ] B. 遡及的に有効期限を設定 [ ] C. その他: ___________ **回答:** ___________ **補足:** ___________ --- [以下、全20問...] --- ## 回答者 **プロダクトオーナー:** ___________ **回答日:** ___________ **承認:** ___________ --- ## 次のステップ 回答を受けて以下を実施: 1. 要件定義書の更新 2. 実装計画の策定 3. 工数見積もりの再計算
ステップ10: 回答に基づく要件更新
質問への回答を要件定義書に反映:
markdown
# 回答に基づく要件定義書の更新 ## 元の要件 **曖昧な記述:** 「ポイントに有効期限を設定する」 --- ## 質問と回答 **Q1: 有効期限の長さは?** **回答:** A. 付与日から1年 **Q2: 既存ポイントの扱いは?** **回答:** A. 無期限のまま維持(新規ポイントのみ有効期限あり) **Q4: ポイント送受信時の有効期限は?** **回答:** A. 送信元の有効期限を引き継ぐ --- ## 更新後の要件 **明確な記述:** 1. ポイントの有効期限は付与日から1年とする 2. 既存ポイント(2026-01-15以前に付与)は無期限とする 3. 新規ポイント(2026-01-15以降に付与)は有効期限を設定する 4. ポイント送受信時、受信側は送信元の有効期限を引き継ぐ 5. 有効期限切れポイントは自動的に失効し、残高から減算する 6. 失効7日前にLINE通知を送信する **受け入れ条件:** - Given: ユーザーが2026-01-20にポイント100ptを獲得 - When: 2027-01-20になる - Then: ポイントが失効し、残高が100pt減少する
活用例
例1: 新機能の要件明確化
bash
/refinement-questionnaire "ポイント有効期限機能"
出力:
- •20の質問
- •優先度付き
- •回答フォーマット
例2: 曖昧な要件の洗い出し
bash
/refinement-questionnaire docs/requirements/multi-wallet.md
出力:
- •要件の不明確な点を特定
- •確認すべき質問リスト
注意事項
質問生成の原則
- •✅ 具体的な選択肢を提示
- •✅ ビジネス影響を明記
- •✅ 回答しやすい形式
- •✅ 優先度を明確化
よくある問題
- •❌ 質問が曖昧すぎる
- •❌ 優先度がない(全て重要に見える)
- •❌ 技術的すぎる質問
推奨される使い方
- •✅ 要件定義の初期段階で使用
- •✅ プロダクトオーナーとのミーティング前に準備
- •✅ 回答を要件定義書に反映
参考資料
以下については @CLAUDE.md を参照してください:
- •要件定義のベストプラクティス
- •ビジネスルールのパターン
- •UI/UXガイドライン