📝

【イベントレポート】DroidKaigi 2024 Wrokshop Day

2024/09/11に公開

まえがき

こんにちは!株式会社Voicyでモバイルエンジニアをしているおぎです。
2024年9月11日から開催されているDroidKaigi 2024のWorkshopに参加してきましたので、当日の様子をレポートします!

今年は期間中の初日がWorkshop Dayとなっており、JetBrainsのSebastianさんによる「From 0 to 100 with Kotlin and Compose Multiplatform」というタイトルでKotlin Multiplatform、Compose Multiplatformに焦点を当てたWrokshopが行われました。
SebastianさんはKotlinConf'24のOpening KeynoteでKMPなどについての発表やEvolving Compose Multiplatform on iOS and Beyondのトークで登壇されていた方ですね。
Welcome TalkではDroidKaigiの為にわざわざ来日して下さったという事が紹介されていました。
日本で、KMPに深く関わっているJetBrainsのDev Advocateの方と直接コミュニケーションが取れるなんて貴重な機会だと感じました。
https://www.youtube.com/live/Ar73Axsz2YA?si=U97ndSJYUjrXH64B&t=1197

Workshop会場の様子

Workshop Part1 -Kotlin Multiplatform-

ワークショップは大まかにKMP(KotlinMultiplatform)構成のプロジェクトについて理解を深めた後、後半パートではUIも共有コードで実装できるCMP(ComposeMultiplatform)構成のプロジェクトについて理解を深めていける構成になっていました。

kotlin Multiplatformとは何か?
→JVM以外の複数のプラットフォームでも動作するコードをkotlinで書けるJetBrainsのコード共有技術。UIの共有からは独立している。
なぜ、code sharingが重要か?
→コードを共有する事で機能あたりのコストを低減できるなど。
Multiplatform開発にkotlinを使うメリット
→既にkotlinについて知っている。オーバーヘッドなくプラットフォームの機能を利用できる
などKMPについての基本的な説明から、
既存のAndroid、iOSプロジェクトにどの様にshared Logicを導入していけば良いか?
→小さく(部分的に)導入していける。
まで一通り説明がありました。
Logicの一部分だけなど段階的に導入できる点が既存のプロジェクトにも導入しやすく考慮されていて良いなと感じています。

KMPについての基本的な理解をしたところで実際にそれぞれの手元でWorkshop用のプロジェクトを基にLogic部分について共有コードとプラットフォーム固有のコードをどう橋渡しするか?などの実装を行いました。
→expect/actualで実装。
Ktorを用いたAPIリクエストの方法についても演習しました。

Workshop Part2 -Compose Multiplatform-

休憩中に頂いたカフェラテ

休憩を挟んで後半はCMP(ComposeMultiplatform)構成のプロジェクトについて理解を深めました。
JetpackComposeのようにUIを書いていける点や、少し前にアップデートされたviewModelやNavigation周りの説明も行われました。
ワークショップのプロジェクトではAndroid/Desktop(jvm)/WEB(wasmJs)をターゲットにしたプロジェクトとなっていましたが、iOSについての補足説明もされており良かったです。
ちなみに、JetBrainsのToolboxはCompose for Desktopで開発されているとの事でした。
(異なるバージョンのAndroid Studioを管理しやすくて重宝しています)

感想

ワークショップでは、個人的に凄く良いな、優しいなと感じた事がありました。各自で実装をしていく前にcloneしたプロジェクトをFleetでビルド出来るか確認/プロジェクトの構成を各自探検してみる時間があったのですが、この時間に結構時間が割かれていた様に感じました。講師の方も会場を歩いて回っていたり、スタッフの方々がビルドエラーに対応している姿が印象的でした。ビルドの部分でエラーのままだとこの後の時間も少しもったいない時間になってしまうと思うので実りのある時間になるよう考慮されたタイムスケジュールなのかなと感じました。
初めてKMP/CMPに触れた方でも、安心感高くworkshopに参加することが出来たと思います。
また、同じテーブルに座った人同士で話したりコミュニケーションを取っている方々も多かった様に感じました。様々なエンジニアの方とコミュニケーションを取れるのはオフラインカンファレンスのとても良い魅力的な部分だと感じます。
明日、明後日のセッションも楽しみです!

おまけ

Kotlin Fests2024でKMP/CMPについての発表をさせて頂きました。
私のセッションでは0から一歩踏みだすくらいのレベルを想定して話しています。良かったら見てみてください。
https://youtu.be/Wtp1Tz1X1w4?si=7a_VUrrZlamFdfd_

KMPやCMPは公式のドキュメントが充実しておりこちらも併せて参照することをお勧めします。
Get started with Kotlin Multiplatform
Create your multiplatform project
JetBrains/compose-multiplatform/examples(Github)
Kotlin Multiplatform samples

Discussion