.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プラットフォームの統合は、さかのぼること2年半、2019年5月6日にMicrosoftの公式ブログ「Introducing .NET 5」の中で、「.NET - A unified Platform」としてコンセプトが発表され、2020年11月の.NET 5のローンチで統合が完了する予定でした。
.NET - A unified Platformのコンセプトは下記の通りです。
残念ながら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 |
対応プラットフォームに関する詳細はこちらをご覧ください。
新しいプラットフォームのサポートの追加で、TFMが追加されています。TFMとは「ターゲットフレームワークの呼称」という意味で、アプリまたはライブラリで使用できるようにするAPIのセットを表すものです。TFMはcsprojファイルのTargetFrameworkセクションに記載します。
このように.csprojファイル内で定義します。
<TargetFramework>net6.0</TargetFramework>
.NET 6にはOS固有のバインディングを含む下記のTFMがあります。
.NET Framework時代には、TFMから利用できるAPIが直感的に分からず非常に難解でしたが、ベースのTFM(net6.0)とOS固有のフレーバー(windows、Android、iosなど)によって構成されるよう整理され、とても分かりやすくなりました。
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のハイライトは、基本的に4つに集約されます。
Copyright © ITmedia, Inc. All Rights Reserved.