2011年3月21日

緊急地震速報を使って何か作りたい時の情報ソース

自分が作ってるものにも緊急地震速報機能を付けておくと備えあれば憂いなしかなーとか思ったので、ちょっと緊急地震速報について調べた。とはいえあんまり内容読まずに流し読み程度なんだけども。

http://www.seisvol.kishou.go.jp/eq/EEW/kaisetsu/eew_naiyou.html
  • 高度利用者向けの緊急地震速報
  • 一般向けの緊急地震速報
緊急地震速報はこの2種類があるようで、高度利用者向けの方は精度が低い状態でもとりあえず通知した上でどんどん修正していって精度を上げていき、一般向けのものは「地震波が2点以上の地震観測点で観測され、最大震度が5弱以上と予測された場合」に通知するらしい。一般向けのも続報が来る場合もあるようだ。
一般向けには混乱の原因になるからある程度信頼できる状態で流そう、ということかなと思う。

Twitter には緊急地震速報を流してくれる @eew_jp という素晴らしいアカウントがある(配信している方はなまず速報も開発している @ayunyan 氏)。
「第1報以降は投稿していませんので各投稿のリンク先でご確認ください」という説明文を見たとき「第1報」というのが高度利用者向けの緊急地震速報における第1報のことかと思ったのだが、2011年3月11日に発生したマグニチュード9.0の地震に関する緊急地震速報での配信データを確認する限りそうではないっぽい。

高度利用者向け緊急地震速報の第1報と思われるのは以下のもの。恐ろしいことにこの時点では最大予測震度が1だ。
http://quake.twiple.jp/quake/view/20110311144640
コード番号 発信時刻 地震発生からの経過時間 北緯 東経 震源地 震源の深さ マグニチュード 最大震度
1 14:46:45 28秒 38.2 142.7 宮城県沖 10km M4.3 震度1

@eew_jp から配信された内容は以下のとおり。
http://twitter.com/eew_jp/status/46085090387828736
緊急地震速報 2011/03/11 14:46頃 三陸沖でマグニチュード8.1の地震が発生しました。予想される最大震度は6。 #earthquake

テレビで地震がきた時の話を聞いた限りでは、携帯などへの緊急地震速報の通知も行われていたようだ。
@eew_jp が出しているのは一般向けの緊急地震速報ぐらい信頼できるレベルのもので、一般向けの緊急地震速報とは違い震度3以上のものを通知してくれるが、続報を流すと Twitter の仕組み上混乱の元と成り得るので @eew_jp からは配信しませんよ、ということじゃないかと思った。
2011.05.06 追記 ----
配信の基準になってるのはよくわからないものの、ツイートとして流された「マグニチュード8.1」というのが高度利用者向け緊急地震速報のデータとして飛んできたのは第14報と最終報だけで、この地点までくるとさすがに地震波が2点以上の地震観測点で観測されてるだろうと思う(観測点の数は「震央/震源/マグニチュードの確からしさ」のデータを見ればわかる部分だと思われる)。
少なくとも最初に震度3以上になっている第2報の時点ではツイートされなかったことは間違いないだろうし、ツイートするプログラムを自分が書くとして続報を流さないようにしようとするなら最終報を出すことを最初に考えるだろうと思うので(特にこの地震が来ていない頃だと速報性はそんなに重要視しなかったと思う)、最終報だとすると「一般向け緊急地震速報ぐらい信頼できるレベル」としてもいいかなと思ったのでそう書いていた。
ただ当時地震が起きたタイミングからこの記事を書くまでの間にツイートの仕様が変化している可能性は十分にあって、最近見てる限りでは @eew_jp は最終報が出るより前にツイートしているようなので(最終報と違うデータが飛んできているから)、現状の仕様が当時と変わっているとしたら「一般向け緊急地震速報ぐらい信頼できるレベル」ではないかも知れません(「震央/震源/マグニチュードの確からしさ」のデータを見ているかどうか次第ということになるんじゃなかろうか)。
全部推測ですけど。
----

地震の影響で Google Chrome 用のエクステンションでも緊急地震速報を通知するものが出始めた。

https://chrome.google.com/extensions/detail/pebgngldogenhmnokpncolbajkelhjba?hl=ja
https://chrome.google.com/extensions/detail/bcepdinmmfbpheociaalfkhbcpekbdbc?hl=ja

前者後者も情報ソースは @eew_jp のようだ。
前者は Streaming API で Twitter からリアルタイムに受け取った情報をさくらの VPS 上で動いている WebSocket サーバを経由してユーザへ配信している模様。
後者はサイトと書いてあるので @eew_jp 公式の API(今は見れない模様)を使っているのかも知れない。こちらは eew_jp にかける負荷が大きそうだ。
ユーザへは GAE の Channel API で配信している模様。ただし通知が遅い上に通知ウィンドウにAmazonのバナー付き

GAE だけど Channel API ではなかったようです。(はてブのコメント参照)


「興味がある方はご連絡ください」という旨の文章と共に @eew_jp が提供する Streaming API もあったのだが、今現在 API 紹介ページごと見れなくなっているところを見るとアクセスが多すぎるから一旦伏せたのかも知れない。

他に Web 上から拾える緊急地震速報のソースとしては The Last 10-Second や、緊急地震速報 フレッツタイプというのもある模様。ただしこれらはツールなどの開発者にとっては優しくない。普通に使うにはいいものだと思う。
その他 Signal Now Express が今回の地震に合わせて急遽公開されていた。ただちょっと試してみたらこれは高度利用者向けの緊急地震速報の第一報でも通知してくるものの最終報まで随時更新されるわけではないので通知は早いけど情報の正確性がちょっと不安だ。

また、ちょっと別のアプローチとして、格安な緊急地震速報受信機が採用している方法と同じ「ラジオの音声から緊急地震速報のチャイムを検出する」という方法もありそう。
現状 NHK のサイトには NHK ラジオ第1 がストリーミング受信できるので緊急地震速報がきた瞬間を捕まえることぐらいはできそう。もちろんテキスト情報は一切取れないので流用するにしても情報ソースとしては弱いけど。
検出処理の手間の割に取り出せる情報量を考えると開発コスト的にも処理コスト的にも微妙。
まあでも下手にオオカミ少年になってしまうよりは詳細な情報が一切わからないぐらいでもいいのかも、とはちょっと思う。
現在は NHK ラジオ第1 のライブストリーミングは終了している模様(2011.05.06 追記)。そういえばその後再開されてました(2012.01.19 追記)。

現実的な選択肢としてはやはり @eew_jp に頼るのが簡単で良いデータを貰えそうだ。
でもみんなが @eew_jp のデータを Twitter の Streaming API で取ってくるみたいな状況になると SPOF もいいところなので、もっと色々なところから同じようなデータが取れるようになるともっといいなあと思う。

俺にそういう才能があれば更にいいなあと思う。

2011.04.11 追記 ----

@ka23japan@yurekuru@quake_alert@clbot_eew など、調べていると色々情報ソースとして使えそうな Twitter アカウントがあるのがわかった。特に一番最後に挙げた @clbot_eew は高度利用者向け緊急地震速報の全データが大量に取れるようになっていて、外部ツールにとってもかなり役立つと思われる(データソースはOCN IPv6)。
ただしテスト中とも書かれているし恐らくそんなに大規模にアクセスされることは想定していないと思うので、勝手に使うにしても相手のサーバに迷惑が掛からないレベルでアクセスするようにした方がよさそうだ。
(自分が設置しているサーバからのみアクセスするようにするなど)

SignalNowExpress が渡してくるデータ

SignalNow Express のタスクトレイの右クリックメニューにはログ書出し機能があり、ここに受信したデータについてもログが残されていた。
ログを見る限りでは高度利用者向け緊急地震速報のデータのうち SignalNowExpress で実際に表示に使うマグニチュードや震央の緯度経度、発生時刻や震源の深さに関する情報などはきているものの、着ていないデータも少なくないようだ。
合わせて使われていないデータも一部受信していて、例えばエリアコードと思われるデータが後ろに付けられてくる。ただしエリアコード以上の情報がないようにも思える。
また、画面表示時は最初のデータしか使っていないが実際には最終報までちゃんと受信はしているようなので、今後クライアントソフトが改善されるとカウントダウン中にマグニチュードなどの表示が更新されるようになるのかもしれない。

@yurekuru のツイート(2011.05.06 追記)

ゆれくるコールの開発元のアールシーソリューション株式会社は予報業務許可事業者で、@yurekuru から高度利用者向け緊急地震速報のデータを読みやすくテキスト化したものを第1報から最終報まで全てツイートしてくれている(どうやらキャンセル報は出ないっぽいけど。あと SignalNow Express をだしているストラテジー株式会社は予報業務許可事業者ではないようだけど、SignalNow を出しているエヌ・エス・シー株式会社は予報業務許可事業者らしい。ストラテジー株式会社の名前で SignalNow Express 上で独自の予測データを表示しても特に問題ないんだろうか? 難しい)。
@yurekuru のツイートを Twitter の StreamingAPI で受信すると、そこそこ速い速度で順次データが受信できる(あんまり連続でツイートがあると順番が入れ替わることがあるのでそこだけ注意が必要)。
以前作ったチャットでこのツイートのデータを表示してみたりしている。
特に難しいデータの加工などはしていなくて、読みやすいように改行入れたりとかしてる程度。
Clip to Evernote