Claude Codeで複数のタスクを同時に進めたいとき、ターミナルを1つしか使わない運用では待ち時間が積み重なります。機能追加の裏でテストを回す、フロントエンドとバックエンドを同時に実装する――こうした場面で並列実行が効果的です。
並列実行の手段は大きく3つあり、それぞれ得意な場面が異なります。
| 手法 | 概要 | 向いている場面 |
|---|---|---|
| git worktree + 複数ターミナル | ブランチごとに作業ディレクトリを分離し、各ターミナルでClaude Codeを起動 | 独立した機能の同時開発、PR単位の並行作業 |
| サブエージェント(Task tool) | Claude Code内部から別エージェントを起動し、調査・テスト・レビューを委譲 | コードベース調査、テスト実行、コードレビュー |
| tmux / iTerm2 による多重化 | ターミナルマルチプレクサでセッションを分割し管理 | 短時間のタスク並行、セッション監視 |
git worktreeで作業ディレクトリを分離する
git worktreeは、1つのリポジトリから複数の作業ディレクトリを切り出す機能です。各worktreeは独立したブランチをチェックアウトできるため、ファイルの競合を気にせずClaude Codeを複数同時に動かせます。
worktreeの作成手順
# feature-authブランチ用のworktreeを作成
git worktree add ../my-project-auth -b feature/auth
# feature-api用のworktreeを作成
git worktree add ../my-project-api -b feature/api
# 作成済みworktreeの一覧を確認
git worktree list
各ディレクトリに移動して、別々のターミナルでClaude Codeを起動します。
# ターミナル1
cd ../my-project-auth
claude
# ターミナル2
cd ../my-project-api
claude
VSCodeのgit worktreeサポート
VSCode 1.103(2025年7月版)以降、標準でgit worktreeの管理機能が搭載されました。GUIからworktreeの作成・削除が可能です。コマンドパレットからGit: Create Worktreeを実行し、ブランチ名と保存先ディレクトリを指定するだけで新しいworktreeが開きます。
worktree運用で押さえておくポイント
共有ファイルに注意する
.gitディレクトリはworktree間で共有されます。git stashやブランチの操作は全worktreeに影響するため、stashの代わりに一時コミットを使う運用が安全です。
node_modulesなどの依存パッケージ
worktreeごとにnode_modulesやtargetディレクトリは独立して存在します。新しいworktreeを作成したらnpm installやcargo buildを忘れずに実行してください。
worktreeの整理
マージ済みのworktreeは速やかに削除します。
git worktree remove ../my-project-auth
サブエージェントによるClaude Code内並列処理
Claude Codeには、Task toolを使ったサブエージェント機能が組み込まれています。メインの会話コンテキストを消費せずに、別のエージェントインスタンスへ作業を委譲できます。
組み込みサブエージェントの種類
| エージェント | 用途 | 利用できるツール |
|---|---|---|
| Explore | コードベースの高速検索・調査 | Read, Glob, Grep |
| Plan | アーキテクチャ設計・実装計画 | Read, Glob, Grep(編集不可) |
| general-purpose | 汎用タスク実行 | 全ツール |
Claude Codeはタスクの性質を判断し、自動的にサブエージェントへ委譲します。明示的に指定する場合はプロンプトに記載します。
認証モジュール、データベース層、APIルーティングを
それぞれ別のサブエージェントで並行調査してください
フォアグラウンドとバックグラウンド
サブエージェントはフォアグラウンド(完了まで待機)またはバックグラウンド(並行実行)で動作します。
- フォアグラウンド: 権限確認や質問をユーザーに転送できる。結果が出るまでメイン会話はブロックされる
- バックグラウンド: メイン会話で作業を続けながら裏で処理が進む。起動前に必要な権限をまとめて承認する
実行中のタスクをバックグラウンドに切り替えるには Ctrl+B を押します。
カスタムサブエージェントの作成
.claude/agents/ディレクトリにMarkdownファイルを配置すると、独自のサブエージェントを定義できます。
---
name: test-runner
description: テストスイートを実行し、失敗箇所を報告する
tools: Bash, Read, Grep
model: haiku
---
テストを実行し、失敗したテストのエラーメッセージのみを返してください。
成功したテストの詳細は不要です。
frontmatterで指定できる主なフィールドは以下のとおりです。
| フィールド | 必須 | 説明 |
|---|---|---|
| name | はい | 一意の識別子(小文字・ハイフン) |
| description | はい | エージェントの用途の説明 |
| tools | いいえ | 利用可能なツールを制限 |
| model | いいえ | sonnet / opus / haiku / inherit |
| permissionMode | いいえ | 権限モード(default, acceptEdits, plan等) |
| memory | いいえ | 永続メモリスコープ(user, project, local) |
memoryフィールドを設定すると、サブエージェントはセッションを超えて知識を蓄積します。コードレビューのパターンやデバッグのノウハウを学習させる用途に有効です。
tmuxやiTerm2によるセッション管理
tmuxを使うと、1つのターミナルウィンドウ内で複数のペインやウィンドウを管理し、それぞれでClaude Codeを実行できます。
# 新しいtmuxセッションを作成
tmux new-session -s claude-work
# ウィンドウを水平分割
tmux split-window -h
# 左ペインでClaude Codeを起動
claude
# 右ペイン(Ctrl+b → 矢印キーで移動)でも起動
claude
iTerm2(macOS)では、ネイティブのタブ・ペイン分割を使うほうがスクロールや検索の面で快適です。tmuxのスクロールバッファはデフォルトで2000行しかなく、長い出力が切れることがあります。
tmux vs 複数ターミナルウィンドウ
tmuxは便利ですが、Claude Codeの並列運用においてはデメリットもあります。
- tmuxのスクロールバッファ制限により長い出力が見切れる
- 複数のターミナルウィンドウを別々に開く方が、物理的な分離で「どのウィンドウがどのタスクか」を識別しやすい
- OS標準のターミナルでネイティブスクロールを使うほうが操作性が良い
git worktreeと組み合わせる場合、各worktreeディレクトリに対して別々のターミナルウィンドウを開く構成がシンプルで管理しやすい方法です。
Agent SDK(ヘッドレスモード)によるプログラム的な並列実行
Claude Codeは-pフラグを付けて実行することで、非対話モード(ヘッドレスモード)で動作します。Agent SDKとしてCLI・Python・TypeScriptから呼び出せるため、スクリプトやCI/CDパイプラインに組み込めます。
基本的な使い方
# 非対話モードでプロンプトを実行
claude -p "auth.pyのバグを修正して" --allowedTools "Read,Edit,Bash"
# JSON形式で結果を受け取る
claude -p "このプロジェクトの概要を教えて" --output-format json
# 前回の会話を継続
claude -p "データベースクエリに注目して" --continue
複数プロセスの並列実行
シェルスクリプトでバックグラウンドプロセスとして複数のClaude Codeを同時起動するパターンです。
#!/bin/bash
# 3つのタスクを並列実行
claude -p "認証モジュールをレビュー" --allowedTools "Read,Grep" &
claude -p "APIエンドポイントのテストを実行" --allowedTools "Bash,Read" &
claude -p "ドキュメントを更新" --allowedTools "Read,Edit" &
wait
echo "全タスク完了"
CI/CDとの統合
GitHub ActionsやGitLab CI/CDから呼び出すことで、PRのコードレビューやテスト実行を自動化できます。--output-format jsonと--json-schemaを組み合わせれば、構造化された結果を後続のステップで処理できます。
# PR diffをパイプしてセキュリティレビュー
gh pr diff "$PR_NUMBER" | claude -p \
--append-system-prompt "セキュリティエンジニアとして脆弱性をレビュー" \
--output-format json
並列実行時に発生しやすい問題と対処法
ファイル競合
同一ファイルを複数のClaude Codeセッションが同時に編集すると、変更が上書きされるリスクがあります。git worktreeでブランチを分離するか、サブエージェントにRead権限のみ付与して書き込みを制限する方法が有効です。
権限待ちによるセッション停止
並列運用で最も多いトラブルは、あるセッションが権限確認を待っている間にユーザーが気づかず放置してしまうケースです。対策として以下があります。
--allowedToolsで事前に必要なツール権限を付与し、確認回数を減らす- Claude Code Hooksを利用して、権限待ち発生時に通知を送るスクリプトを設定する
- 監視ダッシュボードを自作し、各セッションのステータスを可視化する
コンテキストウィンドウの肥大化
1つのセッションで大量のファイルを読み込むと、コンテキストウィンドウが圧迫されます。サブエージェントに調査を委譲すれば、メイン会話のコンテキストは要約のみを受け取る形になります。
用途別のおすすめ構成
個人開発で2〜3タスクを同時進行する場合
git worktreeで機能ブランチを分離し、ターミナルを2〜3個開く構成が最もシンプルです。tmuxは不要で、OS標準のターミナルアプリで十分です。
チーム開発でPR単位の並行作業を行う場合
git worktreeに加え、ブランチの命名規則と依存チェーンPRの運用を組み合わせます。PRを小さく分割し、依存関係をgh pr create --baseで明示することで、レビュー待ちのブロックを回避できます。
コードベース全体の調査やリファクタリング
サブエージェントの並行調査が最適です。モジュールごとにExploreエージェントを起動し、結果をメイン会話で統合する流れになります。
認証・データベース・APIの各モジュールを
それぞれExploreエージェントで並行調査してください
CI/CDパイプラインへの組み込み
Agent SDK(claude -p)をGitHub ActionsやGitLab CI/CDから呼び出します。--output-format jsonで結果を構造化し、後続ステップで処理します。
まとめ
Claude Codeの並列実行には、git worktree・サブエージェント・tmux / 複数ターミナル・Agent SDKの4つの手段があります。
- git worktree: 独立したブランチ作業を同時に進めたいときの基本構成。ファイル競合がなく、PRごとにworktreeを分離する運用が安定する
- サブエージェント: Claude Code内部で調査・テスト・レビューを並行処理する仕組み。コンテキストウィンドウを節約でき、カスタムエージェントで用途に特化できる
- tmux / 複数ターミナル: セッション管理の手段。git worktreeと組み合わせて使うのが一般的
- Agent SDK: CI/CDやスクリプトからの自動実行に対応。
-pフラグで非対話モード、--output-format jsonで構造化出力が得られる
用途に合わせてこれらを組み合わせることで、開発のスループットを大幅に高められます。並列実行の公式ガイドはClaude Code Docsで確認できます。