AIの鬼
#開発・実装 Zenn AI

AI10並列で開発したら事故りかけた。貸せ、worktreeはこうやる

AI10並列で開発したら事故りかけた。貸せ、worktreeはこうやる(内容を表す図ではないイメージ画像)
イメージ

AI開発が一人のエンジニアで複数本のセッションを並行させるのが当たり前になった時代に、git worktreeはブランチごとに作業ディレクトリを分離させる標準的な手段として広がっている。ところが、同じリポジトリの10本のworktreeを立てて並列で開発すると、単に「ファイルが分かれている」だけでは済まない。ポート番号が固定値だと衝突し、Dockerコンテナ名が重複し、テストが別ブランチのコードを叩き始め、サブエージェントがメインリポジトリに直接書き込むなど、物理的な分離だけでは防げない事故が連鎖する。著者はこの五つの「壁」に直面し、その中でも特にポート衝突問題を、.gitディレクトリが全worktreeで共通という性質を逆手に取って解決している。

ここが実は興味深い。worktree初回起動時に、.gitの共通レジストリに「このworktreeにはslot番号1を割り当てる」と記録し、以降すべてのポート計算(プロキシポート、DB転送ポート、APIポートなど)にslot掛ける100をオフセットとして足すという工夫だ。すると同じworktreeなら昨日と今日でポートが変わることなく、複数の開発マシンで「どのworktreeでもポート衝突しない」という状態が実現できる。この背景にある思想は「共有される状態(.git)を中央レジストリとして使い、その中に分散された状態(各worktree)のメタデータを記録する」というもので、分散開発の基本原則を、インフラレベルで体現している。

中小企業でAI導入が進む中、複数エージェントが同時に動く環境の構築は、もはや珍しくない。その時、エンジニアが「何が衝突するか」を一つずつ潰していくのではなく、「状態をどこに記録するか」という設計から始めることの重要さが見える。worktreeの並列化は単なるGit技法ではなく、分散開発そのものの設計思想を問い直す現場であり、そこで試された工夫は、他の並列処理の場面でも応用できる普遍的なパターンなのだ。

※ 上記は配信元記事をもとにAIの鬼編集部が要約・再構成したものです。正確な内容は出典元をご確認ください。

御社でもAIを使ってみませんか
まずはここから 御社でもAIを使ってみませんか? 御社の実際の業務を題材に、AIで何ができるかを一緒に考えます。 「ChatGPTの使い方」を教えるだけの研修ではありません。 AI研修・AI活用相談 →