Agent Development Kit(ADK)は、Google Cloudが発表したAI Agentを開発するためのフレームワークです。Google I/O2025でJava版のADKが公開され、Kotlinを含むJVM環境からの利用が現実的な選択肢となりました。
本セッションでは、Java版ADKのSpring Boot + Kotlin環境での動作事例を起点に、KotlinがAI Agentの土台としていかに強力な選択肢となり得るかを探ります。
後半では、Model Context Protocol を介したAgent-to-Agent 通信の概念にも触れ、複数のAIが連携し、より高度なタスクをこなす「Agent to Agentの未来」をKotlinで実現する可能性を深掘りします。
みなさんもKotlinを用いたAI Agent開発の新たな可能性を共に探求してみませんか?
「バイテンポラルデータモデル」という言葉を聞いたことがあるでしょうか?ビジネス時間と処理時間の2つの時間軸でデータを管理する概念で、時制を扱う必要があるシステムを設計するにあたって非常に有用なデータモデルです。Reladomoは、これを透過的に扱える稀有なORMですが、残念ながらKotlinから使うには多くの壁がありました。
本セッションでは、バイテンポラルデータモデルの概要を説明するとともに、Claude Codeをペアプログラミングパートナーとして、Kotlinを用いた型安全な設計、拡張関数、DSL等を活用してReladomoをKotlin with Spring Boot で簡単に扱えるようにしたお話をします。
このセッションでは、実際のコードとデモに加え、Claude Codeとの対話ログも一部お見せし、AIエージェントとのリアルなものづくりの実態もお伝えします。
DI コンテナに慣れ親しんだ開発者が直面する課題として、ドメイン層への技術的依存の混入があります。ドメインサービスでフレームワークが提供する DI を使用しているのは、ドメインロジックが技術的要素に依存していないと言えるのでしょうか?
本セッションでは、Kotlin の高階関数とタイプエイリアスを活用することで、DI コンテナに依存せずにクリーンな依存関係の注入を実現する手法を紹介します。従来のクラスベースのドメインサービスから、純粋な関数としてドメインロジックを表現し、高階関数による依存関係の注入パターンを通じて、技術的関心事からドメインを完全に分離する実践的なアプローチを解説します。
Kotlinは「The Billion-Dollar Mistake」とも呼ばれるNull参照問題を防ぐために、Null Safetyをサポートしています。しかし、完全に安心するにはまだ早いかもしれません。 Kotlinでのソフトウェア開発では、未だ、Kotlinのみのエコシステムで完結することは難しく、Java(JVM)の資産を活用する場面が多くあります。そして、Javaとの連携の境界線上には意外な落とし穴があります。
本セッションでは、実際のプロジェクトで遭遇したKotlinの型システムを突破してきたnullの問題を共有しつつ、KotlinとJavaの相互運用におけるPlatform Type、 Generics、Type Erasure、Deserialization、Reflection などの内容を踏まえ、KotlinのNull Safetyついてお話しします!!
Kotlin は null 安全性を備えていますが、設計上「同一の概念に複数のタイプ(例:文字列・数値など)」を持たせたい場合、nullable プロパティや共通フィールドによる冗長で壊れやすい設計になりがちです。
本セッションではsealed interfaceを活用し、各バリアントを代数的データ型(ADT)として型安全に設計する関数型的アプローチを紹介します。null を排除し、型で制約を表現する設計によって、シンプルで堅牢なコードを実現できます。
さらに、
本セッションでは、月間アクティブユーザー約10万人規模のエンタメアプリにおける、Kotlin 1.9.25から2.0への移行の実例を共有します。
特に注目したいのは、Compose UIで頻繁に指摘されるUnstableCollections警告です。
13のComposable関数でList<>パラメータを使用していた当プロジェクトでは、この警告を「将来対応すればいい」と無視し続けてきました。
K2コンパイラの改善により、この問題がどの程度改善されたのか、実際の計測データを基に検証します。
主なトピック:
Compose Multiplatform (CMP) は、KotlinのコードベースでAndroid、iOS、Desktop、WebアプリのUIを共通化できる画期的なフレームワークです。
しかし、Jetpack Compose及びKotlin Multiplatform Mobileの流れを汲むがゆえに、依然としてAndroidとiOSというモバイルの話に限定されがちです。
本セッションでは、CMPの中でも特にDesktopおよびWebに焦点を当て、Kotlinにおけるクロスプラットフォーム開発についてお話しします。
普段Kotlinを使った開発をしている中で、ビルドエラーに困ったことはありませんか?
単純なコンパイルエラーなら修正して終わりですが、Gradleプラグインのエラーなどは場合によっては原因の特定に時間がかかる場合があります。
また、ビルドが成功しても、ビルドした結果に疑問を持ったことはありませんか?自分はKMPでiOS向けにビルドする際、生成されたObjective-Cの型名や関数名にアンダースコアが付与されるなど、なぜこのようなビルド結果になるのかと思ったことがあります。
そんなとき、KotlinコンパイラーやGradleプラグインのソースコードに対してブレークポイントを貼り、普段のAndroidアプリ開発と同じようにDebuggerを使ってデバッグする方法を紹介します。
AIエージェントの登場により自然言語ベースで複雑なタスクも自然言語で実行できるようになりました。既に多くのサービスがこの新しい世界と繋がるためMCP対応を進めており、今最も注目されている話題のひとつだと思います。
こういったシステムの登場により、人の手では再現が困難な不具合や冗長な操作手順を必要な事象の確認など、普段悩ましく感じられる課題を解消できないかと考えたことがあるのではないでしょうか。
実はKotlinでもAIエージェントなツールを開発することが可能で、その実現方法の中にはKMPに対応しているものやJVMサポートをしているものもあります。つまり、CMPを使った自然言語ベースのデバッグツール開発へ挑戦出来るんです。少しワクワクしてきませんか?
本セッションではCMPとMCPを活用したアプリ開発での知見や、実際に躓いた点などを共有出来ればと思います。
KoogでAIエージェントを、Ktorと公式MCP-SDKでサーバーを、そしてCMPでUIを構築し、フルKotlinで実現するシステムの実践的なプラクティスを提示します。
ただライブラリを使うのではなく、各モジュールの責務の定義、拡張性の高い設計やKMPを活かしたIFの共通化などをどのように実現するのか。
体系的な仕組みと「Kotlinらしい」アプローチをコードと共に解説します。
■ この発表で学べること
・MCPサーバーの構築: Ktorと公式SDKを使い、外部の情報をAIに提供する方法
・AIエージェントの構築: Koogを使い、 MCPサーバーとの疎通やビジネスロジックを「ツール」としてAIエージェントから利用する方法
・UIの構築: AIからのストリーミング応答をCMPで扱う方法
・責務分離に基づいたシステム設計: 各モジュールの役割を分ける設計思想と、その具体的なパターン
多くのプログラミング言語には、言語仕様書が用意されています。
言語仕様書を読むことで、その言語に対する理解を深めるのみならず、知らなかった機能を発見することもあります。
しかし、言語仕様書を読みたいと思う一方で、とっつきにくいと感じている人も多いのではないでしょうか。
本発表では、型システムや継承など普段からよく使用する機能を取り上げて、言語仕様の観点から解説します。
日頃何気なく書いているコードを体系的に理解することで、次の2点の達成を目指します。
・Kotlinのより深い理解: 表層的な使い方から一歩踏み込み、Kotlinの本質的な理解につなげる
・言語仕様書を読む意義の理解: 「なぜコードがそのように動くのか」の答えが見つかる仕様書の意義・魅力を知り、読んでみたいと思ってもらう
想定聴講者: Kotlinを業務・個人開発で使用し、より深く理解したい方(脱初級者を目指す方)
本セッションでは、どんな複雑なKotlinプロジェクトも、「関数」と「命令」の二つに分類することでテスト可能性を向上させる洞察を得ることができることを示します。
外部システムに依存しないロジックは「関数」として表現し、JUnitなどの軽量なテストフレームワークで徹底的なテストを行い、一方で外部システムとの相互作用や副作用を伴う操作は「命令」として捉え、最小限のMockフレームワークを利用し振る舞いを検証します。
Kotlinの強力な型システム(Null安全、Sealed Class/Interfaceなど)は、この設計戦略を強力にサポートします。コンパイルの段階で状態やイベントを網羅的に表現し、「関数」の純粋性を保証し、安全なリファクタリングを可能にします。
本セッションでは、Kotlinの強力な型システムと単体テストのアプローチを駆使して複雑なシステムを紐解いていく術を紹介します。
一部の言語では文字列補間をカスタマイズすることで、リッチな体験を実現することができます。
例えばScalaのdoobieでは、SQLに値を埋め込むように書いても、実際には安全なplaceholder構文に変換することができます。
https://typelevel.org/doobie/
残念ながらKotlinにはこの仕組みはありませんが、Kotlin Compiler Pluginを使えば実現可能です。
そこで、Kotlin Compiler Pluginを活用することで前述したScalaのdoobieのようにSQLを書くことができる「kuery-client」というライブラリを開発してみました。
https://github.com/be-hase/kuery-client
このライブラリを題材に、Kotlin Compiler Pluginの開発事例をご紹介したいと思います。
近年、Webアプリケーションのサーバーサイドにおいて、Kotlinが採用されるケースが増えてきました。
私たちの開発チームも新プロダクト立ち上げ時にKotlinを採用しましたが、10人超えのチームにも関わらず経験者は1人もいない状態でした。
型安全性やJavaとの親和性など、Kotlinに何を期待するか取捨選択をしながら採用しました。
採用から2年、一定の成果が得られた一方で、「あの時こうしておけばよかった」「こうなるとは思っていなかった」といった悩みが生まれています。
Kotlinに興味はあるがチーム導入に悩んでいる方、導入初期の悩みを持つ方の参考になれば幸いです。
「プログラムで音を生成したいけど、何から始めればいいかわからない」「サウンドプログラミング始めるには数学的敷居が難しそう」— そんな風に感じたことはありませんか?
実は、Kotlinの表現力豊かな文法と標準ライブラリを活用すれば、数学的な複雑さを抽象化しながら、驚くほどシンプルに音声が出せるアプリケーションを作成することができます。
本セッションでは、「Hello, World!」ならぬ「Hello, Sound!」的な内容・知識から始まり、最終的には美しいドレミ音階を奏でるまでの道のりを、紹介していきます!
Kotlin 2.0が発表されて早1年、様々な機能と共に言語機能にも拡張が加えられました。
本セッションでは、そんなKotlinに直近追加された機能を振り返りつつ、公式の発表やプロポーザル(KEEPやYouTrack)を見ながら、今後加えられる可能性のある言語機能などを眺めていきます。
本セッションは、今後どのようにKotlinが変わっていくのか、その方向を知る風見鶏となることを目指します。
内容(登壇時には一部変更されている可能性があります)
・ Kotlinにおける言語機能の進化原則
・ Kotlin 2.2.0 から有効になった機能
・ Context Parameters (prev: Context Receivers)
・ Union Types for Errors
・ Explicit backing fields
・ Support immutability
書籍『ThoughtWorksアンソロジー』には「オブジェクト指向エクササイズ」(Object Calisthenics)と呼ばれる、手続き型プログラミングからオブジェクト指向プログラミングのコード設計の発想に親しむための訓練方法として(少々大胆で今や古めかしい?)ルール集が登場します。
関数型言語使い/関数型プログラミング実践者の立場から、静的型付きオブジェクト指向言語Kotlinに無理なく馴染み現実的にメリットのある形で関数型プログラミングを実践するための「関数型エクササイズ」(Functional Calisthenics)をご提案します。
本セッションでは、Javaで構築されたコードベースをKotlinへ段階的に移行する際に、AIをどのように有効活用できるかを具体的に解説します。単なる機械的なコード変換にとどまらず、言語仕様や設計上の意図を考慮しながら、実用的かつ精度の高い移行を実現するために取り組んだ工夫を紹介します。AIによる自動変換の利点と限界、活用時の注意点を押さえた上で、実際のプロジェクト事例を交えながら、コードの安全性や可読性を損なわずにリファクタリングを進めるための実践的なテクニックとノウハウを共有します。
JavaバックエンドとReact/Next.jsでのWeb開発を経て、Kotlinの世界へ。
サーバーサイドやAndroid開発を通じ、ReactとKotlinでロジックの置き場所や設計思想が大きく異なる点に興味を持ちました。
ReactではHooksなどでロジックがUIに寄る傾向にある一方、Kotlinは責務ごとにロジックを分離し、UIから遠ざける傾向を感じています。
本セッションでは具体的なコード例を交え、ReactとKotlinの設計思想の違いからロジックとUIの置き場所を考察します。フロントエンド開発者がKotlinに入門する上で活かせた知見やつまづきをシェアし、Kotlinの魅力や今後の開発に役立つヒントを持ち帰っていただくことを目指します。
対象者
Kotlinのアノテーションは日々の開発で触れているものの、その内部実装や作成方法を深く理解している開発者は多くありません。本セッションでは、アノテーションの基本概念から実際の活用事例まで、実践的な内容で学習できます。
まず、既存のアノテーションの内部実装を解剖し、どのような仕組みで動作しているかを解説します。次に、KSPを使った現代的なアノテーション処理の実装方法を学び、kaptからの移行メリットも説明します。
後半では、実際のカスタムアノテーション作成例を複数紹介します。ログ出力の自動化、データ検証、コード生成など、実務で即活用できる具体的なコード例を通じて、メタプログラミングの威力を理解できます。
参加者は、アノテーションの仕組みを深く理解し、自分のプロジェクトに合わせたオリジナルアノテーションの設計指針を身につけられます。開発効率を向上させるKotlinの力を発見しましょう。