.NET 6統合の現状および概要と方向性:.NET 6移行入門(1)
.NET 6の現状を把握し、具体的な移行方法を学ぶ連載。初回は、.NET 6の注目すべき新機能を中心に.NET 6の統合の現状および概要、方向性について。
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.
関連記事
- .NETとXamarinの統合、クラウドネイティブ対応はどうなるのか――2021年11月ローンチ、.NET 6の最新情報
既存の.NET Frameworkアプリの.NET 5への移行に関する考慮事項やレガシーアプリのモダナイゼーションについて解説する連載。最終回は、2021年11月ローンチ予定の.NET 6の最新情報について、Microsoft Build 2021の主な発表からお伝えする。 - Microsoft、「Visual Studio 2022 Preview 1」を公開
Microsoftは、次期「Visual Studio」の最初のプレビュー版「Visual Studio 2022 Preview 1」を公開した。メインプロセスが64bit化されており、メモリ不足に陥ることなく、極めて大規模で複雑なソリューションを扱うことが可能だ。 - 「Windows 11 on ARM」の新ABIをMicrosoftが発表、既存アプリの移植が容易に
Microsoftは、Windows 11 on ARMの新ABI「ARM64EC」を発表した。ARM64ECを利用すると、ARMをサポートしていない依存関係やプラグインを含むアプリケーションも、ARM上で動作させることができ、ネイティブARMアプリへと徐々に移行できる。