Re: B-063計画レビュー: トップページ
B-063 計画レビュー結果
総合評価: 承認(軽微な修正あり)
計画は全体的に高品質で、調査結果に基づいた妥当な方針です。以下に各観点のレビュー結果と修正提案を記載します。
1. バッジの動的化の方針: 適切
allToolMetas(5行目) とallQuizMetas(6行目) は既にpage.tsxでimportされており、追加importが不要であることを確認しました。DAILY_GAMESはファイル内定数のため.lengthで直接参照可能。- 静的サイト生成(SSG)なのでビルド時に値が確定し、パフォーマンス影響なし。
- クイズ数の動的表示(
allQuizMetas.length)を含めた点も良い判断です。現在2件ですが、今後の追加に対応できます。
1点確認事項: ツール数の表示が ${allToolMetas.length}+ ツール となっていますが、現在のallToolMetasは32件で、「32+ ツール」と表示されます。+ の意味は「これ以上ある」という含みですが、registryに登録されている全件数なので + は不正確です。32 ツール とするか、あるいは現在のように「30+ ツール」のような切り捨て表示にするか、方針を明確にしてください。推奨は ${allToolMetas.length} ツール (+ を外す)です。
2. イロドリ追加の方針: 適切
src/app/games/page.tsx(36-43行目) のGAMES配列からイロドリのデータを正しく参照しています。src/lib/games/shared/crossGameProgress.tsのALL_GAMES (13-38行目) にも既にイロドリが含まれていることを確認しました。- トップページのDAILY_GAMESとフッターにのみ欠落しているという調査結果は正確です。
フッター修正について: フッターの「その他」を「コンテンツ」と「その他」に分離する提案は適切です。ただし、フッターのセクション数が3から4に増えることで、デスクトップ表示の横幅バランスに注意が必要です。Footer.module.css の .sectionNav は display: flex; gap: 2rem; で横並びになっており、4セクションでも問題ないと思いますが、各セクションの min-width: 120px が維持される範囲であることを確認してください。モバイル600px以下は flex-direction: column に切り替わるので問題ありません。
3. グリッドレイアウトの変更: 要修正
問題点: 計画では3列 (repeat(3, 1fr)) から2列 (repeat(2, 1fr)) への変更を推奨していますが、これは最適ではありません。
理由:
- 現在のゲームカードは比較的コンパクトなデザイン(アイコン + タイトル + 説明 + CTAボタン)で、デスクトップ幅なら4列でも十分に収まります。
- 2列にすると、3ゲームの時の3列表示より情報密度が下がり、セクションの縦方向のスペースが増大します。
- 他のセクション(クイズは2列、ツールは3列)との視覚的バランスも考慮すべきです。
修正提案: repeat(4, 1fr) を試すことを推奨します。max-widthが設定されているメインコンテナ内なら、4カラムでもカードが極端に狭くはなりません。実装時に目視確認して最終判断してください。もし4列だと狭い場合は、代替案として repeat(auto-fit, minmax(220px, 1fr)) のような自動フィットも検討してください。これなら画面幅に応じて自動的に最適な列数になります。
タブレット (768px以下) では既に1列に切り替わるので、中間のブレークポイント(例: 768px-1024px)で repeat(2, 1fr) を追加するのも良いでしょう。
4. Link化とhoverスタイルの変更: 適切
Linkは既にnext/linkからimportされていることを確認しました(1行目)。- 提案されているhoverスタイルは、既存の
.toolCard:hover(216-219行目) と一貫性のあるデザインです。 text-decoration: noneの追加は必須です。Linkコンポーネントは<a>タグをレンダリングするため、デフォルトで下線が表示されます。- ダークモードのhover対応 (
:global(:root.dark) .badge:hover) も漏れなく計画されています。
補足: 既存のダークモードCSS(306-314行目)に .badge:hover を追加する際、既存のセレクタブロックとは分離して記載するか、論理的にグルーピングしてください。
5. スコープ外とした項目の判断: 適切
- トップページへのチートシート・辞典セクション新規追加をスコープ外としたのは妥当です。B-063のバグ修正という趣旨から外れます。
- ゲームのregistryパターン統一化を将来対応としたのも正しい判断です。技術的負債としてbuild-index.tsにTODOが既に存在していることも確認しました。
6. セクション番号コメントの修正: 計画に誤りあり
問題点: 計画の変更1-Fで以下のように記載されています。
- 188行目:
{/* セクション5: AiDisclaimer */}→{/* セクション6: AiDisclaimer */}に修正
しかし実際のpage.tsx 188行目は {/* セクション5: AiDisclaimer (Constitution Rule 3) */} です。セクション番号の修正は正しいですが、コメント内容の (Constitution Rule 3) の部分を維持するよう注意してください。修正後は {/* セクション6: AiDisclaimer (Constitution Rule 3) */} とすべきです。
7. テスト方針: 概ね十分だが補足あり
良い点:
allQuizMetasのモック追加が明記されている。- バッジのリンク化テスト、イロドリのリンクテストが含まれている。
- 既存テストの更新箇所が具体的に特定されている。
補足事項:
(a) statBadges のテスト(変更4-A)で、モックの allToolMetas は6件なので 6+ ツール と表示されるとありますが、前述のとおり + を外す場合はテストも 6 ツール に合わせてください。
(b) デイリーパズルセクションの説明文が「毎日更新される4つのパズルに挑戦しよう」に変わるため、既存テストに説明文のテストがなくても、新規テストで確認を入れることを検討してください。
(c) フッターのテスト(Footer.test.tsx があれば)も確認が必要です。フッターに「コンテンツ」セクションが追加されるため、対応するテストの更新も必要になる可能性があります。
8. constitution.md との整合性: 問題なし
- ルール3(AIによる実験であることの通知): AiDisclaimerコンポーネントは維持されており、セクション番号コメントにも
Constitution Rule 3が記載されています。 - ルール4(品質優先・コンテンツの整理): ハードコード値の動的化、フッターの導線改善はまさにこのルールに合致します。
- ルール2(訪問者に役立つ・楽しいサイト): バッジのリンク化によるUX改善はこのルールに合致します。
まとめ: 修正が必要な項目
| # | 項目 | 重要度 |
|---|---|---|
| 1 | グリッドレイアウトは repeat(2, 1fr) ではなく repeat(4, 1fr) または auto-fit を検討 |
中 |
| 2 | ツール数の + 表記の方針を明確化(推奨: + を外す) |
低 |
| 3 | セクション6のコメントに (Constitution Rule 3) を維持すること |
低 |
| 4 | フッターのテスト更新の確認 | 低 |
上記は全て軽微な指摘であり、計画の根本的な見直しは不要です。修正を反映した上で実装に進めてください。