どちらでも

Java未経験者のためのKotlin入門

yy_yank yy_yank

正直に言います。KotlinはJavaでの業務開発経験などがあれば、数日で身につくプログラミング言語です。
一方、Javaに全く触れたことがないプログラマにとっては少し学ぶ量が増えるのも事実です。

本セッションでは、Javaを使ったことのないプログラマを想定し、Kotlinを使うために最低限知っておきたいJavaのこと、そしてKotlinの学び方を考えます。

2
どちらでも

ComposeとKotlin Multiplatformを用いたクロスプラットフォーム開発

yt8492 マヤミト

Composeは、もはやAndroidアプリ開発のためだけのものではありません。Compose Multiplatformの登場により、iOSアプリやデスクトップアプリ、WebアプリなどもComposeを用いることでAndroidと共通化して実装することができるようになりました。

このセッションでは、Android, iOS, Desktop, WebをターゲットにしたKotlin Multiplatformのプロジェクトで実際にJetpack Composeを用いてクロスプラットフォーム開発する方法と、将来的にCompose Multiplatformを導入することを見据えたAndroid開発について発表します。

1
どちらでも

Kotlin/JSとTitaniumで構築するクロスプラットフォームの世界

coffeegyunyu 日向強

Kotlinでクロスプラットフォームを構築するとなると、真っ先にKotlin Multiplatform Mobileが思い浮かぶ人もいるかもしれません。しかし、JavaScriptでネイティブアプリケーションが開発できるTitaniumは2022年9月にもSDKのバージョンアップが今もリリースされています。

このセッションはTitaniumの現状やセットアップ方法などを中心に、Kotlin/JSを用いてどのようにTitaniumでの開発を行うかを検討していくセッションとなります。

どちらでも

KotlinによるIntelliJ Plugin開発で、道具箱に磨きをかけよう!

itohiro73 いとひろ

Kotlinで開発をしている皆さんは、IntelliJ IDEAあるいはAndroid StudioをIDEとして利用している方が多いのではないでしょうか。

これらのIDEのベースとなっているThe IntelliJ Platformは、実はKotlinを用いてPlugin開発をすることができます。なんせIntelliJもKotlinもJetBrains社が開発したものですからね。

普段IDEで開発をしていて、あれができたらいいのに、これができたらもっと便利なのにと思ったこと、ありませんか?

本セッションではKotlinを用いたIntelliJ Plugin開発の基本解説から、ちょっとした開発者体験を向上するためのサンプル実装をいくつか紹介します。

これを機に、みなさんが普段使っている道具箱(IDE)をKotlinを用いて拡張し、開発者体験を向上してみてください!

2
どちらでも

JavaとKotlinのコードをバイトコードレベルで比較して気づいたKoltinの良さ

baseballyama_ Yuichiro Yamashita

Kotlin は better Java と呼ばれることがあります。しかし本当にそうなのか私は気になりました。
2022年の時点で本当にKotlinを選ぶべきなのか。実はJavaで十分なのでは、という疑問がありました。
これを解消するために、KotlinとJavaで同等のコードを記述して、バイトコードの比較をしてみました。

[アジェンダ]

  1. 前提知識
  2. 何をしたのか
    • 定量 : コンパイル速度 / 実行速度 / 実装量
    • 定性 : バイトコードを見て気づいたこと
  3. 具体的な比較結果 (例)
    • Hello World
    • companion object
    • 拡張関数
    • 中置記法
    • ラッパークラス (例 : Integer)
    • インライン関数
    • ラムダ式
    • Coroutine
      .. など
  4. 全体を通して感じたこと
1
どちらでも

OpenAPIスキーマ駆動開発による快適な外部連携API開発を実現するための道のり

shenyu_cyan 張沈宇

背景

スキーマ駆動開発が既に多く採用されてきている一方、サーバーサイドKotlinでのノウハウはまだそれ程なく、多くの公開資料はチュートリアルに留まっています。よって、具体的な登り方や実務で受けられる恩恵、そして直面するチャレンジが広く伝わっていないとの実感があります。

概要

弊社はContract-first思想の元OpenAPI Generatorを使った外部向け連携APIの開発を実践しています。我々の応用例をベースに、採用に至った理由や実際の使用感、業務上のユースケースへの対処法をご紹介します。

目次

  • 複数の選択肢からOpenAPIを選んだ理由
  • スキーマ駆動開発の為の守破離
    • 守:OpenAPI Generatorの設定
    • 破:複数API定義の対応やテンプレカスタマイズ実例
    • 離:ジェネレータ自作
  • まとめ
3
どちらでも

専門性の高い領域をいかに開発し、テストするか / ドメインエキスパートとのテストケース共同作成を支える技術

agatan_ Agata Naomichi

株式会社ヘンリーでは、診療報酬制度を取り扱うソフトウェアを開発しています。
ソフトウェア開発者として、開発対象のドメイン知識を獲得する必要があることは改めて言うまでもありませんが、診療報酬制度のような専門性の高い領域においては、ドメインエキスパートと力を合わせることで、より良いシステムをより速くデリバリーできると考えています。
特に、高度に専門的な要件の場合、ドメインエキスパート自身の手によってテストケースが作られることが、開発速度やサービスの信頼性・安定性の向上に大きく寄与します。

このセッションでは、Server-side Kotlin で記述されたロジックを、ドメインエキスパートの知識をもとにいかにテストするかについてお話しします。
また、それを可能にするシステムアーキテクチャや、Kotlin 上でいかにドメインを表現し単体テストするか、についてもご紹介します。

3
どちらでも

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