筆者がソフトウェア業界に携わった期間は長くなく、これまでにASP.NET MVC、ASP.NET Core & Blazor、ASP.NET Core & Angularという3つのアーキテクチャに触れてきました。ASP.NET MVCは筆者がソフトウェア業界に入ったばかりの新人時代で、先輩の指導のもとでプロジェクトを完了したため、あまり実感はなく、フロントエンドとバックエンドの違いや、フロントエンドがHTTP Requestでバックエンドからデータを取得し、バックエンドがデータを返し、フロントエンドが結果をページに表示する程度の理解しかありませんでした。
プロジェクトが終盤に差し掛かった頃、主管が強く推進する方針転換によりASP.NET Core & Blazorに移行し、筆者にテンプレート作成が任されました。ネット上のリソースをかき集めて何とか使えるアーキテクチャを構築したところ、BlazorはASP.NET MVCとは大きく異なり、フロントエンドに弱い型のJavaScriptが不要で、フロントエンドもバックエンドも強い型の世界であることに気づきました。これは筆者の怠け者な性格に大いに役立ちました。しかし、残念ながらその後の顧客要件により、ASP.NET Core & Angularに切り替えることになり、Blazorを深く学ぶことはできませんでした。
とはいえ、失うものがあれば得るものもあります。新しいプロジェクトの高いプレッシャーと同僚の指導のもと、AngularのModule、Componentの階層構造や、ObservableがAjaxに似た概念であることを大まかに理解しました。まだ半分しか理解できていませんが、Angularにはかなり慣れ、Componentの概念がBlazorと似ていること、つまり異なる道を辿っても同じ目的地に至ることを発見しました。
筆者が鉄人レースに参加する目的は経験を記録することにあるため、一部の記述はやや冗長になるかもしれません。また、ソフトウェア業界での経験は豊富ではありませんので、記事の内容に誤りがあれば、遠慮なくご指摘いただければ幸いです。
今回の鉄人レースでは、Blazorを使ってユーザーがログを入力できるWebサイトを作成しようと考えています。カバーする予定の項目は以下の通りです。
- Blazorの概要
- Blazor Server、Blazor WebAssemblyの2つのホスティングモードとプロジェクト構成
- Componentコンポーネントの紹介、イベント処理
- ASP.NET Core
- EF Core
- ログイン、認可
BlazorはC#で記述します。VBやF#でも記述可能ですが、筆者はC#に慣れています。C#は.NETフレームワークに属し、.NETフレームワークはVisual Studioでの開発が便利なため、Visual Studio(バージョン.NET 5)を使用します。ASP.NET、.NET Framework、NET Coreの違いについては、以前誰かが詳しく説明しているのを見て非常に参考になりました。時間が許せば、後日共有する予定です。また、プロセスではgitをバージョン管理ツールとして使用し、最終的なコードはGitHubに公開します。
注:本記事のコードは .NET 6 + Visual Studio 2022 でリファクタリングされています。元のリンクからリファクタリング後のコードと比較学習できます。ご一読ありがとうございます。原作者を応援します。