セイロップの設楽です。本記事では、クロスプラットフォーム技術のKotlin Multiplatform(KMP)とFlutterの違いを比較しながら、それぞれの技術選定の観点について紹介します。
クロスプラットフォーム技術について
iOSとAndroidのアプリを同時に開発できるクロスプラットフォーム技術は、開発コストの削減や開発期間の短縮に貢献するため、多くの企業で採用されています。弊社でもFlutterを用いた開発に力を入れており、多数の開発実績があります。
そんな中、近年新たなクロスプラットフォーム技術として注目を集めているのがKotlin Multiplatform(KMP)です。KMPは、Kotlinで記述された共通のビジネスロジックを複数のプラットフォームで共有可能な技術として関心が高まっています。
KMPとFlutterの比較
KMP | Flutter | |
言語 | Kotlin | Dart |
コード共有の範囲 | ビジネスロジック (CMPでUI共通化も可能) | ビジネスロジック + UI |
プラットフォーム固有機能 | ネイティブ実装 | Flutter + ネイティブ実装 |
1.言語の違い
FlutterはDartを使用します。Dartはマルチプラットフォームでのアプリ開発向けに最適化された言語であり、Flutterフレームワークと連携することで、開発中のコード変更をリアルタイムに反映するホットリロードなどの強力な機能を利用できます。
一方、KMPはKotlinを使用します。Androidエンジニアにとって馴染み深いKotlinを使用するため、学習コストが低い点も魅力です。既にiOS/Androidエンジニアがいる場合は、Flutterを新たに学習するよりも素早く導入できることが期待できます。
2.コード共有の範囲
Flutterではビジネスロジック、UIを含むすべてのコードを単一のコードベースで作成します。 これによりiOS/Android間のデザイン差異がなくなるため、コード量を抑えることも期待できます。iOS/Androidチームとして分離せず、Flutterの1チームでアプリ開発を進められることもメリットです。
一方、KMPではビジネスロジック部分を共通化し、UI部分はAndroid、iOSそれぞれでネイティブ実装を行うアプローチが一般的です。開発体制としてはiOS/Android/KMPの3チームや、iOS/Android+KMPの2チームなどが想定されます。
さらに、Compose Multiplatform(CMP)を利用すれば、Kotlinを使ってAndroid、iOS、Web、Desktopなど複数プラットフォーム向けのUIを共通化することも可能です。
3.プラットフォーム固有機能
モバイルアプリ開発では、iOSやAndroidのプラットフォーム固有の機能(GPS、Bluetooth、動画再生等)を利用する要件を持つことがしばしばあります。
Flutterからプラットフォーム固有の機能を呼び出す際は、iOS/Androidのネイティブコードを記述しFlutterへ橋渡しをする実装が必要になるため、より複雑になる場合があります。
一方KMPはiOS/Androidでネイティブ実装が可能です。ネイティブAPIを直接利用するこでパフォーマンス面でも優位性を発揮します。
KMPとFlutterの技術選定のポイント
KMP | Flutter | |
開発者の必要スキル | UIはiOS/Androidのネイティブ開発経験 ビジネスロジックはKMP(Kotlin)での開発経験 | Flutterでの開発経験 |
UIの統一 | OS毎に異なるUIを実現可能 | OS間でUIまで共通化可能 |
プラットフォーム機能の利用 | プラットフォーム固有機能がメインのアプリは◎ | 機能がシンプルなアプリは◎ |
KMPとFlutterにはどちらにも長所・短所があります。どちらを選択するかはプロジェクトが求める要件や、開発体制によって判断する必要があります。
Flutterの開発体制を整えられる場合や、小規模、シンプルなプロダクトの場合などは1チームで素早く開発できるFlutterが適している可能性が考えられます。(参考: FlutterがMVP開発に最適である理由)
一方、既にiOS/Androidの開発体制が整っている場合や、プラットフォーム固有機能がメインになる複雑なアプリ開発であればKMPでビジネスロジックを共通化して、工数の削減を狙うアプローチも有効です。
最後に
弊社にはFlutterやKMPの開発経験があるメンバーが多数在籍し、メンバー間のキャッチアップや情報共有が活発に行われているため、安心感をもって案件を進める事ができております。
本記事がクロスプラットフォームを導入する際の参考になれば幸いです。