2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Kotlin Multiplatform は マルチプラットフォーム開発の選択肢になるか?

Posted at

はじめに

Kotlin Multiplatform(KMP) について、雑誌で紹介されているのを目にしました。
普段から業務で Kotlin を利用していることもあり、興味を持って少し調べてみました。

マルチプラットフォーム開発と聞くと、
「React Native か Flutter がデファクトスタンダード」という印象だったので、選択肢が増えるのは嬉しいですね。

※ なお、私はアプリ開発者ではないため、内容的にはかなり浅いものとなります

今回比較するもの

今回整理するのは以下の3つです。

  • Flutter
  • Kotlin Multiplatform(KMP)
  • Compose Multiplatform

Flutter

Flutter は「UIも含めて完全に共通化する」ことを前提にしたフレームワークです。

  • UI:Flutter(Dart)で記述
  • ロジック:共通
  • プラットフォーム差異:最小限

Good

  • クロスプラットフォーム前提で設計されている
  • ドキュメント・記事・事例が豊富
  • UI の再現性が高い(どのOSでも同じ見た目)
  • 個人開発〜業務まで実績が多い

Bad

  • Dart という専用言語が必要
  • 既存の Android / iOS の資産を活かしづらい
  • プラットフォーム固有の挙動を触ると途端に難しくなる印象

Kotlin Multiplatform(KMP)

Kotlin Multiplatform は
「UIは各プラットフォームで作り、ロジックを共有する」アプローチです。

  • UI:各プラットフォームごと
  • ロジック:Kotlin で共通化

Good

  • Kotlin をそのまま使える
  • 既存の Kotlin コードを流用しやすい
  • Android / iOS の作法を尊重できる
  • 業務コードとの相性が良い

Bad

  • UI は結局それぞれ実装が必要
  • 共通化できる範囲を設計する必要がある
  • 「全部共通で楽したい」場合には向かない

Compose Multiplatform

Compose Multiplatform は、
Compose UI を複数プラットフォームで使おう、というアプローチです。

思想的には Flutter に近いですが、
Kotlin + Compose ベースなのが特徴です。

Good

  • Kotlin だけで UI まで書ける
  • Compose の知識がそのまま使える
  • 宣言的UIでコードの見通しが良い
  • Flutter と KMP の中間的な立ち位置

Bad

  • まだ発展途上な印象
  • プラットフォームごとの差異対応は必要
  • 情報量や事例は Flutter に比べると少なめ

比較まとめ

以下の様に表にしてみました。
(KMPとCMPは同時利用可能であるため、分ける必要は無いかもしれませんが)

観点 Flutter Kotlin Multiplatform(KMP) Compose Multiplatform(CMP)
主な言語 Dart Kotlin Kotlin
UI共通化
ロジック共通化
既存Kotlin資産
学習コスト
安定感
ライブラリの充実度
IDE前提 VSCode / IntelliJ IntelliJ / AS IntelliJ / AS

JetBrains の IDE にロックインされてしまうのは気になるものの、
試してみても良さそうと思えました。

終わりに

まだ表面的に少し調べただけなので、
実際に Kotlin Multiplatform や Compose Multiplatform を触って試してはみたいと思います。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?