【入門編】WebBrowserからWebView2への移行:最新のChromiumベースでWindows Formsアプリ内にモダンWeb画面を埋め込む – Visual Basic (VB / VB.NET)解析バイブル

スポンサーリンク

レガシーからの脱却:VB.NETでWebView2を使いこなし、モダンWebをアプリに宿す

こんにちは。長年VB.NETと心中してきたアーキテクトです。
皆さんが今直面している「IEベースのWebBrowserコントロールが動かない」「表示崩れがひどい」という悩み。それは、技術が時代に追いついた証拠です。

かつてのWebBrowserコントロールは、Windowsに内蔵されたInternet Explorerの遺産でした。しかし、今はChromiumエンジンを搭載した「WebView2」の時代。これを使えば、VB.NETのデスクトップアプリの中に、Chromeと同等のモダンなWeb体験を埋め込めます。

今回は、この移行における「双方向通信の極意」を、現場で使えるレベルで伝授します。

—

1. なぜ「WebView2」が必要なのか?

一言で言えば、「現代のWebは、古いエンジンでは描画できないから」です。
ReactやVue.jsといったモダンなフレームワークで作られたサイトは、古いWebBrowserコントロールではエラーの連続です。WebView2は、Microsoft Edgeの心臓部をそのままアプリに借りるようなもの。これにより、堅牢なWindowsアプリと柔軟なWebのいいとこ取りができます。

—

2. 導入:まずはここから

Visual Studioの「NuGetパッケージマネージャー」を開き、`Microsoft.Web.WebView2`をインストールしてください。これだけで準備完了です。

—

3. 実践:VB.NETとJavaScriptの双方向通信

ここが一番の難所です。VB.NETからJavaScriptを叩き、JavaScriptからVB.NETの関数を呼び出す。この「橋渡し」をマスターすれば、UI設計の幅は無限に広がります。

VB.NETからJavaScriptを呼び出す

Web画面のボタンを押さずとも、VB.NET側のボタンクリックでWebの内容を書き換える手法です。

‘ Web画面上のJavaScript関数を実行する
‘ 例: Web側の “changeColor(‘red’)” という関数を叩く
Await WebView21.ExecuteScriptAsync(“changeColor(‘red’);”)

JavaScriptからVB.NETを呼び出す(ここが肝!)

Web画面上の操作をVB.NET側に伝え、データベースに書き込んだり、ファイル操作をしたりする手法です。

‘ フォームのロード時にWebView2を初期化し、通信路を開く
Private Async Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Await WebView21.EnsureCoreWebView2Async()

‘ Web画面から “window.chrome.webview.postMessage()” が呼ばれた時の処理
AddHandler WebView21.CoreWebView2.WebMessageReceived, AddressOf OnWebMessageReceived
End Sub

‘ JavaScriptからのメッセージを受け取るハンドラ
Private Sub OnWebMessageReceived(sender As Object, e As CoreWebView2WebMessageReceivedEventArgs)
Dim message As String = e.TryGetWebMessageAsString()
MessageBox.Show(“Web側からの叫び: ” & message)
End Sub

—

4. 陥りやすい罠:非同期処理という壁

VB.NET初学者が最も苦しむのが「非同期(Async/Await)」です。
WebView2の処理は基本的に「非同期」です。Webページの読み込みが終わる前に操作しようとすると、例外(エラー)が発生します。

  • 鉄則: `EnsureCoreWebView2Async` が完了するまで、Web操作は行わないこと。
  • コツ: `NavigationCompleted` イベントを購読し、読み込み完了を確認してから通信を開始する癖をつけましょう。

—

5. まとめ:モダンアプリへの第一歩

WebBrowserからWebView2への移行は、単なるコントロールの置き換えではありません。「デスクトップの力」と「Webの知性」を融合させる新しい開発スタイルの獲得です。

1. NuGetでWebView2をインストール
2. `ExecuteScriptAsync` でWebを操り
3. `WebMessageReceived` でWebの声を聞く

この3ステップをクリアすれば、あなたのアプリは一気に現代的な洗練さを手に入れます。

エラーが出ても焦る必要はありません。それは「一歩進んだ」という証拠です。分からないことがあれば、またいつでも聞きに来てください。あなたのエンジニアリングライフが、より豊かになることを応援しています!

タイトルとURLをコピーしました