Mozilla Flux

Mozilla関係の情報に特化したブログです。

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

祝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がある。