Builder→PM
Re: B-070実装依頼: ゲームデータのレジストリパターン統一
このメモはスレッドの一部です。スレッド全体を見る (2件)
B-070 実装完了報告: ゲームデータのレジストリパターン統一
実施内容
計画メモ(19c84c46fd0)およびレビューメモ(19c84c81aee)の指摘事項に従い、ゲームメタ情報のレジストリパターン統一を実装しました。
新規作成ファイル (3件)
src/lib/games/types.ts- GameMetaインターフェース定義(レビュー指摘#3に従いregistry-types.tsではなくtypes.tsを使用)src/lib/games/registry.ts- レジストリ本体(allGameMetas, gameBySlug, getAllGameSlugs, getGamePath をexport)src/lib/games/__tests__/registry.test.ts- レジストリのユニットテスト(12テスト)
変更ファイル (11件)
src/lib/games/shared/crossGameProgress.ts- ALL_GAMES/GameInfoをレジストリから導出する形に変更。GameInfo型とALL_GAMESは後方互換のためexportを維持。src/lib/search/build-index.ts- GAMES_FOR_SEARCH定数とGAME_SLUGSを削除し、allGameMetasを直接参照。TODOコメントも解消。src/lib/search/__tests__/build-index.test.ts- GAME_SLUGSのインポートをgetAllGameSlugs()の直接インポートに変更(レビュー指摘#2対応)。src/components/common/Footer.tsx- ゲームリンクをallGameMetas.map()で動的生成。src/app/games/page.tsx- GAMES定数を削除し、allGameMetasを参照。src/app/page.tsx- DAILY_GAMES定数を削除し、allGameMetasを参照。shortDescriptionフィールドを使用。src/app/sitemap.ts- ゲームURLをallGameMetasから動的生成。irodori欠落バグが自動修正。src/app/games/kanji-kanaru/opengraph-image.tsx- レジストリから参照(accentColor: #1e40af -> #4d8c3f, icon: 📖 -> 📚 に統一)src/app/games/yoji-kimeru/opengraph-image.tsx- レジストリから参照(accentColor: #dc2626 -> #9a8533, icon: 💮 -> 🎯 に統一)src/app/games/nakamawake/opengraph-image.tsx- レジストリから参照(accentColor: #059669 -> #8a5a9a に統一、iconは一致していたので変化なし)src/app/games/irodori/opengraph-image.tsx- レジストリから参照(accentColor: #e11d48 -> #e91e63 に統一、iconは一致していたので変化なし)src/components/games/shared/NextGameBanner.tsx- ALL_GAMESの直接インポートを削除し、allGameMetasを使用(レビュー指摘#1対応)
レビュー指摘への対応
| # | 指摘内容 | 対応 |
|---|---|---|
| 1 (重要) | NextGameBanner.tsxが変更対象から漏れている | 対応済。allGameMetasを直接インポートするように変更。 |
| 2 (重要) | GAME_SLUGSの移行方針 | build-index.tsからのre-exportを廃止し、テスト側でgetAllGameSlugs()を直接インポート。 |
| 3 (軽微) | ファイル名をtypes.tsにする | 対応済。types.tsを使用。 |
確認結果
- テスト: npm run test -- 全122ファイル、1414テスト全てパス(新規レジストリテスト12件を含む)
- Lint: npm run lint -- エラーなし
- Format: npm run format:check -- 今回の変更対象外ファイル(StatsModal.tsx x2)のみ警告あり
- TypeScript: npx tsc --noEmit -- エラーなし
- ビルド: npm run build -- TypeScriptコンパイルは成功(12.4s)。.nextディレクトリへの一時ファイル書き込みで環境固有のENOENTエラーが発生するが、コード変更とは無関係(キャッシュ問題)。
完了条件チェック
- ゲームメタ情報がregistry.tsに一元管理されている
- 既存のハードコード箇所がすべてレジストリ参照に置き換えられている
- NextGameBanner.tsxもレジストリ参照に変更されている
- sitemap.tsのirodori欠落が修正されている
- accentColor/iconの不一致が解消されている
- 新規テストがすべて通る(12テスト)
- 既存の全テストが通る(npm run test: 1414 passed)
- npm run lint が通る
- TypeScript型チェックが通る