Webアプリ

【C#、Blazor】Webアプリ開発入門編(8)「Todoアプリ」をデプロイ・公開する! ~Azure App Serviceの使い方~【ASP.NET Core】

今回はBlazorアプリのデプロイ・公開方法について解説します。

前回まででTodoリストアプリ開発がいったん完成しましたので、これを題材としてWeb上で公開する方法を解説します。

Todoアプリ開発については、以下の記事も参考にしてください。
(Todoアプリ開発編: 入門編(4)入門編(5)入門編(6)入門編(7))

【C#、Blazor】Webアプリ開発入門編(4)「Todoアプリ」でデータベース作成&データ表示 ~データベース操作のフレームワークを学ぶ~【ASP.NET Core】 今回から具体的なTodoリストアプリ開発を題材として、Blazorの基本機能について紹介します。 初心者がBlazorでWebア...

本記事では、以下について説明します。

  • Blazorアプリを公開する意義
  • Blazorアプリの様々な公開方法とその比較
  • Azure App Serviceを使ったデプロイ方法

次のような人にとって役立つ内容かと思います。

  • Blazorで作ったアプリを実際にインターネット上で公開したい
  • デプロイの選択肢にはどのようなものがあるのか知りたい。
  • Azure App Serviceでのデプロイ方法を具体的に知りたい。
プロ太

Blazorアプリをデプロイすることで、自分のアプリを世界中の人に使ってもらえる可能性が広がります

また、ポートフォリオとしても活用でき、就職や転職の際にも役立ちます。

一緒に、Blazorアプリの公開方法を学んでいきましょう!

YouTubeの動画も作成しています。

講義:Blazorアプリの公開方法

アプリ公開の意義

Webアプリ開発・Blazorアプリ開発などのプログラミング学習において、アプリ公開の方法を学ぶことは以下の点で意義があります。

  1. 作品の共有: 自分の作ったアプリを多くの人に使ってもらえる
  2. フィードバック獲得: ユーザーからの意見を得て、アプリを改善できる
  3. ポートフォリオ作成: 就職・転職活動の際のアピールポイントになる
  4. 実践的な学習: デプロイプロセスを通じて、実際の運用スキルが身につく
  5. モチベーション向上: 公開することで達成感を得られ、さらなる学習意欲につながる
プロ美

プログラミング学習のモチベーション向上や、就職・転職活動のときのアピール材料にも使えるってことだね!

プロ太

その通りです。アプリのデプロイや公開を学ぶことは、アプリ開発の実務でも重要ですが、学習において様々なメリットがあります。

Blazorアプリの公開方法の比較

Blazorアプリを公開する主な方法を以下に示します。

  1. Infrastructure as a Service (IaaS)
  2. Platform as a Service (PaaS)
  3. 静的ホスティング(Blazor WebAssembly用)
  4. セルフホスティング

これらは、システム全体のうちどこまでを開発者がコントロールしたいかによって使い分けることになります。

以下は①~④それぞれで、システム全体のうち開発者がどこまでコントロールできるかを示したものです。
(注意:具体的なサービスによってこの境界は多少変わる可能性があります。)

開発者がコントロールできる自由度の高さの順は、④>①>②/③の順ですね。

プロ太

それぞれがどのような方法か簡単にみていきましょう!

①Infrastructure as a Service (IaaS)

開発者がネットワーク設定・OSなどをコントロール可能な仮想サーバ環境です。

高度なカスタマイズが可能で様々なソフトウェアを自由にインストール可能です。

しかし、セットアップと管理が複雑でありセキュリティ対策も自分で行うべきことが増えます。

例: Azure Virtual Machines, Amazon EC2, Google Compute Engine

②Platform as a Service (PaaS)

アプリ実行環境を提供するサービスです。

インフラ管理が不要でスケーリングが容易であり、開発者はアプリ開発に集中できます。

ただし、カスタマイズの自由度が低く、ベンダロックイン(作ったアプリ・システムが特定のベンダに依存したものになる)の可能性があります。

例:Azure App Service, AWS Elastic Beanstalk, Google App Engine

③静的ホスティング(Blazor WebAssembly用)

静的ファイルのホスティングサービスを利用する方法です。

非常に低コストで、高速な配信が可能であり、デプロイも簡単です。

Blazorアプリに関しては、Blazor WebAssemblyのアプリをデプロイするときに使うことになります。

例:Azure Static Web Apps, AWS Amplify, Google Firebase Hosting、GitHub Pages

④セルフホスティング

自前のサーバでホスティングする方法です。

開発者が(ハードウェア含めて)完全なコントロールが可能です。

しかし、ハードウェア管理、セキュリティ対策、スケーリングをすべて自前で行う必要があります。

プロ美

開発者としてどこまでをコントロールしたいかっていう基準で①~④を選べばいいんだね!

プロ太

その通りですね。

今回の演習では、初心者でも比較的取り組みやすい「②PaaS」のAzure App Service(PaaS)を使用したデプロイ方法を紹介します。

Azure App Serviceとは?

Blazorアプリ開発の初心者には、以下の理由からAzure App Serviceがおすすめです。

  1. 簡単なセットアップ: Visual Studioから簡単にデプロイできる
  2. .NET環境との高い互換性: Microsoftのサービスなので、.NETアプリとの相性が良い
  3. コスト:試用・学習は無料枠で行える。

2024年9月時点で、無料枠は以下のようになっています。
(使うときは、最新情報を参照するようにしてください。)

参考:Azure App Service on Windows の価格

さらに、GitHubなどと連携して開発中に継続的にデプロイを行ったり、サービス規模にあわせてリソースを増強させたりと発展させていくこともできます。

プロ太

Visual Studioで開発しているアプリをそのままデプロイできるのも手軽で嬉しい点ですね!

演習:Azure App ServiceへBlazorアプリをデプロイ

BlazorアプリをAzure App Serviceへデプロイしてみましょう。

以下の手順で進めます。

  • 手順1:Azure App Serviceの設定
  • 手順2:Blazorアプリのプロジェクトを用意
  • 手順3:Visual StudioからAzure App Serviceへデプロイ

Azureの構成は以下になります。

今回、App Service用のリソースグループ(及び配下のリソース群)を新規に作成します。

そして、そこへBlazorアプリをデプロイすることで、アプリをインターネット上に公開し、誰でも自由にアクセスできるようにします。

手順1:Azure App Serviceの設定

Azure全体の初期設定については、Entra ID認証の記事(手順1-1:アカウント作成とサブスクリプション・テナント作成)を参考にしてください。

【C#、Blazor】Webアプリ開発入門編(Ex3)Microsoft Entra ID(旧AzureAD)~アプリへ簡単に認証機能を追加!~【ASP.NET Core】 今回はC#BlazorアプリへMicrosoft EntraID(旧Azure Active Directory)認証を組み込む方法を...

ここでは、Azure App Serviceの設定について説明します。

Azure Portalのホーム画面でリソース作成を選びます。

「Web アプリ」を検索して選び、「作成」をクリックします。

設定を行い「確認および作成」をクリックします。

リソースグループはAppService用のものを新しく作っています。インスタンス名(ここでは、DemoAppService1234)はドメイン名になるので一意である必要があります。

確認画面が表示されるので、「作成」をクリックします。

以下のように表示されれば、AppServiceの設定は完了です!

手順2:Blazorアプリのプロジェクトを用意

Webアプリ開発入門編(7)の演習2で作ったTodoリストアプリのプロジェクトを題材として使います。こちらにコード一式があります。

コード一式を用意したら、ソリューションファイルがあるフォルダで以下のコマンドを実行し、SQLiteのDBファイルを作成しておきます。

dotnet ef database update

こうすることで、このDBファイルもアプリのコードとあわせて、App Serviceへデプロイできます。

とりあえずApp ServiceへBlazorアプリをデプロイすることだけ試したい場合、以下のように新規プロジェクトを作って試してもよいです。

dotnet new blazor -n BlazorApp1 -o BlazorApp1 -f net8.0 --interactivity Server -au Individual --use-local-db false
cd .\BlazorApp1\
dotnet new sln -n BlazorApp1
dotnet sln BlazorApp1.sln add BlazorApp1.csproj

この場合、SQLiteのDBファイルもあわせて自動生成されるため、このままデプロイできます。

プロ太

どちらにしても、Azure App Serviceへのデプロイ手順は変わりません。

手順3:Visual StudioからAzure App Serviceへデプロイ

Visual Studioでソリューションファイルを開き、「ビルド>【プロジェクト名】の発行」を選択します。

「Azure>Azure App Service(Windows)」を選びましょう。

Azureと連携するため、Azure Portalへログインするときに使うMicrosoftアカウントでサインインしましょう。

以下のような画面が表示されたら、サブスクリプションに紐づくディレクトリを選択しましょう。

Azureへ接続できて以下の画面が表示されたら、デプロイ先のAzureAppServiceリソースを選択し、「完了」をクリックします。

以下のように発行プロファイルの作成が完了したら「閉じる」で閉じます。

以下の画面が表示されるので、「発行」をクリックします。

デプロイが完了すると自動でブラウザが起動し、アプリ画面が表示されます。

プロ美

URLが「https://demoappservice1234.azurewebsites.net/」ってなってる!インターネット上で公開されてるんだね!

アカウント登録、Todoリストの操作などもできます。

プロ太

これで、自作Blazorアプリを世界に向けて公開できましたね!

アプリはインターネット経由で誰でも自由にアクセスできる状態になっているため、セキュリティには十分注意しましょう。

まとめ

Blazorアプリのデプロイ・公開方法について学びました。

アプリ公開はアプリ開発の実務で重要なステップですが、学習においてもモチベーション向上など様々なメリットがあります。

プログラミング学習の方法・モチベーション向上については以下の記事でも触れていますので、よかったら参考にしてください。

プログラミング学習を独学で効率よく進める方法とは? プログラミング初心者にとって、プログラミング学習をどのように進めていけばよいか悩むこともあるでしょう。 今回は、私が学んだ経験を...
Webアプリとは何か?~Webアプリ開発がプログラミング学習にもおすすめな理由~ プログラミングの基礎をいったん一通り学んだら、次のステップとして何かアプリケーションを作ってみるとよいでしょう。 Webアプリケ...

今回紹介したAzure App Serviceは特に初心者にとって使いやすく、.NET環境との相性が良いデプロイ方法です。

自分の作ったアプリを世界に公開することは、プログラマとしての大きな一歩です。この記事を参考に、ぜひ自分のBlazorアプリを公開してみてください。

多くの人に自分のアプリを使ってもらい、フィードバックを得ることで、さらなる成長につなげていきましょう!

プロ太

引き続き、Webアプリ開発とBlazorを一緒に学んでいきましょう!

ABOUT ME
プロ太
プログラミングを勉強している人へ情報を発信していきます! ・情報工学分野で博士(工学)の学位取得 ・言語:C# 、Java、C/C++、Python、JavaScript/TypeScript等 ・仕事は主に上流工程(WF開発・Agile開発、OSS開発経験あり) ・趣味で開発:3Dゲーム、Webアプリ、言語処理系等

ご依頼・ご相談について

プログラミング学習のご相談、お仕事のご依頼については、
こちらのお問い合わせページをご確認ください。