2008.12.25

標準と実装の差をいかにして埋めるか?

イメージ:標準と実装の差をいかにして埋めるか?

一歩先のWeb標準 #20
ゆう(我的春秋)

バックナンバー

前回もProgressive Enhancementを取り上げましたが、WDE 08以来、Web標準との向き合い方について、色々と考えさせられています。今月は標準と実装の差を、ウェブページ制作者やエンドユーザーによる運用レベルで埋めることについて、少し整理してみようと思います。

モデル・標準・実装・運用

図: モデル→標準→UA実装→運用の層計算機(コンピュータ)の世界では通常、まず「モデル」がデザインされ、組み上がったモデルが「実装」されることで利用可能になります。しかし、ウェブの文書やインターフェイスのようにモデルの利用母数が大きい場合は、「モデル」を共通のお約束事として明文化した「標準」を仲立ちさせることで、利用者の利便性やコスト削減を図ることがあります。実装を通して生産・利用される資源は、最終的にはエンドユーザーの「運用」に委ねられていくことになります。

これら4つの層に由来する問題は、本来、しっかり区別してそれぞれの層で解決されるべきですが、層ごとに関与している人が異なることもあって、往々にして領域を跨ぐことが少なくありません。たとえば、HTML5は後方互換を重視しているため、既存ブラウザの実装を踏まえることがあります。また近年のライブラリやフレームワークの中には、すでに仕様が固まってしまった標準やUA実装の不備を運用レベルで吸収しようと試みる例も出てきています。

こぼれネタ: HTML5のDOCTYPE宣言

HTML5のDOCTYPE宣言は、従来のHTMLのものよりもずっと簡素になっています。

<!DOCTYPE html>

これはDOCTYPE宣言を、UAが(後方互換モードではなく)標準準拠モードでレンダリングさせるためだけのものと位置づけ、DTDを参照するためのバージョニングが不要になったためです。

なお、このDOCTYPEは、IEを含む現行のブラウザに対しても有効です。IE6も(たとえそれがXML宣言であったとしても、コメント以外の記述がDOCTYPE宣言の前にあると、後方互換モードでレンダリングされてしまうのに)なぜか未知のDOCTYPEを標準準拠モードにスイッチングしてしまうという実装になっているようです。

ライブラリでUA実装の問題を吸収する

ウェブページを制作する際は、なるべく構造のことはHTML、見栄えのことはCSS、振る舞いのことはJavaScriptで完結し、領域を跨がないことが理想です。しかし、ウェブ標準の側がその要件を充分に満たせていなかったり、UAの実装に問題があったりして、現実として妥協を強いられることも間々あります。

先月も取り上げたDean Edwards氏のie7-jsは、IE5やIE6の実装の不備を補正し、ほかの標準準拠ブラウザと同様に透過PNGや各種CSSセレクタ・プロパティを利用できるようにする、画期的なJavaScriptライブラリです。言い換えれば、一部UAの実装の問題をJavaScriptによる「運用」レベルの実装で吸収するライブラリです。

ie7-jpは標準準拠ブラウザ用に用意したCSSやHTMLコードをそのまま利用するように設計されています。HTMLのhead領域内にie7-jsへのパスさえ通してしまえば、あとはHTML, CSS, JavaScriptそれぞれに対して一切 特別な記述や編集を求めないため、JavaScriptが無効な状態のIE5, 6にさえ留意すれば、導入やメンテナンス時に余計なコストや依存関係がほとんど発生しないのは強みです。

1 2

このエントリーをブックマークする

このエントリーにトラックバックする

このエントリーのトラックバックURL
http://withd.jp/mt/mt-tb.cgi/3200


株式会社ロボット|クリエイターインタビュー |イマジカデジタルスケープ共同募集