連載
» 2022年07月28日 05時00分 公開

「.NET MAUI(Multi-platform App UI)」とは――Xamarn.Formsからの改良ポイント.NET 6移行入門(6)

.NET 6の現状を把握し、具体的な移行方法を学ぶ連載。今回は、.NET MAUIの概要とXamarn.Formsからの改良ポイントについてまとめる。

[鈴木友宏,NTTデータ先端技術株式会社]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

.NET MAUIリリース

 2022年5月23日(米国時間)、.NET MAUIがGA(一般提供)されました。Microsoftは「.NET MAUIは、.NET Multi-platform App UIの略称で、モバイル、タブレット、デスクトップにまたがるネイティブデバイスのアプリケーションを構築するフレームワークです」と紹介しています。

 .NET MAUI自体はGAされましたが、2022年6月26日の原稿執筆では開発環境「Visual Studio」は、Windows版も、Mac版も最新のプレビュー版での対応です。こちらは程なく安定版のVisual Studioでも対応されるでしょう。

 .NET MAUIはXamarin.Formsから全く違う製品名に変わりましたが、何が違うのでしょうか? 分かりやすくいえば、.NET MAUIはXamarin.Formsの改良版です。本稿では、.NET MAUIはXamarin.Formsと比べて、どこが改良されたのか、具体的に解説します。

Xamarin.Formsと.NET MAUIの主な違い

 Xamarin.Formsと.NET MAUIの主な違いを表でまとめました。

Xamarin.Forms .NET MAUI
プロジェクトの構造 非SDKスタイル(Franken-proj)
プラットフォームごとに個別のプロジェクトを使用
SDKスタイル
単一のプロジェクトで、複数プラットフォームをターゲットにできる
ツールチェーン .NET Framework .NET CLI
リソース管理 プラットフォームごとに個別管理
プラットフォーム固有のデバイスの解像度に応じたイメージを準備する必要がある
単一のプロジェクト内で一元管理
SVGを準備すれば各プラットフォームの解像度のPNGに変換でされる
スタートアップ 独自(Appクラス) Generic Host対応
ホットリロード 完全なXAMLホットリロード
(SDK 5.xおよびVisual Studio 2019 16.9以降)
完全な.NETホットリロード
完全なXAMLホットリロード
UIコントロールアーキテクチャ レンダラー ハンドラー

 以降、.NET MAUIの改良点の中で、特に注目のポイントを紹介します。

.NET MAUIのプロジェクト構成

 .NET MAUIのプロジェクトは下図のようになっています。

 Xamarin.Formsのような「単一の共有プロジェクト+複数のプラットフォーム固有プロジェクト」の構成ではなく、単一のプロジェクトで、複数プラットフォームをターゲットにできるようになりました。

Xamarin.Formsのアーキテクチャに起因する問題点

 Xamarin.Formsは登場当時、画期的なフレームワークでした。ですが、利用が進むにつれてアーキテクチャに起因する問題点も顕在化しました。

Xamarin.Formsのレンダラーアーキテクチャ

 下図のようにレンダラーは共有プロジェクトのUIコントロール実装に依存しています。

Xamarin.Formsレンダラーアーキテクチャの問題点

  • レンダラーがXamarin.FormsのUIコンポーネントと密結合している
  • アセンブリスキャンとリフレクションというコストの大きい処理を使用してUIコントロールのレンダラーを取得するので遅い
  • 共有プロジェクトからネイティブUIコントロールをカスタマイズする場合、たった1つのプロパティの変更でも、共有プロジェクトとネイティブプロジェクトにまたがるレンダリングの仕組みを理解した上で、定型的な多くのコードを記述する必要があり、非常に手間がかかる

.NET MAUIの最大の変更点

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。