2016年4月のブラウザニュースは、Edge Web Summit、Chrome 50リリース、Firefox 46リリース、WebKitの接頭辞ポリシー変更などについて紹介します。
Edge Web Summit開催
4月4日に、Edge Web Summitが開催されました。Microsoftは前々日にBuildカンファレンスを行っていましたが、Edgeはこちらに集中した印象です。
- Microsoft Edge Web Summit 2016 | Channel 9
- Edge Web Summit 2016 recordings are now available on Channel 9 | Microsoft Edge Dev Blog
新たに発表されたのは、レンダリングエンジンEdgeHTMLのイシュートラッカーです。
- EdgeHTML issue tracker
- Introducing the Microsoft Edge Platform Issue Tracker | Microsoft Edge Dev Blog
Internet Explorer時代にもMicrosoft Connectで公開フィードバックはできましたが、こちらはエンジンのEdgeHTMLに特化しており、開発者とのコミュニケーションを強く意識しているように感じられます。
他にも、Webで使われているCSSプロパティなどを集めたデータも公開されました。ChromeチームもChrome Platform Statusで公開していますが、それと同等のものですね。
- Global CSS Property Usage
- Introducing Global CSS Property Usage on Microsoft Edge Dev | Microsoft Edge Dev Blog
「使われている」の定義にもこだわっているようで、ただCSSファイルを解析しているわけではなく、WebページにアクセスしDOMとCSSOMを構築したうえで調べているとのこと。
現在バグのため padding
利用率が0%になっていますが (CSSの calc()
解釈まわりにバグがあるそう)、そのうち直るでしょう。
また、WebRTC関連のロードマップが更新されたことも発表されました。
これまでEdgeではORTCをサポートしていましたが、互換性への取り組みからWebRTC 1.0の一部も実装するようです。また、映像コーデックについてはH.264/AVCを実装中、さらに決定ではありませんがVP8も検討しているとのこと。
Chrome 50リリース
4月13日に、Chrome 50がリリースされました。ついに50なのですね。
新しい機能についてはBetaリリース時のポスト、およびDev Operaの記事が詳しいです。
- Google Developers Japan: Chrome 50 ベータ版: プッシュ通知の改良、宣言型プリロードなど
- Dev.Opera — What’s new in Chromium 50 and Opera 37
新しい機能として、HTMLの link
要素に preload
というものが加わりました。使われるであろうリソースをその種類とともに指定することで、先読みを実施できます。
- Preload: What Is It Good For? – Smashing Magazine
- Prioritizing Your Resources with | Web Updates – Google Developers
- Preload を用いたリソースプリローディングの最適化 | blog.jxck.io
たとえばWebフォントのURLなどに使いやすそうです。外部CSSでWebフォントが定義されている場合、まずそのCSSファイルを取得し解釈したのち、Webフォントをリクエストするため、パフォーマンスの向上が見込めそうです。
他に目立つのは、Canvasの toBlob()
メソッドと、 ImageBitmap
インターフェースでしょうか。
- Canvas toBlob() support added in Chrome 50 | Web Updates – Google Developers
- Chrome Supports createImageBitmap() in Chrome 50 | Web Updates – Google Developers
toBlob()
は toDataURL()
の Blob
版です。一度文字列を経由せずに、バイナリデータを直接さわれるのが魅力でしょうか。
ImageBitmap
は、Canvasで画像を扱いやすくするAPIです。これまでは効率的に画像のデコードなどを行えませんでしたが、createImageBitmap()
を使えば非同期に画像を容易できます。drawImage()
のように描画を必要としないのも魅力的です。Workerにも提供されるので、画像の処理を別スレッドにもっていくのも容易です。
すでに他のブラウザでも一部実装されており、toBlob()
はFirefox 19とIE10から、ImageBitmap
はFirefox 42でサポートされています。
新しい機能が追加される一方で、削除・廃止予定の発表もあります。Chrome 50では、非HTTPS環境でGeolocation APIが利用不可に、同じく非HTTPS環境でAppCacheが廃止予定となりました。
- Geolocation API removed from unsecured origins in Chrome 50
- API Deprecations and Removals in Chrome 50
位置情報の取得をGeolocation APIのみに頼っているサイトはHTTPSへの移行が強く推奨されていますが、Google Maps Geolocation APIなど別のサービスも紹介されています。
機能の削除や廃止については、blink-devメーリングリストで都度アナウンスされるほか、Chrome Platform Statusで「deprecated」「removed」と検索すると、すでに変更されたものも含め一覧を見られます。
また、廃止予定の機能を仕様している場合はコンソールにその旨が出ますので、たまにはちゃんと読みましょう。
Firefox 46リリース
4月26日にFirefox 46がリリースされました。
ES2015 に導入された RegExp
の u
フラグがサポートされました。絵文字や「𠮷」といったBMP外の文字はES5時代のJavaScriptでは扱いづらかったのでうれしいですね。
これに伴い、input
要素の pattern
属性の解釈を u
フラグと同等にする変更がHTML仕様に入り、そちらもあわせて実装されました。たしかにフォームのバリデーションは u
フラグつきの方がやさしそうですね。
はてなの開発者向けブログでも取り上げられています。わかりやすいです。
また、JavaScriptでのUnicodeの扱いはOperaのMathias Bynesの記事によくまとまっています。彼の講演も面白いですよ。
CSSでは、圏点を表示させる text-emphasis
プロパティ群がサポートされました。小説などでは見る強調表現ですが、Webでも太字以外の強調が今後増えてくるのでしょうか。
他には、過去に紹介した -webkit-
接頭辞のプロパティサポートが有効になりました。日本のモバイル向けページなど、-webkit-
接頭辞に強く依存してるページの表示が向上すると思われます。
WebKitが接頭辞のポリシーを変更し、他エンジンに追従
4月26日に、WebKitがベンダー接頭辞に関するポリシーを変更すると発表しました。試験的な機能にベンダー接頭辞をつけることはせず、他エンジンのようにランタイムフラグを設けて試すようになります。
最近はツールの助けもあり、手で -webkit-
などを書くことは少なくなっていると思いますが、すでに公開されたページではWebKitの接頭辞に依存したコードが残っていたりします。これをうけEdgeやFirefoxは互換性確保のためいくつかの機能をサポートしています。
接頭辞の廃止については、WebKitもしていきたいとのことですが、機能によりそうです。廃止が現実的でない機能については、Compat Standardでの定義など標準化によるサポートも必要でしょうか。