気象庁の防災情報XML配信を処理してみる その1 -概要-


since: 2013-6-15
last update:2013-6-15
目次へ   次のページへ


0、いきさつ

 気象庁は2012年12月からインターネット上でXML形式による防災情報の試行配信をしているそうです。詳しくは 気象庁のページを参照いただくのが 早いです。  少なくとも数年前は天気予報のデータを入手するには、気象業務支援センター等から購入するなど ハードルが高かったように記憶していましたが、現在は試行ということもあるのか、仕組みさえ構築すれば 無償で配信を受信できるようです。
 気象観測装置の運用も安定してきたこともあり、次はこいつを処理したくなったので、 ちょっと仕組みを構築してみました。
なお、気象庁のサイトに 気象庁XML利活用セミナー のページがあり、基礎知識を得るにはまずここを読むのが一番の早道と思います。 また、このドキュメントは2013年4月から取り組んだもので、最新の状況とことなる場合があります。

1、気象庁防災情報XMLフォーマットの概要

気象庁防災情報XMLフォーマットはその仕様が公開されており、誰でも入手可能となっています。 その資料は 気象庁防災情報XMLフォーマット 仕様 から入手可能ですが、結構な量のドキュメントとなっており、まずは 技術資料のページにある解説資料や 前述の利活用セミナーのページを参照するのが良いと思われます。
 配信される情報は多岐にわたっていますので、まずは処理したい情報に絞って理解を深めるのが現実的でしょうか。

 あとXMLを受信した後は、実際に人間が読める形にこれらの情報を編集することになりますが、 こちらについては気象庁から「気象庁防災情報XMLフォーマット運用指針」というドキュメントが公開されています。
その中の「気象庁XMLの編集とその利用条件について」では

気象庁XMLは、XMLとしての利点を活用して、利用者の目的に応じた編集が可能である。 編集された気象庁XMLの電文(以下「編集電文」と言う。)を流通させる際、 編集者は、編集電文の利用者に対し、編集電文が独自に編集されていること、 及びその編集責任が編集者にあることを明示しなければならず、 また、編集電文の利用者は、編集電文の利用条件を理解した上で利用しなければならない。

とあります。
また「気象庁XMLの編集における性質の維持について」では

気象庁XMLを編集する場合、適切な編集条件下において元の情報 の本質を維持することが可能である (中略) また、特定の目的で編集する場合、その目的に応じた範囲で本質を維持することが可能である。

とあります。

 編集した情報の流通に際しては、利用者へ編集された情報であることの明示と、 性質の維持を行わなければならないことになります。
 このあたりは特に意識しておく必要がありそうです。

2、気象庁防災情報XMLの配信方法

 気象庁防災情報XMLはpubsubhubbub(パブサブハバブ)というリアルタイムフィードの仕組みで配信されます。
 情報を発信するPublisher(=気象庁)、 情報を購読するSubscriber(=受信者:今回なりたい立場)、 この発信を仲介するHubから構成されます。
pubsubhubbub自体の概要は pubsubhubbubの本家サイト のOverviwe等を参照いただければと思いますので、ここでは省略します。

 自身でSubscriberを準備し、HubにそのSubscriberが登録されれば、 Publisherの更新に応じてHubからSubscriberに情報がfeedされます。 そのfeed内に記述された各情報のURLにアクセスし、XMLを取得する形になります。
以下に今回のケースの概要を示します。

1.PublisherからHubに更新通知のXMLがPOSTされます。


この時のXMLの内容は以下のような感じです。


2.Hubは各Subscriberへ更新通知のXMLをPOSTします。内容は1のXMLと同じです。


3.各Subscriberは受け取ったXMLをパースして、 必要に応じて中に記載のあるURLから個別のXMLを気象庁のサイトから取得します。


先ほどの更新通知XML内にあるf17ca4fc-545c-3d4e-af70-13eb14e40179.xmlというファイルをGETすると以下のような内容になっています。


あとはこれらを元に任意の処理を行います。

 なおHubへの登録は、気象庁の方が手動で実施するため、今回Publisherへのfeed要求やHubへの登録のための POSTリクエストは実装する必要はありません。Hubからの存在確認のためのGETリクエストに対する応答と feed更新通知のPOSTリクエストへの応答の実装が必要になります。


次ページ:Subscriberの構築、ユーザー登録

[1] [2] [3]  次のページ