TECH MEDIA

テックメディア


ASP.NET Core Blazor を試してみた
フレームワーク
ブログ

ASP.NET Core Blazor を試してみた

ASP.NET
目次
  1. 01|ASP.NET Core Blazor とは
  2. 02|プロジェクトの作成
  3. 03|コーディング
  4. 04|動かしてみた
  5. 05|所感

まいど、多肉系のエンジニアのほりです。

今回は、最近試してみたかったフレームワークASP.NET Core Blazorについてお話します。

1. ASP.NET Core Blazor とは

ASP.NET Core Blazor とは 、C# と HTML(Razor) でWebアプリケーションが作れるフレームワークです。

Blazor には、クライアントサイド Blazor とサーバーサイド Blazor があります。
クライアントサイド Blazor は、ブラウザ上でバイナリ実行を可能とする WebAssembly の技術を利用することで、C# が使えるようになっています。

一方サーバサイド Blazor は 、リアルタイムウェブを実現する 、SignalR(WebSocketやCometなどを吸収してくれている仕組み) を利用することで WebAssembly 非対応のブラウザでも利用できるようにしているみたいです。

試してみたい!と思った理由は以下の通りです。
・ JavaScript の代わりに C# が使える
・ Vue、Angular や React などといった知識なしで SPA が書ける
・ .NET ライブラリなどがそのまま使える

Blazor がどんなものかを知るために、ひとつ Blazor アプリを作成してみることにしました。

2. プロジェクトの作成

今回は Visual Studio 2019 を利用して検証しました。

まずはじめに、Blazor アプリというものがありますため、それを選択してプロジェクトの作成をはじめます。

ASP.NET Core Blazor を試してみた

任意のプロジェクト名をつけて、作成します。

ASP.NET Core Blazor を試してみた

続けて、 Blazor サーバーアプリも作成します。

ASP.NET Core Blazor を試してみた

出来上がったソリューションは以下画像のような構成となりました。

デフォルトではカウントアップするアプリと、天気データ(固定値)の一覧を表示するアプリが含まれていました。

ASP.NET Core Blazor を試してみた

3. コーディング

みんな大好き「Hello World!!」だけだとつまらないと思ったため、超かんたんな足し算アプリをコーディングしました。

今回は Pages 配下に Test.razor というファイルを作成しました。

ASP.NET Core Blazor を試してみた

/Pages/Test.razor


@page "/test"

<h1>Calculate</h1>

<input type="text" id="num1" @bind="Num1">
<input type="text" id="num2" @bind="Num2">

<button class="btn btn-primary" @onclick="() => Calculate(Num1, Num2)">blazor</button>
<span id="blazor">@result</span>

<button class="btn btn-primary" onclick="document.querySelector('#js').textContent = [+document.querySelector('#num1').value, +document.querySelector('#num2').value].reduce((a, x) => a += x, 0);">js</button>
<span id="js">0</span>

@code {
    private decimal Num1 = 0.1m;
    private decimal Num2 = 0.2m;
    private decimal result;

    void Calculate(params decimal[] number)
    {
        result = number.Sum();
    }
}

4. 動かしてみた

実際に動かしてみました!

Blazor での 0.1 + 0.2 の計算結果は 0.3
JavaScript での 0.1 + 0.2 の計算結果は 0.30000000000000004 となりました!

ASP.NET Core Blazor を試してみた

これは 、JavaScript では IEEE 754 の倍精度浮動小数点数のため、計算結果が異なってきます!

これを解決するために数値計算のライブラリなどが出回ってはいるのですが、Blazor ならライブラリ選定などの悩みもなくなりそうですね。

5. 所感

フロントエンドの技術は特に移り変わりが速いため、このようなフレームワークがあると技術習得もしやすくてよいと思いました。

ただし、まだ実験的なプロダクトではあるため、今後も追っていきたいと思います!

RECRUIT 採用情報

「eビジネスに関わる全ての人を幸せにする」
私達とともに新たな時代をつくりませんか?