ASP.NET Coreとは?
.NETにおけるWebアプリケーション開発のためのフレームワークが、ASP.NETです。ASP.NETは.NET Frameworkの時代から存在しており、.NET Core登場以降のASP.NETは特にASP.NET Coreとして区別されます。本連載で扱うのは、このASP.NET Coreです。
ASP.NET Coreには、Webアプリケーションの目的や開発手法に応じて複数のサブフレームワークが用意されています。開発するWebアプリケーションはどのようなものか、アプリケーションをどのように構成したいかによって、サブフレームワークを選択することができます。ここでは、これらについて簡単に紹介していきます。
ASP.NET Coreのサブフレームワーク
ページ指向Webアプリケーション(Razor Pages)
ASP.NET Core Razor Pagesは、MVVMパターンによるWebアプリケーション開発を行えるフレームワークです。MVVMパターンとは、アプリケーションをモデル(Model=ビジネスロジック)、ビュー(View=ページレイアウト)、ビューモデル(View Model)から構成する手法のことを言います。後述するMVCパターンに似ていますが、最後のVMはビューとモデルを紐付けるもので、UI操作によるモデルへの処理の要求や、その結果としてのビューの更新などを担います。ページ指向のWebアプリケーションなら、後述するASP.NET Core MVCより簡単に開発に取り組むことができます。
ASP.NET Coreに慣れるためにとりあえず取り組むとしたら、このRazor Pagesをお勧めします。ちなみにRazor(レイザー)とはカミソリのことです。Razor PagesのビューエンジンであるRazorはASP.NET MVC 3ではじめて導入され、MVCの「View」の部分を担いました。後述のASP.NET Core MVCに取り組むことを予定されているなら、まずはこのRazor Pagesを理解しておくと良いでしょう。
Razor PagesによるWebアプリケーションの開発については、第2回と第3回で紹介する予定です。
MVCパターンによるWebアプリケーション(ASP.NET Core MVC)
ASP.NET Core MVCは、MVCパターンによるWebアプリケーションの開発を行えるフレームワークです。MVCパターンとは、アプリケーションをモデル、ビュー、コントローラ(モデルとビューの仲介)から構成する手法のことを言います。MVCパターンによりビジネスロジックと表示系を明確に分離することで、相互の干渉を抑えたスケーラビリティの高い本格的なアプリケーション構築に柔軟に対応できます。
ASP.NETにおけるASP.NET MVCは2009年にリリースされ、それまでのWebフォームに替わるフレームワークとして、MVCパターンによるWebアプリケーションの開発を可能にしました。ASP.NET MVCは、バージョン5までが提供されました。バージョン6は提供されず、その替わりにASP.NET Core MVCとしてバージョン1が2016年にリリースされ、現在のASP.NET Core MVCに続いています。
ASP.NET Core MVCによるWebアプリケーションの開発については、第4回と第5回で紹介する予定です。ASP.NET Core MVCはビューエンジンにRazorを用いるため、Razor Pagesについて理解しておくと習得がスムーズになると思われます。
[NOTE]ASP.NET WebFormsについて
ASP.NET MVCが登場する前に使われていた、Webアプリケーション開発のためのフレームワークであるASP.NET WebForms(Webフォーム)は、.NET Frameworkにおいてのみ提供されるフレームワークであるため、ASP.NET Coreを扱う本連載では割愛しています。
C#によるクライアントサイド開発(Blazor)
Blazorは、2018年に登場したばかりの新しいWebアプリケーションフレームワークです。Blazorの最大の特徴は、クライアントサイドにおいてC#言語でプログラムを記述できることです。JavaScriptと併用することもでき、C#からJavaScriptの関数を呼び出したりすることが可能になっています。
Blazorは、サーバーサイドで動作するBlazor Serverとクライアントサイドで動作するBlazor WebAssemblyに分かれています。双方を用いて開発することができますが、どちらか一方のみを使うこともできるようになっています。
ちなみにBlazor(ブレイザー)とは造語です。コンポーネント自体はRazor構文で記述し、そこにクライアントサイドを象徴するブラウザ(Browser)の要素が加わり、Blazorという名称になったようです。
C#によってクライアントサイドの開発はどうなるのかということについては、第6回で概要のみを取り上げる予定です。そこまで待てないという読者は、同じくCodeZineの連載「C#でSPAが実現できる、Blazor WebAssemblyのはじめかた」などを参照してください。
Webサービス(ASP.NET Core Web API)
ASP.NET Core Web APIは、RESTfulなWeb API(Webサービス)を開発するためのフレームワークです。ASP.NETまではASP.NET MVCと別のフレームワークとして提供されていましたが、ASP.NET Core MVCでは共通のフレームワークとして提供されており、扱いやすくなっています。共通ではありますが、実現しようとするものはWebアプリケーションとは異なるため、本稿では別の項目として紹介します。
ASP.NET Core Web APIでは、ASP.NET Core MVCと同様にコントローラーベースで各APIの実装をやっていきます。Core 6において簡略化されたWebサービス(Minimal API)が利用可能になっており、よりシンプルな手順でWeb APIを開発できるようになっています。Swagger(OpenAPI)対応の実装がSwashbuckleとNSwagとして提供されており、双方ともほぼ同等の機能を利用することができますが、最近は後者が使われることが多くなっているようです。
ASP.NET Core Web APIによるWeb APIの開発については、第7回で紹介する予定です。
高速リモート・プロシジャー・コール(gRPC)
ASP.NET Core gRPCは、gRPCによる高速なクライアント・サーバー間の通信を行うためのフレームワークです。gRPCは、Googleの開発したリモート・プロシジャー・コールのためのプロトコルで、プログラミング言語に依存しないのが特徴です。サーバーサイドに実装されたgRPCサービスを、Web APIよりも高速に利用することができます。ですので、たとえばCRUDなどのデータベース操作といった、レスポンスが重要視されるサービスに適しています。
ASP.NET Core gRPCによるgRPCクライアントとサーバーの開発については、第8回で紹介する予定です。
リアルタイムWeb(SignalR)
ASP.NET Core SignalRは、SignalRによるリアルタイムWeb開発のためのフレームワークです。SignalRでは、クライアントサイドに実装されたメソッドをサーバーサイドから呼び出せるようにすることで、サーバーサイドからクライアントサイドへのプッシュ通知などが可能になります。これにより、リアルタイムチャットなどの即時性が必要なアプリケーションの開発が可能になります。
ASP.NET Core SignalRによるリアルタイムWebの開発については、第9回で紹介する予定です。
なお、フレームワークとは違いますが、シングルページアプリケーション(SPA)のためのテンプレートがASP.NET Core SPAで提供されています。これにより、AngularやReactのようなJavaScriptフレームワークとASP.NET Coreの相互運用が行いやすくなります。この事例は本連載では扱いませんが、Microsoft Docsの下記ページが参考になるでしょう。
.NETのインストール
ASP.NET Coreによる開発は、Windows、macOS、Linux、Dockerのそれぞれで行うことができます。本連載では基本的にCLIツールとVSCodeを用いて開発を行っていきますので、プラットフォームにかかわらず、.NETの最新版をダウンロードし、インストールしてください。
[NOTE]英語版のページが開く場合
上記URLで開くダウンロードページが英語になる場合には、開いているページのURL中の「en-us」を「ja-jp」に変更して開き直すと、日本語のページとなります。
ただし、統合開発環境であるVisual Studioが提供されているWindowsとmacOSの場合は、Visual Studioと.NETが同時にインストールされますので、.NET単独でのインストールは不要です。本連載では、適宜Visual Studioのウィザードによる操作についても取り上げる予定ですので、これを含めてVisual Studioを使用するのが明らかなら、最初からVisual Studioをインストールしてしまった方が簡便です。この場合は、Visual Studioの最新版をダウンロードし、インストールします(この手順は割愛します)。なお、上記のページからVSCodeのインストールも行うことができます。
.NETのインストール手順は、おおまかに以下のとおりです。.NETのダウンロードページを開き、対象のプラットフォームのタブ(macOSなら[macOS])を選択します。そこで表示される[.NET SDK x64をダウンロードする]をクリックします。その他のリンクは、この連載では不要なので触ることはありません。
.NETのダウンロード(Linux、macOS、Windows)
これで、インストーラ(macOSではパッケージファイル、Windowsでは実行形式ファイル)がダウンロードされます。ダウンロードされたパッケージファイルをダブルクリックするとインストーラが起動し、.NETのインストールが始まります。インストール自体に難しいところはありません。指示どおりに進めましょう。
最終的には、.NET SDK、.NET Runtime、ASP.NET Core Runtime(Windowsの場合は.NET Windows Desktop Runtimeも)がインストールされます。ターミナル(Windowsの場合はコマンドプロンプト)を開いて「dotnet --version」コマンドを実行し、以下のようにバージョンが表示されれば正常にインストールされています。
% dotnet --version 6.0.100
まとめ
今回は、.NET 6とASP.NET CoreによるWebアプリケーション開発の導入として、.NETの全体像、ASP.NET Coreの概要とサブフレームワークの紹介、学習環境としての.NETのインストールついて取り上げました。次回は、個別のサブフレームワークによるWebアプリケーション開発の実践として、まずはRazor Pagesを取り上げます。
