こんにちは、小林です。
12月16日にGoogle渋谷ストリームで開催された 「DevFest & Android Dev Summit Japan 2022」でLTしてきました。
資料
資料 人生初登壇
実は今回のLTが私の人生初登壇でした。初めてなのにいきなりの大舞台で緊張で心臓が無くなりそうでした。
登壇が決まってからは、社内メンバーや社長にも登壇資料のフィードバックもらったり発表の練習に付き合っていただいたりとサポートいただきました。
LTに収まらなかった内容と補足
15分LTと時間に決まりがあったので、優先的に話したいことを盛り込みましたが、その過程で落として内容もあります。
ちょっとだけこの場で紹介したいと思います。
ターゲット
このLT資料は自分なりにターゲットを固めてから作りました。
ターゲットは次の通り設定して、その人たちの役に立てればと言う想いで資料を作りました。
- Jetpack Composeを触れたことがなく導入に踏み切れない人
- Jetpack Composeを導入したいがチームでどうやってすすめばいいか迷っている人
- Jetpack Composeを導入することで得られるメリットを誰かに説明したい人
既存アプリへの導入
を呼び出す形で実装しています。おいしい健康AndroidアプリはFragmentベースで実装されています。
下記のようにFragmentからComposeViewの画面へ画面遷移するときに苦しみが発生しそうな懸念があります。
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return ComposeView(requireContext()).apply {
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
setContent {
MaterialTheme {
ExampleScreen()
}
}
}
}
ナビゲーションはJetpack Navigationを利用しています。 Navigation Composeはおいしい健康では利用していません。すべてがComposeにはなっておらずComposeで実装している範囲でのルーティングをNavigation Composeにした場合、Composeの画面からFragmentの画面へ画面遷移するときに苦しみが発生しそうな懸念があります。(実際のところどうなんですかね?知っている人いたら教えてください)
Twitter Compose ルール 導入
今後の展望としてお話ししていたTwitter Compose ルール ですが検討は結構進んでいます。
チームでTwitter Compose ルールを輪読しつつ採用するルールをピックしてみました。
ktlintかDetektであれば導入できるようになっており、おいしい健康ではktlintを導入しているのであとは導入するのみです!(決意表明)
Atomicデザインは早々に廃止
Composableを切り出す粒度を揃えるために導入したAtomicデザインですが、ちょっとチームに合わないこともあり早々に廃止していました。
うまく運用できればよいと思うのですが、おいしい健康のデザインシステム自体がAtomicデザインにはなっていないので、実装側のみで導入してもうまく運用できるはずもありませんでした。
今は、チームに合わせた切り出し方を検討中です。
スクリーンショットテストの導入検討
paparazziなどのスクリーンショットテストの導入を検討しています。
DroidKaigiでセッションがあったので聴講した感じ、Junitライクな記述で可能そうだったので個人的に導入への心理的ハードルが下がったこともあり導入してみたいです。
これもLTでは話してませんが、今後の展望の1つですね。
We are hiring!
おいしい健康ではAndroidエンジニアを募集しています。
- 「もっとComposeの導入の話を聞きたい!」
- 「今後Compose触りたい!」
- 「これからAndroidアプリ開発してみたい!」
という方、カジュアル面談で話しましょう!