Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

付録A 明日話したくなるHTML雑学50

ただ並べても面白くないので、テーマごとにまとめました。気になった番号から、本編のどの章につながるかを探してみてください。どれも「へぇ」と言われる側になれるネタです。

ブラウザの中で起きていること

書いたものと、ブラウザが実際に扱うものは違う、という話。

  1. tbody は書かなくても DOM に現れる。
  2. html head body は省略しても補完される。
  3. p は文脈しだいで勝手に閉じる。
  4. <table> の直下に書いたテキストは、表の中ではなく表の前へ飛ばされる(foster parenting)。
  5. View Source と DevTools は、同じページの違う段階を見ている。
  6. だから table > tr という CSS は、たいてい空振りする。
  7. HTML 仕様書のかなりの部分は、人間向けの説明ではなくパーサーの規則。

HTML という言語の正体

そもそも HTML は何をする言語なのか。

  1. HTML はプログラミング言語ではない(iffor もない)。
  2. それでも Web の基盤になれたのは、読み手が多かったから。
  3. HTML は URL・HTTP と分業して、はじめて Web になる。
  4. HTML が重視したのは、完成した紙面より「接続された文書」。
  5. ブラウザは壊れた入力でも止まらず、回復して読み進める。
  6. それは甘さではなく、閲覧を止めないための設計。

省略と空要素のからくり

短く書けるのには、ちゃんと理由と条件がある。

  1. img は最初から子を持たない「空要素」。閉じ忘れではない。
  2. brhr も空要素。
  3. <img />/ は HTML では無視される。でも SVG / MathML では本当に効く。
  4. ブール属性(disabled など)は値を書かなくても成立する。
  5. しかし disabled="false" と書いても、無効化は解除されない。
  6. 引用符の省略には、かなり狭い条件がある。
  7. 属性やタグの省略可能性は、HTML の祖先 SGML の名残。
  8. コメントの中にも、書いてはいけない並びがある。

歴史のひとこま

いまの HTML は、たくさんの偶然と現場の都合でできている。

  1. 世界初の Web サイト info.cern.ch は、今も見られる。
  2. 1989 年の Web 提案書に、上司は「Vague but exciting」と書き込んだ。
  3. 最初の Web サーバーになった NeXT には「電源を切るな」の貼り紙があった。
  4. img タグは 1993 年にマーク・アンドリーセンが提案した。
  5. Netscape の <blink> は一晩で実装され、のちに削除された。
  6. 文字を流す <marquee> は Internet Explorer の独自タグだった。
  7. かつてはコメント <!--[if IE]> が、IE 専用の分岐に使われていた。
  8. spacer.gif(1×1 の透明画像)でレイアウトを整えた時代があった。
  9. fontcenter は obsolete だが、当時の需要は本物だった。
  10. obsolete は「なかったこと」ではなく、歴史の層として残る。

標準化のドラマ

HTML は、誰かが一度決めて終わり、ではない。

  1. XHTML は厳格さを目指したが、Web の現実と衝突した。
  2. XML の「壊れたら止める」は、公開 Web には重すぎた。
  3. XHTML 2.0 は打ち切られ、現実路線の HTML5 が後継になった。
  4. <!DOCTYPE html> の唯一の仕事は、Quirks Mode を切ること。
  5. Quirks Mode は、古いページを壊さないために今も残っている。
  6. WHATWG の HTML は、版で止まらない Living Standard。
  7. W3C と WHATWG は 2019 年に HTML 標準を一本化した。
  8. ブラウザ戦争の混乱が、標準化の必要性を強くした。

HTML を読むのは誰か

HTML は、人間の目だけのためにあるのではない。

  1. HTML の読者は、ブラウザだけではない。
  2. 検索エンジンも HTML の構造を読む。
  3. スクリーンリーダーも HTML の意味づけに依存する。
  4. alt は飾りではなく、目で見ない読み手にとっての画像の本体。
  5. <details><summary> だけで、JavaScript なしに開閉する UI が作れる。
  6. <script> の中に </script> と書くと、文字列の途中でも壊れる。
  7. & をそのまま書くと、&amp; の始まりと誤解されることがある。
  8. フレームワークが変わっても、最終的に HTML へ落ちることは多い。
  9. HTML は「古い」のではなく「古くても読める」技術。
  10. HTML は完成しない仕様。これからも調整され続ける。
  11. HTML の奇妙さの多くには、ちゃんと歴史的な理由がある。