.NET MAUI ~ 新しいUI開発の統合版 ~

はじめに

.NET MAUIは、C#とXAMLを使用したモバイル及びデスクトップアプリ開発のためのフレームワークです。「.NET Multi-Platform App UI」の略称であり、名の通り、クロスプラットフォーム開発を目的としたフレームワークです。
.NET MAUIは、2022年5月に正式版がリリース、「Visual Studio 2022」の最新版(version 17.3以降)でも利用できるようになりました。開発フレームワークの選択肢としては、今後、より存在感のあるものとして検討していく必要があります。

.NET MAUIでできること

● 単一のコードベースのクロスプラットフォームのアプリケーション開発
● 各プラットフォーム(Android、iOS、macOS、Windows)へのAPIを統合して、一貫した方法でのデバイス機能の使用
● 各プラットフォームのネイティブアプリとしてコンパイルされることで、高いパフォーマンスを実現
● .NET MAUI Blazor(BlazorWebView)によるWebアプリケーションを.NET MAUI上で動作
● 単一のプロジェクトとして保守が容易
● .NET ホットリロードを利用した迅速な開発
● MVVMパターンのサポートによる、クリーンで保守性の高いコードの設計/開発が可能

.NET MAUIの仕組み・特徴

maui structure

.NET MAUIフレームワークの全体像についてご説明いたします。

● Applicationから.NET MAUIのAPIを利用可能です。

● .NET MAUIで注目すべき点として、各プラットフォーム別の「.NET for ~」ライブラリではなく、統一的に利用できる点が挙げられます。尚、個別の対応が必要な場合は、直接「.NET for ~」を利用することも可能です。

● .NET MAUIはこれらがすべてBCL(.NETの基本クラス)上に成り立っています。この点が、これまでの技術とのある意味最も大きな変更点です。

● 下回りについては、従来から変更なくMonoが基盤です。

従来技術視点で見た.NET MAUI

Xamarin開発からの視点

● これまでMicrosoftベースの技術では、Xamarinがありました。一言で言うと、.NET MAUIは、Xamarin(Xamarin.Forms)の進化版です。一方で、これまでの(その他の)開発フレームワークの進化と同様、類似点もあれば相違点もあり、将来的に移植する場合には、こちらも相応のワークが発生することとなります。
● クロスプラットフォーム開発としてある意味特別なフレームワークとして利用していたXamarinのAPI(e.g. Xamarin.Forms)は、本当の意味で.NETのAPI(e.g. Microsoft.MAUI)に変更されました。それは見た目の問題なく、内部的には.NETのベーシッククラス(BCL)との統合がなされています。
● 開発において、リソース管理では、Xamarinではプラットフォーム毎にプロジェクトを管理する必要がありましたが、.NET MAUIでは単一のプロジェクトで管理しながら複数のプラットフォームをターゲットにすることができます。ホットリロードへの対応も完全(XAMLも、コードも)になり、便利になりました。
● 今後、新たにプロダクトやシステムを開発する上で、XamarinかMAUIか選択する上ではあまり迷う必要がありません。.NET MAUIです。現時点では苦労もありますが、XamarinはMAUIへ置き換わっていくと考えています。

デスクトップアプリケーション(WPFアプリ)からの視点

● 既に熟成し安定しているWPFフレームワーク。新たにシングルプラットフォーム(windows)をターゲットとしてデスクトップアプリケーションを開発する場合、フレームワークは何を選択するべきかは難しい判断です。(詳細は略とさせて頂きますが)品質を早期に安定化させる必要のある開発は、WPFが現実解でありしばらくは続くと思います。将来的にマルチプラットフォームを検討する、開発期間がある程度長い場合には.NET MAUIも検討に加えると良いと考えます。(2022年末時点)
● 既にWPF資産を持つ企業にとって、.NET MAUIをどう捉えるべきか。プロダクトのライフサイクルが今後も5年10年と考えるものであれば、.NET MAUIは注目するべきフレームワークです。現段階で、.NET MAUIは、WPFとXamarinを統合・置換していくものとして位置づけられています。同様にC#とXAMLの基本技術で作られ、MVVMパターンの伝統も踏襲しています。よって、技術移行は比較的容易と考えられますが、その移行のタイミングと妥当性を判断するのはもう少し先と考えます。(実際にどうなるのかは開発ユーザの状況次第、未来のことは分からないこともあります)

WEBアプリケーションからの視点

● .NET MAUI Blazor(BlazorWebView)という技術により、ASP.NET Core Blazorで作られたWebアプリケーションを.NET MAUIで動作させることも可能です。
● Webの資産を使うことができるので、AngularやReact等のフレームワークで作られたアプリケーションからの移行先となり得ます。
● SPAアプリケーション等はこれまで以上に素直に(簡単に).NET MAUIクロスプラットフォームアプリとして埋め込むことが可能です。

まとめ

何が適切かは、個別で検討するべきことですが、少なくとも、C#,XAMLの何らかのソフトウェア資産、エンジニアが存在する場合には、.NET MAUIは有望な選択となり得ます。

エイムネクストでご提供するサービス

当社はVisual Studio6.0時代そして.NET初期から現在に至るまで、顧客の製品開発に対してコードレベルから改善・開発の支援をしてきております。

ご相談の例

● 適切なフレームワークの選定に迷う場合
● 既存アプリケーションの全部または一部をマルチプラットフォーム化する検討をしている場合
● WEBアプリケーション(SPAアプリ)をネイティブアプリに変換したい場合
● 開発や保守のリソースにお悩みの場合

弊社が可能なこと

● クロスプラットフォーム / マルチプラットフォーム化の移行計画策定
コードレベルから分析を行い計画策定の支援を行います。
● 既存フレームワークから .NET MAUIをはじめとしたクロスプラットフォームへの移行
アプリケーションを新しいフレームワークへ変換します。弊社の経験・ノウハウを活かして移行工数を最小化します。
● 部分的なフレームワーク移行検討
既存のフレームワークと新しいフレームワークを共存した形でメリットがある領域のみ移行を行い、共存可能な技術検討を行います。
● アプリケーションの保守支援(既存開発リソースを新製品開発へ投入)
貴社の現在の開発リソースを新しい技術に取り組むご支援を行いながら、現在のアプリケーションの保守体制を弊社が補強させて頂きます。

関連リンク

ソフトウェア性能改善サービス リファクタリング支援 ソフトウェア開発支援 WPF導入支援 Silverlightで構築したシステムの移行支援 Xamarin ~クロスプラットフォーム開発~ Microsoft系技術