そぎ落とされたコードナゲット!? Razor の魅力
つまり Razor == @ である
ある意味、こう例えても間違いないかもしれません。
いやいや、変な例えはここまでにして、"Razor" とは何か?その魅力をお話ししましょう。
"Razor" とは、2010 年 7 月に発表になった「ASP.NET の新しい View Engine」の記法 (Syntax) の名称です。
Introducing “Razor” - a new view engine for ASP.NET
同じく 7 月には WebMatrix と呼ばれる無償の Web サイト制作ツールが発表になり、先日その Beta 3 版がリリースされました。このツールを使うと、例えば何かしらのデータをサーバー側で Web ページに埋め込んで動的に HTML を生成する場合に、できるだけ簡単に、そしてシンプルに記述することができるようにデザインされた記法が "Razor" です。
"Razor" 記法は、@ (アットマーク) を使用することが特徴の一つです。
(巷では @ は “ナルト” と呼ばれているらしい・・・w)
例えば、現在時刻を表示する Web ページの記述は下記のようになります。
● Razor (.cshtml, .vbhtml)
<html>
<body>
Hello at @DateTime.Now
</body>
</html>
これを PHP で書くと下記のようになります。
● PHP (.php)
<html>
<body>
Hello at <?php echo date("F j, Y, g:i a") ?>
</body>
</html>
同じく ASP.NET Web フォーム (.aspx) の記述は下記のようになります。
● Web フォーム (.aspx)
<html>
<body>
Hello at <%= DateTime.Now %>
</body>
</html>
ASP.NET Web フォームではコードナゲットと呼ばれる <% ... %> の記述でページ内にさまざまなデータやスクリプトを埋め込む記述をします。同様に PHP では <?php ... ?> の記述です。
これが、"Razor" を使用すると @ だけで済んでしまいます。つまり、終了タグを書かなくてもいいんですね。これは "Razor" 記法を解析するエンジン (パーサー) が大きく進化していることを意味します。通常は、構文として開始タグと終了タグを記述してデータの埋め込み部分をパーサーが明確に判断できるようにします。これによって、パーサーを実装しやすくしているのです。ただその反面、Web ページをコーディング (マークアップ) する人の手間を増やしてしまっていることになります。
"Razor" では、まずは Web ページのコーディングをシンプルに、そして文字数やキー入力を最小限にすることを第一に仕様策定がおこなわれました。そして、終了タグなんて書かないで @ ひとつで記述する仕様となりました (素晴らしい!)。そのかわり、"Razor" パーサーの実装チームはかなり苦労したものと思います。
現在では、この "Razor" 記法を解析して HTML にレンダリングする処理エンジン (View Engine) を ASP.NET Web Pages と呼び、下記からコンポーネントやドキュメントがダウンロードできるようになっています。
ASP.NET Web Pages with Razor Syntax
こちらのダウンロードサイトには、Razor 記法についてまとめた PDF ドキュメントも公開されています。(現在は英語版ですが、日本語翻訳も予定しています)
この ASP.NET Web Pages は、前述の WebMatrix をインストールすると同時にインストールされます。さらには、こちらの MSDN ブログ でもご紹介しました ASP.NET MVC 3 RC においても、"Razor" 構文で書かれた View を処理するために、この ASP.NET Web Pages が使用されます。
"Razor" は「かみそり」といった意味があります。つまり、不要なものをそぎ落としてシンプルに記述できる記法、それが "Razor" なのです。お試しを!