先月のBuild 2020開催期間中、Microsoftは、デバイスネイティブなアプリケーションを開発するためのマルチプラットフォームフレームワークである.NET MAUIのロードマップを発表した。新フレームワークはXamarin.Formsの進化形に相当し、Android、iOS、macOS、Windows用のネイティブ機能を提供する。
MAUIは、.NETプラットフォームの統合に向けた、Microsoftの近年の開発活動の一環である。同社プログラムマネジメントディレクタのScott Hunter氏は、次のように述べている。
.NETによる統合デバイスアプリケーションの開発がどのようなものになるかを考えると、AndroidやiOSからWindows、macOSに至るまで、さまざまなプラットフォームにわたって数多くのデバイスが使用されていることに思い当たります。このニーズに応えるために、まさにそれを実現するファーストクラスのUIフレームワークを、今回ここに発表できることを大変うれしく思います — .NET Mutli-platform App UI、通称.NET MAUIです。
.NET MAUIは、Xamarin.Formsツールキットを発展させたもので、アプリケーションのパフォーマンス向上とマルチプラットフォームアプリ開発の簡略化を目標としている。このフレームワークは、すべての最新オペレーティングシステム(Android、iOS、macOS、Windows)のネイティブAPIにアクセスする組込リソースによる、単一のコードベースを提供する。単一のプロジェクト構造に、必要に応じてプラットフォーム毎のリソースやソースコードファイルを加えることで、マルチプラットフォームアプリケーションの開発が可能になるのだ。
(提供: Microsoft)
Xamarin.Formsに対する改良点(初期のカスタマリサーチに基づくものと報告されている)の内容は未確定だが、重要な機能のいくつかはすでに決定している。最も関連性のあるもののひとつは、アプリケーションの開発パターンに関わるものだ — MAUIはModel-View-View-Model(MVVM、ReactiveUIを含む)とModel-View-Update(MVU、現在のXamarin.Formsではサポートされていない)をサポートする予定である。レンダラにも大幅な変更が加えられている — BindableObjectとの強い結合が廃止され、疎結合になることで、Coreへの依存性が排除される。初期機能リストにはdotnet CLIも含まれている他、Blazorアプリケーションや、Visual Studio Code用のツールもサポートされる予定である(現在のXamarin.FormsはVisual Studio 2019とVisual Studio for Mac用のツールのみ)。
ネイティブレベルの相互互換性を目標としてXamarin.Forms上に構築されたフレームワークは、.NET MAUIが初めてではない。Uno Platformは同じ思想で、モバイルとデスクトッププラットフォームのネイティブ開発を実現している。主要機能のリストはMAUIのものとほぼ同じだが、この2つには重要な違いがある — Unoが単一コードベースでサポートする対象はブラウザアプリである、と明確化されている点だ(WebAssemblyを使用する)。MAUIもBlazorをサポートに含めてはいるが、SignalRとWebAssembly Blazorアプリの両方をサポートするものと期待される。ただし、現在の(試験的な)mobile bindings for Blazorでは、HTMLではなく、Razor構文をベースとしたUI定義のセットを使用している点に注意しておく必要がある。つまり、Blazorには2セットのUIコンポーネント定義 — Webアプリを対象としたものと、モバイルアプリを対象としたもの — がある、ということだ。現時点では、Webアプリの明示的なサポートに関する記述は、MAUIのロードマップには見当たらない。
MAUIの最初のパブリックプレビュー版は今年末、一般供与(GA)は.NET 6と同時期(2021年11月)が目標となっている。Xamarin.Formsから.NET MAUIへの移行は9月、バージョン5.0のリリース後に開始される予定である。現在は、議論への参加、フィードバックの提供、MAUIプロジェクトへのコントリビューションが、GitHub経由ですでに可能になっている。