Slide 1

Slide 1 text

<< KMPの今と未来 YUMEMI.apk #7

Slide 2

Slide 2 text

● 株式会社ゆめみ ● AndroidとFlutterをぼちぼち ● X: @mono33__ みかみ

Slide 3

Slide 3 text

KMPの現状や今後のアップデートを紹 介

Slide 4

Slide 4 text

アジェンダ 1. KMPについて 2. 今後のKMPのアップデート 3. まとめ・所感

Slide 5

Slide 5 text

1. KMPについて

Slide 6

Slide 6 text

Kotlin Multiplatform (KMP)の概要 ● JetBrainsによって開発されているKotlinベースの マルチプラットフォーム技術 ● 2017年11月のアナウンスから6年を経て安定版が登場 [1] Kotlin Multiplatform, https://www.jetbrains.com/kotlin-multiplatform/ [2] What's new in Kotlin 1.2, https://kotlinlang.org/docs/whatsnew12.html

Slide 7

Slide 7 text

KMPの設計と特徴 ● 単一のコードから複数のプラットフォーム向けのコードを生 成し、クロスプラットフォーム開発を円滑に ● プロジェクトにあわせた部分的な導入ができる https://www.jetbrains.com/kotlin-multiplatform/

Slide 8

Slide 8 text

https://www.jetbrains.com/kotlin-multiplatform/ 他の技術に対してのKMPの優位性 ● 段階的・部分的に導入しやすい ● NativeとCross-platformの長所の享受

Slide 9

Slide 9 text

KMPの導入事例 ● 公式のドキュメントで紹介されている ○ アプリのロジックの部分的な共有がメイン ● 国内でも導入事例を目にすることが多くなった印象 [3] Case studies, https://www.jetbrains.com/help/kotlin-multiplatform-dev/case-studies.html

Slide 10

Slide 10 text

KMPには課題がたくさん ChatGPT

Slide 11

Slide 11 text

KMPには課題がたくさん ChatGPT iOSエンジニアにとってのハー ドルが高い

Slide 12

Slide 12 text

KMPには課題がたくさん ChatGPT 今後のKMPのアップデートについて紹介

Slide 13

Slide 13 text

2. 今後のKMPのアップデート

Slide 14

Slide 14 text

全体的なアップデートの印象 ● 開発環境の全面的な整備と拡張 ○ JetBrainsを中心にツール・ライブラリエコシステム・学 習リソースなどが整理 ● モバイル開発における効率と安定性の向上 ○ KotlinとSwiftの互換性の改善

Slide 15

Slide 15 text

JetBrains Fleet ● JetBrainsによって開発されている次世代IDE ● 多言語対応を特徴にもち、KMPの開発をサポート [4] JetBrains Fleet, https://www.jetbrains.com/fleet/

Slide 16

Slide 16 text

Amper ● プロジェクト設定をサポートするツールとして開発 ● Fleetと合わせてJetBrainsが開発 ● KotlinやAndroidのビルドシステムの設定は時折辛い ○ iOSエンジニアにとってはさらに辛い ● Gradleのかわりにyamlで簡潔に宣言的に記述できる [5] Amper – Improving the Build Tooling User Experience, https://blog.jetbrains.com/blog/2023/11/09/amper-improving-the-build-tooling-user-experience/

Slide 17

Slide 17 text

KMPのエコシステムの成長 ● Kotlinを扱うエンジニアを中心にネットワークやストレージ をなどのKMPのライブラリが開発が活発 [6] Kotlin Multiplatform Is Stable and Production-Ready, https://blog.jetbrains.com/kotlin/2023/11/kotlin-multiplatform-stable/

Slide 18

Slide 18 text

SKIE ● KMPにおいてSwiftとKotlinの相互互換性を改善 ● 今年の9月にOSSとして公開、導入事例もみかける [7] SKIE - Swift Kotlin Interface Enhancer | SKIE, https://skie.touchlab.co/

Slide 19

Slide 19 text

JetpackライブラリのKMP対応 ● Googleが主導して開発を進めているAndroidの主要ライブ ラリ群の一部がKMPをサポート [8] Kotlin Multiplatform, https://developer.android.com/kotlin/multiplatform

Slide 20

Slide 20 text

JetpackライブラリのKMP対応 ● Googleが主導して開発を進めているAndroidの主要ライブ ラリ群の一部がKMPをサポート [8] Kotlin Multiplatform, https://developer.android.com/kotlin/multiplatform ロジックの共有には 関心がありそう

Slide 21

Slide 21 text

Compose Multiplatform ● AndroidのJetpack Composeをベースとした 宣言的UIフレームワーク [9] Compose Multiplatform, https://www.jetbrains.com/ja-jp/lp/compose-multiplatform/ [10] compose-multiplatform, https://github.com/JetBrains/compose-multiplatform

Slide 22

Slide 22 text

Compose Multiplatform ● AndroidのJetpack Composeをベースとした 宣言的UIフレームワーク [9] Compose Multiplatform, https://www.jetbrains.com/ja-jp/lp/compose-multiplatform/ [10] compose-multiplatform, https://github.com/JetBrains/compose-multiplatform 来年iOS beta Web (Wasm) alphaサポート

Slide 23

Slide 23 text

Compose Multiplatform ● AndroidのJetpack Composeをベースとした 宣言的UIフレームワーク [9] Compose Multiplatform, https://www.jetbrains.com/ja-jp/lp/compose-multiplatform/ [10] compose-multiplatform, https://github.com/JetBrains/compose-multiplatform 来年iOS beta Web (Wasm) alphaサポート 情報量が多い

Slide 24

Slide 24 text

公式によるKMPの学習ソースの整備 [11] Get started with Kotlin Multiplatform, https://www.jetbrains.com/help/kotlin-multiplatform-dev/get-started.html ● 手厚いドキュメントやサンプルリポジトリ

Slide 25

Slide 25 text

SwiftとKotlinの互換性をまとめた資料 [12] kotlin-swift-interopedia, https://github.com/kotlin-hands-on/kotlin-swift-interopedia

Slide 26

Slide 26 text

● WizardやSlack コミュニティ そのほかのサポート [13] Kotlin Multiplatform Wizard, https://kmp.jetbrains.com/ [14] #multiplatform, https://slack-chats.kotlinlang.org/c/multiplatform

Slide 27

Slide 27 text

Awesome Kotlin Multiplatform [15] kmp-awesome, https://github.com/terrakok/kmp-awesome

Slide 28

Slide 28 text

3. まとめ・所感

Slide 29

Slide 29 text

まとめ・所感 ● KMPは他の技術との棲み分けができそう ○ 段階的な導入がしやすい ● これからが楽しみな技術 ○ JetBrainsやKotlinを扱うエンジニアを中心に開発 ○ OSS開発のチャンスもありそう ● 開発体制やリソース周りなど技術以外の部分がどうなるか

Slide 30

Slide 30 text

References 1/2 ● [1] Kotlin Multiplatform, https://www.jetbrains.com/kotlin-multiplatform/ ● [2] What's new in Kotlin 1.2, https://kotlinlang.org/docs/whatsnew12.html ● [3] Case studies, https://www.jetbrains.com/help/kotlin-multiplatform-dev/case-studies.html ● [4] JetBrains Fleet, https://www.jetbrains.com/fleet/ ● [5] Amper – Improving the Build Tooling User Experience https://blog.jetbrains.com/blog/2023/11/09/amper-improving-the-build-tooling-user-experience/ ● [6] Kotlin Multiplatform Is Stable and Production-Ready, https://blog.jetbrains.com/kotlin/2023/11/kotlin-multiplatform-stable/ ● [7] SKIE - Swift Kotlin Interface Enhancer | SKIE, https://skie.touchlab.co/ ● [8] Kotlin Multiplatform, https://developer.android.com/kotlin/multiplatform ● [9] Compose Multiplatform, https://www.jetbrains.com/ja-jp/lp/compose-multiplatform/ ● [10] compose-multiplatform, https://github.com/JetBrains/compose-multiplatform

Slide 31

Slide 31 text

References 2/2 ● [11] Get started with Kotlin Multiplatform, https://www.jetbrains.com/help/kotlin-multiplatform-dev/get-started.html ● [12] kotlin-swift-interopedia, https://github.com/kotlin-hands-on/kotlin-swift-interopedia ● [13] Kotlin Multiplatform Wizard, https://kmp.jetbrains.com/ ● [14] #multiplatform, https://slack-chats.kotlinlang.org/c/multiplatform ● [15] kmp-awesome, https://github.com/terrakok/kmp-awesome

Slide 32

Slide 32 text

CREDITS: This presentation template was created by Slidesgo, including icons by Flaticon, infographics & images by Freepik. Thanks!