Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
XHTMLが残したもの
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yosuke Furukawa
PRO
September 04, 2026
Programming
920
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
XHTMLが残したもの
W3C LT 2026/09/04
Yosuke Furukawa
PRO
September 04, 2026
More Decks by Yosuke Furukawa
See All by Yosuke Furukawa
Webの地図
yosuke_furukawa
PRO
6
5.1k
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
440
デザインシステムが必須の時代に
yosuke_furukawa
PRO
2
320
Node.js, Deno, Bun 最新動向とその所感について
yosuke_furukawa
PRO
10
5.4k
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
4.9k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
380
Removing Corepack
yosuke_furukawa
PRO
9
2k
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
15
3.2k
Strip Types と Storage
yosuke_furukawa
PRO
4
550
Other Decks in Programming
See All in Programming
Are APIs Still Relevant in the AI Era?
soyuka
0
450
残高管理から台帳サービスへの進化
artoy
0
180
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
150
mrbgem 三角測量 開発
ogom
0
230
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.8k
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
350
Verilogで学ぶCPU自作入門
uyuki234
8
4.1k
パーソナライズPodcastを作った話
repunit11
0
130
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
280
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
180
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
350
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
Featured
See All Featured
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.3k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
280
Designing Powerful Visuals for Engaging Learning
tmiket
1
600
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
430
Docker and Python
trallard
47
4.2k
Why Our Code Smells
bkeepers
PRO
340
58k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
2
2k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Transcript
XHTMLが残したもの W3C LT yosuke_furukawa / 2026/09/04
X: @yosuke_furukawa GitHub: yosuke-furukawa
XHTMLとは • HTML は 1991 年に Tim Berners-Lee がSGMLの応用として規定した •
SGML自体は許容度の広い文法だった • 文脈上分かるなら推論したうえで省略可能というもの • 当然HTMLもそれにならったことで規則はおおらかなものだった • 閉じタグ省略可能だったり、属性のショートハンドな書き方が認められるのもここから来る • HTMLのパーサーが複雑なのもここから来る 「title要素の時は〜〜」「head要素は書かなくても良 い」など • 結果としてレンダリングエンジンがHTMLを解析する際に例外ケースがいくつも生まれてしまった • レンダリングエンジンごとの差異も生まれてしまった
XHTMLとは • HTML 4.01 までの語彙に加えてSGMLベースからXMLベースに変更した仕様を 策定を開始 => XHTML(2000年) • 全タグを閉じる、属性は引用符で囲む、大文字と小文字は区別ありで、要素
と属性は小文字で書く、 <br /> や <hr /> のように空要素は `<要素名 />`で終 わる等 • おおらかだったために逆に複雑になってしまったHTML仕様を丸ごと厳格な仕 様にするという意欲的なプロジェクト
XHTMLとは • しかし、既存HTMLの置き換えには至らず、仕様上もHTML Living Standard と して一本化。計画としては頓挫した。10年以上も仕様化に時間がかかった。 HTMLとXHTMLの簡単年表 (powered by
AI)
なぜダメだったか? • 今やWeb仕様では鉄則になった「後方互換性の重要性」を無視してた • 全く意識してなかったわけではない、特に text/html と application/xhtml+xml などのMIME Type
による区分けとそれに伴うHTML/XHTMLのモード変更などの意識はされていた • 一定互換性を無視しても良いだろうという背景もあった • 当時のモバイル端末に複雑なパースルールは搭載できないのでは?と思われてたり、ガラケーで は実際に導入されてたり。 • これから増えるであろうウェブページは新規に作られるから新しいルールが適用されるだろうと 思われてたり。 • XMLブームに後押しされていた(全てのデータフォーマットがXMLになるべきだと思われてた)
なぜダメだったか? • しかし上手く行かなかった。厳格な仕様は間違えると表示不備になった。 • XHTMLで正しい文法を書くこと自体はコンテンツ作成者に支持はされていた。実際 大量に本などは出ていて、見られてはいたが。。。 • ブラウザ実装側が2つのモードを同時にメンテナンスするメンテナンスコストの増 大や後方互換性が崩れることを問題視 •
仕様化までにXHTML提案の2000年から2009年まで9年かかっていることもある。 • 主だったブラウザ実装側が互換性を維持するように決議を持ちかけ、理想的な整合 性のある世界よりも互換性維持の方が投票により選択されてしまった。
仕様を統合、HTML5へ • 許容度が広い仕様はHTML5でパースルールを全て定義し直した(SGMLベースではなく、HTML として仕様が完結するようになった) • 閉じタグ省略可能を明示 • 省略可能なタグも明示 • xx
タグの場合はこのアルゴリズム、 yy タグの場合はあのアルゴリズムなどタグごとにパース アルゴリズムを明示 • 細かい例外についても仕様で記述 • https://html.spec.whatwg.org/multipage/parsing.html • パースの仕様は複雑になったが、整理されたことで混乱は生みにくくなった
仕様を統合、HTML5へ • パースルールの明確化までの道のりはエグい、7年かかってる。仕様として全体 を定義し直すのにWHATWG発足から10年かかった • 仕様に未定義だったパースルールで曖昧だった所を主要エンジンをリバースエ ンジニアリングすることで仕様を再定義 • 実際のコンテンツの統計を取り、どう記述されているかを精査 •
未定義の仕様の中で様々なパターンを用意し、どう壊れるかを確認 • 一番マシな挙動にあわせて仕様を作り直すという力業 HTML5が残した巨大な資産といえる
XHTMLが残したものは何か 残したもの その1 • HTMLを記述する時の慣例 • 小文字で基本記述 • 閉じタグは省略しない •
属性値は二重引用符 `"` で囲む • などなど、必ずしも守らなくてもHTMLとしては正当だが、慣例的に統一さ れた
XHTMLが残したものは何か 残したもの その2 • HTML の中に別の文法を埋め込めるようになった • SVG / MathML
などの XMLフォーマットで記述されたコンテンツを導入し やすくなった(`.svg`で記述されたものはXMLパーサーで処理される) • HTMLにインラインでSVGを書いた時はHTMLパーサー側が頑張って解釈す る(誤りがあってもなんとかDOMにして、SVGエンジンで処理) • (一方でXSLTなどの負債も残ってしまった。XSLTはXMLベースのDocument 変換処理だが、セキュリティ上の問題もあり、削除を予定中)
XHTMLが残したものは何か 残したもの その3 • 後方互換性より何より、Web仕様の進化が止まってしまうことが最も問題 だった • XHTMLで最も問題だったのは停滞とその後のビッグバンだった • 世の中にある程度受け入れられたものは小さく進化し続けないと失敗する
XHTMLが残したものは何か 残したもの その3 • これ自体は HTML 仕様に限らない • CSS はモジュラーになり、細かくWGごとに仕様提案されるようになった。
• JavaScript は proposal ごとに細かく議論され、年ごとのスナップショットを 取ることになった。 • HTTP はセマンティクスと通信方式に分かれて HTTP/2, HTTP/3 と分離された 仕様になった。 • 進化を止めない仕様づくりこそが Web に必要だという教訓を教えてくれた
まとめ • HTML => XHTML への進化は頓挫した • しかし、新しい形で進化した。特にHTML5で曖昧だった仕様が修正されたのは 大きい •
他にもいくつか残してくれたものはある • HTMLの書き方の慣例 • HTML / XML 併用設計 • Webの仕様における進化を止めない事の重要さ