.NET 6統合の現状および概要と方向性.NET 6移行入門(1)

.NET 6の現状を把握し、具体的な移行方法を学ぶ連載。初回は、.NET 6の注目すべき新機能を中心に.NET 6の統合の現状および概要、方向性について。

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

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

 2021年11月9〜11日、「.NET Conf 2021」が開催され、「.NET 6」もとうとうローンチされました。偶数リリースの.NET 6はLTS(long-term support)となっており、そろそろ、.NET 6での新規アプリ開発や、既存アプリにおける.NET Frameworkから.NET 6への移行を検討する方も多いことでしょう。本稿では.NET 6の注目すべき新機能を中心に.NET 6の統合の現状および概要、方向性をお伝えします。

.NETプラットフォームの統合

 .NETプラットフォームの統合は、さかのぼること2年半、2019年5月6日にMicrosoftの公式ブログ「Introducing .NET 5」の中で、「.NET - A unified Platform」としてコンセプトが発表され、2020年11月の.NET 5のローンチで統合が完了する予定でした。

 .NET - A unified Platformのコンセプトは下記の通りです。

  • 1つのSDK、1つのランタイム、1つのコードベースで、クラウド、Web、デスクトップ、モバイル、ゲーム、IoT、AIなどのアプリを構築できる
  • .NETを学んだ後は、同じスキルで上記の全てのワークロードを構築できるようになる

 残念ながら2020年の.NET 5では、Xamarinの一部であるAndroid、iOS、およびmacOSの機能の統合は間に合わず、.NET 6での統合と延期されました。今回、.NET 6では、.NET 5で先送りになった統合が完了する予定でしたが、残念ながらまた延期となりました。ただし、今回はPreviewとして利用可能(※1)になっており、完全な統合まであと少しです(それまでは、従来のXamarinが更新され続け、本番用のモバイルアプリの構築にはXamarinが推奨されます)。

(※1)Previewとして、Windows版のVisual Studio 2022から.NET MAUI(※2)が利用可能です(Visual Studio 2022 for Macは未対応)。Visual Studio 2022 for Macでもios、android-aptのワークロード(Microsoft.iOS、Microsoft.Android)がPreviewで利用できます。

(※2).NET MAUIは、.NET Multi-platform App UIの略称です。Xamarin.Formsの後継のAndroid、iOS、macOS、およびWindows用の.NETを使用してネイティブクロスプラットフォームアプリを構築するUIです。

 具体的には、.NET MAUIのローンチが2022年第2四半期の初めを目標に延期されたことにより、.NET 6のiOS、Android、macOS、MacCatalystの各ワークロードのGAも2022年第2四半期の初めに延期となっています。

 あと半年程度で、ついに.NETにおけるプラットフォームの統合が完了し、.NET - A unified Platformが実現します。

 なお、Previewでは既に、Xamarin.Android、Xamarin.iOSの名称ではなく、Microsoft.Android、Microsoft.iOSが使用されています。

サポート

 .NET 6は2021年11年8日にリリースされ、LTSリリースとして3年間サポートされます(2024年11月8日まで)。

Version リリース日 リリースタイプ サポート期限
.NET 6 2021年11年8日 LTS 2024年11年8日
.NET 5 2020年11年10日 Current 2022年5年8日
.NET Core 3.1 2019年12年3日 LTS 2022年12年3日

 .NET 6は.NET Frameworkと.NET Coreが統合されてから最初のLTSリリースです。.NET Frameworkからの移行をどうすべきかについても気になるところでしょう(移行すべきかどうかの考え方については後述します)。

 サポートに関する詳細はこちらをご覧ください。

対応プラットフォーム

 動作プラットフォームはこちらの通りです。

Windows x86、x64、Arm64(クライアントのみ)
Linux x64、Arm32、Arm64
Android x64、Arm32、Arm64
iOS x64(シミュレーター)、Arm32、Arm64
Mac x64、Arm64

 対応プラットフォームに関する詳細はこちらをご覧ください。

.NET 6のターゲットフレームワークモニカ(TFM)

 新しいプラットフォームのサポートの追加で、TFMが追加されています。TFMとは「ターゲットフレームワークの呼称」という意味で、アプリまたはライブラリで使用できるようにするAPIのセットを表すものです。TFMはcsprojファイルのTargetFrameworkセクションに記載します。

 このように.csprojファイル内で定義します。

<TargetFramework>net6.0</TargetFramework>

 .NET 6にはOS固有のバインディングを含む下記のTFMがあります。

  • net6.0
  • net6.0-android
  • net6.0-ios
  • net6.0-maccatalyst
  • net6.0-macos
  • net6.0-tvos
  • net6.0-windows

 .NET Framework時代には、TFMから利用できるAPIが直感的に分からず非常に難解でしたが、ベースのTFM(net6.0)とOS固有のフレーバー(windows、Android、iosなど)によって構成されるよう整理され、とても分かりやすくなりました。

SDKワークロード

 TFMが、主要な機能とオプションの組み合わせで表現されることに合わせて、SDK自体も主要な機能と各ワークロードのオプションに分割されています。.NET 6では新たに追加された、.NET MAUI、Android、iOS、WebAssemblyが別のワークロードとして用意されています。これは、これまでのような全ての機能を含むモノリシックSDKでは、ビルド時間が長くなり、配布サイズも大きくなってしまうからです。

 SDKワークロードに関する詳細はこちらをご覧ください。

 「dotnet workload list」コマンドを実行すると、このようにインストールされている全てのワークロードが一覧表示されます。

Installed Workload Ids
----------------------
android-apt
ios
maccatalyst
macos
maui
tvos
wasm-tools

 .NET 7では、ASP.NETやWindowsデスクトップなどのコンポーネントもオプションになる予定です。

.NET 6のハイライト

 .NET 6のハイライトは、基本的に4つに集約されます。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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