プログラマーのメモ書き

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

避難所検索@伊勢 v1.1 をリリースしました

伊勢市のオープンデータを利用した、避難所検索@伊勢ですが、細々と改修しています。 今回は、避難所データを動的に変更できるように改修して v1.1としてリリースしました。

play.google.com

もっとも、使う分には今までと大きく違わないので、変わった感じはしませんけどね。

あと、こちらにサポートサイトという形で、いくつかの情報をまとめるようにしました。避難所をタップした際に表示されるデータについても、ある程度整理してみました。

お暇なときにでも、一度アプリを試してみていただければと思います。

で、以下は、今回の改修に関する雑多なメモになります。

避難所データの更新について

避難所データの更新は、既存のオフラインマップの更新の仕組みと同じ方法を用いています。

具体的にはソースコードを見ていただければいいんですが、簡単に書くと、

  1. 所定のファイル名を持つ避難所データのファイルと、その日時を表すタイムスタンプファイルを S3 にアップロードしておきます
  2. アプリ起動時(または、メニューから更新確認を実行時)に、S3 上のタイムスタンプファイルを確認し、
  3. アプリ内のファイルより S3 側が新しければ、ファイルをダウンロードする
  4. ダウンロードしたファイルに応じたチェック処理を行い、問題がなければ更新する

というものです。

参考までに、S3 へのアップロードスクリプトを gist に載せておきます。

なお、

  • オフラインマップの生成とアップロードについて興味があれば、こちらの記事
  • 避難所データの作り方に興味があれば、こちらの記事

もご参考にしてください。

余談

実は、避難所データの更新は、上記に書いた既存のオフラインマップの更新の仕組みを使うか、 Firebase の Remote Config を使うか、ちょっと迷いました。

で、 Firebase Remote Config のサンプルアプリを動かしたり、ドキュメントを読んだりした感触としては、

  • 今ある避難所データ(初期データ)を与えているファイル形式(CSV)は直接扱えない
  • しかし、 JSON にすれば Remote Config でも扱えそう
  • アプリ側のデフォルト値ももてる

ということでした。

なので、これで進めようかなとも考えたのですが、現状の設計だと、初期の避難所データは SQLite に入れて扱っていて、これとの兼ね合いをどうするか若干すっきりしなかったので、今回は見送りました(順当に更新できるときは問題なさそうなんですが、更新に失敗するような場合の処理がちょっと見えませんでした)。

設定画面で管理するようなデータなら、うまいこと使えそうなんですけどね。まあ、せっかく調べたのでどこかで活かそうと思います。