STORES Product Blog

こだわりを持ったお商売を支える「STORES」のテクノロジー部門のメンバーによるブログです。

Kotlin Fest 2024参加レポート

2022年から2年ぶりの開催となりました、Kotlin Fest 2024 に参加しました。 今回はオフライン開催のみということで、STORESでKotlinを活用しているAndroidエンジニアで、ブースに回ったり、セッションを見たり、参加しているほかのKotlinエンジニアと交流してきました。

www.kotlinfest.dev

このエントリーでは、参加した弊社のエンジニアによる印象に残ったセッションの紹介をします。 アーカイブ配信はまだですが、これから発表内容を確認したい人の参考になれば幸いです。

印象に残ったセッション

@みっちゃん

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

プログラミング教育は楽しくあるべきだという考えを軸に、どのようなクリエイティブコーディングがおすすめかを紹介するセッションでした。

パーリンノイズ(時間発展)を作成するものは、ノイズ関数の組み合わせによってオリジナルな動きを描画することができるので、実際の教育の現場で子供達同士のコミュニケーションが盛り上がるのではないかと感じました。

また、拡散律速凝集(雪の結晶や雷の成長のように、ブラウン運動を行う粒子が核となる粒子に結合して成長する現象)や鳥が群れで動く様子をモデル化するなどのシミュレーションをKotlinを通して行うパートは、普段子供達が学校で学習するような科学の内容とリンクする部分もあると思うので、プログラミング学習と学校での学習を連携できて子供の視野が広がりそうに感じました。

@chuka

あらゆるアプリをCompose Multiplatformで書きたい! -ネイティブアプリの「あの機能」を私たちはどう作るか-

AndroidとiOSの処理を抽象化し、どこまで共通の処理としてみなせるかを突き詰めているのがとても面白かったです。 テストコードを共通化でき、1つのテストコードで複数プラットフォームのテストが可能なのも嬉しいですね! 不慣れなプラットフォームの個別実装を頑張るのは大変そうですが、Compose Multiplatform 楽しそう!と思わせてくれるセッションでした。

KotlinのLinter まなびなおし2024

チームでも最近Linterを導入したのですが、Linterによって機能や目的が異なること、それぞれ適したシチュエーションがあることなど、とても勉強になりました! チームの状況に合わせて適宜ルールをカスタマイズし、もっとLinterを活用していきたいと思いました。 KonsistというLinterも今回初めて知りました。アーキテクチャの検査ができるなど、とても気になったのでぜひ調べてみたいと思いました!

@error96num

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

Composable関数の引数をどのように定義すべきか、というテーマのセッションでした。Composable関数の設計においては柔軟さとシンプルさはある種トレードオフの関係にあるため、私自身も設計や実装の度に、この点について悩んでいました。このセッションは、その悩み所に対する指針を示してくれたと思っています。アプリ内でのコンポーネントの使われ方を規定し、柔軟なAPIを作るための具体的なテクニックが複数紹介されていたため、すぐにでも取り入れていきたいです。

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

Kotlin Coroutinesで、バックグラウンドスレッドを含めた複数スレッドで単一のリソースを共有した場合に、競合が発生する原理とその回避方法について詳しく解説していました。リソース競合の問題は私自身も経験したことがありますが、その発生頻度はさほど高くないため、その場その場での対応で済ませてしまっていました。よって今回のセッションは、それらを体系的に理解する良い機会になったと思います。演習問題を交えることで、聴衆も参加できる形で発表を進めていたのが印象的でした。

@satoryo056

KotlinのLinterまなびなおし2024

ktlintやdetektは知っていましたが、標準で持っているルール数が違ったり 3rd partyのマーケットプレイスがあったりとそれぞれの特徴を知れて良かったです。 また Konsist は初めて知ったのでそれだけでこのセッションを聴講できて良かったと思ったのですが、アーキテクチャのチェックをできるのがすごいと思いました。標準のルールが(今のところ)なく、全てカスタムルールなので自由度があり、ユニットテストの環境で実行することやクラスの定義をチェックルールに含めることができるのがとても良さそうに感じました。 Linter3つともそれぞれの良さがありつつ、自分のプロジェクトにどれを採用すれば良いかについて答えを出してくれそうなセッションでした。

@huin

Kotlinを業務で書いているわけではない自分にとっては、KMPやTesting, Compilerなど Kotlin についてのトレンド情報を一気にキャッチアップできる充実した1日になりました。

一番印象に残ってるのは kitakkunさんの もっとKotlinを好きになる!K2時代のKotlin Compiler Plugin開発 です。ただプラグインを作ってみよう、ではなく Kotlin のコンパイルパイプライン全体をしっかりと解説していただけたことで、全体感を掴みながら理解を深めることができました。

また最後に紹介された kitakkun/back-in-time-plugin は ReduxやFlux アーキテクチャアプリのDebuggingツールとして、他のプラットフォームで提供されていた記憶があり、Kotlin Compiler Plugin を利用した実用的なツールとしてとても印象にのこりました。

@tomorrowkey

KotlinConf 2024を後から256倍楽しむためのヒント

Kotlin Confは基調講演だけチェックしていましたが、他の動画は見ていませんでした。このセッションで紹介されていた動画の要約を使えば、大量にある動画の中から興味ある動画を効率よく探せそうで、とてもワクワクしました。

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

これまで解像度が低かったKotlin Compilerについて全体像を掴むことができました。日本語でこの解説が聞けるのは本当に貴重なことなので、あとでアーカイブ配信されたらもう一度確認したいと思います。 また、簡単なKotlin Compiler Pluginを作るデモンストレーションもあったので、写経して理解を深めたいです。

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

普段のAndroid開発でJetpack Composeを使った開発をしていて感じる迷いポイントがまとめられていてとても参考になりました。明確な指針も示しているので、これからComposeにチャレンジする方にはとてもおすすめなセッションだなと思いました。

@uwaseki

例外設計について考えて Kotlin(Spring Boot&Arrow)で実践する

例外やArrowなど関心のある単語に心惹かれたので、Androidエンジニアですがサーバーサイドのセッションを聴きにいきました! 例外は4象限に分類できる、というお話がとくに印象に残っています。個人的にもとても納得感のある分類だと感じ、今後の実装・設計に活かせそうな、わかりやすい考え方だと思いました。普段なんとなく思っていることを言語化してくれると頭の中が整理される感覚があって良いですね!

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

たくさんの Collection 操作関数が紹介されていました。個人的にも知らないAPIが多く学びになりました。こういったAPIは仕様だけを見ると「どこで使うの?」となりがちなものも多いですが、「こういう操作が標準APIでできる/できそう」という引き出しがあると、いざというときに便利なのですよね。

Sequence との処理速度の比較検証も興味深かったです。標準関数が充実していると便利ではありますが、メリット/デメリットを理解して適切な関数を選択するのが大事だなぁとあらためて思いました。

さいごに

カンファレンスの運営、登壇された方々および参加者のみなさま、おつかれさまでした。 オープニングセッションでも運営代表のたろうさんが語っていたとおり、運営や登壇者だけでなく参加者もみんなでコントリビュートしたとても楽しいカンファレンスでした。 Kotlin Festのビジョンである「Kotlinを愛でる」をみんなで達成できたんじゃないかと思います。 次回のKotlin Festも楽しみにしています。