見出し画像

入社2ヶ月でやったAndroidアプリ周りの改善

こんにちは、株式会社カウシェで Android アプリを担当している @tummy です。
今まで正社員 1 人、複業の方 1 人で実装していた Android アプリですが、正社員として自分が入り余裕もできたので、カウシェのバリューでもある「Try First」 で Android アプリ周りの改善を行っています。
入社して 2 ヶ月ほど経ち、改善をいくつかやってきたのでその内容についてご紹介します。

(入社エントリはこちら)

主にやった改善は以下の 4 つです。順に中身について触れていきます。

  • Bitrise の Slack 連携

  • いくつかの画面を Jetpack Compose 化

  • Feature Flag の仕組みを刷新

  • モジュールの役割を明確化しつつ分割

Bitrise の Slack 連携

Bitrise のページや GitHub でステータスを見に行かないと確認できない状態だったため、ビルドのログをひとまず流すようにしました。社内メンバーへのアプリ配布で Firebase App Distribution を使っていますが、そのビルドやリリースフローもある程度 Slack からできるようにしていきたいと考えています。

いくつかの画面を Jetpack Compose 化

kauche-android の 1st commit は約 2 年前、当時はまだ Jetpack Compose も 1.0.0 の alpha 版が出たばかりだったため ViewBinding を用いた実装をしていました。歴史については詳しくはこちらを見てください 💁‍♀️

Stable 版がリリースされ Jetpack Compose の導入記事がたくさん投稿されるようになった現在、カウシェも同様に Jetpack Compose 化を進めているところです。かなり ViewBinding を使っているところは減ってきましたが、まだ商品詳細など影響が大きい箇所も残っているので引き続きやっていきます。

Feature Flag の仕組みを刷新

object で定義していて、必要なときに書き換えてビルドし直すことで適用していた kauche-android での Feature Flag。これを今後を見据えて仕組みを刷新しました。
enum で定義するように変え、今後 Remote Config など API 経由で取得する場合が来てもいいように Repository を定義して Kotlin Coroutines の Flow で受け取れるように変更しました。
また、デバッグメニューからフラグを切り替えできるようにすることで毎回ビルドし直す必要がなくなりました、これが結構便利。

このようにスイッチで切り替えられるようになっています

モジュールの役割を明確化しつつ分割

施策を進めていく中で、とある PR で拡張関数をどこのモジュールに置くべきか議論することがあり、それをきっかけになんでも屋さんになっていた core モジュールを整理して分割する動きをはじめました。ちょうど最近公式からモジュールを分割する際のガイドがリリースされていたため、それをとても参考にさせてもらっています。
そのガイドでも例に上がっていた Now in Android のリポジトリのモジュール構成に近づけていく予定です。

自分が入社した直後のモジュール構成はこんな感じ
Now in Android のモジュール構成

また、モジュールが増えてくるとどこに置けばいいかがわからなくなってくる状態になりつつあるので、README 等に説明を書いてカバーできるようにする事も考えています。

まとめ

Android チームミーティングを隔週でやり始め、実装していてやりにくい部分やもっと改善できる部分を議論し、コードベースにどんどん手を入れていく流れができてきました。
引き続き施策の実装と並行して Android の改善をやっていきます。Meety もやっているのでもし気になった方いればお話しましょう〜 🙆

採用情報はこちらからぜひご覧ください。


この記事が参加している募集

仕事について話そう

この記事が気に入ったらサポートをしてみませんか?