前回はkitacaエリアの運転状況だったので、今回は各駅運行情報のjsonの仕様を分析します。
独自研究を含んでおり、内容が正確ではない可能性があります。
誤りがありましたら、コメント等で報告をお願いします。
JR北海道の運行情報の種類
JR北海道の運行情報の種類
JR北海道の運行情報ページは、jsonを使用して表示しています。
また、3種類に分かれています。
列車運行情報
今日と明日の運行情報をエリア(路線)ごとに示してくれます。
事前に決まっている運行状況(大雪による減便等)や大幅な遅れ(30分以上)、運休(故障・事故等)でない限り更新されません。
https://www3.jrhokkaido.co.jp/webunkou/index.html
各駅運行情報
今日と明日の運行情報を駅ごとに示してくれます。
運休・部分運休を示してくれますが、列車の遅れは反映されません。
https://www3.jrhokkaido.co.jp/webunkou/stationlist.html
Kitacaエリア(札幌近郊)列車運転状況
路線ごとではなく各列車ごとの運転状況を示してくれます。
ただし、Kitacaエリア(小樽〜苫小牧・岩見沢間、学園都市線の札幌近郊地域)のみと限られています。
各駅運行状況 jsonの仕様
運行状況ページでは主に2種類のjsonを組み合わせて表示しているようです。
core.json
札幌駅(駅番号:091)の場合
今日と明日の方面別の時刻表が載っています。
駅ごとにURLが異なり、駅番号が必要です。
URLの形が、https://www3.jrhokkaido.co.jp/webunkou/data/timetable/core/(駅番号)_core.json となっています。
駅番号は3桁の半角数字で、eki_master.json から取得できます。
そのため、札幌駅の場合(駅番号:091)は https://www3.jrhokkaido.co.jp/webunkou/data/timetable/core/091_core.json となっています。
jsonは、以下のような構造になっています。
├── today
│   ├── datatext //日付 M/D
│   └── timetable(路線・方面別に分かれています)
│       ├── rosen //路線
│       ├── homen //方面
│       └── trains(列車ごとに分かれています)
│           ├── cbango       //運用番号
│           ├── hour         //発車時
│           ├── min          //発車分
│           ├── name         //列車名
│           ├── type         //列車種別(数字)
│           ├── typeText     //列車種別(文字列)
│           ├── typesingle   //列車種別(一文字)
│           ├── shaTime      //発車時刻
│           ├── shuEki       //終着駅
│           ├── shuEkiSimple //終着駅(一文字)
│           └── ryosu        //両数
└── tomorrow
   (以下略)
trainsの中身は下のようになっています。
{
  "cbango": "3827M",
  "hour": "09",
  "min": "10",
  "name": "エアポート85号",
  "type": "2",
  "typeText": "快速",
  "typeSimple": "快",
  "shaTime": "09:10",
  "shuEki": "小樽",
  "shuEkiSimple": "小",
  "ryosu": 6
}
また、typeは ressha_type_master.json より、8種類に分かれています。
分類は以下の通りです。
| key | value | 
|---|---|
| 1 | 特急 | 
| 2 | 快速 | 
| 3 | 普通 | 
| 4 | 北海道新幹線 | 
| 5 | 特別快速 | 
| 6 | ライナー | 
| 7 | 臨時列車 | 
| 8 | 快速(札幌〜手稲・小樽間普通) | 
now.json
最新の運転状況が載っています。
駅ごとにURLが異なり、駅番号が必要です。
URLの形が、https://www3.jrhokkaido.co.jp/webunkou/data/timetable/now/(駅番号)_now.json となっています。
駅番号は3桁の半角数字で、eki_master.json から取得できます。
そのため、札幌駅の場合(駅番号:091)は https://www3.jrhokkaido.co.jp/webunkou/data/timetable/now/091_now.json となっています。
jsonは以下のような構造になっています。
├── time    //アクセス時刻
├── timeEn  //アクセス時刻(英語)
├── timeTc  //アクセス時刻(中国語)
├── timeSc  //アクセス時刻(中国語)
└── timeKr  //アクセス時刻(韓国語)
    ├── today
    │   ├── cbango          //運用番号
    │   ├── status          //状態コード
    │   ├── statusDetail    //状態
    │   ├── statusDetailEn  //状態(英語)
    │   ├── statusDetailSc  //状態(中国語)
    │   ├── statusDetailTc  //状態(中国語)
    │   └── statusDetailKr  //状態(韓国語)
    └── tomorrow(以下略)
core.jsonとは違い、列車が方向別に分かれていません。
運用番号がキーとなっています。
列車が運休になった場合、jsonは以下のような表示になります。
{
  "cbango": "71D",
  "status": 0,
  "statusDetail": "全区間運休 (札幌~網走 間)",
  "statusDetailEn": "All sections cancelled (between Sapporo and Abashiri)",
  "statusDetailSc": "全区间停驶 (札幌~网走 之间)",
  "statusDetailTc": "全區間停駛 (札幌~網走 之間)",
  "statusDetailKr": "전 구간 운행 중지 (삿포로~아바시리 구간)"
}
通常時、status は 1 になっていますが、運休時は 0 になります。
編集後記
今回は、各駅運行情報のjsonの構造について分析しました。
kitacaエリア運転情報と違い、遅れが表示されませんが、運用番号・両数が分かるのが特徴です。