This article is currently in the process of being translated into Japanese (~93% done).
Introduction
MicrosoftがASP.NET MVC フレームワークを初めて開発したとき、コンテンツはWebFormsページによって表示されていました。しかしWebFormsは、開発者が慣れていた他のMVCフレームワークほど柔軟性がなく、ViewStateやサーバーコントロールなどのオーバーヘッドは非常に大きいものでした。そこで、MicrosoftはMVCフレームワークに対して、さらにシンプルで軽量な言語・ビューエンジンを実装することを決断します。それはRazorと名付けられ、ASP.NET MVC バージョン3の一部として2011年1月にリリースされました。
Razorは開発者の好みの.NET言語に基づいて書くことができます。このチュートリアルではC#を用いてRazorを説明していきますが、VB.NETでRazorを使うこともできます。
Razorを使う理由
Razorを使う最も大きな利点は、クライアントサイドのマークアップ(HTML)とサーバーサイドのコード(C#やVB.NET)を、混在させられることです。しかも、それらの構文間を明示して行ったり来たりする必要がありません。以下のASP.NET WebFormsでの例を考えてみましょう。
<p>Hello, world - my name is <%= name %> and the current date is: <%= DateTime.Now.ToString() %></p>
Razorでは@を先頭に付けるだけでサーバーサイドの変数を参照することができます。上記の例をRazorで書き直すと、以下のようになります。
<p>Hello, world - my name is @name and the current date is: @DateTime.Now.ToString()</p>
上記のシンプルな例では打鍵数がそれほど減るわけではないですが、長期的に見れば、ページの構築やマークアップとコードの結合作業は、はるかに簡単で素早くできるようになります。ビューに条件文を書く場合など、より高度なことをする際に、この特長が威力を発揮します。
<%
if(Request.QueryString["test"] != null)
{
%>
<p>Lots of markup here...</p>
<p>Test value: <b><%= Request.QueryString["test"] %></b></p>
<p>And even more here...</p>
<%
}
%>
Razorでは以下のようになります。
@if(Request.QueryString["test"] != null)
{
<p>Lots of markup here...</p>
<p>Test value: <b>@Request.QueryString["test"]</b></p>
<p>And even more here...</p>
}
まとめ
上記の例からわかるように、Razorを用いればマークアップとコードの結合が非常に簡単になります。次章からは、Razorの構文とその動作の仕組みをより詳しく見てきましょう。