<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>.NET 11 | The .NET Blog</title><link>https://thedotnetblog.com/ja/tags/.net-11/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>ja</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Tue, 26 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/ja/tags/.net-11/index.xml" rel="self" type="application/rss+xml"/><item><title>.NET 11がついにプロセスAPIを修正</title><link>https://thedotnetblog.com/ja/news/emiliano-montesdeoca/dotnet-11-process-api-improvements-runandcapturetext/</link><pubDate>Tue, 26 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ja/news/emiliano-montesdeoca/dotnet-11-process-api-improvements-runandcapturetext/</guid><description>System.Diagnostics.Process が年来最大のアップデートを受けます。RunAndCaptureTextAsync、KillOnParentExit、SafeProcessHandle API、標準ハンドルのリダイレクトを完全制御 — デッドロックの定型コードはもう不要。</description><content:encoded>&lt;p&gt;プロセスを起動して出力をキャプチャする必要があった .NET 開発者は誰もが、同じ危険な定型コードの何らかのバリエーションを書いてきました：stdout の非同期読み取り、stderr の非同期読み取り、&lt;code&gt;WaitForExitAsync&lt;/code&gt;、両方のストリームをドレインするのを忘れるとデッドロックが発生する。これは長年知られている落とし穴です。&lt;/p&gt;
&lt;p&gt;.NET 11 がついにこれを適切に修正します。&lt;/p&gt;
&lt;h2 id="runandcapturetextasync"&gt;RunAndCaptureTextAsync&lt;/h2&gt;
&lt;p&gt;主要な追加：プロセスを起動し、stdout と stderr をキャプチャし、デッドロックなしに終了を待機する単一の静的メソッド。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;Process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RunAndCaptureTextAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;dotnet&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;--version&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;StandardOutput&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;1回の呼び出し。手動ストリームドレインなし。注意深く配置した &lt;code&gt;WaitForExit&lt;/code&gt; なし。何かを実行してその出力を得るだけなら、これが求めていた API です。&lt;/p&gt;
&lt;p&gt;出力をキャプチャせずに終了を待ちたい場合のために &lt;code&gt;Process.RunAsync&lt;/code&gt; もあります。&lt;/p&gt;
&lt;h2 id="killonparentexit"&gt;KillOnParentExit&lt;/h2&gt;
&lt;p&gt;起動されたプロセスでよくある問題：親プロセスがクラッシュまたは終了された場合、子プロセスはオーファンとして実行し続けます。&lt;code&gt;KillOnParentExit&lt;/code&gt; を使用すると、プロセス起動時に親プロセスが終了したときに子プロセスも終了することをあらかじめ宣言できます。&lt;/p&gt;
&lt;p&gt;この機能はプラットフォーム固有の方法（Windows ではジョブオブジェクト、Linux では prctl）で存在していましたが、.NET から使用するには p/invoke またはサードパーティライブラリが必要でした。今では &lt;code&gt;ProcessStartInfo&lt;/code&gt; のファーストクラスのプロパティになりました。&lt;/p&gt;
&lt;h2 id="safeprocesshandle-ベースの-api"&gt;SafeProcessHandle ベースの API&lt;/h2&gt;
&lt;p&gt;新しい軽量 API サーフェスは、完全な &lt;code&gt;Process&lt;/code&gt; クラスではなく &lt;code&gt;SafeProcessHandle&lt;/code&gt; を中心に構築されています。完全な &lt;code&gt;Process&lt;/code&gt; クラスは多くの状態を抱えており、トリムが困難です — &lt;code&gt;SafeProcessHandle&lt;/code&gt; パスは出力サイズを最小化する必要があるアプリケーション（WASM、ネイティブ AOT）にとってよりトリマーフレンドリーです。&lt;/p&gt;
&lt;h2 id="ハンドル継承の完全制御"&gt;ハンドル継承の完全制御&lt;/h2&gt;
&lt;p&gt;このアップデートでは、子プロセスが継承するハンドルと標準ハンドルのリダイレクト方法に対するきめ細かい制御も追加されます。以前は stdin/stdout/stderr をリダイレクトできましたが、OS レベルでどのハンドルを継承するかを正確に指定することはできませんでした。新しい API はそのコントロールを公開します。&lt;/p&gt;
&lt;h2 id="なぜ重要か"&gt;なぜ重要か&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Process&lt;/code&gt; クラスはツール、ビルドシステム、テストランナー、および他の実行ファイルを呼び出すあらゆるアプリケーションで使用されています。古い API サーフェスは .NET Framework 時代のものであり、時代遅れになっていました。これは破壊的変更ではありません — 古い API は引き続き動作します — しかし新しいコードは新しいサーフェスを優先すべきです。&lt;/p&gt;
&lt;p&gt;トリムされたアプリケーションや AOT コンパイルシナリオでは、&lt;code&gt;SafeProcessHandle&lt;/code&gt; パスが特に歓迎されます。古い &lt;code&gt;Process&lt;/code&gt; クラスはトリムを複雑にするリフレクション重いコードを多く持ち込んでいました。&lt;/p&gt;
&lt;p&gt;元の記事: &lt;a href="https://devblogs.microsoft.com/dotnet/process-api-improvements-in-dotnet-11/"&gt;Process API Improvements in .NET 11&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>.NET 11 Preview 4: MCPサーバー テンプレート、Runtime-Async ライブラリ、プロセス API</title><link>https://thedotnetblog.com/ja/news/emiliano-montesdeoca/dotnet-11-preview-4-mcp-template-runtime-async-process-api/</link><pubDate>Mon, 25 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ja/news/emiliano-montesdeoca/dotnet-11-preview-4-mcp-template-runtime-async-process-api/</guid><description>.NET 11 Preview 4 がリリースされました。注目点: SDK の MCP サーバー テンプレート、runtime-async でコンパイルされたランタイム ライブラリ、モバイル向け dotnet watch、プロセス API の大幅な拡張。</description><content:encoded>&lt;p&gt;.NET 11 Preview 4 が利用可能になりました。.NET の主要プレビューの各リリースでは、ランタイム、SDK、ライブラリ、ASP.NET Core、MAUI、C#、Entity Framework にわたる長いリストの変更が追加されます。完全なリストを繰り返す代わりに、私が注目した点を紹介します。&lt;/p&gt;
&lt;h2 id="net-sdk-に-mcp-サーバー-テンプレートが追加"&gt;.NET SDK に MCP サーバー テンプレートが追加&lt;/h2&gt;
&lt;p&gt;最も興味深い点: MCP サーバー プロジェクト テンプレートが SDK に含まれるようになりました。つまり、&lt;code&gt;dotnet new mcp-server&lt;/code&gt;（またはコマンドの最終名）がそのまま動作します。.NET で MCP ツールを構築している方にとって、初期設定の手間が大幅に減ります。プラットフォームの toolchain への MCP 統合は、エコシステムの進む方向を示しています。&lt;/p&gt;
&lt;h2 id="runtime-async-でコンパイルされたランタイム-ライブラリ"&gt;Runtime-Async でコンパイルされたランタイム ライブラリ&lt;/h2&gt;
&lt;p&gt;ランタイム自体が標準ライブラリを runtime-async 機能を使ってコンパイルするようになりました。これはパフォーマンスに影響する内部変更です — ランタイムの async 状態マシンがより効率的になります。ここでの重要性は、目に見える API の変更にあるのではなく、runtime-async が BCL 自体に使用できるほど成熟しているという点であり、機能の準備状況について意味のあるシグナルです。&lt;/p&gt;
&lt;h2 id="jit-最適化とハードウェア-イントリンシック"&gt;JIT 最適化とハードウェア イントリンシック&lt;/h2&gt;
&lt;p&gt;Preview 4 では JIT の改善が継続されています。ハードウェア イントリンシックとコード生成の改善が含まれています — 詳細はランタイムのリリース ノートをご確認ください。このような変更は通常、コードを変更せずに計算量の多いループのスループットを改善します。&lt;/p&gt;
&lt;h2 id="プロセス-api-の大幅な拡張"&gt;プロセス API の大幅な拡張&lt;/h2&gt;
&lt;p&gt;Preview 4 では &lt;code&gt;System.Diagnostics.Process&lt;/code&gt; に大きな更新が加えられます:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Process.RunAndCaptureTextAsync&lt;/code&gt; — プロセスを開始し、stdout/stderr をキャプチャし、終了を待機。デッドロックのリスクなしに 1 つの呼び出しで完結&lt;/li&gt;
&lt;li&gt;&lt;code&gt;KillOnParentExit&lt;/code&gt; — 親プロセスと子プロセス間の軽量なライフタイム結合&lt;/li&gt;
&lt;li&gt;トリマーフレンドリーな &lt;code&gt;SafeProcessHandle&lt;/code&gt; ベースの API&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;デッドロックを起こさずにプロセス出力をキャプチャするためのボイラープレートを書いたことがある方（stdout &lt;em&gt;と&lt;/em&gt; stderr の非同期読み取りを同時に行う）、&lt;code&gt;RunAndCaptureTextAsync&lt;/code&gt; はまさに求めていた API です。&lt;/p&gt;
&lt;h2 id="android-と-ios-向けの-dotnet-watch"&gt;Android と iOS 向けの dotnet watch&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;dotnet watch&lt;/code&gt; が .NET MAUI の Android および iOS プロジェクトのデバイス選択をサポートするようになりました。ビルド ループでデバイス接続を手動で管理せずに、モバイルでより速い反復が可能になります。&lt;/p&gt;
&lt;h2 id="span-ベースの圧縮-api"&gt;Span ベースの圧縮 API&lt;/h2&gt;
&lt;p&gt;新しい span ベースの Deflate、ZLib、GZip エンコーダー/デコーダー API がライブラリに追加されます。圧縮データを扱う際のアロケーションが削減されます — 高スループットのデータ処理を行っている場合に関係します。&lt;/p&gt;
&lt;h2 id="試してみる"&gt;試してみる&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://dotnet.microsoft.com/download/dotnet/11.0"&gt;.NET 11 Preview 4 をダウンロード&lt;/a&gt; — プレビュー版であり、本番環境向けではありませんが、RC サイクル前に問題を早期発見するためプロジェクトで試してみる価値があります。&lt;/p&gt;
&lt;p&gt;元の投稿: &lt;a href="https://devblogs.microsoft.com/dotnet/dotnet-11-preview-4/"&gt;.NET 11 Preview 4 is now available!&lt;/a&gt;&lt;/p&gt;</content:encoded></item></channel></rss>