気象特別警報・警報・注意報のTwitter bot
気象庁が実証実験として行っている、気象庁防災情報XMLのPubSubHubbubによる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分程度の遅延が発生しています。
なお、当botがTwitterに投稿する情報の範囲は次の通りです。
注意報
大雨注意報、大雪注意報、風雪注意報、雷注意報、強風注意報、波浪注意報、融雪注意報、洪水注意報、高潮注意報、濃霧注意報、乾燥注意報、なだれ注意報、低温注意報、霜注意報、着氷注意報、着雪注意報
警報
暴風雪警報、大雨警報、洪水警報、暴風警報、大雪警報、波浪警報、高潮警報
特別警報
暴風雪特別警報、大雨特別警報、暴風特別警報、大雪特別警報、波浪特別警報、高潮特別警報
※ 河川洪水、土砂災害、地震、津波、噴火等の情報は対象外です。
気象庁防災情報XML配信の仕組み
XML形式の防災情報を、push方式のPubSubHubbubプロトコルにより、少ない遅延で配信しています。
PubSubHubbubはGoogleのエンジニアが考案した、publisher-hub-subscriberモデルのデータ配信のプロトコルです。情報提供者(publisher)がhubにデータを送信するとすぐに購読者(subscriber)に伝える仕組みで、最近はブログの更新情報を検索サイトに速やかに伝えるため等に使われています。
気象庁防災情報XML(実証実験)においては、次のような構成となっています。
- publisher - 気象庁
- hub - Google Alert Hub (いくつかの国の気象情報等を配信している)
- subscriber - 登録された受信者(含、当システム)
システムの構成
さくらのVPS(CentOS6)の上で稼働する、次の2つのdockerコンテナにより構成されています。
- PuSH受信(PubSubHubbubのsubscriber)、詳細情報XMLを取得
- Twitter投稿
2つのコンテナのイメージは同一で、CentOS6にnginx, Perl-FastCGI をインストールしたものです。
各コンテナ上で起動されるperl cgiによりそれぞれの異なる機能が提供されています。
今回プログラムを作成するにあたってPubSubHubbubの情報を検索をましたが、 publisherの情報ばかりヒットし、必要とするsubscriberの情報は少なく、その中でもperl cgiを使ったものにはなかなか出会えませんでした。
その数少ない perl cgi による subscriber についての記事の中の下記を、参考にしました。(・◇・)ほっほ さんありがとうございます。
気象庁の防災情報XMLを受信するぞ - (。・ω・。)ノ・☆':*;':*