特集:ASP.NET 4概説(後編)

ASP.NET 4/ASP.NET MVC/Dynamic Dataの新機能

山田 祥寛
2010/07/13
Page1 Page2 Page3

SEOの強化 ― RedirectPermanentメソッドなど ―

 やや使い古された感のあるキーワードではあるが、昨今のアプリケーション開発において、最低限のSEO(=検索エンジン最適化)対策はやはり無視できないものだ。ASP.NET 4でもSEOを手軽に維持できるよう、ちょっとしたメソッド/プロパティが追加となっている。

(1)RedirectPermanentメソッド

 従来のRedirectメソッドは、内部的にはHTTPステータス・コードとして「302 Moved Temporarily」(一時的な移動)を出力している。このRedirectメソッドを、古いアドレスから新しいアドレスに移行するような用途で利用するのは望ましくない。というのも、「302 Moved Temporarily」は「一時的なアドレスの移動」を意味するため、検索エンジンのクローラも移動先のアドレスを「一時的なもの」と見なして記録しないためだ。

 今後は、上記のような用途ではRedirectPermanentメソッドを利用するのが望ましい。RedirectPermanentメソッドは内部的に「301 Moved Permanently」(恒久的な移動)を発行するので、クローラも新しいアドレスを認識するようになる。

(2)MetaKeywords/MetaDescriptionプロパティ

 SEOという観点では、<meta>タグのKeyword属性、Description属性に適切な値をセットしておくことは重要だ(Googleでは重要視されていないといわれるが、Yahoo!では参照されているとされる)。

 もっとも、これらの情報を動的にセットするのはやや面倒であった。具体的な方法は、「.NET TIPS:[ASP.NET]ページのタイトルやメタ情報を動的に変更するには?」も併せてご参照いただきたい。

 しかし、ASP.NET 4で追加されたMetaKeywords/MetaDescriptionプロパティを利用することで、ごく直感的にこれらの情報を設定/参照できるようになる。具体的には下記のようなコードになる。

Page.MetaKeywords = "ASP.NET, SEO, メタ情報";
Page.MetaDescription = "ASP.NET 4の最新情報をお届けします";
MetaKeywords/MetaDescriptionプロパティの利用例(C#の場合)

 そのほか、@Pageディレクティブの同名の属性として指定することも可能だ。コンテンツ・ページで静的にメタ情報を設定する場合には、こちらの方法も併用すると便利だろう。

Web開発の新たな選択肢「ASP.NET MVC」

 ASP.NET 3.5では拡張ライブラリとして提供されてきたASP.NET MVCが、ASP.NET 4ではASP.NET MVC 2となって、いよいよ標準搭載された。登場して間もないフレームワークであることから、バージョン1.0ではまだ様子見の感が強かったが、標準搭載を機に普及への弾みに期待したい。

 ASP.NET MVCについては、近日、詳細な入門記事を予定しているので、本稿では主な追加機能について軽く触れるにとどめる。バージョン1.0を利用したことがある方であれば、垂涎(すいぜん)の機能追加ばかりである。

(1)エリア(区分)

 エリアとは、1つのアプリケーションをサブアプリケーションに分割するための仕組み。エリアを利用することで、特定の機能単位でプロジェクトを独立させることができるので、より並行開発が容易になる。

(2)サーバサイド/クライアントサイド検証の強化

 従来のバージョンでは、定型的な検証機能ですら一からコードを記述しなければならなかった。しかし、ASP.NET MVC 2ではアノテーション検証(=Data Annotation検証)に対応した。

 アノテーション検証を利用することで、データ・モデルに対して検証属性を付与するだけで、必須検証、範囲検証、正規表現検証などの定型的な検証ルールを実装できる。データ・モデル駆動であるので、複数のコントローラに検証ロジックが散在しないのはもちろん、クライアント/サーバ双方で検証ルールを共有できるのはうれしいポイントだろう。

(3)型付けされたビュー・ヘルパー

 ビュー・ヘルパーの多くが、型付けされたラムダ式に対応した。具体的には、これまで、

<%= Html.TextBox("name") %>
(nameプロパティをテキストボックスにひも付け)

のように記述していた式を、

<%= Html.TextBoxFor(m => m.name) %>*1

のように記述できるようになった。プロパティの指定を、文字列ではなくラムダ式として指定できるようになったことで、IntelliSenseが利用できる、記述ミスもコンパイル時に検出できる、などのメリットがある。

*1 変数mは、ビューに関連付いたデータ・モデルを表すものとする。

 また、ビューに関連付いたモデルを自動認識するDisplayFor/EditorForなどのメソッドにも注目だ。例えば、

<%= Html.EditorFor(m => m) %>

のように記述することで、データ・モデルの内容を自動的に認識して、必要なフォーム要素を自動生成できる(DisplayForメソッドであれば、表示ラベルを生成)。定型的なフォームを大量に生成するようなケースでは、強力な助っ人となるはずである。

新たな式構文 <%: …… %>

 正確には、ASP.NET MVCではなくASP.NET 4そのものの追加機能であるが、もっぱらASP.NET MVCで有用と思われるため、ここで触れておく。<%: …… %>(通称、コード・ナゲット)は、エンコード処理に対応した埋め込みブロックである。具体的には、以下のコードはいずれも意味的に等価である。

<%: value %>
<%= HttpUtility.HtmlEncode(value) %>
<%= Html.Encode(value) %>
エンコード処理に対応した埋め込みブロック(通称、コード・ナゲット)
がエンコード処理に対応した新しい式構文。と意味的に同じ。

 従来、エンコード処理を行うために、いちいちHtml.Encodeメソッドを呼び出すのは面倒なものであったが、<%: …… %>によって、格段にタイプが楽になるし、そもそもエンコードの処理漏れを減らすことができる。

 ちなみに、<%: …… %>によるエンコード処理を除外するために、特殊な文字列型として、HTMLエンコード済みであることを表すHtmlStringクラスも追加された。これによって、HTMLとして出力したい文字列や、すでにエンコード済みの文字列が、エンコード処理されてしまうのを防ぐことができる。例えば以下のコードでは、<b>タグがエンコードされずにそのまま出力される。

<%: new HtmlString("<b>ASP.NET 4</b>") %>
HTMLエンコード済みであることを表すHtmlStringクラスの利用例

 そのほかにも、ASP.NET MVC 2では、HTTP POSTメソッドを簡単に振り分けるためのHttpPost属性や、非同期コントローラAsyncControllerも追加となっている。詳細は、後日公開予定の「ASP.NET MVC 2入門」をご期待いただきたい。

 最後に、ASP.NET Dynamic Dataの新機能を簡単に紹介しよう。


 INDEX
  [特集]ASP.NET 4概説(前編)
  ASP.NET開発者のためのVisual Studio 2010新機能
    1.Visual Studio 2010の新機能
    2.サーバ・コントロールの新機能
    3.クライアントサイド開発の変更点
 
  [特集]ASP.NET 4概説(後編)
  ASP.NET 4/ASP.NET MVC/Dynamic Dataの新機能
    1.ASP.NET 4コアの新機能
  2.ASP.NET MVCの新機能
    3.ASP.NET Dynamic Dataの新機能


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間