ニュース
Microsoft、「.NET 6」をリリース ~Apple M1にも対応、史上最速の「.NET」
「C# 10」と「F# 6」が利用可能
2021年11月9日 09:28
米Microsoftは11月8日(現地時間)、「.NET 6」をリリースした。現在、公式サイト「dotnet.microsoft.com」よりソフトウェア開発キット(SDK)とランタイムをダウンロード可能。Windows、macOS、Linuxで利用できる。
「.NET」は、Microsoftがオープンソースで提供するクロスプラットフォーム対応のアプリケーション開発基盤。「.NET 6」はその最新版で、3年間のサポートが付いた長期サポート(LTS)リリースとなっている。同じバージョンを長く使い続けたい場合は、「.NET 6」の選択がお勧めだ。「.NET 6」での開発をサポートした「Visual Studio 2022」や、「.NET 6」ベースの「PowerShell 7.2」も同時リリースされている。
「.NET 6」の最大の魅力は、パフォーマンスの向上だ。プロファイルに基づく動的な最適化(Dynamic Profile-guided Optimization、Dynamic PGO)と呼ばれる技術が採用されており、たとえばTechEmpowerのMVCベンチマークではPGOにより1秒あたりに処理できるリクエスト数が26%(51万→64万)にまで改善されたという。
Dynamic PGOは「Tiered Compilation」という考えに基づいており、まず一度高速なコンパイルを行い(Tier 0)、その動作を解析(プロファイル)した結果を利用して、さらに最適化のためのコンパイルを行う(Tier 1)。Tier 0には処理を観察するコードが含まれるため、少し起動時間が長くなるが、Tier 1まで実行されれば大幅なパフォーマンスが向上が見込める。同社の本番環境でもすでに採用されているとのことで、効果はお墨付きだ。
そのほかにもさまざまな最適化が施されており、とくにI/Oはかなり高速化された。実行時間やレイテンシ、メモリ使用量の削減が見込める。クラウドコンピューティングではこれらの要素がコストの削減に直結することもあるので、重要な改善といえるだろう。
プラットフォームサポートの面では、Apple Silicon(Arm64)のネイティブサポートが目玉。Windows Arm64対応も改善されている。
プログラミング言語関連では、「C# 10」と「F# 6」がサポートされた。「C# 10」では「global using」ディレクティブ、ファイルスコープの名前空間、レコード構造体などが新たにサポートされ、ソースコードをよりコンパクトに記述できるようになった。たとえば、以下のような「C# 9」コードは、
using System;
using
:
:
namespace MyNamespace
{
class MyClass
{
// 実装
}
}
このように書き換えることができる。ここ最近の改善を反映して、テンプレートもシンプルなものに改められているとのこと。
// プロジェクト共通の using は global using を記述しておけば不要
// ファイルで namespace が一つしか使われていなければ、ネストを削減できる
namespace MyNamespace;
class MyClass
{
// 実装
}
「F# 6」でもC#や他の.NET言語との相互運用性を高めるためにタスク構文が導入されたほか、インデックス作成構文が他の言語と共通となり、これから学ぶ開発者にとって親しみやすくなった。
ほかにも、アプリのリビルドと再起動をスキップしてコードの変更を実行中のアプリに反映させる「ホットリロード」は開発効率を大きく高める。HTTP/3や「OpenSSL 3」への対応、単一ファイルアプリがLinuxだけでなくWindows/Macでも利用できるようになったのも大きな改善といえる。