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
<input>
の date および time 型が、すべてのビルドで有効になりました (Firefox バグ 1399036)。
CSS
display-mode
メディアクエリーの値minimal-ui
およびstandalone
をサポートしました (Firefox バグ 1369815)。ウェブアプリマニフェストのdisplay
フィールド もご覧ください。grid-row-gap
およびgrid-column-gap
プロパティが、grid
ショートハンドプロパティでリセットされないようになりました (Firefox バグ 1387410)。- 設定項目
layout.css.clip-path-shapes.enabled
を削除しました (Firefox バグ 1399767)。この設定項目で、clip-path
の<basic-shape>
のサポートを無効化できました。これは Firefox 54 で導入されたものであり、今後は無効化できません。
Quantum CSS に関する補足
Quantum で以下の不具合を修正しました。
- 以前の Gecko のスタイルシステムでは
radial-gradient(circle gold,red)
のような放射状のグラデーションが、circle
とgold
の間にカンマがないため動作すべきではないにもかかわらず、動作していました (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
プロパティの値がnormal
やnone
であっても擬似要素を生成する不具合があります。仕様書によると、このようにするべきではありません (Firefox バグ 1387931)。 - Gecko は
background-position
プロパティで、異なる数の<position>
値を持つ 2 つの値の間 (例えばbackground-position: 10px 10px;
とbackground-position: 20px 20px, 30px 30px;
) でトランジションを行えない不具合があります (Firefox バグ 1390446)。
SVG
変更なし。
JavaScript
- 非標準の
for each...in
(E4X) ループを廃止しました。代わりにfor...of
を使用してください。また、移行の助けになる Warning: JavaScript 1.6's for-each-in loops are deprecated をご覧ください。(Firefox バグ 1083470) Object.prototype.watch()
およびunwatch()
メソッドが非推奨になり、使用すると警告が発生します。また、将来削除する予定です (Firefox バグ 934669)。- 非標準の
Iterator
およびStopIteration
オブジェクトと、古いイテレーションプロトコルを廃止しました (Firefox バグ 1098412)。 - 非同期ジェネレーターを有効化しました (Firefox バグ 1352312)。
- for await (... of ...) 構文を有効化しました (Firefox バグ 1352312)。
API
新規 API
PerformanceObserver
API をデフォルトで有効にしました (Firefox バグ 1386021)。AbortController
およびAbortSignal
インターフェイス (Abort API) を追加しました。必要に応じて、DOM リクエスト (fetch リクエスト など) を中止できます (Firefox バグ 1378342)。- Storage API を実装して、デフォルトで有効にしました (Firefox バグ 1399038)。
DOM
- Selection API の
Selection.type
プロパティを実装しました (Firefox バグ 1359157)。 Document.createEvent('FocusEvent')
をサポートしました (Firefox バグ 1388069)。HTMLInputElement
インターフェイスのfiles
プロパティが設定可能になりました (Firefox バグ 1384030)。HTMLDocument.getSelection()
メソッドをDocument
インターフェイスに移動して、XML ドキュメントで使用可能になりました (Firefox バグ 718711)。messageerror
イベントを実装して、メッセージターゲットで実装したイベントハンドラーの発動に反応して実行するコードを持つことが可能になりました。MessagePort.messageerror_event
、DedicatedWorkerGlobalScope.messageerror_event
、Worker.messageerror_event
、BroadcastChannel.messageerror_event
、Window.messageerror_event
をご覧ください (Firefox バグ 1359017)。Headers
の値で反復処理を行うとき、値を自動的に辞書順で整列して、さらに重複するヘッダー名の値を結合するようになりました (Firefox バグ 1396848)。
DOM イベント
変更なし。
メディアと WebRTC
- SCTP メッセージの end-of-record (EOR) フラグを使用することにより、
RTCDataChannel
で任意のサイズ (256kiB が相互運用性が高いのですが、最大 1GiB まで) のメッセージをサポートしました。詳しくは Understanding message size limits をご覧ください (Firefox バグ 979417)。メモ: Firefox は、複数のソースの SCTP メッセージを多重化する機能を提供する SCTP ndata プロトコルが未サポートですので、大きなデータオブジェクトを送信すると他のすべての SCTP 通信で著しい遅延が発生する可能性があります。Firefox の ndata サポートの実装および展開の進捗を追跡するには、Firefox バグ 1381145 をご覧ください。
RTCDataChannel.send()
メソッドで、送信しようとしたメッセージのサイズが受信側の ユーザーエージェント と互換性がない場合に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
- Mozilla 独自仕様 ソーシャル API を完全に削除しました (Firefox バグ 1388902)。
SVG
変更なし。
アドオン開発者と Mozilla 開発者向けの変更点
メモ: Firefox 57 より、XPCOM ベースのアドオンのサポートを全面的に廃止します。すべての拡張機能は新しい ブラウザー拡張機能 (WebExtensions としても知られています) への移行が必要であり、そうしなければ動作しません。
WebExtensions
以下の API を追加または拡張しました:
bookmarks
bookmarks.BookmarkTreeNodeType
でセパレーターをサポートしました。
browser_action
- light/dark テーマアイコンのための
theme_icons
プロパティ
- light/dark テーマアイコンのための
browserAction
browserSettings
browsingData
clipboard
contextualIdentities
onCreated
onRemoved
onUpdated
contextualIdentitities.ContextualIdentity
のcolorCode
およびiconUrl
devtools.panels
downloads
downloads.download()
のincognito
オプションdownloads.DownloadItem
のestimatedEndTime
プロパティ
find
pageAction.openPopup()
privacy
proxy
FindProxyForURL()
がオブジェクトを返せるようになりました
runtime
runtime.openOptionsPage()
を Android でサポート
sessions
sidebarAction
storage
tabs
tabs.update()
のloadReplace
オプションtabs.Tab
、tabs.onUpdated
、tabs.query()
のdiscarded
プロパティtabs.create()
で "view-source:" URL を開くことが可能になりましたtabs.Tab
、tabs.create()
、tabs.query()
、tabs.update()
のopenerTabId
プロパティ
theme
colors.toolbar
colors.toolbar_field
colors.toolbar_field_text
colors.toolbar_text
theme
theme.update()
のwindowId
オプション
webRequest
filterResponseData()
webRequest
イベントのproxyInfo
プロパティ
windows
windows.create()
のallowScriptsToClose
プロパティ
過去のバージョン
- Firefox 56 for developers
- Firefox 55 for developers
- Firefox 54 for developers
- Firefox 53 for developers
- Firefox 52 for developers
- Firefox 51 for developers
- Firefox 50 for developers
- Firefox 49 for developers
- Firefox 48 for developers
- Firefox 47 for developers
- Firefox 46 for developers
- Firefox 45 for developers
- Firefox 44 for developers
- Firefox 43 for developers
- Firefox 42 for developers
- Firefox 41 for developers
- Firefox 40 for developers
- Firefox 39 for developers
- Firefox 38 for developers
- Firefox 37 for developers
- Firefox 36 for developers
- Firefox 35 for developers
- Firefox 34 for developers
- Firefox 33 for developers
- Firefox 32 for developers
- Firefox 31 for developers
- Firefox 30 for developers
- Firefox 29 for developers
- Firefox 28 for developers
- Firefox 27 for developers
- Firefox 26 for developers