blog

Claude Code branch/fork・並行実行の使い分け完全ガイド

Claude Code branch/fork・並行実行の使い分け完全ガイド

Claude Code における会話分岐と並行実行の全体像

Claude Codeで複数のアプローチを並行探索したり、独立したタスクを同時進行させたりしたい場面は、実務上頻繁に発生する。その際に選択肢となるのが、会話分岐系の/branch/forkコマンド、セッション内スケジューリングの/loop、Desktop上のスケジュールタスク、Cloud Routines、そしてSubagents APIによる並行実行だ。

これらは機能が重複して見えるが、「実行基盤」「ローカルファイルへのアクセス」「セッションとの紐付け」「並行性の粒度」という4軸で明確に役割が分かれる。本記事では公式ドキュメントの仕様を軸に、各機能の仕組みと実装判断の勘所を整理する。

Claude Code 会話分岐・並行実行の機能マップ 会話分岐 セッション内スケジュール Desktopスケジュール Cloud / Subagents /branch(旧 /fork) 会話履歴を複製して分岐 Git操作ではない /loop セッション内 cron 最小 1 分間隔 Routines (Desktop) ローカルマシン上 最小 1 分間隔 Cloud Routines Anthropic インフラ上 最小 1 時間間隔 Subagents API 並列実行・コンテキスト分離 .claude/agents/ または query() ← セッション強依存 セッション独立 → ← ローカルファイル直接アクセス クラウド実行(fresh clone) → 公式ドキュメント(code.claude.com)をもとに構成
Claude Code における会話分岐・スケジューリング・並行実行の機能マップ(公式ドキュメントより構成)

Claude Codeの基本的なセットアップや料金体系については、Claude Codeのインストール手順およびClaude Codeの料金・プラン解説も参照されたい。

branch / fork による会話分岐の仕組みと使い分け

/branch コマンドの正確な仕様

/branch:今の会話を分岐し、元を残したまま別案を試す
/branch:今の会話を分岐し、元を残したまま別案を試す

公式ドキュメント(Claude Code Docs — コマンド)によれば、/branchは現在の会話を新しい独立したセッションに分岐させるコマンドだ。/forkはその別名(エイリアス)として継続利用できる。Zennに掲載されたClaude Code追加機能タイムライン記事(2026年3月29日)によると、v2.1.77で/forkから/branchへのリネームが行われており、旧コマンドは後方互換として残っている。

重要な前提として、これはGitブランチ操作ではない。ファイルシステムには一切手を加えず、会話履歴(プロンプト・ツールコール・レスポンスの連鎖)だけを複製して新しいセッションを起動する。公式SDKドキュメント(sessions.md)では、セッションへの復帰について次のように定義している。

Returning to a session means the agent has full context from before: files it already read, analysis it already performed, decisions it already made. You can ask a follow-up question, recover from an interruption, or branch off to try a different approach.

(出典:Work with sessions — Claude Code 公式ドキュメント

分岐後のセッションは、分岐元が積み上げたコンテキスト(読み込み済みファイル・分析結果・判断履歴)をそのまま引き継いだ状態でスタートする。ゼロから新規セッションを立ち上げる場合との最大の差異がここにある。

/rewind との組み合わせパターン

Classmethod開発ブログ(2026年2月19日)の実験では、/rewindで会話を特定のターンまで巻き戻してから/fork(現在の/branch)でその時点のコンテキストを複製する手法が有効とされている。具体的な流れは以下のとおりだ。

  1. Claude Codeに対して初期分析を実行させる
  2. 方針変更が必要な箇所で/rewindにより当該ターンの直前まで戻る
  3. /branchでその状態をコピーし、別アプローチを試みる
  4. 両セッションの結果を比較して採用案を決定する

この操作はコンテキストウィンドウの使い切りを防ぐ副次効果もある。大規模なコードベース分析で会話が長大化した場合に、途中でブランチを切ることで各セッションのトークン消費を抑えられる。

SDK における fork の利用

SDK(Python / TypeScript)では、forkをプログラムから明示的に呼び出せる。公式SDKドキュメント(sessions.md)によれば、セッションIDを取得したうえでresumeforkを使い分ける設計が推奨されている。continueが「同一セッションを延長する」のに対し、forkは「その時点のスナップショットから別の探索を開始する」意味を持つ。

実装上の注意点は、セッションが保存するのは会話履歴であってファイルシステムではないことだ。分岐後の両セッションが同一ファイルを編集すると、最後に書き込んだ方で上書きされる。Gitブランチを事前に切りワーキングディレクトリを分けておく運用が必須となる。

スラッシュコマンドの全体像についてはClaude Codeスラッシュコマンド解説も合わせて参照されたい。

background tasks(/loop)とDesktopスケジュールタスクの実装判断

/tasks:裏の作業を一覧確認
/tasks:裏の作業を一覧確認

/loop によるセッション内スケジューリング

公式ドキュメント(scheduled-tasks.md)によれば、/loopはセッション内でプロンプトを指定間隔で繰り返し実行するコマンドだ。利用にはClaude Code v2.1.72以降が必要であり、claude --versionで確認できる。最小インターバルは1分で、デプロイ完了の確認・PR状態のポーリング・長時間ビルドの監視といった用途に適している。

/loopの本質的な制約はセッションスコープであることだ。タスクは現在の会話の中に生きており、新しいセッションを開始した時点で消滅する。--resumeまたは--continueフラグで再接続した場合、7日以内に作成された繰り返しタスク、または予定時刻が未到来のワンショットタスクであれば復元される。7日を超えたタスクは期限切れとして扱われる。

ポーリング型ではなくイベント駆動型の監視が必要な場合、公式ドキュメントはChannels機能への誘導を示している。CI側からセッションへ失敗通知をプッシュできるため、無駄なポーリングを排除できる。

Desktop スケジュールタスクとの役割分担

公式ドキュメント(desktop-scheduled-tasks.md)によれば、Desktop AppのRoutinesページからローカルスケジュールタスクを作成できる。/loopとの最大の違いは「オープンセッションが不要」である点だ。アプリが起動していてマシンが稼働中であれば、セッションを開かずとも自動実行される。

毎朝のコードレビュー・依存関係の更新チェック・カレンダーとインボックスを統合したブリーフィング生成など、定型的な非同期作業に向いている。最小インターバルは/loopと同じ1分で、ローカルファイルへの直接アクセスが可能だ。

Cloud Routines との使い分け

Cloud Routinesは、Anthropicが管理するクラウドインフラ上で動作するため、マシンの起動やアプリの起動に依存しない。ただし最小インターバルが1時間に制限されており、ローカルファイルへの直接アクセスはできない(fresh cloneを使用)。GitHub Actionsやその他のAPIトリガーへの連携を重視する場合に選択肢となる。

Subagents による並行実行:コンテキスト分離と速度最適化

Subagents の3つの定義方法

公式SDKドキュメント(subagents.md)によれば、Subagentsはメインエージェントがスポーンできるセパレートなエージェントインスタンスだ。定義方法は以下の3種類がある。

  1. プログラム定義query()agentsパラメータを使用(Python / TypeScript)
  2. ファイルシステム定義.claude/agents/ディレクトリ配下にMarkdownファイルを配置
  3. 汎用組み込み:定義なしで利用可能なgeneral-purposeサブエージェント

SDK経由での利用はプログラム定義が推奨されており、各Subagentのdescriptionフィールドに基づいてClaudeが自動的に適切なサブエージェントを選択する。"Use the code-reviewer agent to..."のように明示的に指定することも可能だ。

コンテキスト分離と並列実行のメカニズム

各Subagentは独立したフレッシュな会話コンテキストで動作する。中間的なツールコールや探索結果はSubagent内に留まり、親エージェントには最終メッセージのみが返却される。これにより、メインエージェントのコンテキストウィンドウを汚染せずに大量の情報処理が可能となる。

公式ドキュメントが示す代表的な並列実行例は、コードレビュー時にstyle-checkersecurity-scannertest-coverageの3サブエージェントを同時起動するパターンだ。逐次実行した場合の合計時間ではなく、最も遅いサブエージェントの時間で完了するため、スループットの向上が期待できる。

ただし、Subagentsにはトレードオフが存在する。コンテキスト分離の代償として、親エージェントはSubagentが途中で読んだファイルの詳細を知ることができない。Subagentの最終出力が十分な情報を含むよう、descriptionと出力フォーマットの設計に注意が必要だ。

fork コンテキストと Subagents の違い

/branch(旧/fork)とSubagentsは何が違うのか」という疑問はよく寄せられる。本質的な差異は以下のとおりだ。

  • /branch:既存の会話履歴を丸ごと複製して別セッションとして独立させる。エンジニアが手動で別アプローチを試みるインタラクティブな用途向け。
  • Subagents:メインエージェントが自律的にスポーンする専門エージェント。コンテキストは空白から始まり、結果だけを親に返す。プログラムによるオーケストレーション向け。

前者は「探索的な並行開発」、後者は「タスク分解と専門特化による処理の効率化」という軸で使い分けるとよい。

機能比較表と選択基準

以下の比較表は、公式ドキュメント(scheduled-tasks.md / desktop-scheduled-tasks.md / sessions.md / subagents.md)の仕様に基づいて構成した。

機能 実行基盤 最小間隔 セッション依存 ローカルファイル 並行実行 主な用途
/branch/fork ローカル 手動 あり(分岐元から独立) あり 手動で複数セッション 別アプローチの探索・実験
/loop ローカル 1分 強い(セッション内スコープ) あり なし(直列反復) ポーリング・状態監視
Desktop スケジュール ローカル 1分 なし(アプリ起動のみ必要) あり 設定次第 定型レビュー・日次ブリーフィング
Cloud Routines Anthropicクラウド 1時間 なし なし(fresh clone) 設定次第 マシン非依存の定期処理
Subagents(SDK) ローカル / クラウド プログラム制御 親セッションあり 設定次第 あり(複数同時起動可) 並列タスク処理・コンテキスト分離

実装判断のフローチャート

選択に迷う場合は以下の順序で判断するとよい。

  1. 手動で別案を探索したい/branch
  2. 同一セッション内でポーリングしたい/loop
  3. セッションを開かずに定期実行したい(ローカルファイル必要)→ Desktop スケジュールタスク
  4. マシンが落ちていても動いてほしい→ Cloud Routines
  5. 独立した専門タスクをプログラムで並列処理したい→ Subagents SDK

実際の開発フローへの統合

Zennに掲載されたClaude Code追加機能タイムライン(2026年3月29日)では、複数のブランチ間でClaude Codeを活用する際にGit Worktreeとの組み合わせが実用的とされている。同一リポジトリの複数ブランチを別ディレクトリとして展開し、それぞれに独立したClaude Codeセッションを立ち上げることで、ファイル競合を回避しながら並行開発が実現できる。

GitButlerとClaude Codeの組み合わせを検証したTsukabyのブログ記事(2026年2月5日)も同様の知見を報告しており、「同一ファイルを複数ブランチで編集するとコンフリクトになるため、人手による工夫が必要」という制約を明示している。Subagentsの並列実行においても、書き込み先ファイルが重複しないようなタスク設計が求められる点は共通している。

Claude Codeの実践的な活用方法についてはClaude Codeの使い方ガイドも参照されたい。また、他のAIコーディングツールとの比較はClaude Code vs Cursor 比較およびClaude Code vs Codex 比較で詳しく解説している。

実装上の限界とトレードオフの整理

/branch・/fork の限界

会話履歴の分岐はコンテキストの持続に強みを持つ一方、ファイルシステムを管理しないという設計上の制約がある。分岐後の両セッションが同一ファイルを変更すると、後書きが前書きを上書きするだけであり、マージは手動で行う必要がある。「GitブランチとClaude Codeセッションを1対1で対応させる」運用規約をチームで定めることが、混乱を防ぐ現実的な解だ。

/loop の7日制限と再接続の複雑性

公式ドキュメントによれば、/loopで作成したタスクは作成から7日で期限切れとなる。長期間にわたる監視が必要なユースケースでは、Desktop スケジュールタスクかCloud Routinesへの移行を検討すべきだ。--resumeによる再接続も、セッションIDの管理やタスクの期限管理が必要になるため、自動化スクリプトとの組み合わせでは実装コストが増える点を考慮したい。

Subagents の設計コスト

Subagentsは並列処理能力を提供するが、各サブエージェントのdescriptionとシステムプロンプト設計の品質がアウトプット品質を大きく左右する。コンテキスト分離は「中間過程が親に見えない」というデバッグ上の困難も伴う。サブエージェントの出力フォーマットを構造化(JSON・Markdown)で統一し、親エージェントが確実に解釈できるよう設計する必要がある。

API利用コストの観点では、Subagentsを多数並列で起動するとトークン消費が急増する。Claude Code APIの料金体系を把握したうえで、並列数の上限とタスク粒度を設計段階で決定しておくことが重要だ。

Cloud Routines のローカルファイル非アクセス制約

Cloud RoutinesはAnthropicが管理するインフラ上で動作するため、ローカルのファイルシステムに直接アクセスできない。利用時はリポジトリのfresh cloneが前提となり、秘匿情報(環境変数・認証情報)の扱いにも別途設計が必要だ。セキュリティポリシー上、クラウド側への情報流出を避けたい場合はDesktop スケジュールタスクが適切な代替となる。

Claude Codeの全体的な機能理解についてはClaude Code総合解説Claude Code入門ガイドも参照されたい。


以上の機能群は、それぞれ明確な設計上の意図を持って分割されている。「会話分岐で探索」「ループで監視」「Desktopタスクで定型作業」「Cloud Routinesでマシン非依存の自動化」「Subagentsで並列専門処理」という5つの役割を理解したうえで組み合わせることが、Claude Codeを実装基盤として本格活用するための前提となる。


参考文献

監修

河合 継(クリスタルメソッド株式会社 代表取締役)

AI・ディープラーニングに関する特許16件の発明者。過去、国立がん研究センターとの共同研究や、テレビ番組でのAI解説実績を持つAI研究者として、AIの研究開発を主導している。
運営会社について編集方針

AIブログ購読

 
クリスタルメソッドがお届けする
AIブログの更新通知を受け取る

Study about AI

AIについて学ぶ

  • AI規制イタリア国家戦略の実施令承認——日本AI政策への実務的示唆

    AI規制イタリア国家戦略の実施令承認——日本AI政策への実務的示唆

    イタリアAI規制 実施令の予備承認——何が起きたか 2026年6月10日、イタリアの閣議(Consiglio dei Ministri)は、2025年9月23日...

  • OpenAI Codexエージェントが企業クラウドへ——Ona買収が日本企業に意味すること

    OpenAI Codexエージェントが企業クラウドへ——Ona買収が日本企業に意味すること

    OpenAI×Ona買収の要点——何が起きたか 2026年6月11日、OpenAIはAIエージェント向けクラウド実行環境を手がけるスタートアップ「Ona(旧Gi...

  • NVIDIA Vera CPU正式ローンチがAIインフラとデータセンター投資に示す日本企業への示唆

    NVIDIA Vera CPU正式ローンチがAIインフラとデータセンター投資に示す日本企業への示唆

    NVIDIA Vera CPUとは何か——AIインフラ向けCPU内製化という構造的転換 NVIDIAは2026年、エージェント型AIと強化学習の時代に向けて専用...

View more