ASP.NET MVC Tools Updateについて
1月にリリースされたASP.NET MVC 3(以下、MVC 3)ですが、4月にASP.NET MVC 3 Tools Update(以下、Toolst Update)がリリースされました。このTools Updateでは、MVC 3アプリケーション開発時に役立つプロジェクトテンプレートと、ツールが含まれています。Tools Updateで更新される内容は以下のとおりです。
- 新しいプロジェクトテンプレート
- Entity Framework 4.1の統合
- 新しいコントローラー作成ダイアログ
- Scriptフォルダの更新
- NuGet 1.2へのアップデート
それぞれ掘り下げてみてみます。
新しいプロジェクトテンプレート
プロジェクトテンプレートが新しくなりました(図1)。
1. イントラネットアプリケーションテンプレートの追加
RTW時点では空のプロジェクトとインターネットアプリケーションの2つでしたが、新たにWindows認証を使用するイントラネットアプリケーションのプロジェクトテンプレートが用意されました。Windows認証部分が簡略化されたことにより、イントラネットアプリケーションの構築がしやすくなったと言えます(図2)。
実行すると、現在のWindowsアカウントが右上に表示されます。
2. HTML5のマークアップ使用が容易に
[HTML5 セマンティック マークアップを使用する]にチェックを付けた場合、初期プロジェクトテンプレートのViewPageがHTML5対応の記載へと変化します。ビューエンジンを、Razorにして作成した場合の_Layout.cshtmlを記載します。
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>@ViewBag.Title</title> <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script> </head> <body> <div class="page"> <header> <div id="title"> <h1>マイ MVC アプリケーション</h1> </div> <div id="logindisplay"> @Html.Partial("_LogOnPartial") </div> <nav> <ul id="menu"> <li>@Html.ActionLink("ホーム", "Index", "Home")</li> <li>@Html.ActionLink("バージョン情報", "About", "Home")</li> </ul> </nav> </header> <section id="main"> @RenderBody() </section> <footer> </footer> </div> </body> </html>
太字の部分でご確認いただけますが、プロジェクトテンプレート内でHTML5の要素に沿った部分の記載はDivタグから各種要素に置換されています(meta要素にcharset属性が追加されています)。これにより、大枠部分のテンプレートを流用する場合は意識することなく利用できます。
認証部分と、HTML5対応のテンプレートですが、ともに新規開発の時には利用しやすいと言える改良でしょう。
Entity Framework 4.1の統合
Tools UpdateによりEntity Framework 4.1もインストールされています。Entity Framework 4.1の最大の特徴はなんといってもコードファーストと言えるでしょう。この追加により、MVC 3で新規開発を実施する際には、Railsのスキャフォールディングのように簡単にアプリケーション開発が実施できるようになりました。詳しくは「ASP.NET MVC 3 Tools UpdateによるEF コードファーストとデータスキャフォールディング」を参照ください。
新しいコントローラー作成ダイアログ
Tools Update以前は、コントローラー作成時に名前を設定し、内部処理はないCRUDアクションメソッドのひな型を用意するかどうかのチェックボックスがあるだけでした。Tools Updateからは、Entity Frameworkとの統合が進み、スキャフォールディング機能が強力になりました。コントローラー上のCRUD、新しいコントローラー作成ダイアログではコントローラーだけでなく、CRUD対応のビューページまで自動で生成してくれます(図3)。
(1)コントローラーのテンプレート選択
図4のように3種類のテンプレートから選択し、コントローラーを作成できます。
従来通り、名前のみ設定し空のコントローラーも作成できますし、CRUDアクションメソッドのひな型を用意することもできます。新機能は中段にある項目で、これを選択するとEntity Framework 4.1を使用してスキャフォールディングをフル活用したコントローラーの作成もできます。(2)、(3)は中段を選択していないと選択できません。
(2)モデルクラスの選択
Entity Framework 専門の選択で、モデルクラスを選択します。選択は、Entity Frameworkにおける、データベースありきでエンティティを作成する"データベースファースト"、エンティティありきで作成する"モデルファースト"そして、コードありきでエンティティを作成する"コードファースト"で利用できます。
なお、ここだけではモデルをデータベースに接続できません。(3)のデータコンテキストクラスを選択することで、エンティティとデータベースを接続できます。
(3)データコンテキストクラスの選択
DbContextクラスの派生クラスまたは、ObjectContextクラスの派生クラスを指定します。DbContextクラスはエンティティセットをCRUD操作を実現するDbSetのプロパティを定義します。これにより、モデルクラスとその実態となるデータベースの接続が確立します。こちらも詳しくは「ASP.NET MVC 3 Tools UpdateによるEF コードファーストとデータスキャフォールディング」を参照ください。
単純な入出力の確認やアプリケーション作成の場合にはこの機能は非常に強力です。
Scriptフォルダの更新
Tools Update時点でのjQuery/jQuery UIの更新が実施されています。
他にもHTML5とCSS3でアプリケーション構築時に、HTML5未対応のブラウザでもレイアウト崩れが発生しないように制御するModernizrも追加されています(もちろん組み方次第ではレイアウト崩れが発生する可能性もありますのでその場合は都度対応が必要です)。MVC 3 RTWから変更されているスクリプトファイルは以下のとおりです。
- jQuery 1.5.1
- jQuery UI 1.8.11
- modernizr-1.7
Modernizrファイルは、"HTML5 セマンティック マークアップを使用する"にチェックを付けた場合、初期レイアウトページに配置されるので、大抵の場合開発者はHTML5によるアプリケーション開発に注力することができます。
jQueryに関してはNuGetで最新版に更新できますので、適時アップデートを実施してください。
NuGet 1.2へのアップデート
MVC 3リリース時に提供されたパッケージマネージャーNuGetですが、Tools Updateをインストールすることで1.2へとアップデートされます。
しかし、執筆時点でNuGetは1.3が公開されていますので、必要があればそちらにアップデートしてみるのも良いでしょう。変更点の一部は、以下のとおりです。
- パフォーマンス改善
- 一度ダウンロードした情報をキャッシュする機能
- WiXプロジェクトと.NET Micro Frameworkプロジェクト上での利用をサポート
お手軽な方法でVisual Studio上からの更新方法を紹介します。メニューから次のように選択します。[ツール]-[拡張機能マネージャー]-[更新プログラム]選択すると、中央のペインにNuGet Package Managerが表示されますので、更新ボタンを押し、再起動をするだけです(図4)。
上記が、Tools Updateの大まかな概要です。MVC 3のdllに対しては一切手が加わっていないため、マイナーバージョンアップとは記載されていませんが、MVC 3開発の効率を向上させるアップデートであることは確認できたのではないでしょうか。