はじめに
Visual Studio 2010(以下、VS2010)のBetaがリリースされ、少しずつVS2010の影が見えてきていますが、そのリリース前にASP.NETには大きな分岐点が現れました。ASP.NET MVCの正式リリースです。VS2010から標準搭載され、ASP.NETユーザーの選択肢であると同時に、Azureプラットフォームや動的言語ユーザーに対するアプローチも行えるASP.NET MVCについて、仕組みの部分をしっかりと押さえたいと思います。
必要な環境
次の環境が必要です。
- Visual Studio 2008
- Visual Studio 2008 SP1
- ASP.NET MVC RTW版
Visual Studio 2008(以下、VS2008)のインストールは、『Visual Studio 2008入門 第1回』を参考に行ってください。
VS2008 SP1のインストールは『簡単なデータ編集はお任せ! ASP.NET Dynamic Dataアプリケーション』を参考に行ってください。
インストーラの入手先
ASP.NET MVC RTW(Release To Web)は、Microsoftダウンロードセンターから入手できます。インストールはウィザードに従って進めるだけです。
ASP.NET MVCのソースコード
ASP.NET MVCはソースコードも確認できます。ソースコードはCodePlex上にあるので、気になる方はこちらも併せてダウンロードしてみるといいでしょう。ASP.NET MVCのソースコードはMs-PL(Microsoft Permissive License)で公開されています。Ms-PLでは、ソースの商用、非商用の目的で参照、変更、再配布ができます。
ASP.NET MVCの持つ機能
ASP.NET MVCはASP.NETの名が付く通り、ASP.NETのランタイムを利用しているため、ASP.NET特定の機能も利用できますが、実質別のフレームワークと言っていいほど開発手法や開発に関する考え方が異なっています。大枠でですが、最初に、ASP.NET MVCがどのような機能を持っているのか紹介します。
- URLルーティング
- MVCへの明確な分離
- 認証機能
- フィルタ属性
- キャッシュ機能
- セキュリティ機能
- 単体テストの容易性
今回触れる部分
今回は新たなASP.NETのフレームワークASP.NET MVCで簡単なアプリケーションを作るために必要となる前提知識を紹介します。大枠で言うと、「URLルーティング」「MVCへの明確な分離」「認証機能」の一部までを取り扱います。他にも、従来のASP.NETとの違いやHtmlHelper
クラスなど、実開発で利用するポイントについても解説するので、ASP.NET MVCの基本は本稿で学べます。
- ASP.NETとASP.NET MVCの比較
- URLルーティング
- ModelのデータとViewDataの利用方法
- 認証機能
- HtmlHelperクラス
- VS2008のASP.NET MVC作成サポート機能
- デザイン・ギャラリーの利用
- サンプルアプリケーションの作成
ASP.NET MVC概要
さて、本題の前に少しASP.NETについて振り返ってみましょう。Visual Studio .NETと同時に登場したASP.NETは「Webの知識を深く知らなくとも、既存のクライアントアプリケーションのような開発ができる」というメリットを前面に出したフレームワークだったので、クライアント開発しかしたことがないプログラマーも積極的に開発を進められました。
具体的な仕組みとしてはポストバック・ViewState・コードビハインドがあり、これらがWeb開発未経験者の大きな助けとなったと言えます。また、ASP.NET AJAXの登場やVS2008のIDEの機能強化も手伝い、現在においてもASP.NET開発は非常に生産性が高いと言えます。
しかし、少し複雑な開発をするにはHTML+CSS+JavaScriptの関係を深く知る必要がありました。特に、WebFormモデル(従来のASP.NET開発)は、コードビハインド型が主流です。コードビハインド型はUIとビジネスロジックを分離できますが、実行時にはUIとロジックを合体させてコンパイルします。このため、現状のテストはWebサーバー(仮想サーバーもしくはIIS)を起動し、UIから該当のビジネスロジックを実行する必要がありました。つまり、クラスに対して行う単体テストよりも、コードビハインドのビジネスロジックのテストを行うためには工夫や多くの作業が必要でした。
また、Webの世界でメジャーだったMVCアーキテクチャを利用した開発を行いたいという要望も多くありました。
今回登場したASP.NET MVCフレームワーク(以下、ASP.NET MVC)は、従来のWebFormモデルとは異なり、テスト駆動に進化したASP.NETのフレームワークです。ただし、ASP.NET MVCはWebFormモデルから分離して構築されたフレームワークであると考える必要があります。
WebFormモデルで多用していたViewStateやPostBackから離れたアプリケーション構築を行わなければなりません。
既存のWeb技術者に対しても提供されたフレームワーク
ASP.NET MVCはASP.NET開発者の選択肢追加の他に、既存のWeb開発者に対して.NETアプリ開発の間口を広げる役割も果たしそうです。理由はいくつかあります。例えば、PHPライクなViewの書き方が挙げられます。<% %>でコードを埋め込めます。他にも、.NET Framework上で動作するIronPythonやIronRubyなどを利用してコーディングを行えるようになります(IronRubyは未だにRTMしていません)。PythonやRubyはそれぞれDjangoやRailsといったメジャーなフレームワークが用意されていますが、.NETでそれらのフレームワークに対応するのがASP.NET MVCです。ASP.NET MVCはDjangoやRailsを意識して作られた側面もあるので、Python、Rubyユーザーにとっては言語はそのままに、ASP.NET MVCならではの特性と.NET Frameworkのクラスライブラリを覚えることで、移行に関するコストも最小限に抑えることができます。