HTML5 Shiv minus Shiv。

このウェブサイトは、rem単位を使っていたりと、Internet Explorerだと事実上バージョン9以降でしかうまく閲覧できないようになっている。となるともうHTML5 Shivを使う意味もあまりないので削除した。これでようやく不格好な条件付きコメントを見ないで済む。

条件付き○○というものはうまく機能するが、それの利用には継続したメンテナンスが必要になる。条件付きで何かを特別視するので、プラットフォームに変化が加わるごとに、意図した通りに機能してくれるかどうかや追加で特別視する必要があるかどうかを確認しなければならない。そうしないと古く時代遅れのプラットフォームに依存し続けることになる。

現実世界の多くの仕組みではメンテナンスなしでも大体うまくいく。それはプラットフォームに変化が加わることがあまりないからだ。人々も大体そう感じているので、何もしなければそのまま動くはずだと考えている。いわゆる技術者との感覚の差はこの辺りが最も顕著なのではないかと思う。

技術者の世界でもウェブは比較的敷居が低い世界なので、こういった普通の感覚を持った開発者も多く、条件付き○○がメンテナンスなしでも動き続けるとしている人は多い。CSSハックや無意味なベンダー拡張プリフィックスの継続使用などはその現れだろう。それらの利用までを否定するものではないが、その利用は継続したメンテナンスがあってのものだ。


このウェブサイトでHTML5 Shivを削除した理由の大部分は突発的な感情によるものだが、そのメンテナンス性の悪さもある。HTML5 ShivはInternet Explorerでかつてサポートされていた条件付きコメントという仕組みを利用するため、HTMLドキュメントに直接書く必要がある。つまり何かしら導入の仕組みに変化が加わった場合、継続したメンテナンスを前提にするとすべてのHTMLドキュメントを更新する必要が出てくる。実際そういう変更が必要だったこともあった。

作業としては機械的なもので、テンプレートを使ったHTML一括生成を利用したウェブサイトではさほど問題にならないこともあるだろう。しかし現在のHTML5 Shivのようにウェブ標準ではない仕組みを使って実装するものは、その実装がきちんと行われているかどうかを実証することは難しい。

HTML5 Shiv自体が意図した通り古いInternet Explorerで動作するかどうかはもちろん確認されているが、それがあなたのウェブサイトで正しく動作するようにHTMLドキュメントにきちんと書かれているかどうかは別の話だ。そしてその記述は標準化されていないので、バリデーターなどでは検証できないというわけだ。

もし今後似たようなことをやる必要が出てきた場合は、Modernizrのような仕組みを使って同期的に挿入してやる形が良いと思う。少なくとも条件付きコメントのようなものを使うのは、メンテナンス上で大きな問題を抱えることになるだろう。