マイクロソフト「.NET 7」正式リリース。パフォーマンス改善、Linux対応向上、コンテナ生成、ネイティブコンパイラ搭載など新機能
今回は「マイクロソフト「.NET 7」正式リリース。パフォーマンス改善、Linux対応向上、コンテナ生成、ネイティブコンパイラ搭載など新機能」についてご紹介します。
関連ワード (単一、現時点、速度等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
マイクロソフトは同社の包括的なアプリケーションフレームワーク「.NET 7」の正式リリースを発表しました。
It’s here – and it’s blazing fast… Announcing .NET 7, the fastest .NET yet with new enhancements for .NET MAUI, #ASPNET Core, Cloud Native, ARM64, Performance improvements, and more. Learn more: https://t.co/kGinyOaLBQ pic.twitter.com/yzCWEzlgzF
— .NET (@dotnet) November 8, 2022
.NETは、マイクロソフトがWindows用のアプリケーションフレームワークとして開発してきた「.NET Framework」と、オープンソースとして開発を開始した「.NET Core」フレームワーク、モバイル向けの「Xamarin」を統合し、デスクトップアプリケーションからモバイルアプリケーション、クラウドネイティブ、ゲーム、IoTなど、あらゆるアプリケーションを包括的にカバーするフレームワークです。

昨年、初の長期サポート版(LTS:Long Term Support)となる.NET 6がリリースされました。今回の.NET 7は非LTS版で、来年リリース予定の.NET 8が次のLTS版になる予定です。
マイクロソフトが11月9日未明(日本時間)から開催中のオンラインイベント「.NET Conf 2022」の基調講演では、.NET 7のハイライトとしていくつかの新機能が紹介されました。

1000以上のパフォーマンス改善。ARM64の性能がx64並に
.NET 7では1000以上のパフォーマンス改善が行われたとのこと。

例えばgRPCに関してはJavaやRustなどよりも高速に扱えるとしています。

.NET 7におけるARM64の性能改善にも注力した結果、x64とほぼ遜色ない結果になったとしています。

Linuxでの.NETのサポートが充実
Ubuntuが.NETのネイティブサポート開始を発表したことで、aptコマンドによる簡単なインストールやアップデートが可能になっています。また、パッケージマネージャやシェルなどを省いて徹底的にスリム化し、.NETに最適化したUbuntu 22.04 LTSのコンテナイメージの配布も行います。
これらによりLinuxにおいても.NETのサポートが充実されています。

参考:Ubuntuが.NET 6/ASP.NETをネイティブサポートすると発表。最適化されたコンテナイメージをCanonicalが配布開始
また、.NET 7にはコンテナビルド機能が組み込まれたため、外部ツールに依存せずにDockerコンテナを生成可能になりました。

参考:マイクロソフト、「.NET 7」にDockerコンテナイメージ生成機能を搭載、Dockerファイル不要に
ネイティブバイナリを生成する事前コンパイラ搭載
.NET 7ではコンパイルによってスタンドアロンで実行可能なネイティブバイナリを生成する事前コンパイラも搭載されました。WindowsにはCOFF形式、LinuxにはELF形式、macOSにはMach-O形式のバイナリを生成します。現時点ではコンソール用アプリの生成にのみ対応しているとのことです。
参考:マイクロソフト、次の.NET 7にネイティブコンパイラを搭載する見通しを明らかに
WebAssembly .NETランタイム
これまでBlazor WebAssemblyでのみ使われていたWebAssembly版.NETランタイムが、「WebAssembly .NETランタイム」として単独でJavaScriptから呼び出せるようになりました。
参考:.NET 7ではWebAssembly製.NETランタイムを単独で利用可能にし、WebブラウザやNode.jsなどでJavaScriptから.NETを簡単に呼び出せるように
.NET MAUI for .NET 7
.NET 7と同時に、単一コードでクロスプラットフォーム対応のユーザーインターフェイスを構成できる「.NET MAUI for .NET 7」(.NET MAUI 7)もリリースされました。
.NET MAUIは5月にバージョン1.0に到達し正式リリースされたばかり。短期間でのバージョンアップとなりました。

.NET MAUI 7では、地図を表示するMap Controlの追加、モバイルデバイスでのレンダリング速度の向上、デスクトップアプリでのウィンドウサイズや位置、コンテキストメニュー、ツールチップ、ホバーポインタ、右クリックなどの機能向上が含まれています。
安定利用はLTS版の.NET 6を、新機能は.NET 7を
.NETは1年ごとにメジャーバージョンアップが行われ、2年ごとに登場する偶数バージョンがLTS版となります。
前述の通り現時点でのLTS版は昨年リリースされた.NET 6であるため、安定した利用を想定するのであれば.NET 6を利用し、最新機能を試すのであれば.NET 7を利用するのが適切でしょう。