« 地域活性化とは何か (2)地域の持続性 | トップページ | 地域活性化につながる活動・産業 »

2014年1月 1日 (水)

Transitional HTMLを撲滅しよう!

地域活性化の話題が続いたので、IT関係の話題をひとつ。

Notransitional皆さんは、納品されたばかりのものに、15年以上前に廃止勧告された規格が使われていたと分かったらどう思うだろうか?
他の業界でそんなことがあったら、下手したら製品の回収騒ぎになるかもしれない。しかし、私たちがインターネットを使う上で最も身近な「ウェブ」の根幹技術であるHTMLで、そんな問題が起きているのだから驚きだ。

ホームページやウェブサイトを記述する言語であるHTMLには、歴史的な経緯でいくつかの規格が存在している。この中で、将来の廃止を明確に予告された仕様がある。それが、Transitional(トランジショナル) HTMLと呼ばれるものだ。
Transitional HTMLが最初に正式勧告されたのは1998年4月。つまり、現在Transitional HTMLを使用していれば、(この記事の執筆時点で)15年以上前に廃止勧告された機能を使い続けているということになる。

※Transitional HTMLという名前は正確なものではなく、正式にはTransitional DTDと呼ぶ。ただ、ここでは技術用語になじみがない人にも分かりやすいようにTransitional HTMLという用語を使っている。

Transitional HTMLはもともと暫定的な規格であり、少なくとも新しく制作するウェブサイトで採用するべきものではない。

Transitional HTMLを見分ける方法

さて、Transitional HTMLとは何者かを説明する前に、まずなじみのウェブサイトがTransitionalを使っているかどうかを調べてみよう。簡単に調べることができる。

  1. ページを表示して右クリックする
  2. 「ソースを表示」を実行する(ブラウザーによって表現が違うことがあります)
  3. 出てきた文章の先頭の方に、ふつうは次のような記述があるので確認する
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

下線部のところにTransitionalという単語が含まれていれば、Transitional HTMLが使われている。(なお、このブログシステムにもTransitionalが使用されている。)

Transitional HTMLとは何か

Transitional HTMLとは、一言でいえば古いHTMLで書かれた文書を移行しやすくするために、暫定的に定義したHTMLの規格である。

古いHTMLとはHTML 3.2と呼ばれているもので、1997年1月に勧告されたものである。この頃はブラウザー各社が表示の表現力を競ってHTMLを独自に拡張していたため、ブラウザー間でHTMLが異なるという深刻な問題が発生していた。
そこで、いったんHTML 3.2として標準化を行った後、HTML 4.0で表現方法の定義をHTMLから分離し、別な規格であるCSSにまとめることによって、互換性の問題を解決しようとしたのである。
しかし、従来のHTMLとして書かれた文章をHTML 4.0に移行させるには、表示方法に関わる記述を書き直さなければならず手間がかかるので、従来の表現方法の定義を残したままでHTML 4.0の新しい機能を利用できる暫定的な規格が合わせて用意された。これがTransitional HTML(正しくはHTML 4.0 Transitional)である。
HTML 4.0とHTML 4.0 Transitionalは1998年4月に勧告され、この時点でTransitionalで固有の部分は将来廃止されることが明記された。

その後、HTML 4.01(1999年12月)、XHTML 1.0(2000年1月)が短い期間に発表され、これらにもTransitionalが用意された。しかし、XHTML 1.0の後継であるXHTML 1.1(2001年5月)ではTransitionalが正式に廃止され、HTML 5.0でもTransitionalの廃止が決まっている

Transitional HTMLの功罪

Transitional HTMLは上記のように、古いHTMLをHTML 4.0以降の規格の文書に移行しやすくするために作られた。それ以外に、新しく作成した文書でこれを使う理由としては、次のようなものが存在したのだろうと思う。

  1. Transitionalで書けば、HTML 4.0やCSSに対応していない古いブラウザーで文字などの装飾ができる
  2. Transitionalの方がタグで書式を指定できるので簡単である

このうち1.については、HTML 4.0やCSSに対応していないブラウザーは、2000年代前半にはすでにほとんどが消滅しているし、CSSを活用して丁寧にデザインされたページは、どのみちその世代のブラウザーではろくに表示できない。むしろ、中途半端に書式が適用されて、文字が見えにくくなったりする可能性もある。

2.については、古いHTMLを書いてきた人にとっては確かにその通りかもしれないが、新しくHTMLを学ぶ人にとっては、書式を定義する場所がHTMLとCSSに分かれると、かえって分かりにくいだろう。また、古いHTMLからHTML 4.0への移行は簡単だったかもしれないが、XHTML 1.1やHTML5に移行するには、どのみち乗り越えなければならないハードルなので、移行の問題を先送りしてきただけといえる。

Transitionalには他にも重要な問題がある。それは、ブラウザーが変わった時に表示が崩れやすくなるという問題である。

HTML 4.0の機能は、2000年頃以降のブラウザーではほぼすべて標準化されているし、CSSについても2007年頃以降のブラウザーではほぼ標準化されている。しかし、Transitionalで使われているタグによる書式の定義については、HTML 4.0で標準化が行われていないため、ブラウザー間で表示結果にばらつきが出やすい。
さらに、Internet Explorerを使用している場合、Transitionalを使用していると自動的に互換モードに遷移してしまうことがある(※記述次第で回避は可能)。こうなると、古いInternet Explorerの表示ルールに従った表示に切り替わってしまうため、CSSの解釈が他のウェブブラウザーとは大きく異なったものになってしまう。

Internet Explorerのバージョンを上げると社内システムの表示が崩れるため、Internet Explorerを古いバージョンのままで運用をしている会社も多いようだが、この原因もTransitinonalを使用しているためかもしれない。古いバージョンのInternet Explorerを使い続けていると安全性が低下しやすい。つまり、Transitionalを使い続けていくことがネット利用の安全性を犠牲にしている可能性もある。

以上のように、Transitional HTMLを使い続けることは、単に格好が悪いだけではなく実害もあるのである。

Transitionalを使うのはすぐにやめよう

以上のように、2014年現在においてTransitionalを積極的に利用する理由は全くない。古いウェブサイト技術者が一時的に楽をすること以外は、デメリットばかりだ。

よって、Transitional HTMLを使用している人は――ウェブサイトデザイナー、ウェブサイト技術者、ウェブアプリ開発者を含めて――、今すぐTransitionalを使うのをやめるべきだ。Transitionalしか知らないのであれば、今すぐCSSを勉強するべきである。
また、国内で有名なページ作成ソフトであるホームページビルダーでも、標準の文書形式がHTML 4.01 Transitionalとなっている。このようなツールも推奨したくはないが、もし利用するのであれば、DTDをTransitionalでないものに切り替えておいたほうが良いだろう。

古いブラウザー(たとえばInternet Explorer 7以前)の対応を考えなくてよいのであれば、HTML 4.01に移行するよりもHTML5に移行する方が楽だろう。HTML5はHTML 4.01で切り捨てられた機能の一部が再収録されたり、タグの配置のルールが緩和されたりしているので(インライン要素とブロックレベル要素の区別がなくなったなど)、Transitional HTMLから移行するにはより障害が少ない。
もちろん、古いブラウザーも考慮しなければならないのであれば、HTML 4.01やXHTMLに移行しなければならない。しかし、いったん移行しておけば、後でHTML5に移行するときに楽になるだろう。

私は今のところ、文書形式をHTML5としながら、できるだけHTML 4.01の文法の範囲内でページを作成することが多い。これならば、HTML5を解釈できないブラウザーでも問題が起こる可能性が低いからだ。

|

« 地域活性化とは何か (2)地域の持続性 | トップページ | 地域活性化につながる活動・産業 »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/133556/58861762

この記事へのトラックバック一覧です: Transitional HTMLを撲滅しよう!:

« 地域活性化とは何か (2)地域の持続性 | トップページ | 地域活性化につながる活動・産業 »