GO TechTalk #27 タクシーアプリ『GO』AndroidでのreCAPTCHA導入・WebADBでの自動化

2024年6月18日に「GO TechTalk #27 タクシーアプリ『GO』AndroidでのreCAPTCHA導入・WebADBでの自動化」(connpass)を開催しました。

本記事では当日の内容を簡単に紹介します。

GO TechTalkとは?

GO TechTalkは、GO株式会社のエンジニアたちが、タクシーアプリ『GO』をはじめとしたサービスやプロダクトを開発する中で得た技術的ナレッジを共有するイベントです。

タクシーアプリ『GO』を担当するAndroidエンジニアは、ComposeやCoroutine、MVVMといった基本的な技術の他に、普段はあまり触れることがないものの、プロダクトを支えるために必要な技術をキャッチアップして使う機会があります。

26回目となる今回は、reCAPTCHAやWebADBといった普段はあまり触れる機会のない技術の導入による成功事例、そして残念ながら発生してしまった失敗事例への対処法など、ニッチではあるが関心のある方々にとっては非常に興味深いであろうトピックを紹介しました。

こちらのポストのスレッドで当日の様子や雰囲気を感じていただけると思います。

登壇者紹介

今回はこちらのメンバーが登壇しました。

タクシーアプリ『GO』を運営する中発生した様々な失敗例の紹介

日々のサービス改善と運営をする中で、たまに起きる失敗というものはどうしても避けられないものです。このパートでは、これまでに経験した失敗事例をピックアップし、そこから得られた教訓を紹介しました。

  • 社名変更に伴うパッケージ名の更新で苦労した話
  • ランチャーに表示されるアプリ名が意図しないものになった話1
  • ランチャーに表示されるアプリ名が意図しないものになった話2
  • ある日を境にGoogle Playの評価数が激減した話

また、本記事に埋め込まれているスライドには、イベント当日は紹介できなかった「ある日を境にGoogle Playの評価数が激減した話」の改善後のグラフも追加しているので、当日ご参加いただいた方もぜひもう一度スライドをご覧ください。

Q&A

Q. 社名にもサービス名にも依存しないパッケージ名というと、例えばどんなものが考えられますか?

JapanTaxiでは開発時のコードネームとして世界の都市名を使用していました。なんらか一定のルールを決めて名前をつけると良いのではないかと思います。

キッティングツールによる自動化でセットアップ時間を1時間から3分に短縮

GO株式会社ではエンジニアのスキルアップを促進するために、半期に2週間、日々のプロダクト開発から離れて新たな知識や技術の習得に取り組める「Engineer Challenge Week」という社内制度があります。

このパートでは、Engineer Challenge Weekの中で取り組んだ「乗務員端末のキッティング作業自動化」という事例を紹介しました。これまでのキッティング作業では、業務に不要なアプリを削除し、必要なAPKをダウンロードしてインストール、アプリに必要な権限を付与するなど、手順が多く、ヒューマンエラーが発生しやすい状況でした。

そこで、Android Debug Bridge(adb)を使ってキッティング作業を自動化したところ、1時間かかっていた作業を3分に短縮できました。どのようなadbコマンドを利用したかや、タップ操作が必要な手順をどう自動化したか、自動化したツールをどのように配布したのかといった具体的な手段についても紹介しているので、ぜひアーカイブ動画もご覧ください。

Q&A

Q. キッティング自動化の最中に少し待つステップが設けられているのはどのような背景があるのでしょうか?

自動化の中で画面を開く操作があり、画面が開く前に後続の操作が行われてしまわないようsleepを入れています。

Q. adbは不安定になると再起動など必要になりますが、WebADBの挙動の安定性はどうなのでしょうか?

今回の利用範囲だと特に不安定になったことはありませんでした。

タクシーアプリ『GO』の reCAPTCHA Enterprise 導入

タクシーアプリ『GO』ではインバウンドの需要増加に向けて、海外の電話番号を使ったSMS認証にも対応しています。ただSMS認証には過剰な不正リクエストによるサーバー負荷やサーバー利用料の増加など、さまざまなリスクが潜んでいます。リクエストの回数や間隔に制限を設けるなどの対策が考えられますが、アカウント自体を大量作成されてしまうなどの抜け道も考えられます。

このパートでは、不正利用防止の一環としてreCAPTCHA Enterpriseを導入した事例を紹介しました。ユーザー操作を妨げずに不正判定を行えるスコアベース方式の概要や、実際にreCAPTCHAを導入する際の実装例、導入結果、そして得られた知見として導入前に取り組んだ方が良いことなども詳しく紹介しているので、ぜひアーカイブ動画をご覧ください。

Q&A

Q. reCAPTCHA以外に不正利用を検出するために検討した製品・ライブラリはありますか?

Androidに限ったところでは、Play Integrity APIなども考えられると思いますが、今回はiOS含め導入したかったのでreCAPTCHAを選定しました。

Q. reCAPTCHAのスコア方式は、チェックボックス方式と比べてデメリットはありますか?

精緻な精度比較などはできていないですが、必ずしもチェックボックスの方が精度が上がるというものでもないので、デメリットはあまり感じませんでした。

Q. シーケンス図でSMS認証動線上のユーザー操作でリスクを評価するとありましたが、どのような操作がリスク行動として考えられるのでしょうか?

reCAPTCHAの内部ロジックまでは分からないですが、タップ操作の間隔などが考えられると思います。

アーカイブ動画

開催履歴・開催予定

GO TechTalk は不定期開催しています。過去の開催レポートは こちら にもありますので、ぜひご覧ください!

GO株式会社の最新技術情報は公式アカウント @goinc_techtalkで随時発信していきますので、ぜひフォローして続報をお待ちください!