TextGoダウンロード

2021年4月22日木曜日

コンパニオンのアクセシビリティサービスを常駐しないようにできる設定を追加しました。

コンパニオンは、動作中に2つのサービスプログラムを実行しています。オーバーレイサービスとアクセシビリティサービスです。

オーバーレイサービスは、コンパニオンを起動して「配達支援サービス」のスイッチをオンにした時だけ動いています。アクセシビリティサービスは、コンパニオンをインストールして、Androidの設定で、コンパニオンのアクセシビリティサービスをオンにしている間はずっと動いています。しかし、実際は、何もしていません。何もしていないのであれば、終了しても構いません。ただし、コンパニオンを使う時にまたAndroidの設定を開いてオンにする必要があります。

アクセシビリティサービスが常駐することで、端末の動作速度に影響することは微々たるものだと思いますが、メモリは少し消費します。あまり多くのメモリを搭載していない端末の場合、軽視できません。不要な時はオフにするというもありだと思います。

それで、コンパニオンに、アクセシビリティサービスを常駐しないようにできる設定を追加しました。気になる方は、そちらを変更してみてください。オフにした場合、「配達支援サービス」をオンにするたびに、Androidの設定画面が開き、コンパニオンのアクセシビリティサービスをオンにする必要があります。

無料/格安通話アプリで配達中の電話料金を節約できるようにしました

ピックやドロップ場所が特定できないとき、最終的にレストランやお客様に電話せざるを得ない状況になることがあります。以前から気にはなっていたのですが、それには通話料がかかります。もちろんコピー&ペーストして安い通話アプリに貼り付けることもできますが、そういう忙しい時に細々としたスマホの操作をするのは面倒です。

そこで、コンパニオンに新しい機能を追加しました。電話番号を取得して、好みの通話アプリを起動できます。現状、Skype、LINE Out、Rakuten Linkに対応しています。それ以外の場合はクリップボードにコピーまではしますので、その先は、お好みの通話アプリに貼り付けてご使用ください。対応通話アプリは、ご要望があれば調査して、可能であれば追加しますのでお知らせください。

コンパニオンは、公式配達員アプリの「レストランからのお知らせ」や「お客様のメモ」から、電話番号と思われる部分を検出して取得します。しかし、通常、電話をかける状況では、公式配達員アプリの機能でAndroid標準の通話アプリを起動して行いますので、「レストランからのお知らせ」や「お客様のメモ」からは電話番号を取得できません。コンパニオンは、Android標準通話アプリからも電話番号を取得するようにしました。そのため、レストランやお客様に電話したい時は、一度、Android標準の通話アプリの表示まで行くことで、電話番号を取得できます。


取得した電話番号に電話するには、コンパニオンのオーバーレイの通話アイコンをタップします。取得した電話番号を最大過去5件分、新しい順で表示しますので、かけたい電話番号をタップしてください。


コンパニオンのこの機能で、格安や無料の通話アプリを使い、経費を少し節約できますので、ぜひご利用ください。

2021年4月5日月曜日

設定の中のデバッグメニューについて

設定の中に「デバッグ」という項目があります。以前は非公開としていましたが、今はオープンにしました。

住所アシスタントとおつり計算機の動作テストができます。配達支援サービスをオンにし、オーバーレイを表示した状態で、デバッグメニュー内の該当項目をタップすると住所アシスタントやおつり計算機を表示できます。

編集行以外にデータが入った状態の住所アシスタントを表示することができますし、自動でしか表示できないおつり計算機を試すことができます。使い方を確認したり、設定の状態を試すのに使うことができます。


ログを取る機能もあります。これは、コンパニオンの動作ログではありません。公式配達員アプリから取得できた情報を記録します。常時オンにしておくことで、特定の状況でしか発生しない公式配達員アプリの情報を記録しておくことができ、なにか問題があれば、それを開発者に送信して確認を求めることができます。送信するときは、Wifiに接続することをお勧めします。また、送信時にメッセージを添付することができますので、現象の説明と発生した日時を記載していただくと助かります。

ずっと、ログを記録しっぱなしにしておくと、ストレージを使い続けるので一週間分のみ残すようになっています。そのため、一週間以内に送信しないと消えてしまいますので、ご注意ください。

コンパニオンの初回インストール時の面倒な設定と、位置情報の取得についての変更

コンパニオンをインストールされた方は、初回インストールする時に、オーバーレイだの、ユーザー補助だのと、なんどもなんども設定を聞かれて面倒に感じられたのではないかと思います。しかも、1ステップごとにアプリを終了させていたので、いちいちアプリを起動しなおす必要がありました。

最初の一回だけの手順ですが、まだコンパニオンを使ったことがない方には大きなハードルになると思っています。

最近位置情報に関する権限に関連して、初回設定のシーケンスを見直す必要があったのをきっかけに、全体的に見直しをしまして、毎回の設定ステップごとにアプリの終了はしないようにしました。また、位置情報の取得を強制しないようにしました。位置情報を取得しないと、いくつかの機能が実現不可能になってしまいますが、それを承知でユーザーがそのようにしているのであれば、逆らうこともありません。(ただし、位置情報があることを前提にアプリを製作することはできなくなります。)


むしろ、得体の知れないアプリにプライバシーにかかわるかもしれない権限を与えるというのに抵抗があるという点の方が難題かもしれません。信頼を得られるよう努力していきたいと思います。

ただ、権限を付与しても、それはアプリに対してのみであり、お使いのAndroid端末に対して恒久的な変更をするものはなく、アプリをアンインストールしさえすれば、もとに戻るはずです。とりあえずインストール時は、権限の許可はしてしまってもあまり問題はないと思います。


ところで、コンパニオンは、Androidシステムのバックグラウンドでサービスアプリとして動作することが可能です。ということは、常に位置情報をログに残し続け、それをサーバーに送信することが技術的には可能です。

現状コンパニオンにそうした挙動は実装されていません。配達時に鳴った時の位置、ピック位置、ドロップ位置は取得していて、サーバーに送信し記録しています。それらはコンパニオンの履歴ページで活用しています。

将来的に、なにかの用途に位置情報をロギングする機能を実装するようなことがあるとしても、利用者に対し、事前アナウンスと了解を得ることになります。

コンパニオンの使い方を説明したヘルプを作成しました

いつか作らなければと気になっていたコンパニオンのヘルプを作成しました。

使い方の説明書がないと、どういう機能が存在していて、どのようにして使うのかが分かりません。使う上で知っておいた方がいい予備知識も得ることができますので、深く使いこなすことができます。

ざっと作ったものなので、見やすいとは言えませんが、だいたい網羅しました。

必要に応じて加筆、更新していきたいと思います。

ヘルプはコンパニオンを起動したときのお知らせページ内のリンクからご覧いただけます。


しかし、コンパニオンのアプリの性質上、結局は何度か使わないとどのようにして使うものなのか理解できないと思いますし、そのあたりが最初にどういうアプリか分からず、とっつきにくいところで、課題ではあります。たぶん動画を作るのが一番分かりやすい気がしています。

コンパニオンは、いちおう、業務用途、プロフェッショナルユースですので、無骨であっても実用性を重視している面もあります。たとえば、文字が小さめだったり、ボタンにラベルが少ないというところに表れています。

UberEats配達支援アプリコンパニオンで「配達アプリ」ゼンリン住宅地図と自転車NAVITIMEに対応しました。

コンパニオンの対応地図アプリとして、「配達アプリ」ゼンリン住宅地図と自転車NAVITIMEを追加しました。

この2つのアプリは、Geoパラメータに対応しておらず、住所情報や緯度経度を渡して起動することができません。アプリを起動すること自体は可能なので、苦肉の策として、クリップボードに入れて起動することにしました。アプリが起動した後、ユーザー自身が自分で検索欄にクリップボードから張り付け入力する手間がかかります。ある意味こういう小手先の対応ででも、とにかくできればいいという発想で作れるのが個人製作アプリの強みではあります。

ちゃんと対応するには、ゼンリンとNAVITIMEに、問い合わせるか、要望を出してもいいのかもしれません。


「配達アプリ」ゼンリン住宅地図は、キーワードによる検索が弱いとか、約1,600円/月と安くないのが欠点ではあるものの、地図がキビキビ動き、番地で配達場所を特定する用途にはとても強力だと思います。そうした用途のみ無料で拝借することもできそうです。

自転車NAVITIMEや以前追加したKomootは、自転車のナビに特化しています。自転車は、バイクや車とルートファインディングのストラテジーがまったく異なりますので、自転車配達員用途としては強いです。ただ、Komootはアクティブですが、自転車NAVITIMEは最近やる気がなさそうなのが、心配ではあります。


優れた地図アプリや、更新された地図アプリの情報等がありましたら、ぜひお知らせください。

UberEats公式アプリの地図がチラついてクラッシュする原因

配達をしていて、配達先に到着する直前になると、UberEats公式ドライバーアプリに表示されている地図が高速にチラついて、反応しなくなることがあります。それで、強制終了→再起動となり、ああ、やっぱりUberEatsのアプリはバグっぽいな、と思っていました。

しかし、同様の現象を拙作Androidアプリ、コンパニオンの履歴ページでも体験しました。

推測での物言いですので、あんまり良くないですが、たぶんAdnroidアプリで使うことができるGoogleマップビューに問題があるのではないかと思います。このGoogleマップビューは、それ以外にも問題がありまして、Androidのバージョンによってはオーバーレイ上のマップ表示を消せなかったり、フォーカスを得ていないと動きがカクついたりします。コンパニオンでは、こうした問題をまだ完全に解決できていません。ブラックボックスであるGoogleのAPIの問題なので解決方法すら分かりません。

昔は、Yahooの地図を使う方法もあったようですが、Androidアプリの地図としてGoogleマップがディファクトスタンダードになってしまっている現状、すでに撤退してしまいました。


UberEatsの公式アプリ同様、コンパニオンでもGoogleマップ周りにおいて少々不安定なところがありますが、よりよい方法を常に検討していきたいですし、Googleがいずれ修正してくれるのではないかという期待もあります。

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

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