| name | jartic-traffic-jam-forecast |
| description | JARTIC (日本道路交通情報センター) が公開する渋滞「予測」データを取得する手順。ゴールデンウィーク・お盆・年末年始・行楽期の高速道路の渋滞予測、ピーク日時、◯◯祭りなどイベント周辺の一般道渋滞と迂回路を聞かれた際に使う。 `www.jartic.or.jp` の JSON を curl で取得し、路線名・年月・都道府県を `jq` で絞り込む。返るのは将来の予測であって現在の実況交通量ではない。今この瞬間の交通量・渋滞長を求められた場合はこの手順では取得できない。 |
JARTIC 渋滞予測取得
JARTIC が公開する渋滞「予測」データを取得する手順。高速道路の月別渋滞予測と、一般道のイベント周辺渋滞予測・迂回案内の 2 系統がある。
重要: これは予測であって実況ではない
返るデータはすべて将来の渋滞「予測」である。今この瞬間の交通量・渋滞長・通行止めではない。
- 「今の渋滞」「現在の所要時間」「リアルタイムの混雑」を求められた場合、この手順では取得できない。まず取得できない旨を明示し、断ったうえで、この skill で出せる範囲 (将来の渋滞予測) を代替として提示する。断るだけで終えない。代替は口頭の提案で止めず、当日を含む対象月を実際に取得して当日 (無ければ直近の該当日) の予測を提示する。当日分の予測窓が現在時刻より前しか無い場合も当日分の提示自体は維持し、経過済みである旨を添えたうえで、必要なら翌日以降の提示を提案する (提示を省いて翌日分に差し替えない)。別の日付窓が要るかはユーザに委ねる。
- 実況が必要なら別手段を案内する。代表例: JARTIC のリアルタイム交通情報マップ (https://www.jartic.or.jp/)、NEXCO 各社 (東日本・中日本・西日本) の渋滞・規制情報、Yahoo! 道路交通情報。いずれも予測ではなく実況を提供する。
- 提示する際は必ず予測である旨と対象期間 (年月・日付) を添える。実測値のように断定しない。
情報源 (エンドポイント)
ベースは https://www.jartic.or.jp。いずれも認証不要・追加ヘッダ不要で、素の curl で HTTP 200・application/json が返る (2026 年 6 月時点で確認)。
| パス | 中身 | 規模の目安 |
|---|
/d/service/trafficjam/highway.json | 高速道路の月別渋滞予測 (路線 × 年月 × 予測日・時間帯) | 約 4.5 MB |
/d/service/trafficjam/general.json | 一般道のイベント周辺渋滞予測・迂回案内 (都道府県別) | 約 15 KB |
/d/service/trafficjam/summary.json | 渋滞予測資料 (記者発表 PDF 等) の告知バナー。渋滞データ本体ではない。 | 約 1.5 KB |
- これらは明示的なオープンデータライセンスが確認できていない。取得結果の二次配布・公開は行わない。
highway.json は数 MB ある。パイプで丸読みせず一度ファイルへ保存し、jq で路線名・年月へ絞ってから読む (下記)。
1. 高速道路の渋滞予測 (highway.json)
取得とトップレベル構造
curl -sS 'https://www.jartic.or.jp/d/service/trafficjam/highway.json' -o highway.json
jq '{updateDate, minYearMonth, maxYearMonth, months: (.trafficJam|keys)}' highway.json
| キー | 意味 |
|---|
updateDate | データ更新日 (例 2026年6月9日)。提示時に添える。 |
minYearMonth maxYearMonth | 予測がカバーする年月の範囲 (例 2026-5 〜 2026-10)。範囲外は取得できない。 |
routeList | 路線一覧。routeId / name / directionUp / directionDown (端点名)。 |
trafficJam | 予測本体。trafficJam[年月][routeId] に directionUp / directionDown の配列。 |
年月キーは YYYY-M 形式 (月はゼロ埋めなし、例 2026-5 2026-10)。先に minYearMonth/maxYearMonth と .trafficJam|keys で対象月の存在を確認する。
対象月・対象日の決め方 (お盆・GW・年末年始)
口語の期間語は、まず対象の年月キーへ落とす。月をまたぐ期間は複数キーを見る。
- お盆: 8 月。
trafficJam["2026-8"] を見る。U ターン集中 (上り) はおおむね 8/11〜8/18、下り (出発側) は連休初日寄りにピークが出る。方向で窓がずれるので、上り下りどちらを問われたかで採用窓を変える。
- ゴールデンウィーク: 4 月末〜5 月上旬。月をまたぐので
2026-4 と 2026-5 の両方を見る。
- 年末年始: 12 月末〜1 月初旬。年と月をまたぐので両方の年月キーを見る。
- いずれも
minYearMonth〜maxYearMonth の範囲外なら「予測の提供対象外」として扱う (例: maxYearMonth が 2026-10 なら年末年始は範囲外)。
- 日付窓の取り方で結論が変わる場合 (月内最大か期間内最大か等) は、採用した窓を明示して提示するか、ユーザに日付範囲を確認する。憶測で 1 つの窓に決め打ちしない。
- 具体日まで絞るときは
hourlyTrafficjam[].date (例 8月18日 (日)) で比較する。ゼロ埋めなしの和文日付なので、test("6日") のような部分一致は 16日 26日 を巻き込む。日で絞るなら完全一致か境界つき正規表現を使う。
路線名から絞り込む
trafficJam の各エントリは routeName を自前で持つので、routeId を引かずに路線名で直接絞れる。指定年月・路線名 (部分一致) の予測を上り下りまとめて取り出す。
jq -c --arg m "2026-8" --arg r "東名" '
.trafficJam[$m] | to_entries[] | .value
| (.directionUp + .directionDown)[]
| select(.routeName | test($r))
' highway.json
test($r) は部分一致なので、東名 は 新東名 や 東名阪 も巻き込む。単一路線に確定したいときは select(.routeName == "東名高速道路") の完全一致か境界つき正規表現を使い、部分一致は下の候補引きに留める。
正式な路線名が分からなければ routeList で候補を引く。
jq -r '.routeList[] | select(.name | test("東名|東北")) | "\(.routeId)\t\(.name)"' highway.json
エントリのフィールド
trafficJam[年月][routeId].directionUp[] (下りは directionDown) の 1 要素が「ある区間・ある予測日 (または日グループ)」の渋滞予測。同一区間でも予測日ごとに別要素として並ぶ。
| キー | 意味 |
|---|
routeName direction | 路線名・方向 (上り / 下り)。 |
section | 区間 (例 横浜青葉IC→東京IC)。 |
timeZone | 渋滞が見込まれる時間帯 (例 06:00~17:00)。hourlyTrafficjam の時間窓と食い違うことがある。提示は timeZone を大枠、hourlyTrafficjam を実数として併記する。 |
peakDistance peakTime | ピーク時の渋滞長と時刻 (例 10km / 7時)。 |
bottleneck | 渋滞の先頭になりやすい地点 (例 東京IC付近)。 |
requiredTimeNormal | 平常時所要時間 (H:MM)。 |
requiredTimeTrafficjam | 渋滞時所要時間。 |
requiredTimeIncrease | 増加分。 |
cause | 渋滞要因。データ無しは ―。 |
hourlyTrafficjam | 予測日・時間帯別の渋滞長配列。{date, time, distance} (距離は km の数値)。time は 7時台 の単一時台と 7~8時台 のレンジの 2 形式がある。 |
「ピークはいつか」を答えるには、該当区間の複数エントリを跨いで hourlyTrafficjam[].distance を比較する。peakTime/peakDistance は各エントリ内の代表値であり、月内最大とは限らない。区間指定がない依頼では、方向内の全区間の hourlyTrafficjam を横断して比較する。判定は次の順で行う: (1) 対象窓 (お盆等) で日付を絞る → (2) 窓内の distance 最大を採る → (3) 同値が並ぶ場合は渋滞時間帯の長さで tie-break する (time のレンジをパースして時間数を数える。パースが煩雑なら同値エントリ数で代替してよい)。窓外に同値以上のピークがあれば補足として言及する。
口語の路線名 (「東名」等) が複数の正式名に部分一致する場合は、最短一致の路線 (「東名」なら東名高速道路) を主として扱い、近縁路線 (新東名等) の存在を一言添える。
路線だけ指定された依頼では方向別に全区間を提示してよいが、長距離路線で区間が複数の地方に散る場合は、想定エリア (例: 首都圏側か中京側か) の確認を促す一文を添える。
2. 一般道のイベント周辺渋滞予測 (general.json)
行楽期・祭事など特定イベント周辺の一般道渋滞予測と迂回案内。高速のような網羅的・恒常的データではなく、シーズンごとに対象イベントが入れ替わる。
構造
curl -sS 'https://www.jartic.or.jp/d/service/trafficjam/general.json' -o general.json
jq '{updateDate, prefsWithData: [to_entries[] | select(.value|type=="array" and length>0) | .key]}' general.json
トップレベルは updateDate と、都道府県別キー R01〜R47。各キーの値はイベント単位のオブジェクト配列 (該当無しは空配列)。updateDate がシーズンを反映するため古いことがある。古ければ「現在のイベントではなく前シーズンの予測」である旨を添える。
都道府県コード (R + JIS X 0401 2 桁)
R01 北海道 R02 青森 R03 岩手 R04 宮城 R05 秋田 R06 山形 R07 福島
R08 茨城 R09 栃木 R10 群馬 R11 埼玉 R12 千葉 R13 東京 R14 神奈川
R15 新潟 R16 富山 R17 石川 R18 福井 R19 山梨 R20 長野 R21 岐阜
R22 静岡 R23 愛知 R24 三重 R25 滋賀 R26 京都 R27 大阪 R28 兵庫
R29 奈良 R30 和歌山 R31 鳥取 R32 島根 R33 岡山 R34 広島 R35 山口
R36 徳島 R37 香川 R38 愛媛 R39 高知 R40 福岡 R41 佐賀 R42 長崎
R43 熊本 R44 大分 R45 宮崎 R46 鹿児島 R47 沖縄
読み方
都道府県で引く、またはイベント名で全国横断検索する。
jq '.R13' general.json
jq '[.[] | select(type=="array") | .[] | select(.destination | test("さくら"))]' general.json
イベントによっては迂回データを持たず routeDetailList の各フィールドが ― のことがある。迂回路の提示が目的なら、detourSection が ― でないイベントを先に絞ってから選ぶ。
jq -c '[.[] | select(type=="array") | .[] | select(any(.routeDetailList[]; .detourSection != "―"))]' general.json
イベント 1 件のフィールド。
| キー | 意味 |
|---|
destination | 目的地・イベント名 (例 弘前公園 弘前さくら祭り)。 |
startPoint | 渋滞の起点となる交差点等。 |
targetDays | 対象期間 (例 4月17日(金)~5月5日(火))。 |
routeDetailList | 経路別の予測・迂回案内の配列 (下記)。 |
routeDetailList[] の各要素。
| キー | 意味 |
|---|
routeName | 道路名 (例 (国)7 (県)260石川百田線)。 |
direction | 方向。 |
timeZone | 渋滞が見込まれる時間帯。 |
peakLength peakTime | ピーク渋滞長とその通過所要時間。 |
requiredTimeNormal | 平常時所要時間。 |
detourSection | 迂回路の区間。 |
detourLength | 迂回路の距離。 |
comment | 迂回手順等の補足。 |
comment は迂回手順だけでなく目的地・前提 (例: 特定の駐車場へ至る経路) を含むことがある。前提ごと提示し、目的地が異なるユーザに汎用の迂回路と誤認させない。
3. 告知バナー (summary.json)
渋滞データ本体ではなく、渋滞予測資料 (記者発表 PDF 等) への告知バナー。
visibility が false のときサイト上で非表示。データが無い・期限切れの状態でも返ることがある。
summaryText は HTML 断片で、5 のような数値文字参照 (全角数字等) を含む。提示時はデコードし、タグを除く。
file は資料 PDF のファイル名。渋滞の予測値そのものは含まない。補足情報としてのみ扱う。
データの鮮度と 0 件の扱い
- 取得結果には必ず
updateDate を添える。general.json はシーズン外だと古い・空になりやすい。updateDate が新しいのに全都道府県が空の場合はシーズン間の掲載空白であり、「現時点で掲載イベントなし」と答え、対象イベントのシーズンが近づいた時点での再取得を提案する。
highway.json で対象月が 0 件 (trafficJam[年月] が無い、または路線が空) のときは、minYearMonth/maxYearMonth で範囲を確認し、範囲外なら「予測の提供対象外」と答える。範囲内で空なら、その路線・月に渋滞予測が立っていない (=渋滞予測なし) と解する。
- 路線名・イベント名でヒットしない場合は
routeList の name 一覧、または general.json の destination 一覧を提示して綴り・名称を確認する。憶測で別路線を当てない。
注意
- データはすべて予測であり、実測・実況ではない。気象・事故等で実際の渋滞は予測と乖離する。断定せず予測として伝える。
- これらは明示的なオープンデータライセンスが確認できていない。取得した生データの二次配布・公開はしない。
- 数 MB の
highway.json をエージェントへ丸読みさせない。jq で年月・路線へ絞ってから読む。
- 一時ファイルは絶対パスで指定し (例
-o /tmp/highway.json)、bash の作業ディレクトリに依存させない。後続の jq も同じ絶対パスを参照する。使用後に削除する。実行環境によっては/tmp がコマンド呼び出し間で永続しないことがあるため、後続の jq の前にファイルの存在を確認し、無ければ再取得する。