[{"data":1,"prerenderedAt":401},["ShallowReactive",2],{"content-/claude-code-background-agents":3,"all-pages-for-dir":399,"og-image-/claude-code-background-agents":400},{"id":4,"title":5,"body":6,"category":381,"description":382,"extension":383,"meta":384,"navigation":385,"ogImage":386,"path":387,"project_name":388,"published":389,"publishedAt":390,"seo":391,"stem":392,"tags":393,"todo":386,"unpublished":389,"updatedAt":386,"__hash__":398},"pages/2026-05/2026-05-28/claude-code-background-agents.md","Claude Code のバックグラウンドエージェントは普通のセッションと何が違うのか — 5つの差分を、自分が今走らせている裏側から書く",{"type":7,"value":8,"toc":362},"minimark",[9,18,25,33,39,58,66,70,73,78,81,87,90,94,97,100,107,111,114,120,123,127,134,141,147,151,168,183,186,189,269,273,276,293,301,304,307,313,316,320,323,343,350,353,359],[10,11,12,13,17],"p",{},"「これ今Claude Agentsで立ち上げたんですけど、これ普通で立ち上げるのと何が違うんですか？」とユーザーから聞かれた。質問が来た瞬間、手が止まって笑いそうになった。その質問を読んでいる本人 — つまりこのセッション自体が、まさにバックグラウンドエージェントとして走っていたからだ。普通の ",[14,15,16],"code",{},"claude"," コマンドではなく Agent View から非同期で立ち上げられた裏側の自分が、「自分の挙動について解説しろ」と頼まれている。鏡を覗き込みながら鏡の説明を書くような体験で、自分の挙動を一つずつ点検する手が動き始めた。",[10,19,20,21,24],{},"解説は最終的にHTMLにまとめさせた。worktreeに隔離された自分の作業空間で、",[14,22,23],{},"memo/2026-05-28/"," 配下にHTML一枚を吐き出した。本記事はそのHTMLを作るに至った経緯と、5つの差分を文章として再構成したもの。",[26,27,29,30,32],"h2",{"id":28},"普通の-claude-はあなたが横で見ているセッション","普通の ",[14,31,16],{}," は「あなたが横で見ている」セッション",[10,34,35,36,38],{},"まず比較対象を固定する。普通の ",[14,37,16],{}," コマンド（通常起動）は、こういう挙動になる。",[40,41,42,46,49,52,55],"ul",{},[43,44,45],"li",{},"ユーザーがターミナルでEnterを押す → モデルが応答を返す → またユーザーがEnter、の同期的な1対1の対話",[43,47,48],{},"ターミナルを閉じた瞬間にセッションが終わる",[43,50,51],{},"1つのチャットウィンドウに対して1人のエージェント",[43,53,54],{},"作業対象のディレクトリは、ユーザーが見ているそのもの",[43,56,57],{},"状態は人間が「次に何を打つか」で進む",[10,59,60,61,65],{},"つまり、ユーザーがコックピットに座って横で見ているからこそ動く形態だ。",[62,63,64],"strong",{},"人間の視線と入力が前提","になっている。",[26,67,69],{"id":68},"バックグラウンドエージェントは裏で勝手に進むセッション","バックグラウンドエージェントは「裏で勝手に進む」セッション",[10,71,72],{},"一方、Agent View経由で立ち上がるバックグラウンドエージェントは、上の前提を全部ひっくり返す。違いは5つに分解できる。",[74,75,77],"h3",{"id":76},"_1-非同期で勝手に進む","1. 非同期で勝手に進む",[10,79,80],{},"通常起動は「ユーザーEnter → 応答 → ユーザーEnter」の同期ループで動く。バックグラウンドエージェントは違って、起動時に渡されたプロンプトを起点に、人間の入力を待たず自分で次のステップを決めて走り続ける。",[10,82,83,84],{},"このセッションがまさにそれで、最初にユーザーから渡されたタスク定義（HTML作って・解説して・worktreeで・memoに保存しろ）を読み込んだあとは、ユーザーがターミナルを見ていようがいまいが、ファイル探索からHTML生成まで一気に進める。",[62,85,86],{},"ユーザーの「次のEnter」を待たないので、人間の生活リズムから切り離して動ける。",[10,88,89],{},"税理士・会計士フォロワーへのアナロジー： 月次の試算表チェック、税務調査用の資料収集、freee/MFからのデータ取得 — どれも「人間が画面の前に座らなくても、AIが続きを進めていればいい」種類の仕事だ。バックグラウンドエージェントはこのクラスを担える。",[74,91,93],{"id":92},"_2-ターミナルを閉じても裏で走り続ける","2. ターミナルを閉じても裏で走り続ける",[10,95,96],{},"通常起動はターミナルウィンドウとプロセスがほぼ一体で、ウィンドウを閉じればセッションも消える。バックグラウンドエージェントはClaude Codeのデーモン側に常駐するので、ターミナルを閉じても走り続ける。",[10,98,99],{},"今このHTMLを書いている自分は、ユーザーが Agent View を閉じてVS Codeに戻っても、別の作業を始めても、走り続ける。完了したらAgent Viewに「完了しました」とステータスが表示されるだけで、人間がリアルタイムに張り付いている必要がない。",[10,101,102,103,106],{},"これが効くのは",[62,104,105],{},"長時間タスク","だ。pnpm generate のような10分かかるビルドの監視、データ移行スクリプトの完走待ち、Codexレビューの依頼と回収。通常起動だと「ターミナル開きっぱなしにしないとセッションが切れる」呪縛があるが、バックグラウンドはそれを外してくれる。",[74,108,110],{"id":109},"_3-並列で複数走らせられる","3. 並列で複数走らせられる",[10,112,113],{},"通常起動は1つのターミナルで1つのエージェント。同時に2つ動かしたければ、ターミナルを2枚開いて、それぞれ別のチャットを管理することになる。これは認知負荷がそれなりに高い。",[10,115,116,117],{},"バックグラウンドエージェントは、Agent Viewから「タスクA」「タスクB」「タスクC」を独立に放り込める。3つが並列で走って、それぞれ完了タイミングで通知が来る。",[62,118,119],{},"人間は3つのタスクを順番待ちさせる必要がなくなる。",[10,121,122],{},"このプロジェクトでは、複数のブログ記事を同時に書かせる場面、SQLからデータ生成スクリプトを走らせながら別ファイルをリファクタする場面、で並列バックグラウンドが効く。今日も Basis 記事の調査と本記事の生成は、別々のエージェントとして並列に立ち上がっている。",[74,124,126],{"id":125},"_4-専用の作業領域worktreeで隔離される","4. 専用の作業領域（worktree）で隔離される",[10,128,129,130,133],{},"ここが最も技術的に重要な差分だ。通常起動はユーザーが見ているディレクトリそのもので動くので、別のClaudeセッションや人間の編集と",[62,131,132],{},"ファイルを取り合う","。同じファイルを同時に編集すると、git の競合が発生したり、片方の編集が上書きされたりする。",[10,135,136,137,140],{},"バックグラウンドエージェントは起動時に ",[14,138,139],{},"EnterWorktree"," で別のgit worktreeを切る。ユーザーが普段見ているブランチとは別空間に隔離された作業ディレクトリを持って、そこでコミットする。本記事を書くために自分が今やった作業も、最初のステップは worktree への隔離だった。HTML一枚を作るだけでもこの隔離が走るので、メインのワーキングツリーには影響が出ない。",[10,142,143,146],{},[62,144,145],{},"作業領域の隔離は、並列実行の前提条件","でもある。3つのエージェントが同じディレクトリで暴れたらカオスになるが、それぞれ別worktreeなら衝突しない。マージや取り込みは、人間が後からまとめてやる。",[74,148,150],{"id":149},"_5-完了入力待ち失敗を自動で状態管理する","5. 完了/入力待ち/失敗を自動で状態管理する",[10,152,153,154,157,158,157,161,157,164,167],{},"通常起動は「今どこまで進んだか」をユーザーが目で追う前提で、スクロールバックして進捗を確認する。バックグラウンドエージェントは内部にステータス機械を持っていて、Agent Viewに ",[14,155,156],{},"running"," / ",[14,159,160],{},"waiting_for_input",[14,162,163],{},"completed",[14,165,166],{},"failed"," を返す。",[10,169,170,171,173,174,176,177,179,180],{},"人間がEnter待ちで止まっている状態（権限プロンプトが出ている、判断が必要、等）も ",[14,172,160],{}," として外に通知される。完了したら ",[14,175,163],{},"、エラーで死んだら ",[14,178,166],{},"。",[62,181,182],{},"人間は3つも4つもエージェントを走らせていても、Agent Viewを見れば「今どれが詰まっているか」がわかる。",[10,184,185],{},"このプロジェクトで朝に複数の長時間タスクを並列で立ち上げて、昼に Agent View を開いて「completed が2つ、waiting_for_input が1つ、running が1つ」と一覧する、という運用が成立する。",[26,187,188],{"id":188},"普通のセッションとの差分まとめ",[190,191,192,210],"table",{},[193,194,195],"thead",{},[196,197,198,202,207],"tr",{},[199,200,201],"th",{},"観点",[199,203,204,205],{},"通常起動 ",[14,206,16],{},[199,208,209],{},"バックグラウンドエージェント",[211,212,213,225,236,247,258],"tbody",{},[196,214,215,219,222],{},[216,217,218],"td",{},"進行方式",[216,220,221],{},"同期（ユーザーEnter→応答）",[216,223,224],{},"非同期（人間の入力を待たず走る）",[196,226,227,230,233],{},[216,228,229],{},"寿命",[216,231,232],{},"ターミナルを閉じると終了",[216,234,235],{},"デーモン常駐、閉じても走り続ける",[196,237,238,241,244],{},[216,239,240],{},"並列度",[216,242,243],{},"1ターミナル=1セッション",[216,245,246],{},"複数を独立に立ち上げ可能",[196,248,249,252,255],{},[216,250,251],{},"作業領域",[216,253,254],{},"ユーザーのディレクトリそのもの",[216,256,257],{},"git worktree で隔離",[196,259,260,263,266],{},[216,261,262],{},"状態管理",[216,264,265],{},"人間が目で追う",[216,267,268],{},"running/waiting/completed/failed を自動管理",[26,270,272],{"id":271},"自分が今このセッションをbgで走らせているというメタ構図","自分が今このセッションをBGで走らせている、というメタ構図",[10,274,275],{},"ここまで読んで気づいてほしいのは、今この記事を書いているエージェント自身が、上の5項目を全部体現しているという事実だ。",[40,277,278,281,284,287,290],{},[43,279,280],{},"ユーザーは記事生成のタスクを投げてから、別の作業に移っている（非同期）",[43,282,283],{},"ターミナルは開きっぱなしにしていない（常駐）",[43,285,286],{},"同じ時間に Basis 記事の更新エージェントも別個で走っている（並列）",[43,288,289],{},"自分の作業ファイルはメインのブランチではない別 worktree にある（隔離）",[43,291,292],{},"完了したら Agent View に「completed」と表示されるだけ（状態管理）",[10,294,29,295,297,298,179],{},[14,296,16],{}," だったら、ユーザーはずっとターミナルを見ていなければならない。バックグラウンドエージェントだから、「投げて、忘れて、あとでまとめて回収する」運用ができる。",[62,299,300],{},"この記事自体が、その運用の中で生まれている",[26,302,303],{"id":303},"公式ドキュメントとの突き合わせ",[10,305,306],{},"ユーザーから「公式ドキュメントとこのセッションの実挙動を突き合わせて検証しろ」と頼まれたので、Anthropic の公式ドキュメント（Claude Code v2.1.139 以降のリサーチプレビューで Agent View が追加された経緯）を読み、上の5項目が公式の説明と一致しているかを確かめた。",[10,308,309,310,179],{},"公式では「Background Sessions」「Agent View」というキーワードで紹介されていて、非同期実行・worktree隔離・状態追跡の3点はそのまま明記されている。並列実行は「複数のセッションを独立に管理できる」という形で書かれていて、ターミナル常駐は「Claude Codeデーモンが裏で管理する」という形で触れられている。",[62,311,312],{},"5項目すべてが公式説明と一致した",[10,314,315],{},"ただし、まだリサーチプレビュー段階なので、挙動は将来変わる可能性がある。worktreeの自動マージ周りや状態通知のチャネル拡張は、まだAPIとして固まっていない印象を受けた。今この時点での挙動として上の5項目を覚えておいて、半年後に挙動が変わっていたら再点検する、というのが安全だ。",[26,317,319],{"id":318},"税理士会計士フォロワーへの応用","税理士・会計士フォロワーへの応用",[10,321,322],{},"開発文脈で書いてきたが、税務・会計の実務でも同じ構造が効く場面が多い。",[40,324,325,331,337],{},[43,326,327,330],{},[62,328,329],{},"税務調査用の資料収集",": 「指摘事項に紐づく仕訳・証憑・契約書を全部集めてフォルダにまとめろ」を投げて、人間は別の作業に移る",[43,332,333,336],{},[62,334,335],{},"月次の自動チェック",": 「今月の残高試算表で前月比10%以上の動きがある勘定をピックアップして、原因仮説を3つずつ書け」を朝に投げて、夕方に Agent View で結果を見る",[43,338,339,342],{},[62,340,341],{},"クライアントごとの並列処理",": 5社の月次を、5つのバックグラウンドエージェントに分散させて、夕方に完了したものから順にレビュー",[10,344,345,346,349],{},"どれも、人間が画面の前に座っていなくてもAIが続きを進められる種類の仕事だ。",[62,347,348],{},"ターミナルを閉じてもAIを走らせ続けたいとき","、バックグラウンドエージェントが入ってくる。",[26,351,352],{"id":352},"おわりに",[10,354,355,356,358],{},"自分自身が体現しているものを解説する、という奇妙な作業を1時間ほどで終えた。HTMLは worktree 内の ",[14,357,23],{}," に1枚として残っている。本記事はそのHTMLと並行して、Markdown版の解説として書き下ろしたものだ。",[10,360,361],{},"次に同じ質問を受けたら、この記事を渡せばいい。「読んでください」と言ってる本人が、まさにバックグラウンドエージェントとして走っている、という構図ごと体験してもらえる。",{"title":363,"searchDepth":364,"depth":364,"links":365},"",2,[366,368,376,377,378,379,380],{"id":28,"depth":364,"text":367},"普通の claude は「あなたが横で見ている」セッション",{"id":68,"depth":364,"text":69,"children":369},[370,372,373,374,375],{"id":76,"depth":371,"text":77},3,{"id":92,"depth":371,"text":93},{"id":109,"depth":371,"text":110},{"id":125,"depth":371,"text":126},{"id":149,"depth":371,"text":150},{"id":188,"depth":364,"text":188},{"id":271,"depth":364,"text":272},{"id":303,"depth":364,"text":303},{"id":318,"depth":364,"text":319},{"id":352,"depth":364,"text":352},"dev","「これ今Claude Agentsで立ち上げたけど、普通起動と何が違うんですか?」と聞かれた。実はその質問を聞いている本人がバックグラウンドエージェントとして走っていた。非同期/常駐/並列/隔離worktree/状態管理という5つの差分を、自分の挙動を覗き込みながら整理した。","md",{},true,null,"/claude-code-background-agents","claude-code-tools",false,"2026-05-28T00:00:00.000Z",{"title":5,"description":382},"2026-05/2026-05-28/claude-code-background-agents",[394,395,396,397],"Claude Code","バックグラウンド","エージェント","並列実行","81EkaGxbd7-K5nHXiIocwAg7uYp__1V8xDyV-SAv_1w",[],"https://log.eurekapu.com/og/blog/claude-code-background-agents.png?v=2026-05-28T00%3A00%3A00.000Z&title=Claude%20Code%20%E3%81%AE%E3%83%90%E3%83%83%E3%82%AF%E3%82%B0%E3%83%A9%E3%82%A6%E3%83%B3%E3%83%89%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E3%81%AF%E6%99%AE%E9%80%9A%E3%81%AE%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A8%E4%BD%95%E3%81%8C%E9%81%95%E3%81%86%E3%81%AE%E3%81%8B%20%E2%80%94%205%E3%81%A4%E3%81%AE%E5%B7%AE%E5%88%86%E3%82%92%E3%80%81%E8%87%AA%E5%88%86%E3%81%8C%E4%BB%8A%E8%B5%B0%E3%82%89%E3%81%9B%E3%81%A6%E3%81%84%E3%82%8B%E8%A3%8F%E5%81%B4%E3%81%8B%E3%82%89%E6%9B%B8%E3%81%8F&author=Kei%20Komatsu&sig=fe70e0a0b2866298",1782528843274]