ショート(25分)

KVS cacheライブラリKottageでモバイルアプリのSingle Source of Truthを実現する

irgaly irgaly

Kotlin Multiplatform 対応の KVS cache ライブラリ Kottage の使い方を紹介します。

https://github.com/irgaly/kottage

Kottage は Multiplatform (JVM/Android/iOS/macOS/Linux/Windows) で利用できます。

特にモバイルアプリ開発(Android / iOS)では以下のような用途に使われることを想定しています。

  • 期限付き cache データの保存
  • @Serializable の保存
  • API レスポンスキャッシュ
  • Single Source of Truth
  • Paging
  • (Android) Navigation Args 引数渡し

本セッションでは Kottage の基本的な使い方を説明します。

1
ショート(25分)

状態の表現で学ぶ、クラスのうまい使い方(sealed class, objectなど)

catch_all_balls 型付け

Kotlinは、better Javaを掲げる、汎用クラスベースオブジェクト指向言語です。
JavaやScalaはもちろん、他のプログラミング言語にも影響を受けており、有名なnull安全性を始めとした豊富な言語仕様を持ちます。
いっぽうで、多くの機能をもつがゆえに、Kotlinに入門したばかりでは使い所の難しい仕様がいくつかあります。
特に、Kotlinにおけるクラスは、状態の保持と操作を細かくサポートするため、使い方に迷うこともしばしばです。

本セッションでは、状態管理が重要となるドメインを題材に、初見では旨味のイメージしづらいsealed class/interfaceおよびobjectをとりあげます。
それら機能を通じてクラスの振り回し方、さらにはJavaからどのように見えるかを確認し、より納得して使えることを目指します。

2
ショート(25分)

“Designing with types” に学ぶKotlinにおける型を利用したモデリング術

omuomugin 佐々木俊亮

Designing with types (https://fsharpforfunandprofit.com/series/designing-with-types/) というブログシリーズをご存知でしょうか?これは “ Domain Modeling Made Functional” の著者の Scott Wlaschin氏のブログシリーズでF#で型によるモデリング(主にドメイン層)のテクニックをいくつか紹介しているものです。その中でも直和型とステートマシンを利用したテクニックは Kotlin でも Sealed Class と when の網羅性で実現できるものになっています。

本トークでは、上記の直和型についての紹介からそれを用いてなるべくコンパイルタイムで安全で理解しやすいモデルの設計を実際のサーバーサイドKotlinの事例も交えながら紹介していきます。

3
ショート(25分)

Ktor2アップグレード戦記

doyaaaaaken 小山 健太

登壇者はKtorをv1.0.0-betaの頃に導入し、4年近く自社サービスの本番環境で利用していました。
そしてつい先日、2022/4にリリースされたKtor v2へのアップグレードを実施しました。

Ktor v2のメジャーバージョンアップグレードでv1と何が変わったのか、どのようにアップグレードを進めるべきか、どういったトラブルに直面するのかなどについて、得た知見をシェアしたいと思います。

1
ショート(25分)

モバイル開発に使いそうな言語とKotlinを比較して良い言語機能をまとめてみた(Swift/Dart/C#と比較)

mdk_aza mdk_aza

Kotlinを用いたのAndroidアプリの開発、Swiftを用いてのiOSアプリの開発、Dartを用いてのFlutterでのiOS/Androidアプリ開発、C#を用いてのUnityでのゲーム開発など現代のモバイルアプリで使われている技術を経験してきた私が、それぞれの言語機能の比較を簡単に行い、Kotlinのこの言語機能が良い、この書き味が最高というのを紹介していこうと思います。
ボリュームの関係で何かの言語が削られたり、中身の比較の関係でTypeScriptやScalaが出てくるかもしれないですが、そこは暖かく見守ってください。

2
どちらでも

KotlinのGenericsとReflectionの応用と実務での活用

chimerast たけうち ひでゆき

KotlinのGenericsとReflectionの組み合わせは、reifiedキーワードの存在により、強く型安全なコードを書く事ができるようになっています。

Generic TypesのReflectionでどんな操作ができるのか、GenericsとReflectionをうまく組み合わせると何ができるのか、実務で使っているソースコードを基に実際の挙動を通してお話しします。

このセッションを聞くことで、下記のスライド(22ページ目)の内容が理解できるようになると思います。

Exposed DAOで、IDカラムをValueObjectのまま扱う
https://speakerdeck.com/chimerast/exposed-ying-yong-bian-nei-bu-shi-zhuang-to-mo-kuo-zhang?slide=22

3
どちらでも

【コンパイラプラグイン】ユースケースと共に解説するKotlinコンパイラプラグインの作り方

baseballyama_ Yuichiro Yamashita

このセッションでは、Kotlinコンパイラプラグインのユースケースと実装方法を解説します。

【アジェンダ】
👉 コンパイラプラグインの種類のご紹介
👉 ライブコーディング
👉 参考資料の共有

今回ライブコーディングで解説するコンパイラプラグインは以下です。
1️⃣ クラスAからクラスBを自動生成するプラグイン
2️⃣ 独自のコンパイルエラーをスローするプラグイン

ユースケース以下です。
1️⃣ 全ての独自型に対してプリミティブ型との相互変換クラスを実装する必要がある場合 (例えばORMの型マッピング)
2️⃣ 自動生成したクラスが正しく利用されているかを検査したい場合

今回は、ライブコーディングで実際に動作するコンパイラプラグインを実装します。

7