Blazor WebAssembly を触ってみる - その①環境を整える、サンプルを動かす

# Blazor WebAssembly とは
Web ブラウザー内で .NET コードを実行する WebAssembly ベースの SPA フレームワークです。
Blazor で開発したアプリやその依存関係、.NET ランタイムがブラウザーにダウンロード、実行されるという仕組みです。
サーバーサイドだけではなく、クライアントサイドまで C# で開発できるようになるので、C# が使える方にとっては便利そうですね。
また、C# から JavaScript の呼び出すこともその逆もできますので、これまでの開発したリソースも活かせそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320008/9d97557b-6f93-94f8-1314-9de87f527fb8.png)
https://docs.microsoft.com/ja-jp/aspnet/core/blazor/?view=aspnetcore-3.1#blazor-webassembly

つい先日正式にリリースされたのでサンプルを動かすところまで試して見たいと思います。

https://www.publickey1.jp/blog/20/blazor_webassemblycnetwebmicrosoft_build_2020.html
https://devblogs.microsoft.com/aspnet/blazor-webassembly-3-2-0-now-available/



# 試してみる
以下のドキュメントを元に試してみます。

最初の Blazor アプリをビルドする
https://docs.microsoft.com/ja-jp/aspnet/core/tutorials/build-your-first-blazor-app?view=aspnetcore-3.1


ここから先は VS Code でデバッグ実行するところまでの手順ですが、手っ取り早く動かしたい方は以下のコマンドだけで十分です。

```
dotnet new blazorwasm -o BlazorApp1
cd BlazorApp1
dotnet run
```



## 用意するもの
- .NET Core 3.1 以上の SDK (https://dotnet.microsoft.com/download/dotnet-core/3.1)
- Visual Studio Code (https://code.visualstudio.com/)

## 手順

#### 1. テンプレートのインストール (.NET Core 3.1.300 よりも低いバージョンのときのみ)
コマンドプロンプトより dotnet --version を実行して 3.1.300 よりも低いバージョンが表示されたときは、以下のコマンドを実行して最新のテンプレートをインストールします。
Blazor WebAssembly の正式サポートは .NET Core SDK 3.1.300 からだからでしょう。

```
dotnet new -i Microsoft.AspNetCore.Components.WebAssembly.Templates::3.2.0-rc1.20223.4
```

#### 2. VS Code の設定
Settings (Ctrl + ,) より debug.javascript.usePreview を True にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320008/1ae044c6-f12f-8e5c-ead2-9d574c495a3c.png)

次に C# と JavaScript Debugger (Nightly) の Extension をインストールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320008/3a1dc531-aa1c-a9e5-4542-889d52c2872f.png)

Extension はこちらから検索できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320008/0f4c58cc-e94b-05cc-d5af-e1430f3add18.png)



#### 3. テンプレートからアプリを作成
```
dotnet new blazorwasm -o WebApplication1
```

中身はこんな感じです。ASP.NET Core っぽいですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320008/d0180055-8465-783a-84cf-087cb091c900.png)

#### 4. 実行
Run -> Start Debugging よりデバッグ実行します。
初回実行時には VS Code のデバッグ設定のファイルである launch.json を作成するため、以下のような画面が表示されますので、.NET Core を選択します。(その後、もう一度 Start Debugging をクリックします)
.NET Core 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320008/2d8442c8-c493-1160-129a-8489d43c5ada.png)

DEBUG CONSOLE に以下のようなメッセージが表示されたら、ブラウザで http://localhost:5000 を開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320008/8eb0a21c-408d-f363-fdf4-7a8870694003.png)

以下のように Hello, world! の画面が表示されたら成功です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320008/73c940b0-728f-436c-bc32-ed01b9020b49.png)

カウントができるようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320008/bbd112a8-7d83-60e5-618a-93711935db6a.png)

ディベロッパーツールを開いてみると、たしかに .NET Core のアセンブリがロードされているようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320008/284ef273-8a11-099c-d9fc-aee7f7841f78.png)


いろいろ気になりますが今回はここまで。