私がセレクタハック(?)を嫌う訳
初回投稿日時: 2005年07月31日18時45分31秒
最終更新日時: 2005年07月31日18時46分20秒
カテゴリ: CSS
固定リンク: id=2005073101
SNS:
(list)
セレクタハックかなんか言う名前で得意げにIEでサポートされていないセレクタを使ってCSS上でブラウザを振り分けていたサイトは大混乱でしょう。
(強調は僕による)という発言から、氏の、この技法のみならず、この技法を使う人のメンタリティそのものに対する嫌悪感が窺える。まあ僕も「裏技」とかいって過剰にありがたがるのはどうかなとも思うわけですけど、「シートまるごと切り替える」ような無駄の多いやり方に比べて、部分的に処理を振り分けることができるというのは、実用性で考えて、やっぱリ非常に魅力的なんですよ。腐ったデジュールスタンダードより便利なデファクトスタンダードに人は流れるものだから、状況を変えるにはデジュールスタンダードをデファクトスタンダードよりも便利なものにするしかない。
私も昔、その手軽さから、使ったことありますし、もうすでに開発が完全に終了したNetscape4.x対策には、link要素のmedia属性のバグ利用なんてのを未だに採用してたりしています。しかし、IEのセレクタハック(?)は、現役のWebブラウザのとあるバグを利用して、別のバグを封じ込めようとするあたりが無茶苦茶なのです。これらのバグには何の関連も無く、ただ単に、特定のバージョンにおいてこれらのバグが共存しているというだけの話です。だから、これをありがたがって使っている人はどうかしてるんじゃないかと思ったりするわけです。
でもPiro君の言うように、その手軽さは分かります。ですから、常に自分(達)で管理し続けているサイトなら合理性と、効果を天秤にかけた場合、決して悪い選択肢でもないとも思います。この事実を利用した合理性は私も評価しています。
ですが、私が納得できないのは、商用サイトで、しかも自社で作成、メンテナンスしていない所(大半でしょう?)がこれを利用している場合です。契約書の妙で納品したサイトに対して制作会社は何の責任も無くなっている場合もあるのでしょうが、人道的にそれはどうなのでしょうか? 何の関連性も無い事柄の偶然性を悪用して商品に利用した商品、私が顧客だったらそれは不良品だと感じます。
もちろん、未来のブラウザに完全対応しろ、と言ってるわけではありません。未来のブラウザのバグでなんらかの問題が発生したら、それは自分でメンテナンスするなり、制作会社に有料で修正してもらうなり、それは当然のことだと思います。
しかし、未来のブラウザで問題が出る可能性が高い作り方をしたものを商品として出すところに、プロ意識の欠如というかそういうものを感じて、憤りを感じるわけです。
実際にそのようなサイト、制作会社がどれぐらいあるのか分かりませんが、Webデザイン関係の雑誌を読んでいるとCSS関連のテクニックで紹介されていることがあるので、(商売でも)利用している人が絶対にいるんじゃないかと思っています。
ちなみに、私もシート丸ごと切り替えなんてのは、効率が悪く、現実的な方法とは思いません。現実的な解決策としては、PHPで一部だけをUA名で出力する・しないを制御するのが一番でしょう。もちろん、固有のブラウザに対してのみ出力する(あるいは、しない)内容は、そのブラウザのバグを抑制するためものに限るべきで、全ての分岐に外れる、つまり未知の(もしくはサイトの制作側が対応しきれなかった)UAでも、それにCSSのバグが全くなかった場合には、制作側の意図通りに表示されるようなシートである必要があります。(つまり、想定外だが理想的なブラウザでそのサイトを見れば、100%意図通りの表示が行われるものを作るべきだということ。)
実際問題、JavascriptなんかでUAごとに分岐処理を作っている大半のサイトはif条件がtrueになった場合の処理ばかりをきちんと書いて、else、つまり未知のブラウザへの処理はおざなりになっている、なんてことが多いので、こういう意識でやってくれる人が少なそうなのは想像できてしまいますが。
余談ですが、私が一番心配しているのは、Microsoftがセレクタを改善してテストしてみると、表示の崩れるサイトが(多く)目について、これはまずい、と判断し、互換性優先で、セレクタの改善を無期限に延期してしまうことです。セレクタの恩恵を一番受けられるページ制作者が、このバカな手法のために自分自身でその進化を止めてしまう可能性も現段階では否定できません。