Skip to content

Latest commit

 

History

260 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

emergency_dispatch

GitHub commit activity GitHub License GitHub code size in bytes

全国の緊急車両出動情報を統一されたフォーマットで提供する

提供される緊急車両出動情報は公式なものではなく、このデータを基に消防本部等へ連絡を行うことは避けられたい。

フォーマット

出動情報はdistディレクトリ以下へ、基本的に市区町村単位で生成されるが、一部事務組合などの場合はこれに限らない。

市区町村等は6桁の地方公共団体コードによって区別される。例えば札幌市の地方公共団体コードは011002であり、その出動情報はdist/011002.jsonに出力される。

各JSONファイルは、UTF-8形式である。

{
    "disasters": [
        {
            "address": "例示県例示市なんちゃら1丁目", # 都道府県から始まる住所
            "time": "01:23", # 出動時刻(ソースとなる機関によって異なる場合がある)
            "type": "火災" # 出動種別
        },
        {
            "address": "例示県例示市大字ほにゃらら234",
            "time": "00:12",
            "type": "航空隊支援"
        } # このように複数の出動情報が存在する場合がある。何も無い場合は空配列が返される。
    ],
    "jisx0402": "999999", # 6桁の地方公共団体コード
    "source": [
        {
            "name": "例示市消防本部", # ソースとなる機関名
            "url": "https://example.com/index.html" # ソースページ
        }
    ]
}

あくまで統一されているのはフォーマットであって、使用される語彙は統制されていない。例えばdisasters.typeは、同様の事象であっても「火災」であったり「林野火災」であったり「大規模火災」であったりと、ソースとなる機関によって異なる表現がなされることがあり得る。データを活用される際は注意していただきたい。

対応市区町村

  • 北海道
    • 札幌市(札幌市消防局) - 011002
    • 函館市(函館市消防本部) - 012025
    • 苫小牧市(苫小牧市消防本部) - 012131
    • 江別市(江別市消防本部) - 012173
    • 千歳市(千歳市消防本部) - 012246
    • 恵庭市(恵庭市消防本部) - 012319
    • 北広島市(北広島市消防本部) - 012343
  • 青森県
    • つがる市(つがる市消防本部) - 022098
  • 宮城県
    • 大崎市(大崎地域広域行政事務組合消防本部) - 042153
    • 色麻町(大崎地域広域行政事務組合消防本部) - 044440
    • 加美町(大崎地域広域行政事務組合消防本部) - 044458
    • 涌谷町(大崎地域広域行政事務組合消防本部) - 045012
    • 美里町(大崎地域広域行政事務組合消防本部) - 045055
  • 山形県
    • 酒田市(酒田地区広域行政組合消防本部) - 062049
    • 天童市(天童市消防本部) - 062103
    • 庄内町(酒田地区広域行政組合消防本部) - 064289
    • 遊佐町(酒田地区広域行政組合消防本部) - 064611
  • 福島県
    • 福島市(福島市消防本部) - 072010
    • 郡山市(郡山地方広域消防組合消防本部) - 072036
    • 田村市(郡山地方広域消防組合消防本部) - 072117
    • 三春町(郡山地方広域消防組合消防本部) - 075213
    • 小野町(郡山地方広域消防組合消防本部) - 075221
  • 茨城県
    • 土浦市(土浦市消防本部) - 082031
    • 茨城町(茨城町消防本部) - 083020
  • 栃木県
    • 宇都宮市(宇都宮市消防局) - 092011
    • 足利市(足利市消防本部) - 092029
  • 埼玉県
    • 川口市(川口市消防局) - 112038
    • 所沢市(埼玉西部消防局) - 112089
    • 飯能市(埼玉西部消防局) - 112097
    • 東松山市(比企広域消防本部) - 112127
    • 狭山市(埼玉西部消防局) - 112151
    • 入間市(埼玉西部消防局) - 112259
    • 坂戸市(坂戸・鶴ヶ島消防本部) - 112399
    • 鶴ヶ島市(坂戸・鶴ヶ島消防本部) - 112411
    • 日高市(埼玉西部消防局) - 112429
    • 毛呂山町(西入間広域消防組合消防本部) - 113263
    • 越生町(西入間広域消防組合消防本部) - 113271
    • 滑川町(比企広域消防本部) - 113417
    • 嵐山町(比企広域消防本部) - 113425
    • 小川町(比企広域消防本部) - 113433
    • 吉見町(比企広域消防本部) - 113476
    • 鳩山町(西入間広域消防組合消防本部) - 113484
    • ときがわ町(比企広域消防本部) - 113492
    • 東秩父村(比企広域消防本部) - 113697
  • 千葉県
    • 千葉市(千葉市消防局) - 121002
    • 銚子市(銚子市消防本部) - 122025
    • 市川市(市川市消防局) - 122033
    • 館山市(安房郡市広域市町村圏事務組合消防本部) - 122050
    • 木更津市(木更津市消防本部) - 122068
    • 茂原市(長生郡市広域市町村圏組合消防本部) - 122106
    • 成田市(成田市消防本部) - 122114
    • 佐倉市(佐倉市八街市酒々井町消防組合消防本部) - 122122
    • 東金市(山武郡市広域行政組合消防本部) - 122131
    • 旭市(旭市消防本部) - 122157
    • 柏市(柏市消防局) - 122173
    • 勝浦市(夷隅郡市広域市町村圏事務組合消防本部) - 122181
    • 市原市(市原市消防局) - 122190
    • 鴨川市(安房郡市広域市町村圏事務組合消防本部) - 122238
    • 君津市(君津市消防本部) - 122254
    • 富津市(富津市消防本部) - 122262
    • 四街道市(四街道市消防本部) - 122289
    • 袖ケ浦市(袖ケ浦市消防本部) - 122297
    • 八街市(佐倉市八街市酒々井町消防組合消防本部) - 122301
    • 印西市(印西地区消防組合消防本部) - 122319
    • 白井市(印西地区消防組合消防本部) - 122327
    • 富里市(富里市消防本部) - 122335
    • 南房総市(安房郡市広域市町村圏事務組合消防本部) - 122343
    • 匝瑳市(匝瑳市横芝光町消防組合消防本部) - 122351
    • 香取市(香取広域市町村圏事務組合消防本部) - 122360
    • 山武市(山武郡市広域行政組合消防本部) - 122378
    • いすみ市(夷隅郡市広域市町村圏事務組合消防本部) - 122386
    • 大網白里市(山武郡市広域行政組合消防本部) - 122394
    • 酒々井町(佐倉市八街市酒々井町消防組合消防本部) - 123013
    • 栄町(栄町消防本部) - 123293
    • 神崎町(成田市消防本部) - 123421
    • 多古町(香取広域市町村圏事務組合消防本部) - 123471
    • 東庄町(香取広域市町村圏事務組合消防本部) - 123498
    • 九十九里町(山武郡市広域行政組合消防本部) - 124036
    • 芝山町(山武郡市広域行政組合消防本部) - 124095
    • 横芝光町(匝瑳市横芝光町消防組合消防本部) - 124109
    • 一宮町(長生郡市広域市町村圏組合消防本部) - 124214
    • 睦沢町(長生郡市広域市町村圏組合消防本部) - 124222
    • 長生村(長生郡市広域市町村圏組合消防本部) - 124231
    • 白子町(長生郡市広域市町村圏組合消防本部) - 124249
    • 長柄町(長生郡市広域市町村圏組合消防本部) - 124265
    • 長南町(長生郡市広域市町村圏組合消防本部) - 124273
    • 大多喜町(夷隅郡市広域市町村圏事務組合消防本部) - 124419
    • 御宿町(夷隅郡市広域市町村圏事務組合消防本部) - 124435
    • 鋸南町(安房郡市広域市町村圏事務組合消防本部) - 124630
  • 神奈川県
    • 横浜市(横浜市消防局) - 141003
    • 川崎市(川崎市消防局) - 141305
    • 横須賀市(横須賀市消防局) - 142018
    • 三浦市(横須賀市消防局) - 142107
  • 新潟県
    • 新潟市(新潟市消防局) - 151009
    • 長岡市(長岡市消防本部) - 152021
    • 燕市(燕・弥彦総合事務組合消防本部) - 152137
    • 弥彦村(燕・弥彦総合事務組合消防本部) - 153427
  • 石川県
    • 金沢市(金沢市消防局) - 172014
    • 小松市(小松市消防本部) - 172031
  • 長野県
    • 松本市(松本広域消防局) - 202029
    • 塩尻市(松本広域消防局) - 202151
    • 安曇野市(松本広域消防局) - 202207
    • 麻績村(松本広域消防局) - 204463
    • 生坂村(松本広域消防局) - 204480
    • 山形村(松本広域消防局) - 204501
    • 朝日村(松本広域消防局) - 204510
    • 筑北村(松本広域消防局) - 204528
  • 愛知県
    • 名古屋市(名古屋市消防局) - 231002
    • 春日井市(春日井市消防本部) - 232068
  • 三重県
    • 津市(津市消防本部) - 242012
    • 鈴鹿市(鈴鹿市消防本部) - 242071
    • 亀山市(亀山市消防本部) - 242101
  • 滋賀県
    • 大津市(大津市消防局) - 252018
  • 京都府
    • 京都市(京都市消防局) - 261009
  • 大阪府
    • 池田市(池田市消防本部) - 272043
    • 富田林市(大阪南消防組合) - 272141
    • 河内長野市(大阪南消防組合) - 272167
    • 柏原市(大阪南消防組合) - 272213
    • 羽曳野市(大阪南消防組合) - 272230
    • 藤井寺市(大阪南消防組合) - 272264
    • 東大阪市(東大阪市消防局) - 272272
    • 太子町(大阪南消防組合) - 273813
    • 河南町(大阪南消防組合) - 273821
    • 千早赤阪村(大阪南消防組合) - 273830
  • 兵庫県
    • 小野市(小野市消防本部) - 282189
  • 奈良県
    • 奈良市(奈良市消防局) - 292010
    • 生駒市(生駒市消防本部) - 292095
  • 鳥取県
    • 米子市(鳥取県西部広域行政管理組合消防局) - 312029
    • 倉吉市(鳥取中部ふるさと広域連合消防局) - 312037
    • 境港市(鳥取県西部広域行政管理組合消防局) - 312045
    • 三朝町(鳥取中部ふるさと広域連合消防局) - 313645
    • 湯梨浜町(鳥取中部ふるさと広域連合消防局) - 313700
    • 琴浦町(鳥取中部ふるさと広域連合消防局) - 313718
    • 北栄町(鳥取中部ふるさと広域連合消防局) - 313726
    • 日吉津村(鳥取県西部広域行政管理組合消防局) - 313840
    • 大山町(鳥取県西部広域行政管理組合消防局) - 313866
    • 南部町(鳥取県西部広域行政管理組合消防局) - 313891
    • 伯耆町(鳥取県西部広域行政管理組合消防局) - 313904
    • 日南町(鳥取県西部広域行政管理組合消防局) - 314013
    • 日野町(鳥取県西部広域行政管理組合消防局) - 314021
    • 江府町(鳥取県西部広域行政管理組合消防局) - 314030
  • 島根県
    • 松江市(松江市消防本部) - 322016
  • 広島県
    • 竹原市(東広島市消防局) - 342033
    • 東広島市(東広島市消防局) - 342122
    • 大崎上島町(東広島市消防局) - 344311
  • 山口県
    • 萩市(萩市消防本部) - 352047
    • 阿武町(萩市消防本部) - 355020
  • 徳島県
    • 徳島市(徳島市消防局) - 362018
  • 高知県
    • 高知市(高知市消防局) - 392014
    • 土佐市(土佐市消防本部) - 392057
  • 福岡県
    • 北九州市(北九州市消防局) - 401005
    • 福岡市(福岡市消防局) - 401307
    • 古賀市(粕屋北部消防本部) - 402231
    • 新宮町(粕屋北部消防本部) - 403458
  • 佐賀県
    • 佐賀市(佐賀広域消防局) - 412015
    • 多久市(佐賀広域消防局) - 412040
    • 小城市(佐賀広域消防局) - 412082
    • 神埼市(佐賀広域消防局) - 412104
    • 吉野ヶ里町(佐賀広域消防局) - 413275

このデータのうち、6桁の地方公共団体コードは、dist/list.jsonで配列として取得することが可能である。

全量フィード

ここの自治体の出動情報を取得した際に、全ての自治体をまとめたフィード(RSS 2.0)を生成するようにしている。dist/all_feed.xmlへ生成される。日付変換機構が不完全なため、使用する際は1日のずれが発生する場合があるが、留意して使用すること。

フィード生成時と比較して10分以上未来の時間を指している場合は前日と扱うようにしている。この機能は、動作しているマシンがJSTを使用していることを前提としている。そのうちちゃんと直す。

全量JSON

フィードと同様に、全ての自治体の出動情報をまとめたJSONファイルを生成しており、dist/all.jsonへ生成される。これは地方公共団体コードをキーとし、各地方公共団体内は6桁の地方公共団体コード.jsonと内容に差が無いように配慮している。また、 出動が無い地方公共団体は出力しないようにしている ことに留意すること。

運用・開発用情報

開発環境

開発を行うためにはRust環境を整える必要がある。Rustは公式サイトよりインストーラをダウンロードすることが可能である。

Rustの環境が整ったのであれば、適当な場所へとクローンを行い、cargo runを行うことによって開発・実行環境が整う。

git clone https://github.com/oageo/emergency-dispatch.git
cd emergency-dispatch
cargo run

パーサー

取得先によって条件が異なるため、src/parse以下にあるparse_(6桁の数字).rsによってそれぞれパースが行われている。6桁の数字は当該の地方公共団体コードとなっている。

デフォルト値について

HTTPリクエスト時に使用されるヘッダー値は、以下のようにデフォルト値が設定されている。

  • Host: HttpRequestConfig::new()の第1引数で指定した値
  • Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8"
  • Accept-Language: "ja,en-US;q=0.7,en;q=0.3"
  • Connection: "keep-alive"
  • Content-Type: "application/x-www-form-urlencoded"
  • User-Agent: ACCESS_UA定数で定義された値

これらのデフォルト値を変更する場合は、各パーサーファイル内でHttpRequestConfigの対応するメソッドを呼び出すことで上書き可能である。このデフォルト値そのものを変更する場合は、lib.rs内に定義されている

let config = HttpRequestConfig::new(HOST, GET_SOURCE)
    .with_accept("custom/accept")
    .with_accept_language("ja-JP")
    .with_connection("close")
    .with_content_type("application/json");

Shift_JISエンコーディング(内部的にはUTF-8に変換してから処理を行っています)が必要な場合は、.with_shift_jis(true)を追加する。

別ホストへリダイレクトされるURL(例: Googleスプレッドシートの公開URL)では、固定のHostヘッダーがリダイレクト先にも送られて取得に失敗するため、.without_host_header()を追加してHostヘッダーを送らないようにする。

中間証明書を送ってこないサーバー(例: 三重中央消防指令センター)は、実行環境によって証明書の検証に失敗する場合がある。Let's Encryptの証明書であれば、.with_extra_root_certificates(LETS_ENCRYPT_GEN_Y_CERTS)を追加して不足分を補う。この証明書はビルド時にbuild.rsがLet's Encryptの配布元から取得するため、ビルド環境にはインターネット接続が必要である(取得できなかった場合も警告を出してビルドは続行する)。

定期実行

Ubuntu環境において以下のような設定をすると定期的に実行できる。環境に合わせて適宜権限等の管理をする必要がある。

/opt/emergency-dispatch/run_edbot.sh

#!/bin/bash
export PATH="$HOME/.cargo/bin:$PATH"
cd /opt/emergency-dispatch
cargo run

/etc/systemd/system/edbot.service

[Unit]
Description=emergency-dispatchを実行

[Service]
ExecStart=/opt/emergency-dispatch/run_edbot.sh

/etc/systemd/system/edbot.timer

[Unit]
Description=15分ごとに実行

[Timer]
OnCalendar=*:0/15
Persistent=true

[Install]
WantedBy=timers.target

作者

oageo(Osumi Akari)

About

全国の緊急車両出動情報を統一されたフォーマットで提供する

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages