Firefox 3.5 開発者向け情報
===================

Firefox 3.5 (*2009 年 7 月 30 日にリリース*) では数多くの新機能が導入され、また、幅広い種類のウェブ標準に対するサポートが追加および改善されます。この記事は主な変更点をカバーする記事へのリンクを伴う広範囲に及ぶ一覧を提供します。

Firefox 3.5 の開発者向け新機能
---------------------

### ウェブサイトとアプリケーション開発者向け

#### HTML 5 サポート

Firefox での音声と動画の使用

Firefox 3.5 では HTML 5 の audio および video 要素がサポートされます。

Firefox でのオフラインリソース

Firefox 3.5 では HTML 5 のオフラインリソース仕様をすべてサポートしています。

ドラッグ＆ドロップ

HTML5 のドラッグ＆ドロップ API によってウェブサイト内およびウェブサイト間のアイテムのドラッグ＆ドロップがサポートされます。これにより、拡張や Mozilla ベースアプリケーションに対してもより単純な API が提供されます

#### 新しくサポートされる CSS の機能

ダウンロードフォントのサポート

新しい @規則である `@font-face` を利用して Web ページでダウンロードフォントを提供できます。これにより、ページ作者が期待する通りにサイトが描画されるようになります。

CSS メディアクエリー

Firefox 3.5 では CSS メディアクエリーをサポートしています。これはメディア依存スタイルシートを拡張するものです。

`::before` および `::after` の CSS 2.1 への更新

`::before` および `::after` 擬似要素が CSS 2.1 サポートを満たすように更新されました。`position`、`float`、`list-style-*`、そして、いくつかの `display` プロパティのサポートが追加されています。

長さの単位 `ch`

単位 `ch` が通常の長さの単位として任意の場所で使えるようになりました。"1 ch" は文字 '0' の横幅です。

`opacity`

標準の `opacity` プロパティの先行実装である `-moz-opacity` という CSS への Mozilla 拡張が削除されました。

`text-shadow`

Web コンテンツにテキストとテキスト装飾に適用される影付き効果を指定できる `text-shadow` プロパティがサポートされました。

`overflow-wrap`

この新しくサポートされたプロパティはコンテンツに単語内で改行するかどうかを指定できます。これは単語内で改行しないと 1 行に収まらないときに発生する文字あふれを防ぐためのものです。

`white-space` プロパティが値 `pre-line` をサポート

`white-space` プロパティの値に `pre-line` を指定できるようになりました。

`-moz-box-shadow`

`-moz-border-image`

`-moz-column-rule`

`-moz-column-rule-width`

`-moz-column-rule-style`

`-moz-column-rule-color`

Firefox 3.5 ではこれらの CSS への Mozilla 拡張に対するサポートが追加されます。

`-moz-nativehyperlinktext` カラー値

この新しいカラー値はユーザーのシステムのデフォルトのハイパーリンクの色を表します。

`-moz-window-shadow` プロパティおよび `:-moz-system-metric(mac-graphite-theme)` 擬似クラス

これらの新しい CSS 機能はテーマ作成を手助けするために追加されました。

`-moz-appearance` 向けの新しい値

`-moz-win-glass` および `-moz-mac-unified-toolbar` という値が `-moz-appearance` 向けに追加されました。

CSS transforms の使用

Firefox 3.5 では CSS transform がサポートされます。詳細は `-moz-transform` (en-US) および `-moz-transform-origin` (en-US) を参照してください。

`:nth-child``:nth-last-child``:nth-of-type``:nth-last-of-type``:first-of-type``:last-of-type``:only-of-type`

これらのセレクターがすべて Firefox 3.5 で新たにサポートされます。

#### 新しい DOM の機能

localStorage

Firefox 3.5 では Web Storage の `localStorage` プロパティをサポートします。これは Web アプリケーションがクライアントのコンピュータ上にローカルにデータを保存する方法を提供します。

Web Workers の使用

Firefox 3.5 では Web アプリケーションでの簡単なマルチスレッドサポートを可能にする Web Workers をサポートします。

位置情報の使用

Firefox 3.5 では Geolocation API をサポートします。これによりウェブアプリケーションはユーザの現在位置についての情報を提供するプロバイダがインストールされ有効化されていれば、その情報を保持することができます。

セレクターを使用した DOM 要素の指定

Selectors API により与えられた選択ルールにマッチする要素を指定するために文書を検索できます。

マウスジェスチャイベント

Firefox 3.5 はトラックパッドスワイプのようなマウスジェスチャイベントをサポートします。

NodeIterator オブジェクト

`NodeIterator` オブジェクトは DOM サブツリーのノードのリストを繰り返し処理するためのサポートを提供します。

MozAfterPaint イベント

この新しい DOM イベントはウィンドウで塗り直し後に送られます。

MozMousePixelScroll イベント

この新しい DOM イベントにより行ベースのスクロールイベントの代わりにピクセルベースのマウススクロールホイールイベントを検知できます。

#### 新しい JavaScript の機能

JavaScript 1.8.1 の新機能

JavaScript 1.8.1 における変更のすべての概要。

Object.getPrototypeOf()

このメソッドは指定されたオブジェクトのプロトタイプを返します。

ネイティブ JSON の使用

Firefox 3.5 は JSON をネイティブでサポートします。

String オブジェクトの新しい trim メソッド

String オブジェクトに trim()、trimLeft()、そして trimRight() メソッドが定義されました。

#### ネットワーク機能

HTTP 向けのクロスサイトアクセスコントロール

Firefox 3.5 では、サーバーがサポートする場合に、`XMLHttpRequest` によるものも含む HTTP リクエストでドメインを超える動作が可能になりました。

`XMLHttpRequest` のための Progress イベント

Progress イベントが拡張がリクエストの進捗を監視できるようにするために提供されるようになりました。

同期 `XMLHttpRequest`サポートの改善

DOM Timeout と Input Events が同期 `XMLHttpRequest中に抑制されるようになりました。`

DNS プリフェッチの制御

Firefox 3.5 では DNS プリフェッチが提供され、それにより現在のページに含まれるリンクのドメイン名解決が事前に行われ、リンクが実際にクリックされたときの時間を節約しま す。この記事では Web サイト側でプリフェッチを無効にする、もしくは、プリフェッチの動作を調整する方法について説明しています。

#### 新しい Canvas の機能

`Canvas`要素向けの HTML5 テキスト API

Canvas 要素が HTML5 テキスト API をサポートするようになりました。

`Canvas` での影付き効果

Canvas での影付き効果がサポートされるようになりました。

`createImageData()` (en-US)

Canvas の `createImageData()` メソッドがサポートされるようになりました。こ`のメソッドを利用することで、ImageData` オブジェクトを必要なときに自動的に作成させるのではなく、コードで明示的に作成することができます。オブジェクトを作成する必要性を無くすことができるので、このメソッドで他の `ImageData` を扱うメソッドのパフォーマンスを改善することができます。

`moz-opaque` 属性

`moz-opaque` DOM 属性が追加されたことにより、Canvas は半透明な要素があるかどうか知ることができます。Canvas が半透明な要素がないことを知った場合、ペインティングパフォーマンスが最適化されます。

#### 新しい SVG の機能

HTML の内容への SVG 効果の適用

SVG 効果を HTML および XHTML の内容に適用できるようになりました。この記事はその方法について説明しています。

#### その他の新機能

Firefox での ICC カラー補正 (en-US)

Firefox 3.5 では タグ付けられた画像に対して ICC カラー補正がサポートされています。

script 要素で defer 属性がサポート

この属性はスクリプトが実行し終わるの待たずにブラウザにパースし描画し続けることを選択させます。

### その他の改善

* Text ノードの `wholeText` プロパティ と `replaceWholeText()` メソッドが実装されました。
* `element.children` プロパティが追加されました。これは与えられた要素の子要素の*コレクション*を返します。
* `element.contentEditable` プロパティに対応するようになり、編集可能な要素に対応するようになりました。
* DOM Element オブジェクトで Element Traversal API がサポートされました。
* HTML document ノードを `cloneNode()` を用いて複製できるようになりました。
* 非標準である DOM の `getBoxObjectFor()` メソッドが削除されました。代わりとして `getBoundingClientRect()` を利用すべきです。
* 伝達された DOM イベントを再伝達できるようになりました。これにより Firefox 3.5 は Acid 3 test 30 をパスします。
* DOM 2 Range ハンドリングが改善されました。
* 非 Chrome スコープにおいて、例外でキャッチされるオブジェクトがスローされたオブジェクトを含む XPConnect ラッパーではなく実際にスローされたオブジェクトになりました。
* SVG ID 参照が動的な変更に対応するようになりました。
* SVG フィルターが `foreignObject` でも動作するようになりました。
* 互換性のために `GetSVGDocument()` メソッドが `object` および `iframe` 要素に追加されました。
* JavaScript においてオブジェクトおよび配列の初期化子によるプロパティの暗黙的な設定ではセッターの定義を行わないようになりました。詳細は オブジェクトおよび配列の初期化子は評価時にセッターの定義を行うべきではない というブログ投稿を参照してください。
* `gDownloadLastDir.path` 変数は、パスではなく `nsIFile` を参照しているので、 `gDownloadLastDir.file` に名称変更されました。
* `gDownloadLastDirPath` 変数は、パスではなく `nsIFile` を参照しているので、 `gDownloadLastDirFile` に名称変更されました。
* Firefox 3.5 から、`XPCNativeWrapper` オートメーションを得る Chrome パッケージでの `data:` バインディングを利用することはできなくなります。
### XUL とアドオン開発者向け

拡張開発者であるなら、Firefox 3.5 向けに拡張を更新する から読み始めるべきです。その記事ではあなたの拡張に影響しうる変更を知る上で役立つ概観を提供しています。

#### 新しいコンポーネントと機能

プライベートブラウジングモードのサポート

Firefox 3.5 ではプライベートブラウジングモードが提供されます。これはユーザの活動を記録しません。拡張はこの記事で挙げるガイドラインに従ってプライベートブラウジングをサポートすることができます。

Firefox 3.5 でのセキュリティの変更

この記事は Firefox 3.5 でのセキュリティ関連の変更をカバーしています。

Firefox 3.5 でのテーマの変更

この記事は Firefox 3.5 でのテーマ関連の変更をカバーしています。

WiFi アクセスポイントのモニタリング

UniversalXPConnect 特権を持つコードで有効なアクセスポイントの一覧がモニタリング可能になり、個々の SSIDs、MAC アドレス、シグナル強度の情報が取得できます。 これを Geolocation と連携して用いることで WiFi ベースのロケーションサービスを提供できます。

#### 注目すべき変更と改善

* XUL `textbox` ウィジェットが検索フィールドとして利用するための `search` type を提供するようになりました。
* ウィンドウ間のタブのドラッグ＆ドロップのサポートのために、`browser` ウィジェットに `swapDocShells()` メソッドが定義されました。
* `panel` 要素に `level` 属性が追加されました。 これは panel を他のアプリケーションの手前に表示するか、単純に panel が含まれるウィンドウの手前に表示するかどうかを指定できます。
* XUL 要素が `clientHeight`、`clientWidth`、`scrollHeight`、`scrollWidth` プロパティをサポートするようになりました。
* `keyset`s now include a `disabled` 要素に `disabled` 属性が追加されました。
* 加えて、 `keyset` 要素はノードの `removeChild()` メソッドを用いて削除可能になりました。
* `mozIStorageStatement` には `initialize()` メソッドがありましたが、削除されました。利用者は新しいステートメントオブジェクトを得るための代替として `createStatement()` メソッドを使うべきです。
* Storage API が非同期リクエストのサポートを提供するようになりました。
* `nsICookie2` インターフェースに新しく `creationTime` 属性が追加され、Cookie が作成された時間を取得できるようになりました。
* プロトコルが登録することを許可されることを保証するために Chrome 登録の間にチェックされる `nsIProtocolHandler` へのフラグが追加されました (`URI_IS_LOCAL_RESOURCE`)。
* Linux で Firefox がプラグインを探すために `/usr/lib/mozilla/plugins` を見るようになりました。以前にサポートされていた場所も同様に検索対象です。
* プラグイン API がプライベートブラウジングモードのサポートを含むために更新されました。これにより、`NPNprivateModeBool` を用いているプライベートブラウジングモードの状態を調べるために、 `NPN_GetValue()` を使用できるようになりました。
エンドユーザ向け新機能
-----------

### ユーザーエクスペリエンス

ロケーションアウェアブラウジング

選択次第で、 Firefox 3.5 がウェブサイトと現在の位置についての情報を共有できるようになります。 Firefox 3.5 は接続しているネットワークについての情報を位置を共有するために用いることができます。もちろん、プライバシーを確保するために、そうする前に許可を求めます。

オープンなオーディオとビデオのサポート

Firefox 3.5 は、オーディオのための WAV 同様、オープンな Ogg フォーマットを用いた埋め込みビデオおよびオーディオをサポートします。プラグインは必要なく、何かあるいはどうやってもあなたのプラットフォームで利用出来ないものをインストールする必要があるという旨のエラーメッセージに混乱することはありません。

ローカルデータストレージ

ウェブアプリケーションはあなたのコンピュータにデータを保存するために Web Storage のローカルストレージ機能を利用できるようになります。これはサイト設定からより複雑なデータまであらゆるものにとって素晴らしく役立つものです。

### セキュリティとプライバシー

プライベートブラウジング

他人のコンピュータを利用する必要がありますか？プライベートブラウジングモードに切り替えることで、Cookie、履歴、その他のあらゆる潜在的なプライベートな情報を含んだあなたのセッションは全く記録されなくなります。

より良いプライバシーコントロール

プライバシー設定画面はユーザがプライベート情報をより細かくコントロールできるようにするために完全にデザインし直されました。ユー ザは履歴、Cookie、ダウンロード、フォーム入力のような情報を保持、破棄するかどうか選択できます。 さらに、ユーザは履歴とブックマークの内容をそれぞれアドレスバーの自動サジェストに含むかどうか指定できます。 ですから、アドレスバーでタイプ中に意図せずプライベートな Web アドレスがポップアップすることを防ぐことができます。

### パフォーマンス

より速い JavaScript パフォーマンス

新しい TraceMonkey JavaScript エンジンを持つ Firefox 3.5 では "AJAX" の "J" である、JavaScript が劇的にスピードアップしています。ウェブアプリケーションは Firefox 3 よりももっとより速くなります。

より速いページレンダリング

"Speculative parsing（投機的解釈）" のような技術のおかげで、 Firefox 3.5 ではウェブコンテンツがより速く描画されます。ユーザーは「Firefox 3.5 ではコンテンツがより速く描画される」ということ以外は知る必要がありません。

関連情報
----

* Firefox 3 for developers
* Firefox 2 for developers
* Firefox 1.5 for developers