要約
[モバイル開発] クロスプラットフォーム開発徹底比較 2026: Flutter, React Native, Xamarinの選び方
主要なクロスプラットフォームフレームワークであるFlutter, React Native, Xamarinを開発者の視点で徹底比較します。
Keywords: Flutter, React Native, Xamarin
目次
1 はじめに:クロスプラットフォーム開発の重要性
2 Flutterの深掘り:革新的なUIとパフォーマンス
3 React Nativeの深掘り:Web技術をモバイルへ
4 Xamarinの深掘り:.NETエコシステムとの融合
5 主要フレームワーク比較:データと実践的視点
6 2026年における最適なフレームワークの選び方
7 将来の展望と進化
8 よくある質問 (FAQ)
INTRODUCTION
はじめに:クロスプラットフォーム開発の重要性
2026年現在、モバイルアプリ市場はかつてないほどの成長を遂げており、企業はユーザーにリーチするために高品質なアプリを迅速に提供することが求められています。しかし、iOSとAndroidという異なるプラットフォーム向けにそれぞれネイティブアプリを開発することは、時間、コスト、リソースの面で大きな負担となります。ここで登場するのが「クロスプラットフォーム開発」です。
クロスプラットフォーム開発とは、一つのコードベースで複数のオペレーティングシステム(主にiOSとAndroid)に対応するアプリケーションを開発する手法を指します。これにより、開発者は開発期間の短縮、コスト削減、一貫したユーザーエクスペリエンスの提供といった多大なメリットを享受できます。特にスタートアップ企業やリソースが限られているプロジェクトにおいて、その価値は計り知れません。
“一つのコードベースでiOSとAndroidの両方をカバーできるクロスプラットフォーム開発は、2026年のモバイルアプリ市場において、もはや選択肢ではなく、標準的な戦略になりつつあります。”
— Kwonteki分析レポート
本記事では、現在モバイル開発の現場で最も注目され、広く利用されている主要なクロスプラットフォームフレームワークである「Flutter」「React Native」「Xamarin」の3つに焦点を当て、それぞれの特徴、アーキテクチャ、メリット・デメリット、そして具体的なコード例を交えながら徹底的に比較分析していきます。2026年における各フレームワークの現状と将来性も踏まえ、読者の皆様が自身のプロジェクトに最適な選択をするための具体的な指針を提供することを目指します。
この記事を通じて、モバイルアプリ開発に携わる開発者の方々はもちろん、ビジネスオーナーやプロダクトマネージャーの方々にも、各フレームワークの本質を理解し、より効果的な意思決定ができるようになることを願っています。
FLUTTER DEEP DIVE
Flutterの深掘り:革新的なUIとパフォーマンス
Flutterは、Googleによって開発されたオープンソースのUIソフトウェア開発キットです。単一のコードベースからモバイル(iOS、Android)、ウェブ、デスクトップ、組み込みデバイス向けにネイティブコンパイルされたアプリケーションを構築できます。その登場以来、開発コミュニティで急速に人気を集め、特に美しいUIと高いパフォーマンスが評価されています。
Flutterのアーキテクチャとレンダリング
Flutterの最大の特徴は、そのレンダリングアプローチにあります。他のクロスプラットフォームフレームワークがネイティブUIコンポーネントをブリッジ経由で呼び出すのに対し、Flutterは独自の高性能レンダリングエンジン「Skia」を使用してUIを直接描画します。SkiaはGoogle Chrome、Android、Firefoxなどでも使用されている2Dグラフィックライブラリであり、これによりFlutterアプリはデバイスのネイティブUIコンポーネントに依存することなく、プラットフォーム間で完全に一貫したUIをミリ秒単位で描画できます。
開発言語にはGoogleが開発した「Dart」が採用されています。Dartはオブジェクト指向のクライアント最適化言語であり、特にJIT(Just-In-Time)コンパイルによる高速な開発サイクル(ホットリロード機能)と、AOT(Ahead-Of-Time)コンパイルによるネイティブコードへの変換による高い実行パフォーマンスを両立させています。これにより、開発者は迅速なUIの変更確認と、最終的なアプリの高いパフォーマンスを同時に享受できるのです。
ポイント
Flutterは、独自のSkiaレンダリングエンジンとDart言語のAOTコンパイルにより、ネイティブに近いパフォーマンスと美しいカスタムUIを実現します。
パフォーマンスとUI/UX
Flutterのパフォーマンスは非常に優れており、多くの場合、ネイティブアプリと区別がつかないレベルです。SkiaエンジンがUIを直接描画するため、ブリッジを介した通信オーバーヘッドが少なく、60fps(一部デバイスでは120fps)のスムーズなアニメーションとスクロールを実現します。また、マテリアルデザインとクパチーノデザインの豊富なウィジェットセットが標準で提供されており、開発者はこれらのウィジェットを組み合わせて、非常に表現力豊かでプラットフォームに最適化されたUIを容易に構築できます。
Flutterの「Everything is a Widget」という思想は、UI構築の柔軟性を高めます。レイアウト、スタイル、インタラクションのすべてがウィジェットとして表現され、これらを組み合わせて複雑なUIを構成します。これにより、開発者は宣言的なUI記述に慣れることで、非常に効率的にデザインを実装できるようになります。

Flutterのコード例
以下は、Flutterでシンプルなカウンターアプリを作成するコード例です。ボタンをタップすると数値が増加する基本的な機能を備えています。
コード解説
このDartコードは、Flutterで一般的なステートフルウィジェット(状態を持つウィジェット)を使用してカウンターアプリを構築します。_counter変数が状態を保持し、_incrementCounterメソッドがそれを更新してUIを再描画します。
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Counter App',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headlineMedium,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.add),
),
);
}
}
メリット
✓ ネイティブに近い高性能と滑らかなUIアニメーション
✓ ホットリロードによる高速な開発サイクル
✓ 豊富なUIウィジェットと柔軟なカスタムデザイン
✓ 単一コードベースで多プラットフォームに対応
✓ 活発なコミュニティとGoogleによる強力なサポート
デメリット
✗ Dart言語の学習コスト(JavaScript経験者には新しい言語)
✗ アプリのファイルサイズが他のフレームワークより大きくなる傾向
✗ ネイティブAPIにアクセスする際のパッケージ依存度が高い
ユースケース:高パフォーマンスなEコマースアプリ
Flutterは、複雑なアニメーションやトランジションを多用するEコマースアプリに最適です。例えば、商品リストのスクロール、詳細ページの画像ギャラリー、スムーズなチェックアウトプロセスなど、ユーザー体験が重視される場面でその真価を発揮します。カスタムUIの自由度が高いため、ブランドイメージに合わせたユニークなデザインを実装しやすいのもメリットです。
REACT NATIVE DEEP DIVE
React Nativeの深掘り:Web技術をモバイルへ
React Nativeは、Facebook(現Meta)が開発したオープンソースのモバイルアプリケーションフレームワークです。JavaScriptとReactの知識があれば、iOSとAndroid向けのネイティブモバイルアプリを構築できます。Web開発者がモバイルアプリ開発に参入する障壁を大きく下げたことで、瞬く間に人気を集めました。
React Nativeのアーキテクチャとレンダリング
React Nativeの核となるのは、「JavaScriptブリッジ」と「ネイティブコンポーネント」の組み合わせです。開発者がJavaScriptで書いたコードは、このブリッジを介してネイティブモジュールと通信し、iOSではObjective-C/Swift、AndroidではJava/Kotlinで書かれたネイティブUIコンポーネントを呼び出してレンダリングします。つまり、React NativeアプリのUIは、そのプラットフォームのネイティブ要素で構成されるため、ユーザーは完全にネイティブなルック&フィールとパフォーマンスを体験できます。
近年、React Nativeのアーキテクチャは「New Architecture」(FabricとTurboModules)へと進化しています。これはJavaScriptブリッジのボトルネックを解消し、より効率的な通信とネイティブモジュールへの直接アクセスを可能にすることで、パフォーマンスの向上と開発体験の改善を目指しています。この新しいアーキテクチャは、JavaScriptスレッドとUIスレッドの同期を強化し、ユーザーインタラクションの応答性を高めることを目的としています。
ポイント
React NativeはJavaScriptとネイティブUIコンポーネントを組み合わせ、New Architectureによってパフォーマンスと開発体験のさらなる改善を進めています。
パフォーマンスとUI/UX
React Nativeのパフォーマンスは、ネイティブUIコンポーネントを使用するため、一般的に良好です。しかし、JavaScriptブリッジを介した通信がボトルネックとなる場合があり、特に複雑なアニメーションや高速なデータ処理が必要な場面では、Flutterに一歩譲ることもありました。New Architectureの導入により、このギャップは縮まりつつあります。
UI/UXの観点では、プラットフォームのネイティブコンポーネントを使用するため、各OSのガイドラインに沿った自然な外観と操作感を提供しやすいというメリットがあります。また、Reactエコシステムが提供する豊富なライブラリやツールを活用できるため、開発者は効率的にUIを構築できます。しかし、高度にカスタムされたデザインや複雑なグラフィックを実装する際には、ネイティブ側での調整や追加の開発が必要になる場合があります。

React Nativeのコード例
以下は、React Nativeでシンプルなカウンターアプリを作成するコード例です。Reactのコンポーネントベースのアプローチが特徴です。
コード解説
このJavaScript(JSX)コードは、ReactのuseStateフックを使用してカウンターの状態を管理します。TouchableOpacityは、タップ可能な領域を作成し、onPressイベントでカウンターを更新します。ネイティブUIコンポーネント(View, Textなど)が使用されている点に注目してください。
import React, { useState } from 'react';
import { StyleSheet, Text, View, TouchableOpacity } from 'react-native';
const App = () => {
const [count, setCount] = useState(0);
const onIncrement = () => {
setCount(prevCount => prevCount + 1);
};
return (
<View style={styles.container}>
<Text style={styles.title}>React Native Counter</Text>
<Text style={styles.countText}>{count}</Text>
<TouchableOpacity style={styles.button} onPress={onIncrement}>
<Text style={styles.buttonText}>Increment</Text>
</TouchableOpacity>
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
title: {
fontSize: 24,
fontWeight: 'bold',
marginBottom: 20,
color: '#333',
},
countText: {
fontSize: 48,
fontWeight: 'bold',
marginBottom: 30,
color: '#667eea',
},
button: {
backgroundColor: '#667eea',
paddingVertical: 12,
paddingHorizontal: 30,
borderRadius: 8,
},
buttonText: {
color: '#fff',
fontSize: 18,
fontWeight: 'bold',
},
});
export default App;
メリット
✓ JavaScript/Reactの知識でモバイルアプリ開発が可能
✓ ネイティブUIコンポーネントによる自然なルック&フィール
✓ 巨大なWebコミュニティと豊富なライブラリ
✓ ホットリロードに近い高速な開発体験
✓ 新しいアーキテクチャによる性能改善
デメリット
✗ ネイティブモジュールが必要な場合の複雑性
✗ 依存パッケージの管理とバージョンアップの問題
✗ UIのカスタム性がFlutterほど高くない場合がある
ユースケース:ソーシャルメディアアプリ、既存Webサービス連携
React Nativeは、Facebook、Instagram、Skypeなど多くのソーシャルメディアアプリで利用されています。既存のWebサービスがReactで構築されている場合、コードや開発者のスキルセットを再利用できるため、モバイルアプリへの展開が非常に効率的です。ネイティブコンポーネントによる一貫したユーザー体験が求められるビジネス系アプリやコンテンツ配信アプリにも適しています。
XAMARIN DEEP DIVE
Xamarinの深掘り:.NETエコシステムとの融合
Xamarinは、Microsoftが提供するオープンソースのクロスプラットフォーム開発フレームワークです。C#と.NETフレームワークを使用して、iOS、Android、Windows向けのネイティブアプリを構築できます。C#開発者にとって、既存のスキルセットと.NETエコシステムをモバイル開発に拡張できる点が最大の魅力です。
Xamarinのアーキテクチャとレンダリング
Xamarinには大きく分けて二つの開発アプローチがあります。「Xamarin.Forms」と「Xamarin.iOS/Xamarin.Android」です。
- Xamarin.Forms: XAML(Extensible Application Markup Language)またはC#でUIを記述し、これを各プラットフォームのネイティブUIコンポーネントにマッピングしてレンダリングします。単一の共有UIコードベースで複数のプラットフォームに対応できるため、コード共有率が非常に高いのが特徴です。
- Xamarin.iOS/Xamarin.Android: 各プラットフォームのAPIをC#でバインドし、ネイティブのUIデザイナーやAPIを直接利用して開発します。UIはプラットフォーム固有ですが、ビジネスロジックはC#で共有できます。これにより、ネイティブアプリとほぼ同等の柔軟性とパフォーマンスを実現できます。
Xamarinアプリは、AOT(iOS)またはJIT(Android)コンパイルによってネイティブコードに変換されます。特にiOSでは、C#コードがLLVMによってARMアセンブリにコンパイルされ、ネイティブアプリと同様の実行速度を実現します。
ポイント
XamarinはC#と.NETを基盤とし、Xamarin.Formsで高いコード共有率を、Xamarin.iOS/Androidでネイティブライクな制御を提供します。2026年以降はMAUIへの移行が主流です。
パフォーマンスとUI/UX
Xamarinのパフォーマンスは、ネイティブコンポーネントを使用する点でReact Nativeと同様に良好です。特にXamarin.iOS/Androidアプローチでは、ネイティブAPIへの直接アクセスが可能なため、高度なパフォーマンスチューニングが可能です。Xamarin.Formsの場合、抽象化レイヤーを介するため、多少のオーバーヘッドが生じる可能性はありますが、一般的なビジネスアプリでは問題にならないレベルです。
UI/UXに関しては、Xamarin.Formsはネイティブコンポーネントを基盤としているため、プラットフォームのガイドラインに沿ったUIを提供できます。しかし、カスタムデザインの自由度はFlutterほど高くなく、複雑なアニメーションやグラフィックの実装には手間がかかる場合があります。ただし、Xamarin.iOS/AndroidではネイティブのUIツールキットを直接使用できるため、デザインの柔軟性は非常に高いです。
Xamarinは現在、よりモダンな「.NET Multi-platform App UI(.NET MAUI)」へと進化しています。MAUIはXamarin.Formsの後継であり、より統合された開発体験、高いパフォーマンス、そしてデスクトップアプリ(Windows、macOS)への対応を強化しています。2026年時点では、新規プロジェクトではMAUIが推奨される傾向にあります。

Xamarinのコード例(.NET MAUI)
以下は、.NET MAUI(Xamarin.Formsの後継)でシンプルなカウンターアプリを作成するコード例です。C#とXAMLを組み合わせてUIを定義します。
コード解説
このXAMLコードは、MAUIのContentPage内にボタンとラベルを配置し、C#のコードビハインドでボタンのクリックイベントを処理し、カウンターの値を更新します。Bindingプロパティにより、UIとロジック間のデータ連携が容易に行われます。
<!-- MainPage.xaml -->
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MauiApp1.MainPage"
BackgroundColor="{AppThemeBinding Light={StaticResource LightBackground}, Dark={StaticResource DarkBackground}}">
<ScrollView>
<VerticalStackLayout
Padding="30,0"
Spacing="25"
VerticalOptions="Center">
<Image
Source="dotnet_bot.png"
SemanticProperties.Description="Dotnet bot in a circle"
HeightRequest="200"
HorizontalOptions="Center" />
<Label
Text="Hello, .NET MAUI!"
SemanticProperties.HeadingLevel="Level1"
FontSize="32"
HorizontalOptions="Center" />
<Label
Text="Welcome to .NET Multi-platform App UI"
SemanticProperties.HeadingLevel="Level2"
SemanticProperties.Description="Welcome to .NET Multi-platform App U I"
FontSize="18"
HorizontalOptions="Center" />
<Button
x:Name="CounterBtn"
Text="Click me"
SemanticProperties.Hint="Counts the number of times you click"
Clicked="OnCounterClicked"
HorizontalOptions="Center" />
<Label
x:Name="CounterLabel"
Text="Current count: 0"
FontSize="24"
HorizontalOptions="Center" />
</VerticalStackLayout>
</ScrollView>
</ContentPage>
// MainPage.xaml.cs
using Microsoft.Maui.Controls;
namespace MauiApp1
{
public partial class MainPage : ContentPage
{
int count = 0;
public MainPage()
{
InitializeComponent();
CounterLabel.Text = $"Current count: {count}";
}
private void OnCounterClicked(object sender, EventArgs e)
{
count++;
CounterLabel.Text = $"Current count: {count}";
SemanticScreenReader.Announce(CounterLabel.Text);
}
}
}
メリット
✓ C#と.NETエコシステムをモバイル開発に活用
✓ ネイティブAPIへのフルアクセスが可能
✓ Microsoftによる強力なサポートとエンタープライズ向け機能
✓ Xamarin.Forms(MAUI)で高いコード共有率
✓ Windowsデスクトップアプリ開発との親和性
デメリット
✗ 学習コスト(C#/.NET未経験者)
✗ コミュニティ規模がFlutter/React Nativeより小さい
✗ UIのカスタムデザインに手間がかかる場合がある(Formsの場合)
ユースケース:エンタープライズ向け業務アプリ
Xamarin(MAUI)は、特に既存のMicrosoftエコシステム(Azure、SharePoint、SQL Serverなど)を深く利用している企業にとって理想的です。例えば、社内向けの在庫管理システム、フィールドサービスアプリ、医療機関向けのデータ入力アプリなど、高いセキュリティと既存システムとの連携が求められるエンタープライズ向け業務アプリで強みを発揮します。C#開発者が多く在籍する企業にも適しています。
COMPARATIVE ANALYSIS
主要フレームワーク比較:データと実践的視点
これまでの各フレームワークの深掘りを踏まえ、ここではFlutter、React Native、Xamarinの主要な側面を比較し、それぞれの強みと弱みをより明確にします。以下の比較表は、2026年現在の一般的な評価と傾向に基づいています。
比較表:Flutter vs React Native vs Xamarin
| 項目 | Flutter | React Native | Xamarin (.NET MAUI) |
|---|---|---|---|
| 開発言語 | Dart | JavaScript / TypeScript | C# |
| UIレンダリング | Skiaエンジンによる独自描画 | ネイティブUIコンポーネント | ネイティブUIコンポーネント (MAUI) |
| パフォーマンス | 非常に高い(ネイティブ同等) | 高い(ネイティブに近い) | 高い(ネイティブに近い) |
| 学習曲線 | 中程度(Dart新規学習) | 低い(Web開発者向け) | 中程度(C#/.NET経験者向け) |
| コミュニティ | 非常に活発、急成長中 | 非常に大規模、成熟 | 中規模、エンタープライズ寄り |
| UIカスタム性 | 非常に高い(自由なデザイン) | 中程度(ネイティブ準拠) | 中程度(ネイティブ準拠) |
| ネイティブ機能アクセス | プラグイン経由(比較的容易) | ブリッジ経由(時に複雑) | 直接アクセス(C#バインディング) |
| 開発企業 | Meta (Facebook) | Microsoft |
実践的視点からの比較
上記の比較表は一般的な傾向を示しますが、実際のプロジェクトではより具体的な側面を考慮する必要があります。
UI/UXの自由度と忠実度
Flutter — 最も高い自由度を提供し、ピクセルパーフェクトなカスタムUIを容易に実現できます。デザイン重視のアプリに最適です。
React Native / Xamarin — ネイティブUIコンポーネントを使用するため、OSのデザインガイドラインに忠実なアプリを効率的に構築できます。しかし、高度なカスタムデザインには限界があります。
ネイティブ機能へのアクセス
Xamarin — C#バインディングを通じてネイティブAPIに最も直接的にアクセスできます。高度なハードウェア連携やOS固有の機能が必要な場合に有利です。
Flutter / React Native — プラグインやネイティブモジュールを介してアクセスします。一般的な機能は既存のプラグインでカバーされますが、特殊な機能ではネイティブコードの記述が必要になることがあります。
注意
各フレームワークのパフォーマンスは、アプリの複雑性、開発者の実装スキル、使用するライブラリやネイティブモジュールの効率によって大きく変動します。ベンチマーク結果はあくまで参考値であり、実際のプロジェクトでの検証が不可欠です。
CHOOSING FRAMEWORK
2026年における最適なフレームワークの選び方
どのクロスプラットフォームフレームワークが最適であるかは、プロジェクトの具体的な要件、チームのスキルセット、そしてビジネス目標によって大きく異なります。2026年現在、各フレームワークは成熟し、それぞれが独自の強みを持っています。以下の要素を考慮して、最適な選択を行いましょう。
考慮すべき主要な要素
1. チームのスキルセットと学習曲線:
- Web開発者(JavaScript/React経験者)が多い場合: React Nativeが最もスムーズに導入できるでしょう。既存のWebスキルを活かしてモバイル開発に移行できます。
- C#/.NET開発者が多い場合: Xamarin (.NET MAUI) が最適です。既存の.NETエコシステムとスキルを最大限に活用できます。
- 新しい言語やパラダイムを学ぶ意欲が高い、または新規チームの場合: FlutterはDart言語の学習が必要ですが、その後の開発効率とパフォーマンスは非常に高いです。
2. プロジェクトの複雑性と要件:
- 高度なカスタムUI/UXとアニメーションが必須の場合: Flutterが最有力候補です。ピクセルパーフェクトなデザインと滑らかなアニメーションをネイティブ同等のパフォーマンスで実現できます。
- ネイティブUIのルック&フィールを重視し、Webとの連携が多い場合: React Nativeが適しています。既存のWeb資産を活かしつつ、ネイティブらしい体験を提供できます。
- 既存の.NETエコシステムとの深い連携、またはWindowsデスクトップアプリとの統合が必要な場合: Xamarin (.NET MAUI) が非常に強力な選択肢となります。
3. 予算と開発期間:
- いずれのフレームワークも単一コードベースで開発するため、ネイティブ開発に比べてコストと期間を削減できます。ただし、開発者の採用市場の規模や学習コストを考慮に入れる必要があります。React NativeとFlutterは開発者コミュニティが大きく、比較的採用しやすい傾向にあります。

フレームワーク選択のステップ
具体的な意思決定プロセスを以下のステップで進めることをお勧めします。
1
プロジェクト要件の明確化
アプリの機能、デザイン、パフォーマンス、ネイティブ機能の利用度などを詳細にリストアップします。特に、カスタムUIの複雑性や、特定のハードウェア/OS機能への依存度を明確にすることが重要です。
2
開発チームのスキル評価
既存のチームメンバーがJavaScript/React、C#/.NET、または新しい言語(Dart)のどれに精通しているかを評価します。新規採用の可能性も考慮に入れ、市場での開発者の供給状況も調査します。
3
PoC(概念実証)の実施
最終候補に残った2〜3のフレームワークで、プロジェクトの最もクリティカルな部分(複雑なUI、特定のネイティブ機能連携など)のPoCを実施します。これにより、理論だけでなく実践的な適合性を評価できます。
4
総合的な評価と決定
PoCの結果、チームのフィードバック、コミュニティサポート、将来性、そしてビジネス要件を総合的に評価し、最終的なフレームワークを決定します。この際、短期間での開発だけでなく、長期的なメンテナンスコストや拡張性も考慮に入れることが重要です。
FUTURE OUTLOOK
将来の展望と進化
クロスプラットフォーム開発の分野は、2026年以降も急速な進化を続けると予想されます。各フレームワークは、パフォーマンス、開発体験、そして対応プラットフォームの拡大において、絶え間ない改善に取り組んでいます。
Flutterのマルチプラットフォーム戦略の強化
Flutter