Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kotlin MultiPlatform Projectのロマンを語る

44
October 04, 2020

Kotlin MultiPlatform Projectのロマンを語る

44

October 04, 2020
Tweet

More Decks by 44

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  5. JVMだけじゃないKotlin

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  10. 進化するKotlin MPP

    View Slide

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

    View Slide

  12. Kotlin/JS
    dukat
    TypeScriptの型定義ファイル(d.ts)からKotlinの型定義(.kt)を生成するツール
    Kotlin/JS pluginにも組み込まれておりGradleでビルドする際に型定義を自動生成でき

    型定義ファイルの自動生成
    Kotlin 1.4でKotlinのコードからd.tsファイルを自動生成する機能が追加された
    これにより、Kotlin/JSで作ったコードをTypeScriptから扱いやすくなった

    View Slide

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

    View Slide

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

    View Slide

  15. Kotlin MPPへの第一歩

    View Slide

  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

    View Slide

  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

    View Slide

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

    View Slide

  19. Kotlin MPPの辛いところ

    View Slide

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

    View Slide

  21. Kotlin MPPのロマン

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  25. Have a nice Kotlin!!

    View Slide