採択
2024/06/22 16:50〜
ホールA
ロング(40分)
その他 中級者

K2のKotlin IDEプラグインの中を覗いてみよう♪

yanewm Yan Zhulanow

この春、K2コンパイラを使った、IntelliJ IDEAのKotlinプラグインのアルファ版が発表されました。見慣れたIDEが軽くなり、さらに、スイスイとコードを書ける感覚を目指したプラグインの開発がどんどん進んでいます。
K2の洗練された仕組みによって、コードの解析がかなり早くなりました。しかも、プラグインに新しいコンパイラが入っただけではありません。早くて安定するために、それぞれの部分をゼロから作り直したり、大幅に改善されたりしています。

Kotlinチームのメンバーとして、その変化について具体的にお話しさせていただきます。
難しそうだと感じる人もいるかもしれませんが、コンパイラやIDEの内部に触れたことがない人でもわかりやすい内容になっています。皆さんがよく知っているKotlinに、違う角度から触れてみましょう!

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

Kotlin compiler のコードを探検しよう!

eduraaa ezura

Kotlinはオープンソースソフトウェアとして公開されており、誰もが自由に閲覧し、貢献することが可能です。その心臓部であるコンパイラも例外ではありません。

多くの開発者が日常的に使用しているにもかかわらず、その内部実装を詳しく知る機会はそれほど多くありません。
しかし、ちょっとした好奇心でコンパイラのコードを覗いてみるだけで、新しい発見がありとても楽しいです!

このセッションでは、私たちの身近なもの、例えば予約語を起点として、Kotlinコンパイラのコードを読み進めてみます。
私たちが書いたコードがどのようなプロセスを経て変換されるのか、コンパイラのコードを追いかけながら一緒に探求してみましょう。
この旅を通じて、コンパイラのコードの読み方、そしてKotlinの魅力をさらに深く掘り下げます。

13
採択
2024/06/22 12:00〜
ホールA
ロング(40分)
Kotlin言語・プログラミング 初級者

パフォーマンスと可読性を両立:KotlinのCollection関数をマスター

daasuu Masayuki Suda

KotlinのCollection関数の有効活用に焦点を当てたこのセッションでは、100を超える豊富な関数を概観し、それぞれの使用時の利点を探ります。
実際のコード例を通じて、どんなCollection関数があるか、どのシナリオでCollection関数を選択するか等学びましょう。

トピック例
・Kotlin Collectionの概要 - Collectionのフレームワーク基本構造と主要なインターフェースの説明
・Collection関数のカテゴリー分け - 変換関数、フィルタリング関数、集約関数、分割関数などに分けて関数を紹介
・高度な関数 - groupBy, partition, fold などの高度な関数の活用方法と例。
・パフォーマンスの最適化 - Collection関数のパフォーマンスに影響を与える要素と、効率的なコードを書くためのテクニック。for文の出番も?

14
採択
2024/06/22 16:50〜
ホールB
ロング(40分)
KMP(Kotlin Multiplatform) 上級者

あらゆるアプリをCompose Multiplatformで書きたい! -ネイティブアプリの「あの機能」を私たちはどう作るか-

subroh_0508 Subroh Nishikori

本セッションでは、現在発表者が本番リリースに向けて開発中である、Mastodon用クライアントアプリの実装を通して得た経験から、Compose Multiplatformによるモダンかつ実用的なネイティブアプリを実装するための知見を紹介します。

「画像の表示」「動画の再生」「ファイルピッカー」のような、直接ユーザーが触れる機能はもちろんのこと、「ディープリンクの実装」「ローカルなデータストレージへの認証情報の保持」等の表から見えづらい部分まで、実用的なネイティブアプリの開発における頻出要素をどうすれば共通のKotlinコードで表現し、複数のプラットフォームに向けて実装できるのか、解説します。現時点でのCompose Multiplatformの実力を多くの方に知っていただき、"真のマルチプラットフォーム開発"への挑戦者を1人でも増やせるような発表にできればと思います。

12
ロング(40分)
Webバックエンド/サーバサイド 初級者

人生初めてのKotlinプロジェクトで毎秒50万プッシュ通知を処理した件について

trustin Trustin Lee

新年0時になると、人々はそれぞれの心を込めて大切な家族や友人にメッセージを送ります。LINEのメッセンジャーサーバーは、その心を伝えるために、APNsやFCMのプッシュ通知サーバーに多数のリクエストを送信します。毎年毎年プッシュ通知を処理してきましたが、2024年はKotlinで新規作成したサーバーがかなりの数のプッシュ通知を処理したという点が特別な年でした。 本発表では、Java開発はベテランですが、Kotlin開発は初めての立場で、大容量・高性能サーバーを開発した経験を以下の視点で共有します。

  • Java開発者が知っておくべきKotlinの特徴と機能
  • Jacksonユーザーのためのkotlin-serialization導入の話
  • Kotlin suspended functionとJavaの非同期APIとの共存について
  • APNsに安定的にプッシュ通知を送信する秘訣
5
ロング(40分)
Webフロントエンド 初級者

(deleted)

(deleted)

(deleted)

ロング(40分)
KMP(Kotlin Multiplatform) 中級者

Androidアプリから始めるMultiplatformアプリ開発

swiz_ard 久保出 雅俊

Kotlin Multiplafromに対応したライブラリは数多くあります。新しいライブラリだけでなく、途中からKotlin Multiplafromに対応したライブラリもあります。
Android JetpackはAndroid開発における公式が提供するライブラリ群ですが、JetpackでもMultiplatform対応が進んでいます。
これにより、AndroidアプリをMultiplatformアプリに進化できる可能性が出てきました。

このセッションでは、いくつかのライブラリを用いたAndroidアプリを用意し、そのアプリをMultiplatformに進化させていく過程を紹介します。
その中で気をつけるべきポイントや、ハマりどころ、実用性や将来性についても話します。

4
採択
2024/06/22 12:00〜
ホールB
ロング(40分)
Webバックエンド/サーバサイド 中級者

2024年版 Kotlin サーバーサイドプログラミング実践開発

n_takehata 竹端 尚人

私は2021年に「Kotlin サーバーサイドプログラミング実践開発」という書籍を出版しました。
その中ではサーバーサイドKotlinで必要なフレームワークの知識、実践的なアプリケーションの作成もしています。
しかしそこから3年が経ち、執筆当時からサーバーサイドKotlinを取り巻く環境は変わってきています。

そこで、今回は書籍の内容からアップデートし、2024年現在のトレンドに則った

・フレームワーク
・アプリケーションアーキテクチャ
・各種ツール

でのKotlinのサーバーサイドアプリケーションの作成方法について紹介していきます。
「サーバーサイドKotlinを導入してみたい」と考えている方にとって、一つの道筋になるかと思います。

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

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

itohiro73 いとひろ

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

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

7
ロング(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
ロング(40分)
Webバックエンド/サーバサイド 中級者

もう検査例外を求めない!KotlinのRailway Oriented Programming by kotlin-result

Yuiiitoto Yuito Sato

Kotlinによる開発の難しさの一つにエラーハンドリングの難しさが挙げられます。
KotlinではJavaと違い検査例外がないため関数の呼び元でエラーハンドリングを強制できません。また、どのエラーに対応するべきかは中身の実装を見る必要があります。

この問題の解決策として、Railway Oriented Programmingとその実装としてOSS kotlin-resultを紹介します。

Railway Oriented Programmingでは正常ケースと異常ケースの2つのレールを型で表現しながら開発する手法です。
異常ケースが型で表現されるためエラーハンドリングのミスがコンパイラーフェーズで気付けるようになります。
具体的には関数型プログラミングにおけるResultやEitherという成功値かエラー値かのどちらか一方の値を持ったデータ構造を使ってエラーハンドリングを行います。

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

コードレビューで学ぶ!Kotlinオブジェクト指向デザインパターン

akkiee76 Akihiko Sato

このセッションでは、オブジェクト指向をベースにした設計、理解容易性、命名、コードスタイル、機能要件、ドキュメント、テストといった7つの観点で行うコードレビューの手法を紹介します。

特に設計と理解容易性は、プロダクトの品質や保守性に関連する重要な観点です。そのため、コードレビューの観点で以下のデザインパターンをアンチパターンから堅牢なKotlinコードに改善する手法を紹介します。

・完全コンストラクタ
・バリューオブジェクト
・ストラテジパターン
・ポリシー
・ファーストクラスコレクション
・スプラウトクラス

また、コードレビューを支援するツールであるPR-AgentやCodeRabbitを活用したAIコードレビューの手法やレビューを効率化するプロンプト戦術を紹介します。参加者は、効果的なコードレビュー戦略を学び、チームの技術力向上に効果的かつ実践的な手法を得ることができるでしょう。

ロング(40分)
Android 中級者

iOS(Swift)での実装方針を参考にしながらAndroid(Kotlin)での実装効率を上げるための考え方とテクニック事例紹介

fumiyasac 酒井文也

iOS/Androidのネイティブアプリを並行して開発する場合は、SwiftとKotlinの様な言語の違いをはじめ、様々な違いを理解し、見極めながら進めていく必要があります。そして、双方を効率良く理解するために、違いをネガティブに捉えず、共通点や相違点等を上手に紐解く姿勢も重要です。

本発表ではKotlinでの実装を中心に据える前提で、Swift(iOS)と比較した際における、「1. UI実装・Layout処理の違いを見極める / 2. Swift・Kotlinを用いた実装における共通点や類似点を探し出す / 3. iOS・Androidで明確に異なるポイントを知る」ためのヒントを事例を含めて解説します。

開発を通して得られた過程や着眼点に加え、同様または似た形の機能やUI実装を要件〜具体へブレイクダウンする際のプロセスや解法アプローチについても、具体例を交え紹介する予定です。

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

明日使える?バリデーションにまつわるテクニック

jsoizo せきね じゅん

多くのKotlinプログラマが、バリデーションに関する安全性と保守性を高くするためのより良い方法を模索していらっしゃるのではないでしょうか。
そのような方向けに、Kotlinの言語の持つ機能やライブラリを用いたテクニックを紹介しつつ、どのような目的で使うのが良いかについて、コード例を示しながらお話していきます。
また、Kotlin 2.0で正式リリースされるContext Receiver機能によって可能になることについても触れたいと考えています。

おおよそこのようなことを目次として話すことになる予定でいます。
※ ショートセッションとなった場合は③または④の内容が中心になります

① コンストラクタについておさらい
② スマートコンストラクタとResult/Either型
③ バリデーションDSLの実装
④ Context Receiverの解説と使い所

よろしくお願いします。

4
ロング(40分)
Webバックエンド/サーバサイド 中級者

Kotlinを用いたCQRS+ESマイクロサービスの実践

nrslib 成瀬允宣

これまでKotlinに触れてこなかったチームが、新規プロジェクトの言語選定でKotlinを採用し、SpringとAxonを用いて、疎結合でスケーラブルなマイクロサービスの構築を行った知見を共有します。

本セッションではプロジェクトで得られた知見をもとに、Kotlinを用いたCQRS+ESマイクロサービスを設計・実装する際のベストプラクティスを共有します。
また、マイクロサービスアーキテクチャを採用する利点や注意点などについてもお話します。

本セッションのトピックは次の通りです。
1.CQRS+ESアーキテクチャの概要と採用の背景
2.Spring BootとAxon Frameworkを用いたマイクロサービスの設計
3.Kotlinの言語特性を活かした実装
4.マイクロサービス間の連携とデータの整合性の確保
5.開発における課題と解決策
6.実際のプロジェクトでの応用事例と得られた知見

5
ロング(40分)
Webバックエンド/サーバサイド 中級者

徹底解説!Kotlin CoroutinesとSpring WebFluxを使ったサーバーサイドアプリケーション開発

be_hasee Hasebe

Spring 5.0にて登場したSpring WebFluxですが、Reactive Programmingが難しいためか実際の現場では採用が見送られるケースが多かったように思います。
現在はCoroutinesがサポートがされ、以前よりも採用しやすくなりました。しかし、国内ではまだまだ情報が少ないため、採用に至っていない人もいると思います。

そんな人の背中を後押しするような情報をご紹介しようと思います。
2017年から大規模な環境でSpring WebFluxを使っているため、運用観点のお話も交えてご紹介致します。

Spring WebFlux/Coroutinesの概要
Observabilityはどうするか
ThreadLocal(MDC等)との付き合い方
Micrometer Context Propagation
BlockHound
Virtual Threadsとの比較

1
採択
2024/06/22 14:50〜
ホールA
ロング(40分)
Kotlin言語・プログラミング 上級者

もっとKotlinを好きになる!K2時代のKotlin Compiler Plugin開発

kitakkun_pb kitakkun

Kotlin Compiler Pluginは、KSPの制限を超えて、コードの生成だけでなく改変まで行える強力なツールです。
K2コンパイラの導入により、さらに柔軟なコンパイラ拡張が行えるようになりました。

私は大学の研究で、変数の監視や巻き戻しによるデバッグ(Time-Travel-Debugging, TTD)を実現するKotlin Compiler Pluginを開発しました。
本セッションでは、研究で得た経験をもとに、Kotlin Compilerの仕組みと、Kotlin Compiler Pluginの実装方法・活用例を紹介します。

アジェンダ

  • Kotlin Compilerの内部構造
  • Kotlin Compiler Plugin APIの紹介
  • Kotlin Compiler Pluginの活用例

奥深いKotlinの世界をコンパイラの視点で探究してみませんか?

11
採択
2024/06/22 14:50〜
ホールB
ロング(40分)

例外設計について考えて Kotlin(Spring Boot&Arrow)で実践する

Msksgm 杉本将来

例外設計の深掘りと、Kotlin による自作エラー型を用いた例外設計の実践方法を発表します。
例外は、ほとんどの言語に搭載される機能のため、あまり考慮せずに実装されがちです。結果、コードの保守や障害原因の特定が難しい状況になります。そこで、例外に関心を持ちチームの方針を決めることで、プロダクト開発(開発・運用・障害復旧)の生産性に好影響を与えると考えています。
Kotlin のリッチな機能に加えて Arrow の Either 型により、例外設計を柔軟に表現可能です。Spring Boot も含めた実装方法を実践します。

一連の内容を下記の項目で発表します。
例外設計を考える
・背景
・ビジネス例外と技術的例外
・モデリング
・監視と O11y
Kotlin で実践
・Arrow の Either 型による自作エラー
・Spring Boot に組み込む

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

kotlin-language-serverから学ぶLSPとKotlin

helloyuki_ yuki

Kotlinは普段IntelliJで開発している方がほとんどだと思いますが、中には発表者のようにNeovimや、VSCodeなどのJetBrains社製以外のエディタ等で開発したい方がいるかもしれません。これらのエディタを使う場合、いわゆるLanguage Server(LS)が必要になります。

Kotlinにはkotlin-language-serverというツールがあり、Language Server Protocol(LSP)を会話できるエディタであればコード補完等の機能を利用できます。

発表者は最近このツールにコントリビュートしており、

  • LSPとは何か
  • LSのアーキテクチャ(ScalaやRustの事例も絡めて)
  • kotlin-language-server実装の難しいポイント
  • kotlin-language-serverの課題点

を話したいと思います。

4