運送会社で、道路の通行止め・規制と気象の警報をエージェントが毎朝見回り、当日の配送ルートと照らして、影響する便と迂回の検討が要る配送先を配車担当へ知らせる
国道事務所・都道府県・高速道路会社が公開する通行止め・通行規制の情報と、気象庁の警報を、エージェントが毎朝の出発前に見回ります。規制の道路と区間を当日の配車表のルートと照らし、影響する便と、迂回の検討が要る配送先を配車担当へ知らせます。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Make/n8n/Power Automate/Zapier
- 対象業界
- 小売/建設/物流/製造
- 対象部門
- 物流
- 対象業務
- 内容確認・チェック/情報検索
- 主な課題
- 属人化している/情報が見つからない/期限・対応漏れが起きる
- AIで行う処理
- エージェント
- 主な効果
- 対応スピード向上/工数削減/機会損失防止
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 早番の担当者が出社し、気象庁のページで当日のルートが通る県の警報・注意報を見る
- 高速道路会社の通行止めの情報を開き、関越道・上信越道などの区間を確かめる
- 国道事務所の道路情報、県の道路規制のページを順に開き、規制の道路と区間を書き出す
- 配車システムの当日の便を開き、規制の道路を通る便がないかを、便ごとのルートを思い出しながら見比べる
- 影響しそうな便について、迂回するか、出発を早めるか、配送先に遅れを連絡するかを決める
- ドライバーに伝え、荷主・配送先へ連絡する
- 自動前日の夕方、配車システムから翌日の便を書き出し、ワークフローがデータベースの当日の配車表に取り込む
- 自動朝4時15分にワークフローが動き、気象庁の警報のフィードを取り、当日のルートが通る県の警報を拾う
- 自動見回り先の一覧にある道路管理者のページを取り、本文を取り出す
- 【AI】 エージェントが規制の情報ごとに、道路・区間・規制の種類・期間を取り出し、ルートの一覧を引いて、その区間を通る便の候補を挙げる
- 【AI】 事前通行規制の区間に警報が重なるものは、「日中に止まるおそれ」として別に整理する
- 自動影響の一覧を、出発の早い便の順に配車担当のチャットへ出す
- 人配車担当が候補を確かめ、迂回・時間の変更・運行の取りやめを決める
- 人ドライバーと配送先へ連絡する
各工程の詳しい説明を読む
- 早番の担当者が出社し、気象庁のページで当日のルートが通る県の警報・注意報を見る
- 高速道路会社の通行止めの情報を開き、関越道・上信越道などの区間を確かめる
- 国道事務所の道路情報、県の道路規制のページを順に開き、規制の道路と区間を書き出す
- 配車システムの当日の便を開き、規制の道路を通る便がないかを、便ごとのルートを思い出しながら見比べる
- 影響しそうな便について、迂回するか、出発を早めるか、配送先に遅れを連絡するかを決める
- ドライバーに伝え、荷主・配送先へ連絡する
(a)見回りが担当者の経験に頼っている。 警報が出たときにどの県道のページまで見るか、どの区間が事前通行規制の区間かを、ベテランが覚えています。新しい担当者の早番の日は、見るページが減ります。
(b)出発前に終わらない。 見るページは十数か所あります。最初の便が出た後で規制に気づき、走り出したドライバーに電話で迂回を伝えることがあります。
(c)規制の区間と自社のルートの重なりを読み違える。 規制の区間は「○○町△△地先から□□町××地先まで」のように書かれ、地図と頭の中のルートを突き合わせることになります。同じ国道でも、規制の区間を通らない便まで止めてしまうこと、逆に県道の規制を、その県道を抜け道に使う便と結び付けられないことの両方が起きます。
(d)日中に止まるおそれが見えない。 出発時に規制が出ていなくても、警報が出ていれば日中に事前通行規制が掛かることがあります。朝の時点での「通れる」が、帰りの便では通れない。 それを前もって配送先に伝える段取りがありません。
- 【自動】 前日の夕方、配車システムから翌日の便を書き出し、ワークフローがデータベースの当日の配車表に取り込む
- 【自動】 朝4時15分にワークフローが動き、気象庁の警報のフィードを取り、当日のルートが通る県の警報を拾う
- 【自動】 見回り先の一覧にある道路管理者のページを取り、本文を取り出す
- 【AI】 エージェントが規制の情報ごとに、道路・区間・規制の種類・期間を取り出し、ルートの一覧を引いて、その区間を通る便の候補を挙げる
- 【AI】 事前通行規制の区間に警報が重なるものは、「日中に止まるおそれ」として別に整理する
- 【自動】 影響の一覧を、出発の早い便の順に配車担当のチャットへ出す
- 【人】 配車担当が候補を確かめ、迂回・時間の変更・運行の取りやめを決める
- 【人】 ドライバーと配送先へ連絡する
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を返す ▼ 影響の一覧(データベースの別の表)→ 運行管理課のチャットへ通知 ▼【人】迂回・時間の変更・運行の取りやめの判断、ドライバーと配送先への連絡
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | n8n | Make、Power Automate、Zapier |
| 生成AI | Claude 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どうやって実装するのか
処理の起点を決める
毎朝4時15分に、Schedule Trigger で動かします。 早番の担当者が4時半に出社したときに、影響の一覧ができている時刻にします。工数の試算は稼働日の朝ごとの件数で数えています。
Schedule Trigger は、ワークフローのタイムゾーンが設定されていればそれを、無ければ n8n のインスタンスのタイムゾーンを使い、セルフホストの既定は America/New York とされています。ワークフローのタイムゾーンを Asia/Tokyo にしないと、日本時間の夕方に動きます。 時刻は cron の式でも指定できます。保存して公開(有効化)しないと動かないとされているので、作った日に公開の状態を確かめます。
前日の夕方の取り込みは、別のワークフローにします。 配車システムの書き出しが遅れた日に、朝の見回りまで止まらないようにするためです。朝の時点で当日の配車表が無ければ、照合を止めて担当者に知らせます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 当日の配車表 | 便番号、出発時刻、ドライバー、車両、配送先、ルートID | 配車システムの書き出し |
| ルートの一覧 | ルートIDごとの経由する道路、区間の起点・終点、都県、市町村、峠・IC・トンネルの名前 | 運行管理課が作る |
| 見回り先の一覧 | URL、道路管理者、対象の道路、見る見出し、自動で取ってよいか | 運行管理課が作る |
| 気象の警報 | 地域ごとの警報・注意報の種類と発表時刻 | 気象庁の防災情報XML |
| 道路の規制 | 規制の道路、区間、種類(通行止め・片側交互通行・チェーン規制など)、期間 | 道路管理者のページ |
| 過去の規制と迂回の記録 | 規制の区間、そのとき影響した便、選んだ迂回、所要時間の増え方 | 影響の一覧 |
質を決めるのは、2行目のルートの一覧です。 規制は「○○町△△地先」のように市町村と地名で書かれることが多いので、区間の起点・終点を、市町村と目印(IC、峠、トンネル、交差点)で持たせます。 道路名だけの一覧では、同じ国道でも規制の区間を通らない便まで候補に挙がります。
見回り先の一覧の「自動で取ってよいか」の列は、必ず埋めます。 道路情報のページの中には、利用条件で機械による取得を認めていないものがあります。認められていないページは、自動の見回りから外し、担当者が開くページとして一覧に残します。
過去の記録は、「この区間が止まったときは、この県道に回して40分増えた」を、迂回の検討の材料として添えるために持ちます。
データの取得方法を決める
| 取るもの | どこから | どう取るか |
|---|---|---|
| 気象の警報の一覧 | 気象庁の長期フィード(随時) | HTTP Request(GET)で取り、XML ノードで JSON にする |
| 警報の電文 | 一覧の各エントリのリンク | 当日のルートが通る県の気象台のものだけ HTTP Request で取る |
| 道路の規制のページ | 見回り先の一覧の URL | HTTP Request(GET)。応答は文字として取る |
| 規制の詳細 | ページの中のリンク | エージェントの道具として HTTP Request で取る |
| ルートと配車表 | PostgreSQL | エージェントの道具として Postgres ノードで引く |
気象庁のフィードは、エントリの発表者(気象台)で先に絞ります。 当日のルートが通る県の気象台のものだけを残し、電文の本体はその分だけ取ります。 気象庁は、公開しているURLに1日10GB以上のダウンロードを伴うアクセスがあるとアクセス元を遮断するとしており、一度取った電文を取り直さない作りにすることを求めています。 取った電文のIDを記録し、2回目以降は取りません。
電文は XML ノードで JSON にし、取るのは、警報の種類、対象の地域(市町村)、発表時刻と、警報が「発表」「継続」「解除」のどれかです。
道路の規制のページは、見回り先の一覧の URL だけを取ります。 HTTP Request ノードには応答の状態コードを含めて受け取るオプションがあり、取れなかったページを「規制なし」と取り違えないよう、状態コードと取得時刻を残します。
AIへ渡す前に整形する
- 当日の配車表を確かめる … 前日の取り込みが無ければ、照合を止めて担当者に知らせます。古い配車表で照合すると、今日だけの臨時便が漏れます
- 警報を地域で絞る … ルートの一覧にある市町村に掛かる警報だけを残します。「解除」の電文は、同じ地域の発表と組にして消します
- ページの共通部分を外す … メニュー、フッター、お知らせの一覧を外し、見る見出しの下の本文だけを残します
- 前回との差を出す … 前日の朝と同じ規制は「継続」として印を付けます。エージェントに渡すのは、新しい規制と、期間・区間が変わった規制です
- 道路名の書き方をそろえる … 「R18」「国道18号」「一般国道18号」をそろえます。ルートの一覧の側も同じ規則でそろえます
4番目は、何か月も続く工事規制を毎朝読み直させないためです。 読ませると、本当に新しい通行止めが一覧の下に埋もれます。 継続のものは一覧の末尾に件数で並べます。
AIに処理させる
させるのは、規制の情報1件ごとに、道路・区間・規制の種類・期間を取り出し、ルートの一覧と当日の配車表を引いて、影響する便の候補を挙げることです。
| させること | 使う道具 | 返すもの |
|---|---|---|
| 規制の道路と区間を取り出す | - | 道路名、区間の起点・終点(書かれたまま)、市町村 |
| 規制の種類と期間を取り出す | - | 通行止め、片側交互通行、チェーン規制、事前通行規制など。開始・終了の日時 |
| 詳細のページを読む | 規制の詳細のページを取る | 区間や迂回路の案内が別ページにあるときの本文 |
| 区間を通るルートを探す | ルートの一覧を道路名・区間で引く | 一致したルートIDと、一致の根拠 |
| 当日の便に当てる | 当日の配車表を引く | そのルートを使う便、出発時刻、配送先 |
| 前回の迂回を添える | 過去の規制と迂回の記録を引く | 同じ区間の前回の迂回と、増えた時間 |
| 日中に止まるおそれを整理する | - | 事前通行規制の区間と、その地域の警報の組 |
取り出しの段階では、ページに書かれた文言をそのまま写させます。 区間の起点・終点、規制の種類、期間の書き方は道路管理者ごとに違います。言い換えると、元のページと見比べられなくなります。
| させないこと | 理由 |
|---|---|
| 迂回のルートを決める | 車両の大きさ、高さ・重さの制限、配送先の受け入れ時間は配車担当が知っている |
| 運行を取りやめる判断 | 荷主との取り決めとドライバーの安全に関わる |
| 規制の区間を地図から推し量る | ページに書かれていない区間を補うと、別の区間の便を挙げる |
| 規制の解除の時刻を推測する | 「解除の見込み」が書かれていなければ「記載なし」 |
| ドライバーや配送先へ連絡する | 連絡の文面と相手は人が決める |
3行目がいちばん起きやすい失敗です。 「○○峠付近で通行止め」とだけ書かれた規制を渡すと、生成AIは峠の前後の区間を知識から補い、もっともらしい起点と終点を書きます。 合っていることもありますが、外れると、通らない便を止めるか、通る便を見落とします。区間が書かれていなければ、峠の名前でルートの一覧を引くまでにとどめます。
指示内容を固定する
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が道路の知識から出す迂回路が、トラックの通れない道を含むことがあるからです。 前回の記録を添えるところまでにします。
出力形式を固定する
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)を解けることです。 事前通行規制の区間で、同じ地域に警報が出ているものは、今は通れても配送先へ遅れの可能性を先に伝える材料になります。
| 並べ順 | 中身 |
|---|---|
| 1 | restriction_type が closure で、time_overlap が true の便 |
| 2 | daytime_risk があり、日中の便が通るもの |
| 3 | match_basis が municipality_only のもの、section_in_source が false のもの |
| 4 | 当日の便と時間帯が重ならない規制、継続中の工事規制(件数だけ) |
4行目も消さずに残します。 「影響なし」も、見回りをした記録だからです。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 気象庁の防災情報XML | HTTP Request(GET)+ XML ノード | 長期フィード(随時)と、該当する電文を取る |
| 道路管理者のページ | HTTP Request(GET) | 見回り先の一覧の URL を取る |
| ルートの一覧・当日の配車表 | Postgres ノード(Select、パラメーター付きの Execute Query) | 道路名・市町村・目印でルートを引き、便を引く |
| Claude API | Anthropic Chat Model ノード | 規制の取り出しと照合の整理 |
| 影響の一覧 | Postgres ノード(Insert) | エージェントの出力と人の判断 |
| 社内チャット | 通知 | 並べ順のとおりに一覧を出す |
影響の一覧への書き込みは、ワークフローの側で行います。 エージェントの道具には Insert を含めず、ルートと配車表を引く Select と Execute Query だけを渡します。公式の説明では、クエリパラメーターのデータは n8n が無害化し、SQL インジェクションを防ぐとされています。ページの本文の文字を、そのまま問い合わせに埋め込まないでください。
エージェントに取らせるページは、見回り先のページの中のリンクだけにします。 AI Agent ノードの Return Intermediate Steps を有効にすると、エージェントがたどった途中の手順が出力に含まれます。後段で、取ったURLが見回り先の一覧のドメインに入っているかを確かめ、外れていれば結果を使わずに人へ回します。 HTTP Request ノードを道具として使うときは、応答から要る部分だけを選んでトークンを減らす設定もあります。
人が確認する
- 出発の早い便から見る … 通行止めで時間帯が重なる便は、出発の前に迂回か時間の変更を決めます
road_and_sectionの一致を確かめる … 規制のページと便のルートを並べ、本当にその区間を通るかを見ますsection_in_sourceがfalseの規制を地図で確かめる … 峠の名前だけの規制は、どこからどこまでかを道路管理者のページの地図で見ますdaytime_riskの便を決める … 出発を早めるか、配送先に遅れの可能性を伝えるかを決めます。ここが配車担当の仕事の中心です- 迂回を決めて記録する … 選んだ迂回、増えた時間を影響の一覧に残します。次に同じ区間が止まったとき、エージェントが前回の迂回として引きます
- ドライバーと配送先へ連絡する … 連絡は人が行います
3番目を省かないでください。 峠の名前だけの規制は広めに候補を挙げる作りで、候補はその便が止まることを意味しません。
目標は、1日をならして25分です。 影響の一覧の確認と区間の確かめに15分、迂回と連絡の判断に10分という見込みです。
例外に対処する
| 起きること | 対応 |
|---|---|
| 当日の配車表が取り込まれていない | 照合を止め、担当者に知らせる。見回りの結果だけは一覧に出す |
| 道路管理者のページが取れない | そのページを「本日取得なし」として通知の先頭に出す。「規制なし」と扱わない |
| ページの作りが変わり、規制が読めない | 取り出せた本文が極端に短い、または見る見出しが無ければ人に回す |
| 気象庁のフィードが取れない | 警報の照合を止め、気象庁のページを人が見るよう通知する |
| 規制の区間が書かれていない | section_in_source を false にし、人が地図で確かめる |
| エージェントの出力がスキーマに合わない | 規制のページのURLと題名だけを一覧に載せ、人に回す |
| 臨時便がルートの一覧に無い | route_id が引けない便として、通知の末尾に必ず出す |
上から2行目は、悪天候の日ほど起きます。 取れなかったページを黙って飛ばすと、いちばん規制が出ている日に「影響なし」と出ます。
記録を残す
- 実行ごとの、取ったページと気象庁の電文のID、取得の成否と状態コード
- 新しく拾った規制と、継続中の規制の一覧
- エージェントのJSON出力と、呼んだ道具の順番
- 配車担当の判断 … 便ごとの迂回・時間の変更・取りやめと、その理由
- 規制の発表時刻、見回りで拾った時刻、便の出発時刻
- 迂回で増えた時間と、配送先の受け入れに間に合ったか
5つ目の行が、この構成の物差しです。 規制が出てから何分で拾い、出発の何分前に判断できたかを並べると、見回りの時刻が早すぎるのか、判断に時間がかかっているのかが分かれて見えます。
04実装レベルの3段階
半自動化だけでも、①の警報の確認とページを順に開く時間はほぼ無くなります。 AIを使わずに組めます。残るのは、文で書かれた規制をルートと結び付ける②の後半と③です。 本格構成で減るのは、その②と③です。 段階を飛ばさず、半自動化を1〜2か月回して、拾った規制に漏れが無いかを早番の担当者の見回りと比べてから、エージェントを足してください。
05工数削減シミュレーション
導入後 24件 × 25分 ÷ 60 = 10 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 山間部の国道・県道や峠を越える中距離の定期便を持ち、豪雨・大雪・土砂崩れによる通行止めや事前通行規制の影響を受けやすい運送会社。配車担当が毎朝、国道事務所・都道府県・高速道路会社の道路情報のページと気象の警報を順に開き、当日の配車表と見比べている場合。便ごとの経由する道路と区間を、ルートの一覧として持てる場合。見回りが特定の配車担当の経験に頼っている場合。
- 配送が市街地の短距離に限られ、通行止めの影響を受ける区間がほとんど無い場合。配車がその日の朝に決まり、ルートが便ごとに毎回変わるため、経由する道路の一覧を持てない場合。民間の道路交通情報サービスを契約し、自社のルートとの照合まで提供を受けている場合。なお、迂回するルートの決定、運行を取りやめる判断、ドライバーへの指示は、この構成では代替できません。
07最小構成で試す方法
- 過去の悪天候の日から5日を選ぶ(事前通行規制の区間が止まった日と、県道が止まった日を1日ずつ入れる)
- 主な定期便10本について、経由する道路と区間を書き出す
- その日の道路管理者のページの記録(保存していた画面や、当時のメモ)と、書き出したルートを生成AIの画面に貼る
- 「規制の道路・区間・期間を書かれたまま取り出し、ルートと照らして通る便の候補を挙げてください。区間を補わず、迂回は提案しないでください」と指示する
- 出てきた候補を、当時の配車担当の判断と比べる
| 出てきた内容 | 判断 |
|---|---|
| 当時の判断と同じ便が挙がった | ワークフローを組む段階に進む |
| 区間を補った、迂回を提案した | 指示の書き方で直る。section_in_source を持たせる構成で進める |
| 同じ国道の便が全部挙がる | ルートの一覧に区間の起点・終点が無い。 一覧の整備が先 |
3行目が出ることは珍しくありません。 その場合は、峠や山間部を通る便から、区間の目印を書き足してください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| エージェントが区間を補う | 指示で禁じ、section_in_source を持たせる |
| 同じ国道の便が全部候補に挙がる | ルートの一覧に区間の起点・終点と目印を持たせる |
| 迂回路を提案してしまう | 指示で禁じ、過去の記録の迂回だけを添える |
| 取れなかったページが「規制なし」になる | 状態コードを残し、取得なしを通知の先頭に出す |
| 毎朝同じ工事規制が並ぶ | 前回との差を出し、継続は件数だけにする |
| 自動で取ってはいけないページを取る | 見回り先の一覧に可否の列を持たせ、外したページは人が見る |
| ページの文字をSQLに埋め込む | パラメーター付きの Execute Query を使う |
上の3行が、この構成の失敗のほとんどです。 どれも「影響する候補」と「運行の判断」の境目の問題です。AIが拾い、人が決める、の線を出力の形で守ってください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 当日の配車表(便、ドライバー、車両、配送先、出発時刻)、ルートの一覧、過去の迂回の記録です。どの荷主の荷を、いつ、どこへ運ぶかは、荷主との取引の情報です。
- AIに渡す範囲を絞る … 照合に要るのは、ルートID、経由する道路と区間、便番号、出発時刻、配送先の地域だけです。ドライバーの氏名と荷主名は、エージェントに渡さず、通知の段階でワークフローが付け足します
- 荷主の情報を外部の生成AIへ渡してよいかを先に決める … 生成AIのAPIの利用条件と、荷主との契約の秘密保持の範囲で確かめます
- 迂回と運行の判断は人が行う … この構成が出すのは候補と根拠です。車両の制限とドライバーの安全を踏まえた判断は、運行管理者が行ってください
- 配車システムに書き込ませない … エージェントの道具は読み取りだけにし、判断の記録はワークフローの側で書きます
- 公開されている情報の利用条件を守る … 認められた範囲で、決まったURLだけを朝に取ります
誤りが起きた場合のリスクは、影響する便を見落とすことと、影響しない便を止めることの2つです。 前者は取得の失敗と区間の補完で起き、後者は市町村だけの一致を確かな一致として扱うと起きます。
10まず何から始めるか
1週目:見回り先の一覧を作る
配車担当3名に、毎朝見ているページと、警報が出たときに追加で見るページを書き出してもらい、1つの表にします。利用条件で自動の取得が認められているかも、ここで確かめます。 この表ができた時点で、第3章の(a)の半分は解けています。
2週目:ルートの一覧を作る
峠や山間部を通る便から、経由する道路と区間の目印を書き出します。全部の便を一度にそろえる必要はありません。
3週目:5日分で試す
第8章の手順で、過去の悪天候の5日分の照合をさせます。区間を補っていないかと、同じ国道の便が全部挙がっていないかを見ます。
4週目:警報の照合とページの見回りを n8n で動かす
気象庁の警報の照合と、見回り先のページの変化の検知までを組みます。エージェントはまだ入れず、拾った規制を早番の担当者の見回りと1〜2か月比べます。
それ以降: エージェントを足し、規制の発表時刻・拾った時刻・便の出発時刻を毎月並べます。影響する便の大半を、出発の前に判断できるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 気象庁防災情報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 Trigger | 2026-10-07 |
| HTTP Request ノードの応答の形式(文字・JSON・ファイル)、応答のヘッダーと状態コードを含める設定、AIエージェントの道具として使えること、道具として使うときに応答を絞る設定があること | n8n Docs: HTTP Request | 2026-10-07 |
| XML ノードが XML と JSON を相互に変換すること | n8n Docs: XML | 2026-10-07 |
| Postgres ノードの操作(Delete、Execute Query、Insert、Insert or Update、Select、Update)。AIエージェントの道具として使えること。クエリパラメーターのデータが無害化され SQL インジェクションを防ぐこと | n8n Docs: Postgres | 2026-10-07 |
| Tools Agent が使う道具をタスクに応じて決めること。道具は明示的につなぐ必要があること。System Message、Return Intermediate Steps、出力の形式を指定する設定があること | n8n Docs: Tools Agent | 2026-10-07 |
| Anthropic Chat Model ノードで Claude のモデル、最大トークン数、温度などを指定できること | n8n Docs: Anthropic Chat Model | 2026-10-07 |
Structured Output Parser で JSON の例または JSON Schema から形を定めること。例から作るとすべての項目が必須になること。$ref が使えないこと | n8n Docs: Structured Output Parser | 2026-10-07 |
通行止めの区間と解除の見込みは、道路管理者の発表で確かめてください。 本記事は上記の公式ページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0774)についてのご相談はこちらから。
