ASP.NETでアプリを作成して神速デプロイ


普段デスクトップアプリや組み込み系を仕事にしているため、
個人でWEBアプリを開発する際、いつもデプロイに苦戦します。
ASP.NETを使ってみたところ、余りにも簡単にデプロイできて感動しました。

作成からデプロイまでの流れをまとめます。

## 環境
Windows10
VisualStudio2022
C#（ASP.NET Core）
Azure

※Azureアカウントを作成していること前提です。
無料アカウントの作成方法は下記の記事を参照。

https://qiita.com/qt-luigi/items/53341070a7fd4de802f9

# アプリを作成する
VisualStudioを起動し、React と入力
「React.jsでのASP.NET Core[^1]」を選択します。
[^1]:Reactを使ってみたいから選んだだけで、Vue.jsや空のASP.NET Coreでも問題ありません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581044/a64cf367-24f7-42d2-e98e-5b0892ddeea9.png)

適当なプロジェクト名（ここでは「ReactASP」）を入力した後、デフォルト設定のまま作成までを行います。フレームワークは「.NET 6」とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581044/96284ecb-a069-aaac-75c3-ce045cd719f9.png)

プロジェクト作成完了。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581044/c4c0bfad-54a4-1c9e-8f3d-1b4fdde2ef0e.png)

F5 もしくは　再生ボタンで起動できることを確認します。

Home画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581044/0c764c7f-dea7-24b1-ba47-af7af897b70b.png)

Counter画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581044/249e3409-7ff3-c94a-915b-364ac4a7de32.png)

Fetch data画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581044/1f88436b-fdd8-d506-0100-34d60d9497ff.png)

アプリがlocalhostで起動することを確認しました。
ここからいよいよデプロイです。

# Azureにデプロイする
AzureにWebアプリをホストする先を用意します。
※ Azureアカウント（≠Microsoftアカウント）がないと、Azureにはアクセスできるものの、サービスが使用できません。必ずAzureアカウントを作成してください。

まずはAzureにアクセスします。

https://portal.azure.com/#home

「App Service」を選択し、「＋作成」を行っていきます。

Webアプリの作成 という画面が表示されたら、下記画像のように入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581044/befe7b6c-ed29-395f-a40c-28b4919b70fe.png)


- リソースグループ：名前（なんでもOK。ここでは「ASPGroup」）で新規作成。作成済の場合は既存のグループを選択。
- 名前：名前（なんでもOK。ここでは「ASPTestAPP」）を入力。この名前でURLが作られる。
- ランタイムスタック：.NET 6(LTS)を選択する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581044/9bfa27ce-6788-e9cb-49b2-f4a797b86e03.png)
- 地域：Japan Eastを選択
- 価格プラン：__Free F1__ ※デフォルトで有料プランが選択されていることがあるので注意！

他の項目はデフォルトのままで「確認および作成」を実行します。
作成事項がまとめて表示されるので「作成」を選択します。

デプロイが完了しました という画面が表示されれば成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581044/46d205f1-4be8-6abc-745d-1e4e0298b6c0.png)

VisualStudioで先ほと作成したプロジェクトを開きます。
プロジェクト（ここでは「ReactASP」）を右クリックし、「発行」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581044/552da5d0-bea0-b8a9-d71f-fa7eac2202f6.png)

ターゲットというメニューが表示されるので「Azure」を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581044/a42c4b7f-03f0-4e98-7304-6bf54dbbb648.png)

特定のターゲットから「Azure App Service(Windows)」を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581044/92bb3a0b-e597-6151-0290-6a62102fb95b.png)

AzureアカウントでVisualStudioにサインインしていない場合、下記のような画面が出るので「サインイン」を行います。
※サインインした後、何故かページが切り替わらないバグが発生することがあるので、数回サインインしてみてダメだったらVisualStudioを再起動してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581044/11515241-3224-9504-d3ea-134e65d45629.png)

サインインが成功すると、Azureで作成したリソースとアプリが一覧表示されます。先ほど作成したアプリ（ここでは「ASPTestAPP」）を選択し「完了」をクリックします。
※ここで「新規作成」ボタンを押すと、リソースとAppServiceをここで作成することができます。もはやAzureすら必要なし！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581044/1dcda1fa-f16a-8a7b-8dc5-dd6f5ed1e75b.png)

発行プロファイルが作成されました と表示されるので「閉じる」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581044/1bacc486-ef59-d061-9f9a-ac8f5abc931a.png)

VisualStudioのタブに戻るので「発行」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581044/ceec6756-e6d0-3015-549f-240da2bfaee9.png)

デプロイが完了すると下記のような画面が表示されます。「サイトを開く」で公開したサイトを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581044/73138157-4d3c-7334-c0ab-9d607cce7fb9.png)

デプロイ成功！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581044/50ffbc12-9944-74e9-838e-9b9da531d0a9.png)

Fetch data画面に移動し、バックエンド（ASP.NET CORE）とフロントエンド（React.js）の連携が出来ていることも確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581044/fd6d2fce-2615-526d-b320-bd6c95a08ff2.png)

## 最後に
Web系エンジニアでない人間にとって、マウスクリックだけで簡単にデプロイ出来るのはとても有難いです。作ったものの、デプロイ方法が分からないor面倒くさくて公開を諦めることが多かったですが、この方法ならストレスなく開発出来そうな気がします。これもC#、Azure、VisualStudioという異なる要素をすべて牛耳っているお陰なのだと思うと、やはり帝国だなあと感じますね。