TextGoダウンロード

2021年3月29日月曜日

Googleマップで配達先の建物名が違って見つけられなかったので、他の地図アプリやWeb地図をすぐに参照できるようにしました

先週だったか先々週だったかの配達でのことですが、配達先のピン付近に到着したので、UberEatsの公式配達員アプリに出ている地図や、Googleマップを見て確認しても該当のマンションの建物を見つけることができませんでした。ピンの立っているところに建物があるのですが、名前がまったく異なっていて、ビルではあるもののマンションらしい外観でなくて、本当にそこなのか確信がなく、仕方ないのでお客様に電話をしました。結局、その建物が、該当の配達先だったのですが、Googleマップで違う名称が出ているのに、そこに突撃するというのは躊躇してしまいます。あとから、Yahoo地図を見てみると、その建物には、注文者が入力した建物名がちゃんと記載されていました。


この件で思ったのは、配達先で、Yahoo!地図をすぐに参照できる方法があれば分かったかもしれないということです。それで、コンパニオンのマップアイコンをタップした時に表示できる地図を追加することにしました。

今まで、マップアイコンは、タップした時にGoogleマップのみを表示していました。新しいバージョンでは、タップとロングタップそれぞれに、好きな地図アプリや地図のWebサイトを選べるようにしました。タップ、ロングタップに複数の地図を選んだ場合は、メニューを表示してどの地図を表示するのか選べるようにしました。

表示される地図は、可能なかぎり、現在地点を適度なズームで表示するように調整してあります。

これで、配達先に到着した時に、Googleマップ以外の地図を当たってみることが簡単にできるようになります。


問題は、現在のバージョンではGoogleの位置情報に関するポリシーで現在地を常時取得できないということがあります。

今のところ、最後に取得できた地点の地図を表示してしまいます。対策としては、お手数をおかけしますが、コンパニオンの現在地を更新するために、一瞬でもコンパニオンのメイン画面を表示してください。

2021年3月28日日曜日

方位の分かるコンパスを付けました。

 先日、配達をしていて、二回同じ失敗をしてしまいました。はじめて行くレストランでピックした後、配達先に出発する際に逆に進んでしまいました。東西南北を逆に考えてしまったということです。夜でしたので、太陽の位置でも分かりません。すぐに気が付いてUターンしましたので、たいした時間ロスにはなりませんでした。

一回目は完全に迷ったので自覚はあるのですが、二回目は少し自信があったものの、勘違いしました。

それで、コンパスがあれば便利だと思い、なにか適当なものを買えばいいかとも思いましたが、多くのスマホには電子コンパスが搭載されていますので、それをコンパニオンで表示する方法を思いつきました。


コンパニオンのV1.022では、設定項目の中にコンパス表示のオン/オフを追加しています。それをオンにすると、オーバーレイの中に簡単なコンパスを表示します。表示されたコンパスの絵は端末の上側を基準に回転して方位を表します。タップすると、方位を音声でしゃべります。別にしゃべる必要はないのですが、たまに東西を混乱する方もいるため、そのような機能も付けました。

特に必要ない方はオフのままにした方が、画面の表示スペースをとりませんし、バッテリーの消費にも影響しません。

Googleの位置情報取得ポリシーに未対応のため、コンパニオンの一部の機能が正常に機能していません。

最近、またコンパニオンのアップデートをしています。
公式アプリの更新に対応したアップデートがきっかけなのですが、テスト使用していると、対応したいことが出てきて、それを行っているところです。その中でも、住所アシスタントの「事前住所検索」と呼んでいる機能のことで、住所テキストから緯度経度を検索し、現在位置からの方位と距離を表示する機能が正常に機能していないことに気が付きました。

昔は正常に動作していましたし、プログラムをどのように調べても原因が不明で、多くの時間を費やして調査をしました。その結果、Googleのポリシー変更が影響していることが判明しました。去年あたりから、端末の位置情報をバックグラウンドで取得する場合、申請を行い許可される必要があることになっています。
バックグラウンドというのは、サービスプログラムのことです。通常、Androidでは、最前面にあるアクティブなアプリしか動いていません。非アクティブになったアプリはスリープ状態になっています。それでもアクティブなアプリと同時並行で処理を行いたい場合の手段として、サービスプログラムがあります。
潜在的には、ユーザーの意識しないバックグラウンドで、サービスプログラムがプライバシーに関わる位置情報を収集する危険性があります。

コンパニオンは、他のアプリの上に重なって表示され、他のアプリと並行して動作することができるオーバーレイという仕組みを使っています。オーバーレイを実現するためにはサービスプログラムを使います。バックグラウンドで動作することが目的ではなく、オーバーレイを実現するための手段としてサービスプログラムを使っています。
このオーバーレイのサービスプログラムは、コンパニオンを起動した直後のメイン画面にある「配達支援サービス」スイッチがオンにされてはじめて生成され、また、オフにされてコンパニオンのメイン画面が終了すると、同時に終了します。
しかし、この仕組みが結果として、サービスプログラムが位置情報を取得するというGoogleのポリシーの事項に該当してしまいますので、どのようにしても位置情報の取得ができなくなりました。

解決できる方法は、審査で許可をとるということになりますので、現在、審査の申請を出しています。結果が出るのは最長3週間、さらにGoogle社内で勤務時間の調整が実施されていて、審査に通常よりも長く時間がかかっています。その後、審査結果が出たとしても、却下された場合、それ以上の時間がかかったり、最悪、解決不能ということになる可能性もあります。

現状、事前住所検索で計算した現在位置からの方位と距離は、最後にコンパニオンのメイン画面がアクティブだった時の値となります。メイン画面を再度、表示してアクティブにすれば、再び位置情報の取得が可能となり、一定時間おき(10秒おき)に方位と距離の再計算が走るので、それで、正しい表示に更新できます。
できますが、時間がかかり面倒です。

本来のアプリの機能向上ではなく、Googleのポリシー対応という非生産的なことに大量の時間を費やしていて、なんとも難儀な気分です。

ToDo

有給休暇を管理できるアプリをダウンロード