Xamarin と Flutter: モバイル アプリの開発に適したフレームワークはどれですか?
公開: 2022-11-09完璧なモバイル アプリケーションを作成したいとします。 あなたは既にビジネス戦略を策定し、目標を特定し、競合分析を行い、予算を見積もりました。 誤解しないでほしいのですが、あなたは大仕事を成し遂げ、頭の中にある一般的なアイデアから、完全に機能するモバイル アプリケーションのリリースまでの距離を大幅に縮めました。 しかし、正直に言うと、これは難しい決定の終わりではありません。
モバイル アプリケーション開発のコンテキストにおける最も重要な決定の 1 つは、ネイティブ アプローチとクロスプラットフォーム アプローチのどちらを選択するかです。 別の記事では、ネイティブ開発とクロスプラットフォーム開発の違いについて詳しく読むことができます。 今日は、さらに詳細な質問に答えようとします。Xamarin と Flutterのどちらのフレームワークを使用すると、クロスプラットフォームのモバイル アプリ開発から十分なメリットを得られるでしょうか?
Flutter vs Xamarin vs React Native: ネイティブのようなモバイル アプリを作成するための最適なツールを選択する
ネイティブ フレームワークとクロスプラットフォーム フレームワークに関する記事を読みましたか、または他の同様の比較に慣れましたか? 調査を行えば、少なくとも次のモバイル アプリケーション プロジェクトではクロスプラットフォーム アプローチを選択することを検討することになるでしょう。 クロスプラットフォーム テクノロジは、より高速で安価であり、優れた柔軟性を実現し、数分の 1 のコストで本物のネイティブのようなエクスペリエンスを提供します。
ただし、クロスプラットフォームを選択したとしても、さまざまなフレームワークとツールの間で決定する必要があることに注意してください。 現在、市場で最も人気のあるソリューションは、Flutter と React Native、Xamarin、PWA、Cordova、および Ionic です。 この多段階の意思決定プロセスは複雑に聞こえるかもしれませんので、単純化させてください。 ネイティブとクロスプラットフォーム、および Flutter と React Native のアプローチに関する 2 つの記事については、既に言及しました。 今日は、次の 2 つのキー プレイヤー、 Flutter と Xamarinの対決です。
あなたの前に大きな決断がありますか? アクセス可能なビジネス形式で技術情報を受け取るまであと一歩です。 ニュースレターを購読して、月に 1 回知識ブーストを受け取りましょう!
この記事では、Google と Microsoft が開発した 2 つのオープンソース プラットフォームを詳しく見ていきます。 技術面とビジネス面でFlutter と Xamarin を比較し、独自の Android および iOS モバイル アプリケーションを作成するための最適なツールをお勧めします。 さぁ、始めよう!
Xamarin: 一般情報
Xamarin は、Microsoft が Visual Studio IDE に組み込んだ 2016 年から定期的に使用されているオープンソースのフレームワークです。 それ以来、Microsoft の他の開発ツールと共に開発されてきました。
Xamarin を使用すると、開発者は Android、iOS、macOS、および Windows (UWP) 用の C# コードを作成し、モバイル アプリケーションとデスクトップ アプリケーションを同時に開発できます。 また、Microsoft はクロスプラットフォーム開発を真剣に考えていると宣言しているため、.NET 環境がインストールされている場所ならどこでも Xamarin アプリを実行できるはずです (したがって、Linux OS にうなずきます)。
Xamarin アーキテクチャ
Xamarin を使用すると、Android や iOS などのターゲット プラットフォーム間で、ユーザー インターフェイス コード (XAML で記述) またはビジネス ロジック (C# で記述) を共有できます。 以下の Xamarin アーキテクチャの概要をご覧ください。

上の図の意味がわからない? テクノロジーとビジネスの 2 つの方法で説明します。
特定のプラットフォームの技術的な詳細を調べた後、Xamarin.Android で Android のコンパイルが行われることがわかります。これは、C# から中間言語 (IL) にコンパイルされます。その後、ジャストインタイム (JIT) でネイティブ アセンブリにコンパイルされます。アプリケーションが起動します。 一方、Xamarin.iOS アプリケーションは、C# からネイティブ ARM アセンブリ コードに完全に Ahead-of-Time (AOT) でコンパイルされます。
ビジネスの観点からは、どのような意味がありますか。 Microsoft は、Xamarin ソース コードの 80% をネイティブ API を使用して共有できると宣言しています。これにより、開発者はセンサー、地理位置情報、カメラ、安全なストレージ アクセスなどの機能や、アプリに必要なその他の機能にアクセスできます。 つまり、Xamarin の共有コードベースにより、必要なすべての機能を備えたモバイル アプリケーションを迅速に開発できます。

Flutter: Google による革新的なオープンソース SDK
Xamarin と同様に、Flutter は業界大手によって開発されたクロスプラットフォーム フレームワークです。 Google によるオープンソース フレームワークの最初の安定版リリースは、2018 年 12 月に行われました。それ以来、Flutter は、Google 開発者チーム、ソフトウェア開発の専門家、およびこのツールに集まった成長しているコミュニティによって積極的に開発および維持されてきました。

Flutter 開発者は、Dart 言語でコードを記述します。 クロスプラットフォームの Flutter アプリケーションは、Android、iOS、ウェブ、および (新しく) macOS、Windows、Linux などのすべてのデスクトップ システムを含む複数のプラットフォームに短時間でリリースできます。 多いように見えますか? さて、Flutter によって解き放たれる可能性のリストはこれで終わりではありません!
まず、Flutter を使用すると、家電製品や自動車などの組み込みシステムでコードを実行できます。 次に、Google はまもなく新しいオペレーティング システムである FuchsiaOS をリリースします。 Dart と Flutter がこのオペレーティング システムの主要な開発ツールになるのは当然のことです。
最も影響力のある技術アップデートについて誰よりも早く知ることができます。
ニュースレターに登録するFlutter アーキテクチャの説明
Flutter は、基盤となるレイヤーに依存する独立したライブラリで構成される、拡張可能なレイヤード システムです。 下のレイヤーへの特権アクセスを持っているレイヤーはありません。 フレームワーク レベルのすべての部分はオプションであり、交換可能です。 これはビジネスの観点から何を意味するのでしょうか? Flutter アーキテクチャは、このフレームワークの高いパフォーマンスにどのように貢献していますか?

開発中、Flutter は仮想マシン (JIT 実行を特徴とする) を使用してコードを実行するため、開発者は完全な再コンパイルなしでソース コードを自発的に変更できます。 この有名な Flutter 機能はホット リロードです。これについては、次の Flutter をテーマにした記事で詳しく説明します。 その他の注目すべき Flutter 機能はパフォーマンス ビューで、アプリケーション内のアクティビティのライブ タイミングとパフォーマンス情報を提供します。
上記のメカニズムは、リリース モード (アプリ ストアのユーザーがアプリを利用できるようになったとき) とは異なります。 仮想マシンを使用すると、アプリケーションでの作業の進行状況を監視でき、最終結果がすべてのプラットフォームで完璧に機能することを簡単に確認できます。
次は何が起こる? 最終的な市場対応アプリをリリースするために、開発チームは事前 (AOT) コンパイラーを使用してコードを JavaScript (Web 用) または ARM/x64 (他のプラットフォーム用) に変換します。

Flutter vs Xamarin: SWOT 分析
ビジネス上の意思決定、特にアプリケーションの開発に必要なテクノロジやツールの選択に関連する意思決定は、自発的に行ったり、選択的な議論に基づいたりしてはなりません。 Xamarin と Flutterの両方に長所と短所があります。そのため、これらの各ツールについてできる限り知り、理解することが不可欠です。

SWOT 分析は、戦略的なビジネス上の意思決定を容易にする最も基本的なツールの 1 つですが、透明で公正なツールでもあります。 私の Flutter と Xamarin の SWOT 評価の結果に興味がありますか? 読む!
Xamarin: 強み、弱み、機会、脅威
Xamarin と Flutter を比較するために、各ツールの SWOT 分析から始めましょう。 Xamarin の強み、弱み、機会、脅威から始めましょう。
Xamarin の強み:
- C# は世界で最も人気のある開発言語の 1 つであるため、Xamarin モバイル アプリを作成する準備ができている C# 開発者を簡単に見つけることができます。
- Xamarin は成熟したフレームワークであり、一般的な早期成熟状態の問題はありません。
- Xamarin モバイル アプリケーションは、Microsoft ファミリ製品 (ASP.NET、.NET コア、および Azure) の単一の技術スタックと一致します。
- Xamarin ベースのアプリで作業する開発者は、世界で最も洗練された高度な IDE の 1 つである Visual Studio IDE を使用します。
Xamarin の弱点:
- Flutter と比較すると、Xamarin の開発は非常に遅くなります。 最も人気のある Flutter 機能であるホット リロード/ホット リスタートは、2 年後に Xamarin に導入されましたが、それでも Flutter の主力機能ほど効率的ではありませんでした。
- Xamarin では、アニメーションや目を楽しませる効果やコンポーネントを簡単に開発することはできません。 Xamarin は、タイム トラッキング ツール、レポート システム、財務、CRM (顧客関係管理ツール) などのビジネス アプリケーション向けに明示的に開発されました。
- リリース モードでのアプリのサイズは、エンド ユーザーにとってかなり大きくなります。
- Xamarin は無料で商用利用できますが、Visual Studio の商用ライセンスは高額です。 無料で軽量な Visual Studio Code には、必要なすべてのツールが用意されているわけではありません。
- Xamarin をネイティブ コードに接続することは非常に難しく、既存のアプリに含めることはほぼ不可能です。
- Xamarin にはスムーズな UI パフォーマンスがありません。
Xamarin の機会:
- Xamarin は、モバイル アプリ クライアントを必要とする可能性のある大規模なプログラムで作業する企業に適しています。 大企業には、Flutter よりも Xamarin を使用したいと考えている .NET 開発者がすでにたくさんいます。
Xamarin の脅威:
- Xamarin の開発が遅いことを考えると、現在 React Native または Flutter に市場での地位を失っているため、プロジェクトが却下され、たとえば .NET MAUI (マルチプラットフォーム アプリ UI) または Blazor に置き換えられるリスクがあります。 Xamarin の一部である Xamarin.Forms は、既に MAUI に組み込まれています。
- Xamarin は、新しい Android および iOS 機能を大幅に遅れて適応させます。
- オープンソースの Xamarin ライブラリがいくつかあります。これにより、回避策をコーディングしたり、特定のプラットフォームの言語でネイティブにコーディングしたりすることができます。 アプリケーションの開発効率に影響を与えることは間違いありません。
フラッターの強み、弱み、機会、脅威
フラッターの強み:
- Flutter は十分に文書化されたフレームワークであり、ユースケース、クックブック、サンプルが豊富です。 活発な Flutter コミュニティは日々成長しています。
- 最も重要な Flutter のメリットの 1 つは、親しみやすい学習曲線と低い開始しきい値です。 開発者は、数多くのチュートリアルやコースを使用して、常に知識を広げることができます。
- Flutter に取り組んでいるときは、ライブラリとモジュールで頻繁に SDK が更新されることが予想されます。
- 専用の IDE やコード エディターはありません。Flutter 開発者は、Android Studio、Visual Studio Code、またはその他の開発エディターを使用できます。
- Flutter では、pub.dev で多くのオープンソース ライブラリと拡張機能を利用できます。 さらに、ネイティブ機能の API を利用できます。
- Flutter を使用すると、モジュールまたはコードを既存のモバイル アプリにアタッチし、ネイティブ コードとのアクセス可能な通信を確保できます。
- ホット リスタートとホット リロードのメカニズムにより、外出先で変更を行うことができます。
- Flutter は、広告やサブスクリプションの支払いなど、ゲーム開発と収益化のための開発ツールを提供します。
- Flutter は 60 fps のパフォーマンスを提供するため、高速でスムーズです。
フラッターの弱点:
- Flutter はかなり新しいプロジェクトであり、成熟段階に関連するいくつかの問題がまだ残っています。 API は頻繁に廃止されるため、開発者はプロジェクトで SDK を更新することをお勧めします。
- よく使用されるライブラリにはバグがあり、それらを使用するとアプリがクラッシュする可能性があります。
- 自動化されたテストは優先事項ではなく、テストは信頼できる品質を提供せず、作業も簡単ではありません。
- Dart は簡単に習得でき、高いパフォーマンスを提供し、複数のユース ケースがありますが、開発者の間ではまだあまり人気がありません。
フラッターの機会:
- Xamarin よりも Flutter を使用すると、より多くのデバイスに到達できる可能性があります (着信オペレーティング システム、Fuchsia、および IOT を既に検討しています)。
- 迅速なプロトタイピングと市場投入までの時間の短縮。 Flutter は、MVP や概念実証に最適です。
フラッターの脅威:
- Flutter (多くの場合、現在のクロスプラットフォーム テクノロジ リーダーと呼ばれる) の人気が高まっているにもかかわらず、Google がそのプロジェクトで実験を行うことが多いことを覚えておく価値があります。 いくつかの有名ながら廃止された Google 製品 (Stadia や Google グラスなど) を念頭に置いて、Flutter で同じことが起こる可能性は常にあると言って間違いありません。
Flutter vs Xamarin: まとめ
率直に言って、Xamarin や Flutter などのすべてのクロスプラットフォーム ソリューションはまだ開発中です。 それでも、1 つ確かなことは、クロスプラットフォーム フレームワークで作成されたアプリケーションは、コーディングとパフォーマンスの点でネイティブのようなエクスペリエンスの実現にこれまで以上に近づいているということです。 そしてそれこそが、人気が絶え間なく高まっている主な理由です。 クロスプラットフォームは、アプリケーション開発において最も影響力のある技術概念になりつつあります。 そのため、最も基本的でありながら注目に値するフレームワーク (Xamarin や Flutter など) に慣れることが重要になっています。
しかし、要点に行きましょう。 Flutter と Xamarin の両方について SWOT 分析を既に行っています。 では、最初の質問を簡単に要約して答える時が来ました。Xamarin と Flutter のどちらのフレームワークがビジネス上の選択肢として優れているのでしょうか? どのデジタル プロダクトに Flutter を使用し、どのデジタル製品に Xamarin を使用する必要がありますか?
Xamarin vs Flutter: どちらのフレームワークが優れているか
Flutter と比較して、Xamarin は成熟したフレームワークであり、モバイル市場への迅速な参入を目指す企業によって頻繁に選択されています。 なんで?
大企業は、Microsoft 製品のエンタープライズ ライセンスを既に所有しているなど、財務的および組織的な理由から、自社の技術スタックまたはポートフォリオからツールを選択します。 さらに、企業にはよく知られているスタックで作業することを熱望する社内の .NET 開発者がいることがよくあります。 それを考慮すると、Xamarin は確かに良い選択かもしれません。
フラッターはどうですか? Google が開発したクロスプラットフォーム ソフトウェア開発キットを使用すると、はるかに用途の広いソリューションを作成できます。 複数の方法で顧客にリーチできる 1 つの共有コードベース? チェックしました! 一度に開発された魅力的で強力にパーソナライズされたモバイル、Web、およびデスクトップ アプリケーションはありますか? チェックしました!
最後になりましたが、時間、柔軟性、およびコスト効率です。 Flutter ライブラリとコンポーネントの豊富なコレクションにより、Xamarin の場合よりも開発が高速になります。 さらに、Flutter は、たとえばライブラリやモジュールとして、既存のネイティブ アプリに統合できます。 言い換えると? Flutter でアプリケーション全体を一度に書き直す必要はありません。これは、時間とコストの管理の観点から間違いなく大きな利点です。
Xamarin と Flutter に関する最終的な考え

上記の 2 つのフレームワークのトレンド チャートをご覧ください。 何が見えますか? そうです。Xamarin は Flutter ほど人気がありませんでした。 Google によって開発されたフレームワークは、伝道者と実践者の熱心なコミュニティをすぐに集め、驚異的なペースで真のモバイル テクノロジ リーダーになりました。 なんで?
Flutter は、エンド ユーザーにリーチするための一般的ではない他の方法を探している開発者、スタートアップ企業、ビジネス オーナーの注目をすぐに集めました。 しかし、Xamarin はどうでしょうか。

これは安全な賭けです。現在、Xamarin は停滞期にあります。 おそらく、Xamarin で開発されたアプリケーションは、.NET MAUI、Blazor、さらには Flutter などの他のフレームワークに書き直す必要があります。 先を見据えると、Flutter ははるかに優れた安全な選択肢です。 まだ納得できませんか? BMW、eBay、Groupon、Nubank、Alibaba、Abbey Road Studios の印象的な企業リストをご覧ください。 これらは、Flutter を使用してデジタル製品をすでに開発している企業の一部です。