登壇者は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年の経験の中で得た知見について語ります。
楽しんでもらいかつ「自身もチャレンジしてみよう」と思ってもらえるセッションになるよう頑張ります。
Spring Boot × Kotlin でバックエンドの開発をする時に悩むのがアーキテクチャだと思います。
世の中には様々なアーキテクチャがありますが、サービス立ち上げの時からアーキテクチャに凝りすぎると開発の速度が落ちてしまいかねません。
かと言って、何も決まりがない状態ではだんだんとカオスになってしまうと思います。
このセッションでは、Kotlin × GraphQL (DGS) × Spring Boot で CQRS アーキテクチャを実現し、責務を分離すべき部分はしっかりと、そうでもない部分は柔らかい状態を残しておく例をご紹介します。
併せて、Kotlin で CQRS と一緒にイベントソーシングを実現する例と、その際に便利な Sealed class の利用例についてご紹介します。
Kotlin Compiler Pluginは、KSPの制限を超えて、コードの生成だけでなく改変まで行える強力なツールです。
K2コンパイラの導入により、さらに柔軟なコンパイラ拡張が行えるようになりました。
私は大学の研究で、変数の監視や巻き戻しによるデバッグ(Time-Travel-Debugging, TTD)を実現するKotlin Compiler Pluginを開発しました。
本セッションでは、研究で得た経験をもとに、Kotlin Compilerの仕組みと、Kotlin Compiler Pluginの実装方法・活用例を紹介します。
アジェンダ
奥深いKotlinの世界をコンパイラの視点で探究してみませんか?
このセッションではAndroidエンジニア向けにKMPライブラリの紹介をします。
Androidのライブラリ(Room,Retrofit,OkHttp)は触ったことがあるけど、KMPライブラリは触ったことがないといった方に向けてKMPで利用できるライブラリ(sqldelight,Ktorfit,Ktor)を紹介します。
また、Androidエンジニアが慣れ親しんだAndroidライブラリ風にKMPライブラリを使用する方法をご紹介します。
・sqldelightでRoomライクなDB実装
・Ktorfit+Ktor+kotlinx.serializationでRetrofit+OkHttpライクな通信実装
昨今、Androidの開発でもコードの品質の確保が重要となっており、その指標の一つとしてユニットテストのコードカバレッジが利用されています。
しかし、Androidのビルド環境は、使い慣れないGradle・マルチモジュールなどで複雑になっており、思い通りにカバレッジを取るのが非常に難しくなっています。
本セッションでは、Jacocoの設定を記述したStand Alone Gradle PluginをKotlinで作成する方法を解説し、モジュール間・プロジェクト間でのコードの再利用性を高める手段を紹介します。
以下目次
例外設計の深掘りと、Kotlin による自作エラー型を用いた例外設計の実践方法を発表します。
例外は、ほとんどの言語に搭載される機能のため、あまり考慮せずに実装されがちです。結果、コードの保守や障害原因の特定が難しい状況になります。そこで、例外に関心を持ちチームの方針を決めることで、プロダクト開発(開発・運用・障害復旧)の生産性に好影響を与えると考えています。
Kotlin のリッチな機能に加えて Arrow の Either 型により、例外設計を柔軟に表現可能です。Spring Boot も含めた実装方法を実践します。
一連の内容を下記の項目で発表します。
例外設計を考える
・背景
・ビジネス例外と技術的例外
・モデリング
・監視と O11y
Kotlin で実践
・Arrow の Either 型による自作エラー
・Spring Boot に組み込む
ArchUnit (https://www.archunit.org/) というツールをご存知でしょうか?
Java、Kotlin のプロジェクトに対してパッケージの依存関係から付与すべきアノテーションやクラス名など様々なコーディングルールを直感的に記述することができるフレームワークとなっています。
これによって暗黙知になりがちでコードレビューなどで担保しているようなコーディングルールを読みやすく管理でき、CI などで自動的に検知することが可能になります。
本セッションでは、「明日からプロダクトに ArchUnit を導入して暗黙的なコーディングルールを自動的にチェックできる」を目指し、以下に触れる予定です。
このセッションでは、Kotlin Notebook について解説します。
Kotlin Notebook は データサイエンスの領域などで使われている Jupyter Notebook のための、 Kotlin カーネル を 使用できる IntelliJ IDEA用の プラグインです。 Community Edition では使えず、 Ultimate で使えます。
対話型でKotlinのコードをすぐに動かすことができ、コードとその実行結果に、テキストや画像を1つのドキュメントにまとめることができます。
本セッションではツールの紹介から始め、基本的な使い方、さまざまな利用用途について触れます。
データサイエンス分野はもちろんのこと、普段アプリケーションコードを書いている人にとっても有用なユースケースが多くあるのでそういった点についても説明します。
Jetpack ComposeのMultiplatform対応が安定版でリリースされ、1つのコードベースからAndroid/iOS/デスクトップなど複数のプラットフォームにネイティブUIを提供できるようになりました。
本セッションでは、Compose Multiplatformを用いてAndroid/iOSのアプリケーションを開発する流れを自身の経験を交えて初学者の方にもわかりやすく解説します。
あなたが既にKotlinに興味があったり触れたことがあるなら、Compose Multiplatformフレームワークを用いることで効率的にマルチプラットフォームアプリを構築できます。
マルチプラットフォームに興味はあるものの、何から始めたら良いか不安を感じている方も、本セッションを通してCompose Multiplatformへの第一歩を踏み出して頂けたら幸いです。
Kotlinは普段IntelliJで開発している方がほとんどだと思いますが、中には発表者のようにNeovimや、VSCodeなどのJetBrains社製以外のエディタ等で開発したい方がいるかもしれません。これらのエディタを使う場合、いわゆるLanguage Server(LS)が必要になります。
Kotlinにはkotlin-language-serverというツールがあり、Language Server Protocol(LSP)を会話できるエディタであればコード補完等の機能を利用できます。
発表者は最近このツールにコントリビュートしており、
を話したいと思います。
Kotlin Multiplatform を用いた iOS/Android アプリ開発は、自由な範囲でソースコードの共通化ができます。それによって iOS/Android らしい UI/UX を実現しつつ、両アプリの仕様差異を仕組みで防ぐことができます。
このセッションでは Kotlin Multiplatform を導入したい人や、導入したけど iOS エンジニアの開発者体験をより良くしたい人に向けて、Swift から見た Kotlin Multiplatform の問題点と、それを解決する SKIE について解説します。また、実プロダクトに SKIE を導入した後のメンバーの感想や自発的取り組み、副作用とその対処法についても紹介します。