フッターコンテンツにスキップ
.NETヘルプ

Blazor フレームワークとは何か (開発者向けチュートリアル)

Blazorは、2018年にMicrosoftによって開始されたASP.NET Frameworkです。Blazorフレームワークのリリースは有利で、開発者がJavaScriptの代わりにC#を使用してシングルページWebアプリケーションを作成できるようにしました。

Blazorを使用すると、C#を使用してブラウザでWebAssembly(Wasmと略されます)と一緒に実行される対話型のWeb UIを構築できます。 Blazorアプリは、C#、HTML、およびCSSを使用して実装された再利用可能なWeb UIコンポーネントで構成されています。 クライアントとサーバーのコードは両方ともC#で記述され、コードとライブラリを共有できるようになっています。

Blazorは、WebAssemblyを使用してクライアント側のC#コードをブラウザ内で直接実行できます。 .NETがWebAssembly上で実行されているため、アプリケーションのサーバー側パーツからコードとライブラリを再利用することができます。

または、Blazorはクライアントロジックをサーバー上で実行することもできます。 クライアントUIイベントは、リアルタイムメッセージングフレームワークであるSignalRを使用してサーバーに送信されます。 実行が完了すると、必要なUI変更がクライアントに送信され、DOM(ドキュメントオブジェクトモデル)にマージされます。

WebAssemblyとは何ですか?

Blazor WebAssemblyは、.NETを使用して対話的なクライアント側Webアプリを構築するためのシングルページアプリ(SPA)フレームワークです。 Blazor WebAssemblyはプラグインなしで開発を可能にするオープンなWeb標準を使用しており、他の言語にコンパイルし直す必要はありません。 Blazor WebAssemblyは、すべての最新のWebブラウザで動作します。

Webブラウザ内で.NETコードを実行することが可能な理由はWebAssemblyにあります。 WebAssemblyは、迅速なダウンロードと最高の実行速度のために最適化されたコンパクトなバイトコード形式です。 WebAssemblyはオープンなWeb標準であり、プラグインなしでWebブラウザでサポートされています。

WebAssemblyコードはJavaScriptを介してブラウザのすべての機能にアクセスできます。 JavaScript相互運用性として知られ、それはしばしば_JavaScript interop_または_JS interop_と略されます。 WebAssemblyを介して実行される.NETコードは、ブラウザのJavaScriptサンドボックス内で実行され、クライアントマシンに対する悪意のある動作に対する保護を提供します。

ネイティブアプリの構築

既存のBlazor Web UIコンポーネントを使用して、Blazor Hybridでネイティブクライアントアプリを構築できます。 Blazorコンポーネントは、モバイル、デスクトップ、Web全体で共有し、デバイスのネイティブクライアント機能への完全なアクセスを活用できます。 Blazor Hybridを使用して、.NETマルチプラットフォームアプリUI(MAUI)でクロスプラットフォームアプリを構築するか、既存のWindows Presentation Foundation(WPF)やWindows Formsアプリをモダン化できます。

Blazor Hybridアプリでは、Razorコンポーネントがデバイス上でネイティブに実行されます。コンポーネントは、ローカル相互運用チャネルを通じて埋め込みWebビュー制御にレンダリングされます。 コンポーネントはブラウザで実行されず、WebAssemblyも関与しません。 Razorコンポーネントは迅速にコードをロードして実行し、.NETプラットフォームを通じてデバイスのネイティブ機能に完全にアクセスできます。

Blazorアプリがどのように機能するかをよりよく理解するために、デモアプリケーションを作成しましょう。

Blazorサーバーアプリケーションを作成

最初のBlazorアプリを作成するには、新しいVisual Studioプロジェクトを作成する必要があります。

  • Visual Studioを開きます。
  • 新しいプロジェクトの作成ボタンをクリックします。
  • Blazorサーバーアプリテンプレートを選択します。
  • 次へボタンをクリックします。
  • アプリケーションに名前を付けます。
  • 次へボタンをクリックします。
  • ターゲットフレームワークを選択します。
  • プロジェクト作成ボタンをクリックします。

以下に示すように、新しいプロジェクトが作成されます。

class="content-img-align-center"> What is Blazor and How Does It Work - Figure 1

いくつかのファイルが作成され、即実行可能な簡単なBlazorアプリが提供されました。

  • Program.csは、サーバーを開始し、アプリサービスとミドルウェアを構成するアプリのエントリポイントです。
  • App.razorは、アプリのルートコンポーネントです。
  • Pagesディレクトリには、アプリのサンプルWebページがいくつか含まれています。
  • Propertiesディレクトリ内のlaunchSettings.jsonファイルは、ローカル開発環境のための異なるプロファイル設定を定義しています。 プロジェクト作成時にポート番号が自動的に割り当てられ、このファイルに保存されます。

このテンプレートアプリを実行します。

Blazorアプリの実行

テンプレートに自動的に作成される3つのBlazorコンポーネントがあります。

ホームコンポーネント

class="content-img-align-center"> What is Blazor and How Does It Work - Figure 2

サイドメニューでCounterをクリックします。 ボタンをクリックすると、ページを変更またはリロードせずにカウンターが増加するのがわかります。 Webアプリケーションでカウンターを動的に増加させるには通常JavaScriptが必要ですが、Blazorを使用するとC#でこれを実現できます。 これは、ASP.NETの開発者がBlazorを非常に好む理由です。 それは.NETの開発者が迅速かつ簡単にWebアプリを構築するのを助けます。

カウンターコンポーネント

class="content-img-align-center"> What is Blazor and How Does It Work - Figure 3

Counterコンポーネントのコードは、私たちのソリューションのPagesフォルダー内のCounter.razorファイルにあります。

@page "/counter"
<h1>Counter</h1>
<p>Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
    private int currentCount = 0;

    // This method increments the counter value when the button is clicked
    private void IncrementCount()
    {
        currentCount++;
    }
}

@pageディレクティブで指定されたブラウザ内の/counterへのリクエストは、Counterコンポーネントがそのコンテンツをレンダリングする原因となります。

「Click me」ボタンが選択されるたびに:

  • onclickイベントが実行されます。
  • IncrementCountメソッドが呼び出されます。
  • currentCountが1増加します。
  • 更新されたカウントを表示するためにコンポーネントがレンダリングされます。

.razorファイルは再利用可能なUIコンポーネントを定義します。

Visual StudioでIndex.razorファイルを開きます。 このIndex.razorファイルは、プロジェクトを作成するときに作成されるため、既に存在しています。 それは、以前に作成されたBlazorAppディレクトリ内のPagesフォルダーにあります。

フェッチコンポーネント

「Fetch Component」という名前の別のコンポーネントがあります。 このコンポーネントは、バックエンドサーバー側開発で使用されるサービスも注入します。 Blazor web開発の力をよりよく理解するために、URLからPDFを生成するコードに置き換えてみましょう。

URLからPDFを生成

まず最初に、PDFファイルを生成するためのサードパーティライブラリをインストールする必要があります。 私たちが使用するライブラリはIronPDF - PDF Generation for .NETです。 使いやすく、多くの機能が含まれており、開発は無料です。 BlazorアプリでIronPDFを使用する方法については、IronPDF Blazor Documentationを読んで詳細をご覧ください。

IronPDF NuGetパッケージをインストールする

ノーマルなASP.NET Coreアプリケーションに似て、Blazor WebAssemblyアプリにIronPDF NuGetパッケージをインストールすることもできます。

NuGetパッケージマネージャーコンソールを開いて、次のコマンドを書きます:

Install-Package IronPdf

ライブラリは以下のようにインストールされます。

class="content-img-align-center"> What is Blazor and How Does It Work - Figure 4

FetchData.razorファイルから既存のコードをすべて削除し、次のコードサンプルを追加してください:

@page "/fetchdata"

@using myBlazorAPP.Data
@inject WeatherForecastService ForecastService

<h1>Generate PDF FROM URL</h1>
<p>This component demonstrates generating PDF from URL using IronPDF in Blazor Application</p>
<input type="text" @bind="URL" placeholder="URL HERE..."/>
<button @onclick="GeneratePDF">Generate PDF</button>

@code {
    private string URL { get; set; }

    // This method calls the service to generate a PDF document from a given URL
    protected async Task GeneratePDF()
    {
        await ForecastService.GeneratePDFfromURL(URL);
    }
}

上記は、PDFファイルを生成するためのクライアント側Blazorコードです。 ボタン1つと入力ボックス1つを定義しています。 入力フィールドはURL変数にバインドされています。

それでは、アプリのためのサーバー側コードを書きましょう。

WeatherForecastService.csファイルを開き、すべての既存コードを次のコードスニペットに置き換えます:

using System;
using System.Threading.Tasks;
using IronPdf;

namespace myBlazorAPP.Data
{
    public class WeatherForecastService
    {
        // This method generates a PDF file asynchronously from a provided URL
        public async Task GeneratePDFfromURL(string URL)
        {
            ChromePdfRenderer renderer = new ChromePdfRenderer();
            var pdfDoc = await renderer.RenderUrlAsPdfAsync(URL);
            pdfDoc.SaveAs(@"myFile.pdf");
        }
    }
}
using System;
using System.Threading.Tasks;
using IronPdf;

namespace myBlazorAPP.Data
{
    public class WeatherForecastService
    {
        // This method generates a PDF file asynchronously from a provided URL
        public async Task GeneratePDFfromURL(string URL)
        {
            ChromePdfRenderer renderer = new ChromePdfRenderer();
            var pdfDoc = await renderer.RenderUrlAsPdfAsync(URL);
            pdfDoc.SaveAs(@"myFile.pdf");
        }
    }
}
Imports System
Imports System.Threading.Tasks
Imports IronPdf

Namespace myBlazorAPP.Data
	Public Class WeatherForecastService
		' This method generates a PDF file asynchronously from a provided URL
		Public Async Function GeneratePDFfromURL(ByVal URL As String) As Task
			Dim renderer As New ChromePdfRenderer()
			Dim pdfDoc = Await renderer.RenderUrlAsPdfAsync(URL)
			pdfDoc.SaveAs("myFile.pdf")
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel

アプリケーションを実行して、出力を確認しましょう。

class="content-img-align-center"> What is Blazor and How Does It Work - Figure 5

入力ボックスにURLを貼り付け、PDFを生成をクリックします。 PDFファイルが生成され、アプリフォルダーでファイルを見ることができます。

以下のようにPDFファイルを開きます。

class="content-img-align-center"> What is Blazor and How Does It Work - Figure 6

URLからのPDF生成を3行のコードで実現しました。 これはIronPDFの力です。

IronPDFはIron Softwareによって提供され、Iron SoftwareのIron Suite Productsの一部です。 フルIron Suiteを取得することにより、2つの製品を購入する費用で5つの製品を節約することができます。

まとめ

Blazorは、Microsoftの.NET Frameworkを使用して対話型クライアント側Web UIを構築するためのフレームワークです。

  • JavaScriptの代わりにC#を使用してリッチなインタラクティブUIを作成します。
  • .NETで書かれたサーバー側とクライアント側のアプリロジックを共有します。
  • ワイドなブラウザサポート、モバイルブラウザを含むHTMLとCSSとしてUIをレンダリングします。
  • Dockerなどのモダンなホスティングプラットフォームと統合します。
  • .NETとBlazorでハイブリッドデスクトップとモバイルアプリを構築します。

クライアント側Web開発に.NETを使用することは以下の利点があります:

  • JavaScriptの代わりにC#でコードを書きます。
  • .NETライブラリエコシステムを活用します。
  • サーバーとクライアント全体でアプリロジックを共有します。
  • .NETのパフォーマンス、信頼性、セキュリティの恩恵を受けます。
  • Visual StudioやVisual Studio Codeのような開発環境でWindows、Linux、macOSで生産性を保ちます。
  • 安定していて、豊富な機能のあり、使いやすい共通の言語、フレームワーク、ツールセットを基盤に構築します。

よくある質問

C#を使用してURLからPDFを生成するにはどうすればよいですか?

IronPDFライブラリを使用してC#でURLからPDFを生成できます。これには、ChromePdfRendererクラスを利用してURLをPDFドキュメントとしてレンダリングすることが含まれます。

Web開発にBlazorを使用する主な利点は何ですか?

Blazorは、開発者がC#でWebアプリケーションを構築できるようにし、クライアントとサーバー間のコード共有を可能にします。また、既存の.NETエコシステムを活用し、WebAssemblyを通じてモダンブラウザをサポートすることで、パフォーマンスと生産性が向上します。

Blazorをどのように使用してネイティブデバイス機能を統合できますか?

Blazorは、Blazor Hybridを使用してネイティブアプリケーションを作成でき、コンポーネントをネイティブに実行し、.NETを通じてデバイスの機能にアクセスすることができます。これは、クロスプラットフォームアプリケーションのための.NET MAUIなどのフレームワークを活用します。

WebAssemblyは、Blazorアプリケーションをどのように強化しますか?

WebAssemblyはプラグインを必要とせず、モダンブラウザで.NETコードを実行できるようにすることで、Blazorアプリケーションを強化します。これにより、インタラクティブなクライアントサイドWebアプリケーションが可能になり、完全なブラウザの機能を活用するJavaScript相互運用性を使用できます。

Visual StudioでBlazorサーバーアプリケーションをどのように作成できますか?

Visual StudioでBlazorサーバーアプリケーションを作成するには、新しいプロジェクトを開始し、Blazor Server Appテンプレートを選択し、プロジェクト名を指定し、ターゲットフレームワークを選択し、それからプロジェクトを作成する必要があります。このプロセスは、Blazorサーバーアプリのための必要な構造を設定します。

BlazorにおけるJavaScript相互運用性とは何ですか?

JavaScript相互運用性、またはJS interopは、ブラウザで実行される.NETコードがJavaScriptと対話することを可能にするBlazorの機能であり、Blazorアプリケーションで完全なブラウザ機能を使用することを可能にします。

BlazorアプリケーションはDockerを使用してデプロイできますか?

はい、BlazorアプリケーションはDockerを使用してデプロイでき、さまざまなサーバー環境でのアプリケーションの管理とデプロイを簡単にし、スケーラビリティとモダンホスティングプラットフォームとの統合を向上させます。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。