Mozillaは、6月26日にFirefoxの新バージョンとなる「Firefox 22」をリリースした。本稿では、インストール手順や新機能などを紹介したい。また、検索結果などを複数の指標使って評価するSafe Previewアドオンを紹介しよう。
Firefox 22のインストール
おなじみとなった感もあるが、ここでは手動でアップデートを行おう。手順は、Firefoxメニューの[ヘルプ]→[Firefoxについて]を開くと更新が自動的に開始されるので、[再起動して更新を完了]をクリックする(図1)。
初めて、Firefox 22をインストールする場合、Firefox 22のWebページからインストーラーをダウンロードする(図2)。アップデートは自動的にも行われるが、今回も多くのセキュリティアップデートがある。できれば、早めにアップデートしておきたい。
[Firefox無料ダウンロード]をクリックし、保存したファイルをダブルクリックして、インストールを開始する(図3)。
以降で、Firefox 22の新機能を見ていこう。
Firefox 22の新機能
まず、新機能であるが、以下の通りである。
・画面のスケーリングオプションに応じて、文字サイズを調整(Windows版)
・ドックアプリケーションアイコンにダウンロードの進行状況が表示(Mac OS X版)
・HTML5のaudioとvideoのプレイバックレートが変更可能に
・アドオンマネージャにソーシャルサービスの管理機能が追加
・asm.jsによる最適化(OdinMonkey)が利用可能に
まず、注目したいのは、新JavaScriptエンジンのOdinMonkeyであろう。この仕組みを簡単に解説しよう。JavaScriptでは、変数の型が事前に決まっていない。実行段階で、型を判断したり型変換が行われるため時間がかかっていた。そこで、計算結果の型が一定となる記法を用いて事前コンパイルできるようにしたのが、asm.js形式のJavaScriptである。既存のJavaScriptのサブセットであるため、下位互換性も維持される。OdinMonkeyでは、さらにガベージコレクションも不要となり、この点でも高速化が達成される。
Mozilla Japanテクニカルマーケティングの浅井智也氏によれば、高速化の方法としては、新しい言語用に別のエンジンを別途、搭載することも考えられる(実際、TypeScriptやCoffeeScriptなどを聞いたことがあるユーザーもいるだろう)。しかし、JavaScriptのサブセットであるため既存のブラウザでも動作する互換性が保たれ、新言語を実装する方法よりも互換性を重視するWebにはasm.jsの方が適していると浅井氏はいう。
ただし、注意すべき点は、asm.js形式で書かれていないコードは、高速化が期待できない(もちろん、JavaScriptエンジン全体としての高速化も行われているので、従来の処理も高速化が続けられている)。そこで、実際に試してみたので、その結果をお見せしよう。今回試してみたのは、BananaBenchという3Dゲームのベンチマークである。
図4 BananaBench |
まずは、前バージョンであるFirefox 21で試した結果である。
次に、Firefox 22である。
明らかに違いが出ている。数字上は2倍であるが、ゲームとしてスピード感が別次元というくらい異なる。浅井氏によれば、Firefoxで、JAVA/C#以上の速度で動作するWebアプリが実現可能になるとのことであるが、まさにそんな感じである。その違いを体験するには、Firefox 22でabout:configからjavascript.options.asmjsのtrue/false切り替えてFirefoxを再起動すればよい。この設定を行うとFirefox 21と同じとなり、Firefox 22との違いをリアルに感じることができるだろう。
もし、興味を持たれたのであれば、試してほしい。さらにMozillaでは、新しいことができるための技術、新しいことができるための高速化に注力することでWebの可能性を広げることを目標していると、浅井氏は述べる。今回のOdinMonkeyは、まさにそれが具現したものといえよう。また、変更されたアドオンマネージャは、図7である。
[サービス]タブが追加となっている。現時点では、mixi、Cliqze、msnNOWなどのソーシャルサービスをインストールすると、それらのプラグインが[サービス]タブに登録される。今後のさらなる普及が期待できるであろう。画面のスケーリングオプションは、高解像度ディスプレイの普及が進む中で、時宜にかなった新機能ともいえるだろう。新機能以外の変更点などは、以下がある。
・Canvasが非同期に更新されるようになり、WebGLの描画性能が向上
・テキストファイル表示時に、単語を折り返して表示
・セキュリティ向上のため、ComponentsオブジェクトをWebコンテントから参照不能に
・画像描画のメモリ使用量とスピードを向上
・全画面表示以外でも、Pointer Lock APIを利用可能に
開発者やHTML5関連では、以下の通りである。
・CSS3のFlexboxが実装され、デフォルトで利用可能
・新しいWeb Notifications APIが実装
・clipboardData APIが追加され、JavaScriptからユーザ=のクリップボードへアクセス可能に
・新しいフォントインスペクタが組み込まれる
・要素と
セキュリティアップデート
今回のバージョンアップでは、以下のセキュリティアップデートが行われた。
・XrayWrappersが回避され、特権コンテキスト内でユーザー定義メソッドが実行される[高]
・PreserveWrapperの一貫性のない挙動[高]
・SVGフィルタによる情報漏えい[高]
・XHR HEADリクエストの本文内データによるCSRF攻撃[高]
・onreadystatechangeイベントを通じた未割り当てメモリの実行[最高]
・XBLを通じた特権コンテンツへのアクセスと任意のコード実行[最高]
・Address Sanitizerを使って発見されたメモリ破壊[最高]
・さまざまなメモリ安全性の問題(rv:22.0/rv:17.0.7)[最高]