Firefox 57 (Quantum) for developers

Firefox 57 (別名 Firefox Quantum) は、米国時間 2017 年 11 月 14 日にリリースされました。このページでは、開発者に影響する Firefox 57 の変更点をまとめています。

Firefox 57 === Firefox Quantum

Firefox 57 は、Firefox を徹底的に再構築してパフォーマンス、安定性、外見を大きく向上させることを目指す Firefox Quantum エンジニアリングプロジェクトにちなんで Quantum というリリース名が与えられました。Firefox 57 はこれらの改善点の一部をリリースする最初のバージョンであり、祝福を求めていました。

メモ: このリリースの Quantum の特徴について詳しくは、Dan Callahan による記事 Firefox Quantum Developer Edition: the fastest Firefox ever with Photon UI and better tooling をご覧ください。

Firefox's new parallel CSS engine、別名 Quantum CSS または Stylo はデスクトップ版の Firefox 57 でデフォルトで有効であり、モバイル版の Firefox は追って有効化します。多くのパフォーマンス向上は別として、開発者が何らかの大きな違いに気づくことがあってはいけません。Stylo には多くの小規模な機能差がありますが、Gecko で取り除くべき非標準の動作を修正するために実装したものです。このような差異は、適宜リファレンスのページやリリースノートに掲載します (Quantum CSS に関する補足 を参照)。

ウェブ開発者向けの変更点一覧

開発者ツール

変更なし。

HTML

CSS

Quantum CSS に関する補足

Quantum で以下の不具合を修正しました。

  • 以前の Gecko のスタイルシステムでは radial-gradient(circle gold,red) のような放射状のグラデーションが、circlegold の間にカンマがないため動作すべきではないにもかかわらず、動作していました (Firefox バグ 1383323)。
  • オフスクリーンの要素をオンスクリーンにアニメーションするときに遅延を指定すると、Gecko は Windows など一部のプラットフォームで再描画を行いません (Firefox バグ 1383239)。
  • Gecko では、<details> 要素で animation をアクティブにすると open 属性を使用して既定で開かせることができません (Firefox バグ 1382124)。
  • Gecko では、色を指定した text-shadow から色を指定しない text-shadow へ遷移する場合にトランジションが動作しません (Firefox バグ 726550)。
  • Gecko ではアニメーションのフィリングをキャンセルする (例えば animation-fill-mode: forwards を設定) と、1 回だけですが同じ要素に設定したトランジションを発生させられます (詳しくは Firefox バグ 1192592 および こちらのテストケース をご覧ください)。一般的に、宣言的なアニメーションがトランジションを発生させるべきではありません。
  • Gecko では em 単位を使用するアニメーションが、アニメーションする要素の親で font-size を変更しても影響を受けませんが、実際は影響を受けるべきです (Firefox バグ 1254424)。
  • Gecko と Quantum CSS では font-size の継承が異なっており、Gecko では一部の言語設定で継承したフォントのサイズが想定より小さくなります (Firefox バグ 1391341)。
  • Gecko では @-moz-document 規則の domain() あるいは url-prefix() URL マッチング関数で解析するときに、URL トークンの解析と同じ仕組みを再使用します。Quantum CSS は同じ仕組みを使用せず、括弧や引用符を含む場合にトークンを無効とみなしません (Firefox バグ 1362333)。
  • Gecko では canvas 2D コンテキストの font の値としてシステムフォント (例えば menu) を設定すると、期待するフォントが返りません (何も返りません)。Quantum でこの不具合を修正しました (Firefox バグ 1374885)。
  • Gecko では、切り離されたサブツリー (例えば createElement() を使用して作成した、DOM に未挿入の <div>) を作成すると、サブツリーのルート要素がブロックレベル要素として設定されます。Quantum CSS では仕様書に従って、インラインとして設定します (Firefox バグ 1374994)。
  • Gecko では calc() 式を radial-gradient() の半径の構成要素として使用すると、式が拒否されて値が無効になります (Firefox バグ 1376019)。
  • Gecko では calc(1*2*3) が正しく解析されません。Quantum CSS でこの不具合を修正しました (Firefox バグ 1379467)。
  • Quantum CSS では、calc() を仕様書で説明されているとおり全面的にサポートしています (Firefox バグ 1350857)。Gecko はそうではありません。
  • Gecko は ::before および ::after 疑似要素で、content プロパティの値が normalnone であっても疑似要素を生成する不具合があります。仕様書によると、このようにするべきではありません (Firefox バグ 1387931)。
  • Gecko は background-position プロパティで、異なる数の <position> 値を持つ 2 つの値の間 (例えば background-position: 10px 10px;background-position: 20px 20px, 30px 30px;) でトランジションを行えない不具合があります (Firefox バグ 1390446)。

SVG

変更なし。

JavaScript

API

新規 API

DOM

DOM イベント

変更なし。

メディアと WebRTC

  • SCTP メッセージの end-of-record (EOR) フラグを使用することにより、RTCDataChannel で任意のサイズ (256kiB が相互運用性が高いのですが、最大 1GiB まで) のメッセージをサポートしました。詳しくは Understanding message size limits (en-US) をご覧ください (Firefox バグ 979417)。

    メモ: Firefox は、複数のソースの SCTP メッセージを多重化する機能を提供する SCTP ndata プロトコルが未サポートですので、大きなデータオブジェクトを送信すると他のすべての SCTP 通信で著しい遅延が発生する可能性があります。Firefox の ndata サポートの実装および展開の進捗を追跡するには、Firefox バグ 1381145 をご覧ください。

  • RTCDataChannel.send() (en-US) メソッドで、送信しようとしたメッセージのサイズが受信側の ユーザーエージェント と互換性がない場合に TypeError 例外を発生できるようになりました (これは Firefox バグ 979417 の一部として実装しました)。
  • MediaStream Recording API を更新し、録画中に発生した問題を報告するために送信される error イベントを一般的なイベントから MediaRecorderErrorEvent 型にしました。
  • OfflineAudioContext のコンストラクターで引数のリストに加えてオブジェクトを指定可能になったため、関連文書を更新しました (Firefox バグ 1388591)。

セキュリティ

  • resource:// URL が情報を漏えいしないようになりました (Firefox バグ 863246)。
  • Data URI のオリジンが、ナビゲーションの責任がある設定オブジェクトのオリジンを継承するのではなく、一意の opaque origin として扱うようになりました (Firefox バグ 1324406)。

プラグイン

変更なし。

その他

  • Firefox の ヘッドレスモード に、コマンドラインからウェブサイトのスクリーンショットを直接取得することを可能にする -screenshot フラグを追加しました (Firefox バグ 1378010)。

ウェブプラットフォームから廃止

HTML

  • さまざまなウェブ互換性の問題があるため、Firefox 57 で <link rel="preload"> (Preloading content with rel="preload" をご覧ください) を無効化しました (Firefox バグ 1405761)。キャッシュ不可のリソース向けに改良したバージョンを Firefox 58 に搭載する予定です。

API

SVG

変更なし。

アドオン開発者と Mozilla 開発者向けの変更点

メモ: Firefox 57 より、XPCOM ベースのアドオンのサポートを全面的に廃止します。すべての拡張機能は新しい ブラウザー拡張機能 (WebExtensions としても知られています) への移行が必要であり、そうしなければ動作しません。

WebExtensions

以下の API を追加または拡張しました:

過去のバージョン