Media > AI活用ユースケース > 物流 > 運送会社で、道路の通行止め・規制と気象の警報をエージェントが毎朝見回り、当日の配送ルートと照らして、影響する便と迂回の検討が要る配送先を配車担当へ知らせる

運送会社で、道路の通行止め・規制と気象の警報をエージェントが毎朝見回り、当日の配送ルートと照らして、影響する便と迂回の検討が要る配送先を配車担当へ知らせる

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

国道事務所・都道府県・高速道路会社が公開する通行止め・通行規制の情報と、気象庁の警報を、エージェントが毎朝の出発前に見回ります。規制の道路と区間を当日の配車表のルートと照らし、影響する便と、迂回の検討が要る配送先を配車担当へ知らせます。

サマリー
生成AI
ChatGPT/Claude/Gemini
連携・自動化
Make/n8n/Power Automate/Zapier
対象業界
小売/建設/物流/製造
対象部門
物流
対象業務
内容確認・チェック/情報検索
主な課題
属人化している/情報が見つからない/期限・対応漏れが起きる
AIで行う処理
エージェント
主な効果
対応スピード向上/工数削減/機会損失防止
導入難易度
★★★★☆
実装レベル
本格構成
費用感
API連携(中)
人間の確認
条件付き
現在工数
36h/月
AI導入後
10h/月
想定削減
72%
年間削減
312h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 早番の担当者が出社し、気象庁のページで当日のルートが通る県の警報・注意報を見る
  2. 高速道路会社の通行止めの情報を開き、関越道・上信越道などの区間を確かめる
  3. 国道事務所の道路情報、県の道路規制のページを順に開き、規制の道路と区間を書き出す
  4. 配車システムの当日の便を開き、規制の道路を通る便がないかを、便ごとのルートを思い出しながら見比べる
  5. 影響しそうな便について、迂回するか、出発を早めるか、配送先に遅れを連絡するかを決める
  6. ドライバーに伝え、荷主・配送先へ連絡する
導入後(After)
  1. 自動前日の夕方、配車システムから翌日の便を書き出し、ワークフローがデータベースの当日の配車表に取り込む
  2. 自動朝4時15分にワークフローが動き、気象庁の警報のフィードを取り、当日のルートが通る県の警報を拾う
  3. 自動見回り先の一覧にある道路管理者のページを取り、本文を取り出す
  4. 【AI】 エージェントが規制の情報ごとに、道路・区間・規制の種類・期間を取り出し、ルートの一覧を引いて、その区間を通る便の候補を挙げる
  5. 【AI】 事前通行規制の区間に警報が重なるものは、「日中に止まるおそれ」として別に整理する
  6. 自動影響の一覧を、出発の早い便の順に配車担当のチャットへ出す
  7. 人配車担当が候補を確かめ、迂回・時間の変更・運行の取りやめを決める
  8. 人ドライバーと配送先へ連絡する
各工程の詳しい説明を読む
  1. 早番の担当者が出社し、気象庁のページで当日のルートが通る県の警報・注意報を見る
  2. 高速道路会社の通行止めの情報を開き、関越道・上信越道などの区間を確かめる
  3. 国道事務所の道路情報、県の道路規制のページを順に開き、規制の道路と区間を書き出す
  4. 配車システムの当日の便を開き、規制の道路を通る便がないかを、便ごとのルートを思い出しながら見比べる
  5. 影響しそうな便について、迂回するか、出発を早めるか、配送先に遅れを連絡するかを決める
  6. ドライバーに伝え、荷主・配送先へ連絡する

(a)見回りが担当者の経験に頼っている。 警報が出たときにどの県道のページまで見るか、どの区間が事前通行規制の区間かを、ベテランが覚えています。新しい担当者の早番の日は、見るページが減ります。

(b)出発前に終わらない。 見るページは十数か所あります。最初の便が出た後で規制に気づき、走り出したドライバーに電話で迂回を伝えることがあります。

(c)規制の区間と自社のルートの重なりを読み違える。 規制の区間は「○○町△△地先から□□町××地先まで」のように書かれ、地図と頭の中のルートを突き合わせることになります。同じ国道でも、規制の区間を通らない便まで止めてしまうこと、逆に県道の規制を、その県道を抜け道に使う便と結び付けられないことの両方が起きます。

(d)日中に止まるおそれが見えない。 出発時に規制が出ていなくても、警報が出ていれば日中に事前通行規制が掛かることがあります。朝の時点での「通れる」が、帰りの便では通れない。 それを前もって配送先に伝える段取りがありません。

  1. 【自動】 前日の夕方、配車システムから翌日の便を書き出し、ワークフローがデータベースの当日の配車表に取り込む
  2. 【自動】 朝4時15分にワークフローが動き、気象庁の警報のフィードを取り、当日のルートが通る県の警報を拾う
  3. 【自動】 見回り先の一覧にある道路管理者のページを取り、本文を取り出す
  4. 【AI】 エージェントが規制の情報ごとに、道路・区間・規制の種類・期間を取り出し、ルートの一覧を引いて、その区間を通る便の候補を挙げる
  5. 【AI】 事前通行規制の区間に警報が重なるものは、「日中に止まるおそれ」として別に整理する
  6. 【自動】 影響の一覧を、出発の早い便の順に配車担当のチャットへ出す
  7. 【人】 配車担当が候補を確かめ、迂回・時間の変更・運行の取りやめを決める
  8. 【人】 ドライバーと配送先へ連絡する

2番目をAIにさせないのは、意図してのことです。 警報は機械の読める形で返るので、県や市町村の一致は規則の比較で確実に出せます。

7番目の判断は、すべて人が行います。 エージェントが出すのは「この便が規制の区間を通る可能性がある」という候補と、その根拠です。

02今回想定するシステム構成

構成図
配車システム(翌日の便)── 前日夕方に書き出し → PostgreSQL(当日の配車表)
   │
   ▼【トリガー】Schedule Trigger(毎朝4時15分、Asia/Tokyo)
n8n のワークフロー
   ├──▶ HTTP Request で気象庁の Atom フィード(長期・随時)を取る
   │      XML ノードで JSON にし、当日のルートが通る県の警報の電文だけを取る
   ├──▶ 見回り先の一覧の URL を HTTP Request で取り、HTML の本文を取り出す
   ▼
AI Agent ノード(Tools Agent)+ Claude
   │  規制の情報1件ごとに、道具を選んで引く
   │   ・ルートの一覧を道路名・区間で引く(Postgres)
   │   ・当日の配車表を引く(Postgres)
   │   ・過去の規制と迂回の記録を引く(Postgres)
   │   ・規制の詳細のページを取る(HTTP Request)
   │  Structured Output Parser で決まった形のJSONを返す
   ▼
影響の一覧(データベースの別の表)→ 運行管理課のチャットへ通知
   ▼【人】迂回・時間の変更・運行の取りやめの判断、ドライバーと配送先への連絡
役割想定する製品代替候補
ワークフローn8nMake、Power Automate、Zapier
生成AIClaude API(n8n の Anthropic Chat Model ノード)OpenAI API、Gemini API
連携PostgreSQL(ルートの一覧、当日の配車表の写し、影響の一覧)MySQL
通知社内チャットメール

新しく足すのは、n8n のワークフローと、ルートの一覧と、影響の一覧だけです。 配車システムには書き込みません。前日の夕方に翌日の便を書き出し、エージェントはその写しを引きます。

いちばん手間がかかるのは、ルートの一覧です。 便ごとに、経由する道路と区間を「国道18号/安中市〜軽井沢町/碓氷バイパス」「県道○号/△△峠」のように行に分けて持たせます。この一覧が無いと、規制の区間と便を結び付ける先がありません。 第3章の(a)と(c)は、この一覧で解きます。

気象の警報は、気象庁の防災情報XMLを使います。 気象庁は、防災情報XMLフォーマットの電文をホームページで公開しており(PULL型)、ユーザー登録は不要で、任意のタイミングで電文を取得できるとされています。更新の周期が異なる2つの Atom フィードがあり、高頻度フィードは毎分更新で直近少なくとも10分の入電を、長期フィードは毎時更新で数日間の全入電を載せています。分類は「定時」「随時(警報・注意報など)」「地震火山」「その他」の4つです。毎朝1回取りに行くこの構成では、長期フィードの「随時」を使います。

道路の規制は、道路管理者のページを見回り先の一覧として持ちます。 たとえば関東地方整備局の高崎河川国道事務所のページでは、台風や集中豪雨のときに一定の雨量で通行止めにする事前通行規制の区間として国道18号(碓氷バイパス)が示され、情報の入手先として群馬県内の国道の規制マップ、関東・甲信地方の道路情報提供システム、公式のXが案内されています。こうした入手先を、ルートが通る区間ごとに一覧にします。

n8n を選ぶ理由は、規制の情報1件ごとに引き方が変わるからです。 国道は道路名と区間で、県道は市町村名で、峠の名前だけのものは目印で引きます。Tools Agent は、道具の機能を理解し、タスクに応じてどの道具を使うかを決めるとされ、道具は明示的につなぐ必要があります。

03どうやって実装するのか

Step1

処理の起点を決める

毎朝4時15分に、Schedule Trigger で動かします。 早番の担当者が4時半に出社したときに、影響の一覧ができている時刻にします。工数の試算は稼働日の朝ごとの件数で数えています。

Schedule Trigger は、ワークフローのタイムゾーンが設定されていればそれを、無ければ n8n のインスタンスのタイムゾーンを使い、セルフホストの既定は America/New York とされています。ワークフローのタイムゾーンを Asia/Tokyo にしないと、日本時間の夕方に動きます。 時刻は cron の式でも指定できます。保存して公開(有効化)しないと動かないとされているので、作った日に公開の状態を確かめます。

前日の夕方の取り込みは、別のワークフローにします。 配車システムの書き出しが遅れた日に、朝の見回りまで止まらないようにするためです。朝の時点で当日の配車表が無ければ、照合を止めて担当者に知らせます。

Step2

入力データを集める

データ中身取得元
当日の配車表便番号、出発時刻、ドライバー、車両、配送先、ルートID配車システムの書き出し
ルートの一覧ルートIDごとの経由する道路、区間の起点・終点、都県、市町村、峠・IC・トンネルの名前運行管理課が作る
見回り先の一覧URL、道路管理者、対象の道路、見る見出し、自動で取ってよいか運行管理課が作る
気象の警報地域ごとの警報・注意報の種類と発表時刻気象庁の防災情報XML
道路の規制規制の道路、区間、種類(通行止め・片側交互通行・チェーン規制など)、期間道路管理者のページ
過去の規制と迂回の記録規制の区間、そのとき影響した便、選んだ迂回、所要時間の増え方影響の一覧

質を決めるのは、2行目のルートの一覧です。 規制は「○○町△△地先」のように市町村と地名で書かれることが多いので、区間の起点・終点を、市町村と目印(IC、峠、トンネル、交差点)で持たせます。 道路名だけの一覧では、同じ国道でも規制の区間を通らない便まで候補に挙がります。

見回り先の一覧の「自動で取ってよいか」の列は、必ず埋めます。 道路情報のページの中には、利用条件で機械による取得を認めていないものがあります。認められていないページは、自動の見回りから外し、担当者が開くページとして一覧に残します。

過去の記録は、「この区間が止まったときは、この県道に回して40分増えた」を、迂回の検討の材料として添えるために持ちます。

Step3

データの取得方法を決める

取るものどこからどう取るか
気象の警報の一覧気象庁の長期フィード(随時)HTTP Request(GET)で取り、XML ノードで JSON にする
警報の電文一覧の各エントリのリンク当日のルートが通る県の気象台のものだけ HTTP Request で取る
道路の規制のページ見回り先の一覧の URLHTTP Request(GET)。応答は文字として取る
規制の詳細ページの中のリンクエージェントの道具として HTTP Request で取る
ルートと配車表PostgreSQLエージェントの道具として Postgres ノードで引く

気象庁のフィードは、エントリの発表者(気象台)で先に絞ります。 当日のルートが通る県の気象台のものだけを残し、電文の本体はその分だけ取ります。 気象庁は、公開しているURLに1日10GB以上のダウンロードを伴うアクセスがあるとアクセス元を遮断するとしており、一度取った電文を取り直さない作りにすることを求めています。 取った電文のIDを記録し、2回目以降は取りません。

電文は XML ノードで JSON にし、取るのは、警報の種類、対象の地域(市町村)、発表時刻と、警報が「発表」「継続」「解除」のどれかです。

道路の規制のページは、見回り先の一覧の URL だけを取ります。 HTTP Request ノードには応答の状態コードを含めて受け取るオプションがあり、取れなかったページを「規制なし」と取り違えないよう、状態コードと取得時刻を残します。

Step4

AIへ渡す前に整形する

  1. 当日の配車表を確かめる … 前日の取り込みが無ければ、照合を止めて担当者に知らせます。古い配車表で照合すると、今日だけの臨時便が漏れます
  2. 警報を地域で絞る … ルートの一覧にある市町村に掛かる警報だけを残します。「解除」の電文は、同じ地域の発表と組にして消します
  3. ページの共通部分を外す … メニュー、フッター、お知らせの一覧を外し、見る見出しの下の本文だけを残します
  4. 前回との差を出す … 前日の朝と同じ規制は「継続」として印を付けます。エージェントに渡すのは、新しい規制と、期間・区間が変わった規制です
  5. 道路名の書き方をそろえる … 「R18」「国道18号」「一般国道18号」をそろえます。ルートの一覧の側も同じ規則でそろえます

4番目は、何か月も続く工事規制を毎朝読み直させないためです。 読ませると、本当に新しい通行止めが一覧の下に埋もれます。 継続のものは一覧の末尾に件数で並べます。

Step5

AIに処理させる

させるのは、規制の情報1件ごとに、道路・区間・規制の種類・期間を取り出し、ルートの一覧と当日の配車表を引いて、影響する便の候補を挙げることです。

させること使う道具返すもの
規制の道路と区間を取り出す-道路名、区間の起点・終点(書かれたまま)、市町村
規制の種類と期間を取り出す-通行止め、片側交互通行、チェーン規制、事前通行規制など。開始・終了の日時
詳細のページを読む規制の詳細のページを取る区間や迂回路の案内が別ページにあるときの本文
区間を通るルートを探すルートの一覧を道路名・区間で引く一致したルートIDと、一致の根拠
当日の便に当てる当日の配車表を引くそのルートを使う便、出発時刻、配送先
前回の迂回を添える過去の規制と迂回の記録を引く同じ区間の前回の迂回と、増えた時間
日中に止まるおそれを整理する-事前通行規制の区間と、その地域の警報の組

取り出しの段階では、ページに書かれた文言をそのまま写させます。 区間の起点・終点、規制の種類、期間の書き方は道路管理者ごとに違います。言い換えると、元のページと見比べられなくなります。

させないこと理由
迂回のルートを決める車両の大きさ、高さ・重さの制限、配送先の受け入れ時間は配車担当が知っている
運行を取りやめる判断荷主との取り決めとドライバーの安全に関わる
規制の区間を地図から推し量るページに書かれていない区間を補うと、別の区間の便を挙げる
規制の解除の時刻を推測する「解除の見込み」が書かれていなければ「記載なし」
ドライバーや配送先へ連絡する連絡の文面と相手は人が決める

3行目がいちばん起きやすい失敗です。 「○○峠付近で通行止め」とだけ書かれた規制を渡すと、生成AIは峠の前後の区間を知識から補い、もっともらしい起点と終点を書きます。 合っていることもありますが、外れると、通らない便を止めるか、通る便を見落とします。区間が書かれていなければ、峠の名前でルートの一覧を引くまでにとどめます。

Step6

指示内容を固定する

AI Agent ノードの System Message に、次のように書きます。

あなたは運送会社の運行管理課で、道路の通行止め・通行規制の情報を、
当日の配車表と照らす担当です。入力は、新しく見つかった規制の情報1件
(道路管理者のページから取り出した本文)と、当日のルートが通る地域に
出ている気象の警報の一覧です。

【やること】
1. 規制の情報から、道路名、区間の起点・終点、市町村、規制の種類、
   開始・終了の日時を、書かれた文言のまま取り出す。
2. 区間や迂回路の案内が別のページにあると書かれていれば、
   そのリンクのページを取って読む。
3. ルートの一覧を、道路名と市町村、峠・IC・トンネルの名前で引き、
   規制の区間を通るルートを探す。
4. 見つかったルートを使う当日の便を、配車表から引く。
5. 同じ区間の過去の規制と迂回の記録を引き、前回の迂回を添える。
6. 規制が事前通行規制の区間のもので、同じ地域に大雨・大雪の警報が
   出ている場合は、まだ通行止めでなくても日中に止まるおそれとして
   別に挙げる。

【厳守事項】
- 道路名、区間、期間は、ページに書かれた文言をそのまま写してください。
- ページに区間の起点・終点が書かれていないとき、区間を補わないでください。
  section_in_source を false にし、峠などの名前だけで引いてください。
- 解除の見込みが書かれていないときは「記載なし」としてください。
- 迂回のルートを提案しないでください。過去の記録にある迂回を、
  そのまま「前回の迂回」として添えるだけにしてください。
- 運行を取りやめるべきか、遅らせるべきかを書かないでください。
  match_basis に、どの道具で何が一致したかだけを書いてください。
- 規制が当日の配送の時間帯と重ならない場合も、候補から外さず、
  time_overlap を false にして返してください。
- 取得したページに規制の情報が無いと判断したときは、relevant を false
  にして、取り出しをしないでください。

【出力】指定のJSONの形で返してください。

「区間を補わない」と「section_in_source」を組にしているのが、この指示の要です。 補わないよう指示するだけだと、ページにあった区間と、補った区間の区別が出力から消えます。 ページにあったかどうかを項目として持たせれば、後段の規則で、区間の書かれていない規制は必ず人が地図で確かめる、と決められます。

「迂回を提案しない」のは、生成AIが道路の知識から出す迂回路が、トラックの通れない道を含むことがあるからです。 前回の記録を添えるところまでにします。

Step7

出力形式を固定する

Structured Output Parser で、次の形のJSONを返させます。

{
  "source_url": "",
  "fetched_at": "",
  "relevant": true,
  "road": "",
  "section_text": "",
  "section_in_source": true,
  "municipalities": [""],
  "restriction_type": "closure | alternating | chain | pre_closure_area | other",
  "start": "", "end": "",
  "affected_runs": [
    { "run_no": "", "departure": "", "destination": "", "route_id": "",
      "match_basis": "road_and_section | road_and_landmark | municipality_only",
      "time_overlap": true,
      "previous_detour": "" }
  ],
  "daytime_risk": { "is_pre_closure_area": false, "warnings": [""] },
  "unverified": [""]
}

Structured Output Parser は、JSON の例から形を作るか、JSON Schema を直接書けます。例から作ると、すべての項目が必須として扱われるとされているので、空のときも項目を返させる形になります。$ref の参照は使えないので、便の形は入れ子のまま書きます。

1つ目の理由は、match_basis で確からしさを分けられることです。 道路名と区間、道路名と峠・ICの名前、市町村だけ、の3つを通知で分けて出します。

2つ目は、section_in_source で補った区間を締め出せることです。 false の規制は、affected_runs があっても無くても、配車担当が地図で区間を確かめます。

3つ目は、daytime_risk で第3章の(d)を解けることです。 事前通行規制の区間で、同じ地域に警報が出ているものは、今は通れても配送先へ遅れの可能性を先に伝える材料になります。

並べ順中身
1restriction_type が closure で、time_overlap が true の便
2daytime_risk があり、日中の便が通るもの
3match_basis が municipality_only のもの、section_in_source が false のもの
4当日の便と時間帯が重ならない規制、継続中の工事規制(件数だけ)

4行目も消さずに残します。 「影響なし」も、見回りをした記録だからです。

Step8

システムへ連携する

つなぎ先方式内容
気象庁の防災情報XMLHTTP Request(GET)+ XML ノード長期フィード(随時)と、該当する電文を取る
道路管理者のページHTTP Request(GET)見回り先の一覧の URL を取る
ルートの一覧・当日の配車表Postgres ノード(Select、パラメーター付きの Execute Query)道路名・市町村・目印でルートを引き、便を引く
Claude APIAnthropic Chat Model ノード規制の取り出しと照合の整理
影響の一覧Postgres ノード(Insert)エージェントの出力と人の判断
社内チャット通知並べ順のとおりに一覧を出す

影響の一覧への書き込みは、ワークフローの側で行います。 エージェントの道具には Insert を含めず、ルートと配車表を引く Select と Execute Query だけを渡します。公式の説明では、クエリパラメーターのデータは n8n が無害化し、SQL インジェクションを防ぐとされています。ページの本文の文字を、そのまま問い合わせに埋め込まないでください。

エージェントに取らせるページは、見回り先のページの中のリンクだけにします。 AI Agent ノードの Return Intermediate Steps を有効にすると、エージェントがたどった途中の手順が出力に含まれます。後段で、取ったURLが見回り先の一覧のドメインに入っているかを確かめ、外れていれば結果を使わずに人へ回します。 HTTP Request ノードを道具として使うときは、応答から要る部分だけを選んでトークンを減らす設定もあります。

Step9

人が確認する

  1. 出発の早い便から見る … 通行止めで時間帯が重なる便は、出発の前に迂回か時間の変更を決めます
  2. road_and_section の一致を確かめる … 規制のページと便のルートを並べ、本当にその区間を通るかを見ます
  3. section_in_source が false の規制を地図で確かめる … 峠の名前だけの規制は、どこからどこまでかを道路管理者のページの地図で見ます
  4. daytime_risk の便を決める … 出発を早めるか、配送先に遅れの可能性を伝えるかを決めます。ここが配車担当の仕事の中心です
  5. 迂回を決めて記録する … 選んだ迂回、増えた時間を影響の一覧に残します。次に同じ区間が止まったとき、エージェントが前回の迂回として引きます
  6. ドライバーと配送先へ連絡する … 連絡は人が行います

3番目を省かないでください。 峠の名前だけの規制は広めに候補を挙げる作りで、候補はその便が止まることを意味しません。

目標は、1日をならして25分です。 影響の一覧の確認と区間の確かめに15分、迂回と連絡の判断に10分という見込みです。

Step10

例外に対処する

起きること対応
当日の配車表が取り込まれていない照合を止め、担当者に知らせる。見回りの結果だけは一覧に出す
道路管理者のページが取れないそのページを「本日取得なし」として通知の先頭に出す。「規制なし」と扱わない
ページの作りが変わり、規制が読めない取り出せた本文が極端に短い、または見る見出しが無ければ人に回す
気象庁のフィードが取れない警報の照合を止め、気象庁のページを人が見るよう通知する
規制の区間が書かれていないsection_in_source を false にし、人が地図で確かめる
エージェントの出力がスキーマに合わない規制のページのURLと題名だけを一覧に載せ、人に回す
臨時便がルートの一覧に無いroute_id が引けない便として、通知の末尾に必ず出す

上から2行目は、悪天候の日ほど起きます。 取れなかったページを黙って飛ばすと、いちばん規制が出ている日に「影響なし」と出ます。

Step11

記録を残す

  • 実行ごとの、取ったページと気象庁の電文のID、取得の成否と状態コード
  • 新しく拾った規制と、継続中の規制の一覧
  • エージェントのJSON出力と、呼んだ道具の順番
  • 配車担当の判断 … 便ごとの迂回・時間の変更・取りやめと、その理由
  • 規制の発表時刻、見回りで拾った時刻、便の出発時刻
  • 迂回で増えた時間と、配送先の受け入れに間に合ったか

5つ目の行が、この構成の物差しです。 規制が出てから何分で拾い、出発の何分前に判断できたかを並べると、見回りの時刻が早すぎるのか、判断に時間がかかっているのかが分かれて見えます。

04実装レベルの3段階

最小構成:規制のページの本文とルートの一覧を生成AIの画面に貼る / 1日ごとの取り出しと照合の候補
半自動化:上記+n8n で気象庁の警報を取り、ルートの一覧の市町村と規則で照らす。道路管理者のページの変化を拾う / 警報の照合と、ページの見回り
本格構成:上記+エージェントによる規制の取り出し、ルートと配車表の照合、前回の迂回の添付、日中に止まるおそれの整理 / 見回りから影響する便の候補まで

半自動化だけでも、①の警報の確認とページを順に開く時間はほぼ無くなります。 AIを使わずに組めます。残るのは、文で書かれた規制をルートと結び付ける②の後半と③です。 本格構成で減るのは、その②と③です。 段階を飛ばさず、半自動化を1〜2か月回して、拾った規制に漏れが無いかを早番の担当者の見回りと比べてから、エージェントを足してください。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
3 名
月間件数
24 件
1件あたり現在時間
90 分
1件あたり導入後時間
25 分
現在  24件 × 90分 ÷ 60 = 36 時間/月
導入後 24件 × 25分 ÷ 60 = 10 時間/月
月間削減時間
26h
削減率
72%
年間削減時間
312h
年間金額換算(時間単価3,000円)
94万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 山間部の国道・県道や峠を越える中距離の定期便を持ち、豪雨・大雪・土砂崩れによる通行止めや事前通行規制の影響を受けやすい運送会社。配車担当が毎朝、国道事務所・都道府県・高速道路会社の道路情報のページと気象の警報を順に開き、当日の配車表と見比べている場合。便ごとの経由する道路と区間を、ルートの一覧として持てる場合。見回りが特定の配車担当の経験に頼っている場合。
向いていない
  1. 配送が市街地の短距離に限られ、通行止めの影響を受ける区間がほとんど無い場合。配車がその日の朝に決まり、ルートが便ごとに毎回変わるため、経由する道路の一覧を持てない場合。民間の道路交通情報サービスを契約し、自社のルートとの照合まで提供を受けている場合。なお、迂回するルートの決定、運行を取りやめる判断、ドライバーへの指示は、この構成では代替できません。

07最小構成で試す方法

  1. 過去の悪天候の日から5日を選ぶ(事前通行規制の区間が止まった日と、県道が止まった日を1日ずつ入れる)
  2. 主な定期便10本について、経由する道路と区間を書き出す
  3. その日の道路管理者のページの記録(保存していた画面や、当時のメモ)と、書き出したルートを生成AIの画面に貼る
  4. 「規制の道路・区間・期間を書かれたまま取り出し、ルートと照らして通る便の候補を挙げてください。区間を補わず、迂回は提案しないでください」と指示する
  5. 出てきた候補を、当時の配車担当の判断と比べる
出てきた内容判断
当時の判断と同じ便が挙がったワークフローを組む段階に進む
区間を補った、迂回を提案した指示の書き方で直る。section_in_source を持たせる構成で進める
同じ国道の便が全部挙がるルートの一覧に区間の起点・終点が無い。 一覧の整備が先

3行目が出ることは珍しくありません。 その場合は、峠や山間部を通る便から、区間の目印を書き足してください。

08実装時につまずきやすいポイント

問題対策
エージェントが区間を補う指示で禁じ、section_in_source を持たせる
同じ国道の便が全部候補に挙がるルートの一覧に区間の起点・終点と目印を持たせる
迂回路を提案してしまう指示で禁じ、過去の記録の迂回だけを添える
取れなかったページが「規制なし」になる状態コードを残し、取得なしを通知の先頭に出す
毎朝同じ工事規制が並ぶ前回との差を出し、継続は件数だけにする
自動で取ってはいけないページを取る見回り先の一覧に可否の列を持たせ、外したページは人が見る
ページの文字をSQLに埋め込むパラメーター付きの Execute Query を使う

上の3行が、この構成の失敗のほとんどです。 どれも「影響する候補」と「運行の判断」の境目の問題です。AIが拾い、人が決める、の線を出力の形で守ってください。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 当日の配車表(便、ドライバー、車両、配送先、出発時刻)、ルートの一覧、過去の迂回の記録です。どの荷主の荷を、いつ、どこへ運ぶかは、荷主との取引の情報です。

  1. AIに渡す範囲を絞る … 照合に要るのは、ルートID、経由する道路と区間、便番号、出発時刻、配送先の地域だけです。ドライバーの氏名と荷主名は、エージェントに渡さず、通知の段階でワークフローが付け足します
  2. 荷主の情報を外部の生成AIへ渡してよいかを先に決める … 生成AIのAPIの利用条件と、荷主との契約の秘密保持の範囲で確かめます
  3. 迂回と運行の判断は人が行う … この構成が出すのは候補と根拠です。車両の制限とドライバーの安全を踏まえた判断は、運行管理者が行ってください
  4. 配車システムに書き込ませない … エージェントの道具は読み取りだけにし、判断の記録はワークフローの側で書きます
  5. 公開されている情報の利用条件を守る … 認められた範囲で、決まったURLだけを朝に取ります

誤りが起きた場合のリスクは、影響する便を見落とすことと、影響しない便を止めることの2つです。 前者は取得の失敗と区間の補完で起き、後者は市町村だけの一致を確かな一致として扱うと起きます。

10まず何から始めるか

1週目:見回り先の一覧を作る

配車担当3名に、毎朝見ているページと、警報が出たときに追加で見るページを書き出してもらい、1つの表にします。利用条件で自動の取得が認められているかも、ここで確かめます。 この表ができた時点で、第3章の(a)の半分は解けています。

2週目:ルートの一覧を作る

峠や山間部を通る便から、経由する道路と区間の目印を書き出します。全部の便を一度にそろえる必要はありません。

3週目:5日分で試す

第8章の手順で、過去の悪天候の5日分の照合をさせます。区間を補っていないかと、同じ国道の便が全部挙がっていないかを見ます。

4週目:警報の照合とページの見回りを n8n で動かす

気象庁の警報の照合と、見回り先のページの変化の検知までを組みます。エージェントはまだ入れず、拾った規制を早番の担当者の見回りと1〜2か月比べます。

それ以降: エージェントを足し、規制の発表時刻・拾った時刻・便の出発時刻を毎月並べます。影響する便の大半を、出発の前に判断できるようになった時点で、この構成は完成です。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-10-07/最終更新:2026-10-07
確認した内容情報源確認日
気象庁防災情報XMLフォーマットの電文をホームページで公開し(PULL型)、ユーザー登録なしで任意のタイミングで取得できること。高頻度フィード(毎分更新、直近少なくとも10分)と長期フィード(毎時更新、数日間の全入電)があり、定時・随時(警報・注意報など)・地震火山・その他に分かれること。1日10GB以上のダウンロードを伴うアクセスはIPアドレスを遮断し、一度取得したファイルを再度取得しない改修を求めていること(原文を取得して確認)気象庁: 気象庁防災情報XMLフォーマット形式電文の公開(PULL型)2026-10-07
台風や集中豪雨のときに一定の雨量で通行止めにすること。国道18号(碓氷バイパス)が事前通行規制区間として示されていること。情報の入手先として群馬県内の国道規制マップ、関東・甲信地方道路情報提供システム、公式Xが案内されていること関東地方整備局 高崎河川国道事務所: 通行規制2026-10-07
Schedule Trigger がワークフローのタイムゾーンかインスタンスのタイムゾーン(セルフホストの既定は America/New York)を使うこと。cron の式で指定できること。保存して公開しないと動かないことn8n Docs: Schedule Trigger2026-10-07
HTTP Request ノードの応答の形式(文字・JSON・ファイル)、応答のヘッダーと状態コードを含める設定、AIエージェントの道具として使えること、道具として使うときに応答を絞る設定があることn8n Docs: HTTP Request2026-10-07
XML ノードが XML と JSON を相互に変換することn8n Docs: XML2026-10-07
Postgres ノードの操作(Delete、Execute Query、Insert、Insert or Update、Select、Update)。AIエージェントの道具として使えること。クエリパラメーターのデータが無害化され SQL インジェクションを防ぐことn8n Docs: Postgres2026-10-07
Tools Agent が使う道具をタスクに応じて決めること。道具は明示的につなぐ必要があること。System Message、Return Intermediate Steps、出力の形式を指定する設定があることn8n Docs: Tools Agent2026-10-07
Anthropic Chat Model ノードで Claude のモデル、最大トークン数、温度などを指定できることn8n Docs: Anthropic Chat Model2026-10-07
Structured Output Parser で JSON の例または JSON Schema から形を定めること。例から作るとすべての項目が必須になること。$ref が使えないことn8n Docs: Structured Output Parser2026-10-07

通行止めの区間と解除の見込みは、道路管理者の発表で確かめてください。 本記事は上記の公式ページで確認できた範囲だけを扱っています。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-0774)についてのご相談はこちらから。

AI活用について相談する
目次