SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

.NET最新版でASP.NET Core

.NET 6でASP.NET CoreのRazor Pagesアプリケーションを理解しよう

.NET最新版でASP.NET Core 第2回


  • X ポスト
  • このエントリーをはてなブックマークに追加

 本連載では、マルチプラットフォーム化が進む.NETと、そのWebアプリケーション開発フレームワークであるASP.NET Coreの全体像を俯瞰します。今回から2回にわたり、サーバサイドのページレンダリングエンジンであるRazor Pagesを取り上げます。前半にあたる本稿では、テンプレートからアプリケーションを作成して、Razor PagesによるMVVMパターンのアプリケーションの基本を理解します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 本連載では、マルチプラットフォーム化が進む.NETと、そのWebアプリケーション開発フレームワークであるASP.NET Coreの全体像を俯瞰します。ASP.NET Coreは、アプリケーションの目的や開発スタイルに応じて選択することができる多彩なサブフレームワークを搭載しています。それらの基本的な性質や機能を読者に示すことで、ASP.NET Core導入の一助になることを目的とします。

対象読者

  • 「Core」以前のASP.NETに慣れ親しんだ方
  • Web開発の新しい選択肢としてASP.NET Coreを理解したい方
  • ASP.NET Coreの多彩なフレームワークを俯瞰したい方

必要な環境

 本記事のサンプルコードは、以下の環境で動作を確認しています。

  • macOS Big Sir / Windows 10 (64bit)
    • .NET SDK 6.0.100
    • Google Chrome 96

Razor PagesとMVVMパターン

 まずは、Razor Pagesとはどのようなフレームワークなのか? ということを掘り下げていきましょう。

Razor Pagesとは?

 Razor Pagesは、ASP.NET Core 2.0から導入された、「ページ指向」のWebアプリケーションフレームワークです。ページ指向とはどういうことかというと、ひとつのページにひとつのソースファイルが対応し、フォルダの構造がそのままサイトの構造になっているものです。あるページをユーザーに見せたいと思ったら、そのページを然るべきパスに置いていくことになります。これがRazor Pagesの基本であり、シンプルかつ直感的にわかりやすいフレームワークです(図1)。

ページ指向のRazor Pages

図1 ページ指向のRazor Pages

 ページのソースファイルは、ページの構造を記述する.cshtmlファイルと、後述するページモデルを記述する.cshtml.csファイルで構成されます。.cshtmlファイルには通常のHTMLタグとは別に、Razorと呼ばれるビューエンジンに基づくコードを埋め込むことができます。

 Razorにおけるコードは、@から始まるRazor構文によって記述していきます。Razor構文では、変数やメソッド呼び出しによる式(インライン式)、まとまったコード(コードブロック)の実行などが可能です。以下は、Razor構文の例です。

<h1>@Model.Title</h1>           // インライン式(コードナゲット)

@{                              // コードブロック
    @ViewBag.Title = "Content";
}

 ASP.NET Web Formsなどの経験があるなら、<%……%>に相当するものと思えばよいでしょう。Razor構文によって書かれた部分は、ページの呼び出し時にサーバサイドでレンダリングされ、適切なHTMLタグやリテラルに置き換えられてWebブラウザで表示されます。Razor構文については、実際のファイルを見ながら後ほど説明していきます。

MVVMパターンとは?

 Razor Pagesはページ指向のフレームワークと書きましたが、MVVMパターンに準拠したフレームワークであるとも言われます。これは、ASP.NET MVCがMVCパターンに準拠したフレームワークであることに対比しているのではないかと思われますが、このMVVMパターンとは何でしょうか?

 まず、上述のようにMVVMパターンを取り上げる際に比較対象にされるMVCパターンがあります。MVCパターンは有名なので、MVVMパターンは知らないけどMVCパターンはよく知っているという人も多いのではないでしょうか? MVVMパターンについて掘り下げる前に、MVCパターンについて簡単におさらいしましょう。

 MVCパターンとは、アプリケーションの構成要素をモデル(Model:M)、ビュー(View:V)、コントローラ(Controller:C)に分割し、それぞれが独立して協調しながら動作する設計モデルです(図2)。Modelはデータ処理、ビューはUIの構築、コントローラは要求の振り分けを行います。本連載で取り上げる予定のASP.NET MVCをはじめ多くのWebアプリケーションフレームワークで採用されていますが、単純なアプリケーションでも設計が煩雑になりがちで、コントローラに負荷が集中しがちという欠点もあり、それに代わる設計モデルが模索されてきました。

図02-02:MVCパターン

図2 MVCパターン

 MVVMパターンは、MicrosoftのWPF(Windows Presentation Framework)やSilverlightに発した設計モデルと言われます。データ処理を扱うモデル(Model:M)とUIを担うビュー(View:V)の間にビューモデル(ViewModel:VM)が介在し、ビューとビューモデルの間は双方向のデータバインド(表示上の項目とデータ上の項目を結び付けること)という仕組みで、相互にデータの反映を行うようになっています(図3)。

図02-03:MVVMパターン

図3 MVVMパターン

 Razor Pagesは、このMVVMパターンを取り入れたWebアプリケーションフレームワークです。上記にて、Razor Pagesにおけるページ(これをRazorページと呼びます)は.cshtmlファイルと.cshtml.csファイルから構成されると書きました。この.cshtmlファイルがビューに相当し、.cshtml.csファイルがビューモデル(Razor Pagesではこれをページモデルと呼んでいる)に相当します。モデルの部分は、アプリケーションの内容に応じて独自に構築します。ビューモデル(ページモデル)の基本的な部分はRazor Pagesが受け持ってくれますから、MVVMパターンを活かすのに特別な注意は不要です。

 やや概念的に過ぎた感があるので、ここからは実際にアプリケーションを作成し、生成されるファイルの内容を見ながら具体的なところに踏み込んでいきましょう。

次のページ
プロジェクトの作成

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
.NET最新版でASP.NET Core連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 山内 直(WINGSプロジェクト ヤマウチ ナオ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook <個人紹介>WINGSプロジェクト所属のテクニカルライター。出版社を経てフリーランスとして独立。ライター、エディター、デベロッパー、講師業に従事。屋号は「たまデジ。」。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/15824 2023/05/26 17:10

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング