.NETとXamarinの統合、クラウドネイティブ対応はどうなるのか――2021年11月ローンチ、.NET 6の最新情報.NET 5モダナイズ入門(終)

既存の.NET Frameworkアプリの.NET 5への移行に関する考慮事項やレガシーアプリのモダナイゼーションについて解説する連載。最終回は、2021年11月ローンチ予定の.NET 6の最新情報について、Microsoft Build 2021の主な発表からお伝えする。

» 2021年06月17日 05時00分 公開
[鈴木友宏NTTデータ先端技術株式会社]

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

 既存の.NET Frameworkアプリの.NET 5への移行に関する考慮事項やレガシーアプリのモダナイゼーションについて解説する本連載「.NET 5モダナイズ入門」。最終回となる今回は、今後の.NETについての最新情報をお伝えします。

見えてきた.NET 6の概要

 Microsoftの開発者向け年次イベント「Microsoft Build」が日本時間2021年5月26〜28日に開催されました。2021年の11月にローンチ予定の「.NET 6」については「Preview 4」が公開され、最新情報が発表されました。

 大きな方針としては、.NET 6はクロスプラットフォーム対応の強化、クラウド対応の強化、実行速度のさらなる向上が予定されています。「アプリコードはよりシンプルに」という点も強化されています。

 これまで同様、デスクトップアプリ、モバイルアプリ、Webアプリそれぞれの開発者が異なるワークロードのアプリを開発する際のハードルが可能な限り低くなるように、さまざまなフレームワークを提供することに注力されています。

 なお、.NET 6はLTS(Long Term Support)リリースなので、約3年間のサポートが約束されています。現在のLTSリリース「.NET Core 3.1」のサポート終了は2022年12月3日なので、残りのサポート期間が短くなっています。.NET 6がローンチされる2021年11月以降にリリースを予定しているシステムなら、.NET 6の情報はとても興味深いものとなるでしょう。

 詳細はセッション動画「.NET 6 deep dive; what's new and what's coming | OD485」をご覧ください。

 以下、Microsoft Build 2021の.NET6に関する主な発表を紹介します。

.NETとXamarinの統合

 .NET 5でリリースされるはずだった「.NETとXamarinの統合」が完了します。これによってSDKが統合され、iOS、Android、Macのプロジェクトにおいても.csprojファイルがSDKスタイルに統一されます。ターゲットフレームワークモニカー(TFM)は、「net6.0-ios」「net6.0-android」「net6.0-macos」のような名称になります。

 .NET 5のときのおさらいですが、「net6.0」のTFMは、どのプラットフォーム上でも実行できるコードで使用されます。このTFMには通常、クロスプラットフォームで機能する技術のみが含まれます。

 「net6.0-windows」「net6.0-ios」「net6.0-android」のTFMは、クロスプラットフォームで機能する技術に加えて、特定のOS固有バインディングを含みます。

 これにより、.NET 6のSDKは、全てのプラットフォームで共通のベースクラスライブラリ(BCL)と、プラットフォーム固有の機能ごとにパッケージ化され、必要なものが選択されてインストールされるようになり、歴史的背景により複雑だったSDKの構成がシンプルになります(もちろん、シンプルになるのは利用者目線の参照ライブラリの話であり、SDKの実装をひもといていくとまだまだ複雑な構成になっていますが……)。

C# 10の提供

 .NET 6ではC# 10が利用できます。なお言語の詳細については、筆者の専門分野ではないので触れません。

各プラットフォームにおける開発の選択肢が広がる

 これまで、Win32アプリならWindows FormsやWPF(Windows Presentation Foundation)、WebアプリならASP.NETやBlazor、モバイルアプリならXamarin.Formsといった、プラットフォームのワークロードごとに異なる固有の技術の習得が必要でした。

 それぞれのワークロードのアプリは全て同じC#でコーディングできますが、利用するSDKの構成は異なっており、アプリごとのコーディング方法の作法もかなり違いました。

 .NET 6では「.NET Multi-platform App UI」(.NET MAUI)や「Blazor desktop apps」がサポートされ、クロスプラットフォームのアプリ開発環境がさらに強化されると同時に他のワークロードへのアプローチが容易になりました。

 デスクトップアプリ開発者がモバイルアプリを開発するような場合、最終的にはモバイルアプリのアーキテクチャに対する深い理解が必要ですが、最初の一歩が踏み出しやすくなるのは、とてもうれしいことです。

 それぞれの対応ワークロードは表の通りです。

WinUI Mac Catalyst(※1) iOS Android
.NET MAUI
Blazor desktop apps ×(※2) ×(※2)

※1:Mac Catalystは、iPad AppとMac Appでコードを共有する技術です。これにより、iPad向けのアプリにMac用のコードを追加するだけで比較的簡単にMacネイティブアプリとして動かせます。

※2:前身の「Mobile Blazor Bindings」ではiOSとAndroidのサポートがありました。今後対応予定なのかどうかは残念ながら詳しい情報がありませんが、Microsoft Build 2021のセッション内では「まずはWindowsとMacにおけるリッチなデスクトップアプリのシナリオをサポートします」とコメントがあったので、今後のサポートがあるかもしれません。

 .NET MAUIはXamarin.Formsの進化版なのでXamarin.Formsと同じように利用できると考えて問題ありません。今回公開された新機能は下記の通りです。

  • iOS、Android、Mac Catalystのプロジェクトが1つに統合され、ビルドのプロファイルでプラットフォームを選択できる
  • スプラッシュスクリーンの定義が1カ所の記述に統合された(MauiSplashScreen)
  • プラットフォームネイティブのパフォーマンスを維持しながら、プロジェクト内のアセットを参照できるようになった(MauiAsset)
  • BlazorWebView(後述)

 RazorのUIエレメントは.NET MAUIのUIエレメントに対応しており、.NET MAUIではXAMLでUIを記述します。Blazor desktop appsは乱暴にいえば、それをRazorで記述できる技術です。Webアプリ開発者による、リッチクライアントとオフラインアプリの開発にフォーカスしています。

 Blazor desktop appsの特長は下記の通りです。

  • .NET MAUIのBlazorWebView上にRazorでUIを記述できる
  • ネイティブアプリ同様にネイティブのAPIやファイルシステムにフルアクセスが可能
  • マルチスレッド対応
  • .NETランタイムによるメモリ管理の最適化

 詳細は参考情報「Announcing .NET MAUI Preview 4」をご覧ください。

クラウドネイティブ対応の機能強化

 Microsoft Build 2021では「Minimal Web API」が紹介されました。これまでASP.NET MVCでAPIを記述する場合、初期化のプロセスが多く、100行以上のコードが必要です。その分、起動にも時間がかかりました。Minimal Web APIでは、これが30行程度に削減されて起動時間も高速化しました。

 Minimal Web APIに関しては、数年前から同様のコンセプトのものを個人的に開発した方がおり、GitHubにサンプルコードもありますが、今回公式として実現した形です。

 例えばクラウド上で自動スケールさせるような場合、初期化プロセスが短いことは大きなメリットです。また、軽量なAPIをさっと書けることはモックAPIを簡単に作成する場合などにもメリットがあるので、便利な新機能といえます。

Hot Reloadのサポート

 これまで、Xamarin.Forms、WPF、UWP(Universal Windows Platform)のXAMLでサポートされていたHot Reloadが、WPF、Windows Forms、.NET MAUI(Preview)、ASP.NET Coreアプリのコードビハインド、コンソールアプリ、「WinUI 3」とさまざまな環境で利用可能になります。

 Preview 4の時点では、.NET MAUIはWinUI 3のみサポートし、iOSやAndroid、 Mac Catalystは今後サポートされるようです。

 詳細は参考情報「Introducing the .NET Hot Reload experience for editing code at runtime」をご覧ください。

Appleシリコンのサポート

 .NET 6のSDKインストーラーにはmacOS Arm64対応版が存在するので、Mac上で「Rosetta 2」を介さずにネイティブにASP.NETアプリ、コンソールアプリが動きます。

 Macアプリについても、現在「Visual Studio for Mac」では、Universal(およびAppleシリコン対応のバイナリ)が出力できません。少なくともAppleシリコン対応のバイナリが出力可能になると予想されます。

.NET 6ローンチは2021年11月

 .NET 6は2021年11月に「.NET Conf 2021」でローンチされます。

 その前の大きなマイルストーンとして、夏に「Visual Studio 2022」のパブリックプレビューがローンチされるので、その時点ではかなりの機能をさらに詳細に試すことができるでしょう。

 まずは、Visual Studio 2022パブリックプレビューを楽しみに待ちたいと思います。

筆者紹介

鈴木友宏

NTTデータ先端技術株式会社

Microsoft MVP for Developer Technologies


Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

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

メールマガジン登録

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