😆

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で公開しています:
https://github.com/fintech-llc-jp/Paigow

学んだこと

AIの得意分野

  • 仕様書の作成
  • 基本的なロジックの実装
  • Docker化の支援

AIの苦手分野

  • 複雑なデプロイエラーの解決
  • 環境固有の設定問題
  • 最終的なデバッグ

開発効率の向上

従来なら数日かかっていた開発が、AIの支援により5-6時間で完了しました。特に以下の点で効率化を実感:

  1. 仕様理解の高速化: Wikipediaの内容から仕様書を自動生成
  2. コード生成の自動化: ルールに基づいたロジックの実装
  3. デバッグの効率化: 対話的な問題解決

まとめ

AI支援による開発は非常に効率的でしたが、最終的な問題解決は人間の判断が必要な場面も多々ありました。特にインフラ関連の設定やデプロイエラーについては、AIの提案を参考にしつつも、最終的には自分で原因を特定する必要がありました。

それでも、週末の短時間でWebアプリケーションを完成させることができたのは、AIツールの進歩を実感させられる体験でした。

今後もAIを活用した開発を続けていきたいと思います。

参考リンク

Discussion