Firefox 53 for developers
=========================

Firefox 53 は、米国時間 2017 年 4 月 19 日にリリースされました。この記事では、ウェブ開発者だけでなく、Firefox や Gecko の開発者、アドオン開発者にとっても有益な変更点を掲載しています。

ウェブ開発者向けの変更
-----------

### 開発者ツール

* 非同期パン/ズームによって、ハイライト表示でスクロールに待ち時間が発生する問題を解消しました (Firefox バグ 1312103)。
* 要素の すべての CSS パスをコピーする メニュー項目を追加しました (Firefox バグ 1323700)。
* 開発ツールで CSS Color Module Level 4 をサポートしました (Firefox バグ 1310681)。
* マークアップビュー: 折りたたんでいるノードの開始タグと終了タグの間に、視覚的なヒントを追加しました (Firefox バグ 1323193)。
### CSS

#### 新機能

* すべての `mask-*` 個別指定プロパティ (CSS マスク をご覧ください) が、デフォルトで使用可能になりました (Firefox バグ 1251161)。
* `caret-color` プロパティを追加しました (Firefox バグ 1063162)。
* `place-items`/`place-self`/`place-content` 一括指定プロパティを実装しました (Firefox バグ 1319958)。
* `display` プロパティに値 `flow-root` を追加しました (Firefox バグ 1322191)。
* `-moz-tab-size` が `<length>` 値を受け入れるようになりました (Firefox バグ 943918)。また、アニメーションが可能になりました (Firefox バグ 1308110)。
* `mask-mode`:luminance がグラデーションのマスクで動作しない問題を修正しました (Firefox バグ 1346265)。
* [css-grid] `grid-template-rows` で、fr 単位を使用するとビューポートが埋まらない問題を修正しました (Firefox バグ 1346699)。
* flex アイテムが絶対位置指定の兄弟要素で隔てられているとき、"order" に従って並べ替えられない問題を修正しました (Firefox バグ 1345873)。

#### その他の変更点

* mask 関係の個別指定プロパティを SVG 要素に対して有効化しました (Firefox バグ 1319667)。
* [css-grid] グリッドアイテムが `<table>` であるときに `align-self`/`justify-self:stretch`/`normal` が動作しない問題を修正しました (Firefox バグ 1316051)。
* 大きなリファレンスボックスで半径をパーセンテージで示した `clip-path: circle()` が正しくレンダリングされない問題を修正しました (Firefox バグ 1324713)。
* ギリシャ文字に対して `text-transform` の値 `uppercase` を適用したとき、単独のエータについたアクセント (ή) が取り除かれないようになりました (Firefox バグ 1322989)。
* `display` の値 `contents` を使用できるかは、設定項目 `layout.css.display-contents.enabled` で制御していました。Firefox 53 でこの設定項目を削除しましたので常に有効になり、無効化できなくなりました (Firefox バグ 1295788)。
### JavaScript

* `Function.name` プロパティの、ECMAScript 2015 のセマンティクスを実装しました。これは、無名関数で推測した名前 (`var foo = function() {}`) を含みます (Firefox バグ 883377)。
* closing iterators の、ECMAScript 2015 のセマンティクスを実装しました。これは、例えば `for...of` ループに影響があります (Firefox バグ 1147371)。
* タグ付けされたテンプレートリテラルでエスケープシーケンスの制限を取り去る、Template Literal Revision 提案 を実装しました (Firefox バグ 1317375)。
* 非標準の String ジェネリック について、コンソールで非推奨の警告を表示するようになりました。将来削除する予定ですので、今後は使用しないでください! (Firefox バグ 1319926)
* `TypedArray` オブジェクトの静的なプロパティ `length` の値を、ES2016 に従って 3 から 0 に変更しました (Firefox バグ 1317306)。
* `DataView` で `SharedArrayBuffer` が使用可能になりました (Firefox バグ 1246597)。
* 旧版の仕様書では、`SharedArrayBuffer` オブジェクトは構造化複製の間に、明示的に転送しなければなりませんでした。新しい仕様では移譲可能なオブジェクトではなくなり、転送リストに含まれてはなりません。新しい動作について以前はコンソールで警告を表示するだけでしたが、今後はエラーが発生します (Firefox バグ 1302037)。
* `ArrayBuffer` の長さを、`Number.MAX_SAFE_INTEGER`に制限しました (>= 2 \*\* 53) (Firefox バグ 1255128)。
* `Error` やほかのネイティブエラーオブジェクトのプロトタイプ (`RangeError` など) が、固有の Error オブジェクトではなく通常のオブジェクトになりました (特に、`Object.prototype.toString.call(Error.prototype)` は `"[object Error]"` ではなく `"[object Object]"` になります) (Firefox バグ 1213341)。
### イベント

* CSS トランジション: `transitionstart`、`transitionrun`、`transitioncancel` イベントを実装しました (Firefox バグ 1264125、Firefox バグ 1287983)。
* `CompositionEvent` コンストラクターを実装しました (Firefox バグ 1002256)。
* `MouseEvent.clientX`/`MouseEvent.clientY` の別名である `MouseEvent.x` および `MouseEvent.y` を実装しました (Firefox バグ 424390)。
* `auxclick` イベントと、これに対応するイベントハンドラーを実装しました (Firefox バグ 1304044)。
* `transitioncancel` イベントが、トランジション をキャンセルした後に発生するようになりました。
### DOM

* 以前は `HTMLHyperLinkElementUtils` の `pathname` および `search` プロパティが、URL の誤った部分を返していました。例えば `http://z.com/x?a=true&b=false` の URL について、`pathname` は "`/x`" ではなく "`/x?a=true&b=false`"、`search` は "`?a=true&b=false`" ではなく "" を返していました。これらを修正しました (Firefox バグ 1310483)。
* `URLSearchParams()` コンストラクターが、init オブジェクトとして文字列や一連の文字列を受け入れるようになりました (Firefox バグ 1330678)。
* Selection API の `Selection.setBaseAndExtent()` (en-US) メソッドを実装しました (Firefox バグ 1321623)。
* `file` 型の `<input>` の `value` に"fakepath" を追加する機能を、Gecko に実装しました。ほかのブラウザーと同等になります (Firefox バグ 1274596)。
* 非推奨の `Node.rootNode` (en-US) プロパティを置き換える、`Node.getRootNode()` を実装しました (Firefox バグ 1269155)。
* `Plugin` および `PluginArray` オブジェクト特有のプロパティが、enumerable ではなくなりました (Firefox バグ 1270366)。
* `MimeTypeArray` (en-US) オブジェクトの名前付きプロパティが、enumerable ではなくなりました (Firefox バグ 1270364)。
* Permissions API の `Permissions.query()` で使用するパーミッション名で、新たに `persistent-storage` が使用可能になりました (Firefox バグ 1270038)。これは Storage API による、持続的なボックス (すなわち persistent storage) をオリジンに許可します。
### ワーカーおよびサービスワーカー

* ネットワーク情報 API が、ワーカーで使用可能になりました (Firefox バグ 1323172)。
* サーバー送信イベント がワーカーから使用可能になりました (Firefox バグ 1267903)。
* `ExtendableEvent.waitUntil()` が、非同期呼び出し可能になりました (Firefox バグ 1263304)。
### WebGL

* `WEBGL_compressed_texture_astc` (en-US) WebGL 拡張を実装しました (Firefox バグ 1250077)。
* `WEBGL_debug_renderer_info` (en-US) WebGL 拡張をデフォルトで有効にしました (Firefox バグ 1336645)。
### Audio/Video/Media

#### 全般

* **Android 版 Firefox 53** より、マルチコアシステムでパフォーマンスを高めるため、メディアのデコードを外部プロセスで制御します (Firefox バグ 1333323)。

#### メディア要素

* メディア要素でメディアの再生を開始するために使用する `HTMLMediaElement.play()` メソッドが、`Promise` を返すようになりました。この Promise は再生を開始すると fulfilled 状態、エラーが発生すると rejected 状態になります (Firefox バグ 1244768)。

#### Web Audio API

* `AudioScheduledSourceNode` インターフェイスを実装して、`AudioBufferSourceNode`、`ConstantSourceNode`、`OscillatorNode` インターフェイスはこのインターフェイスを基にするようになりました (Firefox バグ 1324568)。

#### WebRTC

* `RTCPeerConnection` の `createOffer()` (en-US) および `createAnswer()` (en-US) メソッドが、`RTCSessionDescription` を直接返すのではなく、`RTCSessionDescriptionInit` 辞書に従うオブジェクトを返す `Promise` を返すようになりました。既存のコードは引き続き動作しますが、新しいコードはよりシンプルに記述できます (en-US)。
* 同様に、`RTCPeerConnection` の `setLocalDescription()` (en-US) および `setRemoteDescription()` (en-US) メソッドが、`RTCSessionDescriptionInit` 辞書に従うオブジェクトを受け入れるようになりました。既存のコードは引き続き動作しますが、シンプルにできます (en-US)。
* `RTCPeerConnection.addIceCandidate()` (en-US) が、`RTCIceCandidateInit` (en-US) 辞書に従うオブジェクトを受け入れるようになりました。これは既存のコードと互換性がありますが、上記の変更点と並んで使用するとコードをよりシンプルに記述できます (Firefox バグ 1263312)。
* `RTCDTMFSender` (en-US) を使用する DTMF のサポートを、デフォルトで有効にしました。詳細や動作について、Using DTMF with WebRTC (en-US) をご覧ください。
### HTTP/ネットワーク

* `Referrer-Policy` の既定値をユーザーが設定できる設定項目 `network.http.referer.userControlPolicy` を、Gecko の `about:config` に追加しました (Firefox バグ 1304623)。以下の値を使用できます:
    + 0 — `no-referrer`
    + 1 — `same-origin`
    + 2 — `strict-origin-when-cross-origin`
    + 3 — `no-referrer-when-downgrade` (既定値)
* Application-Layer Protocol Negotiation (ALPN) を支持するため、Next Protocol Negotiation (NPN) のサポートを廃止しました (Firefox バグ 1248198)。
* `Large-Allocation` (en-US) HTTP ヘッダーをデフォルトで有効にして、設定で無効化しないようになりました (Firefox バグ 1331083)。
### SVG

* `SVGGeometryElement` (en-US) インターフェイスを部分的に実装しました (Firefox バグ 1239100)。
ウェブプラットフォームから廃止
---------------

### HTML/XML

* 設定項目 `dom.details_element.enabled` (Firefox で `<details>` および `<summary>` 要素のサポートを有効化/無効化します) を `about:config` から削除しました。これらの要素 (Firefox 49 からデフォルトで有効化) は無効化できません。Firefox バグ 1271549 をご覧ください。
* `<iframe>` 要素および `HTMLIFrameElement` インターフェイスの `mozapp` 属性を削除しました。これは、moz Browser API の `<iframe>` に Firefox OS アプリを埋め込めるようにするために使用しました (Firefox バグ 1310845)。
* `HTMLIFrameElement.setInputMethodActive()` メソッドおよび `InputMethod` インターフェイス (Firefox OS アプリで IME を設定および制御するために使用しました) を削除しました (Firefox バグ 1313169)。
### CSS

* `:dir()` 疑似クラスの、`-moz` 接頭辞がついた派生形を削除しました (Firefox バグ 1270406)。
* `text-align-last` の、`-moz` 接頭辞がついた派生形を削除しました (Firefox バグ 1276808)。
* `calc()` メソッドの、`-moz` 接頭辞がついた派生形を削除しました (Firefox バグ 1331296)。
* 独自仕様である `-moz-samplesize` media fragment (メモリが少ない Firefox OS 端末にダウンサンプリングした画像を提供することを支援するために追加しました。Firefox バグ 854795 をご覧ください) を削除しました (Firefox バグ 1311246)。
### JavaScript

* 非標準の `ArrayBuffer.slice()` を削除しました (ただし、標準化された `ArrayBuffer.prototype.slice()` を維持しています) (Firefox バグ 1313112)。
### API

* Wifi information API、Speaker Manager API、Tethering API、Settings API をプラットフォームから削除しました (Firefox バグ 1313788、Firefox バグ 1317853、Firefox バグ 1313789、Firefox バグ 1313155)。
### その他

* `HTMLEmbedElement` および `HTMLObjectElement` インターフェイスから `legacycaller` を削除しました (Firefox バグ 909656)。
アドオン開発者と Mozilla 開発者向けの変更点
--------------------------

### WebExtensions

新規 API:

* `browsingData`
* `identity`
* `contextualIdentities`

向上した API:

* `storage.sync`
* `contextMenus` (en-US) の context タイプ (en-US) として `page_action`、`browser_action`、`password`, `tab`
* `webRequest.onBeforeRequest` (en-US) で `requestBody` をサポート
* `tabs.insertCSS` (en-US) で `cssOrigin` をサポート。ユーザースタイルシートが挿入可能になります。
### JavaScript コードモジュール

* 非同期の AddonManager API で、コールバックだけでなく `Promise` もサポートしました (Firefox バグ 987512。
過去のバージョン
--------

* 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
* Firefox 25 for developers
* Firefox 24 for developers
* Firefox 23 for developers
* Firefox 22 for developers