はじめまして、Androidエンジニアの Matsuura です!
2025年9月11日〜12日の2日間、弊社からは私を含めて3名で DroidKaigi 2025 に参加してきました。
今年は昨年に続いて 2 度目のオフライン参加でしたが、会場は今年も大盛況でした。
投稿されたプロポーザルは 313件 にのぼり、年々規模が拡大しているのを実感しています。ちなみに、私も昨年に続いてプロポーザルを提出したのですが、惜しくも不採択でした 😢(来年こそ採択されるよう頑張ります!笑)
それでは、今回視聴したセッションの中から、特に印象に残ったものをいくつかご紹介します。
セッション紹介
UIだけじゃないComposeの可能性 ━ 宣言的に奏でるメロディ
Jetpack Compose を支える仕組みである Compose Runtime を、自作の 音声処理ライブラリ(Koruri) への応用事例を交えながら解説していただきました。
Jetpack Compose のパッケージ構成は以下のようになっており、下にいくほど抽象度の高いレイヤーになっています。
- androidx.compose.material / androidx.compose.material3
- androidx.compose.foundation
- androidx.compose.ui
- androidx.compose.runtime
このうち Compose Runtime は名前の通り、androidx.compose.runtime にあたり、Node で構成された Composition Tree を作成・更新する役割を担っています。 UI の描画そのものは他のパッケージが担当しており、Compose Runtime そのものは描画処理を直接行っていない、という点は私自身、初めて知りました。
また Compose のエントリーポイントである ComponentActivity.setContent { … } を呼び出すことで、Compose Runtime を構成する
- Composition(Composition Tree を管理する)
- Composer(Composition Tree の構造を決定する)
- Recomposer(状態変化を監視し、Composition Tree の再構築を行う)
などの仕組みが初期化されます。従来の Android View に Compose を埋め込んだ際にパフォーマンス劣化が起きると言われる理由も、この辺りに起因しているのだと理解できました。
今回のセッションを通じて、Compose Runtime の全体像を俯瞰できたのは大きな収穫でした。興味のある方はぜひチェックしてみてください!
Androidエンジニアとしてのキャリア
「どんなキャリアを歩んでいきたいのか?」という問いに対して、自分なりの答えは持っているものの、どこか漠然としていて「本当にこれでいいのか?」と不安に感じることがあります。今回のセッションは、そんなモヤモヤを解消するヒントを得たいと思い、視聴しました。
まず、「さまざまな挑戦を通じて、自分の得意・不得意を知ることの大切さ」 を改めて感じました。これまでのキャリアを振り返ると、苦手だと思い込んでいた分野でも、実際に取り組んでみると楽しさややりがいを感じたり、周囲から評価されたりした経験があります。まだキャリアは5年半ほどですが、食わず嫌いをせず、積極的に新しいことに挑戦していこうと思います。
次に、「理想像を描き、定期的に振り返ることの大切さ」も感じました。理想像は必ずしも最終形である必要はなく、数か月先や半年先、1年先の姿でも十分で、その理想像に少しずつ近づけているかを確認することで、キャリアを正しい方向に進めていけるのだと感じました。
さらに「マネジメント or IC」というテーマでお話がありました。登壇者の日高さんも両方を経験したうえで、現在は IC として活躍されています。私自身はまだマネジメントを経験したことがありませんが、「自分には向いていない」と早い段階で決めつけてしまうのは時期尚早なのかもしれません。実際に経験することで、意外な楽しさや適性を発見できる可能性もあると感じました。
キャリアを考えるきっかけにもなると思うので、興味のある方はぜひ!
スライド:https://speakerdeck.com/mhidaka/droidkaigi-2025-androidenziniatositenokiyaria
そのAPI、誰のため? Androidライブラリ設計における利用者目線の実践テクニック
このセッションでは「ライブラリ開発時のテクニック」が紹介されていました。 特に印象に残ったのは「機能性と自由度」というテーマです。
ライブラリは機能を充実させればさせるほど、利用者側でのカスタマイズが難しくなる傾向があります。その両立の好例として紹介されていたのが Jetpack Compose です。Compose では高レベル API と低レベル API の両方を公開することで、便利さと柔軟さのバランスをうまく取っています。この設計思想には大きな気づきを得ました。
また、この話はライブラリ開発に限らず、日常の開発にも通じると感じました。視点を広げれば、「複数の機能から参照される実装をどこまで共通化すべきか」という設計上の問いに対するヒントにもなるのかなと感じました。
弊社でも「どこまで共通化すべきか?」はよく議論になります。共通化の範囲を誤ると、将来的な機能拡張の中で条件分岐だらけの使いづらい実装になってしまうことがあります。今回のセッション内容を応用すれば、低レベルの API を core module に配置し、高レベルの API を別 module に切り出す、といった設計アプローチは時と場合によっては、有効になりうると感じました。
ライブラリ開発者はもちろん、幅広いソフトウェア開発者にとって学びの多いセッションだと思いますので、興味のある方はぜひチェックしてみてください!
協賛エリア
カンファレンスの醍醐味といえば、やはり協賛エリアの訪問ですよね!今年もさまざまなブースを回り、多くの開発者の方々とお話ししながら、ノベルティ集めにも励んできました。
普段から利用させていただいている TVer さんのブースにも訪問させていただきました。記念にお写真を掲載させていただきます。(ガチャガチャは残念ながらハズレでしたが、景品として TVer ロゴ入りポーチをゲットできました!)
最後に
昨年に続き、今年で2回目のオフライン参加でしたが、非常に濃密な2日間を過ごすことができました。 前職で一緒に開発をしていたメンバーや、かつて弊社で働かれていた方々と交流できたのも、オフラインならではの良さだと改めて感じました。
来年は DroidKaigi スタッフとして、コミュニティを運営する立場にも挑戦できたらと思っています。 最後まで読んでいただき、ありがとうございました!
Source link
コメント