AIゲーム制作ラボ
Unity×AI5分で読めます

Unityプロジェクトをgitで管理して、2つのAIに同時に作らせる

同じ仕様書で Claude Code と Codex に並行でゲームを作らせるために、git worktree でフォルダを2つに分けました。Unity の .gitignore と .meta の扱い、エディターを2つ立てたときのポート、スクショがアセットとして紛れ込む罠まで、実際に踏んだところを残します。

Libra

公開 2026年9月16日

この記事の要点5 points

  1. git worktree なら同じリポジトリのまま、別ブランチを別フォルダに展開できる。 AI を2つ同時に走らせる土台になる。
  2. Unity エディターを2つ開くと、操作用のローカル API のポートが 7800 と 7801 に分かれる。 必ずプロジェクトを指定して叩く。
  3. Library / Temp / Builds はコミットしない。 追跡しているのは126ファイルだけだった。
  4. .meta は必ずコミットする。 落とすと参照が切れる。
  5. AI に撮らせたスクショが Assets の下に入り、そのまま git の対象になった。 相対パスは Assets 基準だった。
目次5
検証した環境最終確認 2026年9月16日
  • Unity 6.6(6000.6.0f1)
  • git(Windows 版)・Git Bash
  • Unity CLI 1.0.0-beta.9 / com.unity.pipeline 0.7.0-exp.1
  • Windows 11

書いてあるのは、この環境で実際に試した結果です。ツールの仕様や料金は変わるので、重要な判断の前には公式の情報も確認してください。

同じ仕様書で、Claude Code と Codex に同じゲームを作らせて比べる。これをやるには、同じ起点から始まる作業フォルダが2つ要ります。

クローンを2つ作るのは面倒です。git worktree を使いました。

2

作業フォルダ

履歴は1つのまま

7801

2つ目のエディターのポート

1つ目は 7800

126

git が追跡するファイル

フォルダ全体は数万

0回

AI がしたコミット

3回の無人実行で

worktree で2つ目のフォルダを作る

git worktree add ../breakout-codex -b codex/v1 6110383

これで、6110383(仕様書だけが入ったコミット)を起点にした codex/v1 ブランチが、隣のフォルダに展開されます。履歴は1つのままなので、あとで両方のブランチを並べて見られます。

  1. STEP 01

    起点コミット

    仕様書だけが入った状態

  2. STEP 02

    claude/v1

    元のフォルダ・エディター①

  3. STEP 03

    codex/v1

    worktree・エディター②

同じ起点から2本に分かれます。どちらも Unity プロジェクトとして完全な形です。

エディターはフォルダごとに開きます。2つ目のエディターは、操作用のローカル API のポートが自動的に 7801 になりました1つ目は 7800)。

Unity の .gitignore で何を外すか

Unity が作り直せるものは入れない。

入れない

Library/ … インポート結果のキャッシュ。数GB・環境依存

Temp/ … 実行中の一時ファイル

Builds/ … ビルド成果物(今回は 7〜10MB)

Logs/ UserSettings/ … ログと個人の設定

*.csproj *.sln … Unity が再生成する

必ず入れる

Assets/ の中身 … 本体

.meta ファイル … ファイルと GUID の対応。落とすと参照が切れる

ProjectSettings/ … ビルド・入力・品質の設定

Packages/manifest.json … 使っているパッケージの一覧

結果として、このブロック崩しで git が追跡しているのは126ファイルです。Unity プロジェクトのフォルダを丸ごと見ると数万ファイルありますが、意味があるのはこれだけでした。

AI に触らせたときに紛れ込んだもの

スクショが Assets の下に入った

Unity CLI の capture_game_view で、AI にゲーム画面を撮らせました。保存先に Temp/shots/01.png を指定したところ、実際に保存されたのは Assets/Temp/shots/01.png でした。相対パスは Assets/ 基準です。

しかもプロジェクトのフォルダ外は指定できません。

unity command capture_game_viewERROR
Pipeline server returned 400 Bad Request:
Parameter Validation Failed. Path '…' is outside the project root

スクショは必ず Assets/ の下に落ちる。

そのまま git の対象になり、アセットとしてインポートもされます。撮ったら消すか、.gitignore に入れておく必要があります。

AI はコミットしない

指示文に書かなければ、エージェントはコミットしません。今回、無人実行を3回やってコミットは0回でした。作業が中断したとき、履歴は空のままです。

保存するのは人間の仕事として組んでおくのが安全です。

worktree の片付けで踏んだところ

実行が中断した2回目の状態を残したくて、フォルダを別名に移そうとしました。

Git BashERROR
$ git worktree move ...
Permission denied

原因は単純で、自分のシェルの作業フォルダがその中にあったからです。Windows は開いているフォルダを移動できません。リポジトリのルートに戻ってから実行したら通りました。

AI エージェントに操作させていると、「どこにいるか」を見落としがちです。移動・削除の前にルートへ戻す、と決めておくと楽です。

まとめ

  • git worktree なら、同じ履歴のまま作業フォルダを2つに分けられる。AI を並行で走らせる土台になる
  • エディターを2つ開くと操作用のポートが分かれる。CLI は必ずプロジェクトを指定して叩く
  • Library Temp Builds は入れない。.meta は必ず入れる
  • AI に撮らせたスクショは Assets/ の下に落ちる。git に紛れ込む
  • コミットは人間がやる。AI は指示しなければ1回もしない

FAQ

よくある質問

なぜクローンを2つ作らずに worktree なのですか?

履歴が1つのままだからです。あとで2つのブランチを見比べたり、同じ起点から作り直したりするのが簡単になります。クローンを分けると、比較のたびにリモート越しの操作が要ります。

Library フォルダはコミットしないと、2つ目のフォルダで作り直しになりませんか?

なります。2つ目のエディターは Library の作成に数分かかり、メモリも2GB ほど使いました。それでもコミットすべきではありません。環境に依存する生成物で、サイズも桁が違います。

Git LFS は要りますか?

画像や音を入れるなら要ります。ただし置き場所のサーバー側が古いと使えないことがあるので、素材を増やす前に置き場所の git のバージョンを確認しておくほうが安全です。今回の題材は画像素材ゼロなので、まだ入れていません。

シーンやプレハブの衝突はどうしますか?

Unity 付属の UnityYAMLMerge を mergetool に設定します。今回は2つのブランチを合流させない方針(別々の成果物として残す)なので、実際には使っていません。

エディターを2つ開いて重くないですか?

重いです。Library の作成中は特に食います。ただ、片方がビルド中でももう片方でテストを回せるので、待ち時間は減りました。

SOURCES

出典

  1. 01Unity.gitignoreGitHubUnity 用 .gitignore の元ネタ
  2. 02Smart mergeUnity Documentationシーン・プレハブの衝突を解決する UnityYAMLMerge の設定

この記事は役に立ちましたか?

NEXT