この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2007年11月)

2007年11月8日

Acid2テスト
初回投稿日時: 2007年11月08日20時25分19秒
最終更新日時: 2007年11月09日05時27分48秒
カテゴリ: CSS
SNS: (list)

wikipediaで編集に関してしょうもない議論が行われてるみたいで、ウチの引用、リンクでもめてるみたいです。(元々は私の日記のエントリを出典としたことが、時期が古いし個人ブログなので残念ながら出典にはなりませんという変な理屈で削除されたことが原因のようです。確かに2005年のエントリなので最近のものではないですが、Acid2自体、そんなに新しいものでもないし、変化するものでもないしと、変な理由ですね。それにリンクを削除する意味も無いということで問題になったようです。でも個人の書いたコンテンツが出典もとになれないなら、wikipediaの多くの出典を見直さないといけなくなるんじゃないでしょうか??) 外部資料に頼らずに少しは自分で調べろよって感じですが(そもそも詳しく無い人が編集してるってのはどうよ? と思いますが……)、

で、暇があるのでちょっとAcid2のCSSに関して調べてみました(あんまり詳しく検証するのは難しすぎるのでやりません)。正規表現を使ってCSSを置換して指定されているスタイルを単純に抽出した結果から数えているのでひょっとすると細かい数字は不正確かもしれませんが、まあ参考程度に、ということで。

使われている(≠テストされている)プロパティ

background

色キーワード、dataスキームによる画像指定、fixed。

border

styleはsolidと無指定、colorはtransparentと色キーワードと無指定、widthはlength値(em)と0と無指定、存在しない文字列によるエラーテストあり。

border-bottom

styleはsolidのみ、colorはキーワードのみ、widthはlength値(em)と無指定。

border-bottom-color

inheritのみ。

border-color

色キーワードによる指定のみ、ひとつのみでの指定か、四つ全部での指定のみ。

border-left

styleはsolidのみ、colorは色キーワードのみ、widthはlength(em)のみ。

border-right

border-leftと同様。

border-spacing

0のみ。

border-style

noneとsolidのみで、二つ指定と三つ指定のみ。

border-top

styleはsolidと無指定、colorはキーワードと無指定、widthはlength(em)と0。

border-top-color

inheritのみ。

border-width

length値(em)と、0で、一つ指定と、二つ指定のみ。

bottom

length値(em)のみ。

clear

bothのみ。

color

色キーワードのみ

content

空文字列指定のみ。

display

inline、block、table、table-cellのみ。

float

left、right、inheritのみ。(noneは無し)

font

font-sizeがlength値(pxとem)、line-heightが無しとlength値(px)、font-familyはserifかsans-serifのみ。inheritもあり。他の指定は一切なし。

font-size

length値(em)のみ。

font-weight

bolderのみ。

height

length値(pxとem)か、パーセント値、そして0。

left

length値(em)のみ。

line-height

length値(em)のみ。

list-style

noneのみ。

margin

0かlength値(emとpx)で、0のみの指定を除いて、一つ指定、二つ指定、三つ指定、四つ指定と全てあり。autoは単独での指定のみ。

margin-bottom

length値(em)のみ。

margin-top

length値(em)のみ。

max-height

length値(mmとem)のみ。

max-width

length値(em)のみ。

min-height

length値(em)とパーセント値。

overflow

hiddenのみ。

padding

0かlength値(emとpx)で、0のみの指定を除いて、一つ指定、二つ指定、三つ指定、四つ指定全てあり。

position

relative、absolute、fixedのみ。staticは無し。

right

length値(em)のみ。

text-align

leftとrightのみ。

top

length値(em)と0のみ。

vertical-align

bottomのみ。

white-space

preのみ。

width

パーセント値と、length値(pxとem)と、auto値。単位無しでのエラーテストあり。

z-index

1と2のみ。

とまあ、こんな感じ。実際には値の上書きのテストとかあると思われるので、テストされるプロパティ値はもっと減るんではないかと思われます。

まずは値のテストが行き渡っていないことが目立ちます。例えばlength値は非常によく使われるものしかテストしていません。色に関してはキーワードしか利用されておらず、よく利用されるRGB値を直接指定する方法は全くテストされていません。各種キーワードのテストもかなり少ないことが分かります。

また、CSS2.1ではauralやpaged、interactiveなプロパティを除外しても、85個のプロパティがありますが、上記のように列挙されたプロパティは41個のみでした。半分にすら到達していません。

Acid2が全般的なテストではなく、ひとつのテストケースであることが分かってもらえましたでしょうか。もちろん、たったひとつのテストケースでここまでテストできている、というのは素晴らしいアイデアと技術のたまものですが、ブラウザを実際にテストする側からすれば、全ての仕様がテストできる訳ではないことは一目瞭然です。

Acid2はクリアすべき目標ではありますが、これが全てではありません。例えばこのテストにテキストが全く無いことに気づいていますか?(もちろん、見出しではなくて、テスト内部にということです。) Gecko1.9(trunk)が初めてテストをクリアした段階では、まだ多くの言語のテキストをまともに表示することはできませんでしたが、テストはクリアできていました。Acid2のみをブラウザの唯一のテスト結果として信仰するのであれば、その当時のバグだらけのGecko1.9は、今多くの人が毎日使ってくれているFirefox2のGecko1.8.1よりも素晴らしいものだということです。

ちなみにここまで調査、書くのに約一時間半でした。

関連するかもしれないエントリ

関連するかもしれないエントリを発見できませんでしたが、無いとは限りません。