HTMLの歴史をまとめる

# はじめに
今回はHTMLの歴史を追ってみます。
HTMLがどんな進化を遂げてきたのかを知り、HTMLをどう組むのかを考えるきっかけとなればと思います。

:::note warn
参考文献に記載があるものを事実ベースで記載しています。
史実と違うものがある場合、ソースとともにぜひ教えてくださると嬉しいです。
:::


# HTMLの歴史
## HTML 1.0
World Wide Webシステムのための最初のサーバとブラウザが完成したのは1990年のこと、CERN(欧州原子核研究機構)のティム・バーナーズ＝リーが公開しました。
この年からHTMLの仕様をまとめようという検討が始まりました。

HTMLが最初に公開されたのは1993年6月、同じくティム・バーナーズ＝リーによって作成されたものが最初だそうです。
インターネット標準化団体 **IETF** から Internet Draft として公開されました。

当時は**SGML**の規約に従い、**DTD**という記法で定義されていました。

:::note info
**IETF**
インターネット技術の標準化を推進する任意団体。
Internet Draftは、IETFが公表する一連の作業文書を指す。
:::

:::note info
**SGML**
「Standard Generalized Markup Language」の略で、
現在のHTMLやXMLの元になったマークアップ言語。
:::
:::note info
**DTD**
「Document Type Definition」の略で、SGMLのスキーマ言語。
スキーマ言語とは、ファイルの構造を定義するための書き方ルール。
:::

HTMLはSGMLの構造ルールに準拠しており、現在もそれは継続しています。
SGMLは**文書を論理的な構造で捉える**ことに特徴があります。

例えば見出しなら`heading`、目次なら`ul`,`ol`,`li`を用いるという、
いわゆるセマンティックなコーディングの考え方はこの当時からあり、
HTMLの根底にある考え方と捉えられそうです。

`b`タグ(太字)や`i`タグ(イタリック)などの見た目に関わるタグも当時から存在しており、
論理的構造ベースである程度の装飾も可能、というような印象を受けました。

ちなみに日本で最初のホームページが公開されたのは1992年。
茨城県つくば市にある文部省高エネルギー加速器研究機構 計算科学センターの森田洋平博士によって発信されたものが最初だそうです。

https://www.ibarakiken.gr.jp/www/first/index.html

## HTML+
IETFの系譜とは別軸で、HTML+が1993年11月に新仕様として発表されています。
`html`タグの代わりに`html plus`タグを使用し、ページを作成します。

`br`(改行)、`hr`(水平線)、`table`(テーブル)、`form`(フォーム)などの要素が追加されています。

HTML+の策定に携わったデーブ・ラゲットという人物は、後にXHTMLの策定にも携わっています。

## HTML 2.0
1995年11月にIETFから公開されたバージョンです。
この時初めて`meta`タグが追加され、HTML+から`br`(改行)、`hr`(水平線)、`table`(テーブル)、`form`(フォーム)などの要素が採用されました。

## Netscape Navigator
firefoxブラウザの前身であるWebブラウザです。Netscape社によって1994年に最初のNetscape Navigator 1.0が発表されました。
1995年に発表された2.0では`font`, `big`, `small`などのスタイルに関するタグが追加されました。また、`script`タグでJavaScriptを用いたページコーディングも可能になりました。
1996年発表の3.0では`multicol`タグという文書の段組みに用いるタグ、1997年発表の4.0では`layer`タグという文書をJavaScriptで制御するためのタグが登場しました。

IETFのHTMLに比べ、かなりHTML自体にcssやjsの機能を持たせようとしている印象です。

## Internet Explorer
Netscape社と時を同じくして、Microsoft社がInternet Explorerを発表しました。
1995年の1.0発表を皮切りに、2.0(1995年)、3.0(1996年)、4.0(1997年)と毎年新バージョンの発表を続け、Netscape Navigator社とのブラウザ戦争を繰り広げていたようです。

独自規格のタグとしてページ表示に流す音楽を設定する`bgsound`タグ、テキストがスクロールする領域を設定する`marquee`タグなどが存在しました。
現在も現役の`iframe`タグが初めて登場したのはInternet Explorerです。

## HTML 3.2
IETFに代わり、**World Wide Web Consortium**、通称**W3C**によって公開されたものです。
元々IETFによってHTML3.0の仕様策定が進められていましたが頓挫し、ティム・バーナーズ＝リーが設立したW3CにてHTML3.2の策定・公開が行われました。

これ以降、ブラウザに特化した機能の仕様策定はW3Cで行われていくことになります。

:::note info
**HTML3.0について**
HTML3.0はHTML2.0にHTML+の機能を加えた正統進化的なものとなる予定だったようです。
しかし先に述べたブラウザ戦争の激化により、どちらのブラウザにも対応できるような策定を強いられたため、HTML3.0は頓挫してしまったようです。
:::

このバージョンにて`style`タグと`div`タグが登場しました。
また、HTML2.0で削除された`dfn`タグと`u`タグが復活し、Netscapeで策定されたスタイリング系統のタグ(`font`,`center`,`big`など)も多く採用されました。

## HTML 4.0/4.01
4.0が1997年、4.01が1999年にそれぞれ発表されました。
* テーブル関連で採用が見送られていた`tbody`,`thead`,`colgroup`タグを採用
* Netscapeから`noscript`,`frame`系統のタグを採用
* Internet Explorerから`iframe`,`object`タグを採用
* フォーム関連タグ(`button`,`fieldset`,`label`タグなど)の追加
* `span`タグの他、`ins`,`del`タグなどの追加

というように、かなり多くのタグを採用・追加しています。

### W3CのHTML構想
HTML4.0を発表したのと同時期、W3Cは将来のHTMLを見据えて2つの計画を立てます。

1つは、HTMLの元となったSGMLの思想に基づき、
HTMLの中から**見栄えを定義する要素を排除する**ということ。
実際に使用頻度が低い要素として、`font`や`s`タグなどが非推奨タグとなりました。

もう1つは、**将来的にHTMLを捨て、XHTMLへの移行を目指す**ということ。
HTMLは自由度が高い分、異なる機種間での文書のやり取りをスムーズに行うことができないという問題があったようです。
環境に依存せず読み込みと認識が可能となる規格が必要という考えのもと、よりルールを厳格にした文書規格を作ろうという思惑があったようです。

:::note info
**XHTML**
XMLというマークアップ言語に基づいてHTMLを書き直したもの。
終了タグのない`img`タグを`<img... />`のように記述する。
:::

## XHTML 1.0/1.1
前述の流れから、W3CはXHTML Basicを2000年12月に勧告しました。
続けて2000年に1.0、2001年に1.1をリリースしています。

携帯端末、テレビ、通常のPCまで幅広い環境で利用できるものだったそうです。

1.0はHTML4からXHTMLへの移行をスムーズに行うことを第一目的としており、
1.1では多様なデバイスや環境に柔軟に合わせた独自のタグセットを設計できる**モジュール化**という考え方が取り入れられています。

XHTML1.1はHTML4.0で非推奨とされたタグ、フレーム機能などが削除されています。
そのためHTML4.0→XHTML1.1への移行はページ崩れが起きやすく、実際はXHTML1.0に移行することが多かったようです。

2001〜2010年ごろまでのwebサイト制作は、

* HTML 4.01
* XHTML 1.0
* XHTML Basic
* CSS
* Flash
* javascript

上記を用いた制作が主流だったようです。

## HTML 5
2008年、W3Cと**WHATWG**(Web Hypertext Application Technology Working Group) という団体の共同作業によって、HTML5の最初の草案が発表されました。
元々WHATWGが仕様策定していた**Web Applications 1.0**という規格を元に作られたものです。

HTML→XHTMLへの移行はあまり普及せず、無理な改革に対して開発者からの不満も上がったようです。
2009年にはW3CがXHTMLの開発を中止し、HTML5を元に規格の策定が行われていきます。


:::note info
**WHATWG**
Apple, Opera, Mozillaによって設立された団体。
W3Cの仕様策定に不満を持つ開発者たちが集まり、対抗する形で登場した。
:::


しかし両者は2012年に共同作業を終了。W3Cは独自で仕様策定を行っていきます。
その後2014年にHTML5.0、2016年にHTML5.1を発表しました。

5.0では`article`, `aside`, `header`,`footer`,`nav`タグなどの追加、
5.1で`details`, `summary`, `menu`タグなどの追加がされ、
より文書構造を明確にするタグが多く追加されている印象を受けます。

また、4.0で非推奨となっていたタグのうち`font`, `center`タグなど一部が削除されています。

## HTML Living Standard
2009年10月、WHATWGは改名されたはずのWeb Applications 1.0を再び使い始め、独自の規格を策定していきます。
そしていくつかの規格のアップデート・統合を経て2011年10月、**HTML Living Standard**を開始しました。

HTML5と比べて使用できるタグなどに大きな差はないものの、
バージョンという概念を持たず、随時機能の追加・更新が行われることが特徴でした。


## HTML規格の分裂〜現在
2014年以降、HTMLに2つの規格が存在するようになります。
Chrome, firefox, SafariなどはHTML Living Standardを採用。HTML5を採用したのはMicrosoftだけでした。
年単位で検討・更新がされるHTML5と、バージョン管理せず随時機能の更新がされるHTML Living Standardでは、後者の方が開発者からの評価が高かったことが理由のようです。

そして2018年にEdgeがChromeと同じ仕様への移行を発表したことを受け、2019年にW3CはHTMLの独自の標準化を断念。2021年に完全にHTML Living Standardが唯一の標準規格となりました。

2024年現在も、HTMLの規格は**HTML Living Standard**となっています。

## まとめてみての感想
HTMLにおけるセマンティックなコーディングは、HTMLができた当初から思想として存在するものであることが分かりました。HTMLはセマンティックなコーディングによって作成して欲しいという思いがありそうです。
また歴史を経て装飾・機能系のタグが軒並み廃止、もしくは非推奨になっていることから、css, JavaScriptとの**責任分割**の考え方も重要と言えそうです。

# 参考文献

* [HTML Living StandardとHTMLの歴史 - とほほのWWW入門](https://www.tohoho-web.com/html/memo/htmlls.htm)
* [日本最初のホームページ](https://www.ibarakiken.gr.jp/www/first/index.html)
* [HTML文章の歴史を振り返る - 静岡県藤枝市のデザインスタジオ・エフ](https://design-studio-f.com/blog/hypertext-markuplanguage-history/)
* [HTML3.0仕様](http://variety.life.coocan.jp/www/spec/spec30_intro.html)
* [HTML5からHTML Living Standardへ – 真相と移行の全貌を徹底解説！ | メディアハッカー](https://fourm.jp/web/html-living-standard/)