Windows Internet Explorer 9

策定が進められている段階の機能や、まだ策定にすら至っていない新機能を実装する場合、ブラウザベンダはベンダプレフィックスと呼ばれる文字列を頭につけた状態で機能を実装する。たとえばIEであれば-ms-であり、Firefoxなら-moz-、ChromeやSafariが採用しているWebKitなら-webkit-、Operaなら-o-となる。

ベンダプレフィックスは仕様の策定と開発実装とのギャップを埋めるために使われている。たとえば仕様を先行して策定したとしても、初期の仕様を実装してそのフィードバックを得る必要がある。フィードバックを得てから仕様を変更し、価値のあるものへ仕上げていく。最初にすべての仕様を策定することはできない。仮に先にすべての仕様が確定できたとしても、そこから実装を始めたのでは遅い。すべてのブラウザでだいたい同時期に実験的な実装をはじめ、フィードバックや仕様の変更を加味して実装を変更。そして同時期にコンセンサスのとれた実装を正式版へ置き換えるというのが、基本的な流れとなる。

このあたりの話題がIE9, Vendor Prefixes, and Developers - IEBlogで簡単に紹介されている。ベンダプレフィックスは仕様と実装のバランスを取るためのメカニズムであり、開発者はベンダプレフィックスがついた機能は将来後方互換性のない変更が実施される可能性があることを意識しておく必要があると指摘されている。

IEBlogではこうしたベンダプレフィックスを使用する場合、テストしたい機能だけを利用することを推奨している。仮に、その実装を将来に渡っても利用しやすいものにするのであれば、-ms-以外にも-moz-や-webkit-、-o-のベンダプレフィックスも記述すること、または正式版になるであろうベンダプレフィックスを指定しない記述も掲載しておけばいいというアドバイスも紹介されている。ただし、将来に渡ってそれが期待通りに動くという保証はなく、リスクになることを意識する必要があることも指摘されている。たとえばCSS3グラデーションは-moz-と-webkit-で違うフォーマットになっている。将来のバージョンでは指定方法が変わる例だ。

IEでは慣例的に、仕様がCR (準備リリース)の段階に到達するまでベンダプレフィックスを活用すると説明している。たとえばIEではborder-radiusの実装を開始した段階では、すでに仕様がCRに到達していたため、-ms-ベンダプレフィックスは指定せずに実装を開始したことが紹介されている。