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

今までのKotlin Standard Libraryの追加APIを眺めてみよう

RyotaMurohoshi むろほし

Kotlin正式リリース後に追加されたKotlin Standard LibraryのAPIを、登壇者の独断と偏見でピックアップして紹介します。

2016年2月にKotlin 1.0が正式リリースされ、約8年が経ちました。正式リリース前から、趣味に、仕事にKotlinを使っていた方も多いのではないでしょうか?

一方でKotlin正式リリースから長い月日が経ち

  • 今でもKotlinは好きだけれど、最近仕事では別のプログラミング言語を使っている
  • 以前Kotlinを熱心に使っていたけれど、最近そこまでアップデートを追えていない

という方もいるのではないでしょうか?

本セッションではそのような方をメインターゲットに、Kotlin正式リリース後に追加されたStandard LibraryのAPIを、登壇者の独断と偏見でピックアップして紹介します。

1
ショート(20分)
Kotlinの活用事例(仕事や学業など) 中級者

Androidデバイスを保守カメラとして用いる

takashiho_2 たかっしー

CameraXは、Android端末のカメラを操作する際に強力なライブラリである。
しかし、メモリやGPUのリソースが限られている端末や、サポートされていない外部カメラを搭載した端末でCameraXのライブラリを使う際には、注意が必要となる。
本セッションでは、AndroidOSを搭載したデジタルサイネージを用い、正しく広告を投影しているかを遠隔で撮影して確認できる保守システムを例に挙げ、メモリやGPUなどの制限のある環境下で外部カメラを制御する方法について解説を行う。
また、MLKitの顔認識をバックグラウンドで行う方法を例に挙げ、GPUの負荷を抑えた画像認識能方法についても説明する。GPUの負荷を抑えるため、撮影時以外は解像度を落として顔認識を行う方法や、メモリ内に画像を1枚のみ格納し、解析が終わった際に確実にメモリを解放することでメモリーリークを防ぐといった方法について紹介する。

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

Amperを使って様々なKMPプロジェクトを構成

yoppie_x Yoshiya Maeda

Gradleのプラグインとして開発されたAmperというプロジェクトを構成するためのツールが登場しました。
Amperを使うことでスムーズにプロジェクトを構成することができ、さらに開発者体験も向上します。

本セッションはAmperに関する知見を共有します。
概要は以下です。

  • Amperは最近開発されたツールであるため、あまり親しみのない方に向けてAmperを解説
  • Amperを用いて様々な種類のKMPプロジェクトを構成するまでの知見を共有

トピックは以下を想定しています。

  • Amperの説明
  • module.yamlの書き方
  • Fleetで利用できるmodule.yamlに関するコードアシスタンス
  • Kotlin Multiplatformを構成
  • Compose Multiplatformを構成
  • Gradleを用いた既存のプロジェクトと統合する方法と、移行する方法
1
ショート(20分)
Android 初級者

これから始めるAndroidアプリ開発 ~Todoアプリをハンズオン形式で(MVVM)~

対象

  • Kotlinは触った事があるが、Androidアプリ開発の経験はない or 少ししか触った事がない
  • JetpackComposeに興味がある

セッションの目標

  • これからAndroidアプリ開発を学習する人の手助けをする
  • MVVMでAndroidアプリを開発できるようになる
  • JetpackComposeを理解してKMPなどでも応用できるようになる
1
ショート(20分)
Webバックエンド/サーバサイド 中級者

LLMアプリケーション開発 in Kotlin 〜サーバーサイドKotlinプロダクトでLLMに取り組んだ一年を振り返る〜

ry0_kaga r-kagaya

この一年で生成AI・LLMを取り巻く環境は大きく変化し、今までAIに取り組んでいなかった企業・プロダクトも生成AI・LLMを用いた開発に取り組む例が増えた事を実感します。

しかし、世の中の事例はどうしてもPython環境が多く、KotlinでのLLMアプリケーション・機能開発に関しての情報は広く共有されていません。
例えば、Kotlin(JVM)環境でOpenAI APIにアクセスするためのライブラリはあるのでしょうか?どうしてもPythonでないと出来ないことは何でしょう?

本セッションでは、サーバーサイド言語としてKotlinを採用している企業・プロダクトでLLMに取り組んだ一年の体験談・悩みも交えながら、
KotlinでLLMアプリケーション・機能開発を取り巻く環境や、実際にどのような構成・考え方で取り組んだかについて紹介します。

ショート(20分)
ツール/エコシステム 中級者

deleted

ry0_kaga r-kagaya

deleted

ショート(20分)
ミドルウェア/フレームワーク 初級者

Kotlinのcopy methodへの付き合い方とアーキテクチャテスト

mako_makok Makoto Kobayashi

Kotlinでdata class宣言を行うとequalsやhashCode, componentNなど、便利なメソッドが自動的に生成されます。
自動生成メソッドの中にcopyというメソッドがありますが、このメソッドは非常に便利な反面、利用シーンを間違えると不整合データが簡単に作れてしまうなどデメリットも併せ持っています。
今回は、copyメソッドとの付き合い方と、アーキテクチャテストでの解決方法についてお話します。

6
ショート(20分)
ミドルウェア/フレームワーク 初級者

SpringBootアップデート戦記 〜Kotlin + SpringBootのライブラリ選定を振り返る〜

mako_makok Makoto Kobayashi

現在SpringBootとKotlinで開発しています。
以前SpringBootの2系 -> 3系にアップデートをした際、周辺ライブラリの見直しも一緒に行いました。
実際悪戦苦闘した結果と、今改めてKotlin + SpringBootで開発するならどういうミドルウェアの選定を行うか?
について自分の考えをお話します。

5
どちらでも
テスト 中級者

Kotlinで保守性が高く変更容易なテストを書こう

wooootack Kyosuke Awata

普段から自動テストを書いていく上で、以下のような悩みを持っている方は多いのではないでしょうか。

・実行するたびに結果が変わってしまう
・1箇所だけ修正したはずなのに、色々なところのテストが落ちる
・そもそもどれくらいテストを書くべきなのか分からない
など

このセッションではKotlin以外の言語でも使えるテスト設計全般的な話と、それをKotlinで具体的にどのように実現するのかをお話しします。
テストコードを負債にしないためのテクニックや考え方をお伝えできればと思います。

具体的なテーマの例
・観点が明確なテストを書こう
・不要なテストを減らそう
・モックの使い過ぎには注意

※ 取り扱わないテーマ
・E2Eテストに関すること
・実際にデータベースと接続して行う単体、結合テスト

5
どちらでも
ミドルウェア/フレームワーク 中級者

KotlinでResultを取り扱う方法とライブラリ選定

mako_makok Makoto Kobayashi

KotlinにはJavaのように検査例外・非検査例外の区別はしません。
Java以外にも、他の言語にはエラーのハンドリングを強要させるような仕組みがありますが、Kotlinにはありません。
そのため、Kotlinにおける例外のthrowはすべて副作用となります。

このことから、Kotlinにおけるエラーハンドリングは多少工夫する必要があります。
そのための一つのテクニックとして、関数の戻り値にResult型という成功値もしくは失敗値を表現する型を利用する方法があります。
今回は、いくつかのライブラリの比較をしつつ、現場導入の際に考慮した事項と、実際にプロダクトへ導入した効果についてお話します。

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

Kotlinで始めるMinecraftマルチサーバープラグイン開発

ken_kentan Kentaro Doi

Minecraftは世界で最も有名なサンドボックスゲームの一つであり、その魅力を拡張するのがマルチプレイサーバー上で動くプラグインです。
本セッションでは、Kotlinを利用してJava版Minecraftサーバーのためのプラグイン開発について取り上げます。
Kotlin初学者でも追いやすいよう、プラグイン開発の基礎から段階的にご紹介します。

  1. 開発環境の設定: Minecraftプラグイン開発に最適な開発環境の構築
  2. Minecraftサーバープラグイン開発の基礎: プラグインの基本的な構成要素、コマンド等の実装方法
  3. 実践的なプラグイン開発: コルーチンを使用した非同期処理など
  4. デプロイメント: Minecraftサーバーへのデプロイ方法

Kotlinを学びたい方、またはMinecraftプラグイン開発に興味のある開発者にとって有意義に学べる内容を目指しています。

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

Kotlin × Spring Boot × DDD のアプリに非同期処理基盤を導入するまで

じーおー

Kotlinのアプリにおいて、非同期処理をアプリ上で工夫して行っていました。
それを別アプリ・インフラでの非同期処理に移行していくまでの思考過程・技術選定・DDDとの相性についてお話します。

4
ロング(40分)
ミドルウェア/フレームワーク 中級者

LLM系AIチャットと一緒に進めるKotlin OSSコードリーディング

itohiro73 いとひろ

OSSのコードを読んで挙動を理解してみたいと思いつつ、膨大なソースコードを前にしてどこから始めていいかわからず二の足を踏んでいる方は多いのではないでしょうか。

今回、そんな方のために、ChatGPT/Claude等のLLM系AIチャットと対話を進めながら、とっかかりを提案してもらい、 KotlinのOSSコード(Ktorを取り上げる予定)を読み進めてみるやり方をご紹介します。始めて読むソースコードでも、LLM系AIチャットがあなたと伴走してくれます!

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

認可のベストプラクティスとKotlinにおけるDDDでの実装パターン

urmot2 Yuta Muramoto

アプリケーション開発をする上で認可というものは切っても切り離せない関係にあります。
そのユーザーがどのような操作ができて、何ができないのかを定義し、実装することは当たり前のようにやられていると思います。
しかし、認可処理の実装には様々なパターンがあり、適切なパターンを選択するのは困難です。

このセッションでは認可のベストプラクティスとDDDの文脈における認可の取り扱いについて説明します。
また、ケースに合わせた実装パターンについて、Kotlinでの実装例も合わせてご紹介致します。

4
ショート(20分)
Webバックエンド/サーバサイド 中級者

組織戦略とKotlin

r_naganuma_fgi RyoNagnauma

私たちベンチャー企業がサーバーサイド言語にKotlinを採用するメリットについて、「ビジネスモデル」「採用」「育成」の観点からお話します。

このセッションは、私たちならではの視点を多分に盛り込んだものとなる予定です。
私は言語選定と組織の戦略は密接に関わるものだと思っています。

まず、私たちのビジネスモデルを簡単にご紹介します。
そのうえで、そのビジネスモデルを実現するためにはどんな人を採用して育成していきたいかをお話します。
その中でKotlinが有用であると思える点についてお伝えします。
もし他の組織であればどの言語を選択していたか、など別の言語についても少しだけ言及したいと考えています。

興味を持っていただけると嬉しいです。
よろしくお願いいたします。

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

ゼロから学ぶKotlin DSL

akihiro_kokubo Akihiro Kokubo

DSL(Domain Specific Language)とは、特定の問題領域に特化して設計された言語のことです。
Kotlinの言語機能を活用すると、開発者は自身のニーズに合わせたDSLを容易に作成できます。
これによりプログラミングの生産性とコードの品質を大きく向上させることができます。

このセッションでは、HTMLをテーマにゼロからDSLを構築します。
より具体的には、ラムダ式、レシーバ付きラムダ、拡張関数を用いて、型安全なHTMLビルダーを作成します。
Kotlin初心者でもすぐに取り組めるDSLの基本から応用までを実践します。

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

違いのワカル Kotlinプログラマーへの道

RunningReo すいみー

Kotlinには豊富な言語表現があります。
例えば状態を保持するのにもenumとsealed interface(class)などがあります。
比較表現にも==と===、classにつけるキーワードにもdataやinner、value、inlineなどいくつかあります。

しかし、それぞれの特徴を理解しておかないと意図しない表現になったり、もっと工夫できる書き方があるのに気づかなかったりします。
そこで使用事例の違いから内部実装の違い、Kotlinにしかない機能に関してはバイトコードから分かるコードサイズの違いまで様々な観点から見ていきます。

本セッションでは、Kotlinにいくつか存在する似た言語機能を時間の許す限りピックアップします。
そして、聞いていただいた方が違いを理解することで自信を持ってコーディングできる状態を目指します。

※ 取り上げる予定の言語機能についてはスライド参照

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

build.gradle.kts

RyuNen344 RyuNen344

Kotlin DSLが新規Gradle Buildsのデフォルトになって1年が経ちました。Kotlinで書かれたGradle Pluginも見る機会が増えているかと思います。
今後ますますのkotlnizeが進むと思われるGradleでKotlin DSLの力を発揮するためのTipsをお送りします。

本セッションでは下記のことを取り扱います。

・Kotlin DSLとGroovy DSL
・Kotlin DSLの強みと弱み
・Groovy DSLからの移行
・Kotlinで表現する便利Gradle Tasks
・Java(Kotlin) Project, Android ProjectそれぞれでのKotlin DSLの活かし方

6
採択
ショート(20分)
KMP(Kotlin Multiplatform) 中級者

Okioに愛を込めて

RyuNen344 RyuNen344

OkioはSquareが開発しているjava.ioとjava.nioの取り回しを楽にしてくれるラッパーライブラリです。言わずと知れたOkHttpやMoshiのベースにも使用されているライブラリです。
Kotlinで書き直された2.0.0よりMPP(KMP)対応が行われ、3.0.0でファイルシステム周りの機能が追加されました。
KMP(android, iOS)プロジェクトで実際に使用した私がありがたいと感じた部分についてお話しします。

本セッションでは下記のことを取り扱います。

・標準ライブラリが強力なKotlinでなぜOkioを見直すのか
・KMP実装にIO周辺実装での諸課題
・KMP実装においてもOkioがもたらすメリット
・Okioを使用する際の注意するべき前提

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

Project ValhallaとKotlin Value Classes

yamasa 大石将邦

Java言語にvalue objectsを導入することを目指す「Project Valhalla」が進行中です。これにより、値ベースのプログラミングスタイルを実現し、同時に実行時性能を大幅に向上させられると期待されています。Project Valhallaの影響はJVM言語でもあるKotlinに対しても多大であり、将来の我々のプログラミングスタイルにも変革をもたらすでしょう。

このセッションでは、Project ValhallaとそれがKotlin言語にもたらす影響について、以下のようなトピックで話す予定です。

  • Project Valhallaの概要
  • value objectsとidentity objects
  • value objectsの導入がどうして性能向上に繋がるか
  • Kotlinのvalue classがProject Valhallaによってどう進化するか
7