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
        ↓
      更新
        ↓
      更新
        ↓
      更新

と継続的に進化しています。

WHATWG 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技術の仕様は誰が決めているのか。

次はこの辺を整理します。