気象庁の防災情報XMLフォーマット形式電文を実際に使ってみました。現在は、天気予報を表示するページを作ってみてテスト運用をしています。これで安定して運用が出来るようになれば Web アプリに組み込みたいと思っています。
PubSubHubbub の subscriber ですべてを処理させるのは、機能追加の時に問題が出そうなので、subscriber は更新情報を受信したら Amazon SQS にメッセージを送るだけの機能にして、XML電文の処理の方は別のコンソールアプリケーションにさせるようにしています。
テストをしてみて、C# の非同期処理 async / await は便利だということを実感しました。XML データを取ってきたり、Amazon の SQS や データの保存に S3 を使う場合には、どうしても一件当たり100ミリ秒単位の時間がかかるので同期処理をすると100件ぐらいで分単位の処理時間がかかるようになってしまいます。async / await を使うとそれを簡単に非同期処理ができるので処理時間を数分の1に短縮することができます。
実際に防災情報XMLを使ってみて感じたのは、今更なのですが天気予報を以下の例のように言葉で表現したものは簡潔でわかりやすいなと思いました。日本の伝統的な洗練されたものがあるように感じました。
南の風 23区西部 では はじめ 南の風 やや強く 晴れ
夜 くもり 所により 雨 で 雷を伴う
波 1メートル 後 0.5メートル
一方で、XMLの方は使いずらいと思いました。以下に、日本、アメリカ、イギリス、ノルウェーのXMLのサンプルを表示しましたが、日本だけが間延びして階層が異常に深くなっていることがわかると思います。技術的な評価はよく分かりませんが、少なくとも利用する側としては、日本のXMLは4つの中で最低です。階層が深くかつデータがばらばらとあるので、データを取得するプログラムの行数は増えていきます。7階層までいかないとどの項目か判断できないような設計はせずに、外国のように4階層ぐらいでデータを取得できるようにしてほしかったと思います。日本が後発で外国の例を参考にできる立場だっただけに残念です。
日本
アメリカ
イギリス
ノルウェー
それから、今回プログラムを作成していて、かなり時間がかかったのが、WetherCode のコード表の件です。WetherCode のコードについての説明がないので、どのアイコンを使えばいいのかがはっきりしないのです。自分が見落としているかもしれませんが、アメリカの場合は、XML の中に画像のURL が記載されているし、イギリス、ノルウェーの場合でも、得意でない英語の文章でも探すことができました。
天気予報APIのFAQに、「天気の種類は何種類ありますか?」という問いに対して、「天気の種類は現在のところ121種類ございます。尚、121種類の詳細につきましては、開発ドキュメントにてご確認いただけます。」という回答になっていて、秘密保持契約をまかないと開発ドキュメントは手に入れられないので、天気の種類という基本的なことが公開されていないようなのです。drk7氏が独自にしている「気象庁の天気予報情報を XML で配信」のページに、天気情報と画像ファイルの対応表を公開していたので、それを参考にして対応表を作りました。実際に運用してみてチェックしていこうと思っています。
XMLを洗練したものにできない理由を考えてみると、言葉による天気予報では、長年かけて予報官が自ら改善していったものだと思います。しかし、システムのことになると日本の予報官は分からないから、SI業者に丸投げに近い状態になっていて、その SI業者はというと、現状をそのままシステム化しただけになっていると思います。日本では、SI業者に依存しすぎるので、システムのことになると現場の改善力がうまく発揮できないようです。その上に気象会社からの圧力があって、改善すると民業圧迫といわれるので余計に改善の意欲がわかない状態になっていると思います。
問題点は書きましたが、やっと実現した天気予報の無料XMLなので、大いに活用しましょう。気象庁防災情報XMLを使いたい人は、http://ecitizen.jp/weatherのページのリンクから各府県のXMLが取得できるので、月3000PVまでであれば自由に使ってもらっても構いません。事前準備をしなくでもすぐにXMLの取得ができます。商用利用も可能ですが、気象庁の利用上の留意事項については遵守してください。