たったこれだけ!アクセシビリティ向上策
サーバーサイドで何ができるか
「第2回:たったこれだけ!ユーザビリティ向上策(http://www.thinkit.co.jp/article/134/2/)」では、使いやすいWebサイトのための設定を紹介しました。今回は特集のもう1つのテーマであるアクセシビリティについて考えていきます。サンプルコードがダウンロード(http://www.thinkit.co.jp/images/article/134/3/13431.zip)できますので、ご利用ください(13431.zip/5.23 KB)。
とはいえ、アクセシビリティはユーザビリティ以上にコンテンツ依存の問題です。特にハンディキャップのあるユーザーへの対応に限定すると、残念ながらサーバーサイドでできることはほとんどありません。そこで、ここではもう少し枠を広げて、さまざまなユーザーやデバイスに対して適切なコンテンツを配信する方法を紹介します。
このあたりを実践しているサイトの1つがGoogleです。日本語環境から日本のGoogle(http://www.google.co.jp/)にアクセスすると、当然ながら日本語のページが表示されます。しかし、英語環境から同じURLにアクセスすると、きちんと英語のページが表示されるのです。さらに携帯電話からアクセスした時は、同様に携帯電話向けのページになります。このように環境やデバイスによってコンテンツを自動的に切り替えることで、多くのユーザーにとってアクセスしやすいサイトになり、結果的に多くのユーザーを獲得できます。
これはなにも難しい技術を駆使しているわけではありません。Webサーバーに数行の設定を施すだけで、ほぼ同様のことが実現できます。以降で具体的な設定方法を解説しますので、英語ページや携帯電話向けページをお持ちの方は、ぜひ設定してみてください。
コンテント・ネゴシエーションとは
環境に合わせたコンテンツの自動切り替えを実現する代表的な技術が「コンテント・ネゴシエーション」です。これはHTTP/1.1規格(RFC 2616(http://www.ietf.org/rfc/rfc2616.txt))で規定された標準的な機能で、多くのWebサーバーで利用できます。特にApacheでは、とても簡単に使えるように工夫されています。
コンテント・ネゴシエーションの仕組みは単純です(図1)。多くのWebブラウザは、Webサーバーにファイルを要求する際に、表示言語の優先順位や処理できるファイル形式、文字コードなどの情報をHTTPヘッダ(データ本体と共に送られる付加情報)に含めて送信します。Webサーバー側では、これらの情報を元に用意されているコンテンツから最も適したものを選択して、Webブラウザに送り返します。このようにして、ユーザーに合わせた適切なコンテンツを表示しているわけです。
Webブラウザの中には、コンテント・ネゴシエーション用の情報をカスタマイズできるものもあります。例えばFirefoxでは、環境設定の「コンテンツ」タブにある「詳細設定」ボタンで言語選択ダイアログが表示されますが、これが実はHTTPヘッダで送信される表示言語の設定なのです。試しに「英語 [en]」を最上位にしてGoogle(http://www.google.co.jp/)にアクセスしてみると、その設定どおり英語のページが表示されます。コンテント・ネゴシエーションによって英語のページが最適であるとWebサーバーが判断したわけです。
コンテント・ネゴシエーションの仕組みがわかったので、次のページでは実際にApacheでそれを利用する方法を解説します。