僕が Acid テストを嫌う理由

要旨

 ブラウザーを作る人が W3C の勧告に従うよりも別のことを選ぶのは、一概に悪いこととは言えません。ブラウザーが Acid2 テストに合格するかどうかをもってブラウザーの良し悪しを測るのはおかしなことです。

 以前僕は、ブラウザーはすべて W3C の勧告に準拠するべきだと思っていました。そうすればブラウザーの間の互換性など気にしないでウェブページを書くことができるのに。 Internet Explorer の当時のバージョンが W3C acid test に合格しないのはブラウザーの欠陥だと思っていました。 IE 6 が acid test に合格したと聞いて、ようやく IE も現代的なブラウザーの仲間入りだと喜んだものです。

 W3C acid test よりずっと厳しい試験に、 Web Standards Project の Acid2 テストがあります。 IE 7 のベータが出たとき、「IE 7 は Acid2 に合格しない」ということが話題になりました。

 でも、じつは僕は今ではこれらのテストが嫌いです。いや、そう書くと語弊があります。開発者が目的を理解して使う分には便利なのかもしれませんが、少なくとも開発者以外の人が関心を持つようなものではないと思っています。特に、「このブラウザーは Acid2 テストに合格しているから良いブラウザー」などと言うのは非常におかしなことのように思います。

バランス感覚

 何年も前にどこかのサイトで読んで非常に共感した文章があるのですが、見つからないので憶えている範囲で内容を書きます (記憶を頼りに書いているので、原文にないことも書いてしまっているかもしれませんが、少なくとも僕は以下の内容に同意しています)。

 スタイルシートの float プロパティーを使って段組を実現する方法が注目を集めている。 W3C の勧告に従って実装されたブラウザーでは段組として正しく表示されるべきなのに、どれそれのブラウザーは勧告に準拠していないため正しく表示されない、これはブラウザーのバグであって修正するべきだ、などという話が出ている。しかし、ブラウザーの開発に関わっている者として、この意見には同意できない。

 私は携帯電話 (fcp 註: だか何だったか、 PC 以外の機器) 向けのブラウザーの開発に携わっている。このブラウザーでは float を使って段組を実現しているページをうまく表示できない。けれど、それがブラウザーの問題だとは私は思わない。 float というのは図表を本文領域の左 (あるいは右) に「適当に」配置して余った部分に本文を流し込んでくれという指示であり、 W3C の仕様書で細かく記述されているのはそれを実現するための方法の一つに過ぎないと考えている。あくまでも「適当に」であって、こんなものに頼って段組を実現しようという発想にそもそも無理がある。仕様書に書かれたのと異なる方法でブラウザーを実装するのは悪いことではない。

 これをブラウザーのバグだと呼びたければ呼べばよい。けれど、ブラウザーを作るときはセキュリティーや使いやすさや動作速度など様々な要求があり、 W3C の勧告に書かれたすべてに準拠することが常に他の要求に優先するわけではない。他のすべてを犠牲にしてでも勧告に従うべきというのは、バランス感覚を欠いた主張である。

ブラウザー間の差

 (追記: 下に訂正があります。)

 これと通じるところがある (と僕が勝手に思っているだけかもしれませんが) のが、 IE7 のズーム機能は CSS 使い泣かせ (趣味の Web デザイン - 備忘録 2006 年 2 月 1 日; 徳保隆夫さん) の次の文章です。

 各所で話題沸騰中の IE7ベータ2 ですが、個人的に一番心配していた IE らしい描画の風合いがきちんと護持されていたので、ちょっと安心しました。

 以前の僕なら、ブラウザー間に差があることを容認するようなこの言葉に猛反対していたでしょう。僕には「IE らしい描画の風合い」が具体的に何を意味するのかわかりませんが、今は少なくとも反対はしません。

訂正と補足 (3 月 4 日)

訂正

 ……と書いていたのですが、引用部はブラウザーが勧告に従わなくてもよいという意味ではない、と徳保さんから補足をいただきました。「Web ブラウザは仕様の範囲内で個性ある画作りをしてほしい」 (備忘録 2007 年 2 月 28 日) から引用します。

 私はそれほど CSS に精通しているわけではないのだけれど、仕様書の日本語訳などを読む限り、この通りにウェブブラウザを設計すれば、同一のスタイル指定からは完全に同一の表示結果が得られるであろう、とはいえそうにありません。

(略)

 というわけで、私はブラウザ間に表示の差異があっていいという立場ですが、それは別に仕様から外れていいとか、そういった主張ではないのです。Acid2 Browser Test について私はよく知りませんが、それが仕様の特異な解釈を押し付けるようなものでない限り、クリアを目指す意味はあると思います。

 すみません、徳保さんの 2006 年 2 月 1 日の元記事を誤解して我田引水の文章になっていました。ご指摘ありがとうございます。

 僕の文章はいくつかの問題を混同して書いていました。それを明確にすると、僕がどうして元記事が僕の主張と「通じるところがある」と思ったのかの説明になると思います。これを説明することで、我田引水に悪気はなかったという言い訳をしたいと思います。その後、僕が Acid テストをどういう点で嫌っているのかをもう少し明確にできればいいなと思います (がその部分はまだ書いていません)。

 混同していた問題を思いつく範囲で挙げてみます。

  1. 「同一のスタイル指定からは完全に同一の表示結果が得られる」べきか。
  2. ブラウザーは W3C の勧告に完全に従うべきか。
  3. ブラウザーの開発者は Acid2 テストの合格を目指すべきか。
  4. ブラウザーの利用者は、ブラウザーが Acid2 テストに合格するかどうかに注目するべきか。

 徳保さんに補足していただいた通り、ブラウザーが勧告に完全に従っていても、「同一のスタイル指定からは完全に同一の表示結果が得られる」ことにはなりません。徳保さんの元記事の「IE らしい描画の風合いがきちんと護持されていた」という表現は 1 を否定しているからこそ出てくるわけですが、だからといって 2 を否定していることにはなりません。 2 を否定する文章の中で、これに「通じるところがある」として徳保さんの元記事を引用したのは誤りでした。僕は 1 と 2 の差を完全に無視していました。

 この文章は僕が 4 を否定する理由を述べる文章ですが、その中で僕は 2 も否定しています。なお、 3 については考察の対象外としています。 1 は? 考えてもいなかったのですが、当然、否定します。昔の僕が 1, 2 を肯定していたのは書いた通りです。

従う「べき」ではあるかもしれません (書きかけ)

 2 を否定する、というのも語弊があるかもしれません。「従うべき」の「べき」の解釈によって変わるような気がします。勧告への準拠の度合いを高めるというのは、数ある要求のうちの一つでしかなく、絶対のものではない、というのが僕の主張です。

 理想のブラウザーの条件とは、勧告に準拠していて、安全で使いやすくて動作が軽快で、しかも安価で、開発が速くて (仕様が発表されてから 20 年後に対応してもらっても遅い)、ほかいろいろ。そういう多数の要求の中で仕様への準拠だけを重視するのはバランス感覚を欠いており、ブラウザーが勧告に準拠しない (そのため Acid2 テストにも合格しない) のは開発者が馬鹿だからではなくて理由がある、ということを書きたかったのです (が、ちゃんと書けていないのでこの辺りは別の機会に書きます)。

2007 年 2 月 24 日公開、 2007 年 3 月 4 日「訂正と補足」を追加。著者: fcp / このサイトについて