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開発の新たな可能性を共に探求してみませんか?
Compose Multiplatform (CMP) は、KotlinのコードベースでAndroid、iOS、Desktop、WebアプリのUIを共通化できる画期的なフレームワークです。
しかし、Jetpack Compose及びKotlin Multiplatform Mobileの流れを汲むがゆえに、依然としてAndroidとiOSというモバイルの話に限定されがちです。
本セッションでは、CMPの中でも特にDesktopおよびWebに焦点を当て、Kotlinにおけるクロスプラットフォーム開発についてお話しします。
AIエージェントの登場により自然言語ベースで複雑なタスクも自然言語で実行できるようになりました。既に多くのサービスがこの新しい世界と繋がるためMCP対応を進めており、今最も注目されている話題のひとつだと思います。
こういったシステムの登場により、人の手では再現が困難な不具合や冗長な操作手順を必要な事象の確認など、普段悩ましく感じられる課題を解消できないかと考えたことがあるのではないでしょうか。
実はKotlinでもAIエージェントなツールを開発することが可能で、その実現方法の中にはKMPに対応しているものやJVMサポートをしているものもあります。つまり、CMPを使った自然言語ベースのデバッグツール開発へ挑戦出来るんです。少しワクワクしてきませんか?
本セッションではCMPとMCPを活用したアプリ開発での知見や、実際に躓いた点などを共有出来ればと思います。
本セッションでは、どんな複雑なKotlinプロジェクトも、「関数」と「命令」の二つに分類することでテスト可能性を向上させる洞察を得ることができることを示します。
外部システムに依存しないロジックは「関数」として表現し、JUnitなどの軽量なテストフレームワークで徹底的なテストを行い、一方で外部システムとの相互作用や副作用を伴う操作は「命令」として捉え、最小限のMockフレームワークを利用し振る舞いを検証します。
Kotlinの強力な型システム(Null安全、Sealed Class/Interfaceなど)は、この設計戦略を強力にサポートします。コンパイルの段階で状態やイベントを網羅的に表現し、「関数」の純粋性を保証し、安全なリファクタリングを可能にします。
本セッションでは、Kotlinの強力な型システムと単体テストのアプローチを駆使して複雑なシステムを紐解いていく術を紹介します。
近年、Webアプリケーションのサーバーサイドにおいて、Kotlinが採用されるケースが増えてきました。
私たちの開発チームも新プロダクト立ち上げ時にKotlinを採用しましたが、10人超えのチームにも関わらず経験者は1人もいない状態でした。
型安全性やJavaとの親和性など、Kotlinに何を期待するか取捨選択をしながら採用しました。
採用から2年、一定の成果が得られた一方で、「あの時こうしておけばよかった」「こうなるとは思っていなかった」といった悩みが生まれています。
Kotlinに興味はあるがチーム導入に悩んでいる方、導入初期の悩みを持つ方の参考になれば幸いです。
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
Kotlinのアノテーションは日々の開発で触れているものの、その内部実装や作成方法を深く理解している開発者は多くありません。本セッションでは、アノテーションの基本概念から実際の活用事例まで、実践的な内容で学習できます。
まず、既存のアノテーションの内部実装を解剖し、どのような仕組みで動作しているかを解説します。次に、KSPを使った現代的なアノテーション処理の実装方法を学び、kaptからの移行メリットも説明します。
後半では、実際のカスタムアノテーション作成例を複数紹介します。ログ出力の自動化、データ検証、コード生成など、実務で即活用できる具体的なコード例を通じて、メタプログラミングの威力を理解できます。
参加者は、アノテーションの仕組みを深く理解し、自分のプロジェクトに合わせたオリジナルアノテーションの設計指針を身につけられます。開発効率を向上させるKotlinの力を発見しましょう。
クラウドAPIに依存しない、デバイス上で動作するローカルAIアプリケーションの開発手法を解説します。GoogleのGemma3nモデルを使用し、テキスト・画像・音声に対応したマルチモーダルAIアプリをKotlinで構築する具体的な実装パターンを紹介します。
セッションでは、Android Studio+Kotlin環境でのGemma3nセットアップから、実際のチャットアプリケーション実装まで、重要なコードポイントを説明します。プライバシー保護、オフライン動作、レスポンス速度最適化など、実用アプリに必要な技術的課題とその解決策も深掘りします。
従来のクラウドAI開発との違いや、ローカルAIの限界と可能性についても議論し、参加者がすぐに自分のプロジェクトで試せる具体的な実装例とベストプラクティスを共有します。AI初心者から経験者まで、Kotlinでの新しい開発体験を一緒に探求しましょう。
ターゲット
・アーキテクチャの歴史を復習したい人
・最近Android,IOSに触れ、昔の歴史を加味してアーキテクチャを理解したい人
概要
参加者の中には最近Androidエンジニアになった方や学生の方々も多いのではないでしょうか。
そんな方々に向けた、今までの歴史を振り返り、アーキテクチャの理解度を上げるためのセッションです。
初期からのアーキテクチャの主要な部分をAndroid,IOS横断で遡り、現状のMVVM,TCA,Fluxなどの思想の分かれ方の理解を深めます。
テーマ理由
・宣言的UI普及により、アーキテクチャが転換期であるため
・他の方のセッションで最先端のアーキテクチャ考察があると考え、前提となるセッションがあった方が良いと考えたため。
2020年にAndroid/Kotlinの開発をゼロから始めて以降、モバイルアプリ開発に向き合う中で、iOS(Swift)とAndroid(Kotlin)の違いと向き合いながら、両者の実装・設計思想に触れる機会を多く得てきました。
本セッションでは、Kotlinを軸としつつ、iOSとの比較を通じて得られた「UIやレイアウトの設計に対する考え方の違い」や「言語間の共通点・相違点から得られる学び」を事例ベースで紹介します。
また、業務で得たインプットをどのように実装や設計に落とし込んでいったか、初学者からある程度応用できるレベルに至るまでに意識していたポイントや、実務で活きた視点についてもお話しします。
iOS/Android両プラットフォームに関わる方や、これからKotlinやAndroidアプリ開発に取り組もうと考えている方にとって、実践のヒントとなるような内容をお届けします。
本セッションでは、主にSpring Bootアプリケーションについて、性能を左右する 同期・非同期 / Blocking・Non-Blockingの挙動を、syscallレベルまで掘り下げた解析と負荷試験の実測値を交えて解説します。
過去に書いたその時にベストだったコードも、Kotlinの進化によって、今ではもっとスマートに書けるかもしれません。新しい機能の導入背景を知りながら、モダンKotlinに書き換えていきましょう。
このセッションでは、Kotlin 1.9以降に入った機能に触れつつ、主に以下のケースについてどう書き換えるかの具体的なユースケースを紹介していきます。
このセッションを、コードを書くとき・レビューするときに、なぜその機能が追加され、どのように使うことが推奨されているのか、という背景まで理解して、よりよいKotlinを書くきっかけにしましょう。私達の書くコードはもっとスッキリするはずです。
サービスのスケールに伴い負債を抱えた大規模なレガシーシステムでは、マイクロサービスの新規開発は0→1ではなく、負債を精算しつつ進める-1→1の開発です。
本セッションでは、共有DB、分解ではなく分散してしまったマイクロサービス群によって複雑化した環境での新規マイクロサービスの立ち上げにKotlinを採用し、
・data/value classを用いた効率的なドメインモデリングでのDDD
・copy()のvisibilityなどKotlinが持つ課題、また成長方向を見据えてのイミュータブルを軸にしたプログラミング
・Gradle Kotlin DSLによるマルチプロジェクトなクリーンアーキテクチャ
・マイクロサービス間の結合度合いを意識した段階的データ洗浄フローのアプリケーション実装
を通じて、Kotlinをなぜ選定したかどう活用したか、そして負債を解消する具体手法と知見を共有します。
本セッションでは、ビジネス仕様をできる限りありのままにコードで表現(翻訳)するテクニックをKotlinを用いて解説していきます。
なぜビジネス仕様をありのままに表現したいのでしょうか?それは仕様や解決したい課題を正しく理解するためです。
自然言語で書かれたビジネス仕様は、どうしても曖昧な表現を含んだり、全てのシナリオが考慮されていなかったりします。その結果として出来上がったシステムは、仕様を考えた人(ドメインエキスパート)が想定していない挙動をしてしまうことがあるでしょう。
Kotlinの言語機能を活用してビジネス仕様をコードへ翻訳していくことで、現行の仕様では情報が不十分なときに、コンパイルエラーという形でKotlinが教えてくれるようになります。
最終的に出来上がったコードが、ドメインエキスパートが読んでも理解できるのが理想!
「Coroutineで処理を書いてみたけど、本当に非同期処理されているの?」「パフォーマンスが出ないのは、どこかでOSスレッドがブロックされてるせい?」「CoroutineとVirtual Threadを併用するとどうなるの?」「ダンプやデバッガの出力は複雑でわからない!」
サーバサイドKotlinのユーザに生じるこれらの疑問に対して、既存のデバッグ手法は煩雑でわかりにくいのが現状です。本セッションでは、Java Agent・JFR・DebugProbesを組み合わせた自作の可視化ツールを使い、CoroutineがどのOSスレッドでいつ動き、suspendされ、またどのOSスレッドがblockされているかをタイムライン表示で直感的に確認できる方法を紹介します。
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という選択肢