【第1章】C# + .NET 5.0 + Blazor WebAssemblyで簡単SPA開発【プロジェクトの作成と動作確認】

# はじめに
AngularなどのSPAアプリケーションの作成が面倒だったが、BlazorでSPAが実装できると聞いてお試しメモ書きついでの手順化
TypeScriptやJavascriptを使わずに、C#とHTMLとCSSだけでレッツSPA!!!
最終目標は本番環境(Azure)での動作を目指して構築していきます。

--

今章ではプロジェクトの作成とSQLとの接続、動作確認まで実施します。
第1章完了時のソースコード一式はこちら
[https://github.com/enngawa/BlazorLerning/tree/第1章](https://github.com/enngawa/BlazorLerning/tree/%E7%AC%AC1%E7%AB%A0)


## 全体目次
- 第1章 [プロジェクトの作成と動作確認](https://qiita.com/jp_enngawa/items/46ba76d6bca17a1095dc) **<= この章はここ**
- 第2章 [SyncfusionBlazor(UIコンポーネント)の導入](https://qiita.com/jp_enngawa/items/ed166d6d63bd73a750fd)
- 第3章 画面の新規作成
- 第4章 SQLとの連動(Entity Framework経由でのCRUD)(予定)
- 以降 検討中・・・

## この章でやること
1. 開発環境の確認
1. プロジェクトの新規作成
1. Azure SQL Serverへの接続設定
1. 動作確認

## 使用する言語
- C#
- HTML
- CSS

## 1. 開発環境の確認
### 今回使用するツール
- VisualStudio 2019 Community
- Microsoft Azure SQL Server (ローカルで開発する場合は SQL Server Express)

### 次回以降使用する予定のツール
- Microsoft Azure WebApps

### 必要に応じて使うツール
- Microsoft SQL Management Studio(通称:SSMS)

:::note warn
環境構築は説明しません。環境がセットアップされている前提で話を行います。
Visual Studioは必ず最新のバージョンにアップデートしてください。
:::

>【参考】 私のVisualStudioのワークロード設定
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423799/cdca75a3-6663-0b10-45d0-2234c2cfd558.png" width=50%>

## 2. プロジェクトの新規作成
新しいプロジェクトから、【Blazor WebAssembly アプリ】を選択し「次へ」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423799/a1deb314-a8ff-fa46-6dac-2917b2181384.png)

プロジェクト名を設定して次へ
※ここでは「BlazorLearning」と設定。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423799/0f42ae8f-0eea-ed05-8cce-af5c2cb778c6.png)

以下の設定をして「作成」をクリック

- ターゲットフレームワークを「.NET 5.0」
- 認証の種類を「個別のアカウント」
- 「HTTPS用の構成」にチェック
- 「ASP.NET Coreでホストされた」にチェック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423799/39130b35-8711-5a72-5c2e-ad8735556c45.png)

## 3. Azure SQL Serverへの接続設定

:::note info
Azureで開発できない、ローカルで実行したい人はこの頁はスキップして次の頁へ移動してください。
この頁を始める方は、事前にAzure SQL Serverで空のDBを作成し、サーバーファイヤーウォールの設定を実施してください。
:::

作成された3つのプロジェクトから、「****(プロジェクト名).Server」直下の「appsettings.json」を開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423799/a24d3b17-d2c3-d5d0-da3d-04a3f840e602.png)

DefaultConnection項目の接続文字列をAzure SQL DBの接続先に書き換える。

```JSON
 "ConnectionStrings": {
    "DefaultConnection": "data source=サーバー名.database.windows.net;initial catalog=データベース名;user id=ユーザID;password=パスワード;MultipleActiveResultSets=true;"
  }
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423799/c0b8150c-08ed-b732-2a68-1b1e63d0fb08.png)


## 4. 動作確認

アプリケーションをデバッグ実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423799/56c917bd-b6f1-4a0e-41a1-673ee7dfc52f.png)

「Register」をクリックして登録画面に移動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423799/aa969cdb-bda5-50cb-7737-92bf5351fea5.png)

適当なアカウントを設定して、「Register」をクリック

:::note info
ここでは登録されないので、本当に適当で良いです。
:::
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423799/b8143c32-06c1-b738-66f4-6ee8d41fd9f5.png)

DB上に必要なテーブルがないため、作成してよいか確認が出るので「Apply Migrations」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423799/fd859763-56c4-82ce-60ee-e0ee0a34080b.png)

>この時点でDB上に必要なテーブルが自動生成されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423799/92b0df38-ba86-ebcc-dd9a-8008ed7a6300.png)

「Try refreshing the page」と表示されたらブラウザを更新する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423799/94aee85f-f4b8-a05a-fb59-897c430f1a75.png)

アカウント情報を入力して「Register」をクリック

:::note info
今後の動作確認で使用するアカウントなので、自分の正しいメールアドレスを登録してください。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423799/b8143c32-06c1-b738-66f4-6ee8d41fd9f5.png)

「Register confimation」と表示されたらDBにアカウント情報が問題なく保存されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423799/f946fc2f-ecfa-1a0c-cb8b-9a2a2eb3d876.png)

この時点ではメール認証が実装されていないので、画面に表示された「Click here to confirm your account」をクリックしてメール認証を実施。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423799/08582a40-2fc2-a8f2-9a51-15e68411e28c.png)

ロゴをクリックして、アプリのトップページに移動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423799/fd9b946f-6e91-e726-8731-d76ff40f3542.png)

[Fetch data]をクリックして、ログインが必要なページに遷移します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423799/39483b97-beb1-d943-89cb-87ca8c69b16b.png)

ログインされていない状態であれば、ログイン画面が表示されますので先ほど登録したアカウントでログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423799/4d3e25ce-bcf5-1dc7-9c9a-64c71cd7221a.png)

天気情報のページが表示されたら動作テスト完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423799/b32c9383-b4d5-01c7-a7bf-8425d7cc2b1f.png)

## 次の章へ
第2章 [SyncfusionBlazor(UIコンポーネント)の導入](https://qiita.com/jp_enngawa/items/ed166d6d63bd73a750fd)