WebView2 Runtime 147/148のWDPリモートデバッグ接続修正|開発者が確認すべきポイント

WebView2 Runtime 147/148で、WDPクライアントがリモートデバッグサーバーへ接続できない問題に当たっている場合、まず確認すべきなのはWebView2 Runtimeの更新状況です。2026年4月18日時点で確認できるMicrosoft公式のWebView2 release notesでは、Runtime 147とRuntime 148の更新内容として「WDP clients being unable to connect to a remote debugging server」の修正が明記されています。Release SDK 1.0.3912.50はRuntime 147.0.3912.50以上、Prerelease SDK 1.0.3965-prereleaseはRuntime 148.0.3965.0以上を前提としています。(Microsoft Learn)

この修正は、WebView2アプリのリモート検査、DevTools接続、Windows Device Portal経由の診断、WebDriverによるテスト自動化に依存している開発者にとって重要です。画面表示や通常操作は動いているのに、edge://inspectやWDP経由の接続だけが失敗する場合、コードのバグではなくRuntime側のリグレッションや環境差分が原因になっている可能性があります。

日程Fit。無料・登録不要。「いつ空いてる?」を、ひとつのリンクで。リンクを送って、○△×でかんたん日程調整。無料で日程を作る。
目次

WebView2 Runtime 147/148で修正されたWDPリモートデバッグ接続の問題

今回注目すべき修正は、WebView2 RuntimeのRuntime-only bug fixとして追加されたものです。Microsoftのリリースノートでは、Runtime 147向けのRelease SDK 1.0.3912.50と、Runtime 148向けのPrerelease SDK 1.0.3965-prereleaseの両方に、WDPクライアントがリモートデバッグサーバーへ接続できない問題の修正が記載されています。(Microsoft Learn)

ここでいうWDPは、一般にWindows Device Portalを指します。WebView2のUWP/WinUI 2アプリなどでは、通常の組み込みDevToolsではなく、Windows Device PortalやMicrosoft Edge DevToolsを使ってリモート検査する構成があります。MicrosoftのWebView2リモートデバッグ手順でも、Device Portalを有効化し、http://<Device Portal URL>/msedgeedge://inspectからWebView2インスタンスを検査する流れが説明されています。(Microsoft Learn)

この問題が厄介なのは、アプリ本体の描画、API呼び出し、認証、ネットワーク通信が正常に見えても、デバッグ・診断・自動テストの入口だけが塞がる点です。開発現場では「アプリは起動するが、DevToolsで見えない」「WDPの/msedgeに対象が出ない」「WebDriverが既存のWebView2プロセスへアタッチできない」といった形で表面化します。

影響を受けやすい開発者と環境

今回の修正を優先して確認すべきなのは、次のようなチームです。

該当する開発・運用シーン起きやすい問題優先して確認すべきこと
WebView2 WinUI 2 / UWPアプリをリモートデバッグしているedge://inspectからWebView2が見えない、接続できないWebView2 Runtimeが147.0.3912.50以上、または148.0.3965.0以上か
Windows Device Portal経由でWebView2を検査しているhttp://localhost:50080/msedgeなどで空の一覧になるDevice Portal、Remote Tools、Runtimeバージョンの組み合わせ
WebDriverで既存のWebView2インスタンスへ接続しているwdpAddresswdpProcessId指定でもアタッチに失敗するWDP接続経路とRuntime更新状況
CIや検証端末でWebView2診断を自動化しているローカルでは成功し、特定端末や特定チャネルだけ失敗するEvergreen/Fixed VersionのどちらでRuntimeを配布しているか
埋め込みEdgeランタイムで障害解析を行うツール開発者ユーザー環境でだけリモート検査できないRuntimeの実バージョン、更新ポリシー、ポート、認証設定

特に、グローバルチームで開発している場合は注意が必要です。ある地域や検証端末ではEvergreen Runtimeが更新済みでも、企業管理端末、オフライン検証環境、固定バージョン同梱アプリでは古いRuntimeが残っていることがあります。結果として、同じコードでも「A拠点ではデバッグできるがB拠点ではできない」という再現性の低い障害に見えます。

まず確認すべきRuntimeバージョン

今回の修正に関しては、Runtime 147系と148系で確認すべき基準が異なります。

利用している系統対応するSDK確認すべきRuntime位置づけ
Runtime 147Release SDK 1.0.3912.50147.0.3912.50以上安定版リリース向け
Runtime 148Prerelease SDK 1.0.3965-prerelease148.0.3965.0以上プレビュー検証向け

実務では、まず安定版のRuntime 147.0.3912.50以上で再現するかを確認するのが現実的です。Runtime 148はPrerelease SDKの文脈で扱われているため、本番利用よりも、次期Runtimeでの互換性検証や先行テストに向いています。

アプリ内でRuntimeバージョンを確認する

.NET/C#であれば、CoreWebView2Environment.GetAvailableBrowserVersionString()を使って利用可能なWebView2 Runtimeのバージョン情報を取得できます。このAPIは、WebView2 Runtimeや非StableチャネルのMicrosoft Edgeのブラウザーバージョン情報を返すため、診断ログに出しておくと原因切り分けが速くなります。(Microsoft Learn)

using Microsoft.Web.WebView2.Core;

var version = CoreWebView2Environment.GetAvailableBrowserVersionString();
Console.WriteLine($"WebView2 Runtime: {version}");

ログに出すなら、単にバージョンだけでなく、次の情報も一緒に記録しておくと便利です。

WebView2 Runtime version
WebView2 SDK version
OS version
App architecture: x64 / x86 / Arm64
Runtime distribution: Evergreen / Fixed Version
Remote debugging route: WDP / remote-debugging-port / WebDriver
Device Portal URL

これにより、「Runtimeは更新済みだがDevice Portal側のポートが違う」「固定バージョンRuntimeを同梱していて修正版を使っていない」といった切り分けがしやすくなります。

WDPリモートデバッグ接続が失敗する時の切り分け手順

WebView2のリモートデバッグ接続失敗は、Runtimeの不具合だけでなく、Device Portal、ポート、認証、起動引数、WebView2インスタンス生成タイミングでも起こります。いきなりコードを大きく変更するのではなく、次の順で確認するのがおすすめです。

| 手順 | 確認内容 | 判断基準 |
| -: | ————————————– | ——————————————- |
| 1 | WebView2 Runtimeのバージョンを確認 | 147.0.3912.50以上、または検証用途で148.0.3965.0以上か |
| 2 | Device Portalが有効か確認 | Windowsの開発者向け設定でDevice Portalが有効になっているか |
| 3 | http://<Device Portal URL>/msedgeを開く | 空配列なのか、WebView2インスタンスが表示されるのか |
| 4 | edge://inspectから接続 | Device Portal URLを指定して接続できるか |
| 5 | WebView2の起動引数を確認 | WDP用のFeature Flagやリモートデバッグポートが初期化前に設定されているか |
| 6 | 認証・HTTPS・ポートを確認 | 50080/50043以外のポートや認証設定が必要ではないか |
| 7 | Fixed Version配布なら同梱Runtimeを確認 | アプリに古いRuntimeを同梱したままではないか |

Microsoftの手順では、WebView2 WinUI 2 UWPアプリでリモートデバッグを有効にするため、CoreWebView2インスタンスを作成する前にWEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS--enable-features=msEdgeDevToolsWdpRemoteDebuggingを設定する流れが示されています。(Microsoft Learn)

Environment.SetEnvironmentVariable(
    "WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS",
    "--enable-features=msEdgeDevToolsWdpRemoteDebugging"
);

重要なのは、WebView2の初期化前に設定することです。EnsureCoreWebView2Async()を呼んだ後、またはWebView2.Sourceを設定した後に環境変数を変更しても、すでに生成されたWebView2環境には反映されません。ここは実装ミスが起きやすいポイントです。

edge://inspectで見えない場合に確認するポイント

edge://inspectからWebView2インスタンスが見えない場合、Runtime更新だけで解決しないケースもあります。次の順で確認すると、原因を絞り込みやすくなります。

Device PortalのURLとポートを確認する

Windows Device Portalでは、デスクトップWindowsの既定ポートとしてHTTPは50080、HTTPSは50043が使われることがあります。ただし、既存のポート要求との競合を避けるため、環境によっては一時的な範囲の別ポートになる場合があります。Microsoftのドキュメントでも、Device Portalで実際に使われているURLを確認する手順が案内されています。(Microsoft Learn)

よくある失敗例は次の通りです。

症状よくある原因対処
localhost:50080にアクセスできないDevice Portalのポートが別番号になっているWindows設定のDevice Portal欄で実URLを確認
edge://inspectで接続できないHTTP/HTTPSやポートを取り違えているhttp://IP:portまたはhttps://IP:portを正しく指定
認証ダイアログで失敗するDevice Portal側で認証が有効WDPのユーザー名・パスワードを確認
/msedgeが空配列になる対象アプリがリモートデバッグ可能な状態で起動していないWebView2初期化前の起動引数を確認
端末によって成功・失敗が分かれるRuntimeやEdgeチャネル、管理ポリシーが違うRuntimeバージョンと配布方式をログ化

WebView2インスタンスが生成済みか確認する

リモートデバッグの一覧に対象が出ない場合、WebView2コントロールがまだ生成されていない可能性があります。ネイティブUIを操作してからWebView2画面が開くアプリでは、起動直後に/msedgeを確認しても対象が表示されないことがあります。

この場合は、対象画面まで遷移してWebView2インスタンスを生成してから、もう一度http://<Device Portal URL>/msedgeを開きます。CIや自動テストでは、WebView2インスタンスが表示されるまで数秒待つリトライ処理を入れると安定します。

1. アプリ起動
2. WebView2を含む画面へ遷移
3. /msedge をポーリング
4. browserProcessId を取得
5. DevToolsまたはWebDriverで接続

WebDriverやテスト自動化への影響

WebView2のリモートデバッグ接続は、DevToolsで画面を検査するだけでなく、WebDriverによるテスト自動化でも重要です。MicrosoftのWebView2 WebDriver手順では、実行中のWebView2インスタンスに接続する場合、--remote-debugging-portを設定し、EdgeOptions.DebuggerAddressで接続する方法が説明されています。(Microsoft Learn)

EdgeOptions eo = new EdgeOptions();
eo.UseWebView = true;
eo.DebuggerAddress = "localhost:9222";
EdgeDriver driver = new EdgeDriver(eo);

UWPアプリなどでRemote Tools for Microsoft Edgeを使う構成では、wdpAddresswdpProcessIdを指定して特定のWebView2プロセスに接続します。Microsoftの手順では、/msedgebrowserProcessIdを確認し、それをwdpProcessIdとして渡す流れが示されています。(Microsoft Learn)

EdgeOptions eo = new EdgeOptions();
eo.AddAdditionalEdgeOption("wdpAddress", "localhost:50080");
eo.AddAdditionalEdgeOption("wdpProcessId", 47860);
// 認証が有効なWDPでは必要に応じて指定
// eo.AddAdditionalEdgeOption("wdpUsername", "username");
// eo.AddAdditionalEdgeOption("wdpPassword", "password");

EdgeDriver driver = new EdgeDriver(eo);

今回のRuntime修正は、このようなWDP経由の接続に依存するテスト基盤にも影響します。特に、夜間ビルドや回帰テストで「アプリ起動は成功しているがWebDriverアタッチだけ失敗する」という場合は、テストコードの待機時間やセレクターより先に、Runtimeバージョンを確認すべきです。

Evergreen配布とFixed Version配布で対応が変わる

WebView2 Runtimeの更新確認では、アプリがEvergreen Runtimeを使っているのか、Fixed Version Runtimeを同梱しているのかで対応が変わります。

Microsoftのドキュメントでは、Evergreen配布モードではWebView2 Runtimeがアプリに同梱されず、クライアントマシンで自動更新されると説明されています。一方、Fixed Version配布では特定バージョンのRuntimeをアプリに同梱するため、開発側が更新を管理する必要があります。(Microsoft Learn)

配布方式Runtime更新今回の修正への対応
Evergreen Runtime原則としてクライアント側で自動更新端末に修正版Runtimeが入っているか確認。管理環境では更新ポリシーも確認
Fixed Version Runtimeアプリに同梱したRuntimeを使用同梱Runtimeを147.0.3912.50以上など修正版へ差し替え、アプリを再配布
Preview/Insider検証Beta/Dev/Canaryなどで先行確認Runtime 148系の検証ではPrerelease SDKの前提を確認

多くの一般的なWebView2アプリではEvergreen Runtimeが扱いやすいですが、企業向けアプリや医療・製造・金融系の管理環境では、Fixed Versionを選ぶこともあります。Fixed Versionを使っている場合、ユーザー端末のWebView2 Runtimeが更新されても、アプリが同梱Runtimeを参照していれば修正の恩恵を受けられません。

修正版Runtime適用後に実施したい確認項目

Runtimeを更新しただけで「完了」とせず、実際のリモート診断フローを一通り確認しましょう。特に、開発者向け機能は通常のUIテストでは見落とされがちです。

確認項目成功条件
アプリ起動WebView2を含む画面が正常に表示される
Runtimeバージョン取得ログ上で147.0.3912.50以上、または検証対象の148系が確認できる
Device Portal接続http://<Device Portal URL>/msedgeへアクセスできる
WebView2一覧表示/msedgeに対象WebView2インスタンスが表示される
edge://inspect接続リモートWindowsデバイスへ接続できる
DevTools起動対象WebView2の「検査」からDevToolsを開ける
WebDriverアタッチDebuggerAddressまたはWDP指定で既存インスタンスに接続できる
CI再実行失敗していた診断・自動テストが安定して通る

この確認をテンプレート化しておくと、今後のWebView2 Runtime更新時にも役立ちます。WebView2はWebプラットフォームの更新を取り込むため、描画やAPIだけでなく、開発者ツール、診断、セキュリティ関連の挙動も変わることがあります。

すぐに取るべき対応

今回のWebView2 Runtime 147/148の更新で重要なのは、WDPリモートデバッグ接続の失敗が開発環境・診断環境を直接止めるタイプの不具合である点です。通常のユーザー操作では見えにくくても、開発者にとっては調査・検証・自動化を止める大きな障害になります。

まずは、次の3点を実施してください。

  • WebView2 Runtimeの実バージョンをログまたはAPIで確認する
  • WDP、edge://inspect、WebDriverアタッチの接続経路を再検証する
  • Fixed Version Runtimeを同梱している場合は、修正版Runtimeへの差し替え計画を立てる

WebView2 Runtime 147.0.3912.50以上で安定版の修正を確認し、必要に応じてRuntime 148系のPrerelease環境でも先行検証しておくと、リモート検査や診断ツールに依存する開発フローを止めずに済みます。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次