Tabelog Tech Blog

食べログの開発者による技術ブログです

Kotlin Fest 2024 参加レポート

こんにちは。食べログでAndroidアプリの開発をしているsadaです。

先日、6/22(土)に Kotlin Fest 2024 が開催されました!
弊社もたまごスポンサーとして協賛させていただきましたが、オフラインでの開催は実に5年ぶりということで、本当に楽しみにしていました。

当日は、各セッションはもちろん、ブースや懇親会など、とても楽しい時間となりました。
Kotlin Festに参加された皆様、そして運営の皆様本当にありがとうございました!

それではここからは参加レポートになります。

目次

セッション

まずは参加したセッション等をいくつか紹介させていただきます。
他にも色々なセッションがありましたので、気になる方はタイムテーブルをご参照ください。

オープニングセッション

運営事務局代表の長澤さん(@ngsw_taro)からのオープニングトークです。

今年のKotlin Festは参加者、運営スタッフの人数など過去最大規模になったとのことでした。
確かに会場やブースの雰囲気は、その規模感を感じる盛り上がりを見せていました。

歴代のロゴなどを振り返りつつ、「Kotlin Festはみんなでつくろう!」というお話がありました。
参加者のネームホルダーに「Contributor」と書かれていて、スタッフやスピーカーだけではなく、参加者もContributorとして一緒に作っていきましょうという気持ちが伝わってきました。

歴代のロゴ

「Kotlinを愛でましょう!」というメッセージと共に開幕です。

Kotlinを愛でる

パフォーマンスと可読性を両立:KotlinのCollection関数をマスター

KotlinのCollection関数はかなり多く正直何があるか、どれを使うべきかは多々悩みます。
そんなCollection関数について、どのようなものがあるか、どんなケースで利用すべきかをまとめたセッションでした。

例えば、変換に関するmap関連の関数だけでも以下のように7つも触れられていました。

  • map
  • mapIndexed
  • mapNotNull
  • mapIndexedNotNull
  • mapTo
  • mapIndexedTo
  • mapNotNullTo

ちなみに私が初見で「なんだこりゃ?」って思った関数はfirstNotNullOfOrNullという関数でした。
これは「指定の変換関数を適用し、最初の非nullの結果を返す。ない場合はnullを返す。」という関数になっています。
もちろんこちらの関数も紹介されていました(笑)

コード例は以下のような形になります。

※こういう時はKotlin Playground がすごい便利ですね

KotlinのLinterまなびなおし2024

こちらはLinterについてのお話です。
Kotlinで利用されているLinterはいくつかありますが、その特徴や目的などが丁寧にまとめられていて、大変勉強になりました。
特に Konsist というLinterは利用したことがなかったのですが、検査の幅がかなり広いことには驚きでした。
例えば、アーキテクチャの検査や、テストが書かれているかのような検査も可能なようです。

また、具体的なシチュエーションを例に挙げ、どのLinterを入れるか?といったケーススタディもあって、かなり参考になりました。

まだ JUnit を使ってるの? kotest を使って快適にテストを書こう

Kotest というテストライブラリ・フレームワークのお話でした。
Kotestは大きく分けると以下の3つの機能がありますが、全部使う必要はなく、例えばAssertionsのみ利用するなど、機能別に選択することが可能とのことでした。

  • Test Framework
  • Assertions Library
  • Property Testing

Assertions Library は 拡張関数でshouldBeなどのメソッドが提供されており、今までassertEqualsなどを使っていたテストもKotlinらしく書けるようになるので、かなり良さそうな印象でした。
とりあえずAssertions Libraryだけなら気軽に導入できそうなので、試してみようかと思っています。

個人的に便利そうだと感じたのは、shouldBeEqualToIgnoringFieldsというメソッドで、特定のフィールドを無視して比較できるのがよかったです。 例としては以下のように書けるそうです。

val user = User(name = "Kotlin", createdAt = null, updatedAt = null)
val savedUser = userRepository.save(user)
// 保存後はcreatedAt/updatedAtが更新されているので比較したくない
savedUser.shouldBeEqualToIgnoringFields(user, User::createdAt, User::updatedAt)

他にも色々便利そうな機能が盛りだくさんでしたので、詳細はスライドをご参照ください。

おまけ : Kotlinらしいコードを書こう - Convert Java File to Kotlin File のあとにやること

解説ブログ

当日、体調不良により残念ながらセッションがキャンセルになってしまったのですが、講演内容がブログにあがっていました!
私としてもすごい楽しみにしていたセッションでしたので、大変ありがたかったです。

内容としてはタイトルの通りではありますが、IDEの機能にある「Convert Java File to Kotlin File」を実行しただけでは十分に質の高いコードになっているとは言えません。
そこをどのように修正を加えていけばKotlinらしく、簡潔でわかりやすく、保守性の高いコードになるかが、細かく解説されていました。
これからJavaのコードをKoltinに移行しようとしている人や、自動変換して放置してしまっている人はぜひ一読すべき内容になっていました。
早速、弊社でもこちらのブログを輪読会の題材にして、読み合わせを行いました!

ノベルティ

恒例のトートバッグに入ったノベルティですが、今回もたくさんのノベルティが入っていました。

トートバッグ ノベルティ全体写真

一通り収まる写真にしたつもりですが、入ってないものがあったら申し訳ありません🙇
歯ブラシやスライムなど、普段あまり見ないタイプのノベルティが入っていたのはちょっと面白かったです。

そして、弊社ではこちらのうちわを封入させていただきました。

うちわの写真-表 うちわの写真-裏

会場のセッションルームは冷房が効いていたためあまり出番はなかったですが、外はかなりの気温でしたので、昼休憩時に外から戻ってきた際に利用していた方がいたときは嬉しかったです。
これからも暑い時期は続きますので、ぜひ活用してください!

ブース

各ブースでは色々な出し物がありとても面白かったですが、その中でもクイズを用意されている企業が何社かあり、どの問題も面白かったです。
特にメルカリさんのアナグラムクイズはKotlinクイズより苦戦してしまいました、、、(笑)

私はMIXIさんのブースでプログラミングのクイズにチャレンジし、3問中3問正解でき、無事ノベルティをゲットできました💪

MIXIさんのノベルティ写真

また、エムスリーさんのエンジニアトリ診断が面白かったです。
ちなみに私は「キーウイ」でした!

トリ診断結果

また、スポンサールームにはコーヒーや軽食の用意もされており、小腹が空いたときにはちょうど良い休憩になりました。

特にコーヒーがとても美味しかったです!

コーヒーの写真

懇親会

すべてのセッションを終えた後は、待ちに待った懇親会です(笑)

種類も豊富でたくさんの料理・飲みものが提供されていて、どれも美味しかったです。
(会話に夢中で、写真を撮り忘れました😅 すみません。)

私は元同僚や初めましての方、そして運営スタッフの方など、色々な人たちと会話でき、とても有意義な時間を過ごせました。

最後は全体で集合写真を撮影し、締めくくりました。
最初から最後まで良い盛り上がりを見せていたので、終わってしまうのは名残惜しいですが、たくさんKotlinを愛でることができたので、大満足の1日でした!

最後に

Kotlin Festも大変楽しかったですが、iOSDCやDroidKaigiなど楽しみなカンファレンスがまだまだあります。 弊社としても何かしらの形で参加していきたいと思っています。
もし、他のカンファレンスや勉強会などで食べログのエンジニアとお会いする機会がありましたら、どうぞお気軽にお声がけください。