ロング(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
どちらでも
ツール/エコシステム 中級者

Kotlin meets GitHub Copilot: 基礎から理解してあなたも爆速開発

GitHub Copilotにより、世の中のプログラミングは劇的に進化しました。 LLMの力を使いコード生成、爆速開発できます。
より使いこなすには、LLMの技術的な制約・Kotlinの言語仕様を理解する必要があります。

・Kotlin 言語仕様を活用して可読性を維持しつつ意図したコード生成
・Single fileコーディングで十分なコンテキストを与えて、IDEの機能を使ってリファクタリング!
・Copilot Chatをコードリーディングに活用、実用的にするための一捻り

プレゼンテーションの構成
・LLMの原理原則から、できること・できないことの説明
・開発の流れに沿って活用のデモ
・Copilot Chatを活用して実用的なライブラリのコードリーディング

KotlinとGitHub Copilotを使った、未来のプログラミングスタイルを今日から始めましょう!

7
ロング(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
ショート(20分)
Kotlin言語・プログラミング 初級者

Flow Quiz N問N答

清水大夢

皆さんFlowを理解しながら使っていますか? 私はかつてはずっと雰囲気で使っていました。

数あるオペレータを使いこなしていますか? 私はcollectLatestくらいしか使っていませんでした。

このセッションではFlowに関する短いクイズの出題とその解答、解説を行い、その中でFlowの重要な概念に関して説明していきます。

クイズは実際の開発現場でのユースケースを想定した内容となっています。

一緒にFlowと仲良くなりましょう。

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

Kotlin製自作OSSを5年運用してきた経験を振り返る

doyaaaaaken 小山 健太

登壇者はkotlin-csvというKotlin製のOSSを自作し、5年運用してきました。
https://github.com/doyaaaaaken/kotlin-csv

その経験を振り返り、感想をシェアするセッションです。

なお2年前のKotlin Fest 2022にて、kotlin-csvをどのようにして普及させたのかについてはすでに語っています。
https://speakerdeck.com/doyaaaaaken/kotlinzhi-zi-zuo-ossnopu-ji-zhan-lue-kotlin-csvnoshi-li-woyuan-ni-at-kotlin-fest-2022

今年のセッションでは具体よりも、自身が5年の経験の中で得た知見について語ります。
楽しんでもらいかつ「自身もチャレンジしてみよう」と思ってもらえるセッションになるよう頑張ります。

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

Kotlin と GraphQL ではじめる CQRS でイベントソーシングなアーキテクチャ

sukechannnn Yosuke Obata

Spring Boot × Kotlin でバックエンドの開発をする時に悩むのがアーキテクチャだと思います。
世の中には様々なアーキテクチャがありますが、サービス立ち上げの時からアーキテクチャに凝りすぎると開発の速度が落ちてしまいかねません。
かと言って、何も決まりがない状態ではだんだんとカオスになってしまうと思います。

このセッションでは、Kotlin × GraphQL (DGS) × Spring Boot で CQRS アーキテクチャを実現し、責務を分離すべき部分はしっかりと、そうでもない部分は柔らかい状態を残しておく例をご紹介します。
併せて、Kotlin で CQRS と一緒にイベントソーシングを実現する例と、その際に便利な Sealed class の利用例についてご紹介します。

4
どちらでも
KMP(Kotlin Multiplatform) 初級者

Androidエンジニアに向けたKMPライブラリのご紹介

森 幸浩

このセッションではAndroidエンジニア向けにKMPライブラリの紹介をします。

Androidのライブラリ(Room,Retrofit,OkHttp)は触ったことがあるけど、KMPライブラリは触ったことがないといった方に向けてKMPで利用できるライブラリ(sqldelight,Ktorfit,Ktor)を紹介します。
また、Androidエンジニアが慣れ親しんだAndroidライブラリ風にKMPライブラリを使用する方法をご紹介します。

・sqldelightでRoomライクなDB実装
・Ktorfit+Ktor+kotlinx.serializationでRetrofit+OkHttpライクな通信実装

3
どちらでも
Android 中級者

KotlinでのStand Alone Gradle Pluginの作成と JacocoでのUnit Testカバレッジの取得

bigbackboom 菊池 広大

昨今、Androidの開発でもコードの品質の確保が重要となっており、その指標の一つとしてユニットテストのコードカバレッジが利用されています。
しかし、Androidのビルド環境は、使い慣れないGradle・マルチモジュールなどで複雑になっており、思い通りにカバレッジを取るのが非常に難しくなっています。

本セッションでは、Jacocoの設定を記述したStand Alone Gradle PluginをKotlinで作成する方法を解説し、モジュール間・プロジェクト間でのコードの再利用性を高める手段を紹介します。

以下目次

  1. カバレッジの計測ツール:
    a. JacocoとKotlin/kotlinx-kover
    b. なぜJacocoなのか?
  2. Stand Alone Gradle Pluginとは?
  3. プラグインの作成方法
  4. Jacoco用のプラグインの作成
3
ショート(20分)
ツール/エコシステム 中級者

ArchUnit で始めるコーディングルールの自動検知

omuomugin omuomugin

ArchUnit (https://www.archunit.org/) というツールをご存知でしょうか?

Java、Kotlin のプロジェクトに対してパッケージの依存関係から付与すべきアノテーションやクラス名など様々なコーディングルールを直感的に記述することができるフレームワークとなっています。
これによって暗黙知になりがちでコードレビューなどで担保しているようなコーディングルールを読みやすく管理でき、CI などで自動的に検知することが可能になります。

本セッションでは、「明日からプロダクトに ArchUnit を導入して暗黙的なコーディングルールを自動的にチェックできる」を目指し、以下に触れる予定です。

  • ArchUnit の使い始めかた
  • プロジェクトにおける設定、マルチモジュール構成における設定
  • ルールの記述例をいくつか紹介
2
ショート(20分)
その他 初級者

Kotlin Notebook を使ってみよう

kgmyshin kgmyshin

このセッションでは、Kotlin Notebook について解説します。
Kotlin Notebook は データサイエンスの領域などで使われている Jupyter Notebook のための、 Kotlin カーネル を 使用できる IntelliJ IDEA用の プラグインです。 Community Edition では使えず、 Ultimate で使えます。
対話型でKotlinのコードをすぐに動かすことができ、コードとその実行結果に、テキストや画像を1つのドキュメントにまとめることができます。
本セッションではツールの紹介から始め、基本的な使い方、さまざまな利用用途について触れます。
データサイエンス分野はもちろんのこと、普段アプリケーションコードを書いている人にとっても有用なユースケースが多くあるのでそういった点についても説明します。

2
ロング(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
どちらでも
KMP(Kotlin Multiplatform) 中級者

SKIE (スカイ)を活用した、iOS エンジニアにとっても開発者体験が良い Kotlin Multiplatform 開発

tfandkusu 高田 晴彦

Kotlin Multiplatform を用いた iOS/Android アプリ開発は、自由な範囲でソースコードの共通化ができます。それによって iOS/Android らしい UI/UX を実現しつつ、両アプリの仕様差異を仕組みで防ぐことができます。
このセッションでは Kotlin Multiplatform を導入したい人や、導入したけど iOS エンジニアの開発者体験をより良くしたい人に向けて、Swift から見た Kotlin Multiplatform の問題点と、それを解決する SKIE について解説します。また、実プロダクトに SKIE を導入した後のメンバーの感想や自発的取り組み、副作用とその対処法についても紹介します。

3