*htmlハック? Conditional Comments?

2009-02-26 16:15:52

先日、IE Death March(http://iedeathmarch.org/)というIE6についてのブログを読んでいたとき、IE6がハマーh2やNYのツインタワーのテロの前にリリースされていることに少し驚きました。すでにリリースから8年がたち、まちがいなくIEシリーズの歴史上ブラウザとしては最も長きにわたりシェアをもっていたブラウザでしょう。

ユーザーにとってはIE6は素晴らしいブラウザであったのかもしれませんが、しかし開発者にとっては、必ずしも『素晴らしい』ブラウザではなく、開発のために夜のコーヒー杯数が増えた方も多いのではとおもいます。

最近ではCSS2.1を完全にサポートしたIE8のリリースの話も増えてきて、IE7, IE6, と事実上3つのバージョンに対して制作者は対応しなければなりません。IE6やIE7などはバグも多く修正しなければなりません。このときIEの場合はハックかConditional Commentsの二つの方法があるでしょう。

このハックとConditional CommnetsについてWeb Directions のJohnと話をする機会がありました。その際に、Conditional Commentsを利用すると動作が不安定になるという話を日本で聞いたことがあると話をしたところ、Johnは初耳とのこと。当然、彼はMSのブログでもみたことがないとのことでした。

そこで、John Allsoppを通して実際のところをIEの開発チームのChris WilsonとScott Dickensに話を伺ってみました。

Chris Wilson - IE platform Architect(クリス・ウィルソン/プラットフォーム・アーキテクト)

We actually recommend that you DO use conditional comments if they are appropriate to work around problems (normal advice about using >= rather than = and using standards first applies, of course). It’s okay to use the * hack if all you care about is separating <=IE6 from >=IE7 + other browsers, of course.

私たちは実際のところは、もし他に適切な回避方法がないのであればコンディショナルコメンツの使用を薦めている。(当然、標準的アプローチを試した後の話だが)
*もし、IE6, IE7他のブラウザとの切り分けができるのであれば、*htmlハックを使う事ももちろん出来る。

Scott Dickens Program Manager(スコット・ディッケンズ/プログラムマネージャー)

We do describe this in a couple of places. The most complete place is probably this MSDN article - http://msdn.microsoft.com/en-us/library/cc817577.aspx. Another might be the CoDe magazine article from Beta 2 timeframe - http://www.code-magazine.com/Article.aspx?quickid=0811032 (linked to from the IE blog at http://blogs.msdn.com/ie).

いくつかのところで、これは説明したよ。もっとも、よく詳しいのはMSDN記事 - http://msdn.microsoft.com/en-us/library/cc817577.aspx。他には、CoDe magazine article from Beta 2 timeframe - http://www.code-magazine.com/Article.aspx?quickid=0811032 (linked to from the IE blog at http://blogs.msdn.com/ie)かな。

上記の二人とも、IEの開発においては最も中心にいる人物である。そして、ここでポイントなのは、chris wilsonの言葉だ。

『IE6, IE7を振り分けることができるのなら』という最後の言葉が非常にひっかかる。本当に現在のハックが将来的にも大丈夫なのだろうか?。事実、IE8のbeta1での話だがIE7のハックをそのまま読み込んでしまったりもしていた。やはりにハックはあくまでハックでしかない。
また、IEへの対応として次に説明するIE6にCSSを読み込ませない方法も踏まえると、conditional commentsの方がCSSの読み込ませる設計などにおいても自由度が高いのかもしれない。

08にも登壇していただいたsimplebitsのDan CederholmのHow I Might Deal with IE6
という記事から抜粋である。かれは記事のなかでConditonal Commentsを利用してIE6のみにCSSを読み込ませない方法を紹介している。厳密にはSimon Clayson’sの記事である。

記事の公開当初は下記の記述方法が記載してあったのだが、



<br />
&lt;!--[if !IE]&gt;&lt;!&#8211;&gt;<br />
&lt;link rel=&#8221;stylesheet&#8221; type=&#8221;text/css&#8221; media=&#8221;screen, projection&#8221; href=&#8221;screen.css&#8221; /&gt;<br />
&lt;!&#8211;&lt;![endif]&#8211;&gt;





&lt;!--[if gte IE 7]&gt;<br />
&lt;link rel=&#8221;stylesheet&#8221; type=&#8221;text/css&#8221; media=&#8221;screen, projection&#8221; href=&#8221;screen.css&#8221; /&gt;<br />
&lt;![endif]&#8211;&gt;<br />


http://www.simonclayson.co.uk/reportage/ie_6_text_only/

後にDaniel Jamesのコメントでよりシンプルなものに改められた。



<br />
&lt;!--[if gte IE 7]&gt;&lt;!&#8211;&gt;<br />
&lt;link rel=&#8221;stylesheet&#8221; type=&#8221;text/css&#8221; media=&#8221;screen, projection&#8221; href=&#8221;screen.css&#8221; /&gt;<br />
&lt;!&#8211;&lt;![endif]&#8211;&gt;<br />

IE6に完全にプレーンなルックスを提供するのは若干抵抗があるが、海外のようにIE6のシェアが日本より著しく落ちている地域では、そのようなアプローチも十分ありかもしれません。日本でもいずれIE6に対してのサポートをしない時代がきます。そのときは上記のconditional commentsを使うといいかもしれません。

※このエントリは ブロガーにより投稿されたものです。朝日インタラクティブ および ZDNet Japan編集部の見解・意向を示すものではありません。
  • 新着記事
  • 特集
  • ブログ