Firefox 48の新機能

Firefox 48の新機能であるが、以下の通りである。

  • ダウンロード保護機能が改良され、不要な危険ソフトウェアや、望ましくないソフトウェアに対して警告が表示
  • プロセス分離(e10s)が実装(この機能は一部のユーザーにのみ提供される)
  • Mozillaによって検証・署名されていないアドオンはロードされない
  • GNU/Linux:Skiaへの対応によりCanvasの描画性能が向上(最大で3倍程度高速に)
  • WebRTCに以下の改良が行われた(Delay-agnostic AECが有効に、GNU/LinuxとMac OS Xでの全二重通信をサポート、ICEのリスタートと更新が利用可能に、MediaStreamとMediaStreamTrackの複製が可能に)
  • URLバーで検索した場合、ブックマークされているページや、すでに開いているページはアイコン表示されるように
  • Windows:Tab(ボタンの移動)とShift+F10(メニューの表示)を、カスタマイズ画面でTabとShift+F10が利用可能に
  • Rustで書き直されたメディアパーサが組み込まれた

セキュリティ面では、マルウェアのダウンロードを防ぐ機能が強化された。[オプション]から[セキュリティ]タブを開くと、以下のようになる。

図4 [セキュリティ]タブ

47では、攻撃・危険サイトのブロックの可否であった。それが[危険な詐欺コンテンツをブロックする]に代わり、さらに詳細項目として、

  • 危険なファイルのダウンロードをブロックする
  • 不要な危険ソフトウェアを警告する

が追加された。今回、新機能の1つにElectrolysis(略称:e10s、最初と最後の文字とその間に10文字がある意味)がある。その機能を一言でいえば、Firefoxのマルチプロセス化である。一部の環境において、有効化される。Electrolysis自体は、目新しい機能ではない。Firefox 4の頃にも試案として存在した。しかし、実装の困難さなどもあり、開発が停止していた時期もあった。しかし、2016年になり実際のテストも行われるようになった。図5は、筆者が普段使用しているFirefoxであるが、「実験」でマルチプロセスの実験の痕跡があった。

図5 アドオンマネージャの「実験」

どのようにマルチプロセス化するかというと、UI領域でJavaScriptのプロセスとコンテンツ領域(Webページ)のプロセスの分離である。具体的なイメージでいえば、多数のタブを開き、複数のWebアプリケーションを実行するような状況を想像してほしい。マルチプロセス化することで、、1つのタブのトラブルから、Firefox全体がハングアップしてしまうような事態を防ぐことができる。

従来のFirefoxでは、この2つのプロセスを分離することが非常に難しかったようである。ここにきて、その準備が整いつつあるということだ。しかし、Electrolysisが関与する領域は、非常に多岐にわたる。いきなり、それすべてをマルチプロセス化することは、非現実的である。そこで、今回の実装では「一部のユーザー」となったのである。具体的には、以下の環境では、有効化されない。

  • サポート対象外となる予定のMac OS X 10.6/10.7/10.8
  • Windows XP
  • アドオンをインストールしている場合(有効の状態でアドオンをインストールすると、Firefoxの再起動によりe10sが無効に)
  • アクセシビリティツールが動作している場合
  • RTL言語ロケール(右から左に記述する言語)の場合

実用的な環境で、アドオンをインストールしていないというのはほとんどありえないだろう。Mozillaによれば、現状でこの機能が有効化されるのは、全体で1%程度とのことである。さらに、Windows上でテキストやその他の項目を拡大する設定にしていることも、「アクセシビリティツールが動作している」と判定される。e10sが機能しているかどうかは、[ヘルプ]→[トラブルシューティング情報]で確認することができる。

図6 アプリケーション基本情報

アプリケーション基本情報の[マルチプロセスウィンドウ]が「有効」となっていれば、e10sは有効化されている。筆者の環境では残念ながら、有効にすることはできなかった。今後、Firefox 51において、アクセシビリティツールが動作している場合やRTL言語ロケールでも有効化される。また、このバージョン以降、アドオンがインストールた状態でも有効化が進む予定である。初期状態で有効化されるのは、Firefox 53の予定である。そして、コンテンツプロセスの複数化などがその後に予定されている。

Mozillaによって検証・署名されていないアドオンはロードされない点も少し注意が必要だろう。この機能も、かなり以前より実装が検討されてきたが、バージョン48で正式に実装となった。署名のないアドオンをインストールしようとすると、図7のようになる。

図7 署名されていないアドオンインストールをブロック

さらに古いバージョンでインストールされた署名のないアドオンは、アドオンマネージャで無効化される(図8)。

図8 無効化されたアドオン

最近のアドオンであれば署名されており、問題が発生することはないだろう。しかし、旧いアドオンや開発中のアドオンを検証したいといった場合には、unbranded Builds Firefoxという特別のバージョンを使用することで回避できる。

図9 unbranded Builds Firefox

図8の[マニュアル]リンクからたどることができる。

また、アドレスバーでの検索において、検索結果の表示方法が変更された。

図10 アドレスバーでの検索

ブックマークされているページやすでに開いているページはアイコンが表示されるようになった。修正・変更点は、以下の通りである。

  • JabraヘッドセットとLogitech C920 Webカメラで発生する音声に関する不具合を修正。これによりWebRTC利用時などに発生していた音声の歪みが解消
  • デバッガでのステップ実行時における、関数の最終行の取り扱いが修正
  • Windows:このバージョン以降でSSE2拡張命令セットが必須に
  • Mac OS X 10.6、10.7、10.8のサポートを終了。今後は10.9の開発に注力
  • Windows Remote Access Service modem Autodialを利用しなくなった

開発者向けやHTML5に関する新機能は、以下の通りである。

  • WebExtensionsの実装が安定版に
  • positionがabsoluteもしくはfixedに設定されている要素の位置を編集するための機能が追加
  • メモリツールにツリーマップ表示機能が追加
  • WebExtensionsのバックグラウンドコンテンツで動作するスクリプトや、バックグラウンドページをデバッグ可能に
  • WebExtensionsに対してContetn Security Policy(CSP)が強制されるように
  • エラーコンソールが廃止。以後はブラウザコンソールで行う
  • about:debuggingでアドオンを再読み込み可能に。この機能を利用すると、アドオン開発がより効率的に行える
  • 開発ツールにFirebugテーマが追加
  • コンソールパネルで通信の詳細を閲覧可能に
  • Web Crypt APIをWorkerから利用可能に