全1325文字
PR

 WebAssembly(Wasm)を用いたアプリケーション開発の環境が整いつつある。その1つが、米Microsoft(マイクロソフト)が提供するWebアプリケーションフレームワークのASP.NET Core Blazor(以下、Blazor)である。

 プログラミング言語のC#で開発したコードをWasmにコンパイルし、Webブラウザー上で動かせる。これにより、サーバー上で稼働するアプリだけでなく、クライアントで稼働するアプリもC#で開発できるようになる。ここではBlazorの仕組みと、利点について見ていこう。

Blazorで開発できるアプリは2種類

 Blazorで開発するアプリは、クライアントで主な処理を実施するBlazor WebAssembly Appと、サーバーで主な処理を実施するBlazor Server Appの大きく2種類に分けられる。前者は主にサーバーとの通信が少ない静的なWebアプリに利用し、後者はサーバーとの通信が多いシンクライアントなどで利用する。

Blazor WebAssembly AppとBlazor Server Appの違い
Blazor WebAssembly AppとBlazor Server Appの違い
(出所:日本マイクロソフトの資料を基に日経クロステック作成)
[画像のクリックで拡大表示]

 Wasmを用いるのはBlazor WebAssembly Appである。Blazor WebAssembly Appはロジックを記述するC#のプログラムと、レイアウトなどを記述したRazorファイルをコンパイルして生成する。コンパイル時にはWebアプリを動かすためのランタイムやWasmファイルを含める。これをWebブラウザーがダウンロードして実行する。

Blazor WebAssembly Appの作成の流れ
Blazor WebAssembly Appの作成の流れ
(出所:日本マイクロソフトの資料を基に日経クロステック作成)
[画像のクリックで拡大表示]

 日本マイクロソフトの井上章グローバルブラックベルトAzure App Innovationスペシャリストは「Blazor WebAssembly AppはPWA(Progressive Web Apps)の開発につながる」と説明する。PWAはWebブラウザー向けのWebアプリを、あたかもネーティブアプリのように利用するための仕組みである。

 PWAの課題の1つは、Webブラウザーによって対応状況が異なることだった。Blazorで開発したWebアプリはWasmを利用して動く。主要なWebブラウザーはWasmに対応しているため、同じように動作することが保証される。

 また処理速度を追求したり、OS独自の機能を活用したりするにはPWAよりもネーティブアプリが向いていた。だがWasmによって高速な処理が可能になり、.NETのランタイムがOS独自の機能に対応すれば、「完全なクロスプラットフォームで動かせるようになる」(井上スペシャリスト)。