2022年Kyash Androidチームがやってきたこと

これは Kyash Advent Calendar 2022 の17日目の記事です こんにちは。@dosukoi_androidです。

2022年Kyash Androidチームは色んなことをやってきました。 それをずらずらと書いていこうと思います。

Compose本格導入

2月にリリースしたKyashリワード機能からJetpack Composeを本格的に導入しました。 それまでに試験的に一部画面でComposeを導入することはありましたが、丸々1つの機能をComposeで作り上げることは初めての試みでした。 初めての本格導入ということで、まだチーム内のComposeに関するお作法が決まっていなかったり、ハマりどころがわかっていないこともあり、かなり苦戦する部分もありましたがこのプロジェクトで培ったナレッジをチーム全体で共有できたのは大きかったです。 Composeであまり使われていないMotionLayoutを使ったり、まだaccompanist時代のWindowInsetsなども使いました。

KMM本格導入

同プロジェクトでKMMの本格導入も始まりました。こちらもCompose導入と同じくお作法が決まっていない、ハマりどころがわかっていない、などの苦労もありましたが、なんとかリリースまで持っていくことができました。 KMMは未だにチーム内で設計の議論が多く行われていて、「Kyashの中でKMMのあり方はこう!」みたいなものが完全に決まっているわけではありませんが、日々の議論の中で少しずつ洗練されていっているので今後が楽しみです。

Widgetリリース

これはAndroidチームというより、Mobileチームの取り組みです。 Kyashで初めてWidgetのリリースを行いました。 Widgetのナレッジがない中、iOSエンジニアと相談しながら進めていきました。 Mobileチーム内に閉じた話だったので、仕様からリリース時期の設定まで全てエンジニアが行うプロジェクトでしたが、いい形に着地できたんじゃないかと思います。

独自ViewModelの廃止

KyashはJetpackのViewModelが誕生する前からリリースされていたアプリです。それ以前からMVVMというアーキテクチャは存在していたため、独自にライフサイクルに合わせてkillされるようなViewModelを作っていました。 ですが、JetpackのViewModelが誕生してからそちらを使うようになり、JetpackのViewModelと独自のViewModelが混在している状況が発生していました。 そこで2021年中頃から独自のViewModelを廃止して、JetpackのViewModelに統一しよう、という流れになっていました。 2021年にある程度の独自ViewModelを消すことができ、まだ残っていたかなり大きめの独自ViewModelを2022年にほぼ消すことができました。 記憶は定かではないですが、統一しようと話が出てきた頃は100以上の独自ViewModelがあり、骨が折れる作業だなと思ってましたが、終わってみるとかなり嬉しいものですね。

Compose Themeの策定

これは主に@_rmakiyamaさんが主導してくれたものです。 Kyash AndroidはComposeを導入したのはいいものの、ダークテーマ対応を見越したThemeの設定ができていませんでした。 というのも色の設定をするのに

@Composable
fun Hoge() {
    Box(modifier = Modifier.background(color = KyashTheme.colors.blue))
}

というように直接色の設定をしていました。本来はprimarysecondaryを使うべきです。 それをmakiyamaさんが「ダークテーマ対応の時に泣いちゃうよ」と助言をくれたので、入社して2週目くらいのタスクでお任せすることになりました。

マルチモジュール分割

Kyash Androidは元々マルチモジュール構成にはなっていたものの、大半の機能がcoreモジュールに集約していました。新規機能は新しくfeatureモジュールを作るものの、既存機能はcoreモジュールから切り離せていない状況でした。 これではマルチモジュールの恩恵をうまく享受できません。coreモジュールをいじるといちいちビルドに時間がかかるし、coreモジュール内ならどこへでも依存できてしまいます。 ということで、機能ごとにモジュールに切り出すことになり、2022年初めは5つのfeatureモジュールだったところを12個のfeatureモジュールに分割できました。 計測してないのでフルビルドが早くなったかは不明ですが、coreをいじることは確実に減ったと思います。

これから

今年は古くなっている技術を新しい技術に置き換えていったり、新しい技術を取り入れたりしてきました。 ですが、まだまだ古い技術を採用している部分、Deprecatedになっているのに放置されている部分が数多く存在します。(warningが400近くあったり...) 新機能の実装も大切ですが、プロダクトの保守性もかなり大事です。そしてKyashはそれをエンジニアだけでなく、多くのPMやbizのメンバーも理解してくれているので、保守性を高めていくことを是とする文化になっています。 来年も新しい技術の導入やリファクタリングをたくさん進めていけたらいいなと思っています。 Kyash valueの”頂点思考”にもあるように、これからもKyash Androidの技術を最高の技術に近づけられるように頑張っていこうと思います。

おわりに

Kyashの技術に興味がある方、俺ならもっとKyashをイケてるプロダクトにできるぜ!という方、イケてない技術を見るとワクワクする方、ぜひお話ししましょう。 * Podcast Kyashfm * Kyash People Team | note * 株式会社Kyash の全ての求人一覧