「エンジニアもすなるエンジニアブログというものを、非エンジニアもしてみむとてするなり」。こんにちは。サービスディベロップメントグループの渡邉です。非エンジニアです。読みにくい部分もあるかと思いますが、ご容赦ください。
さて、世の中、オープンデータ、オープンデータと騒がれて久しいですが、いざ何かしようとすると、「どこに何のデータが公開されているのかわからない」、「公開されいている形式がバラバラ」、「データが加工しにくい(罫線つきのExcelとか、PDFとか(!))」、など様々な壁が立ちはだかります。
先日、4/11(土),12(日)の2日間、北野武のCMでもおなじみ(!?)DMM.make AKIBAで、「International Space Apps Challenge(以下「ISAC」) Tokyo 2015」が行われました。このハッカソンは、NASAやJAXAが公開しているデータを活用しようというもの。早くも今年で4年目になるそうです。
今回のエンジニアブログでは、ISACでIDCFクラウドを活用し、JAXAのオープンデータを一般のウェブ開発者でも使えるように、JSON形式に変換したものをAPI経由で提供したり、ドキュメントの整備を行っている、チーム「AERIAL」の活動をご紹介します。
◆サイト概要
まずは難しいことを抜きに、サイトをご覧ください。こちらがトップ画面です。
URL:http://hi-rezclimate.github.io/
さすが宇宙をテーマにしたサイト、なんとも美しいですね!AERIALは、JAXAがG-portalというサイトで公開している、人工衛星の「しずく」のデータを、一般のウェブ技術者向けにJSON形式で配布します。JAXAから海面温度や降水量のデータが公開されているって、ご存知でしたか?漁業、農業、小売業、物流、観光…いろんな分野で活用できそうですね。
◆課題
しかし、オープンデータ活用にあたっては、冒頭でお伝えした通り、一般のウェブ開発者にとっての壁が存在ます。
JAXAがG-portalで公開している衛星のデータをダウンロードしようとすると、拡張子「.h5」がついています。非エンジニアの私には、一体.h5が何のアプリケーションで開くのか想像もつきません…!
「.h5」は、HDF5というデータ形式の拡張子。HDF5はHierarchical Data Format 5の略で、科学技術計算などの分野で、時系列に変化する大量のデータを逐一記録するときなどによく用いられ、衛星データでは一般的に用いられているそうです。
このデータ形式は、「Hierarchical」の名の通り、一つのファイルの中に、データの他に、階層構造を持っています。ちょっと特殊ですね。HDF5を扱うためのマニュアルを覗いてみると…日本語なのに、頭に入ってこない…もう、即座にページを閉じるしか私には選択肢がありませんので、AERIALのリーダー大友さんに概要を解説いただきました。
衛星に搭載されたAMSR-Eというセンサーが取得するデータにはLevel0~Level3まで存在します。0を未処理のロウデータ、3が最も高次に洗ったもので、そのLevel3のデータフォーマットに関する定義書類が記載されています。そして、シーンごとの回転速とその際のデータの取得可能領域に関する説明等があり、海上風速、海表面温度のバックグラウンドで必要なアルゴリズムなどが記載されています。
これらを把握して、初めてAPIが返す値を正確に理解できるわけです。もう!XMLやJSONみたいに、データをそのまま吐き出してくれればいいのに…!
◆まずは使ってみよう
そのHDF5を、テキストベースのJSON形式に変換して配布するのが、AERIALです。試しに、今年2015年元旦の東京を中心とした積雪量のデータを取り出してみます。 緯度、経度、日にちなどを入力して、「Send」をクリックすると…
見慣れたJSON形式で出力されました!
同時にデータの内容が可視化されるので、確認もできます。
このさくっと変換できる手軽さ、そして、使いやすく美しいUIが、開発者の心をとらえてやみません!また、データの取得を行えるAPIが提供されているので、自作のプログラムで手軽に利用できます。衛星のデータが手軽に活用できるなんて、可能性が広がる気がしませんか?
◆アーキテクチャ
AERIALは、フロントとバックエンド、2台のサーバーで運用されています。
- バックエンドの集計・解析用サーバーでは、定常的にHDF5形式のJAXAのデータをsftpで読み込んでいます。このデータを「h5dump」で標準出力ストリームにダンプし、JSON形式に変換。積雪量、降水量など情報の種類に応じエンドポイントを分け保存しています。
- フロントサーバーは、AERIALのUIの部分。ユーザーがUIで選んだ情報の種類に応じたアドレスで、サンプルコードを生成して表示させると同時に、JSON形式のデータを取りに行き可視化します。
◆ISAC 2015の2日間の成果物
AERIALは、第一回のISAC Tokyoから継続しているプロジェクト。今年のISACでは大きく2つの成果物がありました。
1.飲み水のデータを道案内
URL:http://hi-rezclimate.github.io
自分がいる場所をGPSで特定し、最寄りの飲用水がある場所までの道順を、GoogleMapで案内するアプリケーションです。OpenStreatMapプロジェクトで世界中から寄せられた、40万レコードにも及ぶ井戸・水道のデータを、データベースで処理して表示させます。
2.システムトラブルに対応
AERIALが活動する前から、もともとJAXAでも公式に、HDF5のデータをJSONで配布するプロジェクトがありました。しかし、本ハッカソンの直前に、システムトラブルで配布が休止する事態に。チームAERIALが急遽、JSONでの配布がストップしたデータを、AERIALのサイトから配布できる体制を整えました。配布開始は1日目の27時(2日目の3時)といいますから、夜を徹しての作業です。
◆制作したのはプロフェッショナルな面々
リーダーの大友さん(写真中央右)は、ISAC第1回からの参加者。第1回で40時間寝ずにハックしていたところ、JAXAにスカウトされ、中の人になってしまったという異色の経歴の持ち主です。
そこに第3回からジョインしたのが和智さんと白浜さん(写真左から)。グリーに勤務するお二人は、普段の業務でも毎日ハッカソンのような生活を送っているそう。ハッカソンとなると2日間の勝負なので、どうしてもUIの細部まで手が回らないことも多いのですが、高いクオリティで仕上げる「神」的な存在。ドキュメントをきれいに成形するのにも、本来、ノウハウ・テクニックが要るのですが、いとも簡単に実現します。
こちらの写真にはいらっしゃいませんが、第2回からジョインした中尾さんもコアメンバーの一人。HDF5からJSON形式に変換するエンジンを開発されています。
※写真右は、チーム「AERIAL」ではありませんが、第3回のISACに参加した当社のR&D室長の大屋です。写真の4人の対談の様子は、IDCフロンティアのコーポーレトブログ「チーム「AERIAL」から見たハッカソンレポート-International Space Apps Challenge 2015-」もご覧ください。
◆今後
AERIALには、将来、オープンデータのハブになる、という大きな構想があります。JAXAが公開しているデータだけでなく、省庁・団体を越えて様々なデータを提供することを目指しています。同時に、これらのデータを活用し、ハザードマップや危機予測にも対応できればとのこと。 また、ユーザインタフェース部分もより使いやすくなるよう、JavaScript SDKを開発し、オープンデータを活用する開発者の裾野を広げる考えです。
AERIALは、このプログラムの大部分をオープンソースで公開しています。以下のURLは、昨年と今年の開発分があるGithubのレポジトリです。
URL:https://github.com/hi-rezclimate
興味をもたれた方は、このプロジェクトにジョインしてみませんか?