同じ仕様書で、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つのままなので、あとで両方のブランチを並べて見られます。
手順 01
起点コミット
仕様書だけが入った状態
手順 02
claude/v1
元のフォルダ・エディター①
手順 03
codex/v1
worktree・エディター②
エディターはフォルダごとに開きます。2つ目のエディターは、操作用のローカル API のポートが自動的に 7801 になりました(1つ目は 7800)。
⚠️ プロジェクトの指定を毎回付ける
エディターが2つ動いていると、CLI はどちらに繋ぐか自分では決められません。--project-path か UNITY_PROJECT_PATH を毎回付けてください。付け忘れると、意図しないほうのエディターを操作します(実際に一度やりました)。
Unity の .gitignore で何を外すか
Unity が作り直せるものは入れない。
入れない
Library/ … インポート結果のキャッシュ。数GB・環境依存
Temp/ … 実行中の一時ファイル
Builds/ … ビルド成果物(今回は 7〜10MB)
Logs/ UserSettings/ … ログと個人の設定
*.csproj *.sln … Unity が再生成する
必ず入れる
Assets/ の中身 … 本体
.meta ファイル … ファイルと GUID の対応。落とすと参照が切れる
ProjectSettings/ … ビルド・入力・品質の設定
Packages/manifest.json … 使っているパッケージの一覧
結果として、このブロック崩しで git が追跡しているのは126ファイルです。Unity プロジェクトのフォルダを丸ごと見ると数万ファイルありますが、意味があるのはこれだけでした。
.gitignore は公式のものから始める
GitHub が配っている Unity.gitignore をそのまま使うのが早いです。今回はこれを元に、日本語のコメントを付けて使っています。
AI に触らせたときに紛れ込んだもの
スクショが Assets の下に入った
Unity CLI の capture_game_view で、AI にゲーム画面を撮らせました。保存先に Temp/shots/01.png を指定したところ、実際に保存されたのは Assets/Temp/shots/01.png でした。相対パスは Assets/ 基準です。
しかもプロジェクトのフォルダ外は指定できません。
Pipeline server returned 400 Bad Request: Parameter Validation Failed. Path '…' is outside the project root
スクショは必ず Assets/ の下に落ちる。
そのまま git の対象になり、アセットとしてインポートもされます。撮ったら消すか、.gitignore に入れておく必要があります。
AI はコミットしない
指示文に書かなければ、エージェントはコミットしません。今回、無人実行を3回やってコミットは0回でした。作業が中断したとき、履歴は空のままです。
保存するのは人間の仕事として組んでおくのが安全です。
worktree の片付けで踏んだところ(原因と対処)
実行が中断した2回目の状態を残したくて、フォルダを別名に移そうとしました。
$ git worktree move ... Permission denied
原因は単純で、自分のシェルの作業フォルダがその中にあったからです。Windows は開いているフォルダを移動できません。リポジトリのルートに戻ってから実行したら通りました。
AI エージェントに操作させていると、「どこにいるか」を見落としがちです。移動・削除の前にルートへ戻す、と決めておくと楽です。
まとめ
git worktreeなら、同じ履歴のまま作業フォルダを2つに分けられる。AI を並行で走らせる土台になる- エディターを2つ開くと操作用のポートが分かれる。CLI は必ずプロジェクトを指定して叩く
LibraryTempBuildsは入れない。.metaは必ず入れる- AI に撮らせたスクショは
Assets/の下に落ちる。git に紛れ込む - コミットは人間がやる。AI は指示しなければ1回もしない