緊急地震速報とIIJ

IIJは、4月1日に緊急地震速報を配信するtwitterアカウント@quake_alertを開設しました。また、5月6日からは、英語版@quake_alert_en、フランス語版@quake_alert_fr、韓国語版@quake_alert_krも開設しています。

そもそもIIJがどうして緊急地震速報を配信しているの?という疑問お持ちの方もいらっしゃるのではないでしょうか。IIJは2007年からIIJのお客様向けに気象庁が発表する「緊急地震速報」を再配信するサービスを提供しています。このサービス用に、IIJには気象庁(気象業務支援センター)と専用線で結ばれた配信設備があり、緊急地震速報を簡単に扱える環境を持っていました。

そして、3月11日の地震発生後。IIJも何か世間のお役に立てることはないかと考え、いくつかの取り組みを実施することになりました。そういった流れの中で、緊急地震速報を扱っていた担当者がtwitterに速報を投稿することを思いついたのです。とはいえ、速報を投稿するためのプログラムなど用意していませんでしたので、急遽新規にプログラムを開発し、4月1日から正式に公開となりました。

ということで、今回はIIJが配信している緊急地震速報ってどんなものなのかを紹介してみようと思います。この記事は、緊急地震速報の担当者(twitter botも担当)のアプリケーションサービス部 岩永さんと一緒に執筆しています。

緊急地震速報とは

まず最初に、IIJがお客様向けに配信している、緊急地震速報について紹介しましょう。前述の通り2007年からIIJはインターネット接続サービス(専用線・フレッツ等)をご利用の法人に、緊急地震速報を無料で配信しています。

緊急地震速報(気象庁Webより引用)
緊急地震速報(気象庁Webより引用)

緊急地震速報とは、地震による被害の軽減を目的として気象庁がとりまとめて発表しているものです。日本全国に配置されている地震計の情報を集約し、どこかで地震が発生した際には可能な限り早く(できれば地震が到達する前に)関係各所に情報を伝える仕組みが整備されています。TV画面に割り込んでくる地震速報や、携帯電話に通知されてくる地震速報の元になっている情報というと、わかりやすいでしょうか。

この速報は、財団法人気象業務支援センターと契約することで直接受信することも可能です。しかし、受信のためには専用の回線もしくは、IP-VPNサービス1を利用する必要があり、受信のハードルが少々高いと思われます。そこで、IIJでは、IIJデータセンター内に気象業務支援センターと接続するための設備を設置し、ここで受信した情報をインターネット経由で再配信することで、専用設備を持たない利用者でも緊急地震速報を利用できるようにしました。これがIIJの緊急地震速報サービスです。

速報の仕組み

さて、この緊急地震速報。「緊急」且つ「速報」と重ねて宣言されているとおり、とにかく急いで配信することが重要です。また、大変重要なデータを扱うシステムですので、配信側と受信側で常に通信が確立していることを確認し続ける必要があります。ということで、緊急地震速報の配信には以下のようなシステムが用いられています。2

IIJ緊急地震速報サービスの提供イメージ

気象庁からの情報を受けるIIJのサーバは、二箇所のデータセンターにそれぞれ独立して設置され、気象業務支援センターの配信システムと専用線で接続されています。万が一、何かのトラブルで片方のデータセンターの通信が途絶したとしても、もう一つのデータセンターで受信と再配信ができるようになっています。
気象業務支援センターとIIJ、また、IIJとお客様の受信設備の間は、常に通知が可能なようにTCPの接続を確立した状態で維持されており、一定間隔でkeep alive電文が送られています。もし、受信側がこのkeep alive電文に対して応答をしないと、接続断が発生していると判断し、再接続の要求または接続の再受付を行います。また、IIJのシステムでは、あらかじめ登録してあるメールアドレスに接続断があったことを通知
するような仕組みも設けています。
このように、配信サーバが受信側の健全性を常に確認し続けることで、情報を確実に送り届ける仕組みを維持しています。

また、気象庁の発表自体も「緊急」を意識したものになっています。
緊急地震速報では地震を検知した直後に「第1報」が配信されますが、第1報は震源地や震度の情報が不十分・不正確なことがあります。これは多くの地震計からのデータを待って正確な推定をするよりも、とにかく速報を優先させるという考えに基づいているからです。
その後、気象庁に追加の情報が入ってくると、そのたびにより精度の高い推定が行われ、各受信者には続報が配信されます。一つの地震で10報以上の続報が配信されることも少なくなく、大規模地震の時には大量の情報が配信サーバを飛び交うことになります。

※クリックで電文が展開表示されます

第1報
第2報
第3報
第4報
第5報
第6報
第7報
第8報
第9報
第10報
第11報
第12報
第13報
第14報
第15報(最終報)

これは、3月11日に発生した複数の地震のなかで最も規模が大きかった地震の記録です。この地震は大変規模が大きく、震源や各地の震度の確定に時間がかかったため、新しい情報が入ってくるたびにどんどん情報が更新され、結局15回も情報が更新されました。
3月11日はこれ以外にも何度も地震が発生しましたが、それぞれの地震について、新しい「緊急地震速報」が発表され、それに対してこのような更新報が配信されているのです。この日はまさに、電文が乱れ飛ぶと言った表現がぴったりだったでしょう。

Twitter botとマルチリンガル対応

さて、twitterの@quake_alertへ話を戻しましょう。

IIJのtwitter投稿プログラム(bot)も、一つの受信者としてIIJのサーバから緊急地震速報の配信を受けて動作しています。インフラは当初社内システムに間借りする形だったのですが、多くの方がこの緊急地震速報に期待されていることがわかったため、より安定した稼働が求められると考え、IIJ GIOのクラウドインフラの中に引っ越しを行っています。

このプログラムは常時プロセスが起動しており、前述の通りIIJの配信サーバと接続を確立した状態で待機しています。そこに、気象庁が発表した情報(電文)が届くと、即座にその内容をtwitterに投稿しているのです。新しい速報が出たかどうかを定期的に確認する「ポーリング」ではなく、配信サーバから「プッシュ」で電文が送られてきて動作するように作られているため、最小限の遅延で即座にtwitterに投稿ができるのです。

ちなみに @quake_alert では先ほどの多数の更新報のうち第1報のみをtwitterへ投稿し、続報は投稿していません。理由は単純で、すべての続報を投稿していると、あまりにも投稿量が多くなりTLが見にくくなるからです。(その前にAPI limitを越えてしまうかもしれません) twitterで @quake_alert に寄せられた@を見ていると「投稿はとても早いが精度がいまいち」という指摘を頂いていることもありますが、このような理由によるものです。

そんな感じて運用していたtwitter 緊急地震速報 botですが、ある日社内から一つの指摘がありました。

IIJ技術研究所の宇夫さん曰く「緊急地震速報を配信するメディアはいくつかあるが、ほとんどが日本語で配信されている。日本語以外を母語にする人が参照できる速報がない」と。日本への滞在期間が短い人は地震という現象に不慣れです。さらに、言葉の壁による情報不足が重なると、不安もより大きくなるのでしょう。そこで、日本語版以外の緊急地震速報が必要だという議論になったのですが、ここで一つの課題が持ち上がりました。

気象庁から配信される緊急地震速報の電文(特定の形式で整形された情報)には、「日本語デコード電文」と「コード電文」の2種類があります。この二つは基本的に同じ内容を示しているのですが、その表現方法が違います。
先ほど更新報の例として挙げたものは「日本語デコード電文」です。これに対する「コード電文」を以下に紹介します。(第15報分のみ)

※クリックで電文が展開表示されます

コード電文(前の例の最終報に当たるもの)

「日本語デコード電文」では、地震に関する情報がそのまま日本語で記載されていましたが、「コード電文」ではそれが数字と記号で表されています。3

最初に稼働開始した日本語bot @quake_alert は、コード電文ではなく日本語デコード電文の日本語部分をほぼそのままtwitterに投稿するという仕組みでした。地震発生後に急遽用意したプログラムのため、できるだけ簡単な仕組みと言うことでこのような方式を取ったのです。しかし、このため日本語以外の言語で速報を提供することが困難になってしまいました。やってみるとわかりますが、Google Translate APIのような簡易な機械翻訳では十分な品質の翻訳を得ることができませんし、ましてやtwitterに投稿するために140文字に押さえるのはきわめて困難です。また、「○○沖」や「▲▲近海」と言った表現は、日本の地名に馴染みがないとすぐには反応できません。

そこで、日本語デコード電文ではなくコード電文を元に英文を組み立てる事になったのですが、IIJは緊急地震速報の配信は行っていても、それを解釈するアプリケーションは作っておりません。(IIJグループ会社のNetCareから、市販の緊急地震速報表示端末をパッケージにしたサービスEqCareが提供されています)

無いなら作ろう、ということでコード電文を扱うためのPythonライブラリと、地名の翻訳データベースを作成しました。そして、日本語版の@quak_alertとは全く独立したTwitter botとして開発が進められました。
緊急地震速報には日本全国の地名が含まれていますが、コード電文を解釈しただけではその地名をどのように表現するかは解りません。解釈した結果を、各言語の速報にする為には、緊急地震速報に含まれる可能性があるすべての地点の「各言語毎」の翻訳した地名が必要になります。気象庁から入手した地名表を見ながら、手作業で今回対応している「英語」「フランス語」「韓国語」の地名データベースを作成したそうです。これらの作業はIIJ技術研究所の宇夫さんが中心になって進めました。4

このような取り組みにより、英語版@quake_alert_enとフランス語版@quake_alert_fr、韓国語版@quake_alert_krで緊急地震速報を発信することが可能になったのです。さらに、これらのアカウントでは、地震発生地の地名と合わせて、Google map APIにより震源地付近の地図を示すことで、日本の地名に馴染みがない方にもわかりやすい情報を提供するという工夫も凝らされています。

IIJが提供する緊急地震速報Twitter botの裏側は、こんな様子だったのでした。

自分でアプリを作ってみる?

さて、この記事を読んだ方の中には、自分で提供するサービスやアプリに緊急地震速報の機能を組み込みたいと考えた方もいらっしゃるのではないかと思います。そういう動き、歓迎です。

配信の仕組みはご覧のとおりです。速報利用者側でIIJからの配信を受け付けるサーバを準備して頂ければ、そこに向けて配信を行います。多数のクライアントがあるようなシステムに向けた再配信をして頂いてもかまいません。

電文の配信は「IIJ緊急地震速報配信サービス」の案内にあるとおり、IIJの法人向けインターネット接続サービスをご利用の方であれば無料です。フレッツ回線だと可用性の点で悩ましい点もありますが、配信自体は可能です。ただ、最近のご時世、自社や自宅にサーバを置くのではなくて、クラウド上に受信サーバを置きたいというご要望もあるかと思います。えー、現時点で公式な案内はないのですが、ご相談頂ければ対応可能だと思います。5IIJの営業経由で相談してもらっても良いのですが、いきなり営業は気が引ける、ということでしたら、私に直接言って頂いてもかまいません。たとえばサンプルプログラムや地名データベースの提供など、諸々お話しできると思います。

なにか有効な活用方法を考えていらっしゃる方は、一度ご連絡をください。

お断り

緊急地震速報は、その性質上いくつかの限界があります。

  • 震源に近いところでは、情報の提供が大きな揺れの到達に間に合わないことがあります。
  • 推定震度、到達予想時刻の精度に誤差があります。
  • 事故、落雷、機器の障害などにより、誤報を発表する可能性があります
  • 複数の地震が発生した場合に、的確な情報を発表できないことがあります。

また、twitterへの投稿は、twitterの特性上即時に情報が到達することを保証できません。

これらの限界をご了承の上、ご利用頂きますようお願いいたします。

関連サービス

  1. インターネットVPNではなく、専用の回線を敷設するタイプ []
  2. ここでは、IIJが再配信している「高度利用者向けの緊急地震速報」について解説しています。「一般向け緊急地震速報」については一部異なる部分があります。 []
  3. 日本語デコード電文・コード電文とも、「配信資料に関する技術情報(地震火山編)第216号」という仕様に基づいています。 []
  4. 技術研究所には英語・フランス語・韓国語を母語とする研究者も在籍しています []
  5. IIJ GIO以外のクラウドでも、技術的に可能なら検討します []

2 thoughts on “緊急地震速報とtwitter bot

  1. 日本語の @quake_alert にも位置情報が付くとさらにうれしいなぁ…。

  2. tssさん
    ご意見ありがとうございます。
    担当者も「考える」と言っておりますので、少しお待ちくださいませ。

Comments are closed.