STORES Product Blog

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

Kotlin Fest 2025 参加レポート

こんにちは、STORES でモバイルアプリを開発している @tomorrowkey です。

Kotlin Fest 2025、お疲れ様でした!「Kotlinを愛でる」をキーワードに1日中Kotlinについて考える濃厚な1日でした。 この記事では、STORES で取り組んだことや、印象に残ったセッションについてみんなの感想をまとめていきたいと思います。

登壇

STORESからは @tomorrowkey が登壇しました。

文字列操作の達人になる ~ Kotlinの文字列の便利な世界 ~

初学者向けに文字列を題材にKotlinらしい書き方について話しました。

Kotlinはバックエンド言語があるマルチプラットフォーム言語という特性上多くの人がKotlin以外のバックグラウンドから入門することが多いのではないかと思います。そういった方がKotlinらしい文字列の扱い方から、「Kotlinらしい書き方とはなんなのか」を得られる一助となればよいなと思います。

印象に残ったセッション

印象に残ったセッションをいくつかご紹介します

@n_seki_

ネストしたdata classの面倒な更新にさようなら!Lensを作って理解するArrowのOpticsの世界

関数型言語に興味があって Lens も存在だけは認識していたのですが、このセッションを聞くことで実装レベルでの理解が進み、たいへん勉強になり、面白かったです。深くネストされた data class の特定プロパティを get/set/modify するように見せる Lens の裏側はテクニカルな実装もありつつ、Kotlinにはまだまだ知らない魅力や使い方があるのだと知ることができました。

デッドコード消せてますか? - 構文解析とGradleプラグイン開発で始めるコードベース改善

日々の開発の中で、デッドコードを安全かつ確実に(忘れずに)削除するのは難しいなと実感しています。 将来的に消すことになるコードにアノテーションを付与するというアプローチは、「削除予定」であることがコードに現れる点、実装時点で削除を意識できる点がとても興味深いと思いました。さらにGradleプラグインによる自動化まで進められており、学びの多いセッションでした。

@YkOxc

内部実装から理解するCoroutines ー Continuation・Structured Concurrency・Dispatcher

Kotlin Coroutinesの内部処理をじっくり読んだことはなかったので、「内部的にはこんな実装をしていたのか!」と、とても勉強になりました。

特に、Structured Concurrencyを守るための仕組みが印象的でした。 CompletionHandlerが登録された子コルーチンが完了すると、他に未完了の子コルーチンがあるかをチェックし、もしあればその子にもCompletionHandlerを登録してループ、なければ coroutineScopeを抜ける——という流れで実現しているのがとても興味深かったです。

AIとの協業で実現!レガシーコードをKotlinらしく生まれ変わらせる実践ガイド

自分の関わっているプロダクトでもJavaからKotlinへのリファクタリングを行った際に、自動変換を使って「JavaをKotlinコードにしたもの」になってしまった経験があり、とても共感しました。

チームでKotlinらしさを定義し、それをAIにどのようにルールとして落とし込むかという話など、非常に参考になりました。

@marcy731

せめて、ネイティブらしく - マルチプラットフォームと撤退戦略

スライド : https://speakerdeck.com/ryunen344/semete-neiteiburasiku

多くのプロダクトでは「導入の成功」や「共通化のメリット」ばかり語られがちですが、変化するビジネスや技術環境では「撤退」する可能性も考えておくべきとうのはとても同意で改めて学びになりました。

STORESでもKMP/CMPなどのクロスプラットフォーム技術は一部のプロダクトで採用していますが、常に「撤退」することを考えた設計を心がけることの優位性について改めて考えていきたいですね。また、どんな技術にも「銀の弾丸」はないと明言しており、「撤退」することを前提とした上でさまざまな状況の中で適切に状況判断するためのtipsや心構えがとても参考になりました。

Functional Calisthenics in Kotlin: Kotlinで「関数型エクササイズ」を実践しよう

スライド : https://speakerdeck.com/lagenorhynque/functional-calisthenics-in-kotlin

「オブジェクト指向エクササイズ」を参考に独自に考えた「関数型エクササイズ」から関数型プログラミングのエッセインスを学べるセッションでした。オブジェクト指向言語として設計されているKotlinという言語で、完全にFPスタイルを貫くのではなく「無理なく馴染む表現を目指す」という方針も現実的で、チームに導入しやすい設計改善の入り口になりそうだなと感じました。またSwiftでも同様なことは言えるので、個人的にもとても参考になりました。改めて関数型プログラミングを学び直したいなと感じました。

@huin

【招待セッション】Kotlinを支える技術:言語設計と縁の下の力持ち

直近で追加される Kotlin の機能から始まり、そういった言語仕様がどのようなコンセプト・議論によって開発されているのか?について話を聞くことができとても勉強になりました。単純な利便性だけでなく、既存機能との整合性や、他言語で提供されている機能との比較など多角的に議論されているところが印象的でした。

また、言語仕様だけでなく周辺のツールチェインについて Android アプリと KMP アプリケーションで、どのような差があるか?なども知ることができ知識も深まりました。

KoogではじめるAIエージェント開発

スライド : https://speakerdeck.com/hiroaki404/koogdehazimeruaiezientokai-fa?slide=11

開発におけるAIの利用はコーディング支援についての情報を追ってくので精一杯だったのですが、このトークでは AIを利用したアプリケーション・サービス を作るための方法についてのお話でした。Koog のコンセプトから具体的な構築例まで扱っており、小さなアプリケーションであれば自分でもすぐに作れそう!と思わせてくれる内容でとても楽しかったです。

@tomorrowkey

Kotlin言語仕様書への招待 〜コードの「なぜ」を読み解く〜

Kotlinの言語仕様を読んだことはなかったのでとても学びになりました。

スペックとして定義しているOverloadはすごく厳密ですべてのルールを理解することは難しいですが、そんな難しいと考えなくても雰囲気で書けているということは言語として優れている点の1つなんだろうなあと思いました。

Functional Calisthenics in Kotlin: Kotlinで「関数型エクササイズ」を実践しよう

昔懐かしオブジェクト指向エクササイズを思い出してセッションを聴きました。関数型をきちんと説明できないので、関数型プログラミングにもエクササイズを通して学び直したいなと思いました。

最後に

今年の Kotlin Fest でも、セッションや各社ブースを中心に興味深い話をたくさん聴くことができました!Kotlinを愛でるエンジニアの方々との交流はとても刺激となりました。交流してくださったみなさま、またKotlin Fest運営のみなさま、楽しい時間をありがとうございました。

STORES ではモバイルエンジニアを募集しています!カジュアル面談はもちろん、定期的に Beer Bash を開催しています。少しでも興味を持ってくださった方は、ぜひご参加ください!

jobs.st.inc coubic.com