Kotlin Fest 2024 イベントレポート - Kotlinを愛でてきた!
こんにちは!アルダグラムでエンジニアとEMとPdMをしている @sukechannnn です!
Kotlin Fest 2024 に行ってきたので、見てきたセッションのメモをイベントレポートとして公開します!
どのセッションもKotlinへの愛を感じ、勉強になることばかりで最高のカンファレンスでした!
先にまとめ
- Kotlin Multiplatform の勢いがすごい
- Compose Multiplatform (iOS) も Production Ready に着実に近づいている
- サーバーサイド Kotlin はある程度成熟していて、それでいてモダンな開発ができる
ここからは見た順にセッションの感想を書いていきます。
今こそ始めたい!Compose Multiplatform
僕はAndroidは初心者でちょっとかじった程度なのですが、それでも理解できるとても分かりやすい発表でした。KMPはMultiplatform対応がどんどん進んでて共通化できるロジックが多いだけでなく、OS固有の処理も expect / actual を用いて簡単に書けるのがとても魅力的だと思いました。
まだ iOS はβ版ではあるものの、Compose Multiplatform も同じ開発体験でUIを作っていけるのとても素敵だなと思いました。モーダルを iOS のUIで出したいとか、まさに発表聞いてて思ったところだったので、対応例が話されてて勉強になりました 👏
パフォーマンスと可読性を両立:KotlinのCollection関数をマスター
Kotlin には便利なCollection関数がいっぱいありますが(いっぱいありすぎて使いこなせる気がしないのですが)、それを総ざらいするセッションで見応え抜群でした。
セッションの中で出てきた windowed と firstNotNullOfOrNull は知らなかったのですが、特に windowed は後半の例で音声解析のフーリエ変換で使ってて面白かったです。
あと、最終的にfor文が最速という結果が出てて会場の方々も苦笑してました(笑) Collection, Sequence, for文それぞれの特徴が丁寧に解説されてて分かりやすかったです。
個人的には、associate めっちゃ便利でちょくちょく使うんですが、大きいコレクションを扱うとメモリ使用量が上がっちゃうかも…と聞いて今後気をつけようと思いました。
Okioに愛を込めて
KMPだとJava系のAPIが使えないので、別のMultiplatform対応しているライブラリや expect / actual を使った時前実装で回避する必要があります。この発表はその中でも File IO の時に Okio を使えばいい感じに解決できる例を発表されてました。ファイルのやり取りはただでさえややこしいので、Okioでプラットフォームを意識せず実装できるのはありがたいですね!
Kotlin Coroutinesで共有リソースに正しくアクセスする
ややこしい並行処理の内部の挙動をめちゃくちゃ分かりやすく解説されてて、なんとなくふわっと理解してたスレッド競合の理解がめっちゃ深まりました!スライド見るだけでもめっちゃ分かりやすいので、ぜひ一読を!
例外設計について考えて Kotlin(Spring Boot&Arrow)で実践する
超大作でした。ほんとに40分ぴったりで発表が終わってすごかったです(笑)
「技術的例外とビジネス例外」と「予期する例外・予期しない例外」で分類するのは非常に共感できて、改めて明文化されて自分の理解が整理された感じがしました。
また、例外を Sealed class で定義するのは自分たちもやってて、予期する例外を明示的に扱えてとても良いなぁと感じています。このセッションでは Arrow-kt の Either 型を使ってさらに明示的にしており、型で表現できる世界めっちゃ良いなってなりました。
個人的には、この用途ならシンプルな kotlin-result を使っても良いかなと思ったりしながら、自分たちのプロダクトでも適用してみたいと感じたセッションでした!
withContextってスレッド切り替え以外にも使えるって知ってた?
知りませんでした。CoroutineContext で React の Context みたいなことができるとは…!
この方の以前の発表で R2DBC を jOOQ でやってるって仰ってたので、スレッドセーフにDBアクセスするには様々な工夫が必要なのだろうなと思い、とても参考になりました。
Jetpack Compose: 効果的なComposable関数のAPI設計
コンポーネントの設計について語られてて、どのコンポーネントをどこまで汎用的に作るか、汎用的に作る場合のテクニックは…と、State hoisting などフロントエンド開発でも共通するような話題でとても面白かったです(State hoisting という名前が付いてるのは初めて知った)。
Slot API の引数にレシーバーを設定する例 (@Composampe AppBarIconScope.()
) は、あまり馴染みがなかったのでなるほど〜となりました。便利そうですが、引数で利用できる関数を制限できるわけではない部分に注意が必要そうですね。
発表と関係ないけど、一度でいいから NOT A HOTEL の建築物に泊まってみたい〜
あらゆるアプリをCompose Multiplatformで書きたい! -ネイティブアプリの「あの機能」を私たちはどう作るか-
これも超大作でした。
KMP を使って開発するアプリで、各OSで細かい挙動の違いがある部分の開発をどうやって乗り越えるかが話されていて、今後KMPで実装していく時に参考になりそうな情報ばかりでした。
なにより、工夫すれば乗り越えられる!というのを感じられたのが大きかったです。
まとめ
Kotlin の未来を感じられるカンファレンスで、参加してとても良かったです。
参加できなかったセッションも面白そうなものばかりで、どちらに参加するか毎回めっちゃ悩みました(一緒に行った友達がもう片方のセッション見て感想言い合ったりしたのも楽しかった)。
アルダグラムではAndroidアプリとサーバーサイドの開発でKotlinを利用してます。僕自身もKotlinとても好きな言語なので、今後もKotlinを使って開発していけるのがとても楽しみになるカンファレンスでした!
ちなみに、KANNA(私たちが開発してるプロジェクト管理アプリ)のモバイルアプリ開発でKMPを導入することを検討している(まだ決まってない)ので、プロダクションのアプリ開発をKMPでやってみたい方/興味ある方ぜひカジュアルに情報交換させてください(助けてください)。
以上!イベントレポートでした!
読んでいただきありがとうございました!
![アルダグラム Tech Blog](https://storage.googleapis.com/zenn-user-upload/avatar/bb3ad09575.jpeg)
株式会社アルダグラムのTech Blogです。 世界中のノンデスクワーク業界における現場の生産性アップを実現する現場DXサービス「KANNA」を開発しています。 採用情報はこちら herp.careers/v1/aldagram0508/
Discussion