HyperText Markup Language

WebページやWebブラウザで表示可能なその他の情報を表示するための主要マークアップ言語

HTML[注釈 1]またはHyperText Markup Language(ハイパーテキスト マークアップ ランゲージ)[注釈 2]は、ハイパーテキストを記述するためのマークアップ言語の1つで、プログラミング言語ではない。主にWorld Wide Web(WWW)において、ウェブページを表現するために用いられる。ハイパーリンクや画像等のマルチメディアを埋め込むハイパーテキストとしての機能、見出し段落といったドキュメントの抽象構造、フォントや文字の指定などの見た目の指定、などといった機能がある。

HTML
HTMLコードの例。
拡張子.html, .htm
MIMEタイプtext/html[1][2]
タイプコードTEXT
HTML
UTIpublic.html
開発者W3C
WHATWG
種別マークアップ言語
派生元SGML
拡張XHTML
国際標準HTML Living Standard

ティム・バーナーズ=リーによって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構文の場合、要素は

<要素名 属性名=>コンテンツ</要素名>

というテキスト形式で記述される。コンテンツを挟む

<要素名>...</要素名>

タグと呼ばれ、前方部分は開始タグ、後方部分は終了タグと呼ばれる。コンテンツ部に子要素をもつことで総体としての木構造が表現される。
また、子要素をもたない単一の構文

<要素名 />

単一/単独タグ[注釈 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]

<!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要素は本来見た目のためではなく、詩や住所のように実際にコンテンツの一部である改行のためにのみに使用されなければならない[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が管理することとなった。

  • 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日に仕様が改訂[注釈 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形式の電子メール

編集

脚注

編集

注釈

編集
  1. ^ HTMLという名前は従来はHyperText Markup Languageの略称だったが、2023年4月現在最新の規格であるWHATWGのHTML Living Standardには「HyperText Markup Language」という名前の記載はなく、単にそのままHTMLと呼ばれている。
  2. ^ 廃止された従来の規格(HTML5.2まで)で使われていた呼称。現在でもISO/IEC 15445:2000で使用されている。
  3. ^ 例えば、太字指定の「<b></b>
  4. ^ : Strict
  5. ^ : Transitional
  6. ^ : Frameset
  7. ^ : corrected version
  8. ^ 訂正なので、改定版も名称はISO/IEC 15445:2000のまま
  9. ^ 5年毎にレビューと承認が行われており、手続き上は現在も有効なISO規格である。最も新しい日付は2023年のもの。ただし2004年以降、文書の改訂はない。
  10. ^ バージョン番号はないが「HTML 1.0」などとも呼ばれる
  11. ^ a b c ドラフトのみ
  12. ^ 現在はリダイレクト。Internet Archive参照。
  13. ^ Introducing HTML 3.2 には「HTML 3.2 was superseded by HTML 4.0 in December, 1997.」とあり、仕様書には「Superseded 15-March-2018」とある。前者はHTML 4.0を、後者はHTML5を後継仕様として案内している。
  14. ^ 修正版。現在はリダイレクト。Internet Archive参照。
  15. ^ revised(改訂版)
  16. ^ ワーキングループノートとして公開
  17. ^ XML構文の場合は任意の処理命令も記述可能
  18. ^ 英語表記ではSingle tagsと記載される。
  19. ^ XML構文を用いる場合はこの限りではない
  20. ^ : revised
  21. ^ : corrected version

出典

編集
  1. ^ IANAREG text/html
  2. ^ HTML Living Standard - Last Updated 2 May 2023 text/html
  3. ^ a b HTML標準仕様の策定についてW3CとWHATWGが合意発表。今後はWHATWGのリビングスタンダードが唯一のHTML標準仕様に”. ITmedia (2019年6月10日). 2020年1月19日閲覧。
  4. ^ HTML REVIEW DRAFT — PUBLISHED 29 JANUARY 2020 IS A W3C RECOMMENDATION”. W3C. 2021年5月21日閲覧。
  5. ^ ビレッジセンターHTML&SGML研究チーム『正しいHTML4.0リファレンス&作法』ビレッジセンター出版局、1998年3月20日。ISBN 4-89436-111-6 
  6. ^ JIS X 4156:2000日本産業標準調査会経済産業省
  7. ^ JIS X 4156:2005日本産業標準調査会経済産業省
  8. ^ RFC 2854
  9. ^ HTML 4.0 Specification(superseded)
  10. ^ HTML 4.01 Specification(superseded)
  11. ^ HTML5(superseded)
  12. ^ HTML 5.1 2nd Edition(superseded)
  13. ^ HTML 5.2(superseded)
  14. ^ "3.2.4.1 Attributes An attribute value is a string." WHATWG. (2023). HTML Living Standard - Last Updated 11 January 2023.
  15. ^ "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.
  16. ^ "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.
  17. ^ MDN Web Docs - Void elements、2024年3月12日閲覧。
  18. ^ W3C "HTML 4.01 Specification" 3.2.1 Elements、1999年12月24日
  19. ^ "Elements, attributes, and attribute values in HTML are defined ... to have certain meanings (semantics)." WHATWG. (2023). HTML Living Standard - Last Updated 11 January 2023.
  20. ^ "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.
  21. ^ HTML Standard”. html.spec.whatwg.org. whatwg.org. 2021年5月30日閲覧。
  22. ^ Tim Berners-Lee. “Information Management: A Proposal”. CERN (March 1989, May 1990). 2012年11月28日閲覧。
  23. ^ 矢倉 (2009年7月21日). “HTML5の構文解析がもたらすもの”. Web標準Blog | ミツエーリンクス. 2020年1月19日閲覧。
  24. ^ Raggett, Dave (1998). Raggett on HTML 4. Addison-Wesley. pp. chap. 2: A history of HTML. ISBN 0-201-17805-2. http://www.w3.org/People/Raggett/book4/ch02.html 
  25. ^ WHATWG; Mondo (2017年7月14日). “HTML Standard 日本語訳 1.6 歴史”. 2017年7月15日閲覧。
  26. ^ W3C (2007年3月8日). “HTML 標準の更新に着手”. 2017年7月15日閲覧。
  27. ^ HTML5仕様をめぐるW3CとWHATWGについて、Ian Hickson氏がメーリングリストに書いたこと”. Publickey (2012年7月24日). 2017年7月15日閲覧。
  28. ^ HTML5勧告–オープン・ウェブ・プラットフォームの重要なマイルストーンを達成
  29. ^ HTML 5.1 is a W3C Recommendation | W3C News
  30. ^ HTML 5.2 is done, HTML 5.3 is coming | W3C Blog
  31. ^ 渡邉卓 (2017年1月1日). “2017年のWeb標準:WEB+DESIGN STAGE新春特別企画”. gihyo.jp. 2020年1月19日閲覧。 “この事態を,WHATWG側のエディターであるIan Hickson氏は,「⁠剽窃」(⁠Plagiarism)という強い語を用いて非難しています。”
  32. ^ HTML Living Standard

関連項目

編集

外部リンク

編集