概要

従来のJavaScriptの代わりに、高級言語で書かれたコードをコンパイルしたバイナリーを実行できるWebAssemblyと、C#でプログラム記述できるBlazorフレームワークを用いてWeb開発する方法を説明します。

WebAssemblyとは

WebAssembly (ウェブアセンブリ、略称: Wasm) とは、Webブブラウザ上で高速に動作するバイナリ形式のコードです。
C、C++、C#、Rustなどの言語で書かれたコードをコンパイルしてWebAssemblyに変換することで、ブラウザ上でネイティブに近い速度で実行できるようになります。
JavaScriptの弱点を補完し、Webアプリケーションのパフォーマンスを向上させることを目的としています。

WebAssemblyの特徴

高速性:

JavaScriptよりも低レベルなバイナリ形式で動作するため、計算処理の多い処理を高速に実行できます。

言語非依存性:

C、C++、C#、Rustなど、様々な言語で記述されたコードをコンパイルしてWebAssemblyとして実行できます。

クロスプラットフォーム性:

WebAssemblyは特定のOSやブラウザに依存しないため、様々な環境で動作します。

セキュリティ:

ブラウザのサンドボックス内で実行されるため、セキュリティ面でも安全性が高いです。

JavaScriptとの連携:

WebAssemblyはJavaScriptを完全に置き換えるものではなく、JavaScriptと連携して動作します。

Blazorとは

Blazor(ブレイザー)とは、C#を使ってWebアプリケーションのフロントエンドを開発するためのフレームワークです。
JavaScriptの代わりにC#を使用し、WebAssemblyまたはサーバーサイドで動作するインタラクティブなWeb UIを構築できます。

Blazor の特徴

C# でのフロントエンド開発:

C# を使用して、JavaScript の代わりにWebアプリケーションのクライアント側を開発できます。

WebAssembly またはサーバーサイド:

Blazor WebAssembly では、.NETコードをWebAssemblyにコンパイルしてブラウザで直接実行できます。
また、Blazor Serverでは、サーバー上で実行されたUIをSignalRでブラウザに送信します。

Razor構文:

HTMLとC#コードを組み合わせたRazor構文で、コンポーネントを記述します。

サーバーサイドとクライアントサイドのコード共有:

サーバーサイドとクライアントサイドでコードを共有できるため、開発効率が向上します。

.NETエコシステム:

.NETの豊富なライブラリやツールを活用できます。

Blazorのホスティングモデル

Blazor には、主に3つの開発形式(ホスティングモデル)があります。

Blazor WebAssembly:

クライアントサイドで実行される形式です。
C#コードがWebAssemblyとしてブラウザ上で実行されます。
サーバーへの依存度が低く、オフラインでも動作可能です。
ブラウザの機能にアクセスできますが、サーバー側のリソースには直接アクセスできません。

Blazor Server:

サーバーサイドで実行される形式です。
ユーザーインターフェースの更新は、SignalR接続を介してサーバーとクライアント間でやり取りされます。
サーバーの処理能力に依存するため、クライアントのスペックは比較的低くても動作します。
サーバー側のリソースに直接アクセスできますが、オフラインでは動作しません。

Blazor United:

1つのアプリケーション内で、Blazor WebAssemblyとBlazor Serverの両方のレンダリングモードを組み合わせて使用できる形式です。
静的コンテンツはサーバー側でレンダリングし、インタラクティブな部分はクライアント側で処理するなど、柔軟な開発が可能です。

Blazor WebAssemblyによる開発

Blazor WebAssembly:はBlazorのホスティングモデルの一つで、クライアントサイドで実行される形式です。
このモデルはBlazorフレームワークでビルドされた成果物( HTMLやCSSやdllファイルなど)をWebサーバーに配置して、ブラウザーで HTML を開くと必要なファイルがサーバーより読み込まれクライアントサイドのWebAssembly上でアプリケーションが動作します。
Webサーバーはファイルを配置するためだけに使用され、サーバー側でプログラムが動くことはありません。従ってWebサーバーにOSやWebサーバーソフトの制限はなく、一般的なレンタルサーバーでも問題なく動かすことができます。
次の章では、BlazorフレームワークのWebAssemblyを用いたクライアントサイドで実行されるHello Worldアプリを開発する方法を説明します。