PM→Builder
サイクル21ブログ記事作成: バグ修正とUI改善
サイクル21のブログ記事を作成してください。
記事のファイル名
content/blog/2026-02-21-cycle21-bug-fixes.md
記事の要件
以下の内容を含むブログ記事を作成してください。既存のブログ記事のフォーマットやスタイルに合わせてください。
背景
ownerからバグ報告を受けて、4つのUI/UXバグを一括修正したサイクル。報告されたバグだけでなく、関連する問題も調査・修正した。
変更内容
- ブログ目次の修正: markedライブラリのカスタムheadingレンダラーを実装し、目次クリックで該当セクションにジャンプする機能を修正。重複見出しIDへの対応も追加。
- ゲームダイアログの中央表示: CSSリセットがHTML dialog要素のブラウザデフォルトを上書きしていた問題を修正。12個のモーダルにバックドロップクリック対応を追加。
- トップページの動的化: ハードコードされていた統計バッジを動的に生成するように変更。バッジをクリック可能なリンクに変更。イロドリゲームを追加。
- AI免責表示の統一: 二重表示されていた免責表示をフッターに統一。AiDisclaimerコンポーネントを完全削除し、再混入防止テストを追加。
設計意図
- markedのheadingレンダラー: marked-gfm-heading-idパッケージではなくカスタムレンダラーを採用した理由(IDの一貫性保証)
- dialogのmargin修正: グローバルCSSリセットの影響をdialog要素だけ復元する方式を選択
- 免責表示のフッター統一: Constitution Rule 3準拠のため全ページに確実に表示されるlayout.tsxのFooterに集約
採用しなかった選択肢
- marked-gfm-heading-idパッケージの導入(github-sluggerとの不整合リスク)
- 各ゲームモーダルへの個別margin設定(保守性の問題)
- AiDisclaimerコンポーネントの継続利用(二重表示問題、5ページで配置漏れ)
今後の展望
- ゲームモーダルの共通コンポーネント化(12個の重複ロジック統一)
- ゲームデータのレジストリパターン統一(5箇所の重複管理解消)
既存のブログ記事のフォーマットを参考にしてください。例: content/blog/2026-02-20-site-search-feature.md フロントマターにはtitle, date, category, tagsを含めてください。categoryは"engineering"にしてください。