Kotlin Fest 2022の参加レポートです

この記事は[FLINTERS Advent Calendar 2022](https://qiita.com/advent-calendar/2022/flinters)の14日目です。
[Kotlin Fest 2022](https://www.kotlinfest.dev)の参加レポートとして、以下の内容でお送りいたします。

- [Kotlin Fest 2022開催](#Kotlin-Fest-2022開催)
- [視聴したセッションについての概要と感想](#視聴したセッションについての概要と感想)
- [全体的な感想と次回への期待](#全体的な感想と次回への期待)

# Kotlin Fest 2022開催
2022年12月10日、静的型付け言語Kotlinのカンファレンス「Kotlin Fest」が3年ぶりに開催されました。
今回は初のオフライン開催となりましたが、「Kotlinを愛でる」というビジョンは初回開催からぶれることなく一貫しています。
全20のセッションは２つのトラックに別れて並行して発表され、全動画が公開されており[こちらのYoutubeチャンネル](https://www.youtube.com/@kotlin7203)から視聴可能です。

この記事では、Kotlinにちょっと興味がある方やこれから視聴予定だった方への紹介となるように、またイベント運営スタッフや登壇者の方々へのフィードバックのため、そして自分自身の備忘録として今回視聴したセッションの概要と感想を私なりにまとめてまいります。

# 視聴したセッションについての概要と感想

## 能動的にKotlin情報を摂取して脱初心者！Kotlin１次ソースの歩き方
[動画リンク](https://youtu.be/Os17kP0Jmmw)  
Kotlinの1次ソースへのアクセス方法を丁寧に解説していただきました。  
実例を交えて、公式ドキュメントからソースコードの確認やIssueのチェックまでの流れを一挙に説明していただけたのでとてもわかりやすかったです。  
1次ソースをチェックする習慣をつけると正確な理解にも繋がりますし登壇ネタも拾えそうだなと思いました。

## Java の進化と Kotlin の未来
[動画リンク](https://youtu.be/NsbX1JKAExY)  
Kotlin 1.0が正式リリースを迎えてから早くも6〜7年が経過しました。  
リリース当時はBetter JavaとしてのポジションだったKotlinですが、リリースを重ねるにつれてそれぞれがどのように進化してきたか（していくか）といった内容のお話でした。  
Java 19系がリリースされているタイミングということもあり、KotlinConf 2019でのJake Wharton氏の発表（[Youtube](https://youtu.be/te3OU9fxC8U)）を思い出しました（あるいはこちらをふまえてのご講義だったのかもしれません）。
Javaの最新機能はノーチェックだったので勉強になりました。ScalaのようなパターンマッチはKotlinでも欲しいと思っていたので、うまく実装が進む事を期待しています。

## Kotlin/NativeのNew Memory Managerに移行しよう
[動画リンク](https://youtu.be/hZDuqq2vz7E)  
今年の10月、Kotlin Multiplatform Mobile（KMM）がBetaリリースされました。今回のリリースからデフォルトで有効になった新しいMemory Managerについてその開発意図と内容について詳細な解説をしていただきました。  
古いMemory Manager上でのストレスフルな制限とその対策を丁寧に説明していただいた後、全て必要なくなりましたという流れは気持ちがいいですね。
あと、Garbage Collectorのアルゴリズムのお話はめちゃくちゃわかりやすいし面白かったです。

## 型だけでバグを減らそう！Kotlinの型パワーをつかった実践タイプセーフエンジニアリング
[動画リンク](https://youtu.be/MkDmQW9GPHo)  
型のお話です。タイプセーフな開発を心がけると多くのバグを防ぐことができ、それを実現するためにKotlinの言語機能が役に立ちます。  
私のような静的型付け言語好きの人間のテンションが上がる、ランチタイム後にちょうどよいセッションでした。  
わかりやすい解説ありがとうございます。

## Kotlin Symbol Processing APIを使ってKotlinアプリケーションの開発を効率化する
[動画リンク](https://youtu.be/oEgwCV6zKAY)  
アノテーションプロセッサーとして主流になりつつあるKSPについてと、実際にプロセッサーを作成するプロセスについて実装からテスト方法まで解説していただきました。  
アノテーションプロセッサーを作成したことのない私でも理解できるような内容にまとめていただいていたので助かりました。  
インクリメンタル処理の方法を指定できるのは便利ですね。  
ボイラープレートコードを減らすためにすぐにでも活用できそうだと思いました。

## ::class.fixture() pattern — Kotlin 拡張関数を生かした、Test Fixture 管理の紹介
[動画リンク](https://youtu.be/kVlyVI_YKw8)  
KotlinでのTest Fixtureを、拡張関数を利用して定義・管理する手法について解説していただきました。  
テストの前提条件は読みやすさ優先で毎回書くようにしたいのですが、そのために行数が割かれてしまうケース等どうしても使い回しをしたい場面は多く、複数人で開発する場合は管理方法に悩みます。  
ご紹介いただいた手法はこのようなチーム開発での課題を解決するために非常に有用なアイデアだと感じました。  

## うわっ…もしかして私のコード、遅すぎ…？
[動画リンク](https://youtu.be/QlvorQtAWnI)  
kotlinx-benchmarkを利用したパフォーマンス計測方法について説明していただきました。  
JUnitと同じような形式で書けるので導入しやすそうです。  
現時点ではAndroid/iOSプラットフォーム上では動作しないようですが、マルチプラットフォーム対応で手軽に導入できる公式ライブラリがあると心強いので今後の開発に期待したいです。

## もう迷わないCoroutines〜suspend funとChannelとFlow〜
[動画リンク](https://youtu.be/3-JrmrOV9e4)  
Coroutinesのsuspenc function, Channel, Flowについて、各機能の整理と解説をしていただきました。  
2018年に正式リリースされたCoroutinesですが、開発が盛んで前回のKotlin Festからも新しい機能が追加され続けており、もはや何をどこで使うのが正解なのかわからなくなりそうな状態なので解説とても助かります。  
機能をまとめていただいた表はめちゃくちゃ見やすいのでプリントアウトして部屋に貼りたいです。

## Androidアプリにおける Kotlin Coroutines のより良い使い方
[動画リンク](https://youtu.be/5k8rwritous)  
こちらもCoroutinesのお話ですが、特にAndroidアプリ開発におけるCoroutinesのベストプラクティスを解説していただきました。  
最近はAndroidアプリ開発の最前線から遠のいていた為めちゃくちゃ勉強になりました。  
runCatching使いまくってたやんとかキャンセル処理のことちゃんと考慮してなかったやんとか、目から鱗が落ちまくりの内容でした。　　
CoroutinesがrunTestでテスト可能なことも知らなかったので今後は使っていきたいです。


# 全体的な感想と次回への期待
久しぶりの開催とあって非常に内容の濃いカンファレンスになっていたと思います。今日から使えそうな知見も多く本当に参加してよかったと思えました。他にも聞いたセッションやこれからアーカイブを視聴したいセッションもあるのですが、感想が間に合いませんでした。すみません。  
また、初めてのオンライン開催でしたが大きなトラブルもなく予定通りクローズされたので、しっかり準備されていたのだろうと感じました。
登壇者の方々、運営スタッフの皆様方、本当にありがとうございました。  
次回は未定とのことですが、オンラインでもオフラインでもぜひ参加したいです！


# 明日のこと
15日目は、[1日目](https://labs.septeni.co.jp/entry/aws-rotating-secrets)・[5日目](https://labs.septeni.co.jp/entry/2022/12/05/160543)を担当していただいた堀越さんがまた何か書いてくれるようです。お楽しみに！