Firefox 38 for developers
=========================

Firefox 38 は、米国時間 2015 年 5 月 12 日にリリースされました。この記事では、ウェブ開発者だけでなく、Firefox や Gecko の開発者、アドオン開発者にとっても有用な主な変更点を挙げています。

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

### 開発者ツール

ハイライト:

* Web Audio Editor で音声ノードをバイパス
* ウェブコンソールの "コピー" コマンド
* ウェブコンソールで XmlHttpRequest をハイライトおよびフィルター
* デバッガーで、最適化により削除された変数を確認
* ネットワークモニターでセキュリティの警告を確認
* ネットワークモニターで伝送サイズを確認
* ページのアニメーションを再生/停止

Firefox 37 から Firefox 38 の間に解決した開発ツール関連のバグ一覧.

### CSS

* `ruby-position` および `ruby-align` に対応して、既定で有効にしました (Firefox バグ 1055676、Firefox バグ 1123917、Firefox バグ 1039006)。
* カスタム要素向けに `:unresolved` 擬似クラスを実装しました (Firefox バグ 1111633)。
* 定義済みスタイル `ethiopic-numeric` の接尾辞は最近の仕様書の変更に合わせて、ドットに代わり空白文字を使用するようになりました (Firefox バグ 1120721)。
* インライン要素とブロック要素の両方に分けて生成した Generated Content (`::before` や `::after` による) の CSS Transitions が、仕様書で要求されているとおりに動作するようになりました (Firefox バグ 1110277)。
* CSS 論理的プロパティの実装が大きく前進しました。 `layout.css.vertical-text.enabled` フラグの設定 (既定値は `false`) により、以下のプロパティを使用できます。
    + 書字方向に依存しない `width` および `height`: `block-size` および `inline-size` (Firefox バグ 1117983)。
    + 書字方向に依存しない `min-width` および `min-height`: `min-block-size` および `min-inline-size` (Firefox バグ 1117983)。
    + 書字方向に依存しない `max-width` および `max-height`: `max-block-size` および `max-block-size` (Firefox バグ 1117983)。
    + 書字方向に依存しない `margin-top`、`margin-right`、`margin-bottom`、`margin-left`: `margin-block-start`、`margin-block-end`、`margin-inline-start`、`margin-inline-end` (Firefox バグ 649142)。
    + 書字方向に依存しない `padding-top`、`padding-right`、`padding-bottom`、`padding-left`: `padding-block-start`、`padding-block-end`、`padding-inline-start`、`padding-inline-end` (Firefox バグ 649142)。
    + 書字方向に依存しない `border-top`、`border-right`、`border-bottom`、`border-left` および幅、スタイル、色の個別指定プロパティ: `border-block-start`、`border-block-start-width`、`border-block-start-style`、`border-block-start-color`、`border-block-end`、`border-block-end-width`、`border-block-end-style`、`border-block-end-color`、`border-inline-start`、`border-inline-start-width`、`border-inline-start-style`、`border-inline-start-color`、`border-inline-end`、`border-inline-end-width`、`border-inline-end-style`、`border-inline-end-color` (Firefox バグ 649142)。
    + 書字方向に依存しない `top`、`right`、`bottom`、`left`: `inset-block-start`、`offset-block-end`、`offset-inline-start`、`offset-inline-end` (Firefox バグ 1120283)。
* ブラウザー間で相互運用性がある動作を目指して、 CSS トランジションの始まり方を、最近の仕様変更に合致するよう変更しました (Firefox バグ 960465)。
### HTML

* `<label>` 要素でイベントターゲットとラベルの間にインタラクティブコンテンツがある場合は、イベントをターゲット要素に発行しないようになりました (Firefox バグ 229925)。
* `<picture>` 要素を既定で有効にしました (Firefox バグ 1017875)。
* コンテキストメニューや中クリックによるナビゲーションで、 `<meta name="referrer">` に対応しました (Firefox バグ 1113431)。
### JavaScript

* `Generator.prototype.return()` を実装しました (Firefox バグ 1115868)。
* セッターが残余引数を持っている場合に`SyntaxError` が発生するようになりました (Firefox バグ 1089632)。
* 関数の `name` プロパティが構成可能になりました (Firefox バグ 1084019)。
* `Array` のメソッドのいくつかを、型付き配列 にも実装しました。
    + `of()` メソッドと `from()` メソッド (Firefox バグ 896608)。
    + `forEach()` メソッド (Firefox バグ 1107645)。
    + `filter()` メソッドと `map()` メソッド (Firefox バグ 1121936)。
    + `slice()` メソッド (Firefox バグ 1121935)。
* 残余引数を使用する場合は、引数名の重複が不可になりました (Firefox バグ 1096376)。
* アロー関数を使用する場合は、引数名の重複が不可になりました (Firefox バグ 1096377)。
* 簡潔なメソッド定義では、引数名の重複が不可になりました (Firefox バグ 1096378)。
* `Map`/`Set`/`WeakMap` コンストラクターを `new` なしで呼び出すと、警告が発生するようになりました (Firefox バグ 1108930)。
* `WeakMap` オブジェクトの `get`、`has`、`delete` メソッドは、引数 `key` がオブジェクトではない場合に、例外が発生しないようになりました (Firefox バグ 1127827)。
* `WeakMap.prototype.get()` メソッドの、省略可能な非標準の引数 `fallback` を削除しました (Firefox バグ 1127827)。
* Generator メソッド を定義するとき、"`set`" および "`get`" は有効な名前として扱うようになりました (Firefox バグ 1073809)。
* 正規表現が存在しないとき、`RegExp.prototype.source` は空文字列に代わり "(?:)" を返すようになりました (Firefox バグ 1130798)。
* `RegExp.prototype.source` および `RegExp.prototype.toString()` は、正規表現のパターンを適切にエスケープするようになりました (例えば、行末の "\n") (Firefox バグ 1130860)。
* `Regexp` の `global`、`ignoreCase`、`multiline`、`sticky` プロパティは、`RegExp` インスタンスのデータのプロパティから、プロトタイプのアクセサープロパティに変わりました (Firefox バグ 1120169)。
* `RegExp.prototype.source` プロパティが、`RegExp` のインスタンス自体のデータプロパティから、プロトタイプのアクセサープロパティに変わりました (Firefox バグ 1120169)。Firefox バグ 1150297 のため、Release 以外のバージョンに限り使用できます。
* `Function.prototype.toString()` は、`Proxy` オブジェクトに対して例外が発生するようになりました (Firefox バグ 1100936)。
### インターフェイス/API/DOM

* Fetch API の `fetch()` メソッドを実装しました (Firefox バグ 1039846)。
* `BroadcastChannel` API を実装して、Web Workers で使用可能にしました (Firefox バグ 966439 および Firefox バグ 1121420)。
* Console API が Web Workers で使用可能になりました。
* `CanvasRenderingContext2D.clearHitRegions()` を実装しました (Firefox バグ 1119527)。
* `KeyboardEvent.location` の定数 `DOM_KEY_LOCATION_MOBILE` および DOM\_KEY\_LOCATION\_JOYSTICK を削除しました。DOM Level 3 仕様から削除されたためです (Firefox バグ 936313。
* `KeyboardEvent.code` を Release ビルドで有効にしました。以前はプレリリース版のみで有効でした(Firefox バグ 1126673)。
* `KeyboardEvent.code` で Linux 環境の Sun キーボード、Android、Firefox OS の特殊キーをサポートしました(Firefox バグ 1020139)。
* `TextEncoder()` コンストラクターを、仕様に合致するよう変更しました。無効な引数を渡した場合に発生する例外が、誤りである `TypeError` ではなく `RangeError` `DOMException` になりました (Firefox バグ 1125766)。
* User Timing API の `Performance.mark()`、`Performance.clearMarks()`、`Performance.measure()`、`Performance.clearMeasures()` を実装しました (Firefox バグ 782751)。
* 接頭辞付きの `indexedDB` (en-US) である `mozIndexedDB` を削除しました (Firefox バグ 975699)。
* `DOMContentLoaded` イベントはキャンセル不可になりました (Firefox バグ 1134559)。
* Worker で WebSocket を使用できるようになりました (Firefox バグ 504553)。
* `XMLHttpRequest.responseType` および `XMLHttpRequest.withCredentials` プロパティが、`XMLHttpRequest.open()` を呼び出す前に設定できるようになりました (Firefox バグ 707484)。
### MathML

*変更なし。*

### SVG

*変更なし。*

### Audio/Video

*変更なし。*

ネットワーク
------

*変更なし。*

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

* Firefox では、ログインフォームを扱う際に `autocomplete``=false` 属性を無視するようになりました (Firefox バグ 1025703)。これはパスワードマネージャーがより確実に動作できるようにすることで、より安全なパスワードの使用を促進しようとするものです。
* ホワイトリストで明示されたウェブサイトを除き、TLS を使用する際は RC4 が無効になりました。このホワイトリストは、ウェブサイトが修正されるまでの経過措置です (Firefox バグ 1124039)。このフォールバック機能は設定項目 `security.tls.unrestricted_rc4_fallback` で制御されており、現在の既定値は `true` です (Firefox バグ 1138882)。
* 安全でないバージョンの TLS へのフォールバックが必要なウェブサイトを、ハードコードされたホワイトリストに記載します。これは次第に削減する予定です (Firefox バグ 1114816)。 `security.tls.insecure_fallback_hosts.use_static_list` を `false` に設定すると、ホワイトリストを無効化できます。
アドオン開発者と Mozilla 開発者向けの変更点
--------------------------

### Add-on SDK

#### ハイライト

* `sdk/context-menu@2` を実装しました (Firefox バグ 1070952)。
* `sdk/addon/bootstrap` を実装しました (Firefox バグ 1075541)。
* `sdk/windows/loader` を削除しました (Firefox バグ 970135)。
* Linux での、既定言語の検出機能を修正しました (Firefox バグ 1114712)。
* `toolkit/loader` に、オプトインモジュールの互換性検証機能を搭載しました。これはすべての jpm アドオンに対して有効です (Firefox バグ 1037235)。

#### Electrolysis (E10s) 対応

* `sdk/page-worker` が e10s に対応しました (Firefox バグ 1116004)。
* `sdk/content/worker` が e10s に対応しました (Firefox バグ 1116544)。
* `sdk/tabs` が e10s に対応しました (Firefox バグ 1033838)。

#### 詳細

* Firefox 37 から Firefox 38 の間に行われた GitHub コミット.
### XUL

*変更なし。*

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

#### Downloads.jsm

* `DownloadTarget` オブジェクトが `exists` および `size` プロパティを持つようになりました。ダウンロード先のファイルがディスクに存在するかや、ファイルのサイズを確認できます。また、新規メソッド `refresh()` で、これらの値の更新を求めます。
### XPCOM

* `"@mozilla.org/network/atomic-file-output-stream;1"` および `"@mozilla.org/network/safe-file-output-stream;1"` は、`PR_TRUNCATE` を伴わずに `PR_APPEND` を渡した場合に例外が発生するようになりました (Firefox バグ 1117580)。
* `nsICompositionStringSynthesizer` および `nsIDOMWindowUtils.sendCompositionEvent` を削除しました。代わりに `nsITextInputProcessor` を使用してください(Firefox バグ 917322)。
* `nsIDOMWindowUtils.sendKeyEvent()` は非推奨になりました。代わりに `nsITextInputProcessor` を使用してください (Firefox バグ 1119609)。
過去のバージョン
--------

* 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
* Firefox 12 for developers
* Firefox 11 for developers
* Firefox 10 for developers
* Firefox 9 for developers
* Firefox 8 for developers
* Firefox 7 for developers