Software Design 連載 第33回 Race for Resilienceハッカソン

 

この記事は、技術評論社 Software Design 2014年8月号の転載です。記事のPDFはこちらからダウンロードできます。 技術評論社のご協力に感謝いたします。

Hack For Japan

エンジニアだからこそできる復興への一歩

“東日本大震災に対し、自分たちの開発スキルを役立てたい ”というエンジニアの声をもとに発足された「 Hack For Japan」。本コミュニティによるアイデアソンやハッカソンといった活動で集められた IT業界の有志たちによる知恵の数々を紹介します。

第33回

オープンデータ活用ハッカソン

Hack For Japanスタッフ
及川 卓也 OIKAWA Takuya
Twitter @takoratta

関 治之 Hal Seki
Twitter @hal_sk

高橋 憲一 TAKAHASHI Kenichi
Twitter @ken1_taka

“東日本大震災に対し、自分たちの開発スキルを役立てたい”というエンジニアの声をもとに発足された「Hack For Japan」。今回は「発展途上国×防災・減災」をテーマにしたグローバルハッカソンの報告です。

Race for Resilienceとは

Race for Resilieneは「発展途上国×防災・減災」をテーマにしたグローバルハッカソンです。実際にNPOやNGO、世銀関連機関の発展途上国の防災・減災活動に取り入れられるようなソフトウェア、ハードウェアをつくりあげ、自然災害に対してしなやかな社会をつくることを目指して開催されました。世界銀行の主催でアジア数ヵ国およびハイチ、ロンドンでのハッカソンの後、各国の優秀プロダクトはグローバル審査に進み、6月30日にロンドンでグローバルアワード表彰式が行われました。日本では2014年2月8日と9日に石巻、東京、名古屋の3ヵ所でハッカソンが開催されました。

雪の中でのハッカソン

ハッカソンが行われた2月8日と9日は、石巻と東京の会場ではちょうど大雪に見舞われた日で、とくに石巻では91年ぶりと言われるほど大量の積雪があり、1日目の夜には写真1のようなかまくらを作って、その中で開発ができるほどでした。東北とはいえ太平洋側沿岸に位置する石巻では、これほどの雪が降ることは滅多にないため交通機関もストップし、東京から参加していたHack For Japanスタッフの及川と高橋は1日延泊を余儀なくされるという状況でした。

写真1 かまくらの中で開発

写真1 かまくらの中で開発

グローバル審査

グローバル審査に進むことになったプロジェクトはハッカソン終了後も引き続き開発が続けられ、最終提出期限が迫っていたことから4月末から5月にかけてのゴールデンウィークも返上で各プロジェクトのメンバーが頑張っていました。

Hack For Japanの取り組みでもたびたび課題として挙がるのですが、ハッカソンでは1日、もしくは2日間のイベント終了後はプロジェクトが継続されないことも多いなか、今回は各会場で、国内、グローバルという複数段階での審査が、ある程度の期間をあけて設けられていたこともあって、複数のプロジェクトで継続して開発が進められたことも特筆できる点だと思います。

グローバルアワードの最終発表と表彰式は、6月30日にロンドンで行われた「Understanding Risk Forum」の中で行われ、ファイナリストとして残った10のプロジェクトの紹介もされました。グランドプライズには、インドネシアからの「Jakarta Flood Alert」「Quick Disaster」という2つのプロジェクト、日本からの「逃げ地図」プロジェクトが選出されました。

各プロジェクトについて

グランドプライズは逃してしまいましたが、ここではHack For Japanスタッフがかかわった3つのプロジェクトの解説をしたいと思います。


Survival Toolboxプロジェクト
Survival Toolboxプロジェクトは、石巻在住の中塩成海さんが自身の被災体験を基に2月のRace for Resilience石巻会場でのアイデアピッチで提案したプロジェクトです。
中塩さんは東日本大震災のときに、身近なものを組み合わせるなど創意工夫して困難な状況を乗り切りました。例として自転車を使った発電のアイデアなどを披露し、このようなアイデアは日頃から考えて試してみるのが良いのではないかということで、アイデアをレシピとして公開し共有するプラットフォームを作りたいと仲間を募りました。

その提案に賛同して、中塩さんの妹さんとその友人(お2人とも石巻在住の女子高生です)、東京在住のソーシャルメディアの研究者、仙台在住のフリーランスエンジニア、ドイツ人ITコンサルタントがメンバーとして加わりました。さらには、現地で参加はできなかったのですが、横浜からはデザイナーも加わって開発が進みました。

結果、現地での審査では見事2位になり、ロンドンを目指すことになります。
その後、関西在住のフリーランスエンジニアも加わり、プロジェクトはハングアウトとFacebookグループを介したオンラインでの開発をベースとして進みます。学業を優先させる中塩さんの事情などもあり、開発は必ずしもスムーズには進みませんでしたが、審査に必要なサイトやオープンソースのレポジトリ、Code for Resilienceへの登録などをメンバーで手分けして行いました。グローバル審査では残念ながらファイナリストには選ばれなかったのですが、現在もサービス開始に向けて開発を進めています。

このプロジェクトの特徴は平時と発災時においてインターフェースを変化させる点です。防災・減災用のアプリケーションやサービスには、普段使っていないものをいかに災害時に使えるようにするかという課題があります。平時にはアイデアを競い合うような楽しさを取り入れ、発災時には共有されているアイデアをその災害の内容や段階に応じて、積極的に提示するという形にしようと検討しています。

また、利用者の分析も行いました。災害発生後の状況では、被災者自身がスマートフォンやWebを使ってアイデアを検索する余裕があるとは考えづらいこともあり、このサービスはもっぱら支援者を対象としています。支援者が被災者に必要と思われる情報を伝達するために、アウトプットとしては紙も想定しており、その紙を印刷したり、FAXで送信したりすることを考えています。

グローバル審査ではAndroidアプリケーションとして動作するものを提出しましたが、これはあくまでも短期間のプロジェクトの成果としてのプロトタイプのようなものであり、アイデアを共有する部分を含むバックエンドやほかのインターフェース(Webや紙)での入出力はまだまったく手を付けられていません。

本プロジェクトに賛同する方はぜひともプロジェクトメンバーにコンタクトしてみてください。プロジェクトのサイトはこちらになります。


Flood ARプロジェクト
Flood ARは2月のハッカソンの石巻会場で1位となり、グローバル審査に進んだプロジェクトです。その後ファイナリストには残ったものの、惜しくもロンドンへ行くチャンスは逃してしまいました。

これはAndroid端末用のアプリケーションで、津波の発生した状況下での避難をシミュレートするものです。このアプリケーションの着想は、事前に行ったアイデアソンで石巻の高校生が話してくれた被災時の体験が基になっており、たとえ膝の高さ程度の浸水でも歩行には困難を伴うこと、また実際の水の色はほぼ黒で地面は見えず、足下に何があるかわからないという危険があることをAR(拡張現実)を用いて画面上に表現します。今までの津波対策の避難訓練は津波が来る前に逃げることを想定したものでしたが、実際に東日本大震災では警報が届かなかったり、警報があっても逃げ遅れてしまったなどで多くの被害者が出ました。このアプリケーションを使うことで、津波の脅威をより身近に感じてもらうことができます。

起動すると、性別、年齢、身長、そして避難先の位置をマップ上で指定して入力します。Startボタンでシミュレーションを開始するとAR画面になり、性別に応じた自分自身を示すアバターが表示され、身長に合わせた高さの浸水が表現されます(図1)。このアバターはアプリの使用者の状態に応じてアニメーションするようになっており、止まっているときは周囲を見渡す動作、ほかに歩く、走る際はそのスピードに合わせたアニメーションをします。

図1 AR画面

図1 AR画面

シミュレーション実行中は定期的に自分の現在地をGPSから取得して移動経路を記録し、移動速度を算出しており、浸水している状況下での歩きにくさや、通常のスピードで歩くことができないことを示すため、想定より速い速度で歩いていると判定された場合は、もっとゆっくり歩くように促すメッセージが表示されます。そして、避難先として設定した地点に到着すると結果表示画面に切り替わり、実際にここまで移動するのにかかった時間と想定時間、実際の歩いてきた経路をマップ上で確認することもできます(図2)。

h4j-fig02a

図2 結果表示

図2 結果表示

実装裏話
今の潮流ではこのような3Dグラフィクスのアニメーションを活用したアプリケーションを作る場合はUnityを使うケースが多いと思うのですが、今回は標準のAndroid SDKにてJavaで開発を行いました。開発にかかわったメンバーが通常のJavaでのAndroidアプリ開発に慣れていることと、現在地情報の取得やGoogle Maps APIの活用を考慮するとJavaから3Dグラフィクスをコントロールしやすいようにしたほうが良いと判断したためです。とはいえ、OpenGL ESを直接使用して人型のアバターにアニメーションをさせるにはかなりの開発時間を必要とし、現実的ではありません。

そこで今回は、オープンソースで公開されているライブラリを活用することにしました。当初のバージョンではJavaのみで書かれたライブラリを使用していたのですが、扱うことのできる3Dモデル、およびアニメーションデータの種類に難があり、Unityがデータをインポートする際にも使われているfbx形式のデータを扱えるよう、最終的にはC++で書かれたライブラリをNDKを用いてJavaからコントロールできるようにして実現しました。

また、ハッカソン直後の最初のバージョンでは、水の表現も単に青色の半透明の板を置いていただけにとどまっていたのですが、実際の浸水時の水の色はもっと黒に近い色に見えるため、そのような色の水のテクスチャを用意してより実際のものに近い表現にしました。このようにしてアバターと水面の表現をカメラからのプレビュー画像の上に重ねて、歩いている自分のイメージを画面上に投影できるようにしています。

このプロジェクトの説明と動画はこちらから参照できます。


すごい避難訓練プロジェクト
すごい避難訓練プロジェクトは、Race for Resilienceの名古屋会場で1位を獲得したプロジェクトです。従来型の避難訓練は、単なる「避難経路の確認」を超えていないという問題意識から、本当に役に立つ避難訓練のあり方を提示する目的で作られました。この記事を書いているCode for Japanの関と、Code for Nagoyaの河合さんのアイデアを元に、デザイナーや大学の先生、ITエンジニアなどが参加したプロジェクトです。その後、すごろくチームをやっていた西村さんが参加し、プロジェクトが続いています。

実際の災害時には、あらかじめ決められた避難経路をたどっていくようなことよりも、さまざまなアクシデントへの対応を求められる場合が多いと思います。たとえば、お年寄りに遭遇する、一緒に避難しているメンバーが怪我をしてしまった、通れるはずの道が火災で通れない、などなどです。このアプリケーションでは、そういったリアルな災害状況をシナリオに沿って体験することで、避難訓練自体を自発的に楽しみながらできるようになっています。

すごい避難訓練はシナリオゲーム型避難訓練になっており、チームリーダーがスマートフォンを持ち、数名のメンバーと共に避難訓練を行います。メンバーはロールカードを持っており、「お年寄り」「子ども」などといった仮想の役割が割り当てられます。避難訓練中にはスマートフォンにイベントが届くようになっており、状況が刻々と変化します(図3)。ゲーム参加者は、発生イベントとロールの制約の中で避難を行わなくてはいけません。

図3 スマートフォンに送信されるイベント例

図3 スマートフォンに送信されるイベント例

発生するイベントには、「火災が発生し、◯◯通りが通行止め」というものや、「子どもがパニックになり、家に帰りたいとぐずる」など、ロールカードを持っている人に対する指令なども存在します。管理者(ゲームマスター)は、各チームに対して、学習効果が高まるようにさまざまな指令を出していきます。

ゲーム終了後には戻ってきて振り返りのミーティングを行うことで、災害時に起きうることや心構えなどについて気づいてもらって終了します。

Webサイトには、今も当時のプロトタイプアプリケーションとプレゼンスライドがアップされていますので興味のある方はご覧ください。


残念ながら、このプロジェクトはCode for Resilienceの世界大会での選考からは漏れてしまいましたが、その後、災害救援ボランティア推進委員会の宮崎さんがいる明治大学での避難訓練で、トライアル的に利用をしていただき、好評を得ました。

また、8月に浦安市で行われる予定の、浦安市「立志塾」宿泊型防災研修プログラム(DECO)の中の企画として、バージョンアップした「すごい災害対応訓練」を提供、実施する予定です。コンセプトはそのままですが、機能面については実際のユースケースに合わせシンプル化し、管理画面などを実装することで本番運用に耐えられるようにしています。また、市が提供するハザードマップの組み込みなども行う予定です。本誌が発売されるころには、結果がWebサイトにも公開されていると思います。良ければ探してみていただければと思います。

この文書は、クリエイティブ・コモンズライセンスの下に提供されています。

著作者の表示・非営利・改変禁止の条件に従い、この文書を再利用していただけます。

CC-BY-NC-ND

Updated on 2 24, 2013 by Seigo Ishino