画面まで共通にするか(Flutter・RN)、ロジックだけ共通にするか(KMP)が大きな違い。
1つのコードから iOS と Android の両方のアプリを作る方法です。代表的な3つは、どこまでを共通にするかが違います。
| 観点 | Flutter | React Native | Kotlin Multiplatform(KMP) |
|---|---|---|---|
| 言語 | Dart | JavaScript・TypeScript | Kotlin |
| 共通にする範囲 | 画面も含めてほぼ全部 | 画面も含めてほぼ全部 | ロジック(通信・DB・業務処理)。画面は各 OS で作るか Compose Multiplatform |
| 画面の描き方 | 自前の描画エンジンで描く。どの OS でも同じ見た目 | 各 OS の本物の部品を使う | ネイティブの UI(SwiftUI・Compose) |
| 向いている場面 | 見た目を両 OS でそろえたい、少人数 | Web(React)の人が多いチーム | 既存のネイティブアプリに少しずつ共通化を入れたい |
どれを選んでも、プッシュ通知・課金・ウィジェット・OS の新機能などはネイティブの知識が必要です。「ネイティブを書ける人がチームにいるか」は選ぶ前に確かめておきます。
面接ではこう答える
クロスプラットフォームの代表は Flutter、React Native、Kotlin Multiplatform で、どこまでを共通にするかが違います。Flutter は自前の描画エンジンで画面まで共通にし、React Native は各 OS の本物の部品を JavaScript から使い、Kotlin Multiplatform は通信や業務処理などのロジックを共通にして画面は各 OS で作るのが基本です。どれを選んでも、通知や課金などの OS の機能ではネイティブの知識が必要です。
Appとの関わり新しいアプリを始めるときや、両 OS の開発の手間を減らしたいときの技術選定で使います。