<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <dfn>Web <rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">互換性<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">compatibility</rt></rubyb></dfn>とは、現実の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web</anchor>
の世界との (主に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webサイト</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaScript</anchor> と、
あるいは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web鯖</anchor>の挙動との) <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">互換性</anchor>のことをいいます。
多くの場合、何らかの仕様書に明示されていない <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>の挙動について、
それに依存しているものが存在することをもって「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換性</anchor>のために必要」
などと議論する時に使います。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web</anchor> で利用されている技術は、広く利用されているため、その拡張や変更には色々な制限があります。
ある実装方法や拡張案を採用することによって現実に存在している<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アプリケーション</anchor>の動作に支障が出たり、
意図しない解釈をしてしまったりする場合があります。そういったものを<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">Web-compatible</rt></rubyb></dfn>でないといいます。</p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> 例えば、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web</anchor> 上の相当数の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML文書</anchor>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タグ</anchor>の入れ子関係が間違っているなど構文上の誤りを含んでいます。
構文的に正しくない <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML文書</anchor>に遭遇した時に処理を停止し、エラーを表示するような実装は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換</anchor>とは言えません。</p></example><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>および近代的な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web標準</anchor>の開発において、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換性</anchor>は最も重要な性質の一つであると考えられています。
セキュリティ上必要な場合など極めて例外的な場合を除き、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換性</anchor>の無い変更や新機能は
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>に実装されることはありませんし、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換性</anchor>のために必要な機能が削除されることもありません。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> 歴史的には <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web標準</anchor>の制定プロセスにおいて<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換性</anchor>は軽視されてきましたし、
現在でもなお <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">W3C</anchor> においては <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換性</anchor>の優先度は必ずしも高くありません。
むしろ理論的な合理性や既存の仕様書との整合性、政治的中立性が重視される傾向にあり、
市場と仕様が乖離する要因になっていました。</comment-p><section><h1>失敗した非互換変更</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換</anchor>でない変更が企てられたことは過去に何例かありますが、
多くは失敗しています。</p><figure class="list middle"><ul><li><code class="DOMi" xml:lang="en">DOMStringList</code> の廃止</li><li><code class="DOMe" xml:lang="en">click</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">イベント</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">副作用</anchor>の廃止</li><li><code class="DOMi" xml:lang="en">CDATASection</code> の廃止</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML文書</anchor>の <code class="DOMm" xml:lang="en">createElement</code> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名前空間URL</anchor>の扱い</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性選択子</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII大文字・小文字不区別</anchor>性の変更</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">AttrExodus</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IE10</anchor> における <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Flash</anchor> の排除</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> における <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">H.264</anchor> の削除</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RDFa</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">無奇癖モード</anchor>における<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">注釈</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析</anchor>の変更</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RSS</anchor>/<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Atom</anchor> の <code class="XMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">xml-stylesheet</anchor></code> の無視</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> への <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML名前空間</anchor>構文の追加</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XHTML</anchor> への移行</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Strict DTD</anchor> への移行</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Netscape Cookie</anchor> から <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF Cookie</anchor> への置き換え</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GIF</anchor> から <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PNG</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MNG</anchor> への移行</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML</anchor> 化</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">open</code> (XHR)</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8</anchor> 固定</li></ul></figure></section><section><h1>強行された非互換変更</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">セキュリティー</anchor>を目的とした<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">変更<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">非互換変更</title></anchor>は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換</anchor>でなくても受け入れざるを得ないことがあります。
圧倒的なシェアを背景に強行される例もあります。</p><figure class="list middle"><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">AppCache</anchor> の <code>SecureContext</code> 限定</li><li><code class="HTMLe" xml:lang="en">keygen</code> の廃止</li><li><code class="DOMe" xml:lang="en">beforeunload</code> の文面無視</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NPAPI</anchor> の廃止</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SSL 3.0</anchor> の削除</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Mixed Content</anchor> 規制の強化</li><li>旧版 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket</anchor> の削除</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IE</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XSS防護</anchor>機能</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スマートフォン</anchor>における <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Flash</anchor> の事実上の排除</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スマートフォン</anchor>における<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ガラケー版</anchor>独自仕様への非対応</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ポップアップ</anchor>の抑制</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SSL 2.0</anchor> の削除</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">平文</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebDAV</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">basic認証</anchor>の排除</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ガラケー版</anchor>独自仕様の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSS</anchor> の採用</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">secure origin</anchor> 以外での <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Geolocation API</anchor> の無効化</li><li><code>image-orientation</code></li></ul></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Flash</anchor> は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web</anchor> 上で広く使われており本来なら <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換性</anchor>のために実装しなければならないはずですが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スマートフォン</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タブレット</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>からは排除されました。
一方で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">デスクトップブラウザー</anchor>では、他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プラグイン</anchor>が排除された後も、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Flash</anchor> だけ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換性</anchor>のために例外的に実装され続けています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[35]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日本</anchor>では <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MacJapanese</anchor> も使われていましたが、今の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>は表示できなくなっています。
今でも稀に遭遇することがありますが、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字化け</anchor>してしまいます。</p></section><section><h1>Web 互換性の変化</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換性</anchor>は時代により変化します。ある機能が広く実装され利用されるようになると、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換</anchor>のために必要な機能に含まれるようになります。逆にある機能が利用されなくなり、
かつて利用されていた時代の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webサイト</anchor>が機能しなくなったとしても構わないと思われる場合には、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換</anchor>のために必要な機能から外れます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> ある時代には<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換性</anchor>のために必要だった(かもしれない)ものの、
その後必要でなくなり(ということにされ)削除された機能には次のものがあります。</p><figure class="list short"><ul><li><code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">basefont</anchor></code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>無効の表示モード</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">VRML</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Gopher</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XBM</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ステータスバー</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Java</anchor><ul><li><code>applet</code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LiveConnect</anchor></li></ul></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NPAPI</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Flash</anchor></li><li><code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">showModalDialog</anchor></code></li><li><code class="HTMLe" xml:lang="en">isindex</code></li><li><code class="DOMi" xml:lang="en">DOMError</code></li><li>非 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FTP</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">部分資源</anchor>としての <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FTP</anchor></li></ul></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> また次の機能はもはや<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換性</anchor>のために不要として削除することが提案されています。</p><figure class="list"><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">navigate</anchor> における <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">multipart/x-mixed-replace</anchor></code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> からの <code class="URI" xml:lang="en">ftp:</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">fetch</anchor></li></ul></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> ただ、一度複数の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>で実装され広まった機能を削除するのは容易ではありません。
例えば現在では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor> (<code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">frameset</anchor></code>) を使うことはほとんどありませんが、
かつて<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレーム</anchor>を使って作られたページが大量に存在し、それらを閲覧できなくなるのは好ましくないため、
削除されていません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> 次の非互換変更が提案されていますが、実施されるか、
されるとしていつになるかは不透明です。</p><figure class="list"><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">同期</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XHR</anchor> の廃止</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SVG</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析器</anchor>を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor> から <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> に変更</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XSLT</anchor> の削除</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">AppCache</anchor> の廃止</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">mutation event</anchor> の廃止</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FTP</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">fetch</anchor> の廃止</li></ul></figure></section><section><h1>Web の vendor 中立性と Web 互換性</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換性</anchor>は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web</anchor> が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">vendor</anchor> 中立であり、
複数の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">相互運用性</anchor>の高い実装が共存していることを前提に成立しています。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>は複数存在し、それぞれが (大部分で重なりつつも) 異なる <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web</anchor> 
技術を実装ています。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">著者</anchor>はその差異を認識し、いずれの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>でも意図通りに動作させられる範囲内で
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web</anchor> 技術を用いることを (幸か不幸か) 要求されています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> いずれかの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>でしか実装されていない機能や、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>同士で異なる方法で実装されている機能を用いたとすると、
すべての <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>で正しく動作する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webアプリケーション</anchor>) とはなりません。
その場合、仮に特定の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>でのみ正しく動作していたとしても、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web</anchor> 全体として見た時その<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書</anchor>ははじめから「壊れて」います。
その <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>が以後の版でその機能の実装方法を変更したり、
機能自体を削除したりして、その<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書</anchor>がその <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>でさえ正しく動作しなくなったとしても、
元から「壊れて」いたものがより壊れただけです。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">相互運用性</anchor>の低い機能の変更や削除は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web非互換</anchor>とは考えられていません。</p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> 例えば <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Google</anchor> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> で <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web Intents</anchor> を実装しました。
いくつかの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webアプリケーション</anchor>はこれを利用しました。その後 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor>
は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web Intents</anchor> を削除し、そのような <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webアプリケーション</anchor>は動作しなくなりました。
しかしこれは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web非互換</anchor>な変更とは考えられていません。</p></example><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IE10</anchor> は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IE</anchor> が10年間対応し続けてきた <code class="CSS" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">filter</anchor></code>
や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">VML</anchor> を削除しました。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IE</anchor> 専用のサイトなどでこれらの機能はよく用いられていましたが、
これらは元々 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IE</anchor> 以外では実装されておらず、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web非互換</anchor>な変更ではありません。</p></example></section><section><h1>閉鎖的環境における Web 非互換な機能</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web</anchor> の技術を用いているものの、特定の分野の要求に基づき独自のアレンジを加えて利用している環境
(いわゆる <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">walled garden</anchor>) では、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web非互換</anchor>な独自の機能が実装されている (されていた)
ことがあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> 次のような例があります。</p><figure class="list"><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ガラケー</anchor>環境における独自の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">シフトJIS</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSS</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WAP</anchor> 環境における <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WML</anchor> で拡張された <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XHTML</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Dashboardウィジェット</anchor>における <code class="HTML" xml:lang="en">&lt;<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">script</anchor>/&gt;</code> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析</anchor> (<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal>)</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox拡張</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome拡張</anchor>などにおける<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">特権</anchor>的なアクセス</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アプリ内ブラウザー</anchor>の特殊機能</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webアプリケーション</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">関門</anchor>の裏側でのみ用いる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アプリケーションサーバー</anchor>の簡略化された
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> の実装</li></ul></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> こうした非互換な機能は、最初は良くても、あるいは当該環境の提供者には都合が良くとも、
次第に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web</anchor> との一体性が高まって不都合が生じたり、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web</anchor> と独自環境で2種類の実装を維持することが (環境の提供者にとってもその環境へのコンテンツの提供者にとっても) 負担になったりして不具合の温床になったり、
やがてメンテナンスされなくなって放棄されたりする一因になることがよくあります。</p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換性</anchor>の議論では、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ブラウザー拡張</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アプリ内ブラウザー</anchor>を含め、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webプラットフォーム</anchor>に属さない分野の個別の事情は原則として考慮されません (具体例 <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal>)。
そうした独自の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プラットフォーム</anchor>での<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">互換性</anchor>の維持は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web標準</anchor>開発全体の責務ではなく、当該<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プラットフォーム</anchor>の提供者の責務と考えられます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</anchor-end> 現実には、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web</anchor> の技術の特定の実装の挙動がその実装を使った<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プラットフォーム</anchor>ではよく使われて、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web</anchor> 全体では使われていない、ということがしばしば起こります。
当該<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プラットフォーム</anchor>の提供者は、 (元々単一であった技術を) <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web</anchor> とそれ以外とで別の動作モードに分けて互換性を維持するか、
独自<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プラットフォーム</anchor>の挙動を非互換に変更するかといった選択を迫られることになります。</p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Dashboardウィジェット</anchor>では <code class="HTML" xml:lang="en">&lt;<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">script</anchor> <strong>/</strong>&gt;</code>
が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空要素</anchor>として解釈されることになっていました。
標準の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML構文解析器</anchor>ではそのような挙動は認められていませんが、
既存の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Dashboardウィジェット</anchor>との互換性を保つため、
標準とは異なる構文解析モードが必要となりました。</p><p xmlns="http://www.w3.org/1999/xhtml">これは有名な事例で、 <cite>HTML Standard</cite> の編集者らも当然承知していましたが、
そのような挙動を標準の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> に取り込むと <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web</anchor> 側で互換性の問題が生じるため、
どれだけ影響を受ける<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Dashboardウィジェット</anchor>が多いとはいっても、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML構文解析器</anchor>の動作の規定の根拠にはされませんでした。</p></example><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <cite xml:lang="en">initEvent should not require three parameters · Issue #387 · whatwg/dom</cite>
(<time>2017-01-14 16:56:56 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/dom/issues/387">https://github.com/whatwg/dom/issues/387</anchor-external></li></ul></refs></section><section><h1>Web 互換性の科学的測定</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> 元々 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換性</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>開発者と仕様開発者の経験や出荷後の不具合報告などから判断するしかありませんでしたが、
2005年頃に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Ian Hickson</anchor> が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Google</anchor> の収集したデータから得られた数値を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML5</anchor>
の開発に取り入れたことを契機に、できるだけ客観的な測定値をもとに議論する試みが広がってゆきました。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> のような静的な対象については、調査の対象となるデータセットを整備し、
そこから機能の利用度を推測する方法が採られています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">API</anchor> のような<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプト</anchor>の機能については、
利用された回数を測定する <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">use counter</anchor> のような仕組みが <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> の開発版に組み込まれています。
2010年代に入ってからは、実装や仕様から機能を削除したり、大きく変更したりする時は、
計測結果を判断材料にしています。</p></section><section><h1>「Web 互換性」の崩壊</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="39" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[39]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">平成時代</anchor>末期頃から <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> を中心に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換性</anchor>を軽視して破壊的変更を加えることに躊躇がなくなる傾向が強まってきつつあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[40]</anchor-end> 
測定や統計による調査手法が確立されたために、数値が小さければ、あるいは「小さくなれば」、
機能を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非互換変更</anchor>したり削除したりしても構わないという風潮に変わってきています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[41]</anchor-end> 
しかし測定や統計はそもそも不完全なものであること、
性質上どうしても頻繁にアクセスされるページに偏ること、
特に古くなってたまにしか閲覧されないページの状況が正確に把握されないこと、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー事業者</anchor>の従業員が英語 (せいぜい欧米圏) を中心に観測することによる偏向、
といった要素が見過ごされがちです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="42" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[42]</anchor-end> 
そもそもセキュリティーに関係する (と理由付けされる) 変更はあまり互換性が重視されない傾向がありました。
その他にも、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>のアーキテクチャーに大きく関わる変更 (主に機能の削除) は
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー事業者</anchor>のモチベーションが大きいため積極的に進められがちです。
また、表示上の差異のみに関する変更は既存ページへの影響が軽視される傾向が強まっているように思われます。</p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[43]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">令和</anchor>に入ってからの事例でいえば、 <code>h1</code> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェントスタイルシート</anchor>上の表示サイズの指定が突然削除されたりしています。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>章節</anchor> </sw-see></p><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[44]</anchor-end> 
表示に強いこだわりがあれば<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">著者スタイルシート</anchor>で明示しているだろうから大丈夫だろうという目論見での変更のわけですが、
その変更によって従来の大きさで問題なかったWebページの表示が崩れるという現象が実際に起こっています。
しかし<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">見出し</anchor>の表示の大きさが変わった程度だと、なんか表示がおかしいなあと困る程度の場合が多いので、大騒ぎにならず、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">著者</anchor>が変だなあと思って修正する羽目になるのです。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー事業者</anchor>はその修正コストに何の責任も負わないわけです。</p><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="45" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[45]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>の変更のせいだと気づいても、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">著者</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>もまあこれくらい仕方ないと思ってしまうのですが、
それの積み重ねで大変なコストを負担させられていることに気づかないでいます。
あるいは、昨今の人気 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webサービス</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">API</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaScript</anchor> の人気<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ライブラリー</anchor>は数ヶ月ごとに<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非互換変更</anchor>されることもザラなので、
それに飼いならされた開発者たちは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web技術</anchor>もそんなものだと思ってしまっているのかもしれません。</p></example><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[36]</anchor-end> <cite xml:lang="en">Should we remove XSLT from the web platform? · Issue #11523 · whatwg/html</cite>, <time>2025-08-06T01:26:36.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/html/issues/11523">https://github.com/whatwg/html/issues/11523</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="37" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[37]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;36</anchor-internal> これを見るに「Web互換性」という概念はもうなくなってしまったし、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー事業者</anchor>はもはや10年前のWeb頁が10年後も同じように表示されることを目標にしてくれないんだろうなあ。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[38]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Google</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apple</anchor> はともかく <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Mozilla</anchor> も賛成となると <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor>
の存在意義も既にないよなあ。</p></section><section><h1>歴史</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> 確証はありませんが、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換</anchor>という言葉が使われだしたのは00年代末か10年代初め頃ではないでしょうか。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> 00年代半ばまでは、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換</anchor>に相当する考え方は必ずしも広く受け入れられたものではありませんでした。
例えば00年代前半に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">W3C勧告</anchor>となった <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM3</anchor> は、当時の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web</anchor> 
の実態を無視して理論的な整合性や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Java</anchor> での実装可能性を重視して開発された節があります。
また00年代初頭に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>に実装された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOCTYPEスイッチ</anchor>は、
当時の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web</anchor> の状態や実装の延長にある<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">互換モード</anchor>に加えて当時の仕様に基づく<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">標準モード</anchor>を追加するものでしたが、
現在でいう <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web互換性</anchor>を重視した前者のモードは移行措置であり、あまり重視されていませんでした。
(そのため軽度な非互換変更がいくつか加えられています。軽度で済まなかったものは、失敗に終わり元に戻されています。)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <cite xml:lang="en">Re: {Spam?} Re: <strong></strong>[<strong></strong>xhr<strong></strong>]<strong></strong></cite>
( (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Anne van Kesteren</anchor> 著, <time>2014-09-04 02:49:30 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://lists.w3.org/Archives/Public/public-webapps/2014JulSep/0416.html">http://lists.w3.org/Archives/Public/public-webapps/2014JulSep/0416.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <cite xml:lang="en">Editorial: web compatibility typically remains relevant · whatwg/dom@346e32c</cite>
(<time>2016-04-16 13:06:56 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/dom/commit/346e32c67ba976e6e4c10db8be1d216f34cd7e3b">https://github.com/whatwg/dom/commit/346e32c67ba976e6e4c10db8be1d216f34cd7e3b</anchor-external></p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> <cite xml:lang="en">149943 – Use &quot;DNS pinning&quot; to prevent Princeton-like exploits</cite>
( (<time>2016-06-16 18:41:03 +09:00</time>))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://bugzilla.mozilla.org/show_bug.cgi?id=149943#c66">https://bugzilla.mozilla.org/show_bug.cgi?id=149943#c66</anchor-external></figcaption><blockquote><p>marking WONTFIX unless someone can come up with a solution that does not break</p><p>the web.</p></blockquote></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[32]</anchor-end> <cite xml:lang="en">#SmooshGate FAQ  |  Web  |  Google Developers</cite>
(<time>2018-03-20 07:16:16 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://developers.google.com/web/updates/2018/03/smooshgate">https://developers.google.com/web/updates/2018/03/smooshgate</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[33]</anchor-end> <cite xml:lang="en">Revive createObjectURL? · Issue #404 · w3c/mediacapture-main</cite>
(<time>2018-04-19 13:17:16 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/w3c/mediacapture-main/issues/404">https://github.com/w3c/mediacapture-main/issues/404</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[34]</anchor-end> <cite xml:lang="ja">Blink principles of web compatibility - Google ドキュメント</cite> (<time>2019-08-14 15:53:23 +09:00</time>) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://docs.google.com/document/d/1RC-pBBvsazYfCNNUSkPqAVpSpNJ96U8trhNkfV0v9fk/edit#">https://docs.google.com/document/d/1RC-pBBvsazYfCNNUSkPqAVpSpNJ96U8trhNkfV0v9fk/edit#</anchor-external></p></section></body></html>