熊本地震で漏水・給水情報を伝えたmizuderu.info開発の舞台裏

アスキー 10月19日(水)07時00分配信

9月18日に行なわれたJAWS-UG熊本の勉強会では、4月に起こった熊本地震で漏水・給水情報を伝えるためコミュニティで開発されたmizuderu.infoの舞台裏が披露された。東日本大震災でのサイト復旧に大きく貢献したクラウドは、今回どのように活用されたのだろうか?

熊本地震のmizuderu.infoはどのようにAWSを活用したか

 mizuderu.infoは4月の熊本地震の際、被災地の水の調達場所、漏えい場所を知るために有志によって作られたサービス。スマホアプリの地図上から地点をタップし、写真などで状況を投稿できる。4月16日の本震から30日までの約2週間で、全6205件の水に関する報告(出ない4304件、出る1478件、提供可能87件)、全153件の漏水報告(画像ありが105件)が寄せられたという。熊本大学病院に務めているJAWS-UG熊本の山ノ内祥訓さんは、発起人である崇城大学情報学部 和泉信生助教の代役として、mizuderu.infoの概況やタイムライン、プロジェクトの進捗について説明した。

JS
mizuderu.infoの概況とタイムラインについて説明したJAWS-UG熊本の山ノ内祥訓さん

本震当日:和泉助教のつぶやきから約2時間で初期版がリリース

 熊本地震は14日の夜の前震を経て、16日の朝に本震が起こっている。mizuderu.infoは本震直後の和泉助教のつぶやきから有志による開発がスタートし、2時間後の16日15時頃には初期バージョンがリリースされた。

JS
和泉助教のツイート後、2時間後に初期バージョンリリース

 開発は当然ながらすべてリモートで行なわれ、初期バージョンの開発は福岡近くの実家にいた崇城大学2年生の菊川稀玲さんが手がけ、学生の実家にいた和泉助教がプロジェクトマネージャーを担当。その他、和泉研究室の卒業生であるフリーエンジニアの村上卓さんが避難所で、新垣圭祐さんが車の中でメインのプログラミングを行ない、インフラとコミュニティ連携を山ノ内さんが担当するという体制だったという。

 初期バージョンはHTMLとPHP直書き+MySQLで実装。機能面ではまず「水が出る」「出ない」を地図上にプロットするというシンプルな実装からスタートし、その後はポップアップや投稿情報を時系列で絞り込めるフィルタ機能などが追加された。バックエンドは、EC2 Classicのt1.microにLAMP環境を載せたシンプルな構成。開発はFacebookのグループでやりとりしながら、「ぶん投げ開発スタイル」「脳内タスク管理」「フィーリング実装」(山ノ内氏)で行なわれたという。もちろん、避難所のメンバーもおり、余震に怯える中で「コーディング時の姿勢がきつい」「バッテリが切れるので、今日はコミットできない」などの劣悪な作業環境だった。

JS
mizuderu.infoの第一形態はシンプルなEC2 Classicの構成

本震翌日:本職の参入とAWS環境の強化

 初期バージョンはスピード優先だったが、16日夜からはデプロイを容易にするため、Elastic Beanstalkの導入準備がスタートした。そして、本震の次の日にあたる17日には「第二形態」であるElastic Beanstalk化した初のリリースが行なわれた。アマゾン ウェブ サービス ジャパンからは特別クーポンも提供され、コスト面での憂いもなくなったという。

JS
デプロイを容易にするためにElastic Beastalkを追加したmizuderu.info第二形態

 同時に和泉助教のつながりのあるエンジニアがFacebookグループに招集され、17日の午後にはJAWS-UGや関西PHPグループが開発・運用に参加。本職のエンジニアが次々と参加したことで、開発は一気にスピードアップした。IPアドレスで外部公開され、非VPCだったAWS環境も「第三形態」に進化。17日の夕方から18日の昼にかけて、最新のt2.microの導入、VPC内への移動、MySQLのRDSへの分離、さらにAutoScaling設定とELBの追加などが一気に行なわれ、ドメイン取得とRoute53の運用も開始された。そして同日の夜にはSNSでの拡散がスタートし、投稿もさらに増え始めたという。

JS
VPCへの移動、ドメイン取得、MySQLのRDS化などを施したmizuderu.info第三形態

本震後2日目以降:NHK砲到来にも耐えたAWSのインフラ

 ユーザーグループの参加で、大量のプルリクエストが行き交い、「なにも考えずにマージしたくなる状態」(山ノ内さん)だった18日。負荷対策として、インスタンスがm3.medium 4~8台という構成に変更され、ついにCDNサービスであるCloudFrontまで導入。夜にはmizuderu.infoについて放送したいわゆる「NHK砲」が到来したが、無事にトラフィックをさばくことができた。まさにクラウドの本領発揮と言える。

JS
mizuderu.info開発のタイムライン

 わずか2日で急成長したmizuderu.info。投稿は4月20日をピークとし、1週間かけて緩やかに収まっていった。現在はサービスを完全に停止しているが、MITライセンスで公開されているため、フォークして利用することが可能だという。

震災の中でコードを書き、コミットし続けたメンバー

 山ノ内さんの全体概要説明に引き続いては、各メンバーがコメントした。初期バージョンを開発した菊川稀玲さんは、風呂に入っている時にまさかの大揺れ。その後、和泉助教の求めに応じてスマホのGPSで位置と水の出る、出ないを投稿し、Google Mapに表示するというもっともベースとなる機能を実装した。とはいえ、グループ開発に移行した段階で、「もう出番がないなと思い、休みを満喫していました(笑)」という。

JS
初期バージョンを開発した崇城大学の菊川稀玲さん

 菊川さんは、「途中からはすごいすごいと言いながらただ見ていた。なかなかできない体験で面白かった」と感想を語る。さらにmizuderu.infoをフォークし、避難所までの行き方を検索できる「suguderu」というアプリを作ってみたという。まさに学生さんらしい好奇心だ。

 続いて登壇したのは、開発と運用を手がけた熊本のフリーエンジニアである村上卓さん。本震時に棚が倒れて、命の危険を感じて、家族と外に出たという村上さんが和泉教授から召還されたのは17日。電気が回復したため開発に参加したが、「そのときはまさかひたすらマージしてデプロイという生活になるとは思わなかった」(村上さん)という。

JS
プルリク開発の要となった村上卓さん

 当初、村上さんが骨を折ったのが複数存在していたリポジトリやシステムの統合。開発当初、mizuderu.infoの前身となるサービスは、テスト用、公開用などGitHubリポジトリが複数あったほか、Elastic Beanstalkの環境も別れていた。それらを名前から判断し、統合するのが大変だったという。

 JAWS-UGやPHPユーザー会などが参戦した中盤以降は、スプレッドシート等に書かれた機能を実装した大量のGitHubのプルリクエストをひたすらマージするという作業だった。4月17~20日がコミットがピークで、開発が終了した4月24日までには277のコミットが行なわれたという。ちなみにmizuderu.infoはアクセスのなくなった7月7日に正式にクローズされている。

mizuderu.infoリリースまでをつないだ「とある漏水サービス」

 菊川さんの後に登壇した福岡のエンジニアである星野雅治さんは前震の段階で、給水・漏水を投稿するアプリを開発し、4月19日の段階でmizuderu.infoにデータを統合したといういきさつから参加。「個人のエンジニアが復興支援で感じたこと」と題して講演した。

JS
mizuderu.infoに先んじて漏水データサービスをリリースした星野雅治さん

 4月14日の前震の際は、福岡で熊本のエンジニアと呑んでいたという。翌日、熊本のエンジニアとミーティングし、SNSなどの投稿を見て、給水・漏水箇所の特定が重要と感じた星野<3287>さんは、16日に給水状況を投稿できるサービスを構築・リリース。「東日本大震災の時のサービスが使えるかと思ったけど、意外と残っていなかった。とてももったいない。でも、動いてないのであれば、作るべきだなと思った」(星野<3287>さん)。その後、本震後を受けた18日に漏水状況を投稿できるサービスを構築・リリースし、19日にはmizuderu.infoのチームから連絡を受け、漏水データを提供し、自身のサービスをクローズした。

 星野<3287>さんは自身のサービスを振り返り、「個人の作ったサービスなんて、当初は誰も見なかった。Facebookで拡散をお願いしたのですが、なかなか情報が集まらなかった」と語る。その後、5000人くらいのフォロワーを持つFacebookページに掲出してもらったところ、PVは一気に1000/1日に跳ね上がった。ちなみにサービス終了後、星野<3287>さんは周知方法を探したところ、Google Ad GrantsやTwitter for GoodなどのNPOや復興支援向けの広告支援サービスがあったという。今後はこうしたサービスを活用し、認知させていくことも検討したいところだ。

 名前すらなかった星野<3287>さんのサービスだが、mizuderu.infoが漏水機能をリリースするまでの約28時間で50件の情報を取得できた。「サービスの公開を速くするのは、有事の際には求められていることだと思う」と語る星野<3287>さん。一方で、災害時の情報ニーズの一部ではあることも理解している。「水というのは人間にとっては命に関わる情報だし、そこをサポートできたのはよかった。でも、サービスとしてはまだまだやることはあると感じている」とまとめた。

JS
サービス公開の速さが功を奏し、mizuderu.info公開までの28時間の漏水情報が得られた

仕組み作りが得意なエンジニアが災害で貢献できること

 開発メンバーのコメントが終わった後は、登壇者に新垣圭祐さんが加わったメンバー全員が参加し、アスキーの大谷による公開取材が行なわれた。

IT
mizuderu.infoの参加者と大谷によるセッション

 まず苦労した点を聞くと、「(平常時と違って)なにしろ焦る。ハンズオンではまるようなポイントに確実にはまる(笑)」(山ノ内さん)、「Facebookに放り込まれたけど、誰も知っている人がいなかった」(菊池さん)、「慣れてないPHPのマージ作業」(村上さん)、「勢いで作っているので、どういった機能を実装すればよいか決めるのが大変」(新垣さん)などのコメントが返ってきた。一方で、星野<3287>さんによればデータベースの移行はシンプルだったので苦労はなかったという。

 特に苦労したのは、やはりコミュニケーション。内部ではFacebookでやりとりしていていたが、コミュニティ連携ではSlackを採用。一時期は両者の内容をコピペする作業が発生していた。また、タスク管理も当初はFacebookで行なっていたが、タイムラインで流れてしまうため、Googleスプレッドシート、Backlogを経て、最後はGitHub Issueになったという。「Facebookのメッセージは過去をたどるのが大変で、検索も難しかったので、半日間くらいいろいろ使って、最終的にGitHub Issueに落ち着いた」と山ノ内さんは振り返る。

 こうしたmizuderu.infoでの経験値としては、「意思決定があれば、顔を合わせないでも開発できた」「普段やっていないプルリク開発が体験できた」(村上さん)「悩んでいるよりは、とにかく作って公開することがなにより大事だと感じられた」(星野<3287>さん)などがあったという。

JS
漏水・給水箇所をプロットするmizuderu.infoのPC版

 最後、災害に対してエンジニアはどのように貢献できるか? また、どんな課題があるのか?を聞いたところ、「いくら情報があっても、それがうまく提供できなければ意味がない。自分たちなら、わかりやすく情報を提供できるのではないか」(菊川さん)、「東日本大震災の例ではないけど、有事の際にはいつでも使えるようメンテナンスしておくことが重要」(星野<3287>さん)、「役所の人と話したが、情報の精度を担保する仕組みが必要だと感じた」(村上さん)、「普段から会社以外のつながりがあると、今回のようにすぐ動ける」などのコメントが返ってきた。

 ボランティアスタッフとしても働いた山ノ内さんは、「荷物を運ぶよりも、荷物を運ぶための仕組みを作った方が、はるかにたくさんの人を救えると思った。仕組みを作るのはエンジニアの得意技なので、そちらに注力することで、災害時も役に立てると思う」とまとめた。

 なお、10月22日に行なわれるJAWS FESTA 東海道 2016では、「熊本地震で作成した水がでるでないを登録するWebサービス「mizuderu」の被災地での開発ヒストリー」と題したパネルも行なわれるので、興味ある人はぜひ参加してもらいたい。


アスキー
もっと見る もっと見る

【あわせて読む】

    最終更新: 10月19日(水)07時00分

    【関連ニュース】

    【コメント】

    • ※コメントは個人の見解であり、記事提供社と関係はありません。

    【あなたにおススメ】