.NET MAUI とは

.NET Multi-Platform App UI (.NET MAUI) は、C# と XAML を使用して、ネイティブのモバイル アプリやデスクトップ アプリを作成するためのクロスプラットフォーム フレームワークです。

重要

.NET マルチプラットフォーム アプリ UI (.NET MAUI) は現在プレビュー段階です。 このコンテンツは、リリース前に大幅に変更される可能性のあるプレリリース製品に関連しています。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。

.NET MAUI を使用すると、1 つの共有コード ベースからAndroid、iOS、macOS、Windowsで実行できるアプリを開発できます。

.NET MAUI supported platforms.

.NET MAUI はオープン ソースであり、Xamarin.Forms の進化であり、モバイルからデスクトップのシナリオまで拡張され、UI コントロールはパフォーマンスと拡張性のために一から再構築されます。 Xamarin.Forms を使用してクロスプラットフォーム ユーザー インターフェイスを構築したことがある場合は、.NET MAUI と多くの類似点に気付くでしょう。 ただし、相違点もいくつかあります。 .NET MAUI を使用すると、1 つのプロジェクトを使用してマルチプラットフォーム アプリを作成できますが、必要に応じてプラットフォーム固有のソース コードとリソースを追加できます。 .NET MAUI の主な目的の 1 つは、1 つのコード ベースで、できるだけ多くのアプリ ロジックと UI レイアウトを実装できるようにすることです。

WHO .NET MAUI は

.NET MAUI は、次の目的を持つ開発者向けです。

  • VISUAL STUDIOの単一の共有コード ベースから、XAML と C# でクロスプラットフォーム アプリを作成します。
  • プラットフォーム間で UI のレイアウトと設計を共有する。
  • プラットフォーム間でコード、テスト、ビジネス ロジックを共有します。

.NET MAUI のしくみ

.NET MAUI は、Android、iOS、macOS、Windows API を 1 つの API に統合し、1 回だけ実行できる単一の API に統合すると同時に、各ネイティブ プラットフォームのあらゆる側面に深いアクセスを提供します。

.NET 6 には、アプリを作成するための一連のプラットフォーム固有のフレームワークが用意されています。.NET for Android、.NET for iOS、.NET for macOS、Windows UI 3 (WinUI 3) ライブラリです。 これらのフレームワークはすべて、同じ .NET 6 基本クラス ライブラリ (BCL) にアクセスできます。 このライブラリは、基になるプラットフォームの詳細をコードから抽象化します。 BCL は、コードの実行環境を提供するために .NET ランタイムに依存します。 Android、iOS、macOSの場合、環境は .NET ランタイムの実装である Mono によって実装されます。 Windowsでは、Win32 によって実行環境が提供されます。

BCL を使用すると、さまざまなプラットフォームで実行されているアプリが共通のビジネス ロジックを共有できるようになりますが、さまざまなプラットフォームにはアプリのユーザー インターフェイスを定義するさまざまな方法があり、ユーザー インターフェイスの要素の通信と相互運用の方法を指定するためのさまざまなモデルが用意されています。 適切なプラットフォーム固有のフレームワーク (.NET for Android、.NET for iOS、.NET for macOS、または WinUI 3) を使用してプラットフォームごとに UI を作成できますが、このアプローチでは、デバイスの個々のファミリのコード ベースを維持する必要があります。

.NET MAUI は、モバイル アプリとデスクトップ アプリ用の UI を構築するための単一のフレームワークを提供します。 次の図は、.NET MAUI アプリのアーキテクチャの概要を示しています。

.NET MAUI architecture diagram.

.NET MAUI アプリでは、主に .NET MAUI API (1) と対話するコードを記述します。 その後、.NET MAUI はネイティブ プラットフォーム API を直接使用します (3)。 さらに、必要に応じて、アプリ コードでプラットフォーム API (2) を直接実行できます。

.NET MAUI アプリは、PC または Mac で記述し、ネイティブ アプリ パッケージにコンパイルできます。

  • Android .NET MAUI を使用してビルドされたアプリは、C# から中間言語 (IL) にコンパイルされ、その後、アプリの起動時にネイティブ アセンブリに Just-In-Time (JIT) コンパイルされます。
  • .NET MAUI を使用してビルドされたiOSアプリは、C# からネイティブ ARM アセンブリ コードに完全に先行コンパイル (AOT) されます。
  • .NET MAUI を使用してビルドされたアプリmacOS、Mac Catalyst を使用します。これは、UIKit で構築されたiOS アプリをデスクトップに取り込み、必要に応じて追加の AppKit とプラットフォーム API で拡張する Apple のソリューションです。
  • .NET MAUI を使用してビルドされたWindowsアプリでは、WINDOWS UI 3 (WinUI 3) ライブラリを使用して、Windows デスクトップを対象とするネイティブ アプリを作成します。 WinUI 3 の詳細については、「Windows UI ライブラリ」を参照してください。

注意

iOSとmacOS用のアプリをビルドするには、Mac が必要です。

.NET MAUI が提供するもの

.NET MAUI は、データの表示、アクションの開始、アクティビティの示し、コレクションの表示、データの選択などを行うために使用できるコントロールのコレクションを提供します。 .NET MAUI には、コントロールのコレクションに加えて、次の機能も用意されています。

  • ページをデザインするための複雑なレイアウト エンジン。
  • 引き出しなどの豊富なナビゲーション タイプを作成するための複数のページ タイプ。
  • よりエレガントで保守性の高い開発パターンのためのデータ バインディングのサポート。
  • UI 要素の表示方法を強化するためにハンドラーをカスタマイズする機能。
  • ネイティブ デバイス機能にアクセスするためのクロスプラットフォーム API。 これらの API を使用すると、アプリは GPS、加速度計、バッテリ、ネットワークの状態などのデバイス機能にアクセスできます。 詳細については、 デバイス機能のクロスプラットフォーム API を参照してください。
  • 図形とイメージの描画と描画、合成操作、およびグラフィカル オブジェクト変換をサポートする描画キャンバスを提供するクロスプラットフォーム グラフィックス機能。
  • マルチターゲットを使用して、Android、iOS、macOS、およびWindowsをターゲットにする 1 つのプロジェクト システム。 詳細については、「 .NET MAUI Single プロジェクト」を参照してください。
  • .NET ホット リロード。アプリの実行中に XAML とマネージド ソース コードの両方を変更し、アプリをリビルドせずに変更の結果を確認できるようにします。 詳細については、「 .NET ホット リロード」を参照してください。

デバイス機能のクロスプラットフォーム API

.NET MAUI は、ネイティブ デバイス機能用のクロスプラットフォーム API を提供します。 デバイス機能にアクセスするための .NET MAUI によって提供される機能の例を次に示します。

  • デバイス上の加速度計、コンパス、ジャイロスコープなどのセンサーへのアクセス。
  • デバイスのネットワーク接続状態を確認し、変更を検出する機能。
  • アプリが実行されているデバイスに関する情報を指定します。
  • アプリ間で、システム クリップボードにテキストをコピーして貼り付けます。
  • デバイスから 1 つまたは複数のファイルを選択します。
  • データをキーと値のペアとして安全にMicrosoft Storeします。
  • 組み込みのテキスト読み上げエンジンを使用して、デバイスからテキストを読み取ります。
  • 特定のアプリに登録された URL へのコールバックをリッスンするブラウザー ベースの認証フローを開始します。

単一プロジェクト

.NET MAUI 単一プロジェクトでは、アプリの開発時に通常発生するプラットフォーム固有の開発エクスペリエンスを利用し、Android、iOS、macOS、Windowsをターゲットにできる単一の共有プロジェクトに抽象化します。

.NET MAUI 単一プロジェクトでは、対象となるプラットフォームに関係なく、簡素化された一貫性のあるクロスプラットフォーム開発エクスペリエンスが提供されます。 .NET MAUI 単一プロジェクトには、次の機能があります。

  • Android、iOS、macOS、Windowsをターゲットにできる 1 つの共有プロジェクト。
  • .NET MAUI アプリを実行するための簡略化されたデバッグ ターゲットの選択。
  • 1 つのプロジェクト内の共有リソース ファイル。
  • アプリのタイトル、ID、バージョンを指定する 1 つのアプリ マニフェスト。
  • 必要に応じて、プラットフォーム固有の API とツールにアクセスできます。
  • 1 つのクロスプラットフォーム アプリ エントリ ポイント。

.NET MAUI 単一プロジェクトは、マルチターゲット化と .NET 6 での SDK スタイルのプロジェクトの使用を使用して有効になります。 .NET MAUI 単一プロジェクトの詳細については、「 .NET MAUI 単一プロジェクト」を参照してください。

ホット リロード

.NET MAUI には、.NET ホット リロードのサポートが含まれています。これにより、アプリの実行中にマネージド ソース コードを変更できます。手動で一時停止またはブレークポイントにヒットする必要はありません。 その後、コードの編集を、再コンパイルせずに実行中のアプリに適用できます。

.NET MAUI には、XAML ホット リロードのサポートが含まれています。これにより、XAML ファイルを保存し、再コンパイルせずに実行中のアプリに反映された変更を確認できます。 さらに、ナビゲーションの状態とデータが維持されるため、アプリ内の場所を失うことなく、UI をすばやく反復処理できます。