doc drawn up: 2004-04-15 .. 2022-01-24

最適化 Web サイトの試み

僕は、HTML 文書の記述に関しては、テキストエディタで直接タグを生書きする主義だ。

僕は、HTML とはあくまでも「素のテキスト(plain text)」に、所々、附箋を付けるような感覚で、HTML タグを付け加えた程度の、「素のテキスト+α」の範囲内で扱いたいと思っている。DOCTYPE 宣言や、<head> タグの内側に記述する細々とした付加的情報を示すタグのようなものは、原則的に気にせずに、日常は <body> タグの内側だけを意識するような姿勢でいいと思う。素のテキストを記述する感覚で、段落が形成されれば、その前後を <p> で囲い、図示のために挿し込み画像を入れたければ、そこに <img> タグを置く。そういったタグの直感的用法以上の、論理的に高度な、HTML 規格上のテクニカルな要請に従って必要とされてくるタグの使用については、細かく気にしたところで、何の生産的価値のないことであり、無駄な寄り道だと思う。そういう高度な技術上の要請は、Web ページ作者という人間が直接肉体を駆使して対応するべきものではなく、ツール・アプリケーション等を利用してメカニカルに別途対処するべき問題のはずだ。

ToC vs Index

ディレクトリのデフォルトページとして index.html が使用されるのが、事実上の慣例となっている。これは要するに、HTTP サーバが index.html をディレクトリのデフォルトページとして表示する設定となっていることが多いからであり、それに対して Web ページ作者側はデフォルトページとして表示されたいページのファイル名を index.html にすることで、「結果的な辻褄合わせによって」そのページをディレクトリのデフォルトページとして機能させるという効果を得ようとするわけである。

だが、Web ページ作者がディレクトリのデフォルトページとして表示させたいのは、いわゆるメニューとしての機能を果たす ToC (Table of Contents) すなわち「内容一覧」ページなのであり、決して Index すなわち「索引」ページではない。要するに、内容一覧をデフォルトページとして表示させたいがために索引と偽るのは、場当たり的なその場しのぎの対症療法でしかないということが言える。内容一覧なのであれば、ファイル名は toc.html とかにするのが当然あるべき態様である。

ちなみに、Index というものは、index.html が存在しない場合に、HTTP サーバが自動でディレクトリのファイルの一覧を表示するが、そのような状態がまさしく「索引」としての index.html の本来あるべき姿である。だから、HTTP サーバのデフォルト設定が、index.html をデフォルトページとして扱おうとすることに関しては、問題はない。問題は、そのデフォルト設定を変更して、toc.html をデフォルトページとして表示する設定に変更(これは、.htaccess によってコントロールできる)することなく、index.html というファイル名で ToC ページを表示させようとする、Web ページ作者の行為に矛盾がある。

以上のような矛盾を解消するには、メニューの役割を果たす(そのディレクトリにおいて)メインのページのファイル名に、index.html を使わず、toc.html を用いることである。

次に、デフォルトページが問題となる。単に、メインページのファイル名を index.html から toc.html にしただけでは、URI としてファイル名を省略してディレクトリを指定した場合に、toc.html を表示させることはできない。代わりに、HTTP サーバが自動生成したディレクトリのファイル Index が表示されてしまう。URI の上では、できるだけ簡潔で短く済むファイル名省略形の URI を使って、そのディレクトリにおけるメインメニューの役割を果たす toc.html を表示させたいところである。

まず、.htaccess / nginx.conf によってディレクトリのデフォルト表示のファイル名を toc.html に設定カスタマイズする手段が考えられる。これが根本的解決方法である。一方、レンタルサーバー等でそれが難しい場合の代替手段としては、index.html を別途作成して、その index.html から toc.html にリダイレクトするようにしておくやり方である(<meta http-equiv="Refresh" content="0; url=toc.html" /> を使うなどする)。これなら、.htaccess / nginx.conf をいじらなくて済むし、ディレクトリによってはファイル名省略形の URI で toc.html を表示せずに HTTP サーバのファイル Index 表示機能を利用したい場合も考えられるから、ファイル名省略形の URI で toc.html を表示させたいディレクトリのみ、そういったリダイレクト機能を持つ index.html を置いておけばいいので、.htaccess / nginx.conf 変更によって生じる副作用に頭を悩ます必要はない。

デフォルト表示のパターン
ファイル名省略形の URI でデフォルト表示させたいものtoc.htmlindex.html階層タイプ
ディレクトリの ToC△(toc.html へのリダイレクト用)上層
ディレクトリの Index×(HTTP サーバのファイル Index 表示機能に任せる)中間
ディレクトリの Index△(ファイル名省略形 URI へのリダイレクト用)×(HTTP サーバのファイル Index 表示機能に任せる)末端

<link> タグ

<link> タグは、HTML 文書の中身の情報を記述するものではなく、外部の他の文書との関係性についての情報を記述するためのものである。従って、Web ページ作者としては、一つの HTML ページを記述するに際しては、通常はできるだけ意識から除外しておきたいものである。

前章「ToC vs Index」で論じたように、ToC と Index を適切に区別して使い分ければ、一つ一つの Web ページ同士の関係性は、ToC において処理すればいいので、ToC 以外の「枝葉」となる各ページは、<link> タグに他のページとの関係性を「意識して」その情報を示す必要が無くすことができる。もちろん、実際に<link> タグによる情報そのものを撤廃することを述べているわけではない。各ページの <head> タグ内の付加的情報は画一的に、

を記述するようにしておけばいいので、「メカニカルな処理が可能になる」ということが言いたいわけである。

ナビゲーション用のリンク

現時点では、IE のようなメジャーブラウザがサポートしていないので、採用の時期としては Web ページ作者の考え次第であるが、<link> タグを積極的に活用することで、ページの <body> タグの内側にわざわざナビゲーション用のリンクに関する記述を別途記述して、各ページに繰り返し設ける必要が無くなる。すなわち、無駄な寄り道をなくして本来の文書作成により専念できることになるので、ページ内本文(<body> 内部)におけるリンクに関する記述を無くして、 <head> タグ内の付加的情報としてメカニカルに処理できるようにするに越したことはない。

前章で述べたように、ToC や Index だけでなく、Copyright のような情報も、おきまりのように各ページに記述されるものだから、<link> タグを活用して、ページの本文(<body> 内部)から copyright 表記に関する記述を追い出してしまえば、よりすっきりさせる(最適化する)ことができる。


<HTML>