Kotlin Multiplatform:Flutterなどとの違い
最近、Kotlin Multiplatform案件に参画する機会があった。正直な感想を書きたい。
エンジニア不足に悩む中小デベロッパーは多い。一方でモバイル案件は増えている。円安傾向で以前のように海外で格安に開発ということはできなくなっている。
そこでiOS, Android, Web開発をまとめてできるFlutterやReact NativeのようなCross platform開発へ食指が動くのは無理からぬ話だ。
そこへ登場したのがKotlin Multiplatformである。以下ではKMPと略す。ちなみにKMMはKotlin Multiplatform Mobileの略でiOS, Androidに限定し、簡略化されたものである。
最大の違い
このKMPがFlutterやReact Nativeと大きく異なる点はUIが共通化されていないことである。
つまりそれぞれのUIを実装する部隊が必要ということだ。つまりエンジニア不足解消への効果は小さい。
SwiftとKotlinは似ているが、やはり違う言語でそう簡単にスイッチできるものでもない。Swiftと同じ感覚でKotlinを使うとおかしなことになる。
特にSwiftUIとJetpack Compose、似ているがかなり違っていて、両者で統一感のあるUIを実現するのはかなり困難である。
日本の特殊事情
日本ではiOS > AndroidなのでiOS(Swift/Objective-C)エンジニアを見つける方が容易で、Android(Kotlin/Java)方が難しいのだ。一方、海外ではAndroidの方が優勢なのでエンジニア探しはAndroidの方が容易かもしれない。
KMP導入のメリット
それぞれNativeのC/C++コンパイラを利用するのでアプリとして高性能なものが期待できる。(AndroidではJVMではないオブジェクトを生成できる。)
大企業では導入が難しいKMP、導入が進むFlutter
そもそもようやくベータになったばかりである。将来、正式版になった時に更新する必要が出てくる可能性は高い。大規模なEnterpriseアプリで採用するのはまず無理だろう。
一方のFlutterはTOYOTAやebayなどの大企業が採用を開始している。そしてユーザー数一億を抱えるGoogle PayもFlutterだ。自社プロダクトだからということもあろうが、一億ユーザーを安定的に回すのはすごいことだ。
まとめ
KMPは魅力的だが、まだ多数のユーザーを抱える見込みのあるアプリで採用するのはお勧めできない。