Kotlin Fest 2024参加レポート

ソーシャル経済メディア「NewsPicks」のMobileAppUnitの野口です。

開催日から日が経ってしまいましたが、先月22日(土)ベルサール渋谷ファーストで開催された、テックイベントKotlinFestに参加してきたのでそのレポートです。
(後半に一緒に参加した石井さんのレポートもあります)

KotlinFestはその名前の通り、プログラミング言語のKotlinに関するカンファレンスで、6月22日に渋谷のベルサール渋谷ファーストで開催されました。

前回2022年から2年ぶり、オフライン開催は2019年以来5年ぶりということで、前回のオフライン開催の時に参加させていただき、すごく楽しかった思い出のある筆者にとって心待ちにしていたカンファレンスでした。当日はウキウキで、会場でもらえるトートバックではなく、わざわざ2019年開催時に頂いたものを持参して会場を持ち歩いていたのですが、 これを見かけて話しかけてくださった方も何人かいらっしゃって、それを元に交流することができたりしたので持っていってよかったです。

会場では、セッションが行われている部屋のほかに協賛の企業の方々のブースもあり、休憩時間等は、そちらのブース等にお邪魔していました。

どこも盛況で、休憩時間等ではあまり回れませんでしたが、アンケートやクイズ等に回答して、缶バッチや鳥のステッカーなどをいただきました。

セッション

参加したセッションの中から、個人的に気になったのをいくつかピックアップしました。

もっとKotlinを好きになる!K2時代のKotlin Compiler Plugin開発

大まかに発表は前後半2部に分かれており、発表の前半ではK2のコンパイラ自体の構造についての解説があり、特にK2コンパイラの一番肝となるフロントエンドの部分で、どのような処理が行われているのかについて時間が割かれていました。筆者にとっては、プログラムを解析する処理の流れが、Androidエンジニアに馴染み深い、Androidのライフサイクルのようなフェーズに別れて行われていることを知れて、一気にコンパイラを身近なものに感じることができました。 個人的に、コンパイラ自体の挙動について全く詳しくないため、聞いても理解できるか不安でしたが、発表の構成/内容がわかりやすくて学びの大きい発表でした。 この発表の内容だけで、K2コンパイラを使ってプラグインを作ることが可能そうで、今からでもプラグイン作者デビューできそうでした。(作るものは思い浮かばないですが(汗))

K2のKotlin IDEプラグインの中を覗いてみよう

K2コンパイラ、特にIDEプラグインについて、既存のコンパイラの問題点となぜK2コンパイラが必要だったのかの経緯についての解説が主だっと思います。一つ上で挙げたセッションの発表を聞いて、K2コンパイラの具体的な実装に関して解説していただいていたので、よりK2への理解を深めることができた気がします。また、身近な開発上のK2での恩恵として、今までIDE起動後の読み込みが完全に終わらないと使えなかったコードハイライトなどが、K2でのアーキテクチャの変更で並列に処理を行えるようになり、完全に読み込み完了する前に使えるようになってたのを知ることができてなるほど〜ってなりました。

Kotlinで愉しむクリエイティブコーディング

クリエイティブコーディングについては、普段全く関わりがない分野ですが、最近たまたま耳にする機会があったので、軽い気持ちで聞きに行きました。映像作品とかで見かけるカッコいいグラフィックであったりが、kotlinのコードで実現(それもそこまで複雑でないコードで)されてるのを見て、こんな利用方法もあるんだとなりました。 自身がAndroidエンジニアということもあり、どうしてもKotlinをアプリ開発用の言語として見がちなのですが、Kotlinを使った様々なジャンルの発表が集うKotlinFestだから出会えたセッションの一つかなと思いました。

次からは石井さんが参加したセッションなので、バトンタッチします!

Kotlin Coroutinesで共有リソースに正しくアクセスする

マルチスレッドプログラミングを一度でも経験している人にとっては、共有リソースを扱うのが凄く嫌ですよね。
それは、もちろん Kotlin Coroutinesでも同じです。 このセッションは、初級者の方にもわかりやすく説明してくれました。
指針もシンプルにまとめてくれてました。
たとえば、

  • Coroutinesの場合はMutexを使う(ブロック中は、そのCoroutineは中断状態になる)
  • suspendでない場合はSynchronizedを使う(ブロック中は、スレッドを専有し続ける)

など。他にもわかりやすくおすすめな発表でした。

結論、「想像以上に複雑だから、できるだけ1スレッドにし、共有リソースはできるだけ減らす」という話は納得でした。

withContextってスレッド切り替え以外にも使えるって知ってた?

これも初級者が勘違いしそうなwithContextについてのセッションです。
「withContextとは、引数で与えられたCoroutineContextを現在のCoroutineContextに加えてブロックを実行する」と定義し(何言ってるかわからないかもしれませんが、資料見ればわかります)、「ThreadLocalの代わりに使えるよ。ってことはトランザクション管理で使えるよ」という話もしてました。
ContextParamaterとの比較なども言及しており、勉強になりました。

Jetpack Compose: 効果的なComposable関数のAPI設計

Jetpack Composeをやると何でもかんでもstate hoistingをしようと考える人がいます。「そうするとプレビュー表示しやすいし、いいことじゃん」と。
ただ、このセッションでは、state hoistingを使わない方がいい場合もしっかりと言及しており、state hoistingしないことによるプレビュー表示の解決方法を提示するなど、僕は凄くいいセッションだなぁと思いました。
僕は、一般的に良いとされることが愚直に正しいわけではないという考え方なので、こういうセッションが凄く好きです。

まとめは、野口さんにお返しします!

まとめ

個人的には、もともと楽しみにしていた期待をめちゃくちゃ上回って、とても満足度の高いカンファレンスでした。この会でKotlinを愛でれたと思いますし、Kotlinを愛でる気持ちはさらに高まった気がします!?(※このイベントのビジョンがKotlinを愛でる)

発表者の方々、この会を運営してくださっていた運営の方々ありがとうございました。また次回があればぜひ参加したいです。

Page top