ヒロエルモノヲヒロウ日記

思いついたときが書き時

移動履歴を蓄積してみる(その1)

※2020/09追記

この企画、最終的に「逆ジオコーディング」のために利用していたサイトが無くなったようなので、現在はこの方法は利用できません。

一応記録としては残しておきます。

 

毎度毎度唐突ですが、私は「ログ」というものが大好きです。

もっと言うと、「ログを見る」ということより「ログを記録する」という行為そのものが好きで、さらに言えば「ログを記録する『仕組み』」が大好きだったりします。

 

そんな私は仕事やら帰省やらで「」に出ることが(多いと言うほどでは無いけれど)ちょいちょいあったりします。

そのたびに「位置情報」とか「移動履歴」をどのように記録していくかをよく考えるのですが、なかなか希望通りに動いてくれるものが見つかりませんでした。

f:id:gadgetterdog:20191210095724p:plain

やたらとバッテリーの消耗が激しかったり、「起動/停止の操作」が必要なので操作を忘れてしまったりと、使い勝手の面でちょっと残念だったりしたので。

 

 

なので、ここ最近で色々いじくったアプリやサービスを利用して簡単な「仕組み」を作ってみようかと思います。

できればプログラム的なものは極力組まずに済むように、もしくは既にあるものを流用できるように考えていきます。

 

要求したい仕様は下記の通り。

 

スマートフォンの位置情報を利用

・定期的に現在位置の位置情報を取得、蓄積

 →精度やタイミングはおおざっぱでOK。

・位置情報取得の「起動/停止」は意識しない

 →必要に応じて勝手に蓄積

スマホのバッテリー消費が大きいのは困る

・できれば位置情報は「地名」で見たい

 

ざっくりこんな感じですが、とりあえず少しずつ手をつけていきます。

 

今回は以前紹介した「MacroDroid」を使うことから始めてみます。

f:id:gadgetterdog:20191119152337j:plain

 Google Play で手に入れよう

「MacroDroid」には「指定の宛先にメールを送信」というアクションが用意されていて、メール本文に「直近の位置情報」を記載することができます。

もはや目的の大部分はこれで達成できていそうなものですが、「トリガー」と「運用」を考える必要があります。

メールを送った後のことはまた別途。

例によって詳細は省きつつざっくり進めます。 

 

動作としては前述の通りいちいち「起動/停止」の操作を意識しなくても必要なときに随時情報を取得してくれると言うことと、バッテリーの消費に大きな影響を与えないと言うことを考えないといけません。

 

実際の話としては四六時中位置情報を記録してほしいわけではなく、外出時にある程度緩やかに記録がとれれば良いと思っているので、まずは「外出」というトリガーを決めます。

「ジオフェンス」と言う機能で「設定したエリアへの出入り」をトリガーにするということもできますが、いちいち「対象/非対象エリア」を設定するのは面倒です。

考えてみると家にいるときや仕事場にいるときなどは基本的にWiFiに接続されています

ということは「WiFiから切断=外出」ということが成立するはずです。

トリガーはこちらの方が良さそうな気がします。

 

「アクション」の方ですが、「繰り返し」を設定することができます。

とりあえず繰り返しの条件を「次にWiFiに接続するまで」ということにしたループを作ってみます。

ただそのままだと怒濤のごとく位置情報を記録してアホほどメールを送りまくるということになり、バッテリーの消耗が激しそう以前にものすごく鬱陶しいことになります。

 

なので、「WiFiから切断」を関知して「WiFiの接続まで繰り返し」のループが起動したところで、まず「待機」を入れます。

その「待機間隔」ごとに位置情報を蓄積するという形です。

こまめに位置情報を取得・蓄積したい場合は数分程度の短時間で、ある程度の遠出以上の場合に限定したければ数十分以上などというように、ここはお好みで設定ですね。

「ちょっと近所のコンビニに」的な外出を記録したいかどうかと言う話かと思います。

 

更にマクロには「条件」という項目があり、曜日や時間帯などの日時条件や、バッテリー残量などを指定してその条件を満たすときだけ起動するようにも設定できるので、毎日の通勤をいちいち記録したくない場合とかバッテリー的に無茶させたくない場合などでもそれなりにコントロールできます。

 

待機時間の後に、ここで一旦「条件分岐」を入れて「WiFiの接続状態」を確認します。

WiFiに接続されていれば「既に外出は(一旦)終了している」ので「マクロの動作をキャンセル」としておくことで以降の処理を終了し不要な動作を防ぎます。

接続されていなければここで直近の緯度/経度」をメールで(どこかしらに)送信してループ先頭の待機に戻ることになります。

本文作成前に「強制的に位置情報を更新」ということもできます。

どの程度効果的かはわかりませんが。

 

ここまででとりあえず、「外出時に適当な間隔で現在位置の位置情報を取得して蓄積」という最低限は実現できました。

ただこれだけだと「蓄積」したところでメールが溜まっていくだけで何も面白くありません

「位置情報」と言っても「緯度/経度」だけなので地図に投入しないとどこだかわかりませんし

 

なので次は「蓄積後の処理」を考えていきたいと思います。

 

 

つづく。