HTML [注釈 1] またはHyperText Markup Language (ハイパーテキスト マークアップ ランゲージ)[注釈 2] は、ハイパーテキスト を記述するためのマークアップ言語 の1つで、プログラミング言語 ではない。主にWorld Wide Web (WWW)において、ウェブページ を表現するために用いられる。ハイパーリンク や画像等のマルチメディア を埋め込むハイパーテキスト としての機能、見出し や段落 といったドキュメント の抽象構造、フォント や文字色 の指定などの見た目の指定、などといった機能がある。
ティム・バーナーズ=リー によってSGML を元に開発された。1993年 に最初のドラフトが公開され、最初期においてはIETF が、1996年 以降はW3C が、2019年 以降はWHATWG が規格の策定、仕様公開を行なっている[3] [4] 。
特徴 HTMLは木構造 (入子構造 )のマークアップ言語 であり、形式言語 である。「プレーンテキストの文書を要素で括って意味付け」という一般的な説明[5] は間違いである。「『タグ』と『タグ』で括られたもの全体」が「要素」(element)であり、タグすなわち要素ではない。マークアップ言語としての特徴は、先祖であるSGML や、兄弟のXML と共通しているため、以下ではWWWというシステム における「ハイパーテキスト 記述言語」としての側面についてのみ記述する。
HTMLの要素には、文書を表現するものとしてごく一般的なものである見出し(ヘッドライン、h1〜)、段落(パラグラフ、p)、ハイパーテキストとして特徴的な「アンカー」(a)に関係するもの、画像など(imgなど)の電子メディア的なもの、などがある。また文字色の指定などといった、意味ではなく直接見た目のみを指定するようなものは、近年ではスタイルシートなどに分離するべきとされているが、歴史的事情、及び、スタイルシートよりもこの、HTMLでの記述が簡便になる場合が度々あること[注釈 3] から現在でもしばしば使われている。その他主要な要素は、HTMLの要素 の記事で解説している。
形式言語として見た場合「構文規則」(あるいは文法)に相当する「スキーマ」は、HTML4まではDTD として公開され要素ごとに記載することの出来る属性、内容に含むことの出来る要素などが定められていた。HTML 4.01では厳密なもの[注釈 4] 、HTML 3.2からの移行過渡期のためのもの[注釈 5] 、フレームを用いた文書のためのもの[注釈 6] といった3つのDTDが定義されていた。
HTML 3.2では見た目を左右する要素や属性が追加されたがHTMLは本来文書構造を示すためだけにその存在意義があり、それらの要素は目的に反するものとされた。そのため視覚的・感覚的効果を定義する手段としてスタイルシート (一般にはその中のCSS )が考案された。見た目を左右する要素や属性の一部はHTML4以降では非推奨とされており、HTML 4.01 Strict では定義されていないので使用できない。ただしHTML 4.01 Strict で定義され、非推奨とされない要素や属性の一部にも見た目を左右するものがある。装飾的な視覚表現のためにそれらの要素や属性を用いているのであればその内容に適する要素を用いた上で、スタイルシートで表現を指定するのが望ましいとされている。
標準仕様 2023年4月現在、HTMLの有効な標準仕様は以下の2点である。
下表は失効済みのかつての標準仕様(またはドラフト)の一覧である。
以下、言語仕様については歴史的な経緯など特別な事情がない限り、WHATWGの策定する「HTML Living Standard」を基準に説明を行う。失効済みの仕様については下記「#歴史 」の項も参照。
言語仕様 HTMLはドキュメント構造(モデル)、各要素の役割/意味(セマンティクス)、表現する構文(シンタックス)を定義する。
構造 HTMLは要素 (Element )の木構造 を扱う。各要素は以下の3つから構成される。
要素名 属性 (attribute ): 0個以上。属性名と値のペア、値は文字列に限定[14] 子要素: 0個以上 要素が子要素をもつため、総体として要素の木構造でモデル化される。
構文 HTMLを表現するための構文としては、HTML構文 (HTML Syntax )およびXML構文 (XML Syntax )が存在する。XML構文で記述されたHTMLはかつてXHTML と呼ばれていたが、現在の仕様ではそのような呼び分けは行わない[15] 。また、現在の仕様ではHTML構文の使用が推奨されている[16] 。
HTML文書は文書型宣言 とHTML要素 、そして(任意の)BOM 、コメント 、空白文字 からなる[注釈 17] 。
HTML構文の場合、要素は
というテキスト形式で記述される。コンテンツを挟む
はタグ と呼ばれ、前方部分は開始タグ 、後方部分は終了タグ と呼ばれる。コンテンツ部に子要素をもつことで総体としての木構造が表現される。 また、子要素をもたない単一の構文
は単一/単独タグ [注釈 18] またHTML5では空要素 [17] と呼ばれる(例:<br />
、<img src="something.jpg" />
)。これらはしばしば / が省略されることがある(例:<br>
、<hr>
)。
注意点として、要素はタグではない[18] 。要素は構造上規定される存在であり、構文上の表現であるタグと併記されるものではない。また要素はタグ+コンテンツで表現されるため、タグは要素を表現するものの一部に過ぎない。
機能 HTMLは異なる意味をもつ様々な要素を定義する[19] 。各要素では受け入れ可能な属性が定義され、要素の振る舞いを調整できるようになっている。ほとんどの要素では、要素名が機能を指し、属性が自身の特性を指し、子要素が収納される別コンテンツを指す。
例えば <title>
はタイトルを意味し、<a>
はハイパーテキスト アンカーを意味する。<a href="https://example.com ">
では href
属性によってリンク先が指定されている。
HTMLは要素のセマンティクスを定義しているに過ぎないので、それを具体的にどう表現・利用するかは利用側に委ねられている[20] 。通常はウェブブラウザ での利用が想定されているが、音声対話エージェントが利用するケースもあり得る。
HTML文書 HTMLで書かれた文書をHTML文書と言い、HTMLでは、まず文書型宣言 を書く。HTML構文を用いる場合は文書型宣言を以下の通り書かなければならない[注釈 19] 。
次にHTML文書の例を挙げる。
<!DOCTYPE html> < html lang = "ja" > < head > < meta charset = "UTF-8" > < link rel = "author" href = "mailto:mail@example.com" > < title lang = "en" > HyperText Markup Language - Wikipedia</ title > </ head > < body > < article > < h1 lang = "en" > HyperText Markup Language</ h1 > < p > HTMLは、< a href = "http://ja.wikipedia.org/wiki/SGML" > SGML</ a > アプリケーションの一つで、ハイパーテキストを利用してワールド ワイドウェブ上で情報を発信するために作られ、 ワールドワイドウェブの< strong > 基幹的役割</ strong > をなしている。 情報を発信するための文書構造を定義するために使われ、 ある程度機械が理解可能な言語で、 写真の埋め込みや、フォームの作成、 ハイパーテキストによるHTML間の連携が可能である。</ p > </ article > </ body > </ html > このHTML文書は次のような構造を示している。
<!DOCTYPE html>
:文書型宣言 このテキストが最新のHTML であることを示す。< html lang = "ja" >
:html要素。また、lang="ja"
で、言語コードja の言語が使われていることの明示。< head >
:head要素(この文書のヘッダ情報の明示)< meta ... />
:meta要素(文書のメタ情報)。ここでは、charset="UTF-8"
で、文字コードが、「UTF-8 」であることを示す。< link ... />
要素(他のリソースとの関連を明示。この場合、作者の明示)< title lang = "en" >
:title要素(この文書のタイトル)の明示。また、この部分はen の言語が使われていることの明示。< body >
:body要素(この文書の内容の明示)< article >
:article要素(この要素が、記事であることを明示)< h1 lang = "en" >
:h1要素(第一レベル)の見出しを明示。また、lang="en"
で、この部分の見出しは en の言語が使われていることを明示。< p >
:p(段落)要素の明示。< a href = "http://ja.wikipedia.org/wiki/SGML/" > SGML</ a >
:a(アンカー)要素(他のリソースへのアンカー)であることの明示。href
で、「""
」内にリンク先のURL を記述する。ちなみに、このURL の場合は、ウィキペディア日本語版 のSGML の記事。< strong >
:strong要素(強い強調であることの明示)タグによって文字列を括ることによりその文字列の意味付けがなされる。ユーザーエージェントはそれを解釈して、例えば h1
要素で括られたテキストは「その文書中で最も重要な見出し」という意味を持つようになり、 GUI によるウェブブラウザであれば大きく太字で表示するなどする。また、スタイルシートを用いることで見た目などを指定することができるようになっている。
なお、通常はマークアップ中に改行文字 を挿入してもウェブブラウザ上では描画されない。改行を行う場合はbr
要素を用いる必要があるが、br
要素は本来見た目のためではなく、詩や住所のように実際にコンテンツの一部である改行のためにのみに使用されなければならない[21] 。
歴史 1989年 、CERN のティム・バーナーズ=リー は、オリジナルのHTML(および多くの関連したプロトコル、HTTP など)のメモを提案し、1990年 5月にコード化した[22] 。NEXTSTEP の動作するNeXTcube ワークステーション上で開発された。当時のHTMLは仕様ではなく、直面していた問題を解決するためのツール群であった。直面していた問題とは、ティム・バーナーズ=リーやその同僚たちがどのように情報や進行中の研究を共有するかということである。彼の成果は後に国際的かつ公開のネットワークの出現として結実し、世界的な注目を集めることになった。
HTMLの初期のバージョンはゆるい文法規則によって定義されており、ウェブ技術になじみのない層に受け入れられる助けとなった。ウェブブラウザ はウェブページの意図を推測し、レンダリングを実行するのが一般的であった。やがて公式規格においては厳格な言語構文を作ることを志向するようになっていったが、それに加え、ウェブブラウザの挙動を元に構文エラーの取り扱いも規格に含めることで、既存のウェブページに対する互換性の維持が図られている[23] 。
HTMLが公式な仕様として定義されたのは1990年代 からである。それは従来のマークアップ言語であるSGML に、インターネット のためのハイパーテキスト の機能を取り入れるというティム・バーナーズ=リーの提案に大きく影響を受けたものだった。
1993年 にはIETF からHTML仕様書バージョン1.0が公開され、SGMLからの拡張として文法定義のDTD を持つようになった。また1994年 にIETFのHTMLワーキンググループが発足した。しかし、2.0以降のIETFの元での開発は他の開発との競合から停滞した。1996年 からはW3C によって商用ソフトウェア・ベンダーからの支援も受け、HTMLの仕様が標準化されている[24] 。また2000年 からは国際標準ともなった(ISO /IEC 15445:2000)。W3Cから勧告された最新のHTML仕様はHTML 5.2である。
HTML 1.0、HTML+ 1993年 6月に、IETFのIIIR Workingグループより提出されたHTML仕様書 がインターネット・ドラフトとして発表された。本来はバージョン番号が付いていないが通常HTML 1.0と呼ぶ。このドラフトはティム・バーナーズ=リーおよびダニエル・コノリーによって、ティム・バーナーズ=リーの出したHTML Design Constraints に極力従うように書かれた。
1993年11月に、HTMLの上位互換な HTML+が発表された。テーブルなどが追加になっている。HTML+仕様書 。
HTML 2.0 1995年 11月に、IETFのHTMLワーキンググループによってRFC 1866 (日本語訳 )として仕様が発表された。下記の補助的なRFCもリリースされた。HTML 2.0はRFC 2854 によって廃止されHTMLはIETFではなくW3Cが管理することとなった。
HTML 3.0、HTML 3.2 HTML 3.0は策定作業が行われたが、ドラフトの段階で策定途中に破棄された。HTML 3.0仕様書 。
1997年 1月14日 に、HTML 3.2がW3C勧告として仕様が発表された。HTML 3.2 Reference Specification (非公式な日本語訳 )。
HTML 4.0、HTML 4.01 1997年12月18日 に、W3C勧告としてHTML 4.0の仕様が発表された。HTML 4.0は1998年 4月24日 に仕様が改訂[注釈 20] された。この仕様にいくらかのマイナーな修正が加えられたHTML 4.01は1999年 12月24日 にW3C勧告となった。Strict DTD の他にHTML 3.2からの移行過渡期のためのTransitional DTD とフレームを使うことのできる Frameset DTD の3つのスキーマを持つ。
この後、HTML 4.01をベースとしてXHTML 1.0が策定されることになる。
2018年 3月28日 に代替された勧告に指定され、最新の勧告を参照することを推奨されている。
ISO/IEC 15445:2000 ISO/IEC JTC 1 による規格。HTML 4.01を参考にし、より厳密に規格化された。これは2000年 に翻訳されJIS X 4156:2000というJIS規格 になった。
ISO/IEC 15445:2000は2003年 に訂正版[注釈 21] が発行された(ただし訂正なので、その後も名称はISO/IEC 15445:2000のまま)。JIS X 4156は2005年 に改正され、JIS X 4156 :2005 (日本産業標準調査会 、経済産業省 )となっている。
HTML5、HTML 5.1、HTML 5.2 HTML5のロゴ その後、HTMLの改良にW3Cが興味を示さなかったことから、2004年にWHATWG が開発を開始した[25] 。2007年には、W3Cもワーキンググループを設立し[26] 、WHATWGと共同での開発が始まった。しかし、2012年7月、両者は別個に作業する体制となった[27] 。WHATWGの仕様策定はHTML Living Standard(英語版 ) として継続している。
2014年 10月28日 にHTML5がW3Cより勧告された[28] 。ブログや記事向けの「article」要素やマルチメディアのための「audio」および「video」要素などをはじめとした新要素・属性が追加され、以前は見た目を規定していた要素の殆どは変更または削除された。2016年 11月1日 に HTML 5.1が勧告され[29] 、2017年 12月14日 に HTML 5.2が勧告された[30] 。
W3CによるHTML5~HTML 5.2は、WHATWGのHTML Living Standardを元に編集が加えられたものであり、HTML Living Standardとの差異が発生している状態となっていた。これについてWHATWGのIan Hickson(英語版 ) がW3C側を強く非難する事態となっている[31] 。W3CはHTML 5.3への作業を進められていたものの、2019年のWHATWGとの合意により、取りやめている[3] 。
HTML Living Standard HTML Living Standard[32] は WHATWG が更新し続けている HTMLの最新仕様。2019年まではW3CのHTML5~HTML 5.2と並行して仕様策定が進められている状態だった。これを元にしてW3Cの勧告が作られていた。
HTML形式の電子メール 脚注 注釈 出典 関連項目 外部リンク ウィキブックスに
HTML 関連の解説書・教科書があります。
ウィキメディア・コモンズには、
HTML に関連するカテゴリがあります。