正直に言います。KotlinはJavaでの業務開発経験などがあれば、数日で身につくプログラミング言語です。
一方、Javaに全く触れたことがないプログラマにとっては少し学ぶ量が増えるのも事実です。
本セッションでは、Javaを使ったことのないプログラマを想定し、Kotlinを使うために最低限知っておきたいJavaのこと、そしてKotlinの学び方を考えます。
Composeは、もはやAndroidアプリ開発のためだけのものではありません。Compose Multiplatformの登場により、iOSアプリやデスクトップアプリ、WebアプリなどもComposeを用いることでAndroidと共通化して実装することができるようになりました。
このセッションでは、Android, iOS, Desktop, WebをターゲットにしたKotlin Multiplatformのプロジェクトで実際にJetpack Composeを用いてクロスプラットフォーム開発する方法と、将来的にCompose Multiplatformを導入することを見据えたAndroid開発について発表します。
Kotlinでクロスプラットフォームを構築するとなると、真っ先にKotlin Multiplatform Mobileが思い浮かぶ人もいるかもしれません。しかし、JavaScriptでネイティブアプリケーションが開発できるTitaniumは2022年9月にもSDKのバージョンアップが今もリリースされています。
このセッションはTitaniumの現状やセットアップ方法などを中心に、Kotlin/JSを用いてどのようにTitaniumでの開発を行うかを検討していくセッションとなります。
Kotlinで開発をしている皆さんは、IntelliJ IDEAあるいはAndroid StudioをIDEとして利用している方が多いのではないでしょうか。
これらのIDEのベースとなっているThe IntelliJ Platformは、実はKotlinを用いてPlugin開発をすることができます。なんせIntelliJもKotlinもJetBrains社が開発したものですからね。
普段IDEで開発をしていて、あれができたらいいのに、これができたらもっと便利なのにと思ったこと、ありませんか?
本セッションではKotlinを用いたIntelliJ Plugin開発の基本解説から、ちょっとした開発者体験を向上するためのサンプル実装をいくつか紹介します。
これを機に、みなさんが普段使っている道具箱(IDE)をKotlinを用いて拡張し、開発者体験を向上してみてください!
Kotlin は better Java と呼ばれることがあります。しかし本当にそうなのか私は気になりました。
2022年の時点で本当にKotlinを選ぶべきなのか。実はJavaで十分なのでは、という疑問がありました。
これを解消するために、KotlinとJavaで同等のコードを記述して、バイトコードの比較をしてみました。
[アジェンダ]
スキーマ駆動開発が既に多く採用されてきている一方、サーバーサイドKotlinでのノウハウはまだそれ程なく、多くの公開資料はチュートリアルに留まっています。よって、具体的な登り方や実務で受けられる恩恵、そして直面するチャレンジが広く伝わっていないとの実感があります。
弊社はContract-first思想の元OpenAPI Generatorを使った外部向け連携APIの開発を実践しています。我々の応用例をベースに、採用に至った理由や実際の使用感、業務上のユースケースへの対処法をご紹介します。
株式会社ヘンリーでは、診療報酬制度を取り扱うソフトウェアを開発しています。
ソフトウェア開発者として、開発対象のドメイン知識を獲得する必要があることは改めて言うまでもありませんが、診療報酬制度のような専門性の高い領域においては、ドメインエキスパートと力を合わせることで、より良いシステムをより速くデリバリーできると考えています。
特に、高度に専門的な要件の場合、ドメインエキスパート自身の手によってテストケースが作られることが、開発速度やサービスの信頼性・安定性の向上に大きく寄与します。
このセッションでは、Server-side Kotlin で記述されたロジックを、ドメインエキスパートの知識をもとにいかにテストするかについてお話しします。
また、それを可能にするシステムアーキテクチャや、Kotlin 上でいかにドメインを表現し単体テストするか、についてもご紹介します。
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️⃣ 自動生成したクラスが正しく利用されているかを検査したい場合
今回は、ライブコーディングで実際に動作するコンパイラプラグインを実装します。