.NET 11 は、正式リリースに向けてさらに一歩前進しました。Microsoft は最近、.NET 11 Release Candidate 1(RC1)をリリースしました。RC 段階に入ったということは、多くの機能がいよいよ“収束”し始め、API も徐々に安定してきたことを意味します。
今回の更新は、C#、ASP.NET Core、.NET MAUI、Windows Forms、基盤クラスライブラリ、Runtime にまたがっています。
C# 15 が、正式に既定の言語バージョンに
.NET 11 で新規プロジェクトを作成すると、C# 15 が既定の言語バージョンになりました。
これまでプレビュー段階で登場していた新しい構文も、ほぼ安定してきています。Union Types、拡張インデクサー、ラベル付きの break / continue などが含まれます。中でも注目すべきなのが Union Types です。簡単に言えば、ある変数が「これらの型のいずれか一つだけになり得る」と明確に表現できるようになります。
これは、API の戻り値や状態モデリングのようなシナリオで非常に便利で、これまで大量に自作していたラッパー型のコードを減らすことにもつながります。
ASP.NET Core が本格的に AI UI に取り組み始めた
今回の ASP.NET Core における非常に興味深い変化の一つは、実験的な Blazor AI Components が追加されたことです。
これは、単なるチャットボックスを提供するものではありません。Microsoft が解決しようとしているのは、Agent アプリにおける一連の対話体験です。たとえば、ストリーミング出力、ツール呼び出しの表示、ユーザー承認、タスク進捗、そして Agent とフロントエンド間の状態同期などです。
新しい Microsoft.AspNetCore.Components.AI には、IChatClient をベースに Agent UI を構築するための既製コンポーネントが用意されています。
言い換えると、今後 Blazor で Copilot のようなもの、AI Assistant、あるいは社内向け Agent を作る場合、フロントエンド部分はかなり作りやすくなります。ただし現時点ではこのコンポーネント群はまだ Experimental であり、まずは試してみる用途に向いています。本番の中核システムにいきなり採用するのは、まだ推奨されません。
SignalR のログイン状態更新がよりスムーズに
もう一つ、実用的な変更は SignalR から来ています。
以前は、ユーザーの Token が期限切れになったり、権限が変わったりすると、接続を張り直す必要があることがよくありました。.NET 11 RC1 では、SignalR の Authentication Refresh API がほぼ固まり、クライアントは 接続を切断せずに Access Token を更新 できるようになりました。Blazor Server も新しいユーザー認証情報と権限を同期できます。オンライン共同作業、リアルタイムのバックエンド、ダッシュボードのような長時間接続アプリでは、より自然な体験になります。
OpenAPI も、あなたのコードをより“理解”するようになった
ASP.NET Core API に [Obsolete] が付いている場合、OpenAPI ドキュメントを生成すると、現在は自動的に deprecated: true としてマークされます。
以前は、コードがすでに「この API は使わないで」と伝えていても、API ドキュメント側はまったくそれを把握していないことがありました。今では両者がようやく一致します。大量の API を保守するチームにとっては、見た目には小さくても、実際にはかなり助かる改善です。
.NET MAUI: 今回の重点は「より速く、より小さく、よりテストしやすく」
.NET MAUI の RC1 では多くの更新がありますが、要するに次の 3 つに集約できます。
より速く、より小さく、よりテストしやすく。
まず、dotnet test が Android、iOS、tvOS、macOS、Mac Catalyst をさらに広くカバーするようになりました。モバイル端末のテストでも、開発者は使い慣れた .NET のテストツールチェーンをそのまま使え、プラットフォームごとに別のやり方へ切り替える必要がありません。Android 側でもビルド性能の改善が続いています。
Microsoft が示したテストデータによると、一部の増分ビルドでは数十秒かかっていたものが十数秒に短縮され、さらに一部のケースでは約 40 秒から約 11 秒まで下がっています。
同時に、Android のパッケージサイズやアプリ起動速度も引き続き改善されています。加えて、実用的な小さな改善もいくつかあります。たとえば、スプラッシュ画面をダークモード向けに個別設定できるようになり、XAML Hot Reload はより安定し、Android のステータスバーの色も MAUI ページのテーマに自然に追従できるようになりました。どれも「発表会のタイトルにはなりにくいが、毎日の開発では快適さが増す」類の更新です。
WinForms も忘れられていない
.NET 11 RC1 では、Windows Forms に非常に実用的な KioskModeManager が追加されました。
セルフサービス端末、デジタルサイネージ、工場設備の画面、POS、展示ブース向けアプリを作ったことがあるなら、これはすぐに理解できるはずです。
この機能は、全画面表示、最前面固定、システムのスリープ防止、マウスの自動非表示、キーボードによる全画面終了など、よくある要件への対応を支援します。以前はこれらを自前で寄せ集めることが多かったですが、今ではより統一された方法が用意されました。WinForms のモダンなビジュアルスタイルも引き続き改善されています。
WinForms はすでに“古い友人”ですが、Microsoft はまだ引退させるつもりはないようです。
基盤クラスライブラリがクロスプラットフォーム対応をさらに補強
.NET 11 RC1 の基盤クラスライブラリにも、いくつもの変更があります。
たとえば Process は、Linux や macOS のプロセスに POSIX Signal をより直接送信できるようになり、プロセスが正常終了したのか、それとも Signal によって終了したのかを取得できます。
Linux 上の DNS API もさらに強化され、SRV、MX、TXT、CNAME など、より多くの DNS レコードを解決できるようになりました。
System.Text.Json も引き続き進化しています。
より多くの数値型に対応するだけでなく、C# Union Types の JSON シリアル化および逆シリアル化のサポートも整備され始めています。
C# 15 の新しい言語機能は単独で存在しているわけではなく、.NET の基盤全体もそれに合わせて同時に追随していることが分かります。
Runtime: ハードウェアを使える場所では、できるだけハードウェアを使う
Runtime における今回の最も直接的な性能改善の一つは System.Half です。CPU が FP16 命令をサポートしている場合、JIT はハードウェア命令を直接使って、一部の Half 精度浮動小数点演算と型変換を実行できるようになりました。アプリケーションコードを変更する必要はありません。
そのほか、Linux と macOS にはプロセス内 Crash Reporting の機能も追加され、Unix プラットフォーム上でのクラッシュ診断がさらに充実しました。
最後に
RC1 から見えてくるのは、.NET 11 がすでに「次々に新機能を追加する段階」から「機能を安定させる段階」へ移り始めているということです。
C# 15 の言語機能は実装段階に入り、ASP.NET Core は Agent UI を自らの領域に取り込み始め、MAUI は性能と開発体験の問題を引き続き解消し、Runtime と基盤クラスライブラリはクロスプラットフォーム能力をさらに補強しています。
.NET 開発者であれば、今は .NET 11 RC1 を先行体験するのにちょうどよい時期です。もちろん、RC はまだ最終正式版ではありません。本番環境へのアップグレードは、引き続きプロジェクトの状況に応じて慎重に判断する必要があります。ただし、次世代 .NET がどこへ向かうのかを知りたいなら、RC1 はかなり明確な答えを示しています。
よりモダンな C#、より完成された AI 開発体験、そしてクロスプラットフォームをさらに深く掘り下げること。
(Translated by GPT)
元のリンク:https://mp.weixin.qq.com/s/noAWP-p8V6O7z3ueu4YgzA?token=308772467&lang=zh_CN&wt.mc_id=MVP_325642