どちらでも
Kotlin言語・プログラミング 初級者

Kotlinと向き合いながら見えてきた、UI実装の思考と言語間のつなぎ目

fumiyasac 酒井文也

2020年にAndroid/Kotlinの開発をゼロから始めて以降、モバイルアプリ開発に向き合う中で、iOS(Swift)とAndroid(Kotlin)の違いと向き合いながら、両者の実装・設計思想に触れる機会を多く得てきました。

本セッションでは、Kotlinを軸としつつ、iOSとの比較を通じて得られた「UIやレイアウトの設計に対する考え方の違い」や「言語間の共通点・相違点から得られる学び」を事例ベースで紹介します。

また、業務で得たインプットをどのように実装や設計に落とし込んでいったか、初学者からある程度応用できるレベルに至るまでに意識していたポイントや、実務で活きた視点についてもお話しします。

iOS/Android両プラットフォームに関わる方や、これからKotlinやAndroidアプリ開発に取り組もうと考えている方にとって、実践のヒントとなるような内容をお届けします。

1
どちらでも
Webバックエンド/サーバサイド 中級者

内部動作を理解してハイパフォーマンスなサーバサイドKotlinアプリケーションを書こう

ternbusty Ayako Hayasaka

本セッションでは、主にSpring Bootアプリケーションについて、性能を左右する 同期・非同期 / Blocking・Non-Blockingの挙動を、syscallレベルまで掘り下げた解析と負荷試験の実測値を交えて解説します。

内容

  • I/O待ちでOSスレッドブロックを避けるにはどんな選択肢があるか
  • CoroutineとSpring WebFluxやVirtual Threadを併用するとどのような挙動になるのか
  • Spring Boot×Kotlinで避けるべき、性能に影響を与えるBad Practiceは何か
  • Pure Kotlinな他フレームワークの性能上のメリット・デメリットは何か

対象者

  • 各種フレームワーク、Virtual Threadの内部動作を理解したい方
  • 適切な技術選択のための判断基準を得たい方
4
ショート(20分)
ツール/エコシステム 中級者

kotlin-jupyterで広がるKotlinの世界 - インタラクティブな実行環境がもたらす新しい開発体験

toliner_ トリナー

Kotlinの開発環境として、IDEやエディタ以外の選択肢があることをご存知でしょうか?

本セッションでは、Jupyter Notebook上でKotlinを実行できる「kotlin-jupyter」を中心に、インタラクティブなKotlin実行環境の魅力と活用方法を紹介します。
kotlin-jupyterは、コードの実行結果をその場で確認しながら開発を進められる環境で、グラフやテーブルなどの視覚的な出力も簡単に扱えます。また、コードと実行結果を一つのドキュメントとして保存・共有できるため、チーム内での知見共有や技術検証の記録にも最適です。

主に取り扱う内容 (予定)
-各種環境でのkotlin-jupyterの導入方法や基本的な使い方

  • 実務での利用例を元にした、kotlin-jupyterの実践的な活用方法やその魅力
  • Kotlinのインタラクティブ実行環境の比較
1
どちらでも
Kotlin言語・プログラミング 中級者

モダンKotlinへのリファクタリング

chigichan24 chigichan24

過去に書いたその時にベストだったコードも、Kotlinの進化によって、今ではもっとスマートに書けるかもしれません。新しい機能の導入背景を知りながら、モダンKotlinに書き換えていきましょう。
このセッションでは、Kotlin 1.9以降に入った機能に触れつつ、主に以下のケースについてどう書き換えるかの具体的なユースケースを紹介していきます。

  • enumのentriesプロパティについて
  • より賢くなったsmart castについて
  • kotlin.timeパッケージ
  • when式でのguardコンディション
  • Non-local break

このセッションを、コードを書くとき・レビューするときに、なぜその機能が追加され、どのように使うことが推奨されているのか、という背景まで理解して、よりよいKotlinを書くきっかけにしましょう。私達の書くコードはもっとスッキリするはずです。

ショート(20分)
Kotlin Multiplatform/Compose Multiplatform 中級者

Androidプロジェクトを簡単にCross Platformプロジェクトに変えてみよう

Androidプロジェクトを簡単にCross Platformプロジェクトに変えてみよう(Kotlin Multi Platform)

Androidのみのプロジェクトを利用して簡単にIOSのアプリもビルドできるようにしてみよう。

Androidプロジェクトにいくつか準備ができていれば、意外と簡単にIOSにもリリースできます

どちらでも
Kotlinの活用事例(仕事や学業など) 中級者

大規模レガシーに挑む「-1→1」のKotlinマイクロサービス開発

hondaya14 本多康久

サービスのスケールに伴い負債を抱えた大規模なレガシーシステムでは、マイクロサービスの新規開発は0→1ではなく、負債を精算しつつ進める-1→1の開発です。
本セッションでは、共有DB、分解ではなく分散してしまったマイクロサービス群によって複雑化した環境での新規マイクロサービスの立ち上げにKotlinを採用し、
・data/value classを用いた効率的なドメインモデリングでのDDD
・copy()のvisibilityなどKotlinが持つ課題、また成長方向を見据えてのイミュータブルを軸にしたプログラミング
・Gradle Kotlin DSLによるマルチプロジェクトなクリーンアーキテクチャ
・マイクロサービス間の結合度合いを意識した段階的データ洗浄フローのアプリケーション実装
を通じて、Kotlinをなぜ選定したかどう活用したか、そして負債を解消する具体手法と知見を共有します。

2
ロング(40分)
Kotlin言語・プログラミング 中級者

失敗から学ぶCoroutine・Flowテスト実践講座

h5mtakada Masatoshi Takada

▪️背景
 「CoroutineやFlowのテストがうまく書けない」「期待した値が取れない」「テストが安定して成功しない」、これらはCoroutine・FlowのUnitテストに挑んだ開発者なら誰もが1度は直面する課題ではないでしょうか?

実際のコードでは、リトライ処理、Exception、複数Flowの合成といった、テストには複雑なケースが数多く存在します。

本セッションでは、プロダクション開発でよくある複雑な非同期処理を例に、安定したテストを書くための実践的な手法を紹介します。失敗するテストを出発点に、失敗の原因分析から修正方法までを解説します。

▪️具体的な内容:
・よくある失敗パターンから学ぶ

・時間を制御するテクニック

・Flowテストの基本と応用

・複雑な非同期ロジックに挑む 

・MockK×Coroutineの活用法

・テストしやすい設計へのリファクタリング

1
どちらでも
Webバックエンド/サーバサイド 中級者

ビジネス仕様をありのままにコードに翻訳する技術 - Kotlinに仕様漏れを見つけさせよう

uryyyyyyy Koki Shibata

本セッションでは、ビジネス仕様をできる限りありのままにコードで表現(翻訳)するテクニックをKotlinを用いて解説していきます。

なぜビジネス仕様をありのままに表現したいのでしょうか?それは仕様や解決したい課題を正しく理解するためです。
自然言語で書かれたビジネス仕様は、どうしても曖昧な表現を含んだり、全てのシナリオが考慮されていなかったりします。その結果として出来上がったシステムは、仕様を考えた人(ドメインエキスパート)が想定していない挙動をしてしまうことがあるでしょう。

Kotlinの言語機能を活用してビジネス仕様をコードへ翻訳していくことで、現行の仕様では情報が不十分なときに、コンパイルエラーという形でKotlinが教えてくれるようになります。

最終的に出来上がったコードが、ドメインエキスパートが読んでも理解できるのが理想!

ショート(20分)
Kotlin言語・プログラミング 初級者

ライブラリがスラスラ読める!Kotlinステップアップ言語機能

hiroaki08181359 hiro(Nosho Hiroaki)

Kotlinは簡潔な言語であり、初学者でも基本的な文法は問題なく理解できると思います。

しかしライブラリやOSSの内部実装を読んでいると、普段自分では書かないような知らない文法が出てきて戸惑ったり、自分はKotlinの力を活かしきれていないのではと感じることもあるでしょう。

そこで本セッションでは、Kotlinをより深く知るために、押さえておきたいKotlinの言語機能を紹介します。
その際はコード例、図表、背景、使い所を交えながら分かりやすさを重視して解説します。

これらの機能を理解すれば、OSS等のコード読解やデバッグが容易になり、保守性・パフォーマンスの高いコードを書くための大きな助けとなるはずです。

内容
・ジェネリクス(in/outなど)
・インライン化(inline, reifiedなど)
・委譲(Delegation)
など

1
ショート(20分)
Kotlin言語・プログラミング 中級者

Kotlin Java相互理解: デコンパイルで探る動作 の仕組み

Yuki Matsuura

Kotlinでは、val / var、sealed class、suspend 関数、when 式など、Javaにはない独自の構文が存在します。では、それらが実際にどのように動作しているのか、Javaに変換されたコードで確かめたことはありますか?

このセッションでは、KotlinのコードをJavaにデコンパイルして比較することで、言語仕様の裏側を一緒に読み解いていきます。

取り上げるトピック例:
・val と var の違いは、Javaではどう表現される?
・sealed class の継承制限はどのように実現されている?
・suspend 関数の正体は?
・when 式はJavaでどう書き換えられる?
・Kotlinの List / MutableList の中身は何者?

2
ロング(40分)
ツール/エコシステム 上級者

もっとKotlinを乗りこなす!CompilerとIDEで拡張する新しいToolingの世界

kitakkun_pb kitakkun

Kotlin Compiler Pluginはコード中間表現の改変によって新しい言語パラダイムをもたらし、IntelliJ Pluginはツール拡張によって開発者を支援します。両者を組み合わせれば、もう1段階上の開発体験を作り出すことができます。

本セッションでは、IDEを経由してアプリ状態を巻き戻す、back-in-time-pluginを題材に、コンパイラ拡張とIDE拡張を組み合わせて、ユニークなToolingシステムを構築する実践的な例を紹介します。

アジェンダ:
・back-in-time-pluginのアーキテクチャ
・FIR/IR拡張による状態の追跡・巻き戻し
・IDEとアプリの連携方法
・Compiler PluginのIDEサポートの現在地

一見魔法に見える機能も、分割してみると単純な機能の組み合わせです。皆さんも大好きなKotlinで、魔法使いになってみませんか?

2
どちらでも
Webバックエンド/サーバサイド 中級者

Coroutine 可視化で学ぶスケーラブルなサーバサイド Kotlin

ternbusty Ayako Hayasaka

「Coroutineで処理を書いてみたけど、本当に非同期処理されているの?」「パフォーマンスが出ないのは、どこかでOSスレッドがブロックされてるせい?」「CoroutineとVirtual Threadを併用するとどうなるの?」「ダンプやデバッガの出力は複雑でわからない!」

サーバサイドKotlinのユーザに生じるこれらの疑問に対して、既存のデバッグ手法は煩雑でわかりにくいのが現状です。本セッションでは、Java Agent・JFR・DebugProbesを組み合わせた自作の可視化ツールを使い、CoroutineがどのOSスレッドでいつ動き、suspendされ、またどのOSスレッドがblockされているかをタイムライン表示で直感的に確認できる方法を紹介します。

対象者

  • サーバサイドでCoroutineをなんとなく使っている方
  • デバッガの出力が読みづらく挙動を追いきれない方
3
ショート(20分)
ツール/エコシステム 初級者

はじめてのKotlin RPC 〜リモート通信の仕組みを学ぼう〜

uesholib uesho

近年のマイクロサービスアーキテクチャにおいて、サービス間通信の信頼性と効率性はますます重要になっています。本セッションでは、Kotlinを使ってRPC(Remote Procedure Call)通信を実現する方法を初心者向けに解説します。gRPCの概要やProtocol Buffersによるインターフェース定義、Kotlinでの実装方法を、実例を交えてわかりやすく紹介。RESTとの違いや、RPCのメリット・デメリットにも触れながら、Kotlin開発者が押さえておきたいリモート通信の基本を学びます。

1
どちらでも
ツール/エコシステム 中級者

Arrow Optics と cream.kt で Kotlin のデータコピーのボイラープレートを減らす

tbs__ten てべすてん

Kotlinの data class が提供する copy メソッドは非常に便利ですが、異なるクラスへの状態遷移や、深くネストした Immutable データの更新といった複雑なシナリオでは 多くの手作業によるボイラープレートコードが発生しがちです。

本セッションでは、KotlinのImmutableデータ操作を強力にサポートするArrow Optics と コピー関数を自動生成する KSPプラグインの cream.kt を活用し、これらの課題をどのように解決できるかをご紹介します。
両ライブラリの基本的な使い方から それぞれの得意分野、そしてこれらを組み合わせることで、いかにKotlinのコードがクリーンで保守しやすくなるかを具体的なコード例を交えて解説します。

どちらでも
Kotlin Multiplatform/Compose Multiplatform 初級者

Kotlin Multiplatform ライブラリを Maven Central で公開しよう

hkusu_ Hiroyuki Kusu

ライブラリの公開って、敷居が高く難しいと思っていませんか? 私も過去、そう思っていましたが Multiplatform library template ( https://github.com/Kotlin/multiplatform-library-template ) を利用すれば、まったく難しくありません。

このセッションでは Multiplatform library template を利用したライブラリの公開について、私の体験を通して得たつまずきポイントや Tips など付け加えて紹介したいと思います。

このセッションを聞けば、あなたもすぐにライブラリを公開できるようになります。 多くの素敵なライブラリが皆で共有しあえる素敵な世界を願います。

1
どちらでも
Kotlin言語・プログラミング 中級者

kotlinx-coroutines-test の実装から見る Coroutines におけるユニットテスト

ntsk__ ntsk

kotlinx-coroutines-test は、 Kotlin Coroutines による非同期処理を確実かつ高速にテストするためのライブラリです。 本ライブラリでは仮想時間制御によって、 物理時間を待たずに進められることで高速なテストを効率よく実装することができます。

では、 これらの機能は具体的にどのように実現されているのでしょうか。
本セッションでは、 「runTest を利用したテストは書いているが内部で何が行われているか分かっていない」という方を対象に、 提供されている各クラスや関数の振る舞いを内部実装から追い、 Coroutines におけるユニットテストへの理解を深めます。

1
どちらでも
Webバックエンド/サーバサイド 初級者

コンパイル OK なのに意図した通りに動かない!? 新卒バックエンド開発者が学んだKotlinエラーハンドリング落とし穴

_____yyuta YutaYamamoto

新卒 1 年目でバックエンド開発に配属された登壇者が、Kotlin の Result/runCatching、そして Arrow Core の zipOrAccumulate で Railway Oriented Programming を実践する過程で遭遇した「コンパイルは通るのに意図通りに動かない」落とし穴を、ミニマムな再現コードでご紹介します。

  • runCatching × init ― 例外が握り潰されてバリデーションエラーが起きない!?
  • トランザクション × Result ― rollbackされずにデータがコミットされとる!
  • zipOrAccumulate ― “全部チェックして全部返す”はずが 1 件しか検証されてないやん!

Kotlin中級者の人には当たり前となっている内容かもしれませんが、ぜひエラーハンドリング時には注意して欲しい内容となっています。

1
どちらでも
ツール/エコシステム 中級者

Gradle書きたくない

モダンなAndroid開発ではビルドロジック共通化のためにGradleのConvention Pluginを使うことが一般的です。
しかし、ただ共通化したいだけなのにPluginの書き方を学ぶのは大変です。
本セッションでは、detektやkoinなどの任意のgradle pluginをConvention Plugin化する方法を実例と共に解説し、誰でもビルドロジックの保守・拡張ができる力を身につけられるよう導きます。

トーク内容(予定)
・ Pluginの実装方法
・ DSLを作成して認知負荷を減らす
・ Declarative Gradleという選択肢

どちらでも
Webバックエンド/サーバサイド 中級者

サーバーサイド Kotlin を社内で普及させてみた

hktechno 川田裕貴

Java や Kotlin がほとんど普及していなかった会社で、本格的にサーバーサイド Kotlin を導入し全社的な標準技術として推進するために行った取り組みや、苦労した話を、技術的な面に焦点を当てて解説します。
最新の Kotlin 事情に合った技術選定や、新規 Kotlin プロジェクトを短期間で立ち上げ可能な環境整備を、実際に社内で行われた事例を基に一例としてご紹介します。

技術選定

  • フレームワークや ORM の比較検討
  • Coroutines を使うべき?
  • Java 風 Kotlin?がっつり Kotlin?

環境整備

  • テンプレートプロジェクトの整備
  • Gradle convention plugin と version catalog
  • 社内共有ライブラリの整備

技術サポート

  • トラブルや苦労したポイント
  • AI agent (Junie)
2
どちらでも
AI 初級者

KotlinはエンタープライズAIの覇権を握るか?ゴール指向計画(GOAP)×エージェントフレームワークでつくる自律型AIの新潮流

_knih knih (Kenichi Suzuki)

複雑な状態遷移、手続き的なロジック…これまでのAI開発の常識は、「自律型AI」の登場で過去のものになろうとしています。本セッションでは、ゲームAIの世界で生まれたゴール指向アクションプランニング(GOAP)という強力な設計思想と、それをKotlinでエレガントに実装したエージェントフレームワークEmbabelを紹介します。
GOAPは「何をすべきか(How)」ではなく「何を達成したいか(What)」を定義することで、エージェントが自律的に行動計画を立てることを可能にします。この動的なアプローチは、変化し続けるビジネス要求に対応するエンタープライズAIアプリケーションに革命をもたらす可能性を秘めています。
セッションでは、GOAPの基本概念から、EmbabelがKotlinのDSL構築力、コルーチン、型安全性をいかに活用し、この複雑な自律性を宣言的かつ堅牢に実装しているかをデモで解説します。