読者です 読者をやめる 読者になる 読者になる

気象特別警報・警報・注意報のTwitter bot

気象庁が実証実験として行っている、気象庁防災情報XMLPubSubHubbubによるPuSH通知を受信して、各地の気象特別警報・警報・注意報をTwitterに投稿するbotを作成しました(対象地域は少ないですけど、、、)。

 

仕様

ユーザが必要な情報のみ通知を受けられるように、市区町村毎の特別警報・警報・注意報別にアカウントを作成しました。

ユーザは、知りたい地域・気象情報種別のアカウントをフォローし、即時に知りたいものについては通知設定をすると便利です。

 

2015年8月現在、以下のアカウントが稼働しています。

 

地域注意報警報特別警報
東京都新宿区 @shinjuku_wa @shinjuku_ww @shinjuku_wew
東京都品川区 @shinagawa_wa @shinagawa_ww @shinagawa_wew
東京都葛飾区 @katsushika_wa @katsushika_ww @katsushika_wew
神奈川県横浜市 @yokohama_wa @yokohama_ww @yokohama_wew
Minato City, Tokyo (English) @minato_ewa @minato_eww @minato_ewew

 

今のところ、気象庁による防災情報の発表から投稿までは、2〜3分程度の遅延が発生しています。

なお、当botTwitterに投稿する情報の範囲は次の通りです。

注意報

大雨注意報、大雪注意報、風雪注意報、雷注意報、強風注意報、波浪注意報、融雪注意報、洪水注意報、高潮注意報、濃霧注意報、乾燥注意報、なだれ注意報、低温注意報、霜注意報、着氷注意報、着雪注意報

警報

暴風雪警報、大雨警報、洪水警報、暴風警報、大雪警報、波浪警報、高潮警報

特別警報

暴風雪特別警報、大雨特別警報、暴風特別警報、大雪特別警報、波浪特別警報、高潮特別警報


※ 河川洪水、土砂災害、地震津波、噴火等の情報は対象外です。

 

気象庁防災情報XML配信の仕組み

XML形式の防災情報を、push方式のPubSubHubbubプロトコルにより、少ない遅延で配信しています。

PubSubHubbubGoogleのエンジニアが考案した、publisher-hub-subscriberモデルのデータ配信のプロトコルです。情報提供者(publisher)がhubにデータを送信するとすぐに購読者(subscriber)に伝える仕組みで、最近はブログの更新情報を検索サイトに速やかに伝えるため等に使われています。

 

気象庁防災情報XML(実証実験)においては、次のような構成となっています。

  • publisher - 気象庁
  • hub - Google Alert Hub (いくつかの国の気象情報等を配信している)
  • subscriber - 登録された受信者(含、当システム)

 f:id:tsun226:20150815001522p:plain 

 

システムの構成

さくらのVPS(CentOS6)の上で稼働する、次の2つのdockerコンテナにより構成されています。

  1. PuSH受信(PubSubHubbubのsubscriber)、詳細情報XMLを取得
  2. Twitter投稿

2つのコンテナのイメージは同一で、CentOS6にnginx, Perl-FastCGI をインストールしたものです。

各コンテナ上で起動されるperl cgiによりそれぞれの異なる機能が提供されています。

 

f:id:tsun226:20150816205202p:plain

 

今回プログラムを作成するにあたってPubSubHubbubの情報を検索をましたが、 publisherの情報ばかりヒットし、必要とするsubscriberの情報は少なく、その中でもperl cgiを使ったものにはなかなか出会えませんでした。

その数少ない perl cgi による subscriber についての記事の中の下記を、参考にしました。(・◇・)ほっほ さんありがとうございます。

 

気象庁の防災情報XMLを受信するぞ - (。・ω・。)ノ・☆':*;':*