.NET Multi-platform App UI（.NET MAUI）の要点まとめ

マイクロソフト社の開発者向けカンファレンス「[Microsoft Build 2020](https://mybuild.microsoft.com/)」で発表された新しいクロスプラットフォームフレームワーク「**.NET Multi-platform App UI（.NET MAUI）**」について、要点をまとめておきます。

## 概要

「**.NET Multi-platform App UI（.NET MAUI）**」は、単一のソースコードで複数のプラットフォームで動作するアプリケーションを開発できるクロスプラットフォームフレームワークです。

[Xamarin](https://docs.microsoft.com/ja-jp/xamarin/) の後継フレームワークとして位置付けられており、名称は変わりましたが「**Xamarin の新バージョン**」と捉えても問題ないと思います。

従来の **XAML** や **MVVM** に加え、新たに [RxUI](https://reactiveui.net/) や **MVU（Model-View-Update）** がサポートされます。

対応プラットフォームは iOS、Android、Linux、Mac、Tizen、Windows ですが、将来的には Blazor（Web）のサポートも計画されているようです。

## ロードマップ

2021 年 11 月 に「.NET 6」と同時に正式リリースされる計画となっています。

| 時期             | リリース               |
|:----------------|:--------------------|
| 2020 年 後半     | Preview 1           |
| 2021 年 初旬     | Preview 2、Preview 3 |
| 2021 年 中旬     | Preview 4、Preview 5 |
| 2021 年 9 月     | RC                  |
| 2021 年 11 月    | GA                  |

## Xamarin から移行すべきか

Xamarin は .NET MAUI が正式リリースされてから 1 年後にサポートが終了します。

そのため、開発したアプリケーションを長期的にサポートしたいのであれば、.NET MAUI へ移行する必要があります。

Xamarin プロジェクトから .NET MAUI プロジェクトへの変換ツールと移行ガイドが提供されます。

## Xamarin.Forms と .NET MAUI の比較

|                 | Xamarin.Forms   | .NET MAUI       |
|:----------------|:----------------|:----------------|
| **プラットフォーム** |                 |                 |
| Android         | API 19 以上     | API 21 以上      |
| iOS             | 9 〜 14         | 10 以上          |
| Linux           | コミュニティ       | コミュニティ         |
| macOS           | コミュニティ       | Microsoft        |
| Tizen           | Samsung        | Samsung          |
| Windows         | UWP Microsoft、WPF コミュニティ | Microsoft |
| **特徴**        |                 |                 |
| レンダラー        | BindableObject に密結合 | 疎結合    |
| アプリケーションモデル |  MVVM, RxUI   | MVVM, RxUI, MVU, Blazor |
| 単一プロジェクト    | ×               | ○               |
| 複数ターゲット     | ×               | ○               |
| 複数ウィンドウ      | ×               | ○               |
| **その他**       |                 |                 |
| .NET            | Xamarin.iOS、Xamarin.Android、Mono、.NET Framework など | .NET 6 以上 |
| 取得方法         | NuGet と Visual Studio Installer | dotnet |
| プロジェクトシステム | Franken-proj    | SDK スタイル      |
| dotnet CLI     | ×               | ○               |
| **ツール**       |                |                 |
| Visual Studio 2019 | ○           | ○               |
| Visual Studio 2019 for Mac | ○   | ○               |
| Visual Studio Code | ×           | ○               |

## 参考

GitHub - dotnet/maui: .NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.
https://github.com/dotnet/maui

Introducing .NET Multi-platform App UI | .NET Blog
https://devblogs.microsoft.com/dotnet/introducing-net-multi-platform-app-ui/



## さいごに

実はマイクロソフト社が関わっているクロスプラットフォームフレームワークは結構たくさんあります。

- [Xamarin](https://docs.microsoft.com/ja-jp/xamarin/)
- [Uno Platform](https://platform.uno/)
- [MobileBlazorBindings](https://github.com/xamarin/MobileBlazorBindings)
- [React Native for Windows](https://github.com/microsoft/react-native-windows)
- .NET Multi-platform App UI（.NET MAUI） ← **NEW**

これだけたくさんあると、どれを選んでよいのか迷ってしまいそうですね・・・

.NET MAUI はまだ開発中ですので、今後の情報に注目していきたいと思います。

また、主要なクロスプラットフォームフレームワークについては、以下の記事にまとめていますので、こちらを参考にしてください。

クロスプラットフォームフレームワーク比較 2021（Flutter, React Native, Xamarin, Unity） - Qiita
https://qiita.com/nskydiving/items/c13c949cc17c6f980a67