Microsoftが.NET 6プレビュー版を公開したが…まだ混乱状態。ただし、Apple Siliconのネイティブサポートは

Table of Contents

Microsoftが.NET 6プレビュー版を公開したが…まだ混乱状態。ただし、Apple Siliconのネイティブサポートは

Microsoft は、新たに統合されたアプリケーション プラットフォームの最初の長期サポート リリースである .NET 6.0 の最初のプレビューを出荷しました。ネイティブ Apple Silicon サポート、ARM64 上のデスクトップ アプリケーション、ASP.NET Core などの主要なフレームワークに対する多数の更新が約束されています。

プログラムマネージャーのリチャード・ランダー氏は、新リリースに関する長文の投稿の中で、.NET 6を「.NET 5から始まった.NET統合計画の最終段階」と表現しました。プレビュー版はWindows、macOS、Linuxで利用可能ですが、デスクトップアプリケーションフレームワークであるWindows FormsとWindows Presentation FoundationはWindowsのみ対応です。

ここで言及されている主な「最終部分」は、モバイルとmacOS向けのXamarinクロスプラットフォームツールの統合です。Xamarinブランドはほぼ消滅し、プラットフォーム間でユーザーインターフェース(UI)コードを共有するアプリケーション向けのXamarin Formsは、現在MAUI(Multi-Platform App UI)というキャッチーな名前で呼ばれています。しかし、本当に統合されているかどうかは定義の問題です。

Xamarin テクノロジは現在 .NET SDK の一部ですが、オプションの「ワークロード」であり、単一の基本クラス ライブラリ (BCL) など、Xamarin と他の .NET フレームワーク間で共有されるコードが増えています。

.NET 6 SDKの最初のプレビューをインストールする

.NET 6 SDKの最初のプレビューをインストールする

とはいえ、.NET 6 SDKには現在2つの.NETランタイムが含まれています。メインストリーム版であるCoreCLR(共通言語ランタイム)と、XamarinランタイムであるMonoです。これら2つのランタイムが存在するため、この統合には表面的な側面がいくつか存在します。また、長年の課題となっているもう1つの問題として、Xamarin、そして現在のMAUIで使用されるXAML方言が、Windows Presentation Foundation(WPF)で使用されるXAMLと大きく異なることが挙げられます。

Microsoftは、クロスプラットフォームGUIアプリケーションへの新たなアプローチとして、BlazorというWebフレームワークも投入しています。これは、ランタイム(実際にはMonoランタイム)をWebAssembly(Wasm)にコンパイルすることで、ブラウザーで.NETを実行できるWebフレームワークです。Blazorは、ビジュアルコントロールにHTMLとCSSを使用します。.NET 6のWasm対応Blazorは、ランタイムをWasmにコンパイルして.NETアセンブリを実行するのではなく、Wasmに直接コンパイルする点で改良されています。

.NET 6.0では、Blazorデスクトップアプリケーションが導入されました。これはWebテクノロジーを利用しながらも、ネイティブアプリケーションとして実行できるようにラップされています。「これは主に、ユーザーにリッチなクライアントエクスペリエンスとオフラインエクスペリエンスを提供したいWeb開発者を対象としています」とランダー氏は述べています。

BlazorデスクトップアプリケーションのコンテナはMAUIによって提供されるため、HTMLコントロールと並行して、またはHTMLコントロールの代わりに、ネイティブコントロールをオプションで追加できます。また、WPFなどの他のフレームワーク内に「Blazorの島」を構築することも可能です。AndroidおよびiOS向けのBlazorも計画されています。

WPF アプリケーションにおける「Blazor の島」

WPF アプリケーションにおける「Blazor の島」

「.NET 6の主な目標は、WindowsとmacOSのデスクトッププラットフォームをサポートすることですが、AndroidとiOSでも確実にコードが実行されますが、その時点では完全にはサポートされない可能性があります」とMicrosoftのエンジニア、エイロン・リプトン氏は語った。

BlazorとMAUIの魅力は、フルスタックC#であるため、開発者はC#と.NETのみで作業できる点です。問題は、Microsoftがあまりにも多様なアプローチを採用しているため、その努力と開発者への訴求力が薄れてしまうことです。また、.NET Core向けの軽量なクロスプラットフォームGUIも依然として不足しています。

ARMの利用は今後増加する見込みで、MicrosoftはWindowsのARM64ビルドにWindows FormsとWPFのサポートを組み込むことで、.NETサポートを強化しています。開発者はApple Siliconもターゲットにできるようになりましたが、Lander氏は「Apple Siliconには相当なコード変更が必要だったため、.NET 5へのバックポートは検討していません」と述べています。

この新しいCPUをサポートするために、Microsoftはセキュリティ強化を目的としたAppleの「強化ランタイム」の要件を満たす必要があります。ただし、Microsoftはユニバーサルバイナリをサポートしません。「今回のリリースでは、.NETアプリ用のユニバーサルバイナリを公開するためのワークフローは提供しません。.NET 7でこの必要性を再検討します」とLander氏は述べています。

これらの追加機能と Xamarin の統合により、.NET 6 は、既存の Windows および Linux プラットフォームに加えて、Android、iOS、Apple Silicon、Windows ARM64 を含む、以前よりも多くのプラットフォームを正式に対象とすることになりました。

.NET 6 のもう一つの新機能は、静的リンクを使用した Windows と macOS 向けの単一ファイルアプリケーションです。以前は、これは Linux でのみ可能でした。

.NETの最も重要な部分は、Webアプリケーションとマイクロサービス向けのASP.NET Coreでしょう。計画には、開発者の生産性向上に役立つホットリロード機能も含まれています。ホットリロードにより、実行中のアプリケーションを再起動したり状態を失わずにコード変更を適用できます。

もう一つの機能はマイクロAPIです。これは、ASP.NET MVCコントローラーをベースとした既存のWeb APIフレームワークを使い始める際に、多くのことを学ぶ必要があるという、.NET開発者にとっての課題に対処します。既存のフレームワークから機能を抽出し、独立して使用できるようにすることで、「新しい軽量プログラミングモデル」を形成するという考え方です。

Microsoft は、HTTP/3 および QUIC のサポートを追加し、最新の JavaScript フレームワークで動作するシングルページ アプリケーションのサポートを強化することも計画しています。

Lander氏は、コンテナデプロイメントの最適化強化など、.NET 6.0における多くの裏側での変更点について説明しました。もう一つの大きな変更点は、.NETスレッドプールの新しい実装です。これはC#で記述されたマネージド実装になりました。目標の一つは、これをCoreCLRとMonoの両方から利用できるようにし、動作を統一することです。

.NETプラットフォームの歴史は古く、MicrosoftがJavaに対抗する最初のプレビュー版を公開してから20年以上、2002年2月の最初の正式リリースから19年が経ちました。.NETをオープンソースでクロスプラットフォームな.NET Coreとして再構築し、Microsoftがモバイルアプリケーション向けにXamarinを買収したことで、プラットフォームは常に最新の状態に保たれています。

しかし、課題は、Windowsプラットフォームと共に成長してきた開発者層という中心層を超えて、その魅力を広げることです。その鍵となるのはASP.NET Coreであり、開発者がクロスプラットフォームGUIアプリケーションを構築する方法の急増(そして依然としてJavaScriptやFlutterに後れを取っている)ではありません。だからこそ、数々の新機能の中でも、新規開発者向けにASP.NET Coreフレームワークを簡素化するというアイデアこそが、最も重要なものとなるでしょう。

Microsoft は、現在から 11 月に予定されている一般提供リリースまでの間、新しい .NET 6 プレビューを「規則的に、毎月 1 回」リリースすることを約束しています。®

Discover More