Skip to content
Published on

モバイル開発 2026 完全ガイド — Swift 6・SwiftUI 6・Kotlin Multiplatform・Jetpack Compose・Flutter 4・React Native 0.78・Expo SDK 53 徹底解説

Authors

「片方ではApple Intelligenceの導入でApp Intentsを書き直しているiOSチームがいて、もう片方ではCompose MultiplatformでiOS/Androidのコードを80%共有し始めたKotlinチームがいる。2026年のモバイルは『唯一の答え』が消えた時代だ。」 — Stack Overflow Developer Survey, 2025

モバイル開発は2020年にSwiftUI 1.0とJetpack Compose 1.0が公開されてから6年で全く異なる風景になりました。両陣営とも宣言的UIへ移行し、Kotlin Multiplatformは2024年11月に正式安定化(GA)を迎え、Compose Multiplatform 1.7と合わせて「iOS・Android・Desktop・Webを1つのコードベースで」が現実になりました。一方でFlutterは4.xでImpellerレンダラーを全面採用し、React Native 0.78はNew Architecture(Fabric + TurboModules + Hermes)をデフォルトに引き上げました。

2026年5月時点で、モバイル開発は5陣営に分かれました — ネイティブ優先(Swift 6 + Kotlin)、クロスプラットフォーム・ネイティブ(KMP + Compose Multiplatform)、独自レンダラー(Flutter)、JSブリッジ(React Native + Expo)、Webコンテナ(Capacitor + Ionic + Tauri Mobile)。さらにその上にApple Intelligence・Health Connect・DMAマーケットプレイスのようなOS/政策レベルの変化が重なっています。本記事では、Swift 6 + SwiftUI 6、Kotlin Multiplatform 2、Jetpack Compose、Flutter 4、React Native 0.78、Expo SDK 53、Capacitor 6、.NET MAUI、Tauri Mobile 2に加え、Fastlane・EAS・RevenueCat・Firebaseまで一気に整理します。

1. 2026年モバイル開発の地図 — 5陣営に分化したエコシステム

2026年のモバイルフレームワークは大きく5カテゴリに分けられます。

カテゴリ代表スタック主な特徴
ネイティブ優先Swift 6 + SwiftUI 6、Kotlin + Jetpack ComposeOS新機能を即時利用、最高の性能とUX
クロス・ネイティブKotlin Multiplatform 2 + Compose Multiplatform 1.7ビジネスロジック・UIを共有、ネイティブのビルド成果物
独自レンダラーFlutter 4 (Impeller)1コード1ピクセル、OS部品に依存しないUI
JSブリッジReact Native 0.78 + Expo SDK 53Web人材の再活用、OTA更新、Fabric/TurboModules
WebコンテナCapacitor 6 + Ionic、Tauri Mobile 2、.NET MAUIWebアセットをパッケージ、PWAと親和的

核心となる洞察は「プラットフォーム選択はもはや性能ではなく、採用・コード共有・OS新機能へのアクセス」という点です。FlutterもImpeller以降は60fpsを安定して出し、React NativeもNew Architectureでネイティブに近い応答性を見せます。だから選択基準は「チームにどんな人材がいるか、OS新機能をどれだけ早く追いたいか、コード共有率をどこまで上げたいか」といった組織的な問いに移りました。

2. Swift 6 + Xcode 16 — Approachable Concurrencyの時代

Swift 6.0(2024年9月)とXcode 16(2024年9月)は、Swift Concurrencyを「オプション」から「デフォルト」へ引き上げました。2026年5月現在Swift 6.2までリリースされており、主な変化は3つです。

第一に、Strict Concurrency Checkingがデフォルト有効化されました。Sendable違反やactor隔離違反がコンパイルエラーになります。第二に、Approachable Concurrency(Swift 6.2の新モード)はシングルスレッド環境をデフォルトとし、async導入を明示的に誘導します。UIKitやSwiftUI基盤のアプリではMainActor隔離が自動適用され、並行処理の入門難度が大幅に下がりました。第三に、typed throws(throws(MyError))が安定化し、エラー型を明示できるようになりました。

// Swift 6 — Approachable Concurrency + Observation
import SwiftUI
import Observation

@Observable
final class UserStore {
    var users: [User] = []
    var isLoading = false

    func load() async throws(NetworkError) {
        isLoading = true
        defer { isLoading = false }
        let url = URL(string: "https://api.example.com/users")!
        let (data, _) = try await URLSession.shared.data(from: url)
        users = try JSONDecoder().decode([User].self, from: data)
    }
}

struct UsersView: View {
    @State private var store = UserStore()

    var body: some View {
        List(store.users) { user in
            Text(user.name)
        }
        .task {
            try? await store.load()
        }
    }
}

@Observableマクロは既存のObservableObject + @Publishedの組み合わせを置き換え、SwiftUIが実際に依存するプロパティだけを追跡して不要な再レンダーを減らします。2026年では新規SwiftUIコードのほぼすべてが@Observableで書かれます。

3. SwiftUI 6 + UIKit — 宣言的UI統一の総仕上げ

SwiftUI 6(iOS 18、2024年)とSwiftUI 6.x(iOS 19ベータ、2025年)は、これまで不足と指摘されていた領域の大半を埋めました。ScrollView APIは精緻になり(.scrollPosition.scrollTargetBehavior)、MeshGradientPaletteSelectionEffectのような視覚効果が追加され、テキスト入力フィールドのCJK IME処理も安定化しました。

UIKitとの相互運用もより滑らかになりました。UIHostingControllerUIViewRepresentableはそのまま使えますが、TipKitApp IntentsWidgetKitActivityKitのようなシステム統合領域はすべてSwiftUI優先で設計されています。2026年に新規iOSアプリをUIKitで始める例はほぼなくなり、既存UIKitアプリも新規画面はSwiftUIで書くのが一般的な流れです。

iPad・visionOSも同じSwiftUIコードで動くため、「iOS・iPadOS・visionOS・macOS・watchOS・tvOS」のコード共有が実用的になりました。Apple自身の発表によると、SwiftUI採用率は2025年新規アプリで75%を超えました。

4. SwiftData + Core ML + Vision — データとMLの標準化

SwiftData(iOS 17、2023~)はCore Dataの後継フレームワークで、@Modelマクロで永続化モデルを宣言します。2026年にはSwiftData 2(iOS 19)でCloudKit同期・History Tracking・Composite Indexes・Lightweight Migrationが安定化されました。

Core MLはApple Intelligenceと統合され、Foundation Models framework経由でオンデバイスLLMを公開します。iOS 18.1+対応デバイスでLanguageModelSessionから約3Bパラメータのオンデバイスモデルを呼び出せ、Private Cloud Computeでより大きなモデルへ委譲もできます。Visionフレームワークは画像・テキスト・バーコード・身体・手の認識を、Translation framework(iOS 17.4+)は18言語ペアのオフライン翻訳を提供します。

// SwiftData + Apple Intelligence — オンデバイス要約生成
import SwiftData
import FoundationModels

@Model
final class Note {
    var title: String
    var body: String
    var summary: String?
    var createdAt: Date

    init(title: String, body: String) {
        self.title = title
        self.body = body
        self.createdAt = .now
    }
}

@MainActor
func generateSummary(for note: Note) async throws {
    let session = LanguageModelSession()
    let response = try await session.respond(
        to: "Summarize in 2 sentences:\n\(note.body)"
    )
    note.summary = response.content
}

5. Kotlin Multiplatform 2 — 正式安定化のインパクト

Kotlin Multiplatform(旧KMM)は2024年11月にKotlin 2.0とともに正式安定化(GA)を迎えました。2026年5月現在Kotlin 2.1.xが標準で、K2コンパイラがデフォルトです。KMPの核心的価値は「ビジネスロジック(ネットワーク・DB・ドメイン)をKotlinで書いてiOS・Android・Desktop・Webに共有しつつ、UIは各プラットフォームのネイティブのまま維持する」点です。

iOSの成果物はObjective-C/Swift frameworkとして作られXcodeにそのままインポートでき、Androidでは通常のKotlinモジュールとして動作します。JetBrainsはCompose Multiplatform 1.7(2025年)でiOSターゲットを正式安定化し、UIまで共有する選択肢も加わりました。

// commonMain — iOSとAndroidで共有するビジネスロジック
import io.ktor.client.*
import io.ktor.client.call.*
import io.ktor.client.plugins.contentnegotiation.*
import io.ktor.serialization.kotlinx.json.*
import kotlinx.serialization.Serializable

@Serializable
data class User(val id: Long, val email: String, val name: String)

class UserRepository {
    private val client = HttpClient {
        install(ContentNegotiation) { json() }
    }

    suspend fun fetchUsers(): List<User> =
        client.get("https://api.example.com/users").body()
}

Coupang、Toss、Karrot、Baemin、Kakaoはすべて2024~2025年の間にKMP導入を公表し、2026年には新規アプリの事実上標準アーキテクチャになりました。

6. Compose Multiplatform 1.7 — UIまで共有する選択肢

Compose Multiplatform(JetBrains)はAndroidのJetpack ComposeランタイムをKotlin/Native(iOS)、JS/Wasm(Web)、JVM(Desktop)へ移植したものです。1.7(2025年5月)でiOS安定化・アクセシビリティ・テキスト入力・ナビゲーション・リソース管理がすべてプロダクション準拠のレベルに到達しました。

長所:iOS・AndroidのUIコード共有率が90%を超える事例も珍しくありません。短所:iOSではSwiftUIコンポーネントと自然に混ざらず、「1画面まるごとCompose」または「1画面まるごとSwiftUI」になりがちです。2026年5月現在、Kakao、NHN、JetBrains自社のToolboxアプリ、WakandaなどがCompose Multiplatform iOSをプロダクションで利用しています。

// Compose Multiplatform 1.7 — iOSとAndroidに共有されるUI
import androidx.compose.foundation.layout.*
import androidx.compose.material3.*
import androidx.compose.runtime.*

@Composable
fun UsersScreen(repo: UserRepository) {
    var users by remember { mutableStateOf<List<User>>(emptyList()) }
    LaunchedEffect(Unit) { users = repo.fetchUsers() }

    Scaffold(topBar = { CenterAlignedTopAppBar(title = { Text("Users") }) }) { padding ->
        Column(modifier = Modifier.padding(padding)) {
            users.forEach { user ->
                ListItem(headlineContent = { Text(user.name) })
            }
        }
    }
}

7. Jetpack Compose 1.8 — Strong Skippingと予測戻る

Android Jetpack Composeは2024年の1.7、2025年の1.8を経て性能上の主要課題を解消しました。Strong Skipping Modeは安定性が不明なパラメータまで自動でスキップするようになり、@Stableアノテーションなしでも再コンポジションが減ります。Predictive Back(Android 14+)はユーザーが戻るジェスチャーを始めた時点で次の画面を先行レンダリングし、iOSのインタラクティブdismissに似た体験を実現します。

Material 3 Expressive(2025年Google I/O)はカラー・モーション・タイポグラフィをより表現豊かに拡張したデザインシステムです。ColorSchemeが充実し、MotionSchemeが追加され、新コンポーネント(FloatingToolbarCarouselLoadingIndicator)が加わりました。

// Jetpack Compose 1.8 + Material 3 Expressive
@Composable
fun UsersScreen(viewModel: UsersViewModel = hiltViewModel()) {
    val uiState by viewModel.uiState.collectAsStateWithLifecycle()

    Scaffold(
        topBar = { CenterAlignedTopAppBar(title = { Text("Users") }) }
    ) { padding ->
        when (val state = uiState) {
            is UiState.Loading -> LoadingIndicator(Modifier.padding(padding))
            is UiState.Success -> LazyColumn(contentPadding = padding) {
                items(state.users, key = { it.id }) { user ->
                    ListItem(
                        headlineContent = { Text(user.name) },
                        supportingContent = { Text(user.email) }
                    )
                }
            }
            is UiState.Error -> ErrorView(state.message, onRetry = viewModel::retry)
        }
    }
}

Baseline ProfilesとMacrobenchmarkの連携で初回画面のレンダリング時間(LCP)を25~40%削減でき、新規Androidアプリは事実上Composeで始まります。

8. Flutter 4 — Impellerが全面適用

Flutter 4.0(2025年)はImpellerレンダラーをiOS・Android・Desktopすべてのデフォルトにした最初のメジャーリリースです。従来のSkiaベースで発生していたシェーダコンパイルjankが消え、Vulkan/Metalを直接活用して60・90・120fpsを安定して出します。Dart 3.5+のパターンマッチング・records・class modifiersが標準コードスタイルとして定着しました。

Flutterの強みは変わりません — 独自レンダラーによりiOS・Android・Web・Desktop・Embeddedでピクセル単位の同一性を実現します。短所はOSネイティブのlook-and-feelを模倣する必要がある点で、Cupertinoウィジェットセットは毎年更新されますが100%の一致は困難です。

// Flutter 4 + Riverpod 2 — 非同期状態管理
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

final usersProvider = FutureProvider<List<User>>((ref) async {
  final repo = ref.read(userRepoProvider);
  return repo.fetchUsers();
});

class UsersScreen extends ConsumerWidget {
  const UsersScreen({super.key});

  
  Widget build(BuildContext context, WidgetRef ref) {
    final users = ref.watch(usersProvider);

    return Scaffold(
      appBar: AppBar(title: const Text('Users')),
      body: users.when(
        data: (list) => ListView.builder(
          itemCount: list.length,
          itemBuilder: (_, i) => ListTile(title: Text(list[i].name)),
        ),
        loading: () => const Center(child: CircularProgressIndicator()),
        error: (e, _) => Center(child: Text('Error: $e')),
      ),
    );
  }
}

Google・Alibaba・BMW・ByteDance・eBayがFlutterをプロダクションで利用し、韓国ではWoowa Brothersの一部アプリ、日本ではZOZO・CyberAgentが導入しています。

9. React Native 0.78 — New Architectureがデフォルト

React Native 0.78(2025年)はNew Architecture(Fabric + TurboModules + Hermes) をデフォルト有効化した初のリリースです。JSI(JavaScript Interface)ベースの同期呼び出し、Concurrent Rendererとの互換性、JSCに代わりHermesがデフォルトになったことで、起動時間が30~40%短縮されました。

2026年5月現在React Native 0.79までリリースされており、Metaは自社アプリ(Facebook・Instagram・Threads)の大半の画面をRNで運用しています。Microsoft Office・Discord・Shopify・Tesla・Coinbaseが代表的な採用例です。

// React Native 0.78 — 関数コンポーネントとTurboModule
import { useEffect, useState } from 'react'
import { FlatList, Text, View, StyleSheet } from 'react-native'

type User = { id: number; name: string; email: string }

export default function UsersScreen() {
  const [users, setUsers] = useState<User[]>([])
  const [loading, setLoading] = useState(true)

  useEffect(() => {
    fetch('https://api.example.com/users')
      .then((r) => r.json())
      .then((data) => setUsers(data))
      .finally(() => setLoading(false))
  }, [])

  if (loading) return <Text>Loading...</Text>

  return (
    <FlatList
      data={users}
      keyExtractor={(u) => String(u.id)}
      renderItem={({ item }) => (
        <View style={styles.row}>
          <Text style={styles.name}>{item.name}</Text>
          <Text>{item.email}</Text>
        </View>
      )}
    />
  )
}

const styles = StyleSheet.create({
  row: { padding: 16, borderBottomWidth: 1, borderBottomColor: '#eee' },
  name: { fontWeight: 'bold', fontSize: 16 },
})

短所も明確です。ネイティブモジュールを自作する際にはNew Architectureへの移行が必要で、一部サードパーティライブラリのNew Arch対応はまだ遅れています。

10. Expo SDK 53 — React Nativeの事実上の標準ツールチェーン

ExpoはReact Nativeのビルド・配信・APIの難点を解決するツールチェーンです。2026年はSDK 53(2025年5月)が標準で、Expo Router 5(ファイルベースルーティング、Next.jsに類似)、EAS Build(クラウドビルド)、EAS Update(OTA)、EAS Submit(ストア自動提出)、Expo DOM Components(WebView埋め込み)などが中核機能です。

MicrosoftのApp Center終了(2025年3月)により、OTA更新は事実上EAS Update + CodePushの後継または自前構築に二分され、ほとんどのRNチームがEAS Updateを選択しました。

11. Capacitor 6 + Ionic — 現実的なWebコンテナの選択

Capacitor(Ionicチーム、2018~)はCordovaの後継として登場したWebコンテナです。2026年5月時点でCapacitor 6が標準で、iOSはデフォルトでWKWebView、Androidはデフォルトでシステム WebView(またはGeckoViewオプション)の上にネイティブプラグインシステムを載せます。Vue・React・Angularなどのウェブフレームワークコードをそのままモバイルパッケージとして作成でき、同じコードをPWAとしても配信できます。

性能はネイティブに及びませんが、社内アプリ・コンテンツアプリ・管理者アプリでは十分です。Burger King、Southwest Airlines、Sworkitが代表的な採用例です。

12. Tauri Mobile 2 + .NET MAUI + NativeScript — ニッチだが健在の選択肢

Tauri Mobile 2(2024年)はRustで作られたデスクトップフレームワークTauriのモバイル拡張です。WebViewベースですがRustバックエンドに重い処理を委譲でき、セキュリティ・小型バイナリを重視するチームが採用しています。

.NET MAUI(.NET 9、2024年11月)はXamarin.Formsの後継としてMicrosoftが推すクロスプラットフォームUIフレームワークです。.NET 9で安定性が大きく改善され、Blazor Hybridと併用できるので.NETフルスタックチームに魅力的です。

NativeScript 8はJavaScript/TypeScriptから本物のネイティブUIを呼び出すフレームワークです。シェアは小さいですがVue・Angular統合に強みがあります。

13. ネイティブ vs クロスプラットフォーム — 意思決定マトリクス

基準ネイティブ(Swift+Kotlin)KMP+CMPFlutterRN+ExpoCapacitor
性能・応答性最高最高非常に良い良い普通
OS新機能アクセス即時1~3ヶ月6~12ヶ月3~6ヶ月可変
コード共有率0%60~90%95%+90%+95%+
学習曲線高(2言語)中上中(Dart)低(JS/TS)
採用プール
ビルド時間普通非常に短
アプリサイズ
デザイン一貫性OS別に異なるOS別に異なる同一可変同一

結局のところ答えは「規模の大きなアプリならネイティブまたはKMP、MVP/B2B社内アプリならFlutter/RN/Capacitor」に収束します。

14. iOS固有 — Apple IntelligenceとApp Intentsの台頭

Apple Intelligence(iOS 18.1+、2024年10月)はiOSアプリがシステムLLM・画像生成・要約と統合する新しい入口を作ります。App IntentsはSiri・Spotlight・Shortcuts・ホーム画面ウィジェットからアプリ機能を呼び出させ、2025年からはApple Intelligenceがユーザー意図と自動マッチングします。

TipKit(iOS 17+)はアプリ内で機能案内ツールチップを作る標準APIです。ActivityKitはLive Activities・Dynamic Islandを通じたリアルタイム状態表示を、WidgetKitはホーム/ロック/Lock Screenウィジェットを、RoomPlanはLiDARベースの屋内3Dスキャンを提供します。

15. Android固有 — Health ConnectとCredential Manager

Health Connect(2023年、Android 14+標準)はGoogle FitとSamsung Healthのデータを統合する単一のAPIです。Credential Managerはパスワード・passkey・連合認証を一つのダイアログに統合し、2025年からAndroid 14+で事実上の標準ログインUXになりました。

Privacy Sandbox on Android(2025年正式)はモバイル広告ID(AAID)代替技術で、App Bundle + Baseline Profiles + Macrobenchmarkの組み合わせで初回画面のレンダリング時間を25~40%削減できます。Predictive Back(Android 14+)はユーザー体験を滑らかにします。

16. アプリストアの変化 — DMAと代替マーケットプレイス

2024年3月発効のEUデジタル市場法(DMA) によりiOSはEUユーザー限定で代替アプリマーケットプレイスを許可し始めました。Setapp Mobile(MacPaw)、AltStore PAL、Epic Games Storeが代表的で、開発者はCore Technology Fee(CTF)の代わりに新事業条件(2024年5月更新)を選べます。

米国でもEpic v. Apple判決により外部決済リンク許可が一部前進し、2025年には外部決済比率の増加でIn-App Purchase依存度がやや弱まりました。AndroidはEUでGoogle Play外のサイドロードを明示的に許可し、Samsung Galaxy Store・Huawei AppGallery・OneStore(韓国通信3社)も依然として一定のシェアを維持しています。

17. アプリ内課金 — Apple IAP・Google Play Billing・RevenueCat・Adapty

iOSのIn-App Purchase(StoreKit 2) とAndroidのGoogle Play Billing 7.xが標準です。両者ともサブスクリプション・自動更新・offer code・family sharingに対応しますがAPIは異なり、レシート検証・払い戻し・grace periodの処理も複雑です。

これを抽象化するSaaSがRevenueCatAdaptyです。SDK 1行で両プラットフォームの課金・レシート検証・サーバーバックオフィス・分析を統合し、2026年は新規アプリの約80%がどちらかを使う雰囲気です。RevenueCatは2024年Series C(60M)、Adaptyは2023年Series A(15M)で急成長しています。

18. 分析・CRM — Firebase・Amplitude・Mixpanel・AppsFlyer・Branch

Firebase Analytics + Crashlyticsが圧倒的標準ですが、精密分析はAmplitude・Mixpanel、アトリビューションはAppsFlyer・Adjust・Branchがそれぞれ位置を確立しています。SKAdNetwork 4(iOS 16.1+)・Privacy Sandbox時代でアトリビューション精度は落ちましたが、コンバージョンウィンドウと複合メトリクスで補います。

Microsoft App Centerは2025年3月に終了し、その座をFirebase + Sentry + Bugsnagが埋めました。SentryはReact Native・Flutter・ネイティブiOS・AndroidすべてにSDKを提供し、ソースマップ・シンボリケーション・セッションリプレイを統合します。

19. モバイルCI/CD — Fastlane・Bitrise・Codemagic・EAS・Xcode Cloud・GitHub Actions

Fastlane(2014~)は今も事実上の標準で、ビルド・署名・ストアアップロード自動化の単一窓口です。その上にクラウドビルドサービスが重なります。

# Fastlane 標準パターン — Fastfile
default_platform(:ios)

platform :ios do
  desc "Push a beta build to TestFlight"
  lane :beta do
    increment_build_number(xcodeproj: "MyApp.xcodeproj")
    build_app(scheme: "MyApp")
    upload_to_testflight(skip_waiting_for_build_processing: true)
  end

  desc "Release a build to the App Store"
  lane :release do
    capture_screenshots
    build_app(scheme: "MyApp")
    upload_to_app_store(submit_for_review: true)
  end
end

# 実行: fastlane beta

Bitriseはワークフローベースのモバイル専用クラウドCI、CodemagicはFlutterに強く、EAS Build/SubmitはReact Native/Expoの標準、Xcode CloudはApple公式ですが価格が高く、GitHub Actionsはself-hosted runnerと組み合わせて費用対効果が良いです。

20. モバイルセキュリティ — App Attest・Play Integrity・ProGuard/R8

App Attest(iOS 14+)はデバイス完全性トークンを発行し、サーバー側で検証できるようにし、Play Integrity APIはAndroidで同じ役割を果たします。2025年から両プラットフォームともゲーム・決済・金融アプリでは事実上必須になりました。

コード難読化はAndroidのR8(ProGuardの後継)が標準で、iOSはSwiftShield・自前ビルドスクリプトが一般的です。通信セキュリティはcertificate pinning(TrustKit、OkHttp CertificatePinner)が推奨されます。

21. デザインシステム — Material 3 Expressive・Apple Liquid Glass・Tailwind for Native

Material 3 Expressive(2025年)はMaterial Designの表現性を引き上げたアップデートです。Apple HIGは2024年のiOS 18でコントロールセンター・ホーム画面ウィジェットガイドが刷新され、2025年に発表されたLiquid Glass(概念)は視覚効果の次の方向性を示します。

クロスプラットフォームではTailwind CSSの影響を受けたNativeWind(React Native)、Tailwind for Composeshadcn/ui for React Nativeのようなライブラリが急速に成長中です。デザインシステムツールはFigma + Tokens Studioが事実上標準で、Storybook for React NativeとLookbook for Flutterがコンポーネントギャラリーとして使われます。

22. 韓国のモバイルシーン — KMPの本拠地

韓国のモバイルチームは2024~2025年の間に一斉にKotlin Multiplatform + Compose Multiplatform導入を公表しました。Coupangは自社カンファレンスでKMPベースの共通モジュールを発表し、Tossは決済・認証・送金ロジックをKMPで共有しています。Karrot(당근) はチャット・フィードの一部をKMPに移行し、Baemin(Woowa Brothers)はKMP導入後記をブログで公開しました。KakaoはKakaoTalk・KakaoBank・KakaoMapでKMPを段階的に適用中で、NHNはゲーム・決済SDKをKMPで統合しています。

iOSは依然Swift + SwiftUI、AndroidはKotlin + Composeが標準ですが、その間の共有レイヤーとしてKMPが定着した点が最大の変化です。

23. 日本のモバイルシーン — MercariのFlutter、LINEのCompose

LINEヤフー(2023年合併)はメッセンジャーはネイティブのまま、Yahoo!JAPANは段階的なRN/Flutter移行を進めており、Compose Multiplatformの検討も公開しました。Mercariは2019年からFlutter導入を続け、2025年にメインアプリの一部フローをFlutterで運用しています。ZOZOはFlutter採用を公式化し、freee・Money Forward・SmartHRはコアモバイルアプリをKotlin + Composeで運用しています。Sansan(名刺管理)・CARTA(広告)はCompose Multiplatform iOSのPoCを公開しました。

日本はネイティブ優先文化が強いですが、新規スタートアップはRN/Expoで始める比率が急増しています。

24. 意思決定ツリー — どのスタックを選ぶか

  • iOS・Android両方必要、チーム全員モバイルネイティブ — Swift + Kotlin ネイティブ
  • iOS・Android両方必要、ビジネスロジック共有 — KMP、UIはSwiftUI + Compose
  • iOS・Android・Desktop・Webすべて必要、Kotlinチーム — KMP + Compose Multiplatform
  • 1コード1ピクセル、デザイン統一優先、チームがDart学習可能 — Flutter 4
  • Web人材活用、迅速なリリース・OTAが必要 — React Native + Expo
  • 社内アプリ・コンテンツアプリ、PWAアセット再活用 — Capacitor + Ionic
  • .NETフルスタック、Blazorアセット保有 — .NET MAUI
  • Rust強化、セキュリティ・小型バイナリ優先 — Tauri Mobile 2

25. 移行ガイド — ネイティブ ↔ クロスプラットフォーム

UIKit/ViewからSwiftUI/Composeへの移行は画面単位で段階的に進めるのが定石です。iOSはUIHostingController、AndroidはComposeViewで既存画面の中に新規UIを挿入できます。ネイティブからKMPへの移行は、ドメイン・ネットワーク・DBなど「UIから遠い」レイヤーから移し、ViewModelは最後に移す順序が安全です。

RN/Flutterからネイティブへの移行はコストが大きいため、通常は「性能が重要な画面だけ」をネイティブに切り出すhybrid戦略を取ります。RNの場合はreact-native-navigationや自前のNativeStackNavigatorでネイティブ画面を挟み込め、Flutterはadd-to-appモードで既存ネイティブアプリに一部画面だけをFlutterで作成できます。

26. まとめ — 2026年モバイルは多陣営共存の時代

2026年のモバイル開発にはもはや単一の正解がありません。ネイティブ陣営はOS新機能アクセスと最高のUXを、KMPはビジネスロジック共有とネイティブUIのバランスを、Flutterはピクセル単位の一貫性を、React NativeはWeb人材の再活用とOTA更新を、CapacitorはPWAアセットの再活用を、それぞれ別の位置で提供します。

さらにApple Intelligence・Health Connect・DMAマーケットプレイス・Privacy SandboxなどのOS/政策レベルの変化が重なり、2026年のモバイル開発者は「フレームワーク選択よりもシステム統合能力」がより重要になっています。どのスタックを選んでも一つは明確です — 宣言的UIと非同期状態管理、そしてシステムLLMとの統合が向こう5年の標準になります。

References