社内Jetpack Compose勉強会について
こんにちは。株式会社ココナラアプリ開発グループ、Androidチームの藤永です。
今回は、ココナラのAndroidアプリチームで取り組んでいるJetpack Compose勉強会について紹介します。
背景
ココナラのAndroidアプリのUIはまだ大部分がAndroid Viewで実装されていますが、新規のUIについてはJetpack Composeで実装する方針をとっています。
参考: Jetpack Compose導入時の記事
その一方で、小さい開発タスクでは既存のAndroid Viewに対して改修が加わることも多く、特にメンバーの入れ替わりもある中でなかなかキャッチアップが難しいという課題がありました。
メンバーが感じている課題や不安としては以下のようなものがありました。
- 既存のJetpack Compose実装でなぜそのような実装を選択したのかがわからない
- Android Viewでは実装できるが、Jetpack Composeでの実装方法がわからない
- プルリクを見ても良いやり方なのかどうかの判断がつかない、レビューに時間がかかる
これらの課題や不安の解消にむけて、隔週でJetpack Composeの勉強会を開催することにしました。
勉強会の内容
この勉強会は、事前にワークを実施してその結果をミーティングで議論・相談するという形を取っています。
あまり細かいルールは定めずに「まずはやりはじめてみよう」という方針で、2023/10/05からスタートしました。
テーマから少しそれるような相談事や共有も歓迎する、ゆるい形式です。
フェーズを大きく区切ると、現在では3つめにあたる取り組みをしている最中です。
Phase1: おさらい
未経験のメンバーもままいることから、まずは基礎からおさらいすることにしました。
題材としては公式から提供されているPathwaysを選択し、何回かに分割して各メンバーで消化することにしました。
それぞれの視点で気になったところや、なるほどと思ったところを共有のドキュメントにもちよって議論・解決をしていきました。
上がってくるポイントはメンバーによって様々で、たとえば以下のようなものがありました。
- 「デフォルトのModifierを指定すると再利用しやすくなる」ってどういう理屈?
-
LaunchedEffect
のkey
について、読んでもよくわからない。。 -
@Stable
や@Immutable
について補足 - API Guidelines for Jetpack Composeについて補足
これによって、各メンバーの理解度を一定のラインまで引き上げるとともに、一人で読んでいて違和感を覚えてもそのまま読み飛ばしてしまうような小さな疑問をひとつひとつ解決していくことができました。
また、今後ガイドラインのドキュメントを拡充していくうえで重要になりそうなポイントを押さえることができました。
Phase2: 既存実装のリーディング
次に、これまでココナラAndroidアプリにてJetpack Composeで実装された画面から特定の画面をピックアップし、その実装を各自読み直してから疑問点や課題点の共有・議論をしました。
また、実装したメンバーから以下のような概要を説明しました。
-
Navigation
の実装 - 実装内容と社内ドキュメントとの対応関係
- 各種デザインコンポーネントと実装との対応関係
- 他の画面でも使用するような実装(ページング制御やボトムシートの実装、
BackHandler
の制御など) - 振り返って、良かった実装やあまり良くなかった実装
これによって、既存実装の読み解き方や、設計の背景、新規画面を実装する際に気をつけるポイントの理解を深めることができました。
Phase3: 既存Android View画面のリプレイス
ここが現在取り組み中の部分となりますが、リソースの都合でなかなか新規画面を作成したりリプレイスしたりする機会がないということもあり、実際に手を動かすフェーズを設けることにしました。
特定のAndroid View実装の画面を題材にして、各メンバーで試作ブランチを作成してリプレイスしてみるということを実施してみています。
まだ結果は見えていませんが、メンバー間でお互いの実装を参考にして、今後の実装をブラッシュアップしていければと考えています。
まとめと今後について
今回はココナラのAndroid開発チームで実施しているJetpack Compose勉強会で取り組んでいる内容をお伝えしました。
Jetpack Composeでの実装はまだまだ手探りな部分も多いですが、開発する際の個々の不安ごとを解消していく意味でも、チームとしての対応力を底上げしていく意味でも、引き続き取り組みを続けていきたいと思います。
ココナラでは、一緒に事業のグロースを推進していただける様々な領域のエンジニアを募集しています。
アプリ領域だけでなく、フロントエンド領域・バックエンド領域などでも積極的にエンジニア採用を行っています。
少しでも興味を持たれた方がいましたら、エンジニア採用ページをご覧ください。
Discussion