clusterのAndroidチーム開発フローについて紹介

こんにちは!クラスター社でSoftware Engineerをしているkyokomiです! 
今回は、clusterのAndroidアプリ開発をどんな風にやっているのかについて話そうと思います。

Androidアプリの構成

まず、ざっくりclusterのAndroidアプリについて紹介しようと思ったんですが、去年のクラスターAdvent Calendar 2021に書いた内容から大きく変更はないので、もしよかったらこちらを御覧ください!

clusterのAndroidアプリ開発状況2021版 - Qiita

Androidチームの構成

メンバーたち

5月からuzzuがjoinしてくれて、clusterでAndroidアプリ開発を行っているメンバーは現在4人になりました 🎉

最近リリースされた 興味のあるイベントは「気になる」でイベント通知が届くように のAndroid開発をさっそく担当するなど大活躍で、めちゃくちゃ助かってます!

1週間の流れ

以下の図のような感じになります。かなりスッキリしてるように見えるんですが、所属チームごとにミーティングや担当しているepic(cluster を支える epic という開発フロー - メタバースプラットフォーム)のミーティングなどもあるので、ここにあるのはAndroidエンジニアとして把握しておくとよいものだけになっています。

一週間の流れ

まず、月曜日にAndroidチームメンバーで、定例のミーティングを行っています。
そこで何を話しているか、紹介していきたいと思います。

クラッシュやエラーなどの確認

直近のリリースでクラッシュ発生が増えていないかなどを把握し、調査・対応を迅速に行うのが目的です。

  • Android Vitalsのクラッシュ率の先週比を確認
  • Firebase Crashlyticsのクラッシュ通知と非クラッシュの通知を確認(新しいものがないか?件数が異常なものはないか?など)

直近の1週間でAndroidアプリ開発関連で何かやることがあれば共有

基本的にはepicのメンバーで別途デイリーミーティングが行われていて、そこで細かい仕様や設計の話をしています。そのため、ここでは以下のような会話を事前に行うことで、そのepicに参加していないメンバーがレビューする時のハードルを下げる、レビューの手戻りや設計方針などのすり合わせを行う目的です。

例)

  • 「今週から○○のepic開発をはじめるので、レビューをお願いすることになりそう」
  • 「こういう改善タスクをやろうと思ってて、○○のライブラリ導入を考えているがどうだろうか?」
  • 「○○のバグを調査しているが、難航していていい案とか何か情報があったら教えてほしい」

バグの棚卸し

クラスター社では、タスクなどのチケット管理にAtlassianのJIRAをつかっています。
ここでは、QAやリグレッションテストで出たバグやCSチームからの報告などでJIRAに起票されたチケットの中で優先度が高いものをその週で対応可能な人にアサインします。

改善・リファクタの進捗確認

後述する 月1でやっていること の今月やる宣言した改善・調査タスクの進捗状況を共有します。

その他共有(雑談など)

各位が持ってきたAndroidに関するネタについて雑談してます。
大体は、AndroidDagashiを見ながらワイワイ雑談したりしています。

月1でやっていること

第1月曜日に今月やる改善タスク宣言

Androidチームメンバーで、Android改善Board(JIRA)の中から1ヶ月以内くらいで対応可能なボリュームのタスクを選び、各位やっていき宣言します(1ヶ月のスプリント計画みたいなもの)

※ちなみに、1ヶ月で終わらない規模になりそうなタスクであれば、話し合って着手可能にするためタスク分割なども適宜行います

Backlog

Board

例えば、最近自分がやったことだとAndroid13がBetaになったあたりで、Pixel5をAndroid13に更新し実際にclusterをインストールして一通り触ってみる検証をやりました。
ざっと動作確認したところ特に大きな問題はありませんでしたが、1点気になったのはアプリ起動時に通知パーミッションの権限取得ダイアログが表示されることでした。

こちらに関しては公式ドキュメントには以下の記載があり、APIレベルを33にあげる対応が必要なことがわかりました。

アプリが 12L(API レベル 32)以下をターゲットとする場合、権限ダイアログは、最初の通知チャンネルの作成時に表示されます。通常、これはアプリの起動時です。

https://developer.android.com/about/versions/13/changes/notification-permission#new-apps

となると、あとはtargetSdkVersionを32 -> 33に更新する検証をやってから通知許可ダイアログを明示的に呼び出す実装を行うだけなので、別途JIRAのチケットを作成してタイミングをみて着手という流れでやっていくという流れになります。

追加したJIRAのチケット

他にも uzzuがGradle ScriptをKotlin DSLに移行してくれたり、ライブラリ更新を定期的に行うためrenovateの導入などを検討してくれていたりで改善がガンガン進んでおります!

第3水曜日にモバイル雑談会

Androidチームメンバーだけでなく、iOSチームメンバーも含めての勉強会みたいなことをやっています。
流行りのライブラリの話やイケてる他社のアプリを触ったり、Google I/OやWWDCの話をしたりなどざっくばらんという感じです。

最近は、全員が軽いLT(小ネタやTIPSみたいな話でOK)をするくらいの気持ちで何かネタを用意しようという感じでワイワイやっています。

モバイル雑談会の様子

JetpackCompose移行計画

新規作成画面は基本的にJetpackComposeで作成しているため、clusterのアプリ全体の残り50%くらいが古いxmlのUIとなっている状況です。
「やるぞ!やるぞ!」って言ってるだけだったので、まずは一覧を作成しました。
月1の今月やっていく改善タスク宣言で、1〜2個くらいやっていって年内にはほとんどCompose化したいな〜とか個人的に思っています!!

JetpackCompose移行リスト

おわりに

Androidチームはどんな開発フローなのかという紹介でした!

クラスター社では各職種絶賛採用強化中で、Android開発メンバーだけではなく様々な職種でメンバー募集してますので興味のある方は是非お話だけでも聞きに来てください!

メタバースというとUnityやゲーム開発っぽい側面が強い印象を持たれがちですが、普通のモバイル開発もモダンな技術でバリバリやっているので、Androidアプリ開発したい!というエンジニアの方のご応募もお待ちしております!!