DroidKaigi 2025 参加レポート コミュニティが彩るAndroidの祭典〜

9月10日から12日にかけて、ベルサール渋谷ガーデンでDroidKaigi 2025が開催されました。

今回2025年で11回目を迎えるDroidKaigiは、1,200人の参加者を迎え、47のセッションは熱心な聴講者で盛況でした。本記事では、現地会場の様子をレポートします。

Workshop Day(9月10日)

1日目のWorkshop Dayでは、JetBrainsのDeveloper AdvocateであるSebastian AignerさんとMárton Braunさんを講師に迎え、Building cross-platform apps in Kotlin with Compose Multiplatformと題し、Kotlin Multiplatform(以下KMP)とCompose Multiplatform(以下CMP)について手を動かしながら学べるワークショップが催されました。

初日に開催されたワークショップ

内容はKMPやCMPを基礎から学べるほか、データベースライブラリのRoomを使った状態の永続化や、IDEからアプリの再ビルドなしでコード変更を即時反映できるCompose Hot Reloadなど、便利なライブラリや最新のツールも取り込まれています。

アーキテクチャやDependency Injection(以下DI⁠⁠、ナビゲーションなど、アプリケーション開発のコアとなるライブラリが一通り出揃ったと実感でき、KMPやCMPの成長と成熟を感じられました。画面遷移を司るナビゲーションライブラリではnavigation-composeに代わってNavigation3のマルチプラットフォーム対応が進行中とのことで、今後のさらなる発展が楽しみです。

自分のノートパソコンで作業する参加者

会場はほぼ満席で、参加者はスタッフのサポートを受けたり、互いに教え合ったりと熱心にワークショップに取り組んでいました。昨年以上にKMPとCMPの盛り上がりを感じられましたし、KMPがクロスプラットフォーム技術のひとつとして確かな地位を確立しつつある現状は、Androidエンジニアとして非常に喜ばしいことだと感じます。

Conference Day(9月11日⁠12日)

2日目と3日目はConference Dayです。招待公演を含む47のセッションに加えて協賛企業のブース出展や参加者同士のミートアップなど、多彩なイベントがある点も特徴です。

Welcome Talk

参加者を出迎えるWelcome Talkでは、代表のmhidakaさんと主要スタッフから、カンファレンス内容や公式アプリについての紹介がありました。

Welcome Talk

今年から公式アプリの開発体制が大きく変わっており、この場で改めてtakahiromさんからkitakkun(筆者)へ開発リードの引き継ぎが行われました。

公式アプリの開発引継も行った。takahiromさん(左)と、kitakkun(筆者、右)

セッション紹介

AIやKMP、Jetpack Composeの盛り上がりを感じつつも、個性的なセッションも数多く見られ、非常に多様性に富むカンファレンスとなったと思います。ここでは、3つのセッションをピックアップして紹介します。

Navigating Dependency Injection with Metro

発表者のZac Sweersさんは、Navigating Dependency Injection with Metroと題して、自身が手がけるDIフレームワーク「Metro」を紹介しました。

本セッションでは、DIのモチベーションとフレームワークの必要性を説いた上で、Metroの機能とKotlin Compiler Pluginでの実装詳細を解き明かします。

発表者のZacさん

DIフレームワークとしてのMetro、Kotlin Compiler PluginとしてのMetro、2つの視点で解説されていた点が印象的で、ライブラリの使い方のみではなく多角的な学びや気づきのある非常に有益なセッションだと感じました。

Metroは、KSPやKAPTで実装された他のDIフレームワークと比較して、40%〜70%のビルド時間短縮を実現しています。コンパイラが扱う中間表現のFIR(Frontend Intermediate Representation)やIR(Intermediate Representation)を直接操作するため、ビルドパイプラインがシンプルになり、1度のコンパイルでDIを実現できるとのことです。

コンパイラへの関与ではFIR拡張とIR拡張を明確に使い分けています。複数のモジュールを横断した可視性をもつ宣言情報を生成したり、誤った使い方を検出して利用者をガイドする目的でFIR拡張を活用していました。多くのことはIR上で実現しているようですが、100近くのFIRチェックが実装されていると聞き、大変驚きました。

今回のDroidKaigi 2025公式アプリでも「Metro」を採用しています。筆者としては初めて触るDIフレームワークでしたが、丁寧なドキュメントとエラーメッセージが上手く正しい使い方へと導いてくれた記憶が鮮明に残っています。

Kotlin Compiler Pluginとしても、新しいDIフレームワークの選択肢としてもウォッチしておきたいライブラリのひとつです。

Android Librarian's Guide: Building Robust Libraries and SDKs

発表者のJaewoong(skydoves)さんは、Android Librarian's Guide: Building Robust Libraries and SDKsと題して、堅牢でメンテナンスしやすいライブラリやSDKの設計指針について発表しました。

本セッションでは、ライブラリを公開・メンテナンスする上で知っておきたい事柄を包括的にカバーしており、ライブラリを開発する前にぜひ一度は目を通しておきたい内容となっています。

発表者のskydovesさん

ライブラリの公開API(API Surface)を最小限にする重要性、互換性を意識したアップデート戦略、Androidアプリケーション特有のバイナリパッケージAAR(Android Archive)に含まれるリソース管理や推移的依存関係の複雑さなど、幅広いトピックをカバーしています。

特にskydovesさんが主張した公開APIを最小限にする重要性について、ライブラリの開発者と利用者双方の視点が印象的でした。ライブラリ制作者は、公開APIの可視性を確たる意図を持って選択する点が重要です。そうすることで制作者は内部的な変更を加えやすくなる上、利用者は新バージョンへの移行時に最小限の変更を確認するだけで済みます。それ以外にもJava VMにおける拡張関数の可視性の落とし穴や、KotlinコンパイラのExplicit API modeを使ってアクセス修飾子の明示を強制する運用戦略も紹介がありました。

公開APIを追加してから削除するまでのライフサイクルや、バイナリ互換チェックツールのMetalavaやBinary Compatibility Validatorを用いた運用に関しても言及があります。

これらの内容からライブラリのメンテナンスは、利用者の視点に立って行う重要性を強く感じます。ライブラリ開発の作法以外にもAndroid特有の観点にも目を向けていく内容となっており、AARで公開するリソースを最小限に抑えたり、推移的依存関係の注意点など、まさに「Androidライブラリアンの手引き」と言えるセッションだと感じました。

UIだけじゃないComposeの可能性 ━ 宣言的に奏でるメロディ

発表者のusuiatさんはUIだけじゃないComposeの可能性 ━ 宣言的に奏でるメロディと題して、Compose Runtimeが構築するComposition TreeをUIに反映する仕組みを丁寧に紐解きながら、その仕組みをUI以外の領域に応用する新しいアプローチに迫っています。

本セッションでは、その題材としてCompose Runtimeを活用して宣言的に音声処理を実現する方法を紹介しています。

発表者のusuiatさん

Compose Runtimeは、Composition Treeと呼ばれる木構造でデータ管理しており、主にUIが利用ターゲットです。木構造の管理にはComposer・Recomposer・Applierが関与しています。順にComposition Treeの構築、更新、そして木構造に対する操作の反映を担っており、シンプルでありながらパフォーマンスを意識しています。

セッション中で紹介している宣言的音声処理ライブラリ「Koruri」では、このCompose Runtimeの仕組みのうち、木構造へのノード配置を担当するReusableComposeNodeとApplierとを活用し、音声用の木構造を独自に構築していました。最終的に構築された木構造を音声出力へと変換している点が特徴的です。

Compose Runtimeでは木構造を構成するノードに情報を持たせることができるため、Compose UIでいうところのModifierのような修飾子の役割を、KoruriではSignalProcessorが担う形で設計していました。宣言的に書く対象がUIから音声に変わっても、概ね近いAPI設計を実現できるのが面白かったです。

特に印象に残った例は、発展的なユースケースとしてキーボードを作るくだりです。UI描画と音声処理を同じレイヤーに似た書き方で共存させられるのはCompose Runtimeを活用した設計ならではの書き方だと思いました。

Koruriのように宣言的な記述が美しくハマると気持ちが良いですね。実務やその他の具体的な応用例を考える点が一番難しいところですが、Android開発者が何気なく使っているCompose Runtimeへの理解を深めつつ、新しい可能性に気付くことができ、大変勉強になりました。

まとめ

本記事では、DroidKaigi 2025当日の模様についてレポートしました。魅力的なセッションとイベントが出揃い、本当に素敵なカンファレンスでした。

筆者は、ボランティアスタッフとしてカンファレンス公式アプリの開発リードを担当しています。運営への参加ははじめてで、これまでとはまた違った視点からイベントを楽しめました。参加者数1,200人という大規模なカンファレンスがどのように運営されているのかも知れる良い機会にもなりました。何よりも、コミュニティの熱量を強く感じることができました。

開発リード前任者のtakahiromさんは、2018年から2024年までの7年間にわたって公式アプリのメインメンテナを務めていました。筆者は、2022年から2024年まで公式アプリにコントリビュートしており、takahiromさんにレビューしていただいた記憶が今でも鮮明に残っています。長きにわたりDroidKaigiを支えていただき、本当にありがとうございました。

DroidKaigi公式アプリでは、⁠技術的に挑戦すること」を大切にしています。今年もその精神にのっとり、試行錯誤を重ねながら、自分なりにこだわり抜いて設計しました。コントリビュータの皆さまのご協力のおかげで、たくさんの刺激をもらいながら、素晴らしいアプリを作り上げることができたと思います。

運営に関わってくださった皆さま、公式アプリにコントリビュートいただいた皆さま、そして参加者の皆さま、本当にありがとうございました!

YouTubeのDroidKaigi公式チャンネルでは、セッションの録画を公開しています。当日見られなかったセッションや、もう一度見直したいセッションがあれば、ぜひご活用ください!

DroidKaigiでは今後も様々なイベントや企画を予定しています。X公式アカウントをフォローして、続報をお待ちください!

おすすめ記事

記事・ニュース一覧