Firefox 44 for developers
=========================

Firefox の最新の開発者向け機能を試すには、 Firefox Developer Edition をインストールしてください。Firefox 44 は、米国時間 2016 年 1 月 26 日にリリースされました。この記事では、ウェブ開発者だけでなく、 Firefox や Gecko の開発者、アドオン開発者にとっても有用な主な変更点を挙げています。

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

### 開発者ツール

主要なもの:

* メモリーツール
* アニメーションインスペクターの改良
* 新しいウォーターフォールマーカー: DomContentLoaded、load、ワーカーメッセージ

Firefox 43 と Firefox 44 の間で修正された開発ツールのすべてのバグ。

### HTML

* `<link rel="prefetch">` が、`crossorigin` 属性に従うようになりました (Firefox バグ 1214819)。
### CSS

* `position: fixed;` が、常に新たな重ね合わせコンテキストを生成するようになりました (Firefox バグ 1179288)。
* `unicode-range` (en-US) の対応を、既定で有効にしました (Firefox バグ 1119062)。
* CSS 書字方向の実験的な実装を更新して、最新の仕様を反映しました。
    + `text-orientation` プロパティの値 `sideways` を実装して、`sideways-right` をこの値の別名にしました (Firefox バグ 1193488)。
    + `sideways-rl` および `sideways-lr` の値を`writing-mode` プロパティに実装しました (Firefox バグ 1193488 および Firefox バグ 1193519)。
* 非標準のプロパティ `-moz-math-display` および `-moz-window-shadow` は、ウェブコンテンツで使用できなくなりました (Firefox バグ 1207002、Firefox バグ 1211040、Firefox バグ 1212607)。
* `font-style` で、`oblique` と `italic` の両方を使用できる場合は、両者を区別するようになりました (Firefox バグ 543715)。
* 未対応であるにもかかわらず `@page/marks`、`orphans`、`page` (en-US)、`size`、`widows` の各プロパティがパースされ、`@supports` で誤って対応済みであると報告していました。この問題を修正してパースしないように、また対応済みとしないようになりました (Firefox バグ 1215702)。
* 内部で使用する値 `-moz-mac-unified-toolbar` を、`appearance` プロパティで使用できる値から外しました (Firefox バグ 1206468)。
* いくつかの `-webkit` 接頭辞付きプロパティおよび値を、ウェブ互換性のために対応しました。設定項目 `layout.css.prefixes.webkit` で制御しており、既定値は `false` です (Firefox バグ 837211)。
    + `-webkit-animation`
    + `-webkit-animation-delay`
    + `-webkit-animation-direction`
    + `-webkit-animation-duration`
    + `-webkit-animation-fill-mode`
    + `-webkit-animation-iteration-count`
    + `-webkit-animation-name`
    + `-webkit-animation-play-state`
    + `-webkit-animation-timing-function`
    + `-webkit-text-size-adjust`
    + `-webkit-transform`
    + `-webkit-transform-origin`
    + `-webkit-transform-style`
    + `-webkit-transition`
    + `-webkit-transition-delay`
    + `-webkit-transition-duration`
    + `-webkit-transition-property`
    + `-webkit-transition-timing-function`
    + `-webkit-border-radius`
    + `-webkit-border-top-left-radius`
    + `-webkit-border-top-right-radius`
    + `-webkit-border-bottom-left-radius`
    + `-webkit-border-bottom-right-radius`
    + `-webkit-appearance`
    + `-webkit-background-clip`
    + `-webkit-background-origin`
    + `-webkit-background-size`
    + `-webkit-border-image`
    + `-webkit-box-shadow`
    + `-webkit-box-sizing`
    + `-webkit-user-select`
    + `-webkit-linear-gradient()` Firefox バグ 1210575
    + `-webkit-radial-gradient"()` Firefox バグ 1210575
    + `-webkit-repeating-linear-gradient()` Firefox バグ 1210575
    + `-webkit-repeating-radial-gradient()` Firefox バグ 1210575
### JavaScript

#### 新規 API

* `Symbol.toPrimitive`、`Symbol.prototype[@@toPrimitive]`、`Date.prototype[@@toPrimitive]` を実装しました (Firefox バグ 1054756)。

#### 変更点

* グローバルレベルにおける `let` および `const` のバインディングを、ES2015 に準拠させました。Firefox バグ 589199 およびブログ記事 "Breaking changes in let and const in Firefox Nightly 44" をご覧ください。また、`let` が既定でウェブ JavaScript （厳格モードおよび非厳格モード）で使用できるようになり、バージョンのオプトインが不要になりました (Firefox バグ 932517)。
* 型付き配列 (`Int8Array` や `ArrayBuffer` など) のコンストラクターを `new` 演算子をつけずに関数として呼び出した場合に、ES6 仕様に従って `TypeError` が発生するようになりました (Firefox バグ 980945、Firefox バグ 1214936)。
* `RegExp` のスティッキーフラグが、ES2015 標準の anchored sticky regular expressions に従うようになりました (Firefox バグ 773687)。
* JavaScript シェル (SpiderMonkey の REPL) の既定 JS バージョンが、ウェブ互換の JS バージョンになりました (JS1.7 以降ではありません) (Firefox バグ 1192329)。

#### 廃止

* 非標準の `let` ブロックを廃止しました (Firefox バグ 1167029)。
* 非標準かつ非推奨である `Object.prototype.__noSuchMethod__` プロパティを削除しました (Firefox バグ 683218)。
### インターフェイス/API/DOM

#### DOM & HTML DOM

* 既存のサイトとの互換性を確保するため、 `Document.charset` を `Document.characterSet` の別名として実装しました (Firefox バグ 647621)。
* ウェブページから Sherlock プラグインをインストールすることを可能にする `window.sidebar.addSearchEngine()` メソッドの対応を廃止して、ウェブコンソールに警告を出力するようになりました (Firefox バグ 862148)。
* 望まないポップアップに対抗するため、対話がないページでは `beforeunload` イベントで要求されたプロンプトを表示しないようになりました (Firefox バグ 636905)。
* 非推奨メソッド `MessageEvent.initMessageEvent()` を、後方互換性のために再実装しました (Firefox バグ 949376)。
* 廃止した `DocumentType.internalSubset` プロパティを削除しました (Firefox バグ 801545)。
* 既存のサイトとの互換性を確保するため `Window.orientation` (en-US) プロパティ、`Window.onorientationchange` プロパティおよび `orientationchange` イベントを実装しました (Firefox バグ 920734)。
* 明示的に全画面表示を要求した `<iframe>` は、暗黙的に全画面表示が解除されないようになりました (Firefox バグ 1187801)。
* イベント `mouseover`, `mouseout`, `mouseenter`, `mouseleave`, `pointermove`, `pointerover`, `pointerout`, `pointerenter`, `pointerleave` が、無効化したフォーム要素で発生するようになりました (Firefox バグ 218093)。
* 相互運用性を高めるため、`Element.webkitMatchesSelector()` メソッドを追加しました (Firefox バグ 1216193)。
* 仕様書に合致させるため、`Document.createAttribute()` は入力内容を小文字に変換するようになりました (Firefox バグ 1176313)。
* `Window.open()` の非標準機能である `dialog` はウェブコンテンツで使用できなくなりました。拡張機能や chrome 特権を持つコードでは引き続き使用可能です (Firefox バグ 1095236)。

#### Canvas

* `OffscreenCanvas` (en-US) API の実験的な実装を追加し、レンダリングコンテキスト (WebGL など) がウェブワーカー内で実行することができるようになりました。この実験的な API を使用するには、about:config で `gfx.offscreencanvas.enabled` を `true` に設定してください (Firefox バグ 709490)。この API に含まれるものは以下のとおりです。
    + `OffscreenCanvas` (en-US) インターフェイス
    + `HTMLCanvasElement.transferControlToOffscreen()`
    + `WebGLRenderingContext.commit()`
    + この API を有効にすると、いくつかの WebGL インターフェイスもワーカーで使用可能になりました。

#### WebGL

* Uniform Buffer Objects を実装しました (Firefox バグ 1048747)。

#### IndexedDB

* `IDBIndex.getAll()` および `IDBIndex.getAllKeys()`、それに反対側の `IDBObjectStore` を既定で有効にしました (Firefox バグ 1196841)。

#### サービスワーカー

* `ServiceWorkerMessageEvent` および `ExtendableMessageEvent` インターフェイスを実装しました (Firefox バグ 1143717 および Firefox バグ 1207068)。
* `Headers` オブジェクトが組イテレーターに対応しました。すなわち、 `Headers.entries()`, `Headers.keys()`, `Headers.values()` の各メソッドが利用できるようになりました。 `Symbol.iterator` も既定のイテレーターを返すようになりました (Firefox バグ 1108181)。
* `XMLHttpRequest` API がサービスワーカーで無効化されました (Firefox バグ 931243)。
* `FetchEvent` インターフェイスが `ExtendableEvent` を継承するようになり、 `ExtendableEvent.waitUntil()` メソッドにアクセスできるようになりました (Firefox バグ 1214772)。
* 仕様書の最新の変更に従い、 `FetchEvent.client` が削除されました (Firefox バグ 1218135)。
* 最新の仕様書に一致するように、 `ServiceWorkerContainer.onreloadpage` が削除されました。 (Firefox バグ 1218139).
* `onbeforeevicted` および `onevicted` イベントハンドラーは、仕様書に準拠していなかったので削除されました。将来的に再導入される予定ですが、削除することで期待通りの機能検出が可能になります (Firefox バグ 1218142)。
* `FetchEvent()` コンストラクターで、 `isReload` が options 辞書に存在しなかった場合の既定値が `false` になりました (Firefox バグ 1216401)。
* `Client.frameType` プロパティが正しいインターフェイスに実装されました。以前は `WindowClient` にありました (Firefox バグ 1218146)。
* AppCache がページをオフラインに対応させるために使用された場合、コンソールに警告メッセージを表示し、開発者にサービスワーカーを使用するよう助言するようになりました (Firefox バグ 1204581)。
* Gecko で、サービスワーカーが既定で有効化されました。

#### WebRTC

* WebRTC インターフェイスの*接頭辞が外されました* (Firefox バグ 1155923)。具体的には、
    + `mozRTCPeerConnection` が `RTCPeerConnection` になりました。
    + `mozRTCIceCandidate` が `RTCIceCandidate` (en-US) になりました。
    + `mozRTCSessionDescription` が `RTCSessionDescription` になりました。
* `RTCDataChannel.bufferedAmountLowThreshold` (en-US) プロパティおよび `bufferedamountlow` (en-US) イベントを実装しました (Firefox バグ 1178091)。
* `RTCPeerConnection.canTrickleIceCandidates` 属性を追加して、非標準メソッド `RTCPeerConnection.updateIce()` を削除しました (Firefox バグ 1209744)。
* `MediaStream` インターフェイスで `MediaStream.addTrack()` および `MediaStream.removeTrack()` (en-US) メソッドに対応しました (Firefox バグ 1103188)。
* `MediaStream()` コンストラクタを実装しました (Firefox バグ 1070216)。
* `RTCOfferOptions` (en-US) の、非標準である制約的なオプションリストの対応を廃止しました。

#### 新規 API

* Workers での Canvas API を実験的に実装しました。 `OfflineCanvas` および `HTMLCanvasElement.transferControlToOffscreen()` が使用できます。設定項目 `gfx.offscreencanvas.enabled` で制御しており、現在は既定で無効化しています (Firefox バグ 709490)。
* Web Speech API の一部である Text2Speech API で、OS X のバックエンドに対応しました。ただし、既定で無効化しています (Firefox バグ 1003452)。

#### その他

* `URLSearchParams` オブジェクトで組イテレーターに対応しました。`URLSearchParams.entries()`、`URLSearchParams.keys()`、`URLSearchParams.values()` の各メソッドを使用できます。また `Symbol.iterator` は、既定のイテレーターを返すようになりました (Firefox バグ 1085284)。
* `FormData` オブジェクトで組イテレーターに対応しました。`FormData.entries()`、`FormData.keys`、`FormData.values()` の各メソッドを使用できます。また `Symbol.iterator` は、既定のイテレーターを返すようになりました (Firefox バグ 1127703)。
* `XMLHttpRequest.send()` を HTML 文書で使用したとき、`application/xml` に代わり `text/html` を使用するようになりました (Firefox バグ 918771)。
* 音声合成 (text-to-speech) を Mac および Linux 向けのデスクトップ版 Firefox に実装しました。ただし、`about:config` の `media.webspeech.synth.enabled` フラグで無効化しています (Firefox バグ 1003452、Firefox バグ 1003464)。詳しくは Web Speech API をご覧ください。
* `<frame>` または `<object>` の内部にある要素は、全画面表示できないようになりました (Firefox バグ 1212299)。
* WOFF フォントのサニタイズ処理を、少々強化しました。誤りがあるフォントをより多く拒否するようになりましたが、 Firefox 46 でやや緩和しました (Firefox バグ 1193050 および Firefox バグ 1244693)。
### MathML

*変更なし。*

### SVG

*変更なし。*

### Audio/Video

*変更なし。*

HTTP
----

* Brotli アルゴリズムに対応しました。また、 `Accept-Encoding` および `Content-Encoding` ヘッダーで値 `br` に対応しました (Firefox バグ 366559 および Firefox バグ 1211916)。
* 改行 (`'/n'`) を含む HTTP/2 ヘッダーについて、HTTP/1 とは異なり仕様書で許可されていないため、誤って対応していた箇所を削除しました (Firefox バグ 1197847)。
ネットワーク
------

*変更なし。*

セキュリティ
------

* Beta および Release 版のブラウザーでも、RC4 が既定で無効になりました (Firefox バグ 1201025)。また、ホワイトリストが既定で空になりました (Firefox バグ 1215796)。
アドオン開発者と Mozilla 開発者向けの変更点
--------------------------

### インターフェイス

*変更なし。*

### XUL

*変更なし。*

### JavaScript コードモジュール

* Sqlite.jsm で `LIKE` に対応しました (Firefox バグ 1188760)。
* Snackbars.jsm モジュールを Android 版 Firefox に追加しました (Firefox バグ 1215026)。
### XPCOM

* `nsIDOMWindow` インターフェイスが空になりました。存在していたアイテムは使用されない、他のインターフェイスに移転、あるいは C++ に限り使用するものになりました。C++ コードから利用できるアイテムは、nsPIDOMWindow インターフェイスに存在しています (Firefox バグ 1216401)。
### その他

* Firefox 44 での大幅な変更 (bug 1202902) により、cfx でパックしたアドオンが動作しなくなります。再びアドオンが互換性を持つようにするために、jpm を使用してください。 *cfx* から *jpm* に移行する手順はこちらに記載しています。
過去のバージョン
--------

* 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
* Firefox 21 for developers
* Firefox 20 for developers
* Firefox 19 for developers
* Firefox 18 for developers
* Firefox 17 for developers
* Firefox 16 for developers
* Firefox 15 for developers
* Firefox 14 for developers
* Firefox 13 for developers