Umbraco CMS の次期バージョンである Umbraco 5 (Jupiter) は ASP.NET MVC 3 ベースで作成される予定であり、Orchard CMS も MVC 3 ベースで開発中なので、ASP.NET MVC を勉強しないといけないと思っていたのですが、11月8日に ASP.NET MVC 3 RC が公開されたので、ASP.NET MVC を少し学習しています。

1. マニュアルについて

Microsoft の ASP.NET MVC の日本語のページもかなり充実してきており、ASP.NET MVC チュートリアルMVC Music Store チュートリアルの日本語訳ができていて参考になりました。ただし、MVC Music Store チュートリアルについては、日本語訳は、バージョンが 0.8 がやっと公開されたところですが、英語版では Ver 1.0 が 10月 8日に公開されていて内容も Ver 0.8 よりかなり充実しています。これらは ASP.NET MVC 2 についてのものですが、ASP.NET MVC 3 については、CodeZine 等で以下のとおり Scott Guthrie 氏のブログが翻訳されているので、それをみれば理解することはそれほど難しいことではないと思います。

ASP.NET MVC 2 のプロジェクトから ASP.NET MVC 3 へのアップグレードの方法については、リリースノート(英文)に、msdn には、ASP.NET MVC 3 のドキュメント(英文)があります。

2. MVC 3 の開発環境について

ASP.NET 4.0 及び Visual Studio 2010 が必要です。Visual Studio は、Visual Web Developer 2010 Express でも大丈夫なので、無料で環境を構築することができます。Visual Studio 2010 Professional 以上がないと単体テストの作成ができませんが、MVC を学習するのであれば、Web Developer Express でも特に問題はありません。

3. MVC 3 Razor について

MVC 3 での新機能の目玉の一つは、Razor ビューエンジンです。RC 版では、Visual Studio のインテリセンスの機能も有効になって使いやすくなっています。MVC 3 Razor の機能については、Scott Guthrie 氏のブログでわかりやすく解説されているので理解は容易でした。Razor の売りは、@文字を先頭につけてコード・ブロックを示し、明示的に閉じる必要がなくなったこと、レイアウトの記述の簡略化、@model キーワードの導入により入力が効率化できるということです。どの程度効率化できるかを具体的に比較するため、MVC Music Store チュートリアルのサンプルを Razor に変換してみました。下の図のようになり、文字数が647文字から348文字に減少し、見た目もかなりすっきりしたので、かなり効果があるのがわかります。少し話はそれるのですが、このような機能は、使う側には簡単になのですが、作る側では構文を自動的に解析するという高い技術力が要求されるし、その手間も相当なものだと思うのですが、このようなものを開発してしまう Microsoft の技術力には感心させられました。

MVC Music Store チュートリアル英語版 Page 86

image

MVC 3 Razor の場合

image

4. パッケージについて

ASP.NET MVC では、jQuery 等の javascript のライブラリは使いやすくなったのですが、一方で ASP.NET Form のコンポーネントの多くが使用できなくなりました。開発作業を効率化するためには、OSS や商用のコンポーネントが広く利用できるのは重要なことです。ASP.NET MVC でも MVC 3 になって、このことがかなり考慮されてきているように感じられました。

まず、MVC 3 をインストールすると NuGet Package Manager が Visual Studio にインストールされるようになりました。Nuget は、プロジェクトにパッケージを簡単にインストールするためのツールで、下の図のように簡単にインストールできるようになります。
image

次に、MVC 3 をインストールすると System.Web.Helpers に以下のようなヘルパーが登録され利用できるようになっています。

ヘルパー

概要

Chart

チャートの描画

Crypto

ハッシュアルゴリズムを使ってパスワードの作成

WebGrid

データベースのデータ等の表の描画。ページングと並べ替えをサポート

WebImage

画像の描画

WebMail

電子メールの送信

また、WebMatrix では、Twitter.Search や ReCaptcha 等の機能を持つ Microsoft.Web.Helpers.dll というヘルパーが提供されますが、Visual Studio からもこのアセンブリを参照すれば利用することができます。

例えば、Chart に関していえば、ASP.NET Charting Controls を少し設定をしてやれば(参照)、以前から MVC で利用することができましたが、MVC 3 からは正式に対応するということで、設定無しで Razor に直接記述することもできるし、Controllers に記述することができます。

WebMatrix のチュートリアルにある ASP.NET API Quick Reference にある例では、Razor に記述する場合は、

image

Controllers に記述する場合は、以下のように記述して、Razor に <img src="@Url.Content("~/home/GetChart")" /> というように記述してやれば上と同じように表示されます。
image

また、Write に代えて Save にすればファイルにグラフのイメージを保存できるし、SaveToCache にすればキャッシュにイメージを保存することができます。Chart については、Google Chart ToolsJS Chart という選択肢もありますが、Chart にはサーバー側で作成できるという特徴があります。このように、ASP.NET MVC においても、多くのツールが提供されより楽しくプログラミングができるようになることを期待しています。