HyperText Markup Language
HTMLコードの例。 | |
拡張子 | .html, .htm |
---|---|
MIMEタイプ | text/html[1][2] |
タイプコード | TEXT HTML |
UTI | public.html |
開発者 | W3C WHATWG |
種別 | マークアップ言語 |
派生元 | SGML |
拡張 | XHTML |
国際標準 | HTML Living Standard |
HTML |
---|
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点である。
文書 | 策定者 | 構文 | 説明 | 開発時期 |
---|---|---|---|---|
HTML Living Standard | WHATWG | HTML構文 またはXML |
現在のデファクトスタンダード。 HTML文書だけでなく、DOMなどのAPIも含む仕様となっている。 2021年にはHTML5の勧告が廃止され、新たなW3C勧告となった。 |
2004年~現在 |
ISO/IEC 15445:2000 (ISO-HTML) |
ISO/IEC JTC 1/SC 34 | SGML | 2000年に発表され、2003年に改訂された[注釈 7][注釈 8]。 HTML 4.01 Strictを元に、より厳密に規格化された。 日本語に翻訳されたものが、JIS規格の「JIS X 4156:2000」[6]「JIS X 4156:2005」[7]となっている。 |
2000年~2003年[注釈 9] |
下表は失効済みのかつての標準仕様(またはドラフト)の一覧である。
名称 | 策定者 | 文書 | 発効日 | 失効日 |
---|---|---|---|---|
HTML[注釈 10] | IETF | Hypertext Markup Language (HTML) | -[注釈 11] | - |
HTML+ | IETF | HTML+ (Hypertext markup format) | -[注釈 11] | - |
HTML 2.0 | IETF | RFC 1866 | 1995年11月24日 | 2000年6月[8] |
RFC 1867 | 1995年11月25日 | |||
RFC 1942 | 1996年5月 | |||
RFC 1980 | 1996年8月 | |||
RFC 2070 | 1997年1月 | |||
HTML 3.0 | IETF | HTML 3.0 Draft | -[注釈 11] | - |
HTML 3.2 | W3C | HTML 3.2 Reference Specification[注釈 12] | 1997年1月13日 | 1997年12月[注釈 13] |
HTML 3.2 Reference Specification[注釈 14] | 1997年1月14日 | |||
HTML 4.0 | W3C | HTML 4.0 Specification | 1997年12月18日 | 2018年3月27日[9] |
HTML 4.0 Specification[注釈 15] | 1998年4月24日 | |||
HTML 4.01 | W3C | HTML 4.01 Specification | 1999年12月24日 | 2018年3月27日[10] |
HTML5 | W3C | HTML5 | 2014年10月28日 | 2018年3月27日[11] |
HTML 5.1 | W3C | HTML 5.1 | 2016年11月1日 | 2021年1月28日[12] |
HTML 5.1 2nd Edition | 2017年10月3日 | |||
HTML 5.2 | W3C | HTML 5.2 | 2017年12月14日 | 2021年1月28日[13] |
HTML 5.3 | W3C | HTML 5.3 | -[注釈 16] | - |
以下、言語仕様については歴史的な経緯など特別な事情がない限り、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構文の場合、要素は
<要素名 属性名=値>コンテンツ</要素名>
というテキスト形式で記述される。コンテンツを挟む
<要素名>...</要素名>
はタグと呼ばれ、前方部分は開始タグ、後方部分は終了タグと呼ばれる。コンテンツ部に子要素をもつことで総体としての木構造が表現される。
注意点として、要素はタグではない[17]。要素は構造上規定される存在であり、構文上の表現であるタグと併記されるものではない。また要素はタグ+コンテンツで表現されるため、タグは要素を表現するものの一部に過ぎない。
機能
HTMLは異なる意味をもつ様々な要素を定義する[18]。各要素では受け入れ可能な属性が定義され、要素の振る舞いを調整できるようになっている。ほとんどの要素では、要素名が機能を指し、属性が自身の特性を指し、子要素が収納される別コンテンツを指す。
例えば <title>
はタイトルを意味し、<a>
はハイパーテキストアンカーを意味する。<a href="https://example.com">
では href
属性によってリンク先が指定されている。
HTMLは要素のセマンティクスを定義しているに過ぎないので、それを具体的にどう表現・利用するかは利用側に委ねられている[19]。通常はウェブブラウザでの利用が想定されているが、音声対話エージェントが利用するケースもあり得る。
HTML文書
HTMLで書かれた文書をHTML文書と言い、HTMLでは、まず文書型宣言を書く。HTML構文を用いる場合は文書型宣言を以下の通り書かなければならない[注釈 18]。
<!DOCTYPE html>
次に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
要素は本来見た目のためではなく、詩や住所のように実際にコンテンツの一部である改行のためにのみに使用されなければならない[20]。
歴史
1989年、CERNのティム・バーナーズ=リーは、オリジナルのHTML(および多くの関連したプロトコル、HTTPなど)のメモを提案し、1990年5月にコード化した[21]。NEXTSTEPの動作するNeXTcubeワークステーション上で開発された。当時のHTMLは仕様ではなく、直面していた問題を解決するためのツール群であった。直面していた問題とは、ティム・バーナーズ=リーやその同僚たちがどのように情報や進行中の研究を共有するかということである。彼の成果は後に国際的かつ公開のネットワークの出現として結実し、世界的な注目を集めることになった。
HTMLの初期のバージョンはゆるい文法規則によって定義されており、ウェブ技術になじみのない層に受け入れられる助けとなった。ウェブブラウザはウェブページの意図を推測し、レンダリングを実行するのが一般的であった。やがて公式規格においては厳格な言語構文を作ることを志向するようになっていったが、それに加え、ウェブブラウザの挙動を元に構文エラーの取り扱いも規格に含めることで、既存のウェブページに対する互換性の維持が図られている[22]。
HTMLが公式な仕様として定義されたのは1990年代からである。それは従来のマークアップ言語であるSGMLに、インターネットのためのハイパーテキストの機能を取り入れるというティム・バーナーズ=リーの提案に大きく影響を受けたものだった。
1993年にはIETFからHTML仕様書バージョン1.0が公開され、SGMLからの拡張として文法定義のDTDを持つようになった。また1994年にIETFのHTMLワーキンググループが発足した。しかし、2.0以降のIETFの元での開発は他の開発との競合から停滞した。1996年からはW3Cによって商用ソフトウェア・ベンダーからの支援も受け、HTMLの仕様が標準化されている[23]。また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が管理することとなった。
- 1995年11月:フォームベースのファイルアップロード。RFC 1867
- 1996年5月:テーブル。RFC 1942
- 1996年8月:クライアントサイドイメージマップ。RFC 1980
- 1997年1月:HTMLの国際化。RFC 2070(非公式な日本語訳)。「HTML i18n」とも呼ばれる。日本語を扱えるHTMLのバージョンとしては、最も古い。
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日に仕様が改訂[注釈 19]された。この仕様にいくらかのマイナーな修正が加えられた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年に訂正版[注釈 20]が発行された(ただし訂正なので、その後も名称はISO/IEC 15445:2000のまま)。JIS X 4156は2005年に改正され、JIS X 4156:2005(日本産業標準調査会、経済産業省)となっている。
HTML5、HTML 5.1、HTML 5.2
その後、HTMLの改良にW3Cが興味を示さなかったことから、2004年にWHATWGが開発を開始した[24]。2007年には、W3Cもワーキンググループを設立し[25]、WHATWGと共同での開発が始まった。しかし、2012年7月、両者は別個に作業する体制となった[26]。WHATWGの仕様策定はHTML Living Standardとして継続している。
2014年10月28日にHTML5がW3Cより勧告された[27]。ブログや記事向けの「article」要素やマルチメディアのための「audio」および「video」要素などをはじめとした新要素・属性が追加され、以前は見た目を規定していた要素の殆どは変更または削除された。2016年11月1日に HTML 5.1が勧告され[28]、2017年12月14日に HTML 5.2が勧告された[29]。
W3CによるHTML5~HTML 5.2は、WHATWGのHTML Living Standardを元に編集が加えられたものであり、HTML Living Standardとの差異が発生している状態となっていた。これについてWHATWGのIan HicksonがW3C側を強く非難する事態となっている[30]。W3CはHTML 5.3への作業を進められていたものの、2019年のWHATWGとの合意により、取りやめている[3]。
HTML Living Standard
HTML Living Standard[31]は WHATWGが更新し続けている HTMLの最新仕様。2019年まではW3CのHTML5~HTML 5.2と並行して仕様策定が進められている状態だった。これを元にしてW3Cの勧告が作られていた。
HTML形式の電子メール
脚注
注釈
- ^ HTMLという名前は従来はHyperText Markup Languageの略称だったが、2023年4月現在最新の規格であるWHATWGのHTML Living Standardには「HyperText Markup Language」という名前の記載はなく、単にそのままHTMLと呼ばれている。
- ^ 廃止された従来の規格(HTML5.2まで)で使われていた呼称。現在でもISO/IEC 15445:2000で使用されている。
- ^ 例えば、太字指定の「<b></b>」等
- ^ 英: Strict
- ^ 英: Transitional
- ^ 英: Frameset
- ^ 英: corrected version
- ^ 訂正なので、改定版も名称はISO/IEC 15445:2000のまま
- ^ 5年毎にレビューと承認が行われており、手続き上は現在も有効なISO規格である。最も新しい日付は2023年のもの。ただし2004年以降、文書の改訂はない。
- ^ バージョン番号はないが「HTML 1.0」などとも呼ばれる
- ^ a b c ドラフトのみ
- ^ 現在はリダイレクト。Internet Archive参照。
- ^ Introducing HTML 3.2 には「HTML 3.2 was superseded by HTML 4.0 in December, 1997.」とあり、仕様書には「Superseded 15-March-2018」とある。前者はHTML 4.0を、後者はHTML5を後継仕様として案内している。
- ^ 修正版。現在はリダイレクト。Internet Archive参照。
- ^ revised(改訂版)
- ^ ワーキングループノートとして公開
- ^ XML構文の場合は任意の処理命令も記述可能
- ^ XML構文を用いる場合はこの限りではない
- ^ 英: revised
- ^ 英: corrected version
出典
- ^ IANAREG text/html
- ^ HTML Living Standard - Last Updated 2 May 2023 text/html
- ^ a b “HTML標準仕様の策定についてW3CとWHATWGが合意発表。今後はWHATWGのリビングスタンダードが唯一のHTML標準仕様に”. ITmedia (2019年6月10日). 2020年1月19日閲覧。
- ^ “HTML REVIEW DRAFT — PUBLISHED 29 JANUARY 2020 IS A W3C RECOMMENDATION”. W3C. 2021年5月21日閲覧。
- ^ ビレッジセンターHTML&SGML研究チーム『正しいHTML4.0リファレンス&作法』ビレッジセンター出版局、1998年3月20日。ISBN 4-89436-111-6。
- ^ JIS X 4156:2000(日本産業標準調査会、経済産業省)
- ^ JIS X 4156:2005(日本産業標準調査会、経済産業省)
- ^ RFC 2854
- ^ HTML 4.0 Specification(superseded)
- ^ HTML 4.01 Specification(superseded)
- ^ HTML5(superseded)
- ^ HTML 5.1 2nd Edition(superseded)
- ^ HTML 5.2(superseded)
- ^ "3.2.4.1 Attributes An attribute value is a string." WHATWG. (2023). HTML Living Standard - Last Updated 11 January 2023.
- ^ "The XML syntax for HTML was formerly referred to as "XHTML", but this specification does not use that term (among other reasons, because no such term is used for the HTML syntaxes of MathML and SVG)." WHATWG. (2023). HTML Living Standard - Last Updated 2 May 2023.
- ^ "HTML vs XML syntax ... There are various concrete syntaxes that can be used to transmit resources that use this abstract language, two of which are defined in this specification." WHATWG. (2023). HTML Living Standard - Last Updated 11 January 2023.
- ^ W3C "HTML 4.01 Specification" 3.2.1 Elements、1999年12月24日
- ^ "Elements, attributes, and attribute values in HTML are defined ... to have certain meanings (semantics)." WHATWG. (2023). HTML Living Standard - Last Updated 11 January 2023.
- ^ "These definitions allow HTML processors ... to present and use documents and applications in a wide variety of contexts that the author might not have considered. ... HTML conveys meaning, rather than presentation" WHATWG. (2023). HTML Living Standard - Last Updated 11 January 2023.
- ^ “HTML Standard”. html.spec.whatwg.org. whatwg.org. 2021年5月30日閲覧。
- ^ Tim Berners-Lee. “Information Management: A Proposal”. CERN (March 1989, May 1990). 2012年11月28日閲覧。
- ^ 矢倉 (2009年7月21日). “HTML5の構文解析がもたらすもの”. Web標準Blog | ミツエーリンクス. 2020年1月19日閲覧。
- ^ Raggett, Dave (1998). Raggett on HTML 4. Addison-Wesley. pp. chap. 2: A history of HTML. ISBN 0-201-17805-2
- ^ WHATWG; Mondo (2017年7月14日). “HTML Standard 日本語訳 1.6 歴史”. 2017年7月15日閲覧。
- ^ W3C (2007年3月8日). “HTML 標準の更新に着手”. 2017年7月15日閲覧。
- ^ “HTML5仕様をめぐるW3CとWHATWGについて、Ian Hickson氏がメーリングリストに書いたこと”. Publickey (2012年7月24日). 2017年7月15日閲覧。
- ^ HTML5勧告–オープン・ウェブ・プラットフォームの重要なマイルストーンを達成
- ^ HTML 5.1 is a W3C Recommendation | W3C News
- ^ HTML 5.2 is done, HTML 5.3 is coming | W3C Blog
- ^ 渡邉卓 (2017年1月1日). “2017年のWeb標準:WEB+DESIGN STAGE新春特別企画”. gihyo.jp. 2020年1月19日閲覧。 “この事態を,WHATWG側のエディターであるIan Hickson氏は,「剽窃」(Plagiarism)という強い語を用いて非難しています。”
- ^ HTML Living Standard
関連項目
- Standard Generalized Markup Language - SGML。汎用マークアップ言語。
- Extensible HyperText Markup Language - XHTML。XMLで作ったHTML。
- Handheld Device Markup Language - HDML。携帯端末用のHTML。
- Accelerated Mobile Pages - AMP。Googleらによる、モバイル(携帯)端末でのウェブページの表示の高速化を目指すプロジェクト。HTMLのサブセットとなるAMP HTMLを規定している。
- Cascading Style Sheets - CSS。表示方法・音声化方法を定義する設定ファイル。
- ダイナミックHTML - ユーザの操作で内容が変化するHTML文書。
- ユーザビリティ - 利便性。
- アクセシビリティ - 環境に依存しないアクセス容易性。
- ウェブブラウザ - HTML文書を表示するシステム。
- HTMLレンダリングエンジン - HTML文書を表示・音声化・点字化するシステムの核。
- 文字参照 - 特殊な文字を表現する符号。
- Hypertext Transfer Protocol - 通信規約。
- Webオーサリングツール - ウェブ文書を視覚的に作成するシステム。
- Another HTML-lint - HTML文書を検証するソフトウェア。