HTML Living standardとは?
“HTML Living standard”とは?
“HTML Living standard”はウェブ上の文書を記述するためのマークアップ言語であるHTMLの技術仕様の標準規格です。WHATWGによって策定されているため、“WHATWG HTML”とも呼ばれます。
従来HTMLの仕様はHTMLの5回目の改訂版であるHTML5とそれに続くHTML5.1、HTML5.2まではW3Cよって策定されてきましたが、“HTML Living standard”はこれらに代わる標準規格です。
W3CによるHTMLは“作業草稿(WD)”、“勧告候補(CR)”、“勧告(REC)”と段階を踏んで“完成”された仕様を策定することを目指していましたが、WHATWGによる“HTML Living standard”は日々少しずつ継続的に更新され続ける“Living(生きている)”な仕様を目指しています。
2つの“HTML”
長らくHTMLの仕様はW3Cによって検討・標準化が進められてきましたが、HTML4.01を勧告した後、W3CはHTMLよりもHTMLに代わる次世代のマークアップ言語としてXHTMLの標準化に取り組んでいました。
HTMLの仕様の改訂に消極的なW3Cの方針やW3Cのウェブ制作者のニーズに対する軽視に不満を持ったApple、Mozilla、Operaによって2004年にWHATWGが立ち上げられると、WHATWGが独自に次世代HTMLの在り方を検討するようになります。主要なブラウザのメーカーからなるWHATWGは徐々に影響を強めていき、XHTMLがあまり普及しなかったこともあり、W3Cは2007年にHTMLの改訂を目的としたワーキンググループを立ち上げ、WHATWGが策定してきたウェブアプリケーションの技術仕様であるWeb Applications 1.0やHTMLのフォーム要素を発展させた技術仕様のWeb Forms 2.0をベースにしてHTML5となるHTMLの改訂版を策定するようになります。
しかし、HTML5の仕様策定において一時協力関係になったW3CとWHATWGですが、“完成”されてバージョン管理された仕様を策定したいW3Cと常に継続的に更新していきたいWHATWGとで方針に食い違いがありました。2011年にWHATWGが策定していた仕様は“HTML Living standard”と名付けられ、翌年にはWHATWGとW3Cは共同作業をやめてそれぞれで仕様を策定していくようになります。
その後W3Cは2014年にHTML5を勧告、続いてHTML5.1、HTML5.2と改訂版を勧告していきます。そのためW3Cが策定するHTML5/5.1/5.2とWHATWGが策定する“HTML Living standard”の2つの“標準”が併存する状態なります。MicrosoftのInternet ExplorerはW3Cの仕様に沿って、GoogleのChrome、MozillaのFirefox、AppleのSafariはWHATWGの仕様に沿って開発されるという状況になりました。W3Cの仕様はWHATWGの仕様をベースにしているため大きな違いこそ少ないものの細部では異なり、2つの仕様の存在は混乱のもととなっていました。
最初こそW3CのHTML5が新たな標準として受け入れられましたが、次第に主要なブラウザのデベロッパーがすべて参加するWHATWGによる“HTML Living standard”が“標準”と見做されるようになります。
HTMLの標準へ
2019年5月になってようやくW3CとWHATWGは“HTML Living standard”をHTML技術仕様の唯一の標準規格とすると合意しました。W3CはHTML5.2に続く仕様であるHTML5.3を策定していましたがこれを取りやめ、今後のHTML技術仕様はWHATWGが主体となり、W3Cがそれに協力して策定・更新していくことになりました。
また、今後W3CはWHATWGによって策定された“HTML Living standard”のある時点における仕様のスナップショットである“HTML Review Draft”を勧告として扱うとしており、2021年1月29日に最初の“HTML Review Draft”を勧告しました。この勧告をもって正式にW3CによるHTML 5.1/5.2の仕様が廃止されました。
今後は“HTML Living standard”がHTML5/5.1/5.2に代わるHTML技術仕様の標準規格となります。
“HTML Living standard”は“HTML5”?
このように、仕様書のバージョンとしての狭義の“HTML5”は廃止されましたが、“HTML5”が完全に過去のものになったわけではありません。WHATWGの仕様書の冒頭では以下のような記述があります。
Is this HTML5?―In short: Yes.
日本語訳:これ(HTML Living Standard)はHTML5ですか?―一言で言うとそうです。
“HTML5”はHTMLの標準化がWHATWGへ移った後も“HTML Living standard”を含めたウェブ技術を表す言葉として使用されており、言葉としては『“HTML5”≒“HTML Living Standard”』であると言えます。ゆえに、広い意味では引き続き“HTML5”が現代のHTMLの標準となります。
HTML 5.2とHTML Living standardの違い
“HTML5”と“HTML Living standard”の違い
“HTML Living standard”は基本的には“HTML5”から呼び方が変わっただけなのでコードの書き方などに大きく異なる点はありません。しかし、新しい機能が追加されたことによっていくつかの要素や属性は細かな違いがあり、HTML5/5.1/5.2では定義されていなかった要素や属性も多く追加されています。
また、“HTML Living standard”の仕様は現在でも更新され続けており、過去の仕様にはなかった機能が少しずつ増えています。
続く項ではHTML5.2と“HTML Living standard”との要素や属性の相違点を記載しています。
変更された要素
以下の要素は“HTML Living standard”で変更された点、もしくはHTML5.2とは異なる点があります。
要素 | 用途 |
---|---|
<article> | アウトラインを生成しなくなりました |
<aside> | アウトラインを生成しなくなりました |
<blockquote> | セクショニング・ルートが廃止されたため、アウトラインに影響しなくなりました |
<body> | セクショニング・ルートが廃止されたため、アウトラインに影響しなくなりました |
<cite> | 創作物のタイトル以外を含むことはできず、作者名を含めることはできなくなりました |
<details> | セクショニング・ルートが廃止されたため、アウトラインに影響しなくなりました |
<dialog> | セクショニング・ルートが廃止されたため、アウトラインに影響しなくなりました |
<fieldset> | セクショニング・ルートが廃止されたため、アウトラインに影響しなくなりました |
<figure> | セクショニング・ルートが廃止されたため、アウトラインに影響しなくなりました |
<link> | “rel”属性の値が“body-ok”な値のみである場合、もしくは“itemprop”属性が指定されている場合は“body”要素内に配置できます |
<meta> | “itemprop”属性を指定した場合は“body”要素内に配置できます |
<nav> | アウトラインを生成しなくなりました |
<section> | アウトラインを生成しなくなりました |
<style> | “body”要素内には配置できません |
<td> | セクショニング・ルートが廃止されたため、アウトラインに影響しなくなりました |
追加された属性
以下の属性はHTML5.2では定義されていませんが、“HTML Living standard”では定義されています。
要素 | 属性 | 用途 |
---|---|---|
<a> | ping="" | pingの送信先を指定する |
<area> | ping="" | pingの送信先を指定する |
<body> | onmessageerror="" | 文書がAPIから解読できないメッセージを受信したときに実行するスクリプト |
<button> | popovertarget="" | 表示状態を切り替えるポップオーバー要素 |
popovertargetaction="" | ポップオーバー要素の表示状態の切り替え方法 | |
<form> | rel="" | 現在の文書から見たリンク先との関係 |
<iframe> | allow="" | 利用できるブラウザの機能を指定する |
loading="" | 埋め込まれた文書の読み込みのタイミングを指定する | |
<img> | decoding="" | 画像のデコード方式を指定する |
fetchpriority="" | 画像の読み込み時の優先度を指定する | |
loading="" | 画像の読み込みのタイミングを指定する | |
<input> | popovertarget="" | 表示状態を切り替えるポップオーバー要素 |
popovertargetaction="" | ポップオーバー要素の表示状態の切り替え方法 | |
<link> | as="" | 先行して読み込む外部リソースの利用先を指定する |
blocking="" | 外部リソースの読み込み時に妨げるべき処理を示す | |
color="" | Safariのページピンアイコンの色を指定する | |
disabled="" | 外部スタイルシートへのリンクを無効化する | |
fetchpriority="" | 外部リソースの読み込み時の優先度を指定する | |
imagesizes="" | 画像を表示するサイズ | |
imagesrcset="" | 使用可能な画像ファイルのセット | |
integrity="" | 外部リソースの整合性を確認 | |
<meta> | media="" | メタデータが対象とするメディア |
<script> | blocking="" | 外部リソースの読み込み時に妨げるべき処理を示す |
fetchpriority="" | 外部スクリプトの読み込み時の優先度を指定する | |
integrity="" | 外部スクリプトの整合性を確認する | |
nomodule="" | モジュールスクリプトに対応する環境でスクリプトを無効化する | |
referrerpolicy="" | リファラーポリシーを指定する | |
<source> | height="" | 画像の横幅 |
width="" | 画像の高さ | |
<style> | blocking="" | スタイルシートの読み込み時に妨げるべき処理を示す |
<video> | playsinline="" | インラインで再生する |
以下のグローバル属性は“HTML Living standard”で追加されました。
属性 | 説明 |
---|---|
autocapitalize="" | 先頭の文字を大文字化するかを指定する |
enterkeyhint="" | ソフトウェアキーボードの[Enter]キーのアイコンを指定する |
inert="" | 要素を不活性化する |
is="" | カスタム要素と関連付ける |
itemid="" | 要素の内容のマイクロデータのグローバルな識別子を示す |
itemprop="" | 要素の内容のマイクロデータのプロパティ名を指定する |
itemref="" | 要素の外にあるマイクロデータと関連付ける |
itemscope="" | 要素の内容にマイクロデータが含まれることを示す |
itemtype="" | 要素の内容のマイクロデータのプロパティ名の定義を示す |
popover="" | ポップオーバー要素を表す |
slot="" | スロットと関連付ける |
以下の属性は“HTML Living standard”ではすべての要素に指定できるグローバル属性として定義されています。
属性 | 説明 |
---|---|
autofocus="" | 自動フォーカスの可否を指定する |
inputmode="" | 入力する時のソフトウェアキーボードの種類を指定する |
nonce="" | “Content Security Policy”のワンタイムトークンを指定する |
以下のイベントハンドラ属性はHTML5.2では定義されていませんが、“HTML Living standard”では定義されています。
属性 | 用途 |
---|---|
onbeforematch="" | “hidden="until-found"”が指定された要素が表示される前に実行されるスクリプト |
onformdata="" | フォームのエントリリストを生成した時に実行されるスクリプト |
onmessageerror="" | 文書がAPIから解読できないメッセージを受信したときに実行するスクリプト |
onsecuritypolicyviolation="" | コンテンツセキュリティポリシーに違反した時に実行されるスクリプト |
onslotchange="" | スロットが含まれるノードが変更された時に実行されるスクリプト |
onwebkitanimationend="" | CSSアニメーションが終了した時に実行されるスクリプト |
onwebkitanimationiteration="" | CSSアニメーションが繰り返された時に実行されるスクリプト |
onwebkitanimationstart="" | CSSアニメーションが開始した時に実行されるスクリプト |
onwebkittransitionend="" | CSSトランジションが終了した時に実行されるスクリプト |
変更された属性
以下の属性は“HTML Living standard”で変更された点、もしくはHTML5.2とは異なる点があります。
要素 | 属性 | 用途 |
---|---|---|
<a> | rel="" | 属性値として“opener”を指定できるようになりました |
<area> | rel="" | 属性値として“opener”を指定できるようになりました |
<iframe> | sandbox="" | 属性値として“allow-downloads”、“allow-modals”、“allow-orientation-lock”、“allow-popups-to-escape-sandbox”、“allow-top-navigation-by-user-activation”、“allow-top-navigation-to-custom-protocols”を指定できるようになりました |
<link> | rel="" | 属性値として“canonical”、“dns-prefetch”、“modulepreload”、“pingback”、“preconnect”、“preload”を指定できるようになりました |
<meta> | charset="" | 属性値は“utf-8(UTF-8)”であるべきとされています |
http-equiv="" | 属性値として“x-ua-compatible”、“content-security-policy”を指定できるようになりました | |
name="" | 属性値として“theme-color”、“color-scheme”を指定できるようになりました |
以下のグローバル属性はHTML5.2とは異なる点があります。
属性 | 用途 |
---|---|
accesskey="" | 属性値として複数の値を指定できます |
contenteditable="" | 属性値として“plaintext-only”を指定できます |
hidden="" | 属性値として“until-found”が指定可能になりました |
廃止された属性
以下の属性は“HTML Living standard”では廃止されました。
要素 | 属性 | 用途 |
---|---|---|
<a> | rev="" | リンク先から見た現在の文書との関係 |
<area> | hreflang="" | リンク先の記述言語 |
type="" | リンク先のMIMEタイプ | |
<html> | manifest="" | キャッシュマニフェストを指定する |
<iframe> | allowpaymentrequest="" | 埋め込まれた文書がPayment Request APIを実行することを許可する |
<img> | longdesc="" | 画像を説明した文書のURL |
<link> | rev="" | リンク先から見た現在の文書との関係 |
<object> | typemustmatch="" | 埋め込まれる外部リソースが“type”属性で指定したMIMEタイプと一致する場合にのみ埋め込みを許可 |
usemap="" | クライアントサイドイメージマップとの関連付け | |
<script> | charset="" | 外部スクリプトの文字エンコーディング |
<style> | type="" | スタイルシートの記述言語 |
<table> | border="" | 表の外枠の太さ |
以下のイベントハンドラ属性は“HTML Living standard”では廃止されています。
属性 | 用途 |
---|---|
ondragexit="" | ドラッグしたアイテムが要素から出た時に実行されるスクリプト |
onloadend="" | メディアのデータの読み込みが終わる時に実行されるスクリプト |
onshow="" | 操作メニューを表示した時に実行されるスクリプト |
その他
以下の要素はHTML5.2では廃止されていますが、“HTML Living standard”では定義されています。
要素 | 用途 |
---|---|
<menu> | 操作メニュー |
以下のイベントハンドラ属性はHTML5.2では廃止されていますが、“HTML Living standard”では定義されています。
属性 | 用途 |
---|---|
oncontextmenu="" | コンテキストメニューを表示した時に実行されるスクリプト |