この記事はKMC Advent Calendar 2019 23日目の記事です。
昨日の記事はnonamea774による「RFCを読もう 〜 DNS編 〜 - rebuild-kitashirakawa」でした。
今回は、2013年の頭に書いた気象庁の防災情報XML受信のアップデートを書きます。
www2.hatenadiary.jp
防災情報XMLの使用例
色んな使い方が考えられますし、いろんな用例がありますが、わたしはKMCのSlackに気象庁の防災情報から地震情報を拾って流すbotを走らせています。
緊急地震速報と震度に関する情報をだらだらと流しています。
緊急地震速報について
Weathernewsの個人向け緊急地震速報The Last 10-Secondサービスで配信されているデータを受信しています。受信コードはむかし書いたIRCに流すbotを改造してincoming webhookでSlackに流してます。
一時期OCN IPv6のマルチキャストで漏れるやつも見てましたがそっちが先に死んでしまい、結局WNIに帰ってきました。
www2.hatenadiary.jp
震度に関する情報
気象庁の配信する防災気象情報XML配信を取ってきています。当初はWebSubによるPush配信を取ってきていましたが、2020年8月末でのサービス終了がアナウンスされたのでfeedをフェッチする形に書き換えました。
なんでnodejsって感じですけど、仕事でC#のasync/awaitをガリガリ書いていた時期に、ふと書きたくなってnodejsにもasync/awaitあるじゃんとnodejsで書きました。はじめてのjsなのであれ。
スクショを見るとわかりますが、地震の地図はtenki.jpの地震情報をそのまま引っ張ってきています。tenki.jpの地震情報ページはog:image(OGP画像)が地震情報になっていて共有しやすいので便利です。XMLには地域情報が入ってはいますが、気象庁独自の地域区分による地域情報なのでちゃんと地図色塗りするのはちょっと大変。
eleclog.quitsq.com
ちなみに、Polling配信ですがWebSub配信より30秒ぐらい遅れるようです。まぁ遅れるのはいいんですけど、WebSub配信は受け取ったものをそのまま流せる一方でPolling配信だと自分で差分を取るためにどこかへ状態を置かなきゃいけないのが大変ですね。Cloud Functionsでサーバレスにしようと書いてる途中でWebSub配信終了アナウンスが来て悲しみ。
Polling受信についてはこの記事も参考になります。
KMC におけるbot雑感
KMCのSlackでincoming-webhookのintegration見たら100越えててbot好き感が溢れています。この記事を書いている今この瞬間も、botを作ってる発言が流れていました。
どんなbotが走ってるのかを見ると、計算機から京阪電車など様々な死活監視のログが流れていたり、コンテンツ公式Twitterの発言が流れていたり、飯屋サジェストされたり。情報収集系が多いですね。
IRCの頃からいろんなbotがあって、ニュース速報が流れていたり、ダイスを振ったり、S式を評価するbotなんてのもありました。ダイスを振るbotは4914304D4194304など異常に面の多いダイスを大量に降るリクエスト、S式を評価するbotは終了しない式を投入されて沈黙していました。
知らない人から異常な入力をされると恐怖しかないですが、知ってる人から異常な入力をされるとあんまり怖くない(要出典)ので、bot力を鍛える場所としてKMCは良いところですね。