Microsoftは昨日、**.NET 11 RC2(Release Candidate 2)**をリリースしました。.NET 11の2つ目のリリース候補版です。正式版のリリースが近づくなか、今回のアップデートから.NET 11の最終的な姿が見えてきました。
.NETを使って開発している方なら、ここ数年、Microsoftが安定したペースで.NETをアップデートしていることに気づいているかもしれません。バックエンドサービスからデスクトップアプリ、モバイル開発に至るまで、ほぼすべてのバージョンに注目すべき変更が含まれています。
ただし、今回のRC2に特に革新的な機能が加わったわけではありません。これまでのプレビュー版をベースに、パフォーマンスや開発体験、安定性をさらに改善しています。簡単に言うと、開発をより便利にし、プログラムの実行をより安定させ、既存の技術を時代に合わせて進化させるアップデートです。
それでは、今回のアップデートで注目すべき点を見ていきましょう。
1. .NET Runtime:安定性の問題を重点的に改善
Runtimeとは、.NETプログラムの実行に必要な基盤環境です。普段、業務コードを書いているとあまり意識しないかもしれませんが、プログラムが安定して動作するか、メモリ管理に問題がないかといった点は、Runtimeに関係しています。
今回のRC2では、基盤部分に関するいくつかの問題が主に修正されました。たとえば、一部のLinux ARM64環境で発生する可能性があったクラッシュが修正され、複数のCPUグループを持つWindows環境でのガベージコレクションの問題にも対処されています。また、AssemblyLoadContextを何度もアンロードした後、一部のジェネリック仮想メソッド呼び出しが正常に動作しなくなる可能性があった問題も解決されました。
もう一つ、少し特徴的な変更として、iOSとtvOSでは一部のファイルロック機構が既定で無効になりました。理由はシンプルです。これまでは、アプリがバックグラウンドに移行したときに特定のファイルロックを保持していると、OSによってアプリが強制終了される可能性がありました。既定の動作を変更したのは、こうした事態を避けるためです。
こうした変更は華やかさには欠けるかもしれません。しかし、実際に運用されているシステムにとっては、クラッシュが1回減ることや、原因不明のフリーズが1つなくなることのほうが、新しいAPIがいくつか増えるより価値があることも少なくありません。
2. 基本クラスライブラリ:データ処理とセキュリティ機能をさらに強化
.NET 11 RC2では、基本クラスライブラリにも便利な機能がいくつか追加されています。
まず、CBORデータの読み取り機能が強化されました。CBORは、簡単に言えばJSONに似た、よりコンパクトなバイナリデータ形式です。IoTやデバイス間通信などでよく使われます。これまでは、この種のデータを読み取る際、場合によってはデータ全体をあらかじめ用意しておく必要がありました。今回、分割して読み取れるようになったため、すべてのデータを一度に連続したメモリ領域へ格納する必要がなくなりました。ストリーミング転送や大規模データの処理がより便利になります。
また、Microsoftは暗号化機能も引き続き強化し、実験的なハイブリッド鍵カプセル化とHPKE関連のAPIを追加したほか、ML-KEMの利用範囲も拡張しました。これらの技術は、将来の耐量子暗号に関係しています。一部の機能はまだ実験段階ですが、Microsoftが将来のセキュリティ要件に向けて、早い段階から準備を進めていることがわかります。
そのほか、データ検証もより柔軟になりました。たとえば、よく使われるDataAnnotationsでは、パラメーター付きのエラーメッセージをより簡単に生成できるようになっています。多言語対応が必要な業務システムでは便利です。HTTP/2では、初期の同時ストリーム数を設定できるようになり、接続確立時の同時処理をより適切に制御できます。
3. .NET SDK:小さなプログラムをより手軽に作成
今回のSDKの変更は多くありませんが、実用的な細かい改善が含まれています。
.NETでは、単一ファイルのC#プログラムを開発する際の体験がますます重視されています。簡単なツールや自動化スクリプト、一時的なテストコードを作る場合、必ずしも完全なプロジェクトを作成する必要はありません。
RC2では、この開発スタイルがさらに改善されました。たとえば、単一ファイル内の構成ディレクティブで空白を含む文字列を使えるようになり、パッケージ参照などのディレクティブに、より多くのメタデータを追加できるようになりました。つまり、C#ファイルが1つだけの場合でも、これまではプロジェクトファイルがなければ設定できなかった内容の一部を扱えるようになります。
また、起動プロファイルを使用してdotnet runを実行する際に、コマンドライン引数内のMSBuildプロパティを解析できるようになりました。
こうした改善は比較的小さなものですが、目指す方向は明確です。C#を大規模な企業システムの開発だけでなく、スクリプトや小さなツールの作成にも、より手軽に使えるようにすることです。
4. ASP.NET Core:Web開発をさらに成熟させる
多くの.NET開発者にとって、最も気になるのはASP.NET Coreでしょう。
今回のアップデートは、主にBlazor、データ検証、Webサービスの安定性に関するものです。
たとえば、BlazorのQuickGridコンポーネントでは、AnchorModeとItemComparerの2つのパラメーターが、実験的なAPIとして扱われなくなりました。これは、Blazorで管理システムを開発しているチームにとって、関連機能のAPIがより安定したことを意味します。
データ検証では、Microsoftが以前のプレビュー版で導入した一部のインターフェイスを調整し、新しい検証メッセージのフォーマット方法を統一しました。また、カスタム検証属性やC#のunion型に関連する問題も修正されています。
サーバー側では、KestrelがHTTP/2リクエストを処理する際、一部の仕様に準拠していなかったコンテンツ処理の問題を修正し、セキュリティをさらに高めました。
注意すべき点として、Razorのランタイムコンパイル関連APIは、引き続き非推奨化が進められています。Microsoftは、既定のビルド時コンパイルを利用し、開発中はHot Reloadで効率を高める方法を推奨しています。
全体として、**今回のASP.NET Coreには、改めて学び直す必要があるような大きな新機能はありません。フレームワークの成熟度と信頼性を引き続き高める内容です。**Web APIや企業向けバックエンド、Blazorアプリを開発するチームにとっては、むしろ好ましいことです。
5. .NET MAUI:モバイル開発に役立つ変更が多数
これまでのアップデートが基盤寄りの内容だったとすれば、.NET MAUIには、実際に違いを感じられる変更がいくつもあります。
まず、MAUIプロジェクトを作成する際に、XAMLを必須とせず、C#で画面を記述する方法を選べるようになりました。たとえば、次のコマンドを実行すると、画面やナビゲーションをC#で記述するプロジェクトを作成できます。
dotnet new maui -n MyApp --ui csharp
もちろん、既定の選択肢は引き続きXAMLです。MicrosoftはXAMLを廃止するのではなく、開発者に別の選択肢を提供しています。
次に、XAMLの開発体験も改善されています。式のサポート、コード生成、Hot Reloadなどが強化されました。簡単に言うと、画面コードを変更した際の開発やデバッグがよりスムーズになります。ただし、一部の機能はまだプレビュー段階です。
Androidでは、API 37.2とJDK 25のサポートが追加され、ビルド時間やインストールパッケージのサイズも引き続き最適化されています。公式のテストケースでは、繰り返しビルドする際の所要時間が約31.8%短縮され、APKのサイズが約4.67%小さくなりました。もちろん、これは特定のテスト環境での結果であり、実際のプロジェクトでどれだけ改善するかは状況によります。
Appleプラットフォームでは、Apple Icon Composerのアイコンリソースが新たにサポートされ、ナビゲーションの仕組みも調整されました。ただし、特に注意が必要なのは、今回のAppleプラットフォーム向け開発にはXcode 27.0が必要であり、既存プロジェクトの一部では、アプリのライフサイクルに関する設定の調整も必要になることです。
MAUIでクロスプラットフォームアプリを開発しているチームは、今回の変更を詳しく確認する価値があります。
6. WinForms:既存技術もよりモダンに
WinFormsはかなり古い技術なのに、まだアップデートする必要があるのか、と思う方もいるかもしれません。
答えは「あります」。そしてMicrosoftは今回、WinFormsの画面表示を実際に改善しています。
.NET 11では、WinFormsに新しいビジュアルスタイルの選択肢が用意されました。開発者は一部のコントロールを、より現代的な見た目にできます。たとえば、ボタン、テキストボックス、チェックボックスなどの表示が順次改善されています。
興味深いのは、CheckBoxやRadioButtonを、現代のソフトウェアでよく見かけるトグルスイッチ風に表示できるようになったことです。
そのほか、新しいバージョンでは、コントロールの枠線やフォーカス状態、システムのテーマカラー、Windowsのアクセシビリティ設定への対応も改善されています。
ただし、新しいスタイルがすべてのコントロールで完全にサポートされているわけではありません。DataGridViewやToolStripのような複雑なコントロールでは、既存プログラムへの影響を避けるため、現時点では従来の描画方式が優先されています。
Microsoftは、既存システムの見た目をモダンにするために、開発者がプロジェクト全体を作り直さなければならない状況を望んでいないようです。WinFormsを使い続けている多くの企業内システムにとって、既存の業務コードを維持しながら、段階的に画面を改善できることは大きな魅力です。
今、.NET 11にアップグレードするべき?
今回のアップデートを見て、最も気になるのは「今、アップグレードするべきか?」という点でしょう。
新しいプロジェクトを開発している場合や、.NET 11の新機能を早めに試したい場合は、テスト用のプロジェクトでRC2を試してみてもよいでしょう。特にMAUI、WinForms、ASP.NET Core関連の変更は注目です。
一方、すでに本番環境で安定稼働しているプロジェクトなら、候補版へのアップグレードを急ぐ必要はありません。RC2はまだ正式版ではなく、一部の機能では互換性に関する調整があるためです。特にモバイルプラットフォーム、画面描画、非推奨化が進んでいる一部のAPIには注意が必要です。
私の見方では、.NET 11の方向性は非常に明確です。新機能の追求だけにとどまらず、開発体験、クロスプラットフォーム機能、パフォーマンスの最適化、長期的な安定性をより重視しています。
C#と.NETを使う開発者にとって、これは手元の技術ツールがますます成熟していることを意味します。Web API、企業システム、デスクトップソフトウェア、クロスプラットフォームのモバイルアプリのいずれを開発する場合でも、.NETは進化を続けています。
すでに.NET 10を使用している方は、.NET 11の変更点を確認し、今後のアップグレードに向けて準備を始めるとよいでしょう。
(Translated by GPT)
元のリンク:https://mp.weixin.qq.com/s/CAF9FcDfvqqIehipYH_d3w?token=583169277&lang=zh_CN&wt.mc_id=MVP_325642