HTML - Hypertext Markup Language

この頁では、HTMLとは何か、HTMLの歴史、そしてHTMLに関連する技術についてを解説します。

HTMLとは

HTMLとは“Hypertext Markup Language”の略です。 “Hypertext”とは、ある情報が別の情報と関連付けられている文書、言い換えるとある文書を読んでいる最中に別の文書を参照することができる、すなわちリンクされている文書を表します。 また、“Markup”とは、文書の構造や要素、すなわち見出しや段落などを印し付けることを指し、HTML ではこれをタグで実現しています。 つまり、HTMLとは、リンクによって他の文書と関連付けられ{Hypertext}、タグによって文書の要素を示す{Markup}という特徴を持った言語{Language}なのです。

現在、WWWで使われる文書のほとんどはHTMLで書かれており、多くのユーザエージェント(Webブラウザ)がHTMLを解釈して、ユーザにわかりやすく表示(レンダリング)する様に作られています。

(※) しばしば、“インターネット”と“WWW”は混同して使われますが、“インターネット”とは「全世界のネットワークを相互に接続した巨大なコンピュータネットワーク」を指すのに対し、“WWW”とは「世界中に『蜘蛛の巣(web)』のように広がるコンピュータネットワーク」=「インターネットを利用した情報提供システム」のことを指します。

HTMLに関連する技術

この節では、HTMLに関連する技術について記述します。

XML

XMLとは“Extensible Markup Language”の略であり、W3Cという標準化団体によって、策定されました。 XMLの最初のバージョンである“XML 1.0”が1998年2月に、またその改良版である“XML 1.0 Second Edition”が2000年10月に勧告されています。

XMLは、「タグによるマークアップ言語」という意味ではHTMLと同じですが、“Extensible”という名の通り拡張できるという点で異なります。 たとえば、<商品>, <単価>, <数量>, <金額>のように、要素や属性を自由に作成することができるのです。

Web上には無数の情報がありますが、それらの多くはHTMLで記述されています。 しかし、HTMLという言語は元々論文を記述するために作られたものなので、「見出し」「段落」「強調」といった“文章上の意味”を表す要素はあっても、「日付」「個数」「値段」といった“具体的データ”を表すための要素はほとんどありません。 そして、そういう要素を新たに追加しようとしても、仕様上勝手に追加することはできず、勝手に追加してしまえば、それは独自拡張となってしまい、コンピュータに自動処理をさせるといったことができなくなります。 また、HTMLはマークアップの規則が緩いため、現状はたとえば「終了タグが無い(例:<p>段落)」や「入れ子関係になっていない(例:<b><i>太字で斜体</b></i>)」というイレギュラーなHTMLもたくさん存在します。 このような曖昧さは、HTML文書を作成する人間にとっては有利でも、コンピュータに処理させる場合は不利になる(※)でしょう。

(※) どんな場合が不利かというと、たとえば「Webからの検索」が該当します。 HTMLでマークアップされたリソースを検索する場合、基本的に全文検索なため、指定するキーワードと該当文書との関係を上手く指定することは難しいのです。 皆さんもサーチエンジンを使って検索する場合、いくつかのキーワードを使って検索した場合に、全く関係の無い情報がヒットするということを経験したことがあると思いますが、これはサーチエンジンの不備というよりも、HTMLというフォーマットによる限界であると言うことができます。

元々、出版業界で使うために文書記述言語としてISOが1986年に制定したSGMLという汎用性の高いフォーマットがあったのですが、汎用性が高いがために仕様が複雑で扱いが難しく、十分に利用されているとはいえませんでした。 そこで、「SGMLの簡易版」とも言えるフォーマットとして、XMLが開発されることになりました。 XMLは、SGMLから多くの部分の仕様を受け継ぎつつも、今までにほとんど利用されなかった機能や、一部の省略記法を取り除くことで仕様を簡略化し、特にインターネット上でのデータ交換を意識して設計されています。

(※) SGMLは『メタ言語』、すなわち「言語を規定するための言語」です。 HTMLは「論文を記述する」という用途のために、SGMLを用いて定義された『言語』になりますが、XMLは、SGMLと同じく、HTMLのような言語を作成するための『メタ言語』になります。

新たに記述されたXML文書が文法的に正しいかを検証し、表示するためにはXMLパーサと呼ばれるソフトウェアが必要です。 XMLパーサは、開始タグや終了タグの存在、入れ子関係、大文字・小文字の区別等を厳密に判定します。 これを満たすXML文書は、整形式 {well-formed} XML文書と呼ばれます。 但し、このままでは、そのXML文書中で使用されている要素の名前や取り得る値がわからないので、運用にはそれらが記述されたDTDと呼ばれる各要素の定義などが記述されたファイルを用います。 それと照らし合わせて正しく記述されているXML文書を妥当な {valid} XML文書と言います。

XML文書はただのテキストデータなので、基本的にどんなシステムでも読み込むことができます。 また、XMLの仕様は完全に公開されているので、誰でも自由に、無料で利用することができます。

DOM

DOMとは、“Document Object Model”の略で、XML文書の一部に対して直接アクセスするための、プラットフォームやプログラミング言語に依存しない仕組みを指します。 DOMでは、XML文書をツリー構造によりモデル化し、XMLの要素・属性・内容といったものをそのツリーのノードとして表しています。

DOMは、元々Webブラウザ上で、JavaScriptを用いてHTML文書の操作を行うDynamic HTMLのために考案されたものです。 しかし、仕様の検討が進められるにつれ、HTML文書だけでなく、XML文書も対象となり、またWebブラウザだけでなく、プログラミング言語の種類も問わない、汎用的なオブジェクトモデルとして発展していきました。 DOMは、W3Cによって標準化されており、現在はサポートする機能レベルによって“Level 1”〜“Level 3”に分かれています。

(※) 初期のDOMは、ブラウザの開発会社が「自社のブラウザが他のブラウザより優れていること」をアピールするために独自に規定したもので、できることも限られており、また一方のブラウザでできることがもう一方のブラウザではできなかったりします。 そのような初期の、標準化されていないDOMは(Level 1以前という意味で)“DOM Level 0”と呼ばれることもあります。 (DOM Level 0のデモ

HTMLの歴史

この節では、HTMLの誕生から現在までの進化について記述します。

HTML 1

WWWは、CERN(セルン; ヨーロッパ原子核研究機関)の物理学者Tim Berners-Leeによって、1989年に提案されました。 この時、文書を転送するためのプロトコルであるHTTPや、文書の場所を表すための記法であるURLと併せて、文書同士をリンクするための記法であるHTMLの仕様も策定されたのですが、この時点ではBerners-Leeの個人作業によるものでした。

1991年には、Berners-Leeによる世界最初のWebブラウザ「WorldWideWeb」が開発され、その後も複数のWebブラウザが公開されました。 また、1993年2月には、イリノイ大学のNCSA(国立スーパーコンピュータ応用センター)にいたMarc AndreessenらによってMosaicというWebブラウザが発表されました。 しかし、いくつかのWebブラウザには独自拡張が実装されてしまったので、互換性がないという問題が生じてしまいました。 そこで、1993年6月、「Mosaicが解釈できるようなHTMLのドラフト仕様」をIETFに提出しました。 これが、正式な仕様として初めて発表されたHTMLとなり、俗にHTML 1.0と呼ばれます(※)。

(※) HTML 1.0という名称は、あくまで以降のバージョンと区別するためにつけられた便宜的な俗称です。 HTTP/0.9と同じように、正式な名称ではありません。

HTML 2.0

1994年〜1995年は、“Netscape Navigator”vs“Internet Explorer”の第一次ブラウザ戦争が始まった時期です。 その中で、各陣営は、ユーザに自社製品をアピールするために、お互いが実装していない機能をブラウザに盛り込もうとしました。 しかし、それはHTMLを独自に拡張するということであり、すなわちHTMLの文法がブラウザ毎に異なり、統一されたフォーマットというHTMLの利点が失われてしまうことになってしまいました。

このような中で新しいインターネット標準の必要が生じ、1995年11月にそれまで一般に使われてきたHTMLをIETFのHTML Working Group(※)がまとめあげる形で HTML 2.0 という規格がRFC 1866として登録されました。

(※) 同団体は1996年に閉鎖しています。

HTML 2.0では、現在のHTMLの基礎と言える、以下の要素が定められています。

RFC 1866 では、使用できる文字が ASCII 文字に限られていたので、例えば日本語のような 2 バイト文字は規格上は使用できませんでした。 これら 2 バイト文字を正式に規格として使用できるようにしたのは、1997 年 1 月に定められた RFC 2070で、これによって拡張された HTML を HTML 2.x と呼びます。

HTML 3.2

1994 年 10 月に W3C という団体が発足します。 W3C は、WWW に関する技術をとりまとめる団体で、HTML を始め, HTTP, Style Sheet, DOM, XML 等、WWW に関する様々な仕様がここで議論され、最終的に勧告 (Recommendation)という形式で公開されます。

HTML 2.0 の次のバージョンの HTML としては、始めは 1993 年に HTML 1.0 を大幅に拡張した HTML+ から発展させた HTML 3.0 が作成され、インターネットドラフトとして提出はされていたのですが、Netscape Navigater や Internet Explorer の独自拡張をうまく調整、統合化することができず、結局作成途中で消滅し、仕様とはなりませんでした。 しかし、廃案にはなりましたが、各要素の属性や、テーブル(表)についての決まり等はこの段階で確立され、最終的に 1997 年 1 月に HTML 3.2 が W3C によって勧告されたのです。

HTML 3.2 では、HTML 2.0 との互換性を保ちつつ、現在最もよく使われているであろう、以下の部分が拡張されました。

HTML 4, 4.01

HTML 3.2 では、文書の視覚的効果をコントロールするための手段として、先に上げたような要素やその属性を使っています。 しかしこれは、Netscape Navigator や Internet Explorer が採用していた技術が既にデファクトスタンダードになりつつあったために取り入れた、いわば妥協案だったのです。 HTML とは本来文書の構造を記述するための言語であり、文書の視覚的効果とは文書を表示する時の付加情報であるべきであり、そのため文書の構造を記述するという本来の目的とかけ離れた要素を追加することは、あまり良いことでは無いと考えられるようになってきました。

また、HTML 3.2 は HTML 2.0 の上位バージョンということで、規格上は 2 バイト文字が使用できない、つまり日本語が使用できないというものでした。 その頃出回っていたブラウザの多くは 2 バイト文字にも対応していたために実際には問題は無かったのでしょうが、規格上 HTML 内に日本語を使うためには、次のバージョンが待たれるようになったのです。

それらの要求の中で、次のバージョンである“HTML 4”の策定が始まり、そして 1997 年 12 月に遂に W3C から勧告され、更にそのバグフィックスバージョンとして 1999 年 12 月に HTML 4.01 を勧告しました。 現在“HTML 4”と言えば、この HTML 4.01 を指します。

HTML 4 の特徴として、以下のようなものが上げられます。

特に、スタイルシートの導入によって、文字の色や大きさ、あるいは「テクニック」と称して主に <TABLE> を用いて無理やりに行っていた位置指定等の情報等が、文書構造とは全く別に定義できるようになり、しかもこれまでよりも細かく指定できるようになりました。

(※) HTML 4 におけるスタイルシートの標準は CSS ですが、それ以外のスタイルシートを利用してもかまいません。 かつて、Netscape 社は、Netscape 4 の時代に JSS (JSSS と呼ばれる場合あり) という独自のスタイルシート規格を用いていました。 但し、スタイルシートという仕組みは本来特定の言語には依存しないものですが、JSS ではスタイルシートの解釈に JavaScript を利用していたため、「JavaScript を使用しない」という設定にしていると、スタイルシートは利用できないというものになっていました。 Netscape 6 以降は、JSS に対応していません。

また、HTML 4 には、用途に応じて 3 種類あります。

このうち、Transitional と Frameset については、本来あるべき姿として「HTML とは文書構造のみをマークアップするためのものである」という理想と、「HTML が (というよりも Web そのものが) 見栄えを、比較的簡易な方法で指定できるという利便性」という現状との比較した上で、それまで広く使用されていた HTML を、HTML 3.2 から HTML 4 とへスムーズに移行させる目的で作成されたものです。

XHTML 1.0

XHTMLとは、XMLを用いて定義されたHTMLのことです。 W3C は、それまでの HTML 4 の特徴を引き継ぎつつ、XML のメリットである機能の拡張性を利用するために、HTML 4 を XML を用いて再体系化したXHTML 1.0 を 2000 年 1 月に勧告しました。 XHTMLは、HTMLの後継でありながらXMLでもあるので、他のXMLと組み合わせて使うことが可能(※)であり、また既存のXMLパーサによって利用することも可能になります。

(※) そのような文書は、厳密な意味でXHTMLでは無くなりますが、XML文書ではあります。

XHTML 1.0 は、HTML 4 を再定義したものなので、HTML 4 と同様に、以下の 3 種類が存在します。

2000 年 12 月、W3C は XHTML Basic を勧告しました。 XHTML Basic は必要最小限とされるモジュールだけで構成されています。 XHTML Basic を用いることによって、従来のデスクトップパソコンのようなもの以外にも、最近増えてきた携帯電話、テレビ、PDA 等の Web クライアントを使っての Web リソースの取得・閲覧を可能にします。

XHTML 1.1 と XHTML2

2001年6月、W3CはXHTML 1.1を勧告しました。 XHTML 1.0は、HTML 4をXMLを用いて再体系化したものでしたが、W3Cは次の段階として「XHTMLのモジュール化」を行ない、XHTMLの要素と属性を関連したグループ毎に分割することにしました。 これらのモジュール群は、Modularization of XHTMLという仕様で定義され、XHTML 1.1では、XHTML 1.0 Strict をそのモジュール群でで再構成したものになります。 また、XHTML 1.1では、Ruby Annotationモジュールを組み込むことによって、ルビを使用することができます。

XHTML 1.1の発行後、W3CはXHTMLを更に進化させるべく、“XHTML2 Working Group”を立ち上げ、XHTML 2.0の策定に入りました。 XHTML 2.0は、たとえばこれまでのHTMLのフォームやフレームを、XMLのサブセットであるXFormsやXFramesに置き換えたものとなっています。 たとえば、<li href="articles.html">Articles</li>といったように、XMLドキュメント同士のリンクに使う“XLink”に似たリンク形式にするなど、XHTML1よりも更にXML色を強めた形式で考えられました。

ところが、W3CがXHTML 1.1を勧告しても、世の中の多くのWebドキュメントはHTMLのままでした。 その理由の一つとして、世界で最もシェアを持つWebブラウザであるMicrosoft Internet Explorer(MSIE)がXHTML文書を正しく解釈できなかったということがあります。 たとえば、MSIE 5では、1行目のXML宣言を正しく解釈できませんし、より新しいバージョンであるMSIE 6やMSIE 7でも、XHTML 1.1の正式なメディアタイプであるapplication/xhtml+xmlを正しく解釈できません。 これらのブラウザは、XHTML文書をブラウザ内に描画せずに、ダウンロードダイアログを表示してしまいます。

いくら、XHTMLのメリットを謳われても、WebブラウザがXHTMLに対応していなければ、多くのWebドキュメントの発行者にとって、HTMLからXHTMLに乗り換えるメリットがありません。 それどころか、WebドキュメントのフォーマットをHTMLとXHTMLで二重管理する必要があり、負担が倍増してしまいます。 結局、何時まで経っても、世の中の多くのHTMLがXHTMLに置き換わるということはありませんでした。

HTML5

「HTML5」に関するお薦め書籍

Webの現状から大きくかけ離れた仕様になりつつあるXHTML 2.0、そしてその策定作業がなかなか作業の進まぬW3Cに対し、2004年に Apple, Mozilla Foundation, Opera Software の三者がWHATWGを立ち上げました。 ここで新たに提案された規格はW3Cの推し進める「XHTMLの進化」ではなく、あくまで「HTMLの進化」であるHTML5というものでした。 これは、過去にHTML文書がHTML4からXHTML 1.1へと置き換わることは無かったという事実や、現在広く利用されているHTML文書、及びそれに利用されるWebブラウザの後方互換性のことを考えれば、自然な流れと言えます。

2007年4月、WHATWGはW3Cへ「HTML5の策定を今後W3Cで行いたい」という提案をし、W3Cはこれを受け入れました。 そして、2009年7月にはXHTML 2.0の策定を行っていたワーキンググループを活動停止し、その分HTML5に注力すると宣言しました。 HTML5は、2011年現在まだドラフトしか発行されていませんが、ブラウザの中にはその中の一部機能をサポートしているものもあります。

参照文献

Webリソース

書籍