Quantcast
Channel: Mozilla Flux
Viewing all 123 articles
Browse latest View live

Firefox ESRを継続して使うために

$
0
0

Firefox ESR 24から31へ

Firefoxの法人向け延長サポート版であるFirefox ESR 31が2014年7月22日(米国時間。以下同じ)にリリースされ、ESR 24のサポート終了が10月14日に迫っている。もともといくつかリリースを重ねた段階で打ち切られる予定だったFirefox ESRだが、最近、今後も継続していくことが発表された。Chromeが企業向けサポートを提供する中、少なくとも200万のユーザーがいるというチャンネルを維持するのは賢明だろう。

では、Firefox ESR 24のサポートが切れた時点でESR 31に移行するとして、両者の目立った違いは何だろうか。Mike's Musings「The Next Firefox ESR (31) is Almost Here」によれば、まずはAustralisだ。ユーザーインターフェイスが大幅に刷新されたわけだが、馴染めないのであれば、Classic Theme Restorer (Customize Australis) というアドオンを利用すれば、かなりの程度までAustralis以前の姿に戻すことができる。

また、Firefox SyncがFirefoxアカウントベースの新しいものに置き換えられたほか、Configurable Security Policies(CSP)も削除されている。ただし、CSPの削除は企業ユーザーへの影響が大きいため、Webページからローカルファイルにリンクする機能は残された。

以上に加え、プラグインがデフォルトでクリック・トゥ・プレイ化(CtP)されたことも大きい。CtPとは、Webページが読み込まれた時点ではプラグインが自動的に有効にならず、ユーザーがプラグインのコントロールする領域をクリック(スマートフォンやタブレットではタッチ)した時点で初めてプラグインが有効になる仕組みのことだ。例外的に、Adobe Flash Playerプラグインや、アドオンにバンドルされたプラグイン(Bug 982101)は常に有効になるよう設定されている。

CtPを解除するには

CtPのデフォルト化に伴い、企業ユーザーが自社で開発したプラグインをFirefoxにインストールしている場合も、自動的に有効にならなくなってしまう。いちおうFirefox本体にはCtPの例外を認めるホワイトリストの仕組みが備わっているものの、これはプラグインを開発して一般向けに公開している企業を念頭に置いて、Web標準を用いた代替策を講じるまでの猶予期間を提供する目的で設けられたものだ。ホワイトリストに掲載されるには、申込み時にNPAPIベースのプラグインからの移行プランを示す必要があるうえ、掲載期間は30週間で、24週間の延長が1回だけ可能という厳しい制限付き。それでいて掲載の可否はMozillaの自由裁量に委ねられ、掲載期間中に外されることさえあり得る。実際のリストを見ても大手企業が多く、内製のプラグインを対象にしたものでないことは明らかだ。

幸い、Mike's Musings「Plugins Click-To-Play by Default in Firefox 31 ESR」では、内製のプラグインにも適用可能な4つの方法が紹介されている。

1つ目は、about:configにおいてplugin.default.stateの設定値を2に変更する方法だ。こうすることで、CtPはデフォルトでなくなる。言い換えれば、従来どおり全プラグインが読み込み時に自動的に有効になる。

2つ目は、plugin.state.FILENAMEの設定値を追加する方法だ。FILENAMEにはプラグインのファイル名を小文字で記載し、末尾の数字などは付けない。たとえばWindows版でplugin.state.nppdfの設定項目を追加し、値を2に設定すると、Adobe AcrobatプラグインだけがCtPから外れる。

3つ目は、CCK2 Wizardというアドオンを利用して、設定をカスタマイズしたFirefoxを作成し、特定のドメインを対象にプラグインを有効化する方法だ。ちなみに、このアドオンの作者は、上記Mike's Musingsのブログ主である。

4つ目は、Click-to-Play Managerというアドオンを利用し、特定のドメインを対象にプラグインを有効化する方法だ。

手っ取り早く対処するなら1つ目の方法だが、セキュリティを犠牲にしないためには他の選択肢も考慮に値するだろう。いずれにせよ、対処法は確立されており、CtPはFirefox ESR 31に移行する際の障害にはならないといえる。


Firefox 31からアップデートする際のトラブルなど

$
0
0

Firefox 32がリリースされたので、Firefox 31から手動でアップデートしようとしたのだが、「Mozilla Firefoxについて」ウィンドウで更新のボタンをクリックしても何も起きない、という事態に見舞われた。ボタンが押せないのでダウンロードが始まらず、先へ進めないのだ。

ふと思いついて、アドオンマネージャから拡張機能のNorton Toolbarを無効化してみたところ、更新ファイルがダウンロードされ、正常にアップデートできた。Firefox本体の問題ならさすがにリリース前のテストで引っかかるはずなので、アドオンが怪しい。中でも、本体の動作に干渉するタイプのものが原因だろうと目星を付けたわけだが、当たりだったようだ。

同じような症状でお困りの方は、一度アドオンマネージャを眺めてみるといいかもしれない。セキュリティ関係のアプリケーションなど、外部のソフトウェアと同時にインストールされるタイプの拡張機能には要注意である(具体的な手順はアドオンの削除 | Firefox ヘルプを参照)。

以前の記事に書いたが、Mozillaの調査によって、ユーザーが自動アップデートの設定を変更していないのに、なぜかアップデートできない事態が起きていることが判明している。その原因の一端が今回の件で垣間見えた気がする。

ちなみに、アップデート後のFirefox 32ではコンテキストメニュー(右クリックメニュー)の「戻る」や「進む」などの項目がアイコン化されている(Bug 1000513)のだが、拡張機能のMenu Editorを使用していると正しく表示されず、場合によってはFirefox本体の動作も不安定になる。Menu Editorは、Firefox 4のリリース後なかなかバージョンアップしなかったという経緯があり、今回も迅速な対応は望めないだろう。これを期にMenu Wizardに乗り換えてみてはどうだろうか。

Firefox 32の新しいHTTPキャッシュ(cache v2)とは

$
0
0

構想から2年半以上をかけてリリース版へ

Firefox 32では、新しいHTTPキャッシュ(以下cache v2)が標準で有効化された。リリースノートでは、世代別GCの統合よりも上の、トップの項目に挙げられており、Mozillaがこの機能を重視していることがわかる。実際にも、特にAndroid版Firefoxを使っているとコンテンツの表示がスムーズになっているのを体感できる。

cache v2がブラウジングに与える影響は大きい。過去に閲覧したWebページを再度閲覧する場合、キャッシュの性能次第で表示の完了までにかかる時間が変わってくるのはもちろんだが、通常、Webページを閲覧した時点でディスク上にキャッシュが生成されるようになっているため、この処理が遅いとFirefox本体の動作の足を引っ張ることになる。

その影響の大きさゆえに、cache v2の設計と実装は慎重に進められた。最初に構想が明らかにされたのは、2012年1月25日(米国時間。以下同じ)、mozilla.dev.tech.networkの"Upcoming Cache Work"というスレッドにおいてである。そこでは、以下のようなコンセプトが示された。

  • ロックの競合を減らす。キャッシュ全体が1つの大きなロックによって保護されているのを、より粒度の細かなものとする。
  • メインスレッドとキャッシュスレッドの間でやりとりする時間を減らす。
  • キャッシュ内の並列性を高める。スレッドを2つ以上にしてI/O処理のボトルネックを解消する。
  • ディスクキャッシュのフォーマットを変更し、キャッシュの大規模な削除を少なくする。
  • クラッシュ後の再起動時にキャッシュ全体を削除しなくても済むようにする。
  • エントリをより効率的に保存する。エントリとメタデータを1つのファイルに統合する。

その後、MozillaWikiのNecko/Cache/Plansがいろいろと修正され、履歴によれば、cache v2の設計がほぼ固まったのは、2013年3月ころとみられる。デザインの目標から主なものを挙げてみよう。

  1. キャッシュのためのAPIをバージョン化し、アップデートを容易にする。
  2. すべてのAPIを非同期化し、メインスレッドのロックを防ぐ。
  3. 異常終了してもキャッシュ全体を破棄しない。
  4. gzip圧縮をサポート。
  5. ディスクキャッシュが完全に無効化されてもブラウザが正常に動作する。
  6. 通信待ちを減らす。

Firefox 27 Nightlyにcache v2が実装されたのは、2013年9月20日のことだ(Bug 913807)。この時点では、まだデフォルトでは無効化されていた。開発者のHonza Bambas氏は、mayhemer's blogの記事"Mozilla Firefox new HTTP cache is live!"の中で、クラッシュや(プロセスの)キル後もキャッシュエントリが維持され、UIのハングも起きないという点を強調していた。また、2013年第4四半期中にはデフォルトで有効化されるとも述べており、そのとおりであれば、2014年第1四半期か、遅くとも第2四半期の初めには、リリース版にcache v2が投入されていたはずだ。

ところが、cache v2に切り替えてもクラッシュが起きないようにするなど、仕上げに時間がかかったため、2013年12月10日時点で、デフォルト有効化の時期はFirefox 31へと延期された。しかも、この予定も若干ずれ込み、リリース版でも有効化されることになったのは、Firefox 32の開発サイクルに入った後の2014年5月16日であった(Bug 913806)。

Firefox 32が2014年9月2日にリリースされ、cache v2は、構想から実に2年半以上を経て一般ユーザーの手元に届くことになった。設計が固まってからでさえ、1年半近い期間が経過しており、大きなプロジェクトであったことがわかる。

cache v2の特長

実装されたcache v2がどのようなものか、mayhemer's blogの記事などを参照しつつ、より詳しく見ていこう。

処理の非同期化

"New Firefox HTTP cache backend, first impressions"によれば、cache v2において、ファイルを開き、データを読み出し、あるいは書き込むI/O処理は、単一のバックグラウンドスレッドで行われる。つまり、Firefox本体が動作するメインスレッドとは別のスレッドで動作するため、メインスレッドの処理はブロックされなくて済む。

また、"New Firefox HTTP cache backend - story continues"によれば、処理に優先度を付けてスケジューリングができるようにもなっている。たとえば、レンダリングをブロックするファイルを開いてデータを読み出す処理は最優先となる一方、書き込みは最後に行われるという。このように、キャッシュへの書き込み処理を後回しにできるため、初めて閲覧したWebページでも表示時間が短縮される。

ちなみに、Firefox 33では、ディスクへの書き込み未了のデータが一定サイズに達すると新たな書き込みを中止する仕組みが導入された(Bug 1013395)。ただし、HTML、CSS、フォント、JavaScriptはそれ以外のデータとは別枠になり、書き込みの優先度が高く設定されている。

フォーマットの変更と新しいインデックス

ディスクキャッシュのフォーマットも変更された。各URLごとに独立したファイルが、いかにサイズが小さくとも生成される。各ファイルは、自己コントロール用のハッシュを備えているため、fsync命令を使わなくても正確性をチェックできる。ファイルを独立させることで、クラッシュ時に破損する範囲を限定するようにもなっているとみられる。

また、多数のキャッシュエントリを管理するため、新しいインデックスの仕組みも導入されている(Bug 923016)。ファイルの探索に要する時間が短縮されているようだ。

データの先読み

"New Firefox HTTP cache now enabled on Nightly builds"によれば、cache v2にはデータを先読みする仕組みがある(Bug 913819)。画像などサイズの大きなコンテンツの読み込みが高速化される。先読みは、256KBのチャンクを単位として行われ(Bug 988318)、デフォルトでは4チャンクすなわち1MBのデータが先読みされる。もっとも、browser.cache.disk.preload_chunk_countの設定を4よりも大きくすれば、このデータ量は大きくなる。

Firefox 33では、ブラウザセッション中で使用済みのエントリについては、先読みのタイミングを早める調整が加えられており(Bug 1013587)、表示の高速化が期待できる。

メタデータ用のメモリプール

cache v2には、最近読み込まれたキャッシュエントリのメタデータ(レスポンスヘッダなど)を保管しておくメモリプールが用意されている(Bug 986179)。キャッシュスレッドによって管理されており、プール内にメタデータのあるキャッシュは即座に再利用される仕組みのようだ。プールのサイズは、デフォルトでは250KBとなっているが、browser.cache.disk.metadata_memory_limitの設定を250から増減させることによって変更できる。

メモリプールが一杯になったときは、古いデータから順に追い出される(パージされる)ことになる。デフォルトでは、6時間を経過したデータは古いものとして扱われるが、これもbrowser.cache.frecency_half_life_hoursの設定によって変更が可能だ(Bug 1012327)。なお、アクセス中のエントリを誤ってパージしない仕組みもある(Bug 942835)。

ちなみに、従来どおりメモリキャッシュも存在しており、こちらはbrowser.cache.memory.capacityの最適な設定が自動的に検出されるようになっている。

ページ読み込みの高速化

以上の機能が合わさることで、ページの読み込みは高速化された。前掲"New Firefox HTTP cache now enabled on Nightly builds"でHonza Bambas氏が示しているところによれば、キャッシュされていないページを読み込んだときに表示完了までに要する時間が明らかに短縮され、キャッシュされたページを閲覧する場合も、読み込みが若干速くなっている。つまり、これまではディスクにデータを蓄える処理が全体の足を引っ張っていたが、cache v2ではそのボトルネックが解消されたわけだ。

f:id:Rockridge:20140915160404p:plain

ディスク使用量の上限をスマートに設定

cache v2におけるディスクキャッシュの上限は、デスクトップ版が350MB、Android版が200MBとなっている(Bug 987829)。旧HTTPキャッシュ(以下cache v1)におけるディスクキャッシュの上限は、Firefox 17以降、デスクトップ版が1GB、Android版が200MBだった(Bug 709297)ので、デスクトップ版の上限がかなり低下した。

キャッシュサイズは、ディスクの空き容量に応じて10MB単位で自動的に決定される。空き容量が100GBを超えているときは、直ちに上限値が設定されるが、そうでない場合は計算が行われる。25GBを超える領域の0.5%、7GBを超える25GB以下の領域の1%、500MBを超える7GB以下の領域の5%が順次加算されていき、さらにデスクトップ版では500MBまでの領域の40%が加算されて下限が50MBとなるが、Android版ではストレージのフットプリントを考慮し、500MBまでの領域の20%が加算されて下限が10MBとなる。

古いエントリを適切に消去

cache v2では、保存するデータがディスクキャッシュの上限に達した場合、不要なエントリから適切に排除されるようになっている(Bug 913808)。エントリの選別にはfrecencyと呼ばれるアルゴリズムが採用されており、最近保存されたエントリや、頻繁に再利用されるエントリは残る仕組みだ。

キャッシュエントリをすべて削除する際は、新しいディレクトリを作成してそちらをアクティブ化し、古いディレクトリを削除する(Bug 968106)。しかも、ディレクトリの削除処理は低い優先度で実行される(Bug 968101)ため、Firefox本体への負担が少ない。

cache v2に切り替わることで、cache v1のデータが残ってしまうが、これもFirefox側で自動的に削除してくれる(Bug 1014394Bug 1045886)。特にAndroid版では、古いデータが残っていると貴重なストレージ容量を圧迫することになるため、重要な機能といえよう。

旧APIは廃止

以上のようにcache v2はcache v1とは別物であり、これに伴ってAPI(HTTP Cache | MDN参照)も全面的に刷新されたため、Firefox 32では、互換性のないcache v1のAPI群は廃止された。

APIが廃止になるとキャッシュからファイルを拾うタイプのアドオンなどに影響が出そうだが、mayhemer's blog"Firefox HTTP cache v1 API disabled"のコメント欄を見ると、2014年6月の時点で、Mozilla Add-ons(AMO)に登録されているアドオンについてはソースコードの調査が行われたらしく、現在もメンテナンスがされているアドオンの中で、マイグレーションが必要なものは見当たらなかったという。

Windows版Firefox 33でクラッシュやハングが多くなったと感じたら(追記あり)

$
0
0

まもなくFirefox 33がリリースされるが、Windows版Firefox 33では、OMTC(Off Main Thread Compositing)と呼ばれる機能が有効化されている(Bug 1074045)。これは、描画の前段階としてWebページ内の各要素から成る複数のレイヤーを一つにまとめる処理を、メインスレッドから独立したcompositorスレッドで行うというものだ(参照1参照2参照3)。

OMTCが有効化されることで、Firefox本体の応答性が高まり、キビキビとした動作となることが期待される一方、これまでとは処理プロセスが変わるため、クラッシュやハングの原因となる可能性がある。この点についてMozillaは、Firefox 32でOMTCを有効化することを見合わせ、Beta版で判明したバグを潰していくことによって、目立ったクラッシュ率の増加などが起きないようにしているが、いかんせんBeta版とリリース版ではユーザーの規模が全く違う(30倍以上)。リリース前には判明しなかったバグが出てくることもあるだろう。

Firefox 32のときと比べてクラッシュやハングが多くなったと感じた場合、手動でOMTCの設定を無効化して様子を見るのも手だ。about:configの設定画面でlayers.offmainthreadcomposition.enabledlayers.async-video.enabledの設定をそれぞれfalseに変更すれば、OMTCは無効化される。

それでも症状が治まらない場合、別の原因が考えられる。そのときは、Firefoxヘルプの「Firefox がクラッシュする」と「Firefox がハングアップまたは応答なしになる」を参照して対処するのがよいだろう。

(14/10/25追記)
筆者の予想とは少し違って、Firefox 33のリリース後、一部の環境で起動時にコンテンツ領域が真っ黒になるバグ(Bug 1083071)が発生していたが、この問題に対処したFirefox 33.0.1がリリースされた

対処の中身だが、単純に本記事で紹介した設定をオフにしたわけではない。OMTCは、Firefoxが今後マルチプロセス化する際に欠かせない機能の1つとされており、Mozillaとしては後戻りすることは避けたかった。

そこで、当初、一部の比較的古いグラフィックス・ドライバ(Intel製)を使用する環境で、グラフィックスのハードウェア・アクセラレーションを無効化する方法が検討されたのだが、結局この方法の採用は見送られた。新しいドライバでも問題が起きる可能性があった上、少なくないユーザーにパフォーマンスの低下という犠牲を強いることにもなるからだ。

実際に採用されたのは、Direct3D 11が正常に機能するかをチェックし、問題があればDirect3D 9を使うようにするという方法である。メーカー製PCがIntelのGPUを搭載している場合、ユーザーはメーカーが提供しない限りグラフィックス・ドライバを更新できない(システム上は可能でもサポート対象外になる)ことが多いだろうから、Mozillaのアプローチは正しいと思う。

最近のFirefox Nightlyで困ったこと(追記あり)

$
0
0

Firefox Nightly 36を使っていて困ったことが2つある。1つは暫定的に問題を回避したが、もう1つはいまだに悩みの種だ。

Flashプラグインのクラッシュが頻発

Nightlyで新しいWebページを開いた際、Flashコンテンツが含まれていると、しばらくブラウザごとハングした後でプラグインがクラッシュする。たまにクラッシュしないこともあるが、たいていの場合は使用に堪えない。

原因は、Windows版Nightlyのビルド環境がVisual Studio 2013(VS2013)に移行したこと(Bug 1061335)にある。従来のVS2010と比較してビルド時間が短縮され、リンク時に仮想メモリを消費し尽くす問題も解決される(参照)など、移行のメリットは大きいのだが、Flashプラグインが保護モードでうまく動作しないという思わぬ副作用があった。

開発元のAdobeも問題を把握しており(Bug 1082670)、Flashプラグインの修正によって解決されればよかったのだが、残念ながら近いうちにアップデートが提供される可能性は低い。Adobeの開発者とみられる人物が、「VS2010に戻すという選択肢もあるので喫緊の課題とはいえない。Flash PlayerをVS2013環境にアップデートして解決することは短期的にはあり得ない。」という趣旨のコメントをしているからだ。

Flashプラグインを無効化すればクラッシュなどは起きなくなるが、それでは解決にならない。広告はともかく、動画コンテンツはFlashを必須とするものがまだまだ多い。YouTubeのようにHTML5プレイヤーを別途提供しているところは少なく、動画でニュースを見ることができないのは相当に不便だ。

そこで、Flashの保護モードを解除することにした。具体的な手順は、もずはっく日記「Firefox上で、Flash Playerが遅い、ハングアップする、日本語入力できない、という方には、保護モードの解除をお勧めします」が詳しいので、そちらを参照してほしい。

なお、Windowsのユーザー環境変数に変数名「MOZ_DISABLE_OOP_PLUGINS」および値「1」を設定したうえでブラウザを(再)起動することで、プラグインの別プロセス化を解除する手もあるが、Flash以外のプラグインにも影響するのであまりおすすめできない。

保護モードを解除すると安全性は低下してしまうが、利便性とのバランスを考慮した結果である。今のところはMozillaが開発中のShumwayも選択肢には入らない。年内にはNightlyで有効化されそうではあるものの、当初はホワイトリスト方式で様子を見るとされており、Flashを完全に代替するにはほど遠いからだ。

とはいえ、Mozillaもリリース版までには何らかの手を打つ必要がありそうだ。影響の大きさからすると、Adobe側の対応が遅れた場合、ビルド環境をVS2010に戻すことも検討に値しよう。

(14/10/26追記)
上記のBug 1082670は修正された。幸い、Mozilla側で比較的容易に対処できる問題だったようで、クラッシュレポータのコードがVS2013との組み合わせでうまく動作していなかった点が直された結果、ハングやクラッシュは起きなくなった。

これを受けて筆者の環境も、Flashプラグインの保護モードを再度有効化した。実のところ保護モード解除中は、複数のタブ内でFlashが動作している場合に、1つのタブを閉じると他のタブでFlashがクラッシュすることが増えていたので困っていた。しかも、保護モードは全プロファイルに共通のため、今まで問題が出ていなかったAuroraなども使い勝手が悪くなっていた。その意味で、Nightlyで修正してくれたのはありがたい。

どうもAdobeは保護モード解除時の動作の安定性を十分に考慮していない節がある。保護モードの解除は、あくまで緊急避難的な措置として位置づけるのがよさそうだ。

はてなブックマーク拡張が機能しない

Firefox Nightly 36では、はてなブックマーク拡張が全く使えない状態になっている。Webページを表示してもブックマーク数が取得されないし、ブックマークに追加しようとボタンを押しても反応がない。しかも、カスタマイズモードに入ると「追加のツールと機能」に一切アイコンが表示されない。Build 20141018030201と新規プロファイルを組み合わせて、プラグインもすべて無効化してみたが、以下のスクリーンショットのように状況は変わらない。なお、上記のはてなブックマーク拡張は、以前に紹介した非公式修正版である。

f:id:Rockridge:20141020001923p:plain

実はこの現象、Nightly 35の途中で発生していたのだが、不思議なことにAurora 35では発生しない。Aurora 34を35にアップデートした後も、はてなブックマーク拡張は普通に使えている。Nightlyだけで有効化されている何らかの機能が影響しているのだろうか。とにかく、解決法が見つからないので、はてなブックマーク拡張は無効化した。

はてなが拡張機能の開発に取り組んでいるのであれば、GitHubのIssuesに登録するところだが、devブランチを見ても2013年9月25日が最終更新日となっており、1年以上も動きがないありさまだ。Firefox 29以降にちゃんと対応するには修正が必要だとわかっているはずなのに、どうして開発を再開しないのか。

担当者がいないとか、担当者はいるが他の仕事が忙しくて手が回らないとか、いろいろ理由は考えられるが、いずれにしろマネージメントがしっかりしていれば解決できる問題だろう。アプリスマートフォン版だけでなく、拡張機能のユーザーにも目を向けてほしいものだ。

(14/12/16追記)
Firefoxアドオンをアップデートしました - はてなブックマーク開発ブログで告知されているとおり、公式版のはてなブックマーク拡張がバージョン2.3.6.1へとアップデートされた。筆者の手元のNightly 37で動作することを確認した。

64bit版Firefoxへの道のり(追記あり)

$
0
0

祝10周年

2014年11月9日にFirefoxはバージョン1.0のリリースから10周年を迎えた。これを受けて10日以降、「忘れる忘却」ボタンの追加などユーザーのプライバシーに配慮したFirefox 33.1がリリースされ、Firefox AuroraがWeb開発者向けにリニューアルされて「Firefox for DevelopersFirefox Developer Edition」の名称で提供されるなど、さまざまなMozillaの企画が実行されていく。

10周年記念キャンペーンの一環として、Windowsユーザー向けに64bit版Firefoxのプレビューが提供されるとみられる。本記事では64bit版Firefoxの正式提供に向けた動きをまとめてみたい。

(14/11/10追記)
確定したブランド名を見落としていたので修正(Bug 1072181)。ボタン名もリリース版の表記に合わせた。

正式提供が決まるまで

振り返ってみると、Mozillaは比較的早くから64bit版Firefoxの正式提供を視野に入れていた。2010年4月ころにプロジェクトが始まり、同年5月末には、ビルドが自動化されたWindows向け64bit版Firefoxが、テスト目的で公開されている("Pre-release Firefox Windows 64-bit builds now available (testing purposes)")。どれくらい前かというと、Firefox 3.6のリリースがその年の1月だ。次のFirefox 4はまだBeta版にも至っておらず、バージョンも3.7になるとされていた。上記のテスト版も、動作させるには別途Microsoft Visual C++ 2010 Redistributable Package (x64) のインストールが必要であり、対象ユーザーが限定されていることは明らかだった。

2011年3月にFirefox 4がリリースされるまでは、プロジェクトは少しずつしか進まなかったが、Mozilla Corp.のAsa Dotzler氏(同年6月にDirector, Firefox Productに就任)が、64bit版Firefoxの提供に積極的だったこともあり、同年7月には32bit版と同様にビルドシステムが組まれ、ユーザーがNightlyビルドを継続的に使用してテストできるところまでこぎ着けた("Firefox and Windows 64-bit builds (testing version; not a release version)")。

2011年10月には、Firefoxの主要開発者たちの間で、Windows向け64bit版Firefoxを提供するメリットとデメリットが議論されている("Firefox 64-bit for Windows: data gathering")。そこでは、仮想メモリ不足でクラッシュすることが減り、全体としてパフォーマンスが改善し、セキュリティも強化されることがメリットとして、メモリ消費量が増加し、JavaScript JITの性能が低下し、プラグインやバイナリベースの拡張機能が動作しないことなどがデメリットとして、それぞれ挙げられていた。Firefox 7のころのことである。

64bit版に向けた積極的な動きは、Linux向けFirefoxに関しても見られた。Firefox 15がリリースされた直後の2012年8月末、ビルドやテストのキャパシティを確保するため、32bit版または64bit版のいずれかに絞るべきではないかとの議論が開発者たちの間でなされ、その際、32bit版をフェードアウトさせる方向で検討すべきとの意見が多数を占めた("Future of Linux64 support")。

ところが、Firefox 17がリリースされる直前の2012年11月17日(米国時間。以下同じ)、突如としてWindows向け64bit版Firefox Nightlyの提供を停止するとアナウンスされた("Turning off win64 builds")。2013年中に正式版リリースの予定がなく、また、プラグインのサポートも進まない中、Firefox for MetroやFirefox OSの開発に集中する必要があるというのがその理由である。

もっとも、このアナウンスに対するユーザーの反発は大きく、Mozillaは軌道修正を余儀なくされる。大量のタブを開くため32bit版ではメモリが足りないというユーザーにも配慮して、現行の64bit版ユーザーにはいったん自動アップデートを通じて32bit版を提供するが、その後も64bit版のビルドやアップデートは提供を続けるとした("Update on turning off 64-bit Windows builds")。つまり、強制移行後に64bit版を改めてインストールすれば、使い続けることができるというわけだ。ただし、64bit版の自動テストは無効化され、ビルドもmozilla-centralリポジトリからNightlyを作成するときに限られる(Bug 814009)ことになったため、安定して動作しない可能性は高まった。

Mozillaが開発の優先度を下げた結果、その後1年以上にわたって64bit版の話題は途切れる。ちなみに、Firefox 28がリリースされる直前の2014年3月中旬には、Firefox for Metroの開発が先に中止されてしまった

しかし、ユーザーからは見えないところで、2014年4月以降、事態が動き始めていた。Mozilla Corp.のJavaun Moradi氏(同年3月にProduct Manager, Firefoxに就任)がWindows向け64bit版Firefoxのローンチに向けた評価を開始し、Firefox 30のリリースが近づく同年6月4日、その旨を明らかにしたのだ。

そして、2014年9月中旬ころ、Mozilla Corp.のJohnathan Nightingale氏(Vice President, Firefox)やGavin Sharp氏(Firefox Dev Lead)などの最高幹部を交えた会議で、Windows向け64bit版Firefoxを正式に提供することが決定された。このとき、Firefoxのバージョンは32に達していた。

Mozillaが64bit版Firefoxを提供する理由

Mozillaが再び64bit版Firefoxの提供に積極的になった背景には、競合他社の動きや、マーケットの変化があった。当初はわずか1%のアーリーアダプターが使用するだけのものになるにせよ、提供すること自体に意義を見出したのである。

Firefox/win64 - MozillaWiki*1に記載されているとおり、競合他社の動きとは、Internet ExplorerとChromeが既に64bit版を提供していることを指す。特にGoogleはChrome 37でオプトイン方式とはいえWindows向けに安定版を提供し、Chrome 39ではMacユーザーを自動アップデートを通じて64bit版に移行させる。しかも64bit化はスピード、安定性、セキュリティのすべてにメリットがあるとアナウンスしており、Mozillaとしても無視はできない。

マーケットの変化とは、ゲーム開発者がブラウザベースのゲームに本格的に取り組み始めていることを指す。MozillaはゲームがWebのキラーコンテンツとなり得ることを十分に理解しており、オープンなWeb技術を用いた高品質のゲームが豊富に提供されるようになれば、特定のOSに囲い込まれるのを防ぐことができると考えている。そのためには、ブラウザ自体が信頼できるプラットフォームとなる必要があり、64bit版のパフォーマンスや安定性が信頼性の向上に役立つというわけだ。64bit版Firefoxを正式に提供することで、Mozillaはゲームを重視していると開発者に対して行動で示すことができる。

また、64bit版Firefoxの提供は、MozillaにとってNPAPIプラグインとバイナリベースの拡張機能のサポート状況を大きく変えるチャンスとなる。これらはFirefoxの安定性を損ない、マルウェアの温床ともなってきたものだ。

64bit版Firefoxの提供プラン

Windows向け64bit版Firefoxは、ユーザーに対し段階的に提供される。10周年記念のリリースはその第一歩であり、スタンドアローン型のインストーラでNightly(36)のみならずAurora(35)やBeta(34)のコードをベースにしたビルドも提供される一方、自動アップデートには対応しないようだ。

本格的な提供は、Firefox 37(Nightlyチャンネル入りが2014年11月25日、リリースが2015年3月31日を予定)からとなる。このフェーズ1では、自動テストを経たビルドが作成され、スタンドアローン型のインストーラが"what's new"ページで提供され、自動アップデートにも対応するが、Flashプラグインやバイナリベースの拡張機能のサポートは保証されない。

時期は未定だが、フェーズ2になるとスタブインストーラに64bit版が統合され、ユーザーはインストール時にこれを選択できるようになる。FlashはShumwayまたはAdobeがサポートする64bit版プラグインによってカバーし、拡張機能のサポートも拡大する。バイナリベースの拡張機能にはjs-ctypesによるものとXPCOMによるものの2種類が存在しており、Firefoxのマルチプロセス化(e10s)に伴ってXPCOMによるものは廃止される見込みだが、js-ctypesによるものは少なくとも限定的なサポートを維持するということだろう。

フェーズ3に至ると、64bit版Firefoxは自動アップデートによって32bit版ユーザーに提供される。ユーザーが明示的に32bit版の提供を求めない限り、64bit版へと移行することになる。とはいえ、32bit版Windowsを利用するユーザーに64bit版Firefoxを提供するわけにはいかないので、そこはインストーラが判別するはずだ。

気になるのはその先、32bit版の提供終了についてだが、今のところ情報はない。現時点でFirefoxユーザーにおける64bit版Windowsの利用率は50%とのことなので、MicrosoftがWindows XPのサポートを終えた後もMozillaがXP SP2以降をシステム要件に残していることを考慮すると、かなり長期にわたって32bit版の提供は続けるのではないか。ただ、GoogleがMac OSでは64bit版Chromeを強く推しているので、こちらはプラグインのサポートなどに目途がつけば、64bit版への一本化が先行するかもしれない。

(14/12/07追記)
現在の状況についてだが、自動アップデートに対応しない10周年記念リリース(いわばフェーズ0)は発表されず、代わりに上記のフェーズ1が前倒しされた。米国時間で11月10日からFirefox Nightly BuildsのWebサイトで64bit版のフルインストーラがダウンロード可能になっている。

ただし、サポート対象がWindows 7以降である点に注意が必要だ。Vista以前だとインストールも起動もできなくなっている(Bug 1093741Bug 1094013)。

*1:2014年9月の会議の議事録的なもの。同じ会議の結果を記録したものとして、Firefox/Win64 - MozillaWikiがある。

Firefox Developer EditionをただのAuroraとして使うには

$
0
0

Firefox Auroraがリニューアルされ、開発者専用ブラウザを謳うFirefox Developer Edition(以下FxDevEdition)がリリースされた(日本語版)。Web開発者のニーズに合わせて作られたFirefoxの特別版であり、リリース版とは異なるプロファイルが自動的に作成され、実験的な開発ツールが搭載され、Web開発者向けの設定になっているほか、テーマも独自のものとなっている(MDNの解説)。なお、設定画面もタブ化されている(In-Content Preferenceが有効化されている)。

Mozilla Hacksの記事によれば、FxDevEditionは、Web開発者のワークフローを合理化することに焦点を当てているという。Android版ChromeやiOS版Safariのリモートデバッグを可能にするValenceアドオンも標準で搭載しているとのことだ。

ところが、この「独自のテーマ」というやつがくせ者だ。黒を基調としたデザインなのだが、率直に言ってAustralisと調和がとれていない上、ツールバーなども見づらい。しかも、FxDevEditionはAuroraチャンネルのユーザーには自動アップデートで提供されるため、強制的に新デザインにされてしまう。

f:id:Rockridge:20141111010040p:plain

幸い、カスタマイズモードから簡単に解除できるようになっており、"Use Firefox Developer Edition Theme"のボタンをクリックすれば元のデザインに戻すことができる。

f:id:Rockridge:20141111010028p:plain

では、テーマ以外の機能についてはどうだろう。実は、これもabout:configから従来のものに戻せるようになっている。リニューアルしたとはいえ、FxDevEditionがAuroraチャンネルで提供されることに違いはない。そこで、設定で簡単に切り替えができるようにしておき、Betaチャンネルに移行する際、Mozilla自身に余計な手間がかからないようになっているわけだ。

設定の詳細はBug 1072181を見るとわかる。たとえば、上で紹介した独自のテーマの解除は、browser.devedition.theme.enabledの設定をfalseにした状態に当たる。

そのほか、browser.devedition.theme.showCustomizeButtonをfalseに、devtools.themeをlightに変更すればテーマ関係はOKだ。開発ツールに関しては、devtools.chrome.enableddevtools.debugger.remote-enabledをfalseに変更する。あと、Firefoxアカウントのデータを新プロファイルに移行するidentity.fxaccounts.migrateToDevEditionの設定もfalseに変更しておけば万全だろう。

Mozillaが想定している使い方ではないが、Auroraを従来どおり使い続けたいというニーズもあると思うので紹介しておく。

ブラウザが価値を担うということ

$
0
0

Mozillaの新戦略

Firefox10周年のお祝いムードが一段落したところで、今回のキャンペーンについて振り返ってみたい。Mozillaは、Firefoxと特定の価値とを強く結びつけるという大きな一歩を踏み出したように思われるが、本当にそれでよかったのだろうか。

たとえば、Chris Beard氏(Mozilla Corporation CEO)の記事"Celebrating Choice, Control and Independence On the Web"を見てみよう。そこでは、FirefoxがMicrosoftの支配するWebを変え、今日では何億人もの人々に自立と機会を提供しているとして、支持を求めるメッセージが打ち出されている。また、同記事内に掲載されている大型バナーには、"CHOOSE INDEPENDENT. CHOOSE FIREFOX." (自立を選ぼう。Firefoxを選ぼう。)というフレーズが見える。ちなみに、ここでいうindependenceだが、既に何かに支配されている状態を前提にするときは「独立」と訳すのが適当だろうが、支配されるのを防ぐという文脈では、依存しないという趣旨で「自立」と訳すべきだと考えるので、本記事ではそのようにしている。

上記のようなMozillaのメッセージを強く印象づけるのが、キャンペーン用動画だ。0:50ころからの台詞は、個人的なfreedomと集団的なindependenceに焦点を当てたものになっている。日本語字幕は字幕という表現上の制約の中で翻訳されたものなので、私訳を付す。


Firefox: Choose Independent - YouTube

(原文)
Choosing Firefox isn't just choosing a browser.
It's a vote for personal freedom.
It's how we keep our independence online burning bright.

(日本語字幕)
Firefoxを選ぶこと。それは単なるブラウザ選択ではありません。
個人の自由を宣言することでもあります。
みんなのインターネットを守り、より明るく輝かせるために。

(私訳)
Firefoxを選ぶことは、単にブラウザを選ぶことだけにとどまりません。
個人の自由に賛意を示すことであり、私たちがオンライン上の自立性を明るく輝かせ続けるための手段でもあるのです。

Mozillaが念頭に置いているWebの状況については、Andreas Gal氏(Mozilla Corporation CTO)が"10 Years of Firefox and Innovation for the Web Platform"という記事の中で、簡潔に指摘している。

10 years ago, Mozilla started a long journey to set the Web free of Microsoft’s proprietary control, and today we have largely achieved that goal. The next phase of the struggle for an open Web is mobile where a new duopoly has arisen: iOS and Android.

10年前、MozillaはMicrosoftによるプロプライエタリな支配からWebを解放するという長い道のりを歩み始めました。そして今日、私たちはその目標をおおむね達成しました。オープンなWebのため次に取り組むべき分野は、モバイルです。そこでは、iOSとAndroidという新しい複占が生まれています。

つまり、オープンなWebを守るためには、常に選択肢が確保されている必要があるけれども、そうした選択肢は、現に多くの人に選択されているという事実によって支えられなければ、長くは保たない。Firefoxを選ぶことでWebの自由を支えてほしいというのが、Mozillaのいわんとするところだと思われる。筆者も、オープンなWebを守ることが大事だという点に関しては全く異論がない。

新戦略のリスク

"Doing good is part of our code."のフレーズに象徴されるように、Mozillaコミュニティが価値を担うことは、これまでも行われてきた。

しかし、Firefoxに価値を担わせるべきだという意見が出てきたのは、それほど古いことではない。Gervase Markham氏(Mozilla Corporation Governator)が2011年7月に発表した記事"Mozilla’s Competitive Advantages"では、Chromeがシェアを伸ばしてきていることを踏まえ、製品を「新しく輝かしいもの」として宣伝するなら、ユーザーはより新しく、より輝かしいものを求めていくことになるので、コミュニティ、理想を掲げていること、友好的支持といった強みをアピールすべきだとの主張がなされている。逆にいえば、この時期までFirefoxは、その性能を中心にアピールしていたわけだ。

Internet ExplorerがWebで圧倒的なシェアを誇っていた時代、ほかのブラウザを選べること自体が、ユーザーにとっての自由だった。そして、ほかのブラウザを選ぶにあたって、いちいち動機を問われることはなかった。もちろん、ユーザーの中にはWebの自由を体現するものだと考えてFirefoxを選んだ人もいただろうが、多くは、シンプルで使いやすいとか、アドオンが魅力的だといった理由でFirefoxを選んでいたのではないか。

選択肢があるという状況自体が自由を意味し、ユーザーがさまざまな動機でFirefoxを選んでいることは、現在においても何ら変わりがない。にもかかわらず、Firefoxを選ぶことに価値を結びつけるとすれば、排他的な対外的イメージを生じることにならないだろうか。

考えてみてほしい。たとえば、Internet ExplorerやChromeやSafariを、標準でインストールされているという理由で使い続け、あるいは自らダウンロードして選ぶことは、それだけで不自由と依存を選んだことになるのだろうか。Android OSやChromiumの開発に外部から貢献したら、Googleの支配に手を貸したことになるのだろうか。もちろん、Mozillaがそのような極論を述べているわけではないが、Firefoxを選ぶことが自由と自立を選ぶことになると位置づければ、必然的に別の選択(不作為を含む)にネガティブな意味を付与することになる。

そうして生じた排他的なイメージは、キャンペーンの意図に反して、ユーザーを遠ざけることになりかねない。だからこそ、Mozillaコミュニティが価値を担い、そのような価値を実現する目的でFirefoxを開発する一方で、Firefox自体は価値中立的なソフトウェアであり続けるという役割分担が重要になってくる。

また、Firefoxが直接に価値を担うとすれば、開発に制約が生じ、エンジニア主導の開発体制が変質する可能性すらある。別の分野における最近の例を挙げると、2014年9月、文字コード規格であるUnicodeについて、顔や人体の絵文字が明るい肌色で実装されている現状への対策として、色調を変化させる符号が提案されたという。おそらく、技術的な観点からすれば、この提案は規格を複雑にし、新たに実装するコストを生じさせることになるし、過去の実装との互換性にも影響するかもしれない。とはいえ、文字が文化的に重要なものであることは誰も否定できないため、平等性の実現が優先されることになるだろう。

Mozillaコミュニティに関しては、「JavaScriptの父」Brendan Eich氏がMozilla CorporationのCEOの座を追われた事実も見逃せない。ニューヨーク・タイムズWeb版の記事"Personality and Change Inflamed Mozilla Crisis"にまとめられているとおり、Eich氏は、2008年、同性婚を禁じるカリフォルニア州憲法の改正条項(通称Proposition 8)に賛成して1,000ドルを寄付したのだが、2014年になってその行動を問題視された。Mozilla Corporationの方針ではなく、CEO個人の政治的信条が同性愛に不寛容なものであったこと自体が強い批判にさらされたのは、Mozillaコミュニティが一定の価値を担う以上、その中心にあるMozilla Corporationはその先頭に立たねばならず、同社の代表であるCEOもまた、そのような価値にふさわしい人物でなければならないと考えた人が少なくなかったからだろう。

Eich氏の身に起こったことは、Firefoxの開発プロセスにおいても起こりうる。FirefoxはWebの自由と自立を担っているのだから、ある機能を実装すべきだとか、実装するのはふさわしくないといった議論が沸き起こり、主要開発者たちにもコントロールできなくなる日が来るかもしれないのだ。やはり、Mozillaコミュニティが価値を担い、Firefox自体は価値中立性を保つ形にとどめておくほうが賢明ではないだろうか。


Firefox 34ではシャットダウン時のハングへの対策が強化されている

$
0
0

Windows版Firefoxをいったん終了させ、改めて起動した際、「Firefoxは起動していますが応答しません。新しいウィンドウを開くにはまず既存のFirefoxプロセスを終了させるか、コンピュータを再起動させなければなりません。」というメッセージを目にしたことはないだろうか。終了直前に、たくさんタブを開いていたり、Flashプラグインを利用したコンテンツ(動画など)を閲覧していたりすると、このメッセージを含む「Firefoxの終了」ダイアログを見る率が高いようだ。

f:id:Rockridge:20141201222520p:plain

単にシャットダウン処理が追いついていないだけであれば、少し間を置いてからFirefoxを起動し直せばよい。だが、Firefoxのプロセスがメモリ上に残ったまま、プロファイルがロックされてしまう場合がある。こうなると、上記メッセージのとおり、タスクマネージャーからFirefoxのタスクを終了させるか、PCを再起動させない限り、Firefoxを利用できなくなる。とはいえ、PC初心者にとってタスクマネージャーを利用する敷居は高いし、毎回PCを再起動するのもうっとうしい。

まもなくリリースされるFirefox 34では、「Firefoxの終了」ダイアログからこのゾンビ化したプロセスを終了させられるようになった(Bug 286355)。ダイアログ内に、「Firefoxは起動していますが応答しません。新しいウィンドウを開くには既存のFirefoxプロセスを終了させなければなりません。」というメッセージとともに、「Firefoxの終了」ボタンが表示される。これをクリックすると、応答不能のプロセスは強制終了となり、Firefoxが再起動する。ただし、この機能を利用できるのはWindows Vista以降のみだ。

f:id:Rockridge:20141201222555p:plain

また、Windows版に限らず、Firefox 34ではシャットダウン後に一定時間(初期設定では63秒)を超えてハングした状態が続くときは、強制的にクラッシュが起きるようになった(Bug 1038342)。もう少し厳密にいうと、シャットダウン処理の各ステップの経過時間がこの一定時間を超えると、クリーンアップの処理なしに直ちにプロセスがキルされるのだ。つまり、Firefoxがシャットダウン時にハングしても、ユーザーはしばらく待っていれば再びFirefoxを利用できるようになるわけだ。なお、about:configでtoolkit.asyncshutdown.crash_timeoutの設定を追加し、設定値(ミリ秒単位)を指定すれば、上記の時間を変更することも可能である(最短で3秒)。

いずれも地味ではあるが、シャットダウン時のハングがユーザーをFirefox嫌いにさせている可能性もあることを考えると、意外に重要な機能といえるのではないだろうか。

Firefoxアップデートのプッシュ第2弾が展開中か

$
0
0

旧バージョンのFirefoxユーザー向けにアップデートをプッシュ」の続報である。公式のアナウンスはないが、米国時間の2014年12月3日から4日にかけて、アドオン・ホットフィックスの第2弾が提供された模様だ(Bug 1061975)。

Mozilla Add-ons(AMO)で公開されているコードによれば、今回も対象となるOSはWindowsのみ。Firefox 10から29までのユーザーに対し、33.1.1が提供される。なのでFirefox ESR 31のユーザーには影響しないし、前回のホットフィックスでFirefox 30にアップデートしたユーザーにも影響しない。

前回のデプロイ時には、最初の24時間のデータが取れないという痛恨のミスがあったものの、各種のデータを総合して、約1150万人のユーザーにホットフィックスがインストールされ、うち600万人がアップデートしたと推計されている。今回は、Firefox 29のユーザーが新たに対象に含まれているとはいえ、前回ほどのインパクトはないだろう。

ホットフィックスを展開してもユーザーがアップデートに至らなかった理由として、ユーザーアカウント制御(UAC)の影響が大きいようだが、その対策やMac版ユーザーへの提供は今後の課題とみられる。

アップデートの通知をわかりやすくする(Firefox 35以降)

$
0
0

Firefox本体がバックグラウンドで更新されると、OSの通知機能を通じて、ユーザーにアップデートの準備ができた旨が知らされる。見逃しにくいように通知は大きめに表示されるものの、少し時間が経つと消えてしまう。ヘルプメニューから「Firefoxについて」を選択すれば更新の有無を確認できるとはいえ、わかにくさは否めない。

一方、開発者向けに公開されたFirefox Developer Editionでは、アップデートの通知方法が改良されている(Bug 1080406)。準備が完了した時点でバーガーボタンに星印が付され、メニューパネルを開くと再起動を促すメッセージが下部に表示される。見逃しがないうえ、Australisにもマッチした優れたデザインだ。

実はこの通知機能、Auroraチャンネル限定のものではないため(Bug 1100079)、Firefox 35 Betaでも設定を変えればすぐに利用可能だ。about:configの設定画面で、app.update.badgeの値をtrueに変更すればOK。なお、この機能をオンにしても従来型の通知はちゃんと出る。

f:id:Rockridge:20141214202940p:plain

個人的には、わかりやすいこの方式を早くデフォルトにしてほしいところ。アップデートに成功した場合だけでなく、失敗した場合もしっかりと通知されるので、Mozillaにとってもユーザーに対処を促すことができ、メリットは大きいと思うのだ。

Windows版Firefox 36 BetaほかでFlashの保護モードを無効化する実験が開始へ

$
0
0

Adobe Flash Playerプラグインの保護モードは、悪意のあるFlashコンテンツ(SWFファイル)からの攻撃を制限するセキュリティ機能だが、Mozillaが最近Windows上でFirefox 35 Betaを利用するユーザーの一部を対象に実験を行ったところ、保護モードを有効にした場合、クラッシュやハングの率が無効の場合の2倍になることが判明した。

この結果を受けて、Windows版Firefox 36 Beta、37 Auroraおよび38 NightlyでFlashの保護モードを無効化する実験が開始されることになった(Bug 1119941)。結果次第では、リリース版で保護モードがデフォルトで無効となる可能性もある。セキュリティと利便性のバランスをどのようにとるかは常に難問であり、今回の実験後もMozillaは難しい決断を迫られることになりそうだ。

ところで、こうした実験が可能になったのは、設定を変更するだけでFlashの保護モードを解除できる機能がFirefox 35以降に実装されたからだ(Bug 1108035)。従来、保護モードの解除は、Flashの設定ファイルの変更に加えてOSの再起動も必要という手間のかかるもので、複数のプロファイルを利用している場合はそのすべてに影響が出てしまっていた*1。新機能の実装後は、about:configの設定画面でdom.ipc.plugins.flash.disable-protected-modeをtrueにするだけでよくなり、そうした問題が一挙に解決された。

もっとも、本記事の執筆時点で、この機能の実装は不十分である*2。Windows 8/8.1で設定を変更しても保護モードが解除されないバグがあり(Bug 1112709)、これに対する修正を投入した後も、32bit版のWindows 7/8/8.1上では設定変更が機能しないままとなっている(Bug 1120747)。なお、64bit版Firefoxと64bit版Windows 8.1の組み合わせでもうまく機能しない(Bug 1113546)。

とはいえ、パッチの作成が進んでおり、修正も時間の問題だろう。上記のような実験を行う以上、Firefox 36 Betaも当然その修正の対象となる。つまり、最終的に保護モードが有効のまま維持されることになるにせよ、Firefox 36のリリース版でユーザーが簡単に保護モードを解除できるようになることは確かだ。

Firefox 38でルビ機能が有効化へ

$
0
0

長い間、Firefoxでルビを表示させるためには、HTML Rubyのようなアドオンをインストールする必要があった。しかし、Firefox 38(米国時間の2015年5月12日にリリース予定)では、本体のみでルビ表示に対応する。

HTMLパーザ側には、すでにFirefox 33の時点で最新の仕様が実装されていた(Bug 664104Intent to implement and ship: Improved ruby parsing in HTML with new tag omission rules)。CSS3 Rubyの実装も2014年9月ころから本格的に進められていたが、Firefox Nightly 38で設定が有効化されるに至った(Bug 1039006Intent to ship: CSS Ruby)。won't fix: ルビ on Firefoxで紹介されていたころは、有効化までにもう少し時間がかかりそうな印象だったが、案外早かった。

もっとも、正式版のリリースまでに何か重大な問題が発生すれば、設定は無効化されることになる。その場合でも、ユーザーがabout:configでlayout.css.ruby.enabledをtrueに戻すことは可能だ。

試しに、Firefox 38.0a1(Build ID:20150220030202)を新規プロファイルで起ち上げ、フォントをメイリオに変更して青空文庫掲載の作品を読み込ませてみたが、きちんとルビが表示され、速度的にも問題はない。なかなかに感慨深い。

f:id:Rockridge:20150222002013p:plain

なお、ルビテキストの配置をコントロールするruby-alignについては、Bug-org 1055676 implement CSS 'ruby-align' property - WebStudioで実装状況の実験が行われている。

(15/05/17追記)
Firefox 38.0 リリースノートに記載されているとおり、ルビのサポートは正式版に投入された。CSS Rubyの最新規格を実装しているのは、現在のところFirefoxだけであり、このようにInternet ExplorerやChromeよりも実装で先行している点は特記されるべきだろう。

増え続けるThunderbirdのユーザー数 日本は世界第2位

$
0
0

コミュニティベースの開発体制に移行してからも、Thunderbirdのユーザー数は着実に伸びている。The Mozilla Thunderbird Blogの記事"Thunderbird Usage Continues to Grow"で驚きの事実が明らかにされた。

Mozillaは、Firefoxだけでなく、ThunderbirdでもADI(Active Daily Installations)の数を計測している。ADIは、プラグインのブロックリストをアップデートする際のやりとりが基となるため、アクティブユーザーの数とイコールではないが、推計によれば、ADIを3倍すると月間アクティブユーザーの数になるという。

2008年7月から2015年1月までのピークADIを図に表したものが、上記記事で公開されている。それによると、2009年1月におよそ500万だったADIは、2015年1月には900万を超えている。月によって変動はあるものの、上昇傾向にあるのは間違いない。2012年7月に開発体制が変更された後でさえ、ペースこそ緩やかになったようだが、傾向自体は維持されている。

f:id:Rockridge:20150301215123p:plain

2015年2月24日時点のADIを、国別に見てみよう。1位はドイツで、全体の約18.5%を占めている。2位が何と日本で、2014年第4四半期に米国を追い抜いた後、全体の約10.8%を占めるに至っている。トップ10にヨーロッパ諸国が多く名を連ねている一方、アジアでは日本だけがランクインしている。

順位国名ADI
1位ドイツ1,711,834
2位日本1,002,877
3位米国927,477
4位フランス777,478
5位イタリア514,771
6位ロシア連邦494,645
7位ポーランド480,496
8位スペイン282,008
9位ブラジル265,820
10位英国254,381
その他2,543,493
合計9,255,280

考えてみれば、6週間に1度マイナーアップデートが、42週間に1度メジャーアップデートがきっちり提供されるメールソフトなど、ほかにそう簡単に見つかるものではない。しかも、プラットフォーム部分はMozillaが総力を挙げて改良を加えているわけだし、Thunderbird固有の部分も少しずつではあるが改良されてきている。ブランドを抜きにしても、使われ続けるだけの理由はあるのだ。

ちなみに、次のリリース版となるThunderbird 38では、Lightningアドオンが標準で搭載され、初回起動時にユーザーが拒否しなければ有効化される予定となっている。カレンダー/スケジューラ機能が使いやすくなることで、ユーザー数はさらに増えるのではないだろうか。ADIが1000万の大台に達する日も、そう遠くはなさそうだ。

Firefox 38でWindows向け64bit版はフェーズ1が完了 軽量インストーラへの統合が今後の課題

$
0
0

Firefox 38では、「各国語版のFirefoxをダウンロード」のページにWindows向け64bit版のスタンドアローン型インストーラ(フルインストーラ)が公開されることになりそうだ(Firefox/Channels/Meetings/2015-03-31 - MozillaWiki)。Developer Editionでは、既にFirefox 37の時点において、同様の形でダウンロードが可能になっていたが、Beta版やリリース版は未対応だった。当初の予定からは少し遅れているようだが、64bit版Firefoxへの道のり - Mozilla Fluxで紹介したフェーズ1は、Firefox 38で完了となる。

次のフェーズ2では、軽量インストーラ(スタブインストーラ)に64bit版が統合されるほか、プラグインや拡張機能のサポートも拡大されるという。その実行計画が、"Proposed Roll Out Plan (as of Q1 2015)"としてMozillaWikiにて公開中だ。

計画によれば、Firefox 40では、Developer Editionに対して64bit版専用のスタブインストーラを提供し、Firefox 41では、Beta版に対しても同様のスタブインストーラを提供する。最終的には1つのスタブインストーラで32bit版と64bit版を選択できるようにするそうだが、その時期は未定だ。

もっとも、動作の安定性、プラグインや拡張機能の対応状況、ユーザーの反応などによっては、計画通りに進まないことも十分にありうる。特にユーザーが64bit版を選ばないことが統計データ上明確になった場合、Windows 8 Modern版Firefox(Firefox for Metro)の前例があるだけに、計画中止の可能性も否定できない。

Mozillaは、要所ごとに基準を設定して計画進行の可否を決めるとしており、今後どのような基準が設定されるのか注目される。

(15/05/17追記)
現時点で、Windows向け64bit版のスタンドアローン型インストーラが公開されているのは、「各国語版の Firefox Beta をダウンロード」のページまでだ。つまり、Beta版は公開されているが、リリース版は公開されるに至っていない。Firefox 38.0.5のリリース時に進展があるのか注目される。


速報: MozillaがPocket(旧Read It Later)をFirefox本体に統合(追記あり)

$
0
0

「あとで読む」系サービスとして有名なPocket(旧Read It Later)が、Firefox本体に統合されることが判明した(Bug 1155467)。正式発表は行われていないものの、2015年6月2日(米国時間)にリリース予定のFirefox 38.0.5が統合のターゲットとされており、近日中にMozillaからアナウンスがあるとみられる。

Pocketとは

Pocketは、サンフランシスコに本社を置くRead It Later, Inc(以下RIL社)が提供するアプリケーションおよびサービス。RIL社による概要の説明は、以下のとおり。

Pocket は、面白い記事やビデオ、その他のウェブコンテンツを「後の楽しみに保存しておきたい」という人のため、ネイト・ウィーナーにより2007年に設立されました。一旦 Pocket に保存されると、コンテンツのリストが—携帯電話やタブレット、コンピュータなど、どんなデバイスでも見れるようになります。順番待ちの時、ソファでくつろぎ中、または通勤時や旅行時—など、オフラインであっても閲覧可能です。

世界をリードする弊社の「後で読む」(save-for-later)サービスは現在、1,200万以上の登録ユーザーを抱えており、Flipboard や Twitter、Zite など、500以上のアプリと連携しています。また、iPad や iPhone、Android、Mac、Kindle Fire、Kobo、Google Chrome、Safari、Firefox、Opera、Windows など、主なデバイスやプラットフォームに対応しています。

Firefox向けにはアドオンSocial APIボタンが提供されている。また、最近デザインが刷新されたWebアプリは、2014年3月時点で日本語に対応済みである。なお、日本はRIL社にとって米英に次ぐ市場だという。

f:id:Rockridge:20150421225742p:plain

統合の具体的な内容

Firefox 38.0.5のリリースまで時間が限られているため、最初の段階における統合は基本的なレベルにとどまる。具体的には、ツールバーにPocketボタンが設置され(Bug 1155523)、コンテキストメニューに「Pocketに保存する」旨の項目が(Bug 1155518)、ブックマークメニューに「Pocketのコンテンツを見る」旨の項目が(Bug 1155519)、それぞれ追加される。

統合されたPocketは、デフォルトで有効化されるため、既にPocketのアドオンやSocial APIボタンがインストールされている場合、アドオン/ボタン側が自動で無効化(または削除)されるようだ(Bug 1155521)。ただ、アドオン版Pocketの機能を当初から網羅することは難しいとみられ、既存ユーザーはアドオンを再度有効化する必要が出てくるかもしれない。

もともと、Mozillaはローカル版「あとで読む」機能というべきリーダーモードをAndroid版Firefoxに実装しており、この機能をデスクトップ版にも実装して、保存リストをデバイス間で同期可能にする予定だった(Bug 1123529)。まさにFirefox 38.0.5でデスクトップ版リーダーモード機能を有効化すべく、開発も続けられていた(Bug 1148098)。今回の急な方針転換は、Mozilla Corporation(以下Mozilla Corp.)とRIL社との合意が最近になって行われたことを示すものだろう。

Pocketの統合が優先されるため、リーダーモード機能の開発はひとまず中断されることになるが(Bug 1155515)、これまでの開発が全く無駄になったわけではない。将来的にPocketで保存したコンテンツをローカルでも閲覧できるようにする際、デザインを調整しつつ機能が再利用されるためだ(Bug 1155536)。

統合によるメリット

今回の統合におけるRIL社側のメリットは明らかだ。1億人近いFirefoxのアクティブユーザーを一部でも取り込めれば、ユーザーベースを現在の1200万から大きく拡大できる。サービスの利用者が増えれば、プレミアム版に登録するユーザーも増えることだろう。もっとも、利用者が急激に増加することで、サーバーに過負荷がかかることも懸念される。このあたり、正式発表時に何らかの言及があるのかもしれない。

他方、Mozilla側のメリットとして、評価の確立された「あとで読む」サービスを直ちにユーザーに提供できることが挙げられる。また、上記Bug 1155523において、FirefoxアカウントによってPocketにログインできるようにすると説明されており、今回の統合は、Firefoxアカウントを普及させる方策でもあるわけだ。他社サービスの統合にまで踏み込んだ割には、Mozilla側のメリットが小さいようだが、検索サービスの場合と同様に、Mozillaに対価が支払われると考えれば納得がゆく(こちらは発表時にも言及はされないだろうが)。

Mozilla Corp.の内部ですら開発者らにRIL社との交渉経過が伝わっていなかったという経緯については、開発のあり方として一抹の不安を覚えるものの、Pocketの統合によってFirefoxの利便性が高まる点は、素直に喜びたい。

(15/05/17追記)
MozillaやRIL社から提携に関するアナウンスはないが、現在公開されているFirefox 38.0.5 BetaではPocketの統合が有効化され(リリースノート)、ユーザーが利用可能な状態になっている。

一時はローカライズなしで投入されるという話もあったのだが、通常の手順を踏まず、翻訳された文字列をハードコードする方法によって、英語以外に、ロシア語、日本語、スペイン語およびドイツ語をサポートした(Bug 1162283)。

なお、既存のPocketアカウントがある場合に、Firefoxアカウントでログインするとどうなるのか試してみたが、少なくとも登録しているメールアドレスが共通だと既存のアカウントにログインするようだ。

f:id:Rockridge:20150517210753p:plain

(15/06/03追記)
Firefox 38.0.5がリリースされ、当初の予定どおりPocketは本体に統合された(Firefox がオンライン生活のコントロールを可能に | Mozilla Japan ブログ)。

上で記載した内容をアップデートしておくと、既にPocketのSocial APIボタンを利用している場合は、アンインストールされて新しいウィジェットが導入されるのに対し、Pocketのアドオンを利用している場合は、アドオンが優先される(Bug 1155521のパッチ参照)。また、リリースノートに記載された「リーダーモード」は、リーダービューのみで、リーディングリストを含んでいない点がAndroid版Firefoxと異なっている。つまりPocketと重複する機能は省かれているわけだ。

Mozilla Corp.とRIL社との提携については、Pocketのブログで発表された(Pocket is Now Built Into Firefox!)。記事の末尾の署名を見ると、CEOであるNate Weiner氏が記載したものとみられるが、同記事によれば、今後、Pocketアドオンはメンテナンスのみが行われることになる。

明示的に会社間の関係という形式をとっていないこともあり、発表からは提携に伴う対価の支払いがどうなっているのかをうかがい知ることはできないが、この点に関しては、PE HUBの"Pocket picks up $7 mln in NEA-led round"に引用されたRIL社のプレスリリースが興味深い。同社が2015年4月に700万ドルの資金調達を行ったことに関し、その使途を開発チームの拡大およびパートナーとの統合強化と述べているからだ。資金調達の時期からみて、この700万ドルの一部がMozilla Corp.に支払われたとみてよいのではないか。

f:id:Rockridge:20150603203127p:plain

Firefox 38の性能を検証 ゲーム・プラットフォームとしての優秀さを示す

$
0
0

当ブログでは、延長サポート版(ESR)のメジャーアップデートが行われる時期をFirefoxの開発の区切りとみて、Web上で実行可能なベンチマークの測定結果を公開している。Firefox 38のリリースを目前に控え、今回はこれを中心に、Firefox 2431およびChrome 42と比較してみたい。

検証を行った具体的なバージョンを挙げると、32bit版のFirefox 31.6.0(ビルドID:20150325203137)およびFirefox 38.0 RC1(ビルドID:20150503173159)、それに64bit版のChrome 42(バージョン:42.0.2311.135m)である。Googleが一般ユーザー向けに64bit版Chromeを提供し、そこで性能の向上を謳っている以上、これに目をつぶって32bit版で揃えてもフェアではないだろうと判断した。

動作環境についてだが、OSはWindows 8.1 Update 1(64bit版)で、使用したハードウエアは、CPUがIntel Core i7 4800MQ 2.70GHz、GPUがIntel HD Graphics 4600(ドライバのバージョン:10.18.10.3338)、メモリ容量が16.0GBである。テストの際は、新規プロファイルを(フォントをメイリオに変更する以外は)初期設定のまま利用し、アドオンをすべて無効化し、プラグインもShockwave Flash 17.0 r0以外を無効化した。これはChromeでも同様だが、他方、Firefox 38では、自動的にインストール/有効化されるOpenH264 Video Codec 1.4とPrimetime Content Decryption Module 9を有効のままにしている。なお、各ベンチマークの実行後はFirefox(Chrome)を終了させて、メモリ上に前のベンチマークが残らないように配慮した。

また、前回の記事のコメント欄でのご指摘を踏まえ、Turbo Boost機能を無効化してからベンチマークを実行した(参照:Surface Pro 3 の Turbo Boost を無効化する)。Turbo Boostが有効の場合、定格の動作周波数よりどの程度高速になるか決まっていないため、新バージョンのブラウザでベンチマークの数値が改善されたとしても、単にCPUの働きによるものだったという可能性が残る。これを無効にすることで、測定結果の正確性が高まるはずだ。

最後に、対象となるベンチマークは、前回の記事で用いたものを一部削って、新しいものを導入している。

ページの読み込み速度およびメモリ使用量

10のWebサイトを同時に開いて、読み込み中であることを示すアイコン(throbber)が消えるまでの時間を手動で計測した(秒数の小数点以下は切上げ)。同時に、10サイトを表示させた場合と、単サイトを表示した場合のメモリ使用量もチェックした。

具体的な手順は、次のとおり。以下の10サイトをその記載順にフォルダ内にブックマークしたバックアップファイル(FirefoxではJSON形式、ChromeではHTML形式)をインポートし、「タブですべて開く」(Chromeでは「すべてのブックマークを開く」)で10サイトをいっせいに読み込む。throbberが消えるまでの時間を計測し、完了したらFirefox(Chrome)のホームページは閉じ、各タブをクリックしてWebページを実際に画面に表示させる。つまり最後に表示されるのはWikipedia(日本語版)になる。

1分間そのまま放置した後、新しいタブを開いてabout:memoryを呼びだす。Firefoxでは"Show memory reports"のMeasureボタンをクリックし、Main Processのresidentの値を見る。もっとも、これだけではChromeとの比較ができないため、同時にChromeのabout:memoryからもFirefoxのプロセスのPrivate Memoryの値をチェックする。

そして、「他のタブをすべて閉じる」でYahoo! JAPAN以外のWebページはすべて閉じる。1分間そのまま放置した後、再び新しいタブを開き、about:memoryを呼びだしてMain Processのresidentの値を見る(ChromeではPrivate Memoryの値をチェックする)。Firefox(Chrome)をいったん終了させ、再起動後に上記10サイトを同じ手順で開いて、throbberが消えるまでの時間を計測する。一連の手順を実行した結果がこれだ。

Firefox 31Firefox 38Chrome 42
読込時間(1回目)25 秒16 秒14 秒
読込時間(2回目)15 秒15 秒7 秒

Firefox 31Firefox 38Chrome 42
使用メモリ(10)378.71 MB(355,464 KB)408.78 MB MB(383,952 KB)727,012 KB
使用メモリ(1)268.30 MB(237,336 KB)305.85 MB(293,008 KB)206,904 KB

読み込み速度についてみると、Firefox 38において1回目の読み込みに要する時間が短縮されている。これは、新しいHTTPキャッシュ(cache v2)を導入したことによるものだろう。他方、2回目の読み込みに要する時間は変わらないが、改善の余地があることはChromeとの比較から明らかだ。

メモリ使用量は、Firefox 38において増加傾向にある。世代別ガベージコレクション(Generational GC)も導入済みだが、メモリの解放には限界があるのかもしれない。これに対し、Chromeは派手な結果が出ている。Firefoxの数値と比較するときは、カッコ内の数字を参照してもらいたいのだが、10タブを開いたときのChromeのメモリ使用量は、Firefoxの倍まではいかないにせよ、かなり多い。ところが、タブを閉じていくと一転してメモリ使用量が激減するのだから面白い。ひょっとすると、ディスクキャッシュを用いた再読み込みの速度に自信があるので、メモリキャッシュは少なくてもよいと割り切っているのだろうか。

レイアウトおよび描画処理

HTML5 Canvas

CanvasMark 2013 version 1.1は、HTML5ゲームでよく使用される処理(ビットマップ、Canvas描画、αブレンディングなど)に対するレンダリング・パフォーマンスをテストする。

Firefox 31Firefox 38Chrome 42
CanvasMark Score8459971610268

Firefox 38が約15%もスコアを伸ばしているのは立派なものだ。Chromeには届かないが、背中は見えてきている。

次に、Canvas Cycleは、HTML5 Canvas上に8bitのカラーパレットを用いたアニメーションを表示し、サウンドも鳴らすデモだ(解説)。オプションを表示させると秒間フレーム数(FPS)が出るので、"Jungle Waterfall - Morning"を初期設定のまま走らせてみた。

Firefox 31Firefox 38Chrome 42
秒間フレーム数86 - 89 fps98 - 102 fps119 - 120 fps

Firefox 38で性能の向上がみられるが、Chromeはその先を行っている。

CSSレイアウト

Internet Explorer 11 Test DriveからMaze Solverをピックアップし、迷路のサイズを30×30に設定してテストを実行した。このテストは、WebブラウザがCSS 2.1およびCSS 3ベースのレイアウト構築を処理する性能に焦点を当てており、数値が小さいほど高速である。

Firefox 31Firefox 38Chrome 42
Browser Score13.0 秒15.0 秒5.5 秒

Firefox 38の成績が振るわない。Chromeとの差も大きく、改善が望まれる。

WebGL

Internet Explorer 11 Test DriveからFishGLをピックアップし、水槽内の魚の数を150匹に設定してテストを実行した。 このテストは、主にWebGLに関する処理性能を測定するものだ。

Firefox 31Firefox 38Chrome 42
秒間フレーム数41 - 45 fps46 - 50 fps35 - 44 fps

Firefox 38が最も高いFPSを記録した。他方、ChromeではFPSが安定せず、Firefox 31のそれを下回ってしまった。

次に、Unity WebGL Benchmarksでの結果を見てみよう。このベンチマークは、2014年10月に公開された新しいもので、Unity Blogの記事によれば、さまざまな場面で、Unityの開発したエンジンが一定時間内にどの程度のタスク処理ができるのかをテストするという。

Firefox 31Firefox 38Chrome 42
Overall ScoreN/A4857338287

Firefox 31は、一部のテストで描画が正しく行われず、異常な数値が出るため結果を掲載していない。この現象のせいで、Firefox 38がどの程度の性能アップを果たしたのかもわからずじまいだ。とはいえ、Firefox 38が叩き出したスコアは、Chromeに大差をつけている。最近のFirefoxがWebGLに強いのは間違いなさそうだ。

JavaScript/DOM処理

JavaScript

Octane JavaScript Benchmarkは、V8 Benchmark Suiteの後継となるベンチマークで、モダンなWebアプリを実行した場合の性能を反映した結果になるという(FAQ)。Octane 2.0では、スループットに加えてレイテンシも重視するようになった。言い換えれば、Webアプリのピーク性能だけでなく、動作のスムーズさも評価の対象となったわけだ。

Firefox 31Firefox 38Chrome 42
Octane Score183182312424547
Richards250192789625718
Deltablue220773385244901
Crypto207722350923267
Raytrace213124536150393
EarleyBoyer242173268934848
Regexp196923003917
Splay143181572813430
SplayLatency94371990122311
NavierStokes220022725122445
pdf.js144231395218080
Mandreel192002261523194
MandreelLatency254352623818532
GB Emulator341415099656205
CodeLoad152871574915062
Box2DWeb265153636332402
zlib441664669050087
Typescript197292120532150

意外なことにFirefox 38が約26%もスコアを伸ばし、Chrome 42に肉薄している。世代別GCの導入がレイテンシ重視というOctane 2.0のコンセプトにマッチしたからだろうか。V8 Benchmark Suiteの時代から、FirefoxはChromeに大差をつけられてきただけに、Google製のベンチマークでこの結果が出たことは大きい。ちなみに、Firefox 29から35までの間に、Octane 2.0のスコアが約40%向上したという話もある。

次に、JetStream 1.0.1を採り上げる。JetStreamはWebKitチームが提供するベンチマーク・スイートで、スループットとレイテンシを計測する点はOctane 2.0とコンセプトが共通している。実際、SunSpider 1.0.2のほか、Octane 2.0からも一部のベンチマークを取り入れているという(参照:Introducing the JetStream benchmark suite)。

Firefox 31Firefox 38Chrome 42
Score136.70 ± 1.3351148.21 ± 5.0053156.65 ± 2.9681

Chromeには及ばないものの、Firefox 38のJavaScriptエンジンが大きく改良されていることは間違いない。

JavaScript+DOM

Speedometer 1.0は、WebKitチームが提供するベンチマークで、DOMオブジェクトの操作に焦点を当て、Webアプリの応答性を測定する。jQueryなど6つのポピュラーなJavaScriptフレームワークを採用し、ユーザーの行動をシミュレートするという。

Firefox 31Firefox 38Chrome 42
Runs / Minute52.28 ± 0.5057.1 ± 0.8578.44 ± 0.70

Firefox 38はWebアプリの応答性という点でも進歩している。もっとも、Chromeと比較すると見劣りする面があり、まだまだ改善が必要だ。

asm.js

Emscriptenプロジェクトの一環として公開されているベンチマーク・スイートEmbenchen v0.0.2を利用して、asm.jsの処理性能を見る(参照:asm.js performance improvements in the latest version of Firefox make games fly! ?)。このベンチマーク・スイートは、マイクロベンチマークとマクロベンチマークから構成されるが、性能の指標としては実環境に近い後者が重要となるので、本記事でもマクロベンチマークの結果を掲載する。なお、数値が小さいほど高速である。

Firefox 31Firefox 38Chrome 42
box2d12,056 ミリ秒11,628 ミリ秒11,578 ミリ秒
bullet12,847 ミリ秒12,529 ミリ秒15,829 ミリ秒
lua_binarytrees7,266 ミリ秒6,985 ミリ秒10,876 ミリ秒
zlib11,945 ミリ秒12,606 ミリ秒11,650 ミリ秒

OdinMonkeyを搭載したFirefoxの圧勝、というわけにはいかなった。Chromeもさほど規模の大きくないasm.jsコードであれば、ある程度高速な処理が可能であるらしい。

次に、同じくEmscriptenプロジェクトの一環として公開されているベンチマーク・スイートMASSIVE v1.1を走らせてみよう。このベンチマークは、大規模なasm.jsコードに特化しており、Poppler、SQLite、LuaとBox2Dのコードをベースに、スループットだけでなく、読み込み時間や読み込み中の応答性、パフォーマンスの一貫性なども計測対象とするものだ。

Firefox 31Firefox 38Chrome 42
Score4,4165,4241,289

こちらは大差がついた。Mozillaが開発に力を入れている証だろう。

総合的なベンチマーク・スイート

Peacekeeper

Peacekeeperは、Futuremarkが提供する老舗のWebベンチマークだ。多角的なテストを行っており、その指標は今なお信頼性を失っていない。

Firefox 31Firefox 38Chrome 42
Points310841644143
Rendering44.6344.79101.57
HTML5 Canvas35.5743.8044.24
Data27539.6853947.5571183.91
DOM operations25686.8627404.9022173.75
Text parsing258316.57431736.03172128.00

Firefox 38が総合ポイントでChrome 42と並んだ。Firefox 31から約34%もの大幅なスコアアップを果たしており、過去の停滞が嘘のような素晴らしい結果といえる。DataやText parsingの項目で伸びが目立つ。

Browsermark

Browsermark 2.1は、フィンランドのBasemark社が提供する総合ベンチマークで、実環境のパフォーマンスを計測することに焦点を当てているという。計測の対象は、CSS、DOM、グラフィックス、JavaScriptなど。

Firefox 31Firefox 38Chrome 42
Score365640955657

Firefox 38のスコアは順当な伸びを見せているが、Chromeの強さが目立つ。

RoboHornet

RoboHornet RH-A1は、Benchmark.jsベースの総合ベンチマークで、α版だが完成度は高い(FAQ)。標準的なCore Suiteを選んで計測した。

Firefox 31Firefox 38Chrome 42
RoboHornet index97.57102.69168.22
Add Rows to Table8.067.2612.00
Add Columns to Table4.213.796.70
Descendant Selector31.3133.2520.98
2D Canvas toDataURL3.934.6515.47
2D Canvas clearRect3.893.9112.19
innerHTML Table4.934.895.13
Table scrolling6.465.014.42
Resize columns7.756.1525.41
Object Scope Access2.742.762.70
ES5 Property Accessors1.867.915.08
Argument instantiation3.142.439.64
Animated GIFS0.471.090.33
offsetHeight triggers reflow1.131.0610.74
DOM Range API4.795.604.51
Write to localStorage7.677.7117.76
Read from localStorage5.255.2415.15

Browsermarkの結果と似たような傾向となった。その中で、Firefox 38において、ES5 Property AccessorsおよびAnimated GIFSの各項目が高い数値を示している点が気になる。過去にlocalStorage関係の項目で数値の大きな変動が見られたこともあっただけに、今後も高い数値を維持できるのか注目される。

WebXPRT 2015

WebXPRT 2015は、米Principled Technologies社が提供するWebベンチマークの最新版である。オフィスワーカー向けWebアプリを念頭に置いたらしきタスク設定となっており、繰り返し実行されることで判定の精度を高めている。以下の表で、総合スコアは数値が大きいほうがよいのに対し、個別の項目は処理に要する時間を示しており、数値が小さい方がよい。なお、ホストはシンガポールのものを利用した。

Firefox 31Firefox 38Chrome 42
Overall Score316 +/- 8367 +/- 18461 +/- 8
Photo Enhancement386 ミリ秒 +/- 1.37%354 ミリ秒 +/- 1.66%265 ミリ秒 +/- 3.07%
Organize Album2757 ミリ秒 +/- 16.78%2632 ミリ秒 +/- 15.64%1633 ミリ秒 +/- 1.19%
Stock Option Pricing387 ミリ秒 +/- 2.65%293 ミリ秒 +/- 1.89%317 ミリ秒 +/- 2.48%
Local Notes114 ミリ秒 +/- 2.61%128 ミリ秒 +/- 27.86%194 ミリ秒 +/- 5.39%
Sales Graphs652 ミリ秒 +/- 1.6%659 ミリ秒 +/- 1.45%497 ミリ秒 +/- 1.57%
Explore DNA Sequencing4082 ミリ秒 +/- 1.29%2210 ミリ秒 +/- 4.61%980 ミリ秒 +/- 4.56%

これもBrowsermarkの結果と似たような傾向といえそうだ。Firefox 38には確かに改良の跡がみられるのだが、Chrome 42に追いつくまでには時間がかかるだろう。

総合評価

前回Firefox 31を検証した際、やや物足りない感があり、アーキテクチャの革新に期待したいと述べたわけだが、Firefox 38はその期待に応える仕上がりだと評価できる。いろいろな角度からテストしてみたが、ほぼ全面的にFirefox 31よりも好成績となっており、特にOctane 2.0やPeacekeeperでChrome並みのスコアが出たのは驚きだった。

一般的なWebアプリの処理性能という観点からすると、Chromeと互角に渡り合うのはやや苦しいものの、WebGLと大規模なasm.jsコードという組み合わせでは、おそらくFirefoxが最速となるはずだ。ゲーム・コンテンツがまさにその組み合わせであるのは、偶然ではあるまい。MozillaがFirefoxをWeb上で最高のゲーム・プラットフォームにすべく開発を続けてきたことが、実を結びつつある。

次のESRは、Firefox 45がベースとなる。この時点で、リリース版でもマルチプロセス化(コード名Electrolysis)が実現されているだろうし、64bit版の提供についても進展があるだろう。それでなくても、Firefox Nightly 40はリリースサイクルの後半、動作が高速で快適だった。Firefox 45までの間にどこまで良くなるか、今から楽しみである。

Firefox Developer Edition 41ではてなブックマーク拡張が機能しない件(追記あり)

$
0
0

Firefox Developer Edition 41で、はてなブックマーク拡張が機能しなくなっている。FirefoxのビルドID:20150712004007と拡張機能のバージョン2.3.7.1-signedとの組み合わせで確認した。前回記事にしたときは、Firefox Nightly 36で動かず、Aurora 35だと大丈夫だったのだが、今回は、Nightly 42も含めて全く使えない状態だ。

実は、同アドオンが機能しなくなったのは、Nightly 41の途中から。つまり、このとき加えられた変更が、Developer Edition 41でも維持されているわけだ。不具合であれば現時点までに修正されている可能性が高く、仕様変更が原因とみられる。

Firefox JavaScript changelog - JavaScript | MDNを見てみよう。Firefox 41のJavaScript機能に加えられた主な変更点を確認することができる。挙げられているバグの中で、Keywords欄にアドオン互換性への影響を示す「addon-compat」が含まれているのは、Bug 1023609 - Remove SpiderMonkey support for let expressionsBug 1150855 - Method definitions require curly bracketsの2つ。問題となる仕様変更としては、このあたりが怪しい。

Firefox 41がBetaチャンネルに移行してしまうと、はてなブックマーク拡張が動かなくて困るユーザーの数は大きく増えるだろう。はてなにはその前に対処してもらいたいところ。さらにいえば、数バージョンに1回互換性が問題となる状況を避けるため、Add-on SDKベースでリライトしてほしい。Chrome拡張として提供できているのだから、それほど難しい話でもないと思うのだが。

(15/09/01追記)
はてなブックマーク拡張のバージョン2.3.8がリリースされた。バージョン履歴によれば、一部のページでブックマークが追加できない不具合と、コメントが30件までしか表示されない不具合を修正したほか、Firefox 42で動作するようにしたという。手元の環境だとAurora 42/Nightly 43で動作しており、リリース版/Beta版のユーザーはしばらく安心できそうだ。

ちなみに、GitHubのコミット履歴には「廃止されたlet式の部分を修正」という項目があり、やはり上記Bug 1023609は本拡張機能の互換性に影響を与えていた。

なお、WebExtensionsの発表により、本拡張機能がAdd-on SDKベースでリライトされる可能性は遠のいたが、他方でChrome版からの移植は容易になるはずだ。その意味で、アドオンのXUL利用が廃止されても、Firefox版のはてなブックマーク拡張がなくなることはなさそうである。さらにいえば、今回のようにBetaサイクルの途中まで拡張機能が動作しなくなるといった事態も避けられるのではないだろうか。

FirefoxのFlashプラグインが暫定的にソフトブロック中(追記あり)

$
0
0

AdobeがFlashプラグインに重大な脆弱性があると発表したことを受けて、Mozillaは、同プラグインの最新版に対してもソフトブロックの措置を講じた(Bug 1182751)。Flashプラグインを使用するWebサイトにアクセスすると、Adobe Flashの実行をブロックした旨の通知が表示されるようになっており、多数のユーザーに影響が及んでいるとみられる。

今回の措置の対象となったのは、Flash Player Plugin 18.0.0.203Flash Player Plugin 13.0.0.302そしてLinux版のFlash Player Plugin 11.2.202.481だ。アドオンマネージャのプラグインのカテゴリを開くと、「Shockwave Flashは安全ではありません。注意が必要です。」というメッセージが出ているのがわかるだろう。通常、Flashプラグインはデフォルトで「常に有効化する」に設定されているが、上記措置の結果、強制的に「実行時に確認する」に変更されており、しかも「常に有効化する」に再変更することはできない。

そのため、ユーザーは、Webサイトごとに、ページ上部の通知バーまたはロケーションバーのアイコンからFlashプラグインを明示的に許可しなければ、同プラグインを動作させることができない。Mozillaは、この措置をソフトブロックと呼んでいる。強制的にプラグインを無効化する(ハードブロック)よりはソフトというわけだ。

Adobeが上記脆弱性に対策を施したFlashプラグインの最新版をリリースすれば、その最新版に限ってはソフトブロックが解除されるだろうから、Flashが自動アップデートされることも考慮すれば、ユーザーが不便を被るのは一時的だ。ただ、Mozillaは、今後も同様の脆弱性が発見された場合は、同じ措置をとる可能性が高いだろう。

(15/07/14追記)
本記事執筆の時点では気づいていなかったが、Flash Player脆弱性発覚に伴うFirefoxでの影響について‐ニコニコインフォの末尾で言及されているとおり、Adobeは既に本文の脆弱性に対策を施したFlashプラグインの最新版(バージョン18.0.0.209)を公開済みだ。これをインストールすることで、ソフトブロックを回避できる。なお、インストーラをダウンロードするまでに同プラグインの動作を許可しなければならない点には注意が必要である。

Windows向け64bit版の正式公開はFirefox 40から(再追記あり)

$
0
0

Firefox 40では、Windows向け64bit版のスタンドアローン型インストーラ(フルインストーラ)が「各国語版のFirefoxをダウンロード」のページで公開される見通しだ(Bug 1181014)。2015年7月7日のChannel Meetingでその旨が明らかにされた。

Firefox 38でWindows向け64bit版はフェーズ1が完了 軽量インストーラへの統合が今後の課題 - Mozilla Fluxで紹介したとおり、64bit版は当初、Firefox 38で正式版が公開されるはずだった。ところが、Firefox 38のリリース時点で実際に公開されたのは、Beta版までにとどまった(Bug 1150083)。2015年8月11日(米国時間)リリース予定のFirefox 40で、ようやく上記のフェーズ1が完了する。

2リリース分の遅れは、当然のことながらそれ以降のスケジュールにも影響せざるをえない。現にスタブインストーラの開発も全く進んでいないし(Bug 797208)、そもそも、MozillaのWebサイトのダウンロードボタンが64bit版のフルインストーラに対応する時期も、決まっていないのだ(Firefox 42がリリースされる際のキャンペーンで、という可能性は考えられる)。ユーザーが32bit版と64bit版を簡単に選択できるようになるまでには、まだまだ時間がかかりそうである。

なお、64bit版Firefoxへの道のり(追記あり) - Mozilla Fluxで追記したとおり、64bit版FirefoxはWindows 7以降でなければインストールや起動ができないので、注意してほしい。

(15/07/30追記)
正式公開はFirefox 41へと延期された。Flashプラグインの利用が可能になる(Bug 1165981)など、Firefox 41ではいくつかの改善や修正が施されており、そうした成果を踏まえてリリースするほうがよいとの判断による。

(15/09/01追記)
正式公開はFirefox 42へと再度延期された。理由は明らかにされていない。

(15/11/08追記)
Firefox 42以降の動きは別記事を参照してほしい。

Viewing all 123 articles
Browse latest View live