Kotlin MultiPlatform Projectのロマンを語る

36ee3f54c56704a49805ffb32b596930?s=47 44
October 04, 2020

Kotlin MultiPlatform Projectのロマンを語る

36ee3f54c56704a49805ffb32b596930?s=128

44

October 04, 2020
Tweet

Transcript

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

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

    44 (@44x1carbon)
  3. JVM言語との関わり Java Javaと同い年(1995年生まれ) 業務で Java × Spring Bootを使ってWebサービスを開発 Scala Scala関西Summit

    2016 ~ 19 スタッフとして参加 Scala歴 4日(Scala関西Summitのアンカンファレンスなどで触る程度) Kotlin(推し) Kansai.ktの運営メンバー、趣味でKotlin/JSと戯れてます。
  4. 話す事・話さない事 話す事 • Kotlin MPPとは何か 話さない事 • Kotlin MPPの具体的な実装方法

  5. JVMだけじゃないKotlin

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

    Android, Windows, Linux, WebAssembly
  7. Kotlin MPPでは どういった事ができるのか?

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

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

  10. 進化するKotlin MPP

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

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

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

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

    Studioでできます。
  15. Kotlin MPPへの第一歩

  16. 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
  17. とりあえず触ってみる 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
  18. Kotlin MPPを支えるライブラリ達 Serializer kotlinx.serialization Http ktor.httpClient DI Kodein-DI、koin Kotlin MPPで使えるライブラリをまとめてくれているリポジトリ

    https://github.com/AAkira/Kotlin-Multiplatform-Libraries
  19. Kotlin MPPの辛いところ

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

    どうなっているか把握しておく必要がある
  21. Kotlin MPPのロマン

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

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

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

  25. Have a nice Kotlin!!