Slide 1

Slide 1 text

Kotlin MultiPlatform Projectの ロマンを語る J Lang Fest Kansai Online #1

Slide 2

Slide 2 text

自己紹介 山崎 好洋 情報系の専門学校を卒業し エンジニアをやってます(3年目) 趣味 ● スノーボード ● 麻雀 44 (@44x1carbon)

Slide 3

Slide 3 text

JVM言語との関わり Java Javaと同い年(1995年生まれ) 業務で Java × Spring Bootを使ってWebサービスを開発 Scala Scala関西Summit 2016 ~ 19 スタッフとして参加 Scala歴 4日(Scala関西Summitのアンカンファレンスなどで触る程度) Kotlin(推し) Kansai.ktの運営メンバー、趣味でKotlin/JSと戯れてます。

Slide 4

Slide 4 text

話す事・話さない事 話す事 ● Kotlin MPPとは何か 話さない事 ● Kotlin MPPの具体的な実装方法

Slide 5

Slide 5 text

JVMだけじゃないKotlin

Slide 6

Slide 6 text

JVMだけじゃないKotlin Kotlin/JS Kotlinで実装したコードをJavaScriptのコード(ES5)にトランスパイルする Kotlin/Native Kotlinで実装したコードをネイティブバイナリにコンパイルする サポートされているプラットフォームとしては iOS, macOS, watchOS, tvOS, Android, Windows, Linux, WebAssembly

Slide 7

Slide 7 text

Kotlin MPPでは どういった事ができるのか?

Slide 8

Slide 8 text

ビジネスロジックをCommon Moduleとして共通化 各プラットフォームの実装 ビジネスロジックなど 共通処理の実装 各プラットフォームのモジュールを使い アプリケーションを作成 Common JS JVM Native Backend Android Web iOS

Slide 9

Slide 9 text

プラットフォーム固有コードの共通化 Common Moduleでは”expect”と”actual”というキーワードを使い プラットフォーム固有のコードを共通化します。

Slide 10

Slide 10 text

進化するKotlin MPP

Slide 11

Slide 11 text

Kotlin/JVMとKotlin/JSも中間表現(IR)を採用 Kotlin/Nativeでは、もともと中間表現が使われていました Kotlin1.4から、Kotlin/JVMとKotlin/JSでも同じく中間表現を使うように これにより機能追加やバグ修正、最適化が1回で済むようになり Kotlin MPPの進化が加速していく ※この機能はまだAlpha版です(2020/10/04時点)

Slide 12

Slide 12 text

Kotlin/JS dukat TypeScriptの型定義ファイル(d.ts)からKotlinの型定義(.kt)を生成するツール Kotlin/JS pluginにも組み込まれておりGradleでビルドする際に型定義を自動生成でき る 型定義ファイルの自動生成 Kotlin 1.4でKotlinのコードからd.tsファイルを自動生成する機能が追加された これにより、Kotlin/JSで作ったコードをTypeScriptから扱いやすくなった

Slide 13

Slide 13 text

Kotlin/Native あんまり詳しくないので割愛 Kotlin/Nativeはこんな進化を遂げてるよ!ってのがあれば #jlangfestをつけてツイートしてください

Slide 14

Slide 14 text

KMM (Kotlin Multiplatform Mobile) iOSとAndroid両方のアプリケーションで 同じビジネスロジックを使用できるようにする SDK Android Studioのプラグインも提供されており 共有コードの記述、実行、テスト、デバッグがAndroid Studioでできます。

Slide 15

Slide 15 text

Kotlin MPPへの第一歩

Slide 16

Slide 16 text

Kotlin MPPを知る(Kotlin MPPで作られてるもの) KotlinConfの公式アプリ(Android, iOS, Backend) JetBrains/kotlinconf-app: KotlinConf Schedule Application DroidKaigiの公式アプリ(Android, iOS, Backend) DroidKaigi/conference-app-2020: The Official Conference App for DroidKaigi 2020 Tokyo KotlinAcademyのKotlin MPPデモ(Android, iOS, Backend, Web) MarcinMoskala/KtAcademyPortal: Multiplatform Kotlin application of KotlinAcademy

Slide 17

Slide 17 text

とりあえず触ってみる Kotlin Hands-On 「Introduction to Kotlin Multiplatform」 Kotlin MPPでWebアプリケーションを作成するハンズオン https://play.kotlinlang.org/hands-on/overview KMMのドキュメント Getting startedにKMMでのハローワールドの手順が載ってい https://kotlinlang.org/docs/mobile/home.html Multiplatform Kotlin library Kotlin MPPのライブラリを作成する手順が載ってい https://kotlinlang.org/docs/tutorials/mpp/multiplatform-library.html

Slide 18

Slide 18 text

Kotlin MPPを支えるライブラリ達 Serializer kotlinx.serialization Http ktor.httpClient DI Kodein-DI、koin Kotlin MPPで使えるライブラリをまとめてくれているリポジトリ https://github.com/AAkira/Kotlin-Multiplatform-Libraries

Slide 19

Slide 19 text

Kotlin MPPの辛いところ

Slide 20

Slide 20 text

Kotlin MPPの辛いところ 日本語の情報が少ない 機能や使い方を紹介している記事などはあるが 問題にハマった時の解決方法などの記事は少ない まだまだ不具合がいっぱい 実験段階や開発段階の機能が多いのでうまく動かない事がほとんど(現状は) ただ、未開の地を開拓する感じは楽しい 各プラットフォームの知識が必要 ビルドがうまくいかない場合など、それぞれのプラットフォームの設定が どうなっているか把握しておく必要がある

Slide 21

Slide 21 text

Kotlin MPPのロマン

Slide 22

Slide 22 text

機能の追加や修正のコストダウン サービスのアプリケーションコードを共通化する事で 機能追加や機能修正にかかるコストを削減できる(かも) 現状は、不具合が多かったり、情報が少なかったり まだまだ辛い部分がたくさんありますが今後の進化に期待!!

Slide 23

Slide 23 text

Kotlinのコードをたくさん書ける!! Kotlinは、やりたい事を素直に書ける楽しい言語 そのコードをたくさん書けるのはとてもハッピー

Slide 24

Slide 24 text

気になったものがあれば ぜひ、触ってみてください!!

Slide 25

Slide 25 text

Have a nice Kotlin!!