iOS、Android、Windowsなどの異なるプラットフォームで同じアプリケーションを提供する場合、コスト削減もあり、クロスプラットフォーム開発を採用する機会が増えてきました。
今回は、代表的な3つの環境を比較してみたいと思います。
Flutter
Googleが開発したクロスプラットフォームのアプリケーションフレームワークです。
ソースコードは、オープンソースとして管理されています。
Flutterで採用されているDart言語を使用して、1つのソースコードでAndroid、iOS、Windows、Web、Linux向けなどのアプリケーションを開発できます。
Kotlin Multiplatform(KMP)
JetBrainsが提供するクロスプラットフォーム開発環境です。
Kotlin言語を使用して、Android、iOS、Web、Windows / Linux / MacOS向けにアプリケーション開発ができます。
React Native
Facebookが開発したオープンソースのクロスプラットフォームフレームワークです。
JavaScriptやTypeScriptを使用して、Android、iOS、Web、Windows / MacOS向けにアプリケーション開発ができます。
各クロスプラットフォーム環境を比較
環境 | UIの作りやすさ | 学習コスト | パフォーマンス | コミュニティ |
---|---|---|---|---|
Flutter | ◎ | △ | ◎ | 〇 |
KMP | ◎ | 〇 | 〇 | △ |
React Native | △ | ◎ | △ | ◎ |
UIの作りやすさ
Flutterは独自UI(Widget)、KMPはUIを共通化できるCompose Multiplatformを使用することで全プラットフォームで統一されたUIを実現できます。
React Nativeはプラットフォームごとに見た目が変わるため、チューニングが必要です。
学習コスト
クロスプラットフォーム化以前の環境に依存する部分がありますが、FlutterはDart言語のため、導入に多少の学習が必要です。
KMPはAndroidでも採用されているKotlin言語のため、導入は容易です。
React NativeはJavaScript・TypeScript言語のため、Webエンジニアは導入が容易となります。
パフォーマンス
Flutterは独自のレンダリングエンジンSkiaで高速パフォーマンスを実現します。
React Nativeは複雑なUIやアニメーションを採用する場合にパフォーマンスに懸念があります。
コミュニティ
FlutterやReact Nativeは活発なコミュニティが存在し、豊富なリソースやサポートが提供されています。特にReact Nativeは歴史が長い分サポートが豊富です。
KMPは他の2つ比べるとコミュニティ規模が小さいため、サポートが限られる場合があります。
最後に
それぞれに良し悪しがあり、一概に優れているものを挙げるのは難しく感じました。
どのようなアプリケーションを提供するのか、または導入するための学習コストを考慮して、どのクロスプラットフォームを採用すべきか検討していきましょう。