Claude Code の並列実行とは、複数のセッションを作業木(git worktree)ごとに分けて同時に走らせることです。
- 並列実行とサブエージェントの違い(別々のセッションか、1 つの会話の中の子か)
- 公式の
claude --worktreeとgit worktree add --detachで、1 セッションに 1 つの作業木を切る手順 - 当社が Claude Code の席を同時に回す中で、作業木が落ちた・消えた・数えられなかった記録と、その後の決まり
並列実行とサブエージェントは別の物
「Claude Code で並列に動かす」と言う時、2 つの物が混ざりがちです。サブエージェントは 1 つの会話の中で親が子に仕事を渡し、子が自分の文脈で調べて結果を親に返す形です。公式の頁も、サブエージェントは 1 つのセッションの中で動く物で、多くの独立したセッションを並列に走らせるのは別の仕組みだ、と分けて書いています(公式の Subagents の頁・2026-10-25 に見た)。この頁で扱うのは後者の、別々のセッションを同時に走らせる並列実行です。
| サブエージェント | 並列実行(別々のセッション) | |
|---|---|---|
| 動く場所 | 1 つのセッションの中 | セッションごとに別の端末・別の作業木 |
| 結果の行き先 | 親の会話へ要約を返す | それぞれが自分の枝・作業木に保存する |
| ファイルの置き場 | 既定では親と同じフォルダから始まる(isolation: worktree で一時の作業木に分けられる) | はじめから作業木を分ける |
| 向く仕事 | 調べ物を任せて、親の文脈を空けておく | 機能 A と不具合 B を、編集をぶつけずに同時に進める |
出典: https://code.claude.com/docs/en/sub-agents・https://code.claude.com/docs/en/common-workflows(2026-10-25 に見た)
サブエージェントの割り方は Claude Code のサブエージェント の頁にまとめています。
並列実行の手順:1 セッションに 1 つの作業木
公式の手順は、端末ごとに名前を変えて claude --worktree <名前> を打つ、という物です。作業木(worktree)はそれぞれ自分の枝を持つ別の checkout で、今ある commit から作られるので、リポに commit が 1 つも無いと Failed to resolve base branch "HEAD" で失敗します(公式の Common workflows の頁・2026-10-25 に見た)。
git の側では、1 つのリポに複数の作業木を付けられ、git worktree add -d <道> と打つと、枝を持たない(detached HEAD の)作業木が今の枝と同じ commit で作られます。同じ枝を別の作業木がもう開いていると、add は既定で作業木を作るのを断ります(git 公式の git-worktree の頁・2026-10-25 に見た)。
| 手順 | 撃つ物 | 当社で決めた事 |
|---|---|---|
| 1. 作業木を切る | claude --worktree <名前> または git worktree add --detach <道> | 席の作業木は枝を持たない形で切る。名前は短く |
| 2. 席を起こす | 作業木ごとに Claude Code のセッションを 1 つ | 保存(commit)は席ごとの作業木で撃つ。読む先は共有してよい |
| 3. 配下に読ませる | まとめ役の作業木にある現物を絶対の道で指す | origin/main から切った作業木からは、まとめ役の枝の物は見えない |
| 4. push を確かめる | git log HEAD --not --remotes | --branches では detached の作業木の commit が見えない |
| 5. 作業木を閉じる | git worktree remove(未 commit・未 push が 0 の時だけ) | その席がまだ生きていないかを先に確かめる |
出典: https://code.claude.com/docs/en/common-workflows・https://git-scm.com/docs/git-worktree(2026-10-25 に見た)・社の実測 2026-09-19・2026-09-20・2026-09-21
作業木を分けると編集がぶつからない、という仕組みそのものは Claude Code の事例の「並列開発: 競合しない仕組み」 に書いたので、ここでは分けた後に当社で起きた事を書きます。
作業木を分けても落ちた所
同じ作業木で 2 つの席が git を撃つと、merge が落ちる
はじめ、2 つの席が同じ作業木で git を撃っていた時、片方の merge が could not write index と fatal: stash failed で落ちました。以後、証跡の置き場のような「読む先」は共有してよいが、保存(commit)は必ず席ごとに別の作業木で撃つ、と決めました。席の作業木は git worktree add --detach で枝を持たない形で切っています(社の実測 2026-09-19)。
origin/main から切った作業木には、まとめ役の枝の物が無い
配下の席の作業木を origin/main から切ったら、まとめ役の席が自分の枝に書いた表が配下から見えず、配下は依頼の文だけを頼りに動きました(社の実測 2026-09-19)。作業木は切った元の commit の中身しか持たないためです。以後、配下に読ませる物は「まとめ役の作業木にある現物」を絶対の道で指しています。公式の頁でも、サブエージェントの isolation: worktree は親のセッションの HEAD ではなく、既定の枝から切られると書かれています(公式の Subagents の頁・2026-10-25 に見た)。
作業木の道が長いと、push の前の門が落ちる
作業木の道が長かった時、日本語の道の途中が壊れて、push の前の門にしている prisma generate が ENOENT で落ちました。作業木の名前を 4 字縮めたら通りました(社の実測 2026-10-23)。作業木の名前は短く付け、長くしてしまったら git worktree move で動かして直します(git 公式の git-worktree の頁・2026-10-25 に見た)。
数える・消す時に起きた事
未 push を数えるのは git log HEAD --not --remotes
当社の席の作業木は枝の名前を持たないので、未 push の commit を git log --branches --not --remotes で数えると、detached の作業木の commit が見えず、ほぼ全部が数えられませんでした。作業木の中で git log HEAD --not --remotes を撃つ形に替えています(社の実測 2026-09-20)。
git worktree list は、そのリポの分しか出さない
git worktree list が出すのは、撃ったリポに登録された作業木だけです。1 つのフォルダの下に複数のリポの作業木が同居していると、他のリポの分は一覧から落ちます。全部を数える時は、リポごとに撃って足しています(社の実測 2026-09-18)。
無人の掃除が、動いている席の作業木を消した
週 1 の無人の掃除は「未 commit が 0・未 push が 0 なら作業木を消す」という条件で回していました。ところが、まだ動いている席の作業木 2 本を消しました。その席は push の 2 分後で、作業木はちょうど clean だったからです。遠くの枝は無事で、失ったコードは 0。作り直しと原因の特定に約 15 分かかりました(社の実測 2026-09-21)。git の remove も clean な作業木なら消せる作りなので(git 公式の git-worktree の頁・2026-10-25 に見た)、消す判定には「その席が生きているか」を足す必要があります。
その「生きているか」を、はじめは端末の画面(tmux)が今いるフォルダで測ろうとしました。ところが、席はどれも自分のホームに居たまま git -C で作業木を操作していて、作業木へ移っていませんでした。そのため「画面が作業木に居ない=死んでいる」の条件は常に真で、何も守っていませんでした。今は、席を起こす道具が持っている「動いている席の作業場所」の一覧と突き合わせています(社の実測 2026-09-18)。
gh pr merge --delete-branch で、作業木ごと消えた
gh pr merge --squash --delete-branch を撃ったら、その枝を開いていた作業木ごと消えたことが 2 回ありました(社の実測 2026-09-28・2026-10-21)。どちらも中身は push 済みで、失った物は 0 でした。今は、撃つ前にその枝の作業木の未 commit・未 push が 0 かを測り、撃った後は新しい作業木を切ってから続けています(社の実測 2026-09-28・2026-10-21)。
何を並列にし、何を直列にするか
当社では、要件や設計の起草といった書類は、ファイルがぶつからないので常に並列にしています。直列にするのは、実装のうちファイルがぶつかる部分だけです(社の決まり 2026-08-01)。
同時に起こす席の数には、上限の門を置いていません。サーバの側にあった同時 5 の上限も外しました。何本並べるかは、機体のメモリと負荷を見て、まとめ役(CTO の席)が決めます(社の決まり 2026-08-28)。
作業木の置き場も決めてあります。席は 1 つの仕事(箱)ごとに、作業場 03作業場/<箱>/<リポ> に作業木を持ち、箱を閉じる前に作業木が 0 本になったかを確かめます(社の置き場の決まり)。上の「数える・消す」の記録は、この確かめのために撃っている物です。
席を同時に起こす道具と、司令塔と担当の分け方は マルチエージェント の頁に書いています。並列に動く席を仕事ごと任せられる形にした物が AIエージェント です。
よくある質問
Claude Code で並列実行するにはどうすればいいですか?
端末ごとに名前を変えて claude --worktree <名前> を打ちます。それぞれが自分の枝を持つ別の作業木で動くので、編集がぶつかりません。リポに commit が 1 つも無いと失敗します(公式の Common workflows の頁・2026-10-25 に見た)。
並列実行とサブエージェントは何が違いますか?
サブエージェントは 1 つのセッションの中で動き、結果を親の会話に返します。並列実行は、別々のセッションを別々の作業木で同時に走らせる物です(公式の Subagents の頁・2026-10-25 に見た)。
同じブランチを 2 つの作業木で開けますか?
既定では開けません。その枝を別の作業木がもう開いていると、git worktree add は作業木を作るのを断ります。当社は席の作業木を --detach で枝を持たない形で切っています(git 公式の git-worktree の頁・2026-10-25 に見た・社の実測 2026-09-19)。
Claude Code は何個まで同時に動かせますか?
当社は同時に起こす席の数に上限の門を置かず、機体のメモリと負荷を見て、まとめ役の席が本数を決めています(社の決まり 2026-08-28)。
使い終わった作業木を消す時の注意は?
未 commit と未 push が 0 でも、その席がまだ動いていることがあります。当社では無人の掃除が、push の 2 分後で clean だった動いている席の作業木 2 本を消しました(社の実測 2026-09-21)。消す前に、席を起こす道具の「動いている席の作業場所」の一覧と突き合わせています(社の実測 2026-09-18)。
出典
- Claude Code 公式の Common workflows の頁 https://code.claude.com/docs/en/common-workflows(2026-10-25 に見た・Run parallel sessions with worktrees の節・
claude --worktree・commit が無い時の失敗) - git 公式の git-worktree の頁 https://git-scm.com/docs/git-worktree(2026-10-25 に見た・
add -d・同じ枝を開いている時の拒否・list・move・remove) - Claude Code 公式の Subagents の頁 https://code.claude.com/docs/en/sub-agents(2026-10-25 に見た・1 つのセッションの中で動くこと・
isolation: worktree) - 社の決まり 2026-08-01(書類は常に並列・直列は実装のぶつかる部分だけ)
- 社の決まり 2026-08-28(同時の席の数に上限の門を置かない・サーバの同時 5 の上限を外した)
- 社の実測 2026-09-18(
git worktree listの見える範囲・tmux のフォルダで生き死にを測った条件) - 社の実測 2026-09-19(同じ作業木での merge の失敗・origin/main から切った作業木から見えなかった表)
- 社の実測 2026-09-20(
git log HEAD --not --remotes) - 社の実測 2026-09-21(無人の掃除が動いている席の作業木 2 本を消した件)
- 社の実測 2026-09-28・2026-10-21(
gh pr merge --squash --delete-branchで作業木ごと消えた件) - 社の実測 2026-10-23(作業木の道の長さと
prisma generateのENOENT) - 社の置き場の決まり(箱ごとの作業木の置き場と、閉じる前の作業木 0 の確かめ)