Claude CodeとGemini CLIで牌九(パイガオ)ゲームを開発した話
は# Claude CodeとGemini CLIで牌九(パイガオ)ゲームを開発した話
はじめに
森巣博さんの小説「越境者たち」に登場する「牌九(パイガオ)」というカジノゲームをAIの力を借りて開発しました。週末の5-6時間でWebアプリケーションとして完成させることができたので、その過程と躓いた点を共有します。
技術スタック
- 開発: Claude Code
- デプロイ支援: Gemini CLI
- インフラ: Google Cloud Run
- コンテナ: Docker
- 言語: JavaScript(Node.js)
開発の流れ
1. 仕様策定フェーズ
牌九のルールを理解するため、Wikipedia の牌九のページをClaude Codeに読み込ませて仕様書を作成してもらいました。
# Claude Codeでの作業例
claude-code analyze "https://ja.wikipedia.org/wiki/牌九"
claude-code generate-spec "牌九ゲーム仕様書"
2. 開発フェーズ
仕様書をもとに、AIと対話しながらゲームロジックを実装しました。
主な機能:
- 牌の配布システム
- 手牌の組み合わせ判定
- プレイヤー vs ディーラーの勝敗判定
- 結果の解説表示
実装時間: 約5時間
3. デバッグフェーズ
判定ロジックに不備があったため、AIと対話しながらデバッグを実施しました。
// 判定ロジックの例(修正後)
function evaluateHand(tiles) {
// 牌の組み合わせを評価
const combinations = generateCombinations(tiles);
return findBestCombination(combinations);
}
デプロイでの躓きポイント
Docker化は順調
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD ["npm", "start"]
Docker化自体は一瞬で完了しました。
Cloud Runでのエラー地獄
しかし、Cloud Runへのデプロイで大きく躓きました。
主なエラー:
- ポートバインディングエラー
- ネットワーク接続エラー
- サービス起動エラー
問題の原因と解決策
問題: app/node_modules/serve/bin/serve.jsのオプション指定が不適切
解決:
// 修正前
exec serve -s dist -l 0.0.00:8080
// 修正後
exec serve -s dist -p 8080
Cloud Runでは0.0.0.0アドレスでのバインディングが必須でした。
Gemini CLIでの支援
# Gemini CLIでの作業例
gemini deploy debug cloud-run-errors.log
gemini fix dockerfile-optimization
Gemini CLIは親切でしたが、同じ提案を繰り返す傾向があり、トークン消費が激しかったです。
完成したアプリケーション
🎮 牌九ゲーム: https://paigow-game-685177249328.asia-northeast1.run.app/
特徴:
- レスポンシブデザイン
- 手牌の組み合わせ解説
- 勝敗判定の詳細表示
- 日本語での丁寧な説明
ソースコード
GitHubで公開しています:
学んだこと
AIの得意分野
- 仕様書の作成
- 基本的なロジックの実装
- Docker化の支援
AIの苦手分野
- 複雑なデプロイエラーの解決
- 環境固有の設定問題
- 最終的なデバッグ
開発効率の向上
従来なら数日かかっていた開発が、AIの支援により5-6時間で完了しました。特に以下の点で効率化を実感:
- 仕様理解の高速化: Wikipediaの内容から仕様書を自動生成
- コード生成の自動化: ルールに基づいたロジックの実装
- デバッグの効率化: 対話的な問題解決
まとめ
AI支援による開発は非常に効率的でしたが、最終的な問題解決は人間の判断が必要な場面も多々ありました。特にインフラ関連の設定やデプロイエラーについては、AIの提案を参考にしつつも、最終的には自分で原因を特定する必要がありました。
それでも、週末の短時間でWebアプリケーションを完成させることができたのは、AIツールの進歩を実感させられる体験でした。
今後もAIを活用した開発を続けていきたいと思います。
Discussion