その本の「はじめに」には、著者の「伝えたいこと」がギュッと詰め込まれています。この連載では毎日、おすすめ本の「はじめに」と「目次」をご紹介します。今日は増田智明さんの『 Blazor入門 第2版 .NET 9対応 C#によるSSR/CSR方式のWebアプリ開発最新手法 』です。
【はじめに】
ブラウザーで動作するWebアプリケーションは、JavaScriptに始まりJavaScriptにより発展してきました。非同期処理を行うAjaxの登場以来、ブラウザーはWebサーバーの単なる窓口ではなく、高機能な独自のアプリケーションを構築できるものになりました。HTML5やCSS、そしてJavaScriptの組み合わせで動作するブラウザー上のアプリケーションは、「フロントエンド」のデザイン性を大きく向上させ、今でも発展し続けています。
その歴史のなかで、ReactやVueなどを利用するためには、JavaScriptを学ばざるを得ないという制限がありました。.NET Frameworkが提供するかつてのWeb Formsも、JavaScript(Ajax)との組み合わせで画面操作を実現させてきました。
これを一新させたのがWebAssemblyの登場です。ブラウザー上で動作するWebAssemblyは、JavaScriptと同様のスピードでさまざまな言語のランタイムを実行できます。JavaScriptに限らず、動作するランタイムとしてC/C++やRustなどがあり、そして、本書で解説するように.NETがあります。WebAssemblyで動作する.NET言語(C#)は、ライブラリなどを動かすだけでなく、BlazorとしてHTMLマークアップを操作する仮想DOMを獲得しています。この結果、Vueなどのように、ブラウザー上の画面操作とロジックをC#で記述できるようになったのです。
ページ遷移のストレスが軽減されるSPA(シングルページアプリケーション)ですが、実際に利用してみるとちょっと難点があることがわかりました。初期起動の遅さとSEO対策の弱さです。このため、さらなる改良版として、Next.jsやNuxt.jsようにサーバーサイドでのレンダリング技術も並行して進められてきました。そして、Blazorにも、同じようにクライアントサイドとサーバーサイドのレンダリングが共有できる「Blazor Web アプリ」が登場しました。
本書で解説するBlazorには、クライアントサイドとサーバーサイドの2種類が存在します。クライアントサイドのBlazorは、ブラウザー上で仮想DOMを操作してWebサーバーとの通信を必要しないシングルページアプリケーションとして動作します。一方、サーバーサイドのBlazorは、WebサーバーとSignalRで通信をすることにより、サーバーのリソース(データベースなど)を扱うことができます。内部的には動作の異なる2つのBlazorアプリケーションですが、Blazorで同じように記述できるのがこの開発環境の良いところです。動作する対象がブラウザー上かサーバー上かに関係なく、UIの表示やボタンイベントなどを記述できるのです。
BlazorはASP.NET MVCのRazor記法を引き継ぎながら、Windowsアプリケーションのようにページ単位のクラス=コンポーネントとして動作しています。画面に表示するパーツは、各コンポーネントとして独立した記述ができ、Windowsアプリケーションで培われたノウハウを引き続き活用できます。本書はBlazor単体の動作だけではなく、Web APIの呼び出し、JavaScriptとの連携、SVGの活用なども解説していますので、組み合わせの幅を広げてください。さらに第2版となった本書は、Blazorをスマホアプリとして動作させる.NET MAUIBlazorアプリまで、解説しました。
HTML+CSSとC#で作るBlazorの世界を、ぜひ味わってみてください。
2025年5月 増田智明
【目次】









