Software Design 連載 第3回 原発関連情報を地図上にプロット―風@福島原発
この記事は、技術評論社 Software Design 2012年1月号の転載です。 記事のPDFはこちらからダウンロードできます。 技術評論社のご協力に感謝いたします。 |
Hack For Japan
エンジニアだからこそできる復興への一歩
“東日本大震災に対し、自分たちの開発スキルを役立てたい ”というエンジニアの声をもとに発足された「 Hack For Japan」。本コミュニティによるアイデアソンやハッカソンといった活動で集められた IT業界の有志たちによる知恵の数々を紹介します。
第3回
原発関連情報を地図上にプロット―風@福島原発
Hack For Japanスタッフ
石野正剛 ISHINO Seigo
Twitter @wiraqutra
はじめに
筆者はHack For Japanに参加するとともに、『風@福島原発』注1という被災者支援のためのAndroidスマートフォン向けアプリケーションを開発しています。本稿では、このアプリケーションの開発にまつわる話を書かせていただきます。
私には何ができるのか
震災後に身辺の落ち着きを感じたとき、被災地のために何かしようと考え始めました。東北に向かおうとの思いも浮かびましたが、激甚な被害の状況を見るうち、まだ筆者のような人間が行っても役に立てるような状況ではないこともわかってきました。それでは間接的に被災地を支援するにはどうしたらよいかと頭を捻りました。現実に対して自分の力はあまりに無力でしたが、情報とデザインという得意な面から手助けをしていくことはできないだろうかと考えていました。
そんな折りに、福島第一原子力発電所が爆発し、放射性物質が放出されました(図1)。3月16日には神奈川県の放射線情報のサイトがアクセス過多で不安定になっていたので、筆者はミラーサイトを作成しました。
強い不安を覚えながら情報を収集しているうちに、考えがまとまってきました。放射能という目に見えない脅威に対し、自らの得意な技術をもって応じることができるのではないかということでした。
どれだけ離れているのか
そのころニュースでは、原発から数十キロの距離を同心円として描いた地図とともに、圏内に避難指示が出されるといった報道がされていました。これを見て、自分のいる場所は原発からどれくらい離れているのか、避難するならばどちらへ向かえばよいのかなどを地図上で確認できることは有用なことだと思い至りました。
これらの要求に応えるための道具として考えたのがスマートフォンです。多くのスマートフォンに搭載されているGoogleマップとGPSを使えば、標準機能で現在地を地図上に表示することができます。被災地でのスマートフォンの利用状況については不詳でしたが、悩む前にキーボードを打ち始めました。
実はアプリケーションのプログラミングをするのはかなり久しぶりであり、参考となるサンプルコードを読み解くことから始めました。非常時に使われるものであるため、できるだけ確実に動作するような設計を心がけました。具体的には、使用メモリを節減したり、バッテリ消費を抑えるためにGPSを自動停止させるなどです。
寝る間も惜しんで開発し、最初のバージョンを3月19日に公開しました。この版はGoogleマップ上に現在地を表示し、メニュー呼び出しにより原発との距離が表示されるもので、アプリケーションの名前は『距離@福島原発』としました(図2)。
公開してすぐに、被災地で役立ちそうな情報を提供することも重要だと考えて、災害・原発事故や食料・飲料水の配給所などの各種情報へのリンクを追加しました。とくに、多くのボランティアによって作成された「炊き出しまっぷ注2」のような地図を、スマートフォンの経路案内機能と組み合わせて利用できれば有用だと考えました(図3)。そのほか万一のため、簡易な懐中電灯と緊急ブザーになる機能も実装しました。
デザイナとの共同作業
ここで、共同作業者の笹島学さん注3について紹介させていただきます。筆者もデザインに関係する仕事をしているのですが、製品の使いやすさと品質に関連する分野が主な領域で、グラフィックデザインを得意とはしていません。このアプリケーションの計画を立て始めたときにはプロの手を借りることを考え、親しいデザイナに声をかけました。多様な状況で利用される携帯機器の小さな画面で情報を適切に表示するには、深い知識と経験が必要になると考えたからです。
彼にはアイコン、地図上の記号といったグラフィック部品を制作してもらうほかに、アプリケーションの使い勝手を良くするための助言もしてもらいました。中でも、要求の優先度についての提案には厳しいものがありました。開発者としては、実装が困難な要求の採用は後回しにしたかったのですが、利用者にとっての価値を顧みるべきだと力説されました。もし筆者が彼の立場にいたなら同じことを言ったと思い、助言を聞き入れました(この後、風向きを表示することに取り組んだのも、彼の助言があったからこそです)。
彼との仕事の一端を紹介すると、表1のような簡単なグラフィック部品でも、試作を何度も繰り返して制作を進めています。すべての部品がドット単位の精密さで研ぎ澄まされたものとなっています。
彼はほかにもアイデアソンで企画を提案したり注4、WebサイトやTシャツをデザインしたりと、Hack For Japanの活動に参加しています。
◆表1 グラフィック部品の試作
版 | 部品 |
1 | |
2 | |
3 | |
4 | |
5 |
風向きを気にする
原発から放出された放射性物質は風に乗って飛散してゆきました。ニュースで放送される同心円の地図に見慣れたころ、原発と居住地との間の風の情報を気にするようになり、次の拡張ではこれを表示することに決めました。
気象庁がアメダスの観測データをWebに毎時公開していることを知り、これをアプリケーションから読み取って地図に重ね合わせて表示するようにできればよいと思いつきました。一般のWebページからアプリケーションに必要なデータを抽出することはスクレイピングと呼ばれますが、データの再利用性を考慮していないページをスクレイピングすることの大変さには、この後もずっと悩まされることになるのでした。
笹島さんに風向と風速を表すための矢印を描いてもらい、その名も『風@福島原発』と改めて更新しました。プログラムとしても、インターネットとの接続を確立してスクレイピングすること、データの成形をして地図上に表示することなどの機能を追加したことによって、コード量は倍に増えました。
放射線量を見たい
そのうちに、「シーベルト」や「ベクレル」といった馴染みのない言葉を耳にするようになり、これらの値は放射性物質による汚染の指標になるというので気にされるようになりました。このような空間放射線量の測定値は文部科学省のほかに福島県と宮城県によって公開されていることがわかったのですが、地名と数値を一覧表にしただけのものでした。これらの値を地図上に表示すれば、放射性物質の分布を直感的に理解できるようになるだろうと考えました。
そのためにはそれぞれのWebサイトにアクセスし、違った様式のページを解析してデータを抽出する必要がありました。どのサイトもデータの再利用のことは考えられておらず、解析のためのコードは複雑なものとなりました。たとえば、「測定値」の後にある2つ目の「<td>」の中に時間が含まれていて、その1つ後の「<td>」の中に地名が含まれている場合は、4つ目の「<td>」の中の数字を取得する……などでした。
何とかスクレイピングを実装することができ、地図、放射線量、そして風の情報を一覧することのできるアプリケーションとして形になりました(図4)。
読めないデータがある
放射線量表示の実装後、原発近くに住んでいるユーザから、自分の住んでいる地域の情報も載せてほしいとの要望が寄せられました。筆者は、福島県が公開しているデータはすべて表示していると答えました。すると、さまざまな機関注5によって測定された結果を公表している資料があるということを教えていただき、それを追加しようとしました。
ところが、それらの資料はすべてPDF形式で提供されているうえ、ファイルの文書構造が崩れていて、プログラムからアクセスしても正しい順序でデータを得ることができませんでした(文書作成アプリケーションの印刷コマンドから作成したPDFにはタグが付けられず、アクセシビリティが失われてしまいます)。自分の力だけではこの問題を解決することはできず、Hack For Japanの活動として、PDF資料を可読化するためのプロジェクトを立ち上げて協力を要請しました注6。
そこで多くの協力が得られ、問題を解決することができました。この件以来、筆者はHack For Japanの旗の下に集うITエンジニアのつながりを感じ、積極的に関わるようになりました。
市民の測定値をクラウドに
政府や自治体などの機関だけではなく、ガイガーカウンタを購入して放射線量の測定を実施する市民も現れてきました。中には測定値をインターネットに発信する人もいました。
このような市民による測定値を利用することはできないだろうかと調べているうちに、「Pachube」という各種の環境センサから集められたデータが利用できるサービスがあり、そこには日本の放射線量を収集・配信しているフィードがあることを知りました注7。このデータはXMLなどの利用しやすい形式で配布されています(リスト1)。
これによって、多くの市民による測定値を表示することができるようになりました。
<eeml……>
<environment updated="2011-10-09T12:34:56.789012Z" id="1" creator="https://pachube.com/users/*****">
<title>Radiation dose at Minato-cho, Yokohama</title>
<feed>https://api.pachube.com/v2/feeds/*****.xml</feed>
<status>live</status>
<description>
Feed from a hand-made Geiger counter using a SBM-20.
</description>
<private>false</private>
<location domain="physical" exposure="outdoor">
<name>Minato-cho, Yokohama, Japan</name>
<lat>35.4437149192256</lat>
<lon>139.637601077557</lon>
</location>
<data id="radiation">
<current_value at="2011-10-09T12:34:56.789012Z">0.047</current_value>
<max_value>0.066</max_value>
<min_value>0.043</min_value>
<unit type="derivedSI" symbol="μGy/h">microgray per hour</unit>
</data>
</environment>
<environment> ……</environment>
</eeml>
早く公開し、更新を続ける
製品がユーザに受け入れられ、要求を満足させているかどうかは、公開してユーザの反応を見てみるまでわかりません。今回の原発事故に関しては、正確な状況の把握ができないにもかかわらず迅速に届けることが求められていました。そのために、できるだけ早く開発してユーザからの意見を得て、更新を続けてゆくというプロセスを採用しました。
実際に施した工夫としては、ユーザからのフィードバックを得やすくするために筆者の連絡先を公開し、アプリケーションにはメール送信のボタンを備えました。変化する状況への対応やユーザの要望に応えるために、これまでに50回以上の更新を行ってきました。ユーザから寄せられた要望には次のようなものがありました。
「自分は○○市に住んでいて、市は独自の放射線情報を公開している。掲載してほしい」
「また次の避難所に移らなければならないが、地名から検索して放射能を調べたい」
「普通の携帯を使う友人に地図を送ったり、Twitterやmixiなどで地図を共有したい」
寄せられた要望は主要ユーザに対する使い勝手を考慮して取捨選択しました。つまり、原発付近で暮らしている人を想定し、使用しているシナリオを描いて実装する機能の優先度を検討しました。
今後の計画
大気中の放射線量の情報に対する状況は平衡に近づいているために、アプリケーションの改修の頻度は低くなってきました。今後の拡張としては、食品中の放射性物質の値や積算線量を表示することも検討しています。他方ではHack For Japanの活動として被災地にコミュニティを作ろうというものがあり、こちらの活動も手伝わせていただいています注8(写真1)。
これからも被災地を支援することは必要とされていますので、皆さんにもHack For Japanの活動の状況をFacebook注9などで確かめていただき、参加してもらいたいと考えています。
脚注
注1)http://sgo.s349.xrea.com/wp/2011/03/23/stop_ra/
注2)http://goo.gl/zRlRk
注3)sasazi.design (a) gmail.com
注4)https://wave.google.com/wave/waveref/googlewave.com/w+nMqw8yksD/./conv+root/b+PUIM5OIbC (サービス終了)
http://www.hack4.jp/Events/PastEvents/2011/the-beginning-2011-3-19-21-hack-a-thon (アーカイブ)
注5)日本原子力研究開発機構、原子力安全技術センター、東京電力、福島県、警察庁、文部科学省など
注6)Hack For Japan MLのトピック https://groups.google.com/d/topic/hack4japan/mwJY2iRS_4w
プロジェクトホスティング http://code.google.com/p/hack-access
注7)http://blog.pachube.com/2011/03/calling-all-jpusers-distributed.html
注8)仮設ネットカフェプロジェクト(先月号の記事を参照)
注9)http://www.facebook.com/groups/hack4jp/
ほかにTwitter、Googleグループ、Google+があります。
Updated on 11 2, 2012 by