気象庁XMLをAWS+Nginx+MEANで取得 その1

このエントリーをはてなブックマークに追加

東京メトロがオープンデータのコンテスト(2014/11/17迄)を開催中ですが、最近オープンデータという言葉をちょっとだけ多めに聞くようになったような気がします。

今回は気象庁が公開している気象庁防災情報XMLの入手に挑戦してみようと思います。まず、単純にアクセストークンをくっつけてGETできるプロトコルではなく、PubSubHubbub(パブサブハバブ)というプロトコルが使われています。初めて聞く人はこの呪文みたいな名前は何?って思うかもしれませんがPublisher(発行者), Subscriber(購読者), Hub(仲介人)の略だと覚えておけば意外とすぐ名前自体は覚えれるプロトコルです。

主な流れ的には以下のような感じです。

PubSubHubbub

噛み砕いて言ってしまえば皆が皆気象庁にアクセスして「電文ちょうだい!」ってなるとPublisherである気象庁がパンクしちゃうのでHubが仲介してくれて、かつフィードには電文のヘッダ情報が含まれてるので気象庁的には「必要に応じて取りに来てね」というスタンスでOKになるのです。

ここらへんの仕組みは気象庁サイトの「電文公開の仕組み」のコーナーでそれなりに詳しく書いてあるので一読することをお勧めします。

さて、上の内容は結構他のサイトと冗長な内容になるのでここらへんにします。今回この気象庁XMLを取得する為にバックエンドはAWS(Amazon Web Services)のEC2(Elastic Cloud Compute)でLinux Serverを立ち上げてNginXでリバースプロキシを設置し、NodeJS+Expressでリクエストを受けてMongoDBにデータを格納していきたいと思います。フロントエンドに関してはAngularJSを使わせていただきます。流行(?)のMEAN環境の構築ですね。
図示すると下のような感じ。

Env

まずはAWSでEC2のインスタンスを作成(AMIはUbuntuを使用)してsshで接続できるようにします。ここにさっそくNodeJS+Expressの環境を構築していきます。NodeJSを直接ポート80で公開したくないので、NginxをインストールしてリバースプロキシでNodeJSに向けるようにします。今回データ格納にはMongoDBを使いますのでMongoDBもインストールしておきます。ここらへんのHowToはGoogle先生に聞いたらすぐにいろんな記事が出てくるので各自がんばってください。

ここまでで環境構築自体は完了です。次回以降で実際にNodeJSでSubscriber用のAPIを作っていきます

Written on September 23, 2014
このエントリーをはてなブックマークに追加