Kotlin Multiplatform 対応の KVS cache ライブラリ Kottage の使い方を紹介します。
https://github.com/irgaly/kottage
Kottage は Multiplatform (JVM/Android/iOS/macOS/Linux/Windows) で利用できます。
特にモバイルアプリ開発(Android / iOS)では以下のような用途に使われることを想定しています。
本セッションでは Kottage の基本的な使い方を説明します。
Kotlinは、better Javaを掲げる、汎用クラスベースオブジェクト指向言語です。
JavaやScalaはもちろん、他のプログラミング言語にも影響を受けており、有名なnull安全性を始めとした豊富な言語仕様を持ちます。
いっぽうで、多くの機能をもつがゆえに、Kotlinに入門したばかりでは使い所の難しい仕様がいくつかあります。
特に、Kotlinにおけるクラスは、状態の保持と操作を細かくサポートするため、使い方に迷うこともしばしばです。
本セッションでは、状態管理が重要となるドメインを題材に、初見では旨味のイメージしづらいsealed class/interfaceおよびobjectをとりあげます。
それら機能を通じてクラスの振り回し方、さらにはJavaからどのように見えるかを確認し、より納得して使えることを目指します。
Designing with types (https://fsharpforfunandprofit.com/series/designing-with-types/) というブログシリーズをご存知でしょうか?これは “ Domain Modeling Made Functional” の著者の Scott Wlaschin氏のブログシリーズでF#で型によるモデリング(主にドメイン層)のテクニックをいくつか紹介しているものです。その中でも直和型とステートマシンを利用したテクニックは Kotlin でも Sealed Class と when の網羅性で実現できるものになっています。
本トークでは、上記の直和型についての紹介からそれを用いてなるべくコンパイルタイムで安全で理解しやすいモデルの設計を実際のサーバーサイドKotlinの事例も交えながら紹介していきます。
登壇者はKtorをv1.0.0-betaの頃に導入し、4年近く自社サービスの本番環境で利用していました。
そしてつい先日、2022/4にリリースされたKtor v2へのアップグレードを実施しました。
Ktor v2のメジャーバージョンアップグレードでv1と何が変わったのか、どのようにアップグレードを進めるべきか、どういったトラブルに直面するのかなどについて、得た知見をシェアしたいと思います。
Kotlinを用いたのAndroidアプリの開発、Swiftを用いてのiOSアプリの開発、Dartを用いてのFlutterでのiOS/Androidアプリ開発、C#を用いてのUnityでのゲーム開発など現代のモバイルアプリで使われている技術を経験してきた私が、それぞれの言語機能の比較を簡単に行い、Kotlinのこの言語機能が良い、この書き味が最高というのを紹介していこうと思います。
ボリュームの関係で何かの言語が削られたり、中身の比較の関係でTypeScriptやScalaが出てくるかもしれないですが、そこは暖かく見守ってください。
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
このセッションでは、Kotlinコンパイラプラグインのユースケースと実装方法を解説します。
【アジェンダ】
👉 コンパイラプラグインの種類のご紹介
👉 ライブコーディング
👉 参考資料の共有
今回ライブコーディングで解説するコンパイラプラグインは以下です。
1️⃣ クラスAからクラスBを自動生成するプラグイン
2️⃣ 独自のコンパイルエラーをスローするプラグイン
ユースケース以下です。
1️⃣ 全ての独自型に対してプリミティブ型との相互変換クラスを実装する必要がある場合 (例えばORMの型マッピング)
2️⃣ 自動生成したクラスが正しく利用されているかを検査したい場合
今回は、ライブコーディングで実際に動作するコンパイラプラグインを実装します。