グローバル審査の結果が出たのでエントリにします。
世界規模のハッカソンであるInternational Space Apps Challengeが4月に開催されました。昨年も同じ時期に開催されましたが、今回は開催地が44カ国、83都市。正式にサブミットされたプロジェクトは750を越えたとの事で、圧倒的な規模です。
私が参加したプロジェクトは日本ローカル2位*1となり、グローバル審査ではGalactic Impact部門のHonorable Mention(選外佳作)となりました。ハッカソンから1ヶ月以上経っていますが、今だに作業は続いているので嬉しい限りですね。
主に次の3つの機能を開発しました。
サブミットしたプロジェクトページ
とはいえ開始から発表まで30時間弱しかなく、途中MongoDBへのinsertが思ったようなパフォーマンスが出ないトラブルが発生し、処理対象のデータは日本(北緯20°~50°, 東経120°~150°)の10年分に限定する事に。
処理対象の範囲を限定したと言っても、ダウンロードしたMODISのデータは100GByte、12年分のデータが9億7000万レコードとなったのでサーバーリソースもそれなりに必要に。サーバーはスポンサー提供のIDCFクラウドが使えたので、並列処理できる所はインスタンスをガンガン追加してしのぎました。*2
この時の作業をざっと挙げると。
アプリは審査に耐えられる状態では無かったのでチューニングが必要でした。私はデータの精度アップのためにひたすら積み上げ計算処理を流していました。このあたりで一回の集計が24時間を越えたのでもうMongoDBはやめてHadoopか何かしよう……と強く思ったのでした。
世界規模のハッカソンであるInternational Space Apps Challengeが4月に開催されました。昨年も同じ時期に開催されましたが、今回は開催地が44カ国、83都市。正式にサブミットされたプロジェクトは750を越えたとの事で、圧倒的な規模です。
私が参加したプロジェクトは日本ローカル2位*1となり、グローバル審査ではGalactic Impact部門のHonorable Mention(選外佳作)となりました。ハッカソンから1ヶ月以上経っていますが、今だに作業は続いているので嬉しい限りですね。
主に次の3つの機能を開発しました。
- MODIS Cloud Maskの取りこみ、集計
- 地図上へのマッピング
- ソーラーパネル発電による収支のシミュレーション
サブミットしたプロジェクトページ
Cloudless Spots for Solar Power Generation (a.k.a. Where to Put Solar Panels?) | International Space Apps Challenge
http://spaceappschallenge.org/project/where-to-put-solar-panels-/
ソースコード (github), デモサイトhttp://spaceappschallenge.org/project/where-to-put-solar-panels-/
快晴率のマッピング |
雲の影響を計算モデルに取りいれたソーラーパネル発電による収支のシミュレーション |
二日間のハッカソン
私は、全地球上過去30年分の雲の衛星データ、MODIS Cloud Maskを利用して、太陽光エネルギーが効率良く得られる場所が見つけられるシステムを構築しようというチームに参加しました。メンバーは10人、本職のWebエンジニアが半分、エネルギーや気象方面の研究に係っている方が半分というバランスの良い構成でした。by akiko yanagawa |
とはいえ開始から発表まで30時間弱しかなく、途中MongoDBへのinsertが思ったようなパフォーマンスが出ないトラブルが発生し、処理対象のデータは日本(北緯20°~50°, 東経120°~150°)の10年分に限定する事に。
処理対象の範囲を限定したと言っても、ダウンロードしたMODISのデータは100GByte、12年分のデータが9億7000万レコードとなったのでサーバーリソースもそれなりに必要に。サーバーはスポンサー提供のIDCFクラウドが使えたので、並列処理できる所はインスタンスをガンガン追加してしのぎました。*2
この時の作業をざっと挙げると。
- データ回り
- MODIS Cloud Maskのデータ形式の調査
- ダウンロードサイトから日時と領域(緯度経度)を指定して必要データを延々と落すダウンローダーの開発
- MongoDBへの投入
- MapReduceで集計
- アプリケーション回り
- ソーラーパネルの発電量の計算モデルの作成
- アプリケーションの設計
- サーバーサイドの開発(Ruby on Rails)
- クライアントの開発(JavaScript)
- Webデザイン
- その他
- サーバー確保
- プロジェクトのサブミット
- 発表準備
by akiko yanagawa |
グローバル審査へ
ハッカソンの後、グローバル審査へのサブミット締切までは一週間、その間にプロジェクトの解説動画を作り、プロジェクトページを完成させなければなりません。ろくに寝ていない状況でそれを聞いてメンバー全員が沈黙。アプリは審査に耐えられる状態では無かったのでチューニングが必要でした。私はデータの精度アップのためにひたすら積み上げ計算処理を流していました。このあたりで一回の集計が24時間を越えたのでもうMongoDBはやめてHadoopか何かしよう……と強く思ったのでした。
まとめ
- MongoDBのMapReduceは1CPUしか使ってくれなくて辛かった
- 集計結果をプロットするRのプログラムのバグが今だに取れなくて泣きそう
- 太陽光エネルギーの利用法(ソーラーパネルと藻)について詳しくなった
- 普段合う事のない、別の分野のプロフェッショナルと一緒に物を作れるのは楽しい