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 タイプが、すべてのビルドで有効になりました (バグ 1399036)。
CSS
display-mode
メディアクエリーの値minimal-ui
およびstandalone
をサポートしました (バグ 1369815)。Web app manifest のdisplay
フィールド もご覧ください。grid-row-gap
およびgrid-column-gap
プロパティが、grid
ショートハンドプロパティでリセットされないようになりました (バグ 1387410)。- 設定項目
layout.css.clip-path-shapes.enabled
を削除しました (バグ 1399767)。この設定項目で、clip-path
の<basic-shape>
のサポートを無効化できました。これは Firefox 54 で導入されたものであり、今後は無効化できません。
Quantum CSS に関する補足
Quantum で以下の不具合を修正しました:
- 以前の Gecko のスタイルシステムでは
radial-gradient(circle gold,red)
のような放射状のグラデーションが、circle
とgold
の間にカンマがないため動作すべきではないにもかかわらず、動作していました (バグ 1383323)。 - オフスクリーンの要素をオンスクリーンにアニメーションするときに遅延を指定すると、Gecko は Windows など一部のプラットフォームで再描画を行いません (バグ 1383239)。
- Gecko では、
<details>
要素でanimation
をアクティブにするとopen
属性を使用して既定で開かせることができません (バグ 1382124)。 - Gecko では、色を指定した
text-shadow
から色を指定しないtext-shadow
へ遷移する場合にtransitions
が動作しません (バグ 726550)。 - Gecko ではアニメーションのフィリングをキャンセルする (例えば
animation-fill-mode: forwards
を設定) と、1 回だけですが同じ要素に設定したトランジションを発生させられます (詳しくは バグ 1192592 および こちらのテストケース をご覧ください)。一般的に、宣言的なアニメーションがトランジションを発生させるべきではありません。 - Gecko では em 単位を使用するアニメーションが、アニメーションする要素の親で
font-size
を変更しても影響を受けませんが、実際は影響を受けるべきです (バグ 1254424)。 - Gecko と Quantum CSS では
font-size
の継承が異なっており、Gecko では一部の言語設定で継承したフォントのサイズが想定より小さくなります (バグ 1391341)。 - Gecko では
@-moz-document
規則のdomain()
あるいはurl-prefix()
URL マッチング関数で解析するときに、URL トークンの解析と同じ仕組みを再使用します。Quantum CSS は同じ仕組みを使用せず、括弧や引用符を含む場合にトークンを無効とみなしません (バグ 1362333)。 - Gecko では canvas 2D コンテキストの
font
の値としてシステムフォント (例えばmenu
) を設定すると、期待するフォントが返りません (何も返りません)。Quantum でこの不具合を修正しました (バグ 1374885)。 - Gecko では、切り離されたサブツリー (例えば
createElement()
を使用して作成した、DOM に未挿入の<div>
) を作成すると、サブツリーのルート要素がブロックレベル要素として設定されます。Quantum CSS では仕様書に従って、インラインとして設定します (バグ 1374994)。 - Gecko では
radial-gradient
の半径の構成要素としてcalc
式を使用すると、式が拒否されて値が無効になります (バグ 1376019)。 - Gecko では
calc(1*2*3)
が正しく解析されません。Quantum CSS でこの不具合を修正しました (バグ 1379467)。 - Quantum CSS では、
calc()
を仕様書で説明されているとおり全面的にサポートしています (バグ 1350857)。Gecko はそうではありません。 - Gecko は
::before
および::after
疑似要素で、content
プロパティの値がnormal
やnone
であっても疑似要素を生成する不具合があります。仕様書によると、このようにするべきではありません (バグ 1387931)。 - Gecko は
background-position
プロパティで、異なる数の<position>
値を持つ 2 つの値の間 (例えばbackground-position: 10px 10px;
とbackground-position: 20px 20px, 30px 30px;
) でトランジションを行えない不具合があります (バグ 1390446)。
SVG
変更なし。
JavaScript
- 非標準の
for each...in
(E4X) ループを廃止しました。代わりにfor...of
を使用してください。また、移行の助けになる Warning: JavaScript 1.6's for-each-in loops are deprecated をご覧ください。(バグ 1083470) Object.prototype.watch()
およびunwatch()
メソッドが非推奨になり、使用すると警告が発生します。また、将来削除する予定です (バグ 934669)。- 非標準の
Iterator
およびStopIteration
オブジェクトと、古いイテレーションプロトコルを廃止しました (バグ 1098412)。 - 非同期ジェネレーターを有効化しました (バグ 1352312)。
- for await (... of ...) 構文を有効化しました (バグ 1352312)。
API
新規 API
PerformanceObserver
API をデフォルトで有効にしました (バグ 1386021)。AbortController
およびAbortSignal
インターフェイス (Abort API) を追加しました。必要に応じて、DOM リクエスト (fetch リクエスト など) を中止できます (バグ 1378342)。- Storage API を実装して、デフォルトで有効にしました (バグ 1399038)。
DOM
- Selection API の
Selection.type
プロパティを実装しました (バグ 1359157)。 Document.createEvent('FocusEvent')
をサポートしました (バグ 1388069)。HTMLInputElement
インターフェイスのfiles
プロパティが設定可能になりました (バグ 1384030)。HTMLDocument.getSelection()
メソッドをDocument
インターフェイスに移動して、XML ドキュメントで使用可能になりました (バグ 718711)。messageerror
イベントを実装して、メッセージターゲットで実装したイベントハンドラーの発動に反応して実行するコードを持つことが可能になりました。MessagePort.onmessageerror
、DedicatedWorkerGlobalScope.onmessageerror
、Worker.onmessageerror
、BroadcastChannel.onmessageerror
、Window.onmessageerror
をご覧ください (バグ 1359017)。Headers
の値でイテレートを行うとき、値を自動的に辞書順で整列して、さらに重複するヘッダー名の値を結合するようになりました (バグ 1396848)。
DOM イベント
変更なし。
メディアと WebRTC
- SCTP メッセージの end-of-record (EOR) フラグを使用することにより、
RTCDataChannel
で任意のサイズ (256kiB が相互運用性が高いのですが、最大 1GiB まで) のメッセージをサポートしました。詳しくは Understanding message size limits in Using WebRTC data channels をご覧ください (バグ 979417)。Firefox は、複数のソースの SCTP メッセージを多重化する機能を提供する SCTP ndata プロトコルが未サポートですので、大きなデータオブジェクトを送信すると他のすべての SCTP 通信で著しい遅延が発生する可能性があります。Firefox の ndata サポートの実装および展開の進捗を追跡するには、バグ 1381145 をご覧ください。 RTCDataChannel.send()
メソッドで、送信しようとしたメッセージのサイズが受信側の ユーザーエージェント と互換性がない場合にTypeError
例外を発生できるようになりました (これは バグ 979417 の一部として実装しました)。- 録画中に発生した問題を報告するために送信される
error
イベントを一般的なイベントからMediaRecorderErrorEvent
型にするため、MediaStream Recording API を更新しました。 OfflineAudioContext
のコンストラクターで引数のリストに加えてオブジェクトを指定可能になったため、関連文書を更新しました (バグ 1388591)。
セキュリティ
resource://
URL が情報を漏えいしないようになりました (バグ 863246)。- Data URI のオリジンが、ナビゲーションの責任がある設定オブジェクトのオリジンを継承するのではなく、一意の opaque origin として扱うようになりました (バグ 1324406)。
プラグイン
変更なし。
その他
- Firefox の ヘッドレスモード に、コマンドラインからウェブサイトのスクリーンショットを直接取得することを可能にする
-screenshot
フラグを追加しました (バグ 1378010)。
ウェブプラットフォームから廃止
HTML
- さまざまなウェブ互換性の問題があるため、Firefox 57 で
<link rel="preload">
(Preloading content with rel="preload" をご覧ください) を無効化しました (バグ 1405761)。キャッシュ不可のリソース向けに改良したバージョンを Firefox 58 に搭載する予定です。
API
- Mozilla 独自仕様の Social API を完全に削除しました (バグ 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