caniuse.comでhtml要素が100%サポートされていない理由
(anderegg.ca)- CanIUse.comはWeb技術の互換性を追跡するサイトだが、基本要素である
htmlのサポート率が**97.34%**と表示されており、数値の解釈に疑問が生じる - このサポート率はCanIUse.comが利用しているMDN互換性データと関係しており、
html要素ページの一部の下位項目が影響していると見られる - 問題の項目は任意の
manifest属性とsecure context requiredで、どちらも標準化されていない、または廃止された項目である - 未サポート・サポート可否不明のブラウザと古いブラウザの扱いが混在することで、
htmlのような基本要素でも直感と異なるサポート率が表示される - “% of all tracked”基準ではsupport unknownを加えて**99.98%**と見ることができ、丸め誤差の可能性は高まるが、CanIUse.comの数値はより注意して読む必要がある
htmlのサポート率97.34%が生んだ疑問
- CanIUse.comはWeb技術のブラウザ採用率と機能互換性を追跡し、機能が実際にどれだけ使えるかを数値で示す
html要素のサポート率は**97.34%**と表示される- これは
audio要素より低い数値である a、p要素も同じ**97.34%**のサポート率として表示される
- これは
- かなり以前から使われてきたWebの基本要素が100%ではないため、単純な互換性の数値以上の確認が必要になる
MDN互換性表に見える下位項目
- CanIUse.comの多くのデータはMDNから取得されていると見られる
- MDNの
html要素ページにはブラウザ互換性セクションがある - この表で赤いXが多い項目は2つある
- 任意の**
manifest属性**- 廃止済み
- 標準化されたことはない
- 関連項目であるsecure context required
- Editor’s Draftの状態である
- 現在の標準化トラック上にあるものではない
html要素に関連する使用も標準化されたことはなく、廃止済み
- 任意の**
- ほぼすべてのブラウザがこの2項目をサポートしていないのは事実だが、それだけで
html要素全体のサポート率が**97.34%**まで下がる理由が明確になるわけではない
古いブラウザと丸め誤差の可能性
- 一部のブラウザはSupport Unknownと表示され、これらのブラウザの現在の使用量合計は**1.27%**である
- Android Browser 2.1–4.3は
html要素をサポートしていないと表示されるが、使用量シェアは**0%**である- これらの古いブラウザが実際に
html要素をサポートしていなかったという表示は疑わしい - 丸め誤差が1.27%を2.66%まで膨らませ得るのかも不明である
- これらの古いブラウザが実際に
- CanIUse.com右上で「usage」の横の基準を「% of all tracked」に変え、「support unknown」ブラウザの数値を足すと**99.98%**になる
- この基準では、丸め誤差によって現在の数値が出ている可能性をより容易に確認できる
- ただし、
htmlのような基本要素における古いブラウザの扱い方は依然として混乱を招く
- CanIUse.comは今でも有用なリソースだが、表示されるサポート率は文脈と計算基準をあわせて確認する必要がある
1件のコメント
Hacker News のコメント
CanIUse には Global の割合のすぐ上に「% of all」オプションがある。機能ページの歯車を開くと、利用率の計算方法がもう少し詳しく出ている デフォルトは、caniuse が追跡していないブラウザの利用をすべて非対応とみなす All Users で、All tracked users に変えると追跡対象ブラウザだけを計算して 98.71% になる チャートで対応状況が Unknown のブラウザの合計は 1.27% だが、98.71% に 1.27% を足すと 99.97999… なので、丸めの影響がありそうだ 本当の問題は、それらのブラウザが Unknown と表示されている点で、実際には `` 要素をサポートしていると見てよさそうだ
wgetはよく使われているが、これを含めるなら話は別だ。src/html-url.cを確認したところ、実際には `` をまったくサポートしておらず、不明なタグとして扱っているMDN は以前 Mozilla Developer Network の略だったのに、今では単に MDN なのだという点が気になって調べてみたが、私も正式名称は見つけられなかった
const heading = Mozilla Developer Network;— https://developer.mozilla.org/en-US/docs/Learn/Tools_and_tes...興味深いことに、
と要素もまったく同じ 97.34% の対応率を示すと聞いた この 2 つの要素も `` 要素と同じく、MDN 由来のデータを使っている: https://caniuse.com/mdn-html_elements_a および https://caniuse.com/mdn-html_elements_p この内容を記事に反映して更新したCanIUse で別機能として html-manifest を分けてもよさそうだ そして、MDN が本当に素晴らしい資料であることも改めて言っておきたい
最初の Web ページは
html要素を使っていない http://info.cern.ch/hypertext/WWW/TheProject.htmlこれは最小の妥当な HTML と関係があるのか? そこには HTML タグがない
.のように変えればエラーなしで通るはずだタグがあるのでは? 単に明示されていないだけで推論される。どのブラウザで開いても、そのページにはタグが入るは任意だ そのため、最短の妥当な HTML は単に1 つだけであり、ただし特定の文脈でのみ妥当だ「サイトのデータの多くは MDN 由来だ」という言い方は少し曖昧だ CanIUse に接続されている機能対応マトリクスは、MDN の browser-compat-data リポジトリから来ている。HTML 要素の元データはここにある: https://github.com/mdn/browser-compat-data/blob/main/html/el... ただし、ここには CanIUse が対応率の算定に引用しているテストや利用率情報はなく、どのブラウザバージョンがどの機能を含めたかだけがある CanIUse も自分のリポジトリを指していて、そこには多くのデータがある: https://github.com/fyrd/caniuse しかし、特定要素の数値がどこから来ているのかを簡単に見つけられる入口は見つけられなかった。そこのデータも主に機能単位に見える より正確な質問は、CanIUse が HTML 要素テストと利用率の数値をどこから取得しているのかであり、それが核心的な問題のように見える
`` 要素の対応率は、他のどの要素よりも少なくとも低いか同じであるべきではないのか?
要素が「HTML 全体」を意味するわけではなく、単に**文書のルート要素**を表すもう 1 つの要素にすぎない 他の人が書いていたように、エラーのない妥当な HTML 文書を作るときに実際に必須なわけでもなく、そのとき必要なのはと妥当な本文程度だ 例えるなら、エッセイのタイトルにある “English” という単語を正しく理解してパースできる能力は、英単語 “fustigate” の意味を知っていることとは別だ「だから明確な答えはない。知っているなら教えてほしい!」