📌
「個人開発×Claude Code」 ナポレオン開発日記 #2 ゲーム作成編
こんにちは。
このシリーズでは、Claude Code を使いながらトランプカードゲーム「4人用ナポレオン」のWebアプリを個人開発していく過程を日記形式でまとめています。
前回(#1)は「環境整備編」。Claudeにほぼ丸投げで環境を整えたらどうなったかを紹介しました。
今回はいよいよ本題、実際のゲーム処理の実装に取り組みました。
4人プレイヤー+COM3人の実装
今回は4人用ナポレオンとして、プレイヤー1人+COM3人で対戦できるように作り込みました。
実装した流れ
以下のようなルールを箇条書きにしながら、
私:
以下手順のロジックで宣言フェーズを作ってほしい
Claude:
判定ロジックを作りましょう
みたいな形で作って行きました。
ナポレオン決定フェーズ
- クラブの13枚以上から宣言スタート
- プレイヤー → COM の順で宣言
- 宣言枚数が同じならクラブ → ダイヤ → ハート → スペードの優先順
- 誰も宣言しなければ配り直し
- 副官決定フェーズ
- ナポレオンが指定したカードを持っているプレイヤーが副官に
- そのカードが「埋まっている4枚」にある場合は副官なし
- 残りのプレイヤーは連合軍に
AIプレイヤーの実装
Claudeに相談しながら、以下のアルゴリズムを実装しました。
- 手札強度評価
- 勝率ベースでの宣言判定
- 最適な副官カード選択
- 捨て札(交換)の最適化
手札の出し手で効果的なものを計算して自動で手札を出しています。
「それっぽい強さ」で遊べるAIが出来たことに感動しました。
セキュリティ強化
Webアプリとして遊べる形にしていく以上、セキュリティも必要です。Claudeに任せつつ、以下を導入しました。
- Row Level Security (RLS) ポリシー
- Next.js Server Actions 経由のDB操作
- 管理者権限とService Role Keyの分離
- プレイヤーIDの自動同期
本番運用同等のセキュリティを意識しています。
UI改善とユーザビリティ向上
見やすさはまだまだ改善の余地ありですが、Claudeにお任せしました。
AIっぽさ満載のUIですがいったん動いて視認出来ればOKとして作りました。
- ナポレオン宣言時のUI
- 実際のゲーム進行のUI
この2つはそこそこ時間かかりましたがそれでも半日くらいの時間で動きました。
すごいです、Claude君。
学び
- デザインはある程度やってくれる(見た目はAI感満載であるが)
- DB周りのエラーはエラー文を貼り付けるだけだと修正にハマる
- とにかく動くものをめっちゃ早く作れる(動くものは10時間かからずに作れた)
課題
- 相変わらずLimitがすぐ来てしまう
- 以下設定をclaude.mdに記載したらLimit来るのが遅くなった気がする(参考記事)
- SHALL use the MCP server 'serena' for source code retrieval and modification.
- SHALL limit response token length to avoid usage limit.
- SHALL break down large files for stepwise parsing.
- 以下設定をclaude.mdに記載したらLimit来るのが遅くなった気がする(参考記事)
- 動的importにされたり謎の変数を増やしたりするのでリファクタリングが適宜必要
- たまに大した修正じゃなくてもめっちゃ時間かかることがある
まとめ
今回で、 「ゲーム処理全般」 の基盤が整いました。
次回は、実装のリファクタリングについての記事となる予定です。
リポジトリはこちら 👉 GitHub
👉 第1回の記事はこちら
Discussion