HTMLってW3Cじゃなかったの? WHATWGとの違いを整理する
前の記事で、HTMLの仕様を詳しく確認したい場合は、
WHATWG HTML Standard
を見る、という話を書きました。
ここで少し引っかかります。
HTMLといえば、
W3C
じゃなかったっけ?
昔からWebについて調べていると、
HTML
CSS
Web標準
W3C
という名前はよくセットで出てきます。
ところが現在のHTMLの仕様を調べると、
WHATWG
という別の名前が出てくる。
最初は、
「W3CとWHATWG、どっちがHTMLの公式なの?」
となりました。
結論からいうと、現在のHTMLは、
WHATWGがHTML Living Standardとして継続的に開発しています。
しかもこれは、W3CとWHATWGが別々に勝手なHTMLを作っているという話ではありません。
2019年に両者は、HTMLとDOMについて単一の仕様を共同で進めることに合意しています。W3C自身も現在のHTML標準としてWHATWGのHTML Standardを案内しています。
まずW3Cって何?
W3Cは、
World Wide Web Consortium
の略です。
Webを発明したティム・バーナーズ=リーによって1994年に設立され、Web技術の標準化を行っている国際的な組織です。
W3Cの日本語公式サイトでは、Web標準について、
ブラウザや検索エンジンなど、Webを支えるソフトウェアを実装するための「青写真」のようなものと説明しています。
現在もW3Cでは、
CSS
SVG
Webアクセシビリティ
Webフォント
WebRTC関連技術
XML
など、多くのWeb技術について標準化活動を行っています。
W3CHomepageリンク先を開く
Web標準このページはハイレベルでのWeb標準について紹介しますリンク先を開くなので、
W3CがWeb標準を作っている
という理解自体は間違っていません。
では、なぜHTMLだけWHATWGが出てくるのでしょうか。
WHATWGって何?
WHATWGは、
Web Hypertext Application Technology Working Group
の略です。
長い。
公式では、
WHATWG
とだけ覚えておけば十分そうです。
Web Hypertext Application Technology Working Group (WHATWG)リンク先を開くWHATWGは、Web標準やテストを通してWebを進化させていくコミュニティです。現在はHTMLだけでなく、DOM、Fetch、URL、Encoding、Streamsなど、Web Platformの重要な仕様を継続的に開発しています。
そしてWHATWGのトップページには現在も、
Maintaining and evolving HTML since 2004
と書かれています。
つまり、2004年からHTMLを継続的に開発しているわけです。
なぜWHATWGができたのか
ここは少し歴史があります。
2000年代前半、W3CではHTMLそのものを発展させるより、
XHTMLなどXMLベースの方向
へ進もうとしていました。
一方でブラウザを開発していた側には、
「今あるHTMLとの互換性を保ったまま、Webアプリケーション向けにHTMLを発展させた方がいいのでは」
という考えがありました。
2004年、MozillaとOperaがW3Cのワークショップで、HTMLを後方互換性を保ちながら発展させる方向を提案します。
しかし、その提案は当時のW3Cの方針とは合わず採用されませんでした。
そこで、
Apple
Mozilla
Opera
の関係者によってWHATWGが設立されました。
かなり大ざっぱにすると、
W3C
↓
XHTMLなどXMLベースの方向を重視
一方で
ブラウザ側
↓
今あるHTMLをそのまま発展させたい
↓
WHATWG設立
という流れです。
WHATWGは「W3Cに対抗する団体」なのか
歴史だけ見ると、
W3C vs WHATWG
のようにも見えます。
実際には、そんな単純な話ではありません。
2006年頃からW3CもHTML5の開発に再び関わるようになり、2007年にはWHATWGと協力してHTML5を開発するための作業部会を設置しました。
つまり途中からは、
WHATWG
+
W3C
↓
HTML5を開発
という状態になります。
ただし、ここでまた考え方の違いが出てきます。
「HTML5を完成させたいW3C」と「完成させたくないWHATWG」
ここがかなり重要です。
W3Cでは従来、
仕様を作る
↓
レビュー
↓
完成
↓
勧告
という形で、ある時点の仕様を確定させて公開する方式を取っていました。
そのため、
HTML 4
HTML 5
HTML 5.1
HTML 5.2
のようなバージョンがあります。
一方WHATWGは、
Webはずっと変化するのだから、HTMLも完成扱いにせず更新し続ければいい
という考え方です。
WHATWG自身の説明では、2011年頃に両者の方向性の違いが明確になったとされています。
W3Cは完成した「HTML5」を公開したい。
WHATWGはHTMLを継続的に保守するLiving Standardとして進めたい。
この違いです。
Living Standardって何?
WHATWGではHTMLを、
HTML Living Standard
として公開しています。
Livingは「生きている」という意味です。
つまり、
HTMLを公開
↓
実装される
↓
問題が見つかる
↓
仕様を修正
↓
新しい機能を追加
↓
また更新
という形で、仕様を継続的に更新します。
WHATWGのFAQでも、Living Standardとは、開発者やブラウザベンダーなどからのフィードバックを受けながら継続的に更新される標準だと説明されています。
そのため現在は、
HTML5の次はHTML6なの?
という考え方は、実態とは少しずれています。
現在のHTMLは、
HTML5
↓
HTML5.1
↓
HTML5.2
↓
HTML6
と進んでいるわけではなく、
HTML Living Standard
↓
更新
↓
更新
↓
更新
と継続的に進化しています。
じゃあ一時期HTMLの仕様が2つあった?
ありました。
これがややこしさの原因の一つです。
長い間、
W3C版HTML
と、
WHATWG版HTML
が並行して存在していました。
例えばW3Cでは、
HTML 5
HTML 5.1
HTML 5.2
という形で仕様を公開。
一方WHATWGでは、
HTML Living Standard
を継続的に更新。
つまり同じHTMLについて、
W3C版
HTML 5.2
WHATWG版
HTML Living Standard
のように、異なる仕様書が存在する時期がありました。
これでは、
結局どっちを見ればいいの?
となります。
実際、W3CとWHATWGも、HTMLとDOMについて異なる仕様が存在することはWebコミュニティにとって望ましくないと判断しました。
2019年にW3CとWHATWGが合意
そこで2019年5月28日。
W3CとWHATWGは、HTMLとDOMについて単一の仕様を共同で進めるための合意を結びました。
内容をかなり簡単にすると、
HTML・DOM
↓
WHATWGでLiving Standardを開発
↓
W3Cもそこに協力
という形です。
合意文書では、
HTMLとDOMは主にWHATWGでLiving Standardとして開発する
と明記されています。
W3Cも独自のHTML仕様を並行して作り続けるのではなく、WHATWGのHTML・DOM仕様へ協力する方向に移りました。
W3Cの現在のHTMLページにも、
現在のHTML標準はWHATWG HTML Standard
と明記されています。
W3C HTMLリンク先を開くMemorandum of Understanding Between W3C and WHATWGリンク先を開くということはW3CはもうHTMLに関係ない?
ここも誤解しやすいところです。
W3CがHTMLと無関係になったわけではありません。
2019年の合意では、W3CもWHATWGのHTML・DOM開発に協力し、コミュニティからの意見や課題をWHATWG側へつなぐ役割などを担うことになっています。
なので、
昔
W3CとWHATWGが
それぞれHTML仕様を公開
↓
現在
WHATWG
HTML Living Standardを開発
↑
協力
↑
W3C
くらいで理解すると分かりやすいです。
「HTMLはW3CからWHATWGに完全に移管された」
とだけ言うと少し雑です。
より正確には、
HTMLとDOMの主要な開発ストリームをWHATWGに一本化し、W3Cもそこに協力する形になった
ということです。
W3CとWHATWGは何を見ればいい?
普段Web開発をするだけなら、両者の細かい組織構造まで覚える必要はなさそうです。
大ざっぱに、
名前 | 現在の主な位置付け |
|---|---|
W3C | CSS、SVG、アクセシビリティなどを含む幅広いWeb標準 |
WHATWG | HTML、DOM、Fetch、URLなどのLiving Standard |
MDN | これらを開発者向けに整理・解説 |
くらいで十分です。
HTMLについて調べるなら、
普段の使い方
↓
MDN
仕様を確認
↓
WHATWG HTML Standard
です。
CSSについて詳しい仕様を調べればW3Cが出てくる。
DOMやFetchを深く調べればWHATWGが出てくる。
つまり、
「Web標準は全部W3C」ではない
ということです。
HTML5は間違った呼び方なの?
ここも気になるところです。
「現在はLiving Standardなら、HTML5という言葉を使ったら間違いなのか?」
というと、そこまで神経質になる必要はありません。
HTML5という名前は現在も、
HTML4以前とは違う現代的なHTML
という意味で一般的に使われています。
ただし、現在の仕様の管理方法として、
HTML5
↓
HTML6
↓
HTML7
というバージョンアップが続いているわけではありません。
仕様を正確に指すのであれば、
HTML Living Standard
を見る。
この違いを知っておけば十分そうです。
結局どう覚える?
かなり簡単にすると、
W3C
Web標準を作る国際的な組織
CSSやSVGなど多くの標準を扱う
WHATWG
HTMLなどを継続的に開発するコミュニティ
2019年
W3CとWHATWGがHTML・DOMについて合意
現在
HTML Living Standard
↓
WHATWG
です。
なので、
「HTMLはW3Cが決めている」
という昔からの覚え方だけでは、現在は少し足りません。
現在のHTMLの仕様を確認するなら、
WHATWG HTML Living Standard
を見る。
ただしW3CとWHATWGが対立して別々のHTMLを作っているわけでもない。
現在は協力して、一つのHTML仕様を進めています。
まだ知らない名前が出てくる
HTMLについては、
WHATWG
CSSなどを調べると、
W3C
ということが分かりました。
ではJavaScriptは?
JavaScriptについて調べていると、今度は、
TC39
ECMAScript
という名前が出てきます。
さらにHTTPやWebSocketについて調べると、
IETF
RFC
まで出てくる。
結局、Web技術の仕様は誰が決めているのか。
次はこの辺を整理します。
そのHTML、本当に正しい? 検索結果を鵜呑みにしないための調べ方
JavaScriptってJavaScriptじゃないの? ECMAScriptとTC39を整理する