Web標準Blogでは、Web標準の利用に興味のあるWebサイト管理者、Webデザイナーの方向けに、Web標準を利用するための手法やノウハウ、参考になるリソース等を、国内外を問わずご紹介します。
なお当Blogでは、Web標準に関する疑問や質問を募集しています。Webコンテンツ実装プロセスにまつわるお悩みでも結構ですので、お気軽に電子メールでstandards@mitsue.co.jp宛にお送りください。
2010年7月23日
Web Performance WGとWeb Notification WG
フロントエンド・エンジニア 矢倉
HTML WGやCSS WG, WebApps WGをはじめ、W3Cの多くのWGは複数の仕様を策定しています。グループがカバーする範囲がとても広いことが、仕様の数が増えることにつながっています。
しかし、Geolocation WGやWeb Fonts WGなど、活動範囲を狭めたグループも存在します。現在設立が検討されているWeb Performance WGとWeb Notification WGは、スコープを絞って仕様を短期間の間で策定することを目指しているようです。
Web Performance WGは、Webアプリケーションの開発において重要なパフォーマンス計測のための仕様を作るWGです。Web Timingという編集者ドラフトの仕様がWebApps WGで提案されていますが、こちらを参考に仕様の策定が検討されています。
Web TimingはIE9でも試験的に実装されているようです。
構想段階ではありますが、映像や音声についてもパフォーマンスが問題になることから、グループとして何か活動することも視野に入れているようです。
Web Notification WGは、バルーンやGrowlなど、デスクトップに情報を通知するためのAPIを策定するグループです。Google Chromeの拡張として内部的に実装されたAPIがすでにWeb Notificationsとして編集者ドラフト段階にありますが、単純な通知APIに絞ることなどを含め、プラットフォーム非依存なAPIを策定していくことが検討されています。
どちらの活動についても、すでに専用のメーリングリストが設けられています。提案されている仕様はWebApps WGで議論が行われていましたが、それを独立したWGで集中して作業させたいという意図があるのでしょう。
ベンダーの動きも活発になっていますし、今後はこういった機能を絞った小さなグループでの策定が増えていくのかもしれません。
追記 (2010-08-20):Web Performance WGは8月19日付けで立ち上げが発表されました。
Co-chairを務めるMicrosoftのJason Weberが、WGの立ち上げに関しエントリをIEBlogに公開しています。
恒久リンク | コメント [0件] | 関連情報(トラックバック) [0件]
2010年7月16日
ベンダー接頭辞は使ってもよいか
フロントエンド・エンジニア 矢倉
ベンダー接頭辞つきのプロパティについて、質問をいただきました。
最近ではCSS3を使用したデザインパターンが数多く紹介されています。ボタン要素など簡単なものであれば、画像を用意する事なく表現が出来ると思います。
しかしソースレベルでは(-webkit-)(-moz-)などの接頭辞をつけないとブラウザがうまく処理を行えない現状としては、接頭辞がついたものを業務レベルで実装するべきではないのでしょうか?
※一般的に接頭辞を使用している要素などは納品データ内にあるべきでないのでしょうか?
使うべきでない、あるべきでないとは思いませんが、利用には細心の注意をはらう必要があるでしょう。
使える?避けるべき?
まず、CSS仕様には、ベンダー接頭辞の利用は避けるべき(Authors should avoid vendor-specific extensions
)と書かれています。仕様が安定して接頭辞を外す段階になったら、使い始めることができるという認識です。
しかし、仕様が安定してから実装に反映されるまで、さらに製品としてリリースされるまでには時間がかかります。たとえば、WebKitは接頭辞なしのborder-radiusを昨年7月に実装しましたが、そのコードが製品に反映されたのは今年1月のChrome 4が最初で、Safariにおいては6月のSafari 5までかかってしまいました。
とはいえ、border-radiusは昨年夏の段階で仕様も安定していました。接頭辞つきで実装されているものの安定しているプロパティもありますから、接頭辞つきプロパティを一概に「避けるべき」というのは実利的には思えません。
その機能が安定していると判断できれば、ベンダー接頭辞つきのプロパティを書くことに大きな問題はないと思っています。
接頭辞なしのプロパティを忘れないこと
ただし、この時大事なのが、接頭辞のない正式なプロパティも含めることです。「いまは機能しないから」と言った理由からか、接頭辞なしのプロパティを省いたWebページやサンプルに出くわすことがありますが、これにはいくつか問題があります。
まず、特定のエンジンでしか機能しないという問題があります。先日リリースされたOpera 10.60やIE9 Platform PreviewはCSS3 Backgrounds & Bordersの多くのプロパティに対応していますが、それらは接頭辞のない正式なプロパティとして実装されています。
ところが、ページのソースコードに-webkit-border-radiusや-moz-border-radiusだけしか書かれていないサンプルが意外に多いのです。これでは同等の機能を備えているにも関わらず、OperaとIE9ではその恩恵にあずかれません。
もうひとつの問題は、正式なプロパティを実装したあと、接頭辞つきプロパティのサポートが行われなくなることです。
プロパティが標準化されていれば、将来的に接頭辞は省かれた状態で実装されます。このとき、ベンダーによっては接頭辞付きのプロパティを引き続きサポートするか、それとも打ち切るかという選択ができます。
たとえば、WebKitは先程のborder-radiusをはじめ、多くのプロパティで -webkit-のつくプロパティも引き続きサポートしています。Microsoftも後方互換を非常に重視していますから、-ms-のついたプロパティを今後もサポートする可能性は非常に高いと思われます。
いっぽう、Mozillaは接頭辞つきのプロパティについて、早くからサポートを打ち切ることを考えているようです。background-originの接頭辞を外すバグの中で、開発者のDavid Baronが「製作者が接頭辞つきのプロパティを利用するのであれば、次のように接頭辞なしのプロパティも書いているはずだという立場をとっている。Web上にあるGecko固有の内容は最小化したい。」と語っています。
すべての接頭辞つきプロパティに対し同様の対応を行えるかは難しいところでしょう。たとえば、border-radiusのサブプロパティに、ひとつの角を丸めるプロパティ (-moz-border-top-right-radius など) がありますが、標準化の過程でプロパティ名や構文が変更されてしまいました。Geckoは古い構文のプロパティ (-moz-border-radius-topright) のみを以前から実装しているので、接頭辞を外すにせよ -moz-opacity のようにある程度の期間を設けてる対応を行うかもしれません。
接頭辞つきプロパティがサポートされ続けたとしても、接頭辞への依存は避けるべきです。接頭辞つきのプロパティを利用するのであれば、対応する正式なプロパティもあわせて記述すべきというのが基本的な見解です。
安定度合いを知るには
では、プロパティの安定度合いははどうやって判断すればよいのでしょうか。
ひとつ参考になるのが、仕様書のステータスです。接頭辞は仕様が勧告候補(仕様が固まり、実装を呼びかける段階)になった際に省くとされていますから、近々で勧告候補になっている仕様であれば、機能が安定しているとおおむね考えてよいでしょう。
また、CSS WGでもベンダー接頭辞を省くタイミングについてベンダーと連携し、プロパティごとの安定度を仕様書に盛り込むことなどを検討しているようです。そうなると、安定度合いを知るとても良いソースになります。
使うことを考えるには、仕様だけでなく実装状況についても知る必要があります。以下は各ベンダーの出している情報になります。
- Safari CSS Reference
- SafariのCSSリファレンスになります。プロパティには「Support Level」という項目があり、CSS3絡みでは「Stable CSS 3」「Experimental CSS 3」という段階があります。Stableはすでに接頭辞なしで実装されているものですので、接頭辞を書く必要はありません。Experimentalは接頭辞がついているもので、利用するのであれば正式なプロパティも併記すべきでしょう。
- Mozilla CSS support chart
- FirefoxでサポートされるCSSの機能になります。一番右の列に「-moz-」という文字があれば、基本的に接頭辞付きで実装されているものになります。
- Web specifications support in Opera
- OperaのWeb標準サポート状況に関するページです。英語サイトでは最新版の10.60に相当するPresto 2.6でのサポート状況が公開されています。CSS3についてはモジュールごとにページが用意されているなどかなり細かく、また接頭辞に関するページも用意され、そこでは接頭辞なしのプロパティを併記するようにとも書かれています。
- CSS Compatibility and Internet Explorer
- IEに関するドキュメンテーションです。IE9への言及はまだありませんが、IE8の際はベータ版が公開されたときにこの表がアップデートされていましたから、ベータ版を待ちましょう。
すこし厄介なのが、仕様が初期の段階で安定していないにもかかわらず、試験実装のあるプロパティです。ベンダー固有の拡張を標準化する際に良く起こりますが、CSS Image Valuesで定義される予定の画像グラデーションやCSS Animationsなどが当てはまるでしょうか。
このような仕様については、値だけでなくプロパティ名に変更が起こる可能性があります。ですから、接頭辞なしのプロパティを書くかどうかは難しいところです。しかし、実装も多くありませんから、接頭辞なしがどうこうというよりは、その機能に依存しないコンテンツ作りを心がることをまず考えましょう。
まとめ
長くなりましたが、まとめると
- 接頭辞つきプロパティは使っていけないものとは言えない
- 接頭辞つきプロパティを書くのであれば、正式なプロパティも含める
- 仕様の安定度や実装状況をみて、新しい機能に大きく依存しないように使う
3番目については、情報を集めるのがまだまだ難しいというのが現状だと思います。これについては、情報をまとめる場所が必要だと考えています。
恒久リンク | コメント [0件] | 関連情報(トラックバック) [0件]
2010年7月 5日
2010年6月のW3C
フロントエンド・エンジニア 矢倉
CSS3 Backgrounds & Borders 最終草案
CSS WGより、CSS3 Backgrounds & Bordersの最終草案が6月12日付で公開されました。
透過した画像を持つborder-imageとの兼ね合いについて検討する必要があったことから外されていたbox-shadowがふたたび追加されました(透過画像についての言及は省かれ、単純にボックスに影を落とす機能に限定されました)。
他にもいくつかの変更が行われ、仕様が最終草案に差し戻されました。次の公開時には、再び勧告候補になっているものと思われます。
SVG 1.1 Second Editionの最終草案
SVG WGより、6月22日付でSVG 1.1 Second Editionの最終草案が公開されました。
HTML5の更新
先週の投稿ですでにお伝えしましたが、HTML5と関連仕様が6月24日付で更新されました。
CSS 2.1の現状
W3C Blogに、CSS WGのco-chairであるDaniel GlazmanがCSS 2.1の現状について記事を投稿しています。
現場について、要点がいくつか書かれています。大まかに訳すと次のようになります。
- 現在は課題の解決をしている。ここ数週間行われたTeleconでは、時間のほとんどがCSS 2.1に費やされている。
- テストケースは完成に近い。すべてのテストをレビューすることは量や時間をふまえて現実的でないと判断した。テストを「実装レポート段階」として公開し、バグが見つかった場合は修正する。
- 仕様に変更があることから、最終草案に差し戻され、その後再び勧告候補として公開される可能性がある。あまり問題ではないし、時間がかかるわけでもない。
- 勧告候補から進むための条件ははっきりとしている。勧告候補から抜けるにはすこし時間がかかるかもしれない。
- テストスイートは勧告候補と同時に、夏の後に公開することを検討中。この時期に公開できれば、年末までに勧告案にできる。
8月にはF2Fミーティングがあるようなので、そこで大きな課題が解決されれば、CSS 2.1とセレクタ仕様の勧告がより具体的に見えてくるでしょう。
