MoTLab -GO Inc. Engineering Blog-MoTLab -GO Inc. Engineering Blog-

MoT TechTalk タクシーアプリ『GO』Androidの新ネタ2週間でいろいろ試してみた! #mot_tech_talk

AndroidtechtalkChallengeWeek
February 07, 2023

2023年1月19日に「MoT TechTalk #15 MoT TechTalk タクシーアプリ『GO』Androidの新ネタ2週間でいろいろ試してみた!」(connpass)を開催しました。

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

An image from Notion

MoT TechTalkとは?

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

15回目となる今回は、『Engineer Challenge Week(※)』で取り組んだGlanceAppWidget、AppActions、Showkase、Paparazzi、マルチモジュールなどをタクシーアプリ『GO』のAndroid版開発チームが紹介しました。

※『Engineer Challenge Week』は、MoTのエンジニアが半期に2週間、日々のプロダクト開発から離れ、普段できない技術チャレンジや時間があればやってみたいこと、新たな知識の獲得など、スキルアップのための期間を与えられるという取り組みです。

詳しくはこちらの記事もご覧ください! 参考:取締役エンジニアとして考える新しい個人と組織の成長の形 - Engineer Challenge Week

Engineer Challenge Weekでの取り組みの一部は、すでにテックブログでも公開しているのでこちらもどうぞ! 参考:Engineer Challenge Week関連の記事一覧

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

登壇者紹介

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

  • Androidアプリエンジニア:駒井 覚
  • Androidアプリエンジニア:山本 晃平
  • Androidアプリエンジニア:祖父江 徹也
  • Androidアプリエンジニア テックリード:諏訪村 夏彦(@napplecomputer
  • 広報:高堂 和芽(@sandgirl_14

Glance App Widgetでウィジェットを作ろう

このパートではAndroid Dev Summit 2021で発表された「Glance」を用いてウィジェットを実装するまでの以下の流れをサンプルコードを交えて紹介しました。

  1. 導入方法
  2. GlanceAppWidgetを継承したクラスを作成
  3. GlanceAppWidgetReceiverを継承したクラスを作成
  4. widget_initial.xmlを作成
  5. widget_metadata.xmlを作成
  6. AndroidManifest.xmlにGlanceAppWidgetReceiverとmetadataを追加
  7. GlanceAppWidgetReceiverを実装していく
  8. GlanceAppWidgetを実装していく

さいごに実装してみての所感や、従来の手法との違いも紹介しているので、これからGlanceを採用したいと考えている方はぜひご覧ください。

まだ日本国内で利用できないAppActionsにトライしてみた

AppActionsはGoogle I/O 2018で発表された機能で、Android端末のGoogleアシスタントからアプリ機能を起動できるというものです。2023年1月時点では一部のLocaleにのみ機能提供されており、日本語ではまだ利用できません。

このパートではAppActionsの技術検証の成果として、実装の流れや使ってみての所感を紹介しました。

またタクシーアプリ『GO』に導入できたら、どのようなことが実現できそうかのユースケースも紹介しているので、AppActionsの活用方法に関心ある方もぜひご覧ください。

Showkase、Paparazziを用いたビジュアルリグレッションテストの導入にチャレンジした話

現在、タクシーアプリ『GO』ではBitriseとFirebase Test Labを用いてビジュアルリグレッションテスト(※)を行っているのですが、新機能追加や仕様変更をUIテストコードに反映するのに手間が掛かっていました。 ※コードの変更前後で画面のスクリーンショットを比較し、意図しない画面への影響を検知するためのテスト

このパートでは、前述の課題解決としてShowkaseとPaparazziが活用できないか、それぞれのライブラリの概要、実装の流れや技術検証をしてみての所感を紹介しました。

Composeで実装された画面には限定されますが、同様の課題に悩んでいる方も多いと思うので、そういった方の参考になるとうれしいです。

domain層のモジュール化

2021年12月にアーキテクチャガイドが刷新され、随時ドキュメントが追加されています。

タクシーアプリ『GO』は旧来のアーキテクチャガイドの推奨方式を採用していたのですが、古いドキュメントも削除されてしまっていることや、今後新しく参加する開発メンバーの学習コストを考えると、新しいアーキテクチャへの追従が必要と考えました。

新しいアーキテクチャへの追従にあたり、いくつか考慮が必要なことがあったのですが、このパートではその中の「domain層のモジュール化を行うか」という点について検討した内容を紹介しました。追従前のBeforeと今回検討した3つの案について、それぞれのメリット・デメリットを紹介しています。

最適なモジュール構成はアプリの特性やフェーズによっても異なるので絶対解ではありませんが、一例として参考になればと思います。

アーカイブ動画

開催履歴・開催予定

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

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

We're Hiring!

📢
Mobility Technologies ではともに働くエンジニアを募集しています。

興味のある方は 採用ページ も見ていただけると嬉しいです。

特に今回登壇したメンバーが所属しているポジションはこちらのページで紹介していますので、ご興味持っていただけた方はぜひご覧ください。

普段の業務内容についてはこちらの記事でも少し触れているので、こちらもどうぞ! 参考:Androidエンジニア必見!タクシーアプリGOのUXを高める工夫 #mot_tech_talk