Sunday, January 15, 2006

* html と Microsoft IE7

この記事は、WaSP - Star HTML And Microsoft IE7 の翻訳です。誤訳や、より良い表現等々お気付きの際は是非コメントを!

Microsoft の IE プラットフォームとセキュリティのグループプログラムマネージャーである Chris Wilson と、Position is everything の Big John Gallant の間で、公開の近づく Windows 版 Internet Explorer 7 (IE7) における、* html (訳注: "*" = アスタリスクは、英語圏では「スター」と表現されることが多いようです) についての対話がありました。Wilson は、CSS デザイナーと開発者達に対して、これから先数ヶ月の間に、バグの特性を利用したハックを修正するよう呼びかけています。Gallant は、解決は容易だという氏の見解に依然として納得出来ないとつつ、* html 関連のハックを採用しているデザイナーや開発者達の両肩にのしかかる、修正にかかる莫大なまでの無償の作業時間への懸念を示しています。

全称的な苦悩

ブラウザ依存のハックでは、だいたいに於いてひとつかふたつのことをします。バグ (実装上の欠陥) を利用するか、実装の完全な欠如を利用するかです。* html の場合はバグに基づいたハックです。一方、子供セレクタのハックは、IE 6.0 までのバージョンでは子供セレクタの実装が全く一切含まれていないという事実に基づいています。

よく使われている Holly Hack と、それと関連する CSS 上の全称セレクタ、即ち * が誤って解釈されることを利用した IE 用のワークアラウンドがあります。このバグは複数のバージョンの IE にあります。このハックは主として IE のプロプライエタリなレイアウトモデルに関する数あるレイアウト上の問題を補正するために用いられます。

このバグが修正されることにより、Wilson が伝えるところによると全称セレクタに関するハックは IE7 の Strict モード (標準準拠モード) では効かなくなります。このバグは IE7 が Quirks モードで動作している場合は残り、またそのモードでは、そのハックは当然のことながら有効です。Wilson はウェブデザインと開発コミュニティに対して変更に備えるよう、遡ること 2005 年 10 月から伝えてきました。Gallant は p.i.e.この変更が、あなたにどう影響を与えるのかアンケートを通じて知りたがっています。

この往々にして取り散らかった話は、私たちが実際に IE7 を手にして本当のところを確かめるまでは問題ではないのでしょうか?あるいは、Tantek Çelik (Technorati, WaSP) から学ぶことが出来るかも知れません。彼は、* html を含む諸々のバグの修正、子供セレクタ (Holly Hack と並んでよく利用されるもの) をはじめとする実装を促しながらも、必要ならば先に延ばせ得るものではないかとしています。

ソフトウェアのバグを利用したハックは、ソフトウェアがアップデートされてバグが修正されると危険なものとなります。実装上の問題に取り組まれている間はある程度低い危険性が存在しますが、その実装が公表された場合どのような事態になるでしょう。それも欠陥だと呼ぶことが出来るでしょうか?これがハックが大きな問題をはらむ理由ですが、IE7 に於いてこれら特有のハックがコミュニティにどう影響するかは、まだはっきりとはしていません。

ボク、ボク。ボクを選んでよ!

全称セレクタの誤解釈は、現在のところ以下のバージョンの IE に存在します:

  • Macintosh: 5.0, 5.15, 5.21
  • Windows: 5.0, 5.5, 6.0

上記のバージョンに於いては、Quirks モードおよび標準準拠モードの両方でこのバグは発現します。これらのバージョンの IE で全称セレクタが適用された場合に、どう解釈されるかを以下に示します。

Microsoft IE の誤解釈: 全称セレクタ
セレクタ IE の解釈 W3C 標準の解釈
* html html 該当する要素なし (html はルート要素であり、したがってその親要素を持つことはない)
* * body * body 該当する要素なし (bodyhtml の最初の子要素のみである)
* html body html body 該当する要素なし

レイアウトあり?

IE のレイアウト、つまり IE に於いて要素がどう描画され、結びつき、振舞うかの定義は、時として少々謎めいたものであり続けてきました。これはこの問題に関するドキュメンテーションと議論が不足している点に拠るところが大きいでしょう。Dean Edwards (WaSP, WHATWG) と Gallant をはじめとする人たちは、hasLayout プロパティについてのより良いドキュメンテーションを集中的に探しました。Wilson とともに働く Microsoft のプログラムマネージャーである Markus Mielke が対話に加わり、実りあるものとなりました

IE のレイアウトについて明示した 2 つの優良なリファレンスは、On Having Layout (訳注: レイアウトを持つことについて) と HasLayout Overview (訳注: HasLayout 概要) で、この中で Mielke は次のように記しています:

IE には要素のレイアウト (IE の内部データ構造) を強制すること (描画寸法上のバグ補正や Holly Hack) によって回避可能な幾つかのバグが存在します。ほとんどのユーザーは、要素に対してレイアウトが施されていることの影響を気に掛けていません。 - HasLayout Overview, Markus Mielke, Microsoft

Edwards、Gallant、その他 WaSP 関係者諸氏からのインプットを引用した Mielke の記事は、* html に関する問題の核心を単刀直入に突いています。

改修への道

Gallant は * html を用いた CSS ハックを、「深刻な痛みの原因となるであろう唯一のハックだ」と表し、また、このハックは「おそらく、いかなる事実上のサポートが強化されたとしても追従されず、無くならない可能性がある。」と信じています。ここで言うサポートとは、Microsoft が IE7 で計画しているものです。

Wilson は、ゴールは IE を修正することであると指摘し、そこに辿りつくことは、ひとつのプロセスだとしています。「私は * html ハックを取り除き、利便性を向上させたいのです…何故ならば、それは過去のものとなったブラウザに対してのみ有効なものになるでしょうから。」彼はまた、いかなるハックも嫌っていることを隠しません。「すべての CSS ハックは、長期的に見ると非常にリスクが高いものです。それらは過去のものとなったブラウザ、見捨てられたブラウザに対してのみ有効なものとなるでしょう。それだけです。Tantek Çelik の発言に、私も全く同意見です。」

Gallant は、「* html ハックを止めるのは、レイアウト上の問題が恐らく無いであろう Windows Vista が出荷されるようになってから。」と述べています。Wilson はブラウザを修正することが最も重要だと感じています。「この上ない敬意を払って Holly Hack を表現するなら、これは象を仕留める銃とでも呼べそうなソリューションです。修正しようとしているものは、象のようなものもあれば、鼠のようなものもあります。数匹の象と数匹の鼠は IE7 で修正されます。しかし、私たちはあり得るすべての IE のレイアウト上の問題を IE7 で直すつもりはなく、また、私たちにそれができると期待することは現実的ではありません。」

この投稿はあなたからのコメントとトラックバックを受け付けるために、クロスポストされています

2 comments:

Anonymous said...

gashu さん、池田です。和訳お疲れさまです。
クリティカルな点を一点だけ。

> Tantek Çelik はこう云っていました — 強く同意する、とね。

一種の here 症候群ですが、(^^;
原文の I agree の I は引用文の筆者です。
二文をまとめて、

→ Tantek Çelik の発言に、私も全く同意見です。

くらいだろうと思います。
ご参考になれば幸いです。

Gashu said...

池田さん、どうもです。和訳コメントありがとうございます!

ご指摘の箇所、全く以って読み違えていました。コメントのものをそのまま使わせていただきました。

翻訳というものは面白いですね。自分のスタイルを確立してみたいな、と思いました。寡作になるような気もしなくはないですが、ちょっとじっくり付き合ってみようと思います。ところで、原文を印刷して読むという、紙のポータビリティに今更ながら気付いて感動しましたよ。;-)