Firefox 55 for developers
=========================

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

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

### 開発者ツール

* ネットワーク要求を、列の値や他のプロパティでフィルタリング可能になりました (Firefox バグ 1041895、Firefox バグ 1354508、Firefox バグ 1354507)。また、正規表現を使用してフィルタリングできるようになりました (Firefox バグ 1354495)。
* ネットワークモニター で列を隠したり表示したりできるようになりました (Firefox バグ 862855)。
* ネットワークモニターに Remote IP (Firefox バグ 1344523)、Protocol (Firefox バグ 1345489)、Scheme (Firefox バグ 1356867)、Cookies および Set-Cookies (Firefox バグ 1356869) の列を追加しました。
* `SourceMap` HTTP ヘッダーをサポートしました (以前のバージョンでは、非推奨である `X-SourceMap` ヘッダーをサポートしていました。Firefox バグ 1346936)。
### HTML

* `contenteditable` を `true` に設定した要素で、テキストの別の行を分けるために `<div>` 要素を使用するようになりました。これは、他の現行ブラウザーに Firefox を合わせるためです (Firefox バグ 1297414)。詳しくはマークアップ生成の違い をご覧ください。
* Nightly で、`dom.forms.datetime` をデフォルトで有効にしました (Firefox バグ 1366188)。
### CSS

* `transform-box` プロパティをデフォルトで有効にしました (Firefox バグ 1208550)。
* frames() タイミング関数 を実装しました (Firefox バグ 1248340)。
* `text-justify` プロパティを実装しました (Firefox バグ 1343512, Firefox バグ 276079).
* [css-grid] repeat() 内で `fit-content` が、意図せず最大限に制限したサイズで領域を確保してしまう問題を修正しました (Firefox バグ 1359060)。
* `float` / `clear` の論理値 `inline-start` および `inline-end` は、以前から実装していましたが Release チャンネルでは無効化していました。これを、すべてのチャンネルにおいてデフォルトで有効化しました (Firefox バグ 1253919)。
* 設定項目 `layout.css.variables.enabled` を完全に削除しました。CSS 変数 の機能は常にデフォルトで有効であり、無効化できません (Firefox バグ 1312328)。
* 独自仕様である `-moz-context-properties` プロパティを実装しました (Firefox バグ 1058040)。
* 角度の単位がつかない 0 度の値が、`linear-gradient()` で正しく解釈されない問題を修正しました (Firefox バグ 1363292)。
* `::cue` 疑似要素をサポートしました。これは、メディア要素内で提供するテキストキューにマッチします (Firefox バグ 1318542)。
### SVG

* `<radialGradient>` の `fr (en-US)` 属性を実装しました (Firefox バグ 1240275)。
### JavaScript

* `SharedArrayBuffer` および `Atomics` オブジェクトをデフォルトで有効化しました。JavaScript の Shared Memory と Atomics の入門として、A Taste of JavaScript's New Parallel Primitives をご覧ください。
* object destructuring で rest operator (`...`) をサポートしました。また、spread operator (`...`) が オブジェクトリテラル で動作するようになりました (Stage 3 ECMAScript proposal: Object Rest/Spread Properties。 Firefox バグ 1339395)。
* 非同期ジェネレーターメソッド をサポートしました (Firefox バグ 1353693)。
* `String.prototype.toLocaleLowerCase()` および `String.prototype.toLocaleUpperCase()` メソッドで、ロケール固有の大文字・小文字の対応を言語タグで指定するための、省略可能な引数 `locale` をサポートしました (Firefox バグ 1318403)。
* `Intl.Collator` オブジェクトで `caseFirst` オプションをサポートしました (Firefox バグ 866473)。
* Intl API でロケール設定が提供されていない場合に、オペレーティングシステムのデフォルトのロケールではなくブラウザーのデフォルトのロケールを使用するようになりました (Firefox バグ 1346674)。
* Template call sites objects が、未加工の文字列のリストに基づいて範囲ごとに正規化されるようになりました (Firefox バグ 1108941)。
* `TypedArray` のコンストラクター (`Int8Array`、`Float32Array` など) を ES2017 に更新しました。`ToIndex` 操作を行うようになり、引数なしでコンストラクターを使用できます。この場合は、length が 0 の typed array が戻ります (Firefox バグ 1317383)。
### API

#### 新規 API

* Firefox 53 から設定により使用可能であった **Collaborative Scheduling of Background Tasks API (en-US)** (またはシンプルに **Background Tasks API** または **`requestIdleCallback` API** として知られる) を、デフォルトで有効にしました。この API は、次の再描画を行う前に利用可能な空き時間があるとブラウザーが判断したときに実行するタスクを予定することができます。これにより、目に見えるパフォーマンス低下を発生させずに空き時間をコードで使用できます (Firefox バグ 1314959)。
* **WebVR 1.1 API** を、Windows でデフォルトで有効にしました (macOS は Nightly で使用できます)。この API はバーチャルリアリティデバイス (例えば Oculus Rift や HTC Vive のようなヘッドマウントディスプレイ) をウェブアプリで使用可能にして、開発者がディスプレイの位置や移動の情報を 3D シーンの移動に変換して、ディスプレイにコンテンツを表示することが可能になります。
* **Intersection Observer API** (祖先要素またはトップレベルのドキュメントの ビューポート と対象要素の交差状態の変化を非同期に監視する手段を提供します) を追加しました (Firefox バグ 1321865)。

#### DOM

* `Window` の `scrollX` および `scrollY` プロパティ (別名である `pageXOffset` (en-US) および `pageYOffset` (en-US) も同様) を、サブピクセル精度に更新しました。戻り値が整数ではなく、サブピクセル精度のディスプレイでスクロール位置をより正確に示す浮動小数点数値になります (Firefox バグ 1151421)。必要に応じて、整数に変換する `Math.round()` を使用できます。
* `MediaQueryList` (および他の関連機能) を、最新の仕様に合わせて更新しました。Firefox バグ 1354441、`MediaQueryList`、`MediaQueryListEvent` (en-US) をご覧ください。
* リストの値を変更する `DOMTokenList` のメソッドが、自動的にホワイトスペースの切りつめと重複する値の削除を行うようになりました (Firefox バグ 869788、ホワイトスペースのトリミングと重複の削除をご覧ください)。
* `HTMLInputElement` の `maxLength` プロパティを、同等の HTML が生成された後に JavaScript で動的に変更することが可能になりました (Firefox バグ 1352799)。
* `URL()` コンストラクターの base (第 2 引数) が `DOMString` を受け入れないようになりました。 `USVString` のみ受け入れます。既存の `URL` オブジェクトを base に使用することは可能であり、それ自体をオブジェクトの `href` 属性に文字列化します (Firefox バグ 1368950)。

#### DOM イベント

* `Document.createEvent()` メソッドがサポートするイベントの型を、最新の DOM 仕様に合わせて更新しました (Firefox バグ 1251198)。
* `MessageEvent.origin` プロパティの値が、`DOMString` 型から `USVString` 型に替わりました。また、`MessageEvent.source` プロパティが `MessageEventSource` 値 (これは `WindowProxy`、`MessagePort`、`ServiceWorker` オブジェクトにできます) をとるようになりました (Firefox バグ 1311324)。
* ピンチズームのジェスチャーを、`wheel` イベントと `Ctrl` キーの組み合わせにマッピングしました。モバイルスクリーンやトラックパッドでピンチズームによるジェスチャーを使用してシンプルなズーム機能を開発者が実装できるようにするため、このマッピングを実装しました (一般的に、マウスホイール + `Ctrl` でズームします) (Firefox バグ 1052253)。

#### Selection API

* 内部で選択範囲が動いたときに editing hosts がどのようにフォーカスを得るかについて、他のブラウザーへ合わせるために Selection API を更新しました (Firefox バグ 1318312)。詳しくは編集ホストのフォーカス変更に関する選択 API の挙動をご覧ください。
* 最近の仕様の変更に合致するよう、`Selection` API を更新しました (Firefox バグ 1359371):
    + `collapse()` (en-US) および `extend()` (en-US) メソッドの `offset` 引数を省略可能にしました。
    + `collapse()` (en-US) メソッドの `node` 引数を null にすることが可能になりました。
    + `containsNode()` (en-US) メソッドの `partialContainment` 引数が省略可能になりました。
    + `deleteFromDocument()` (en-US) メソッドを追加しました。
* ウェブ互換性のため、および WebKit/Blink と一致させるため、`Selection` API で `Selection.removeAllRanges()` (en-US) および `Selection.collapse()` (en-US) の別名として、`Selection.empty()` および `Selection.setPosition()` を追加しました (Firefox バグ 1359387)。
* Storage API の `StorageManager.persist()` および `StorageManager.persisted()` メソッドを実装して、`Window` コンテキストに公開しました (Firefox バグ 1286717)。

#### Workers

* ワーカーおよび共有ワーカーを、識別用の `name` プロパティをつけて作成できるようになりました。`Worker()` および `SharedWorker()` コンストラクター、`DedicatedWorkerGlobalScope` および `SharedWorkerGlobalScope` インターフェイスをご覧ください (Firefox バグ 1364297)。
* `setTimeout()` および `setInterval()` が、バックグラウンドのタブでトラッキングスクリプトに対して最小間隔の調整を課すようになりました。トラッキングスクリプトのタイムアウトを制限するをご覧ください (Firefox バグ 1355311)。

#### Service Workers/Push

* サービスワーカーコンテキストに送信したメッセージ (例えば、`onmessage` のイベントオブジェクトとして) は、他のウェブメッセージング機能との一貫性のため、`MessageEvent` オブジェクトで表すようになりました。
* `PushManager.subscribe()` メソッドが `applicationServerKey` の値として、`ArrayBuffer`s や Base64 エンコードの文字列を受け入れるようになりました (Firefox バグ 1337348)。

#### Web Audio API

* `AudioContext` インターフェイスの非標準のコンストラクター (コンテキストの用途を示す列挙型の文字列を受け入れます) は、`options` 引数が与えられた場合にエラーが発生していました。この非標準コンストラクターを削除しました。ただし `options` 引数は Firefox で未サポートであり、現在は無視することに注意してください (Firefox バグ 1361475)。

#### WebRTC

* ソースデバイスがステレオ音声を提供する場合に、`getUserMedia()` がデフォルトでステレオ音声ストリームを提供するようになりました。モノラル入力を明示的に要求する機能は Firefox 56 でサポートする予定です。現在、この機能はデスクトップに限り動作します。モバイル版 Firefox はステレオ音声入力ソースが未サポートです (Firefox バグ 971528)。
* `getUserMedia()` の メディア能力、制約、設定 である `autoGainControl` および `noiseSuppression` が仕様書に準拠しました。以前は `moz` 接頭辞がついていました (Firefox バグ 1366415)。
* 制約セットを空にして `getUserMedia()` を呼び出したとき、誤って `TypeError` はなく `NotSupportedError` を返していました。この問題を修正しました (Firefox バグ 1349480)。
* 以下の新たな WebRTC 統計値を使用できます: `framesEncoded`、`pliCount`、`nackCount`、`firCount` (Firefox バグ 1348657)。
* 以前は `mozRtt` と呼ばれていた `RTCInboundRTPStreamStats` ディクショナリーフィールドを、仕様書に合わせて `roundTripTime` に改名しました。また、`roundTripTime` の動作を標準仕様に準拠するよう調節しました。RTCP Receiver Report の RTCP タイムスタンプに基づいて秒単位で測定した、ラウンドトリップタイムの推定値を倍精度浮動小数点数を持ちます (RFC 3550, セクション 6.4.1 で説明されているアルゴリズムに準拠します) (Firefox バグ 1344970)。ただしこのプロパティは、まもなく別のディクショナリー (`RTCRemoteInboundRTPStreamStats`) に*移動する*ことを意識しておいてください (Firefox バグ 1380555)。
* `RTCRTPStreamStats` ディクショナリーが、`firCount`、`pliCount`、`nackCount` フィールドを持つようになりました。これは、接続の信頼性を判断するために使用できる低レベルの情報を返します (Firefox バグ 1348657)。
* `RTCOutboundRTPStreamStats` ディクショナリーが `framesEncoded` フィールドを持つようになりました。これは、ストリーム用のエンコードが成功したフレームの数を報告します。この情報を使用して、フレームレートを計算できます (Firefox バグ 1348657)。
* Android でビデオ通話のパフォーマンス向上とバッテリー節約のため、ハードウェアによる動画エンコードを有効化する 設定 を追加しました。これは Firefox 56 で、デフォルトで有効化します (Firefox バグ 1265755)。

#### Encrypted Media Extensions API

* 現在、Firefox は仕様書で認められていないにもかかわらず、安全でないコンテキストで Encrypted Media Extensions を使用できます。近い将来にこの動作を変更する予定であり、Firefox 55 からこのようなことを行うと、ウェブコンソール に非推奨である旨の警告を出力します (Firefox バグ 1361000)。
* 現在、Firefox は仕様書で必須であるにもかかわらず、`Navigator.requestMediaKeySystemAccess()` (en-US) に渡す `suggestedConfigurations` 引数に `MediaKeySystemCapabilities` オブジェクトを少なくとも 1 つ含めることを要求していません。Firefox 55 より、サポートするコーデックを指定せずに音声や動画の構成を指定すると、ウェブコンソールに警告を表示します。まもなく、1 つ以上の音声や動画の有効な構成が含められていない場合に例外が発生するようになります (Firefox バグ 1368683)。

#### WebGL

* `WEBGL_compressed_texture_s3tc_srgb` (en-US) 拡張が、WebGL および WebGL2 (en-US) コンテキストで使用可能になりました (Firefox バグ 1325113)。
### セキュリティ

* `Geolocation` API が、安全なコンテキスト である場合に限り利用可能になりました (Firefox バグ 1072859)。
* `Storage API` が、安全なコンテキスト である場合に限り利用可能になりました (Firefox バグ 1268804)。
* localhost で、混在コンテンツの読み込みを許可しました (Firefox バグ 903966)。
* リモートの JAR ファイルの読み込みを再び無効化しました (Firefox バグ 1329336)。詳しくは Security and the jar protocol をご覧ください。
### プラグイン

* Flash コンテンツが "click-to-activate" になりました (Firefox バグ 1317856)。これはすべての Nightly のユーザーと、beta のユーザーの 50% へ直ちに適用しました。Firefox 55 リリース版では、リリース後の 2 週間でユーザーの 5%、4 週間でユーザーの 25%、6 週間でユーザーの 100% へ適用する予定です (Firefox バグ 1365714)。
* Flash および他のプラグインは、`http://` および `https://` 以外の URL スキームで読み込むことができなくなりました (Firefox バグ 1335475)。
### その他

* Linux 版 Firefox が、`-headless` フラグを使用して ヘッドレスモード で実行できるようになりました (Firefox バグ 1356681)。
ウェブプラットフォームから廃止
---------------

### HTML

* `xml:base` 属性を、`style` 属性内に現れるパスのベース URL として使用できなくなりました。 例えば `<div xml:base="https://example.com/" style="background:url(picture.jpg)"></div>` のような使い方です (Firefox バグ 1350521)。style 属性向け xml:base が無効化されました。
* 他のブラウザーがサポートしていないため、Firefox 55 から content ドキュメントでは `<style>` 要素の `scoped` 属性を設定 (`layout.css.scoped-style.enabled`) で無効化しました。
* `<meta>` 要素の `http-equiv` 属性で、不明瞭な値である `MSThemeCompatible` のサポートを Gecko から削除しました。他にサポートする現行ブラウザーがなく、また互換性の問題が発生していました (Firefox バグ 966240)。
### CSS

* 独自仕様である `:-moz-bound-element` 疑似クラスを削除しました (Firefox バグ 1350147)。
* `text-decoration-line` の独自仕様の値である `-moz-anchor-decoration` を削除しました (Firefox バグ 1355734)。
### API

* `UIEvent.isChar` プロパティは Firefox 以外のブラウザーがサポートせず、また macOS 以外では不完全な実装でした。よってほかのブラウザーに合わせるため、Firefox 55 で削除しました。
* Firefox OS の独自仕様である Device Storage API を、プラットフォームから削除しました (Firefox バグ 1299500)。
* 非標準の `Window.find()` メソッドの、`aShowDialog` 引数 (ブラウザーの "検索" ダイアログを開くかを指定できます) を削除しました (Firefox バグ 1348409)。
* `HTMLFormElement.requestAutoComplete()` メソッドを削除しました (`HTMLFormElement` を参照) (Firefox バグ 1270740)。
* 非標準で Mozilla 特有の WebRTC オプションである `mozDontOfferDataChannel` および `mozBundleOnly` を、 `RTCOfferOptions` 辞書から削除しました。また、これらは `RTCPeerConnection.createOffer()` (en-US) でサポートしません (Firefox バグ 1196974)。
* Firefox OS 独自の Audio Channels API を、`HTMLMediaElement` および `AudioContext` から削除しました (Firefox バグ 1358061)。
### SVG

* `SVGZoomEvent` および `SVGZoomEvents` インターフェイスを、<svg> の `onzoom` 属性とともに SVG2 仕様および Gecko から削除しました (Firefox バグ 1314388)。
アドオン開発者と Mozilla 開発者向けの変更点
--------------------------

### WebExtensions

* contextMenus.create() の command プロパティで、コンテキストメニューからブラウザーアクションポップアップ、ページアクションポップアップ、サイドバーを開くことができます。 (en-US)
* proxy API
* chrome\_settings\_overrides キーで、ブラウザーのホームページをオーバーライドできます。
* browser\_style プロパティで、ブラウザーアクションポップアップ、サイドバー、オプションページ にブラウザーライクなスタイルを適用できます。
* permissions API
過去のバージョン
--------

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