.NETMAUIとXamarinの将来を理解する

2000年、マイクロソフトのプロの開発者会議は、.NETの舞台を整え、過去20年間に使用してきたテクノロジの多くを紹介することを目的としていました。20年後、Microsoftは.NETとその多くの開発者フレームワークの無秩序な広がりでリセットボタンを押したと言っても過言ではありません。Build 2020で、同社はProject Reunionの発表に基づいて、今後20年間のロードマップを設定しました。

未来は1つの.NETです

.NETのオープンソース化と.NETFoundationの創設に、今日のルーツを6年ほど振り返ることができます。プラットフォームには、古い.NETFrameworkから新しいレガシーフリーのモジュラー.NETCoreへの移行を通じてプラットフォームを管理するための独立した組織が必要でした。その移行には、Windows以上のものを含める必要がありました。 XamarinのモバイルクライアントとUnityの3Dゲームプラットフォームを導入し、.NETの範囲をmacOSとLinuxに拡大することを目指す必要がありました。

これにより、2020年になり、古い.NET Framework4から新しい.NET5に切り替えられます。これは、おなじみの.NET FrameworkAPIと名前空間のほとんどを備えた.NETCoreの次の大きなリリースです。Microsoftがエンジニアリングの取り組みをXamarinのMonoから.NET5にシフトするにつれて、この変革により、MicrosoftのモバイルおよびクロスプラットフォームのXamarin開発ツールに大きな変化が始まります。

.NET6でMonoと.NETを統合

1つ明らかなことは、MicrosoftがXamarinへの投資とXamarinへの投資の両方を破棄していないということです。モノはまだどこにも行きません。多くの大きなプロジェクトがMonoに依存しており、XamarinはAndroidとiOSの新しいリリースをサポートするためにMonoを進化させ続けるでしょう。ただし、新しい機能と新しいAPI、およびより広範なクロスプラットフォーム開発モデルが必要な場合、将来の開発戦略は.NET5と継続的な毎年の.NETリリーススケジュールに基づきます。完全に統合された.NETはまだ少し先のことであり、.NET 5は大きな前進となるでしょうが、2021年後半、次の長期サポートリリースである.NET6の計画されたリリースまで統合は見られません。

目的は、Monoを完全に置き換えることではなく、.NET Coreなどのプラットフォームレベルの機能ですでに行われている作業に基づいて、1つの共通のクラスライブラリセットと.NETCoreおよびMono用の単一のツールチェーンを用意することです。ライブラリ。それは興味深い質問を残します:クロスプラットフォームUIは収束した将来にどのように見えるでしょうか?UnoPlatformのWinUI3のポートにはクロスプラットフォームオプションがあり、WebAssemblyおよびmacOSに加えてモバイルデバイスがサポートされていますが、MicrosoftがWinUIで出荷しているコントロールはWindowsデスクトップコントロールであり、デスクトップおよびタブレットアプリケーションで最適に機能します。

.NET用のクロスプラットフォームUIフレームワークの進化

Xamarinは、クロスプラットフォーム開発のためにWinUIの代替手段を提供します。そのクロスプラットフォーム戦略は、独自のクロスプラットフォームXamarinフォームに加えて、iOSとAndroidの両方のネイティブコントロールに対するXAMLサポートの組み合わせに基づいています。Xamarin Formsは、それ自体がMVVM(model-view-viewmodel)開発プラットフォームであり、Androidのマテリアルデザイン言語に基づいた独自のコントロールルックアンドフィールを備えています。Xamarin Formsは、iOSアプリとAndroidアプリに一貫したルックアンドフィールを提供すると同時に、ネイティブの機能やサービスへのアクセスを提供します。

さまざまな.NETプラットフォームを統合することを目的とした.NET6を備えた、Xamarin Formsは、.NET用の新しいモバイルUIツールセットと新しいクロスプラットフォームUIフレームワークの論理的な基盤です。マイクロソフトは、Build 2020でこの新しいアプローチを発表し、.NETマルチプラットフォームアプリUI(MAUI)と呼んでいます。

.NET MAUIは、次世代のXamarin Formsであり、開発者が、サポートされている任意のデバイスを対象として、単一のコードベースを使用して単一のVisualStudioプロジェクトでアプリを1回ビルドできるようにすることを目的としています。目的は、簡素化されたプロジェクト構造を提供することです。ターゲットとするプラットフォームごとに個別のプロジェクトを持つ単一のソリューションではなく、MAUIを使用すると、単一のプロジェクトに特定のプラットフォームをターゲットにするために必要なリソースが含まれます。デバイス固有のサービスにアクセスするためにネイティブAPIが必要な場合は、これらをプラットフォームビューにバンドルして、コンパイル時に各プラットフォームのビルドをターゲットにするときに使用できます。プラットフォームコードに加えて、画像やフォントなど、XAMLで使用されるリソースをバンドルして、アプリケーションのすべての要素を1か所で管理できます。

.NET 6に付属する新しいプロジェクトモデルは、クロスプラットフォームアプリで使用されるモジュール、およびコードの構築方法と展開方法により論理的なグループ化を適用するため、このアプローチの鍵となります。ただし、プロジェクトの構造が変更されたとしても、明日作成するコードは今日と非常に似ているはずですが、複数のプラットフォームにデプロイし、プラットフォームAPIとアプリケーション設計リソースの変更で最新の状態に保つのが簡単です。

.NETMAUIへの道

GitHubリポジトリはすでにいくつかの初期実装で開かれていますが、.NET 6 SDKの機能に依存しているため、使用可能な.NETMAUIコードが表示されるまでにはまだ数か月かかります。プレビューが2020年の終わりに出荷されると、取得できるものは、.NETMAUIと並行して開発され続ける既存のXamarinフォームとかなり似ているはずです。重要な変更は、プロジェクトの構造化方法に関するもので、新しい名前空間がXamarin独自の名前空間から.NETのシステムに移動します。

公開されている.NETMAUIのロードマップでは、最初に、現在のXamarin Formsリリースの名前変更に基づいてプレビュービルドを取得し、.NET6の新機能からいくつかの簡略化と新機能を提供することを提案しています。.NETMAUIと.NET6が進化し、2021年夏までにmacOSとWindowsのコントロールがAndroidとiOSに加わるにつれて、2021年中にさらに多くの変更が加えられます。2021年11月のリリースまでに統合アプリケーションを提供できるようになり、リリース候補は2021年9月。

Microsoftは、.NET 6の期間内にXamarinに他の変更を加え、他のXamarinライブラリをSystemに移動し、Xamarin.iOSとXamarin.Androidの名前をiOS用の.NETとAndroid用の.NETに変更することを計画しています。Monoの初期からXamarinの開発を続けてきた私たちにとって少し悲しいとすれば、それは論理的な動きです。

おそらく、より前向きな考え方は、.NETのすべての基盤としてクロスプラットフォームの.NET Coreに移行したことで、MicrosoftがXamarinを吸収するほどではなく、Xamarinが.NETのオープンソースの未来の中心になるということです。 。これはMonoプロジェクトにとって良い遺産です。