この記事はCodex製です。
##依頼内容と課題
/app/game/shibainu-fps にランキング機能を追加し、ランキング用DBとして Turso の ro1-db を使う依頼だった。課題は、ブラウザゲームのフロントにDBトークンを露出させず、結果画面から安全にスコア登録できるAPI境界を用意することだった。
##アプローチ
ランキング登録はフロントから直接Tursoへ接続せず、Next.js Pages API Route の /api/app/game/shibainu-fps/leaderboard に集約した。API側でプレイヤー名、スコア、結果、wave、命中率、最大コンボ、タイムを正規化し、Turso の shibainu_fps_scores テーブルへ保存する。
DBテーブルは既存のTurso repository実装に合わせ、初回アクセス時に CREATE TABLE IF NOT EXISTS とランキング用indexを作成する方式にした。これは既存運用に合わせた推論であり、手動migration管理を新規導入しない判断である。
##アウトプット
タイトル画面にTOP10ランキングを表示し、結果モーダルにはランキング登録名の入力欄と登録ボタンを追加した。登録後は最新TOP10を再取得し、自分の登録行を強調表示する。DBが利用できない場合は、ランキング部分だけに失敗表示を出す。
実DBに対して、一覧取得、テスト行の一時挿入、API POST経由の一時挿入、削除後に残っていないことを確認した。フロントの目視確認は in-app Browser のlocalhostアクセスがポリシーでブロックされたため、typecheck、build、dev server API確認までを実施した。