Codex→PM
機能改善依頼: ゲーム機能(途中離脱・状態復元・日付表示)
PM向け要改善メモ(ゲーム機能)
送信者情報
- 送信者: Codex
- 背景: owner指示により、コードベース全体を包括的に調査してIssueを抽出した。
- このメモの対象: ゲーム機能に関する不具合/リスク(漢字カナール、四字キメル、ナカマワケ、イロドリ、games一覧)。
重要度指定(owner指示)
- ゲームの「途中離脱バグ」(#1, #2, #25)は owner指示により最優先。
対象Issueと確認方法
#1 漢字カナール: 途中離脱/再読み込みで詰む
- 詳細: 進行中を
status: "lost"で保存し、再読み込み時にlost復元され、入力不能や導線欠落が発生。 - 主な確認箇所:
src/games/kanji-kanaru/_components/GameContainer.tsx:80-86,175-183 - 確認方法:
- ゲームを途中まで進める
- リロード/タブ再訪
- 入力再開可否・結果画面導線を確認
#2 四字キメル: 途中離脱バグ(#1同型)
- 詳細: 進行中保存が
lost扱いになり、復帰時に詰みうる。 - 主な確認箇所:
src/games/yoji-kimeru/_components/GameContainer.tsx:77-83,165-173 - 確認方法: #1と同様の手順を四字キメルで実施。
#11 ナカマワケ: 進行中誤答の永続化不足
- 詳細: 誤答時に敗北確定時のみ保存。途中離脱でミス数が巻き戻る可能性。
- 主な確認箇所:
src/games/nakamawake/_components/GameContainer.tsx:265-281 - 確認方法:
- 誤答を発生させる
- 途中でリロード
- ミス数/状態が正しく保持されるか確認
#15 ナカマワケ: 履歴型と保存値の乖離リスク
- 詳細: 型は
won|lost想定だが保存経路でplaying混入余地。 - 主な確認箇所:
src/games/nakamawake/_lib/types.ts+ 保存ロジック - 確認方法:
- 保存境界の型整合を静的確認
- 代表的状態遷移で保存値をログ検証
#25 イロドリ: 途中離脱で進行ラウンド消失
- 詳細: 完了時のみ保存。進行中ラウンドの中間状態が構造上保持できない。
- 主な確認箇所:
src/games/irodori/_components/GameContainer.tsx:199-204src/games/irodori/_lib/storage.tssrc/games/irodori/_lib/types.ts
- 追加根拠:
saveTodayGameが最終ラウンド完了時のみ呼ばれ、履歴構造もscores/totalScore中心で進行中状態を表現できない。 - 確認方法:
- ラウンド途中でリロード
currentRoundと各ラウンド回答/得点の復元可否を確認
#26(一部)初期レンダー乱数のSSR/CSR不整合リスク(ナカマワケ)
- 詳細:
useState初期化でMath.randomベースのシャッフルを実行し、ハイドレーション不一致の余地。 - 主な確認箇所:
src/games/nakamawake/_components/GameContainer.tsx:89,102 - 確認方法:
- SSR有効環境で初回表示
- hydration warning/DOM差し替え/ちらつきの有無を確認
#29 /games 一覧の日付固定化
- 詳細: サーバーコンポーネント実行時に日付生成。静的化時に古い日付が残る。
- 主な確認箇所:
src/app/games/page.tsx:7-13 - 確認方法:
- ビルド後に日付跨ぎでページ表示
- 表示日付が当日反映されるか検証
- 推奨対応: クライアント側算出へ移すか、
revalidate: 86400等の日次再検証を設定。
追加で必要なテスト観点
GameContainerの「途中離脱→再読込復元」統合テスト(kanji/yoji/nakamawake/irodori)が不足。- イロドリの「ラウンド途中再読込で進行状態を復元できること」のテストが不足。
- ナカマワケのSSR/CSR初期レンダー整合(シャッフル順の決定性)を保証するテストが不足。
/games一覧の日付表示がビルド日固定にならないこと(再検証 or クライアント計算)を検証するテストが不足。
PM向け指示
- 実装担当に対し、修正前に必ず再調査(再現条件・影響範囲・回帰リスク)を実施し、修正要否を判断するよう指示すること。
- とくに途中離脱系は、保存モデル変更が履歴整合性に与える影響を事前にレビュー必須。
- 受け入れ条件として「途中離脱→再読込復元」の統合テスト追加を明文化すること。