Tim Bray氏のブログ記事を解説したものです。Tim Bray氏はXMLの生みの親であり、最近はGoogle Developer AdvocateとしてAndroidの普及に務めています。Twitterをはじめ、最近のWebサービスにて「twitter.com/#!/timbray」のようにURLに「#!」というhash-bang(shebang)が含まれるのをよく目にしますが、Tim氏はこの流行に批判の意を示しています。
hash-bangを含むURLはAjaxを利用するために考えられたしくみです。#以降は単なるフラグメントとして処理されるため、サーバは#より前のURLを解釈しコンテンツを出力します。そしてブラウザにてJavaScriptが#以降を解釈し、以降のパスに相当するコンテンツをAjaxにて取得しコンテンツを書き換えます。このしくみができた背景は、Ajax後のコンテンツをSEO(Search Engine Optimization、検索エンジン最適化)の観点からPermalink(固定リンク)にしたいが、一部のブラウザがURLを変更できないため、JavaScriptでフラグメントが変更できるしくみを利用しよう、という事情があります。しかもGoogleが「#!」を「?_escaped_fragment_=」に変換してクロール可能にする仕様を公開したため、FacebookやLifehacker.comをはじめ各所で使われるようになりました。
Tim氏は「サーバが認識するURL(#!以前の部分)が1つのドキュメントと対応するというWebの大原則に背くルール違反」であると、これまで培ってきた土壌が壊れてしまうことを憂慮しています。しかし、Tim氏のブログ記事のコメントには「もうすでに普及しているし転送量も軽減できるのでよいのでは」といったコメントも見受けられます。このように、単に流行っているからといって安易に取り込まず、何に重点を置くか考えておく必要がありそうです。
ちなみに、現在人気が高まっているHTML5のHistory APIを利用することでhash-bang URLを使わなくて済みます。GitHubのコードブラウザで、画面全体をリロードせずにディレクトリ移動ができる機能でその恩恵を受けている人も多いことでしょう。ただし、残念ながらInternet ExplorerやOperaはHistory APIに対応していないため、hash-bang URLがなくなるには少し時間がかかりそうです。
URL:http://d.hatena.ne.jp/karasuyamatengu/20110210/1297363019