結論:複数拠点を持つ3PL事業者の月次帳票集計は、拠点数ぶんのClaude Codeサブエージェントを1メッセージで並列dispatchし、各拠点の計算を独立したファイルに出力させたうえで人が最終チェックする設計にすると、月3営業日かかっていた集計作業を半日程度に圧縮できます(想定シナリオ・試算)。
- 要点1:12拠点分のKPI計算を1つのセッションで順番にこなすと拠点数に比例して時間が伸びますが、拠点ごとに独立したサブエージェントとして並列dispatchすれば、全体の所要時間は「一番遅い1拠点の処理時間」に近づきます(試算)
- 要点2:各サブエージェントの出力先ファイルを拠点ごとに分離することで、複数プロセスが同じファイルへ同時書き込みして壊れる事故を避けられます
- 要点3:OpenAIが2026年7月9日に公開したGPT-5.6のUltra modeもモデル内蔵で並列サブエージェントを走らせる設計に踏み込んでおり、業界全体で「並列サブエージェント」が競争軸になっていることの実務的な意味を、具体的な運用フローで示します
対象読者:3PL・物流倉庫の情報システム担当者、複数拠点を持つ企業のDX推進担当、Claude Codeのサブエージェント機能を業務フローに組み込みたいエンジニア
今日やること:自社の拠点別レポートのうち3拠点分のCSVを用意し、本記事の手順2(並列dispatchプロンプト)を試してみてください。
事例区分:想定シナリオ(モデルケース)。以下は実在する特定の3PL事業者の事例ではなく、全国に10〜15拠点の物流センター(DC)を持つ中堅3PL事業者(従業員300名規模を想定)で典型的に起こりうる課題をもとに構成した仮説ベースの実装解説です。数値はすべて試算値であり、実測結果ではありません。
「12拠点分のExcel、また今月も1個ずつ開いて集計するんですか」
複数拠点を持つ物流・倉庫事業者のDX相談で、実際によく出てくる話です。各拠点のWMS(倉庫管理システム)から吐き出されるCSVのフォーマットは共通でも、拠点数だけファイルが増えるので、本社のオペレーション担当者は毎月同じ集計作業を拠点の数だけ繰り返すことになります。1拠点あたりの作業自体は単純でも、それを12回繰り返すと合計の所要時間は無視できない規模になる、というのが典型的な構図です。
ちょうどこの記事を書いている2026年7月9日、OpenAIがGPT-5.6(Sol・Terra・Luna の3モデル構成)を一般提供したというニュースが飛び込んできました。最上位のUltra modeは「既定で4つのエージェントを並列に協調させ、16エージェント構成まで試験されている」と公式に説明されており、Terminal-Bench 2.1のスコアを88.8%から91.9%まで引き上げたと報告されています(OpenAI公式発表・出典は記事末尾)。モデルの中に複数エージェントを内蔵して自動的に並列化する設計は、OpenAIだけでなくGoogleのAntigravity 2.0なども打ち出しており、「並列サブエージェント」がコーディングAI各社の競争軸になっていることがうかがえます。
Claude Codeはこの「サブエージェントを並列に走らせる」こと自体を、モデル内部のブラックボックスではなく、ユーザーが設計・監査できるエンジニアリングパターンとして以前から提供しています(Claude Code公式ドキュメント、出典は記事末尾)。各サブエージェントは独立したコンテキストウィンドウ・独自のツールアクセス・独立した権限で動作し、1つのメッセージの中で複数のサブエージェント呼び出しを発行すると並列に実行されます。この記事では、そのパターンを「複数拠点の月次帳票集計」という具体的な業務にどう当てはめるかを、想定モデルとして解説します。
導入前の状況:拠点数だけ繰り返すExcel集計
想定した3PL事業者の業務フローはこうです。各拠点のWMSから毎月末に在庫精度・ピッキング誤差率・当日出荷率・破損率・時間当たり作業件数などのKPIを含むCSVがエクスポートされる。本社のオペレーション担当者がその12拠点分のCSVを1つずつExcelで開き、KPIを計算し、拠点ごとに1枚のサマリを作成したうえで、最後に全拠点をランキング表に統合して経営会議用の資料にする。この一連の作業に、拠点あたり平均2時間、12拠点で合計24時間(実働3営業日相当)、さらに統合作業に4時間かかっていた、という試算です。
ボトルネックは大きく3つありました。
- 拠点ごとの作業が本質的に同じ内容の繰り返しなのに、1人の担当者が順番に処理するため所要時間が拠点数に比例して伸びる
- 担当者によって「誤差率をどう丸めるか」「異常値をどう判定するか」の基準が微妙にブレることがある
- 繁忙期に担当者が休むと、集計作業そのものが止まってしまう属人化リスクがある
なぜ「サブエージェント並列処理」を選んだか
実装チームが最初に検討したのは「1つのClaude Codeセッションに12拠点分のCSVを全部渡して、順番に処理させる」やり方でした。実際に試してみると、拠点ごとの計算自体は正しく行われるものの、セッションのコンテキストに12拠点分のログが積み上がっていき、後半の拠点になるほど前半の拠点の計算方法を微妙に忘れて表記がブレる、という現象が起きました。1つのセッションに大量の反復作業を任せると、こうした「後半で品質が落ちる」問題が起きやすいというのが実装チームの気づきです。
そこで採用したのが、拠点ごとに独立したサブエージェントを立てる設計です。Claude Code公式ドキュメントによれば、サブエージェントは「メインの会話をログや検索結果で埋め尽くしてしまうような、独立した作業を任せる場所」として設計されており、それぞれが独自のコンテキストウィンドウ・ツールアクセス・権限を持ちます。拠点ごとのKPI計算はまさに「他の拠点の計算結果に依存せず、それぞれ独立して完結する」タスクなので、サブエージェントに向いた仕事だと判断しました。
また、1つのメッセージの中で複数のサブエージェント呼び出しを続けて発行すると、それらは順番待ちせず並列に実行されます。12拠点分をすべて1メッセージ内でdispatchすれば、理屈のうえでは全体の所要時間は「12拠点の合計」ではなく「一番処理に時間がかかった1拠点分」に近づきます。GPT-5.6のUltra modeが4エージェントの並列協調をモデル内部で自動化しているのに対し、Claude Codeのサブエージョンはユーザー自身が「どのタスクを」「何個の」サブエージェントに分けるかを設計できる点が実務上のポイントだと考えています。
Claude Codeに任せた5つの役割
実装チームがClaude Codeに任せたのは、判断や最終確定ではなく「拠点別の計算」「統合」「一次スクリーニング」の3種類に絞り込むことでした。具体的には次の5つです。
- 拠点別KPI計算の並列dispatch — 12拠点分のCSVそれぞれについて、同一のKPI計算指示を渡したサブエージェントを1メッセージ内で並列に呼び出す
- 拠点ごとの独立したMarkdown出力 — 各サブエージェントは自分の担当拠点の結果だけを、拠点名を含むファイル名(例:dc_01_report.md)で出力する
- 全拠点の統合・ランキング化 — メインセッションが12個のMarkdownを読み込み、KPIごとのランキング表と拠点間比較を1つのレポートにまとめる
- 異常値の一次スクリーニング — 前月比で著しく悪化・改善した拠点にフラグを立てる(最終判断は本社オペレーション責任者が行う)
- スポットチェック用の再計算 — 統合結果のうち2〜3拠点をランダムに選び、元のCSVから同じ計算を再実行させて数値の妥当性を確認する
最初の実装エピソードとして印象的だったのが、並列dispatchの発行方法でした。最初のテストでは12拠点分を1つずつ順番にサブエージェントとして呼び出してしまい、結局は逐次実行と変わらない時間がかかってしまったんです。振り返ってみると、これは「サブエージェントを呼ぶこと」自体ではなく「1メッセージにまとめて呼ぶこと」が並列実行の条件だったという、基本を見落としていたケースでした。ここで実際にメインセッションへ渡したプロンプトが次のものです。
物流センター12拠点分のCSV(dc_01.csv 〜 dc_12.csv、いずれも
/data/monthly/ 配下)があります。
拠点ごとに1つずつ、合計12個のサブエージェントを、
すべて今回のメッセージの中で並列に呼び出してください。
各サブエージェントには以下を指示してください。
- 担当するCSV(dc_XX.csv)だけを読み、他拠点のファイルは読まない
- 在庫精度・ピッキング誤差率・当日出荷率・破損率・
時間当たり作業件数の5つのKPIを計算する
- 計算結果を /data/monthly/reports/dc_XX_report.md に出力する
(XXは拠点番号。他の拠点のファイルには書き込まない)
- 不足している情報があれば、最初に質問してから作業を開始してください
- 仮定した点は必ず"仮定"と明記してください
2つ目は、各サブエージェントが実際に受け取る指示のテンプレートです。メインセッションはこれを拠点番号だけ差し替えて12個ぶん組み立てます。
あなたはDC{XX}(拠点番号{XX})担当のレポート作成サブエージェントです。
対象ファイル: /data/monthly/dc_{XX}.csv(このファイルのみ読み込む)
- 列: date, sku, picked_qty, error_qty, on_time_flag, damage_flag, labor_hours
- 在庫精度 = 1 - (error_qty合計 / picked_qty合計)
- 当日出荷率 = on_time_flag=1の件数 / 全件数
- 破損率 = damage_flag=1の件数 / 全件数
- 時間当たり作業件数 = picked_qty合計 / labor_hours合計
- 出力: /data/monthly/reports/dc_{XX}_report.md
(拠点名・上記4指標・前月比較・計算式を明記)
- 他の拠点のCSV・レポートファイルには一切アクセスしないでください
3つ目は、12拠点分のレポートが出そろった後、メインセッションに統合を任せるプロンプトです。
/data/monthly/reports/ 配下にある dc_01_report.md 〜
dc_12_report.md をすべて読み込み、次の統合レポートを作成してください。
- KPIごとに全拠点のランキング表を作る(在庫精度が低い順など)
- 前月比で±15%を超えて変動した拠点に「要確認」フラグを付ける
- 各拠点の数値がどのレポートファイルに由来するかを明記する
- これは経営会議用の一次資料であり、最終確定値ではないことを
冒頭に明記してください
4つ目は、異常値のスクリーニング精度を上げるためのプロンプトです。
統合レポートで「要確認」フラグが付いた拠点について、
前月・当月の数値変動が季節要因(繁忙期・閑散期)による
自然な変動なのか、それとも運用上の問題を示唆する変動なのか、
判断材料となる観点を3つ挙げてください。
- 断定はせず、「確認すべき観点」として提示してください
- 過去のデータがない場合は、その旨を明記してください
5つ目は、実装チームが特に重視したスポットチェック用のプロンプトです。並列処理は速い一方で、計算過程がブラックボックス化しやすいというリスクがあるため、必ず人による抜き取り確認を組み込みました。
dc_03_report.md と dc_07_report.md の2拠点について、
元のCSV(dc_03.csv, dc_07.csv)から同じKPI計算を
もう一度実行し、レポートの数値と一致するか突合してください。
- 一致しない場合は、どちらの計算が正しいか、
計算過程を示しながら特定してください
- 数字と固有名詞は、根拠(計算式)を添えてください
実装スタック
- Claude Code CLI(サブエージェント機能・1メッセージ内での並列dispatch)
- Python 3 +
pandas(拠点別CSVのKPI計算) - settings.json(サブエージェントごとの
allowedToolsでファイルアクセス範囲を限定) - 拠点別Markdownファイル(
dc_XX_report.md、共有ファイルへの同時書き込みを避ける設計) - Slack Webhook(統合レポート完成後の通知)
並列dispatchの設計で気をつけたこと
正直、ここが今回の実装で一番気を使った部分です。12個のサブエージェントを同時に走らせるということは、うっかりすると12個のプロセスが同じ出力先ファイルを取り合う、といった事故が起きうる設計だからです。実装チームが最初の検証で実際に遭遇したのが、12個のサブエージェントすべてに「report.md というファイル名で結果を書いて」とだけ指示してしまい、複数のサブエージェントが同じファイルへほぼ同時に書き込もうとして、最後に書き込んだ拠点の結果だけが残ってしまうという事故でした。この教訓から、出力先ファイル名に拠点番号を必ず含める(dc_XX_report.md)というルールに変更しています。
もう1つ気をつけたのが、各サブエージェントに渡すツールアクセスの範囲です。設計思想として「拠点ごとのサブエージェントは、自分の拠点のCSVだけが読めればよく、他拠点のファイルや共有設定に触れる必要はない」という前提を置き、settings.jsonでサブエージェントに許可するコマンドを限定しました。
{
"permissions": {
"allow": [
"Bash(python3 scripts/calc_kpi.py --dc *)",
"Read(/data/monthly/dc_*.csv)",
"Write(/data/monthly/reports/dc_*_report.md)"
],
"deny": [
"Write(/data/monthly/reports/summary.md)",
"Bash(rm *)"
]
}
}
summary.mdのような統合先ファイルへの書き込みを拠点別サブエージェントにはdenyし、統合作業はメインセッションだけが行う、という役割分担を明示することで、並列実行時の書き込み競合を構造的に防いでいます。settings.jsonのpermissionsルール構文については、Claude Code公式ドキュメントの設定ガイドに詳しい説明があります(出典は記事末尾)。
【要注意】よくある失敗パターンと回避策
失敗1:サブエージェントを1つずつ順番に呼び出す
❌ 12拠点分を「まずDC01を呼んで、終わったらDC02を呼んで」と1つずつ順番に呼び出す
⭕ 12拠点ぶんのサブエージェント呼び出しを、すべて同じメッセージの中でまとめて発行する
なぜこれが重要か:サブエージェントは、複数の呼び出しが同じメッセージの中にまとまっているときに並列で実行されます。1つずつ順番に呼び出すと、待ち時間が拠点数ぶん積み上がり、逐次処理とほとんど変わらない所要時間になってしまいます。
失敗2:全拠点に同じ出力ファイル名を使う
❌ すべてのサブエージェントに「report.md に結果を書いて」と同じファイル名を指示する
⭕ 拠点番号を含むファイル名(dc_01_report.mdなど)を指示し、統合はメインセッションだけが行う
なぜこれが重要か:並列で動く複数のプロセスが同じファイルへほぼ同時に書き込もうとすると、後から書き込んだ結果で上書きされ、他拠点のデータが消えることがあります。出力先を物理的に分離しておくことが最も確実な対策です。
失敗3:1つのサブエージェントに全拠点のCSVを渡す
❌ 「12拠点分まとめて処理して」と1つのサブエージェントに全CSVを渡す
⭕ 1サブエージェント=1拠点に厳密にスコープを絞り、他拠点のファイルは読ませない
なぜこれが重要か:担当範囲を広げるほどコンテキストが肥大化し、拠点間でKPIの計算基準が混ざったり、後半の拠点で前半の計算方法を微妙に忘れるといった精度低下が起きやすくなります。
失敗4:統合レポートの数値をスポットチェックせずに配信する
❌ 統合レポートが出来上がったら、そのまま本社の経営会議資料として配信する
⭕ 毎月2〜3拠点をランダムに選び、元のCSVからの再計算と突合してから配信する
なぜこれが重要か:実装チームが検証したところ、まれにCSVの列名や単位の想定が拠点ごとにわずかに異なっているケースがあり、サブエージェントが誤った前提で計算してしまう場面がありました。並列処理で速くなった分、最終確認のステップを削らないことが重要だと分かった教訓です。AIは補助ツールであり、最終判断者ではありません。
段階的導入のロードマップ
Phase 1(1〜2ヶ月):拠点数を3拠点程度に絞ってPoC。並列dispatchの記法とファイル分離設計の精度を検証する。
Phase 2(3〜4ヶ月):全拠点へ横展開。異常値スクリーニングとSlack通知を追加する。
Phase 3(5〜8ヶ月):拠点数が増えた場合の並列数の上限や、非対話モードでの月次バッチ実行を検討し、スポットチェックの対象拠点をローテーションする運用ルールを整備する。
想定効果(試算)
| 指標 | 導入前(想定) | 導入後(想定) |
|---|---|---|
| 12拠点分のKPI計算・単票化にかかる時間 | 約24時間(拠点あたり2時間×12拠点、逐次処理) | 並列dispatchのため所要時間は拠点数に比例せず、実働1時間程度 |
| 本社での統合レポート作成時間 | 約4時間 | 約1時間(うちスポットチェック30分を含む) |
| 月次レポート確定までのリードタイム | 3営業日 | 半日程度 |
| 拠点間の計算基準のブレによる差し戻し件数(月次) | 1〜2件 | 0件(想定) |
※上記はすべて想定シナリオに基づく試算値です。実際の効果は拠点数・CSVのフォーマット統一度・既存の集計フローによって変わります。
適用余地のある業界・規模
「同じ計算を拠点の数だけ繰り返している」という構図は、3PLに限りません。チェーン展開する小売店舗の日次売上集計、複数クリニックを持つ医療法人の月次レセプト点検、複数工場を持つ製造業の品質検査レポートなど、拠点や店舗単位で同じフォーマットの帳票を作っている業種であれば、同じ設計思想(1拠点=1サブエージェント、出力ファイルの分離、統合と最終確認の役割分離)が応用できます。拠点数が5〜20程度で、CSVなど構造化データがすでに拠点ごとに存在している状態が、PoCを始めやすい規模感だと考えられます。
内部リンク:関連事例・参考記事
- 【2026年最新】物流3PLの配車計画をClaude Codeで半自動生成 — 同じ3PL領域でも、こちらは配車・スケジューリングの制約充足が中心。本記事の拠点別帳票集計とはテーマが異なります
- 【2026年最新】Claude Codeサブエージェント並列開発入門 — サブエージェントの並列dispatchという仕組み自体の基礎解説はこちら
まとめ:今日から始める3つのアクション
- 今日やること:自社の拠点別レポートのうち3拠点分のCSVを用意し、本記事の手順2(並列dispatchプロンプト)を試す
- 今週中:拠点ごとの出力ファイル名を分離するルールと、サブエージェントのツールアクセス範囲をsettings.jsonで確認する
- 今月中:全拠点へ横展開する前に、スポットチェックの対象拠点をローテーションする運用ルールを決めておく
正直にお伝えすると、この構成はまだ発展途上です。拠点ごとにCSVのフォーマットが微妙に異なるケースへの対応や、拠点数が数十を超えたときの並列数の上限は、今後の検証課題として残っています。だからこそ「AIに丸投げ」ではなく、拠点別の計算はサブエージェントに任せつつ、統合結果の最終確認は人が行う「AIと協業」の設計が重要だと考えています。
次回予告:次の記事では、拠点数が数十規模に増えた場合のサブエージェント並列数の上限と、エージェントチーム(agent teams)を使った役割分担の違いを検証する予定です。
FAQ
- Q: Claude Codeのサブエージェントとは何ですか?
- メインの会話とは別に、独立したコンテキストウィンドウ・ツールアクセス・権限を持って側作業を任せられるClaude Codeの機能です。ログや検索結果でメインの会話を埋め尽くしてしまうような、独立して完結するタスクに向いています。
- Q: サブエージェントを並列実行するにはどうすればいいですか?
- 複数のサブエージェント呼び出しを、1つずつ順番にではなく、同じメッセージの中でまとめて発行します。それぞれが独立して完結し、他の呼び出しの結果を待つ必要がないタスクであれば、まとめて発行することで並列に実行されます。
- Q: GPT-5.6のUltra modeと何が違うのですか?
- GPT-5.6のUltra modeは、モデルが既定で4つのエージェントを内部的に並列協調させる仕組みです。一方Claude Codeのサブエージェントは、どのタスクを何個のサブエージェントに分けるか、各サブエージェントにどのツールアクセスを与えるかをユーザー自身が設計・監査できる点が異なります。
- Q: 本記事の事例は実在するものですか?
- 本記事の事例・数値・コードはすべて想定シナリオ(モデルケース)です。実在する特定の3PL事業者の事例ではありません。
- Q: 12拠点以外の規模でも同じ設計は使えますか?
- 使えます。拠点数が5〜20程度で、拠点ごとに同じフォーマットのCSVなど構造化データがすでに存在する業種であれば、小売チェーンの店舗別集計や複数クリニックの月次点検など、同じ設計思想がそのまま応用できます。
参考・出典
- OpenAI公式:GPT-5.6発表ページ(Ultra modeの並列サブエージェント設計・Terminal-Bench 2.1スコア)(参照日: 2026-07-10)
- 9to5Mac:OpenAIによるGPT-5.6・ChatGPT Work発表レポート(2026年7月9日)(参照日: 2026-07-10)
- Claude Code公式ドキュメント:Create custom subagents(サブエージェントの仕組み)(参照日: 2026-07-10)
- Claude Code公式ドキュメント:Run agents in parallel(並列実行の全体像)(参照日: 2026-07-10)
著者プロフィール
佐藤傑(さとう・すぐる)。株式会社Uravation代表取締役。早稲田大学法学部在学中に生成AIの可能性に魅了され、X(@SuguruKun_ai)で活用法を発信(フォロワー約10万人)。100社以上の企業向けAI研修・導入支援を展開。著書『AIエージェント仕事術』(SBクリエイティブ)。SoftBank IT連載7回執筆。
Claude Code 個別指導・物流DX導入支援
サブエージェントの並列dispatch設計を含めた安全なClaude Code導入を、Uravationが伴走します。ご質問・ご相談はお問い合わせフォームからお気軽にどうぞ。