🤖

DroidKaigi 2022 セッションレポート #1

2022/10/11に公開

株式会社TOKIUMの坂上(HN: にしこりさぶろ〜)です!この記事では、10月5日(水)-7日(金)の3日間に渡り開催されたDroidKaigi 2022にて、聴講したセッションの中でも印象に残ったモノをいくつか紹介していきます。

コロナ前から数えると3回目の参加であり、何よりも久しぶりのオフラインということで、開催前から非常に楽しみにしておりました!どのセッションも魅力的で、身体が1つしかないことを悔やむ気持ちも3年ぶりだなと感じながら、当日に臨みました。

今回僕が紹介するのは、以下の3つです。

Compose for Desktopで始めるAndroid開発効率化ツールの作成

解説

株式会社ゆめみのAndroidエンジニア、y_katsuragawaさんによるCompose for Desktopを使った開発効率化ツールの紹介、および実装解説のセッションでした。

作成したツールは、開発者オプションの設定変更やダーク・ライトテーマの切り替え等、Androidエンジニアが日々の開発で直面する繰り返し作業の効率化を目的としています。利用するフレームワークにCompose for Desktopを選定した理由として、「Jetpack Composeと同じ文法、似たAPIでデスクトップアプリを開発でき、学習コストが低くメンテナンスの属人化を防げる」ことを挙げていました。

また、作成したツールは、Guide to app architectureでGoogleが推奨するアーキテクチャに沿って実装されており、実際のコードを見せながらの丁寧な実装解説に多くの時間が割かれていました。

感想

デスクトップアプリ・Webアプリの実装に対応したCompose Multiplatformを使ったアプリ開発の実例紹介、といった内容でした。僕自身もプライベートでCompose for Desktopでの開発に挑戦したことがあり、有用性の高さを感じていたものの、なかなかアプリ開発の事例が表に出ることはなく同時に寂しさも感じていました。

今回、丁寧な解説とサンプルコードが共有されたことで、Compose for Desktopでのアプリ開発に挑戦する開発者は確実に増加するのではないかと思います。また、効率化ツールの中で利用されていた、Kotlin製ADBコマンドヘルパー・Adamも利用し甲斐のあるライブラリだと感じました。時間を作って触ってみようと思います👍

Androidのモダンな技術選択にあわせて自動テストもアップデートしよう

解説

株式会社DeNAのSWETチームに所属する、Nozomi Takumaさんによる自動テスト関連のセッションです。

Coroutines・Jetpack Compose・Dagger Hiltに代表される、モダンなAndroidアプリ開発で利用されることの多い技術のテスト方法を広く浅くカバーする内容です。コード解説だけでなく、Guide to app architectureで推奨されるレイヤ毎にどのような観点で自動テストを用意すればよいかも説明されており、自動テストがないプロジェクトにこれから自動テストを導入しようとする開発者に対し、最初の道標となるようなセッションでした。

感想

自動テストの初心者にとってキャッチアップの難しい、データレイヤとUIレイヤ、それぞれどのような観点で自動テストを書くべきかの整理がされていた点が非常に参考になりました。また、Coroutinesを使ったRepository・ViewModelのハマりどころ、およびそれらの解決策とどうして上手く動作しないかの解説が過不足なくされており、多くの開発者の指針となるセッションだったと感じています。

弊社のAndroidアプリの自動テスト環境は僕が中心となって整えたのですが、重要な部分はこのセッションで紹介された姿に近い状態で実現できており、安堵した記憶があります☺️ 現状のテスト環境にたどり着くまでにはかなりの試行錯誤があったため、欲を言うともっと早い時期にこのセッションと出会いたかったと思いました😇

余談ですが、Takumaさんとは2019年のDroidKaigiのスピーカーディナーで話して以来、3年ぶりの再会となりました。DeNAブースに遊びに行った際、テストに関する話ができて大変嬉しかったです!ありがとうございました 🙇

実例から学ぶJetpack Composeのパフォーマンス改善

解説

株式会社CyberZのAndroidエンジニア、Mori AtsushiさんによるJetpack Composeのパフォーマンス分析、および改善に関するセッションです。

従来のAndroid Viewとの違いを踏まえた上で、Jetpack Composeの描画処理について簡単な説明から入り、予期しないUIのパフォーマンスの低下に対する調査と修正の道筋を順序立てて解説する内容でした。

不要なRecompose(=再描画)を発見するためのツールとして、Layout InspectorやProfilerの紹介と状況確認の仕方、そして不要なRecomposeを防止するためにどのような状況で変更が検知されるのかの解説もされていました。

感想

Jetpack Composeの仕様について深く理解していることが伝わってくる発表だったと感じました。パフォーマンス改善の実例を見せるため、わざともっさり動くアプリを実装し、紹介していましたが、これはRecomposeに対する深い理解が要求されます。僕自身も、Recomposeの部分は感覚的にしかキャッチアップできていなかったため、言語化された状態でインプットすることができ、大変参考になりました。

また、パフォーマンス改善に対する「早すぎる最適化を避ける」姿勢が念頭に置かれていた点にも、大きな共感を感じました。問題が生じた時、必要な対応をスピーディに遂行できるよう、ツールの紹介や修正の方針がまとめられており、全体を通してすぐに業務に活かすことができる、実践的な知見共有になっていたと思います。

全体を通して

Android開発チームのリーダーとして長く業務をしている僕にとって、DroidKaigiは正にホームグラウンドのカンファレンスなのですが、Android開発の領域における自身の成長と足りないところを同時に振り返ることができ、非常に有意義な時間とすることができました。数年ぶりの再会(なんならリアルでは初めましても!)となる知り合いともたくさんコミュニケーションを交わすことができ、この場を準備してくださった全ての方々には感謝してもしきれない気持ちでいっぱいです。

また、チームメンバーと示し合わせることなく参加した過去2回とは異なり、事前に視聴するセッションを教え合ったり、昼休憩やMeetupで感想を話し合うなど、普段の業務ではなかなか得られない濃い時間をチームメンバーと共有することができました。単純に楽しかったですし、得た熱量を積極的に共有することで、得た知見を業務に反映させるモチベーションは1人の時よりも明らかに大きくなった実感があります。今後も、同僚を巻き込む参加スタイルは継続していきたいですね😊

来年は、2019年以来の登壇ができるように頑張りたいです!💪 スタッフ・スポンサー企業、そして今回お話してくださったみなさん、本当にありがとうございました🙇

株式会社TOKIUM テックブログ

Discussion