最近巷で、ますますAcid2テストへの言及が増えてきたので、よい点とわるい点を並べて書いてみる。前提として読むべきは、WikipediaのAcid2の説明と、そこからリンクされているもずはっく日記の記事だろう。
Acid2テストは、UAのHTML/CSSの準拠度がいかに低いかを示し、改善を促すためにWaSP (Web Standards Project)が作成したものだ。acid(手厳しい)が意味するように、できるだけうまくいかないように意図的に作られている。
このテストの最大のよい点は、多くの人に「標準準拠という正しさ」の存在を認識させたことだと思っている。
制作者には、「標準準拠という正しさ」と「思ったとおりに表示されるという正しさ」のふたつの正しさが存在する。前者は(標準準拠でレンダリングされることを期待して)標準に従って書くものを正しいとする考え方で、後者は、思ったとおりに表示されるHTMLやCSSの記述を正しいとする考え方だ。さんざん述べてきているとおり、後者の存在を無視することはできない。多くの初心者が口にしてきた「IE6では正しく表示されるのに、他ではうまくいかない」といった表現がそれに該当するし、現在でも、validじゃなくてもいいからIE6/IE7/Firefox/Opera/Safariでなんとか同じになるものを正しいやり方だ、と考える人は多い。
このテストはショッキングな表示結果を示すことで、「標準準拠という正しさ」があることを多くの人に認識させた(※ある意味、ADPが採っている「標準準拠で思ったとおりの見た目」という路線の逆を行っていると言える)。もちろん、単に変なテストを作っただけで誰も見向きをしなかったら何にもならないわけで、各ブラウザメーカーが競ってAcid2の合格を目指し、アピールしてくれたおかげでもある。
よい点のもうひとつは(これはわるい点でもあるのだが)、複数のプロパティを一気にテストしていることである。
わるい点は、もずはっく日記でも書かれているとおり、実際の利用方法に即したテストとは言い難いことである。ミスすると悲惨な表示になるよう作られているが、表示の酷くなり具合と実際の利用に関する重要性とがリンクしていない。
さらにわるい点は、あまりに有名になりすぎたせいで、別の誤解を招くことになってしまったことである。つまり、「Acid2テストに合格したらCSS2.1準拠とみなしていい」という誤解である。
これらを説明するために、以下に簡単な例をあげる。
スマイリーの頭の部分は、以下のCSSからなっている(実際にはそのあとにセレクタのテストもしている)。
.picture p {
position: fixed;
margin: 0;
padding: 0;
border: 0;
top: 9em;
left: 11em;
width: 140%;
max-width: 4em;
height: 8px;
min-height: 1em;
max-height: 2mm;
background: black;
border-bottom: 0.5em yellow solid;
}
これ、Safari 2以降ではうまく表示してくれるが、Safari 1は、ここでmax-width:4em(1emは12pxと他の場所で指定)を適用せず、width:140%を優先してしまう。どうやら、position:fixed時には、max-width/min-widthを考える余裕が無くなってしまうようなのだ(このため、ADP本体の現在のレイアウトもうまくいかない)。
Safari 1キャプチャ (357 by 309 pixels, 3.69KB)
Safari 1は、max-widthも、position:fixedも対応している。単体で使う分にはどちらもちゃんと表示できる。だが、両方組み合わさるとうまくいかなくなってしまう。
ここから、問題の深刻さがうっすらとわかってくる。ひとつは、ブラウザのレンダリングは場合分けの山でできあがっていること。ひとつは、Acid2はかなり狭い条件しか試していないこと。厳密に言えば、スマイリーの頭が表示できることは、position:fixedとwidthとmax-widthとheightとmin-heightとmax-heightが同時に指定されている条件だったらうまく表示できる、ということしか意味しない。他のプロパティの組み合わせでうまくいくかどうか、これだけでは言えないのだ。
このテストに対応するために各ブラウザメーカーがかなりのリソースを費やしたことは想像に難くない。だが、かなり短いAcid2テストのソースに対応するためだけでもかなりの時間がかかったということは、CSS2.1のレベルでもまだまだ大量にバグが潜んでいる可能性を暗示することにもなる。
なので、「Acid2テストに合格」は本当に参考程度に見るべきだ。IE8が出てきたら楽になる、は部分的には事実だけれど、部分的でしかない。確認作業はこれからも必要になる。どういことができるようになって、どこに地雷があるのか、制作者の試行錯誤はなくならないと言っていいだろう。
トラックバックURL: http://adp.daa.jp/cgi/mt2/mt-tb.cgi/727
自分周辺で、「IE8」+「Acid」のセットは、凄まじく胡散臭がられてます。Momomoさんの書いた通り、Microsoftの独占的ソフトに対するポリシーが「IE7やIE8はIE6の利用者が違和感なく移行できることを最優先」なのは当然なので(セキュリティ周りほど酷ければ別ですね)。
現状の様に、具体的なコードもバイナリも無い状態で、開発者のブログに「Acid通ったぜ!」って情報だけがちょくちょく流れ、なんとなくIE8は行ける!っぽい印象だけが、丹念に対応状況を追い掛けない大多数の利用者に生まれるのが怖い。大半の、検証にコスト割かないニュースサイトはそれを助長するし。
3DMarkに最適化したグラフィックドライバ、とまでは言わないけれど、Acidテストは所詮、準拠性能のベンチマークに過ぎないんだと見なければ。「それなりに幅広な判り易いテストケース」なんだと。
といった事を、この記事と、一昨日貰った「IE8、かなり行けるっぽいっすよ。Acidも通ったらしいです。早く出ないかなー、IE7とばして。」なんてIMから、思いました。
21さん、ありがとうございます。
Acid2、ベンチマークとしては成功だったと思うのですが、ちょっと成功しすぎたのと、他のベンチマークがなかったことが災いして、それさえ対応すればいい、みたいな風潮になってしまったのが残念です。
とにかく今は、IE8がズル(Acid2テストのパターンに限りfloatがうまく表示できる、みたいな)をしていないことを祈るのみです。