「Coroutineで処理を書いてみたけど、本当に非同期処理されているの?」「パフォーマンスが出ないのは、どこかでOSスレッドがブロックされてるせい?」「CoroutineとVirtual Threadを併用するとどうなるの?」「ダンプやデバッガの出力は複雑でわからない!」
サーバサイドKotlinのユーザに生じるこれらの疑問に対して、既存のデバッグ手法は煩雑でわかりにくいのが現状です。本セッションでは、Java Agent・JFR・DebugProbesを組み合わせた自作の可視化ツールを使い、CoroutineがどのOSスレッドでいつ動き、suspendされ、またどのOSスレッドがblockされているかをタイムライン表示で直感的に確認できる方法を紹介します。
近年のマイクロサービスアーキテクチャにおいて、サービス間通信の信頼性と効率性はますます重要になっています。本セッションでは、Kotlinを使ってRPC(Remote Procedure Call)通信を実現する方法を初心者向けに解説します。gRPCの概要やProtocol Buffersによるインターフェース定義、Kotlinでの実装方法を、実例を交えてわかりやすく紹介。RESTとの違いや、RPCのメリット・デメリットにも触れながら、Kotlin開発者が押さえておきたいリモート通信の基本を学びます。
Kotlinの data class が提供する copy メソッドは非常に便利ですが、異なるクラスへの状態遷移や、深くネストした Immutable データの更新といった複雑なシナリオでは 多くの手作業によるボイラープレートコードが発生しがちです。
本セッションでは、KotlinのImmutableデータ操作を強力にサポートするArrow Optics と コピー関数を自動生成する KSPプラグインの cream.kt を活用し、これらの課題をどのように解決できるかをご紹介します。
両ライブラリの基本的な使い方から それぞれの得意分野、そしてこれらを組み合わせることで、いかにKotlinのコードがクリーンで保守しやすくなるかを具体的なコード例を交えて解説します。
ライブラリの公開って、敷居が高く難しいと思っていませんか? 私も過去、そう思っていましたが Multiplatform library template ( https://github.com/Kotlin/multiplatform-library-template ) を利用すれば、まったく難しくありません。
このセッションでは Multiplatform library template を利用したライブラリの公開について、私の体験を通して得たつまずきポイントや Tips など付け加えて紹介したいと思います。
このセッションを聞けば、あなたもすぐにライブラリを公開できるようになります。 多くの素敵なライブラリが皆で共有しあえる素敵な世界を願います。
kotlinx-coroutines-test は、 Kotlin Coroutines による非同期処理を確実かつ高速にテストするためのライブラリです。 本ライブラリでは仮想時間制御によって、 物理時間を待たずに進められることで高速なテストを効率よく実装することができます。
では、 これらの機能は具体的にどのように実現されているのでしょうか。
本セッションでは、 「runTest を利用したテストは書いているが内部で何が行われているか分かっていない」という方を対象に、 提供されている各クラスや関数の振る舞いを内部実装から追い、 Coroutines におけるユニットテストへの理解を深めます。
新卒 1 年目でバックエンド開発に配属された登壇者が、Kotlin の Result/runCatching、そして Arrow Core の zipOrAccumulate で Railway Oriented Programming を実践する過程で遭遇した「コンパイルは通るのに意図通りに動かない」落とし穴を、ミニマムな再現コードでご紹介します。
Kotlin中級者の人には当たり前となっている内容かもしれませんが、ぜひエラーハンドリング時には注意して欲しい内容となっています。
モダンなAndroid開発ではビルドロジック共通化のためにGradleのConvention Pluginを使うことが一般的です。
しかし、ただ共通化したいだけなのにPluginの書き方を学ぶのは大変です。
本セッションでは、detektやkoinなどの任意のgradle pluginをConvention Plugin化する方法を実例と共に解説し、誰でもビルドロジックの保守・拡張ができる力を身につけられるよう導きます。
トーク内容(予定)
・ Pluginの実装方法
・ DSLを作成して認知負荷を減らす
・ Declarative Gradleという選択肢
Kotlin 2.2で安定化されたコンテキストパラメータは、関数型スタイルによるDSL設計と依存管理の在り方を根本から変える言語機能です。
このセッションでは、従来のDIフレームワークに頼らずに、文脈に応じた型安全な設計を可能にする新しい開発スタイルを、実践的なコード例と共に紹介します。
たとえば、設定、認証、ログ、トランザクション管理など、アプリケーションに不可欠な「コンテキスト」は、従来しばしば暗黙的でテストしづらい依存として扱われてきました。コンテキストパラメータを活用することで、それらを明示的かつ再利用可能な文脈依存の値として、安全に受け渡すことが可能になります。
本セッションのゴールは、Kotlinの型とコンテキストでコードを制御するという新しいパラダイムを体感し、従来の設計から脱却して、より堅牢で理解しやすいコードベースへ進化する方法を学んでいただくことです。
Java や Kotlin がほとんど普及していなかった会社で、本格的にサーバーサイド Kotlin を導入し全社的な標準技術として推進するために行った取り組みや、苦労した話を、技術的な面に焦点を当てて解説します。
最新の Kotlin 事情に合った技術選定や、新規 Kotlin プロジェクトを短期間で立ち上げ可能な環境整備を、実際に社内で行われた事例を基に一例としてご紹介します。
技術選定
環境整備
技術サポート
Kotlin 2.1から、KotlinをSwiftから利用する新しいinterop、Swift Exportが登場しました。
従来は、KotlinコードをObjective-Cとしてしか出力できず、Kotlinの言語機能を発揮しきることができませんでした。
しかし、K2 Compilerの新しいアーキテクチャによって、よりSwiftから利用しやすいinteropが実現しようとしています。
このトークでは、従来のObjective-C ExportやSKIEと比較しつつ、K2コンパイラ内でSwift Exportがどのように実現されているかを紹介します。
また、現在の状況や、今後のロードマップについても見ていきましょう。
複雑な状態遷移、手続き的なロジック…これまでのAI開発の常識は、「自律型AI」の登場で過去のものになろうとしています。本セッションでは、ゲームAIの世界で生まれたゴール指向アクションプランニング(GOAP)という強力な設計思想と、それをKotlinでエレガントに実装したエージェントフレームワークEmbabelを紹介します。
GOAPは「何をすべきか(How)」ではなく「何を達成したいか(What)」を定義することで、エージェントが自律的に行動計画を立てることを可能にします。この動的なアプローチは、変化し続けるビジネス要求に対応するエンタープライズAIアプリケーションに革命をもたらす可能性を秘めています。
セッションでは、GOAPの基本概念から、EmbabelがKotlinのDSL構築力、コルーチン、型安全性をいかに活用し、この複雑な自律性を宣言的かつ堅牢に実装しているかをデモで解説します。
チームのコーディング規約、形骸化していませんか?
コーディング規約はチーム開発において不可欠ですが、曖昧なルール、チームメンバーの変化、レビューコストの増加など、コーディング規約を運用するのには様々な課題があります。
本セッションでは、KotlinのLinterであるdetektのカスタムルール機能を利用してコーディング規約を運用する方法について以下の内容を紹介します。
・コーディング規約を取り巻く課題
・プロジェクト独自の規約を直感的なKotlinコードで明文化する方法
・実際に運用してみて効果的だったルール
このセッションを通じて、明日から開発生産性の向上に取り組める実践的な方法を得ることができます!
直近のCompose Animationのアップデートで、Modifier.animateBoundsが追加されました。
レイアウトのアニメーションが簡単に実装できるようになっています。
このアニメーションはアプリのUIを美しくし、ユーザー体験を向上させます。
本セッションは特にModifier.animateBoundsと、その基盤となるLookaheadScopeを深掘りし、
多様なレイアウトの変化をアニメーションさせる方法を紹介します。
・Compose Animationの新機能・動向
・Modifier.animateBounds、LookaheadScopeの概要と使い方、しくみ
・movableContentOfなどと組み合わせて多様なレイアウト変化をアニメーションする方法
・Modifierの適用順などの注意点
Model Context Protocol (MCP) の登場でAIと共存するアプリケーションへ変化しつつある今日において、
事実を残すことの大切さ、データの構造化・品質などが注目されています。
そんな時代にも活きる仕組みの一つとしてCQRS + Event Sourcingがあります。
本セッションでは サーバサイド Kotlin と Apache Pekko を用い、
CQRS + Event Sourcing で蓄積した「事実」を MCP 経由で AI に供給し、
活用するための道を実現する方法について解説します。
本セッションでは次の内容なども取り扱います
Projectionの活用やMCP Resource / Tool、推論結果の活用・ドリフト検知など
*発表時には内容が古くなっている可能性はあります
「rememberやderivedStateOfを使っているのにUIがもたつく…」そんな経験はありませんか?
パフォーマンス問題の多くは、再コンポーズの仕組み、特にComposition・Layout・Drawの3フェーズと、コンパイラが賢く再描画をスキップするための鍵となる「安定性(Stability)」への深い理解に、解決の鍵があります 。
本セッションでは、この「安定性」の仕組みを深掘りし、不要な再コンポーズを根本から防ぐ方法を解説します。Compose Compiler Metricsも活用しながら、不安定なクラスを特定・修正し、真に高速なUIを実現するための具体的なテクニックを学びます。
Kotlinでサーバーサイドアプリケーションを開発する際、Springは有力な選択肢の一つです。
今年はJetBrainsとの戦略的パートナーシップも発表され、さらにKotlinでの利用が活発になることが予想されます。
また現在のSpringは通常のサーバーサイド開発だけでなく、AIの使用やServerlessについてのサポートもあります。
そこで本セッションでは
・最新のSpring BootでのKotlinサポート
・Spring AIによるAIサービス連携
・Spring Cloud FunctionでのServerless開発
などを中心に、様々なシチュエーションでのKotlinのサーバーサイド開発のやり方について紹介します。
実際にこれらを活用して作成したアプリケーションを使いながら、解説していきます。
これからサーバーサイド開発の技術選定をする方の一助になればと思います。
エンジニアリングマネージャー(EM)からエンジニアに戻り、初めてサーバーサイドKotlin開発に挑戦した実践と学びの記録です。
多言語でのプロダクト開発経験を持つKotlin初心者の私が、EM経験で培ったマインドを活用しながら、Kotlinやそのエコシステムをキャッチアップし、プロダクト開発にコミットした過程を紹介します。
以下のトピックを中心にお話しします。
これからサーバーサイドKotlinに挑戦する方へ、
苦戦したことも含めた実体験から「やってみたい!」と思える実践的なヒントをお届けします。
デッドコードはコードの保守性を低下させる要因の一つですが、新規開発が優先されることが多く、結果としてコードベースの健全性が損なわれることがあります。
私たちのプロダクトでは、開発生産性向上のためにフィーチャーフラグを活用しています。
しかし、リリース後に不要となったフィーチャーフラグがデッドコードとして残る問題に直面しました。
この問題を解決するために、kotlin-compiler-embeddableを用いた構文解析とGradleプラグイン開発によるデッドコード削除の自動化を試みました。
このセッションでは、それぞれの実装方法について言及しつつ、フィーチャーフラグに起因するデッドコードの削除を自動化した経験を共有します。
これらのテクニックはデッドコード削除以外にも応用可能であり、セッション参加者の皆様のアイデア実現の一助となれば幸いです。
既存の機能を拡張する際に、手順書や仕様書を頼りに実装したことはありませんか?
しかし、ドキュメントはすぐに陳腐化します。コードこそが最も正確で信頼できる唯一のドキュメントです。
コードが実装漏れを教えてくれれば、手順書や仕様書は不要になるはずです。その表現方法の1つとしてコンパイルエラーを用いることができます。
もし、実装漏れによってコンパイルエラーになれば、コードを実行すること・本番環境にリリースすることはできません。
本セッションでは、コンパイルエラーによって実装漏れを検知するための設計と、その実践事例、トレードオフについて紹介します。
キーワード
・コンパイルエラー、直和型、網羅性、interface、設計
本セッションでは、生成AIの活用に特化した新しい仕組み「Model Context Protocol(MCP)サーバー」を、KotlinとSpring AIを用いてどのように構築したかをご紹介します。
MCPは、AIアプリケーションと外部のデータソースやツールを連携させるための標準化されたプロトコルであり、AIアプリケーションの柔軟性と再現性を高める注目のプロトコルです。
セッションでは、Spring AIを実際に使用した際の所感や、MCPサーバーとしての活用方法に加え、設計方針や実装上のポイントについて解説します。
次世代AIアーキテクチャの実践事例として、今後MCPの導入を検討している開発者の皆様に、具体的なヒントをお届けします。