プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

避難所検索@伊勢(β版) をリリースしました

はじめに

今年度の頭頃(2017年4月頃)だったかな?伊勢市がオープンデータライブラリを公開しました。

オープンデータが増えてくれると、開発側としてはいろいろとうれしいことが多いので、大いに応援しています(頑張れー!伊勢市さん)。 といっても、誰も使ってる・見てるよ、という反応がないと、市役所の方もきっと残念がるでしょうから、早速オープンデータを使った何かを作ることにしました。

というわけで、作ったものを紹介します。

作ったもの

最初に結論を先に書いときます。

作ったのは、Android用アプリ『避難所検索@伊勢』で、現在地の近くの避難所を検索して表示するアプリです。 災害時でも利用できるように、オフラインでの地図表示を行います。

f:id:junichim:20170707150102p:plain

こんな感じになります。

まだ、β版ですが、気になる方がいれば、 Google Play から試してみてください!

play.google.com

ここまでの経緯

さて、以下ではこれをリリースするまでの経緯について書いておきます。

何をするか?

伊勢市でオープンデータの整備が始まったのを受け、作るものをあれこれ検討しました。まず公開されているオープンデータ(検討したのは2017年4月頃)を見ながら、いろいろと考えてみました。

最初は、伊勢市内の町毎の人口のデータがあったので、人口の移り変わりを一時期はやっていたインフォグラフィック的に見せるのも面白そうだと考えました。 国を挙げて、少子化対策・人口減少と言ってますからね。

伊勢市のオープンデータライブラリのデータには、町名ごとの人口はあるのですが、位置情報がありません。そこで、国土交通省の位置参照情報を見てみました。

位置参照情報ダウンロードサービス

両者を突き合わせると、その町を代表する地点の緯度経度がわかるので、地図上に表示できそうです。

ということで、これでいけそうかなと思い、CartoDB (今は CARTO と呼ぶみたい)を使って、ちょっと取り組んでみました。 最終的に、わかったことは、意外と町ごとの違いが目立たないし、町を地図上の一点で表示させると面白くないし、かといって、町の境界を表す多角形を定義して・・・なんてやり始めたら、仕事の時間が無くなってしまうし、ということでした。

もし、また気が向いたら、アイデア練り直してみよう、ということで、サクッとやめました。

次のネタ

で、次に浮かんだのが、避難所データを利用するアプリです。ほぼ一年前のOSC名古屋2016でも、オープンデータの避難所データを使うアプリの話があったので、悪くない線だと思います(もっとも、自分も参加していたのですが)。 アプリの機能としては、災害時での利用を想定して、インターネットが使えない環境でも、現在位置に最も近い避難所を検索できるアプリ、というものです。

構成

最初は、Google Map + マイマップ機能 で十分代用できるんじゃないかと思ったのですが、調べてみると日本国内だとGoogle Map の地図はオフラインモードで使えないようです。実際、自分のスマホで試した時も使えませんでした。

ということで、OpenStreetMap を利用して地図表示を行うことにしました。

今回作るのは、Android版のみですので、地図表示は、 Mapsforge というライブラリを使います。 また、現在位置から近くの避難所を探す際は、直線距離だとあまり現実味がないので、経路検索をするために、 GraphHopper というライブラリを使います。 まさか、経路検索ライブラリもオープンソースで使えるとは思ってなかったので、ちょっと感激です。

オフライン地図データの更新や避難所データの更新をどうしようかという点も気になったのですが、まずは使ってくれる人がどれだけいるかわからないので、それらの点は後回しにしています。 実際に対応するなら、特定のURLをチェックして、更新版があればダウンロード、という形になるんだろうな、きっと。

ということで、取り急ぎ作成したものが上記のものになります。 あと、このアプリのソースは、GitHub で公開しました。興味がある方はどうぞご覧ください。実装がいけてない点も多々あると思いますが、その点はご勘弁ください。

github.com

ライセンスは Apache License 2.0 です。

あ、あと、技術的なことなどはおいおい(気が向いたら)ブログなり、Webサイトなりに書いてきたいと思います。

今後

オープンデータに限ったことではないのですが、この手の無料版アプリの難しいところは、作って公開するまでは開発者のモチベーションさえあればなんとかなるのですが、その後の維持管理が難しいところです。 実際、オフライン地図データをどうやって定期的に更新させるのか、メンテナンスはどうするか、など色々と気にはなってきています。 (自分を振り返ってみても、過去に作ったもので、その後放置になってるものもあるんですよね、実際)

そういうわけで、当面は(まだモチベーションが続きそうなんで)メンテナンスすると思いますが、先々のことはまたその時に考えたいと思います。