.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」をご覧ください。

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

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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