HyperText Markup Language

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

ティム・バーナーズ＝リーによってSGMLを元に開発された。1993年に最初のドラフトが公開され、最初期においてはIETFが、1996年以降はW3Cが、2019年以降はWHATWGが規格の策定、仕様公開を行なっている。

## 特徴
HTMLは木構造（入子構造）のマークアップ言語であり、形式言語である。「プレーンテキストの文書を要素で括って意味付け」という一般的な説明は間違いである。「『タグ』と『タグ』で括られたもの全体」が「要素」（element）であり、タグすなわち要素ではない。マークアップ言語としての特徴は、先祖であるSGMLや、兄弟のXMLと共通しているため、以下ではWWWというシステムにおける「ハイパーテキスト記述言語」としての側面についてのみ記述する。

HTMLの要素には、文書を表現するものとしてごく一般的なものである見出し（ヘッドライン、h1〜）、段落（パラグラフ、p）、ハイパーテキストとして特徴的な「アンカー」（a）に関係するもの、画像など（imgなど）の電子メディア的なもの、などがある。また文字色の指定などといった、意味ではなく直接見た目のみを指定するようなものは、近年ではスタイルシートなどに分離するべきとされているが、歴史的事情、及び、スタイルシートよりもこの、HTMLでの記述が簡便になる場合が度々あることから現在でもしばしば使われている。その他主要な要素は、HTMLの要素の記事で解説している。

形式言語として見た場合「構文規則」（あるいは文法）に相当する「スキーマ」は、HTML4まではDTDとして公開され要素ごとに記載することの出来る属性、内容に含むことの出来る要素などが定められていた。HTML 4.01では厳密なもの、HTML 3.2からの移行過渡期のためのもの、フレームを用いた文書のためのものといった3つのDTDが定義されていた。

HTML 3.2では見た目を左右する要素や属性が追加されたがHTMLは本来文書構造を示すためだけにその存在意義があり、それらの要素は目的に反するものとされた。そのため視覚的・感覚的効果を定義する手段としてスタイルシート（一般にはその中のCSS）が考案された。見た目を左右する要素や属性の一部はHTML4以降では非推奨とされており、HTML 4.01 では定義されていないので使用できない。ただしHTML 4.01 で定義され、非推奨とされない要素や属性の一部にも見た目を左右するものがある。装飾的な視覚表現のためにそれらの要素や属性を用いているのであればその内容に適する要素を用いた上で、スタイルシートで表現を指定するのが望ましいとされている。

## 標準仕様

以下、言語仕様については歴史的な経緯など特別な事情がない限り、WHATWGの策定する「HTML Living Standard」を基準に説明を行う。失効済みの仕様については下記「#歴史」の項も参照。

## 言語仕様

HTMLはドキュメント構造（モデル）、各要素の役割/意味（セマンティクス）、表現する構文（シンタックス）を定義する。

### 構造
HTMLは**要素**（*Element*）の木構造を扱う。各要素は以下の3つから構成される。

* 要素名
* **属性**（*attribute*）: 0個以上。属性名と値のペア、値は文字列に限定
* 子要素: 0個以上

要素が子要素をもつため、総体として要素の木構造でモデル化される。

### 構文
HTMLを表現するための構文としては、**HTML構文**（*HTML Syntax*）および**XML構文**（*XML Syntax*）が存在する。XML構文で記述されたHTMLはかつてXHTMLと呼ばれていたが、現在の仕様ではそのような呼び分けは行わない。また、現在の仕様ではHTML構文の使用が推奨されている。

HTML文書は文書型宣言とHTML要素、そして（任意の）BOM、コメント、空白文字からなる。

HTML構文の場合、要素は
```html
<要素名 属性名="値">コンテンツ</要素名>
```
というテキスト形式で記述される。コンテンツを挟む
```html
<要素名></要素名>
```
は**タグ**と呼ばれ、前方部分は**開始タグ**、後方部分は**終了タグ**と呼ばれる。コンテンツ部に子要素をもつことで総体としての木構造が表現される。

また、子要素をもたない単一の構文
```html
<要素名 />
```
は**単一/単独タグ**またHTML5では**空要素**と呼ばれる(例：
```html
<br />
```

```html
<img src="something.jpg" />
```
)。これらはしばしば / が省略されることがある(例：
```html
<br>
```

```html
<hr>
```
)。

注意点として、要素はタグではない。要素は構造上規定される存在であり、構文上の表現であるタグと併記されるものではない。また要素はタグ+コンテンツで表現されるため、タグは要素を表現するものの一部に過ぎない。

### 機能
HTMLは異なる意味をもつ様々な要素を定義する。各要素では受け入れ可能な属性が定義され、要素の振る舞いを調整できるようになっている。ほとんどの要素では、要素名が機能を指し、属性が自身の特性を指し、子要素が収納される別コンテンツを指す。

例えば
```html
<title>
```
はタイトルを意味し、
```html
<a>
```
はハイパーテキストアンカーを意味する。
```html
<a href="https://example.com">
```
では
```html
href
```
属性によってリンク先が指定されている。

HTMLは要素のセマンティクスを定義しているに過ぎないので、それを具体的にどう表現・利用するかは利用側に委ねられている。通常はウェブブラウザでの利用が想定されているが、音声対話エージェントが利用するケースもあり得る。

## HTML文書
HTMLで書かれた文書をHTML文書と言い、HTMLでは、まず文書型宣言を書く。HTML構文を用いる場合は文書型宣言を以下の通り書かなければならない。


```html
<!DOCTYPE html>
```


次に基本的なHTML文書の例を挙げる。


```html
<!DOCTYPE html>
<html lang="ja">
 <head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width">
  <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文書は次のような構造を示している。

*
```html
<!DOCTYPE html>
```
:文書型宣言。このテキストが**最新のHTML**であることを示す。
*
```html
<html lang="ja">
```
:html要素。また、
```html
lang="ja"
```
で、言語コードの言語が使われていることの明示。
**
```html
<head>
```
:head要素（この文書のヘッダ情報の明示）
***
```html
<meta ... (/)>
```
:meta要素（文書のメタ情報）。ここでは、
```html
charset="UTF-8"
```
で、文字コードが、「**[[UTF-8]]**」であることを示す。
***
```html
<meta ... (/)>
```
:meta要素。
```html
name="viewport"
```
で、ビューポートの設定であることを示し、
```html
content="width=device-width"
```
で、設定は、幅を画面の幅に合わせることを示している(Googleは推奨)。
***
```html
<title lang="en">
```
:title要素（この文書のタイトル)の明示。また、この部分はの言語が使われていることの明示。
**
```html
<body>
```
:body要素（この文書の内容の明示）
***
```html
<article>
```
:article要素（この要素が、記事であることを明示）
****
```html
<h1 lang="en">
```
:h1要素（第一レベル)の見出しを明示。また、
```html
lang="en"
```
で、この部分の見出しはの言語が使われていることを明示。
****
```html
<p>
```
:p(段落)要素の明示。
*****
```html
<a href="http://ja.wikipedia.org/wiki/SGML/">SGML</a>
```
:a(アンカー)要素（他のリソースへのアンカー)であることの明示。
```html
href
```
で、「
```html
""
```
」内にリンク先のURLを記述する。
*****
```html
<strong>
```
:strong要素（強い強調であることの明示）

タグによって文字列を括ることによりその文字列の意味付けがなされる。ユーザーエージェントはそれを解釈して、例えば 
```html
h1
```
要素で括られたテキストは「その文書中で最も重要な見出し」という意味を持つようになり、 GUI によるウェブブラウザであれば大きく太字で表示するなどする。また、スタイルシートを用いることで見た目などを指定することができるようになっている。

なお、通常はマークアップ中に改行文字を挿入してもウェブブラウザ上では描画されない。改行を行う場合は
```html
<br>
```
要素を用いる必要があるが、
```html
<br>
```
要素は本来見た目のためではなく、詩や住所のように実際にコンテンツの一部である改行のためにのみに使用されなければならない。

## 歴史
1989年、CERNのティム・バーナーズ＝リーは、オリジナルのHTML（および多くの関連したプロトコル、HTTPなど）のメモを提案し、1990年5月にコード化した。NEXTSTEPの動作するNeXTcubeワークステーション上で開発された。当時のHTMLは仕様ではなく、直面していた問題を解決するためのツール群であった。直面していた問題とは、ティム・バーナーズ＝リーやその同僚たちがどのように情報や進行中の研究を共有するかということである。彼の成果は後に国際的かつ公開のネットワークの出現として結実し、世界的な注目を集めることになった。

HTMLの初期のバージョンはゆるい文法規則によって定義されており、ウェブ技術になじみのない層に受け入れられる助けとなった。ウェブブラウザはウェブページの意図を推測し、レンダリングを実行するのが一般的であった。やがて公式規格においては厳格な言語構文を作ることを志向するようになっていったが、それに加え、ウェブブラウザの挙動を元に構文エラーの取り扱いも規格に含めることで、既存のウェブページに対する互換性の維持が図られている。

HTMLが公式な仕様として定義されたのは1990年代からである。それは従来のマークアップ言語であるSGMLに、インターネットのためのハイパーテキストの機能を取り入れるというティム・バーナーズ＝リーの提案に大きく影響を受けたものだった。

1993年にはIETFからHTML仕様書バージョン1.0が公開され、SGMLからの拡張として文法定義のDTDを持つようになった。また1994年にIETFのHTMLワーキンググループが発足した。しかし、2.0以降のIETFの元での開発は他の開発との競合から停滞した。1996年からはW3Cによって商用ソフトウェア・ベンダーからの支援も受け、HTMLの仕様が標準化されている。また2000年からは国際標準ともなった（ISO/IEC 15445:2000）。2017年のHTML 5.2をもってW3CによるHTML仕様の勧告は終了し、2019年からはW3Cに代わりWHATWGが仕様の策定を行うようになった。以降は仕様が随時更新されるようになり、バージョン番号は廃止されている。

### 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もリリースされた。HTML 2.0はによって廃止されHTMLはIETFではなくW3Cが管理することとなった。
* 1995年11月：フォームベースのファイルアップロード。
* 1996年5月：テーブル。
* 1996年8月：クライアントサイドイメージマップ。
* 1997年1月：HTMLの国際化。（非公式な日本語訳）。「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日に仕様が改訂された。この仕様にいくらかのマイナーな修正が加えられたHTML 4.01は1999年12月24日にW3C勧告となった。の他にHTML 3.2からの移行過渡期のためのとフレームを使うことのできる の3つのスキーマを持つ。

2018年3月28日に代替された勧告に指定され、最新の勧告を参照することを推奨されている。

*
*
**日本規格協会による和訳を原案とする経済産業省の標準情報 TR X 0033:2002
*
**内田明らによる和訳

#### XHTML

HTML 4.01をベースに文法をXML構文化した派生言語。HTMLではないが、HTMLに代わる次世代言語として開発された。2000年にXHTML 1.0、XHTML 1.1がW3C勧告となったが、その後開発が始まったXHTML 2.0はHTMLとの互換性を廃したことでブラウザ開発者やウェブ開発者から大きな反発を受けた。このことがW3Cに対抗して設立されたWHATWGに後年HTMLの管理が移される遠因にもなった。XHTML 2は結局完成しないままXHTML自体の開発が2009年に終了。ただしXHTML 2.0に搭載予定だった一部の新要素はHTML5に引き継がれている。

#### ISO/IEC 15445:2000
ISO/IEC JTC 1による規格。HTML 4.01 Strictをベースにさらに厳格化したサブセット規格で、スクリプト機能が取り除かれている。日本国内では同様の規格がJIS X 4156:2000というJIS規格にもなっている。

ISO/IEC 15445:2000は2003年に訂正版が発行された（ただし訂正なので、その後も名称はISO/IEC 15445:2000のまま）。JIS X 4156は2005年に改正され、JIS X 4156:2005となっている。

### HTML5およびHTML Living Standard

前述のXHTML 2への対抗規格として2004年に発案され、新たに設立されたWHATWGが開発を始めた仕様で、当初は「Web Applications 1.0」という名称だった。XHTML 2が失敗に終わったため、2007年にはW3Cも開発に合流し、HTMLの正式な後継規格として「HTML5」と呼ばれるようになった。しかしWHATWGとW3Cの共同開発は両者の開発方針の違いにより短期間で終了する。WHATWGは仕様書は必要に応じて随時更新していく方針で、一方W3Cはある程度固定された仕様書を公開する方針だった。共同開発が終了した2011年、WHATWG側のHTML5仕様は「HTML Living Standard」に名称変更され、W3CはHTML Living Standardに独自の修正を加え、規格としてまとめたものを「HTML5」等のバージョン番号を付けて勧告するという体制になった。その後しばらくHTML Living StandardとHTML5は並行して存在していが、結局この開発体制も破綻し、2019年にHTML5の開発は終了しHTML仕様はHTML Living Standardに一本化されることになった。

HTML5およびHTML Living Standardでは、XHTML 2で追加予定だった「section」要素、ブログや記事向けの「article」要素、マルチメディアのための「audio」および「video」要素など、さまざまな新要素・属性が追加され、以前は見た目を規定していた要素の殆どは変更または削除された。

#### HTML5、HTML 5.1、HTML 5.2

W3Cによって策定されたHTML5は2014年10月28日、HTML 5.1は2016年11月1日、HTML 5.2は2017年12月14日に勧告された。いずれもWHATWGのHTML Living Standardを元にW3Cが編集を加えたものだが、W3Cの仕様は独自に書き加えた文章に整合性がなかったり、逆にWHATWGの文章を丸写しにした部分まで著作権を主張するなど非常に杜撰な出来栄えだった。WHATWGのはW3Cの行いを「剽窃」として強く非難した。2019年、WHATWGはW3Cと合意し、W3CはHTML 5.3を開発中止。HTML Living StandardがHTMLの唯一の規格となり、W3CはHTMLの管理から撤退することになった。規格として勧告済みのHTML5、HTML 5.1、HTML 5.2も2021年1月28日に正式に廃止された。

#### HTML Living Standard
WHATWGが開発と更新を続けている仕様で、HTML5の元となり、また2021年のHTML5の廃止以降は唯一となっているHTML仕様。HTML5やそれ以前のHTMLとは異なり、その名の通り随時更新される規格となっており、特定のバージョン番号を設けず、「更新日」のみが規格に記載される。

## HTML形式の電子メール

## 脚注

### 注釈

### 出典

## 関連項目
* - SGML。汎用マークアップ言語。
* - XHTML。XMLで作ったHTML。
* - HDML。携帯端末用のHTML。
* - AMP。Googleらによる、モバイル（携帯）端末でのウェブページの表示の高速化を目指すプロジェクト。HTMLのサブセットとなるAMP HTMLを規定している。
* - CSS。表示方法・音声化方法を定義する設定ファイル。
*ダイナミックHTML - ユーザの操作で内容が変化するHTML文書。
*ユーザビリティ - 利便性。
*アクセシビリティ - 環境に依存しないアクセス容易性。
*ウェブブラウザ - HTML文書を表示するシステム。
*HTMLレンダリングエンジン - HTML文書を表示・音声化・点字化するシステムの核。
*文字参照 - 特殊な文字を表現する符号。
* - 通信規約。
*オーサリングツール - ウェブ文書を視覚的に作成するシステム。
* - HTML文書を検証するソフトウェア。

## 外部リンク

* 英語
** HTML Living Standard
** HTML: HyperText Markup Language - MDN
** W3C Markup Validation Service - W3Cによる構文チェック
* 日本語
** HTML: HyperText Markup Language - MDN
** ごく簡単なHTMLの説明
** KEEPCOOL