Mozilla Flux

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

MozillaはQuantumプロジェクトで過去と訣別し、未来に賭ける

次世代のWebエンジンを構築

Mozillaが最近発表したQuantumプロジェクトは、Firefoxのエンジン部分にあたるGeckoを次世代のWebエンジンへと進化させ、パフォーマンスの飛躍的進歩(quantum leap:直訳は量子跳躍)をもたらす*1。Mozilla Corp.でHead of Platform Engineeringを務めるDavid Bryant氏が"A Quantum Leap for the Web"(和訳)と題する記事でそう発表し、かなりの反響を呼んだ。日本でもIT関係のメディアで多数取り上げられており、目にされた方も多いだろう。

Quantumプロジェクトの進展に伴い、GeckoにはServoの成果が取り込まれていく。ServoはMozillaが2012年ころから開発してきたブラウザエンジンの試作品であり、Rust言語によって構築されている。必然的に、GeckoもRust言語ベースのコンポーネントが増えていく*2。これによりメモリ安全性(Memory Safety)、すなわちプログラムによるメモリ破壊が不可能な状態を段階的に作り上げる。従来は、Geckoにrust(錆)が増えていくことからOxidization(酸化)と呼ばれていた*3が、今後はたとえばQuantization(量子化)と呼ばれるのかもしれない。

Geckoが進化した先にある次世代のWebエンジン(Next Generation Web Engine:以下NGWE)では、マルチコアが当たり前になったCPUに並列的な処理を行わせるとともに、高速化が著しいGPUへの処理のオフロード化も積極的に進める。David Bryant氏は、2017年末までに改善の大きな成果を提供すると明言しているほか、初期の成果は同年前半のうちに出せるだろうとも述べており、Servoの取り込みは急ピッチで進められそうだ。

ServoのパフォーマンスをFirefoxと比較した動画を見れば、その処理の滑らかさは一目瞭然である。通常のWebページでも長大なものになると差は歴然としており、表示時間が数分の1になるとの報告もある。NGWEの開発が進めば、その高速化をFirefoxユーザーも享受することができる。

www.youtube.com

NGWEはWindows、Mac、Linuxに加えてAndroid向けにも提供されるが、iOSに関してはAppleがWebKit以外のブラウザエンジンを認めない限り、Mozillaが提供しようと思ってもできない。また、後述するQuantum CSSの開発計画からすると、Android版NGWEの提供はデスクトップ版よりも遅れそうだ。

サブプロジェクトの成果を順次導入

Quantumプロジェクトは、いくつものサブプロジェクトから構成されている。それらのうち、本記事執筆時点でQuantum - MozillaWikiに掲載されているものを紹介しておこう。ただし、Mozilla's Project Quantum and Servoで言及されているとおり、これらのサブプロジェクトは始まりにすぎない。Servoで試作が完成した機能は、これからも順次NGWEに移植されていくことになるからだ。

Quantum CSS

Quantum CSSはStyloとも呼ばれ、ServoのCSSスタイルシステムをGeckoに統合する(Bug 1243581)。work stealingアルゴリズムを採用してレイアウトの並列処理を行い、増分レイアウトという手法で演算を最小化する。スタイルシステムとは、HTML要素にどのCSSスタイルを適用するかを決めるもの。Servoには高速かつ並列処理が可能なスタイルシステムが実装されており、これを踏まえてStyloでは、Style Resolutionとセレクタマッチングの並列化を行う。増分リスタイルと呼ばれる手法の導入も予定されている(Bug 1288278)。

Quantum CSSの導入は、担当部分の処理に関し、Firefoxユーザーの95%に対し少なくとも2倍の速度向上をもたらす。さらにその約半数のユーザーにおいては、4倍以上の速度になるという。開発の進捗状況を踏まえると、比較的早い段階でFirefoxに投入されそうだ。

Quantum Render

Quantum Renderは、Servoの次世代レンダラであるWebRenderをFirefoxのグラフィックスバックエンドに据える(Bug 1311790)。WebRenderはCSSの処理に特化し、GPU向けに最適化されているため、Chromeが採用しているSkiaよりも効率的だとされる。

Quantum Renderは、OpenGL ES 2.1またはOpenGL 3をサポートした環境で動作し、低レベルな(決め細やかな操作ができる一方で書かなければならないコード量が増える)APIを提供する。また、Retainedモードを採用し、マルチスレッド化されている。これまでGeckoが採用してきたMoz2D APIとの関係は明らかではないが、仮にグラフィックスAPIを全面的に新しくするのであれば、開発には相当な期間を要することだろう。

Quantum Compositor

Quantum CompositorはGeckoのcompositorに独立したプロセスを割り当てるもの(Bug 1264543)で、Servoとは別に「GPUプロセス」の名で開発が進められてきた。compositorは、Webページ内のいろいろな要素が複数のレイヤーにレンダリングされているのを1つにまとめ、スクリーンに送り出す。Firefoxのマルチプロセス化(e10s)に伴い、compositorは既にchromeプロセス内の独立したスレッドとなっているが、このcompositorスレッドがプロセスとして独立するわけだ。

Quantum CompositorはWindows版Nightlyで有効化が目前に迫っており(Bug 1314133)、機能の完成度の点からみれば2017年前半のうちにリリース版で有効化されてもおかしくない。ただ、Windows 7 SP1以降でDXGI 1.2をサポートするアップデートを導入した環境が必須とされている点(Bug 1297822)は気にかかる。Windows 7でも古い環境だとQuantum Compositorが有効にならないと知ったユーザーが、FirefoxのためにOSをアップデートしてくれるかといえば、答えは否だろう。リリース版で有効化されるタイミング(Bug 1307578参照)は、有効化できるユーザーの割合を考慮しつつ決めることになるのではないか。

Quantum DOM

Quantum DOMは、それぞれのタブ(あるいはiframe)を、分離され協調的にスケジューリングされたスレッドに割り当てることで、Webコンテンツの動作をよりスムーズなものとし、プチフリーズの発生を抑える。Mozilla’s Quantum Project | Bill McCloskey's Blogで説明されているように、ユーザースレッド(ユーザー空間で実装されたスレッド機構)を自前のスケジューラで管理し、優先順位を付けて切り替えていく。

多数のタブを開いていても、タブごとにプロセスを割り当てていけばプチフリーズの発生は抑制可能だ。Chromeは現にそうしている。だが、プロセス数の増加は消費メモリの増大につながる。Mozillaの調査研究の結果によれば、現状でcontentプロセスを8以上に増やすことは、メモリ使用量との関係で許容できない。そこで、プロセス内をマルチスレッド化してプチフリーズに対処することにした。マルチプロセスに加えて各プロセス内をマルチスレッド化することは、技術的に決して容易ではないものの、Mozillaはあえてそこにチャレンジする。

Quantum Flow

Quantum Flowは、他のQuantumコンポーネントによってカバーされない領域におけるパフォーマンスの改善を探究するもので、UI最適化が例として挙げられている。

開発プロセスの進化と脱XUL化の加速

Quantumプロジェクトの語られざる意義について、筆者の考えを述べておきたい。手短に言えば、このプロジェクトはWebブラウザの開発のあり方に一石を投じる一方で、従来のGeckoとの互換性をかなり犠牲にすることになるだろう。

まずは前者について。これまで、Firefoxの開発プロセスは、Nightlyから始まり、Auroraで機能をほぼ固め、Betaでテストを繰り返し、リリースに至るという連結列車モデルを採用してきた。大規模な修正を伴う新機能を開発する場合は、Nightlyチャンネルのリポジトリ(mozilla-central)を分岐させたブランチを作成し、適当なタイミングでmozilla-centralに再統合していた。Quantumプロジェクトでは、これらのプロセスの外側に、Servoという実験的なブラウザエンジンを置く形となる。

Webがリッチで複雑なものとなった現在、そのプラットフォームとなるブラウザも複雑化が不可避だ。ブラウザエンジンについても同様であり、革新的な機能を投入することは次第に難しくなっていくだろう。そうした状況のもとでは、過去のしがらみを考慮せずに自由に実験ができる、相対的に小型のブラウザエンジンというカードを持っておくことが強みとなる。なぜなら、巨大化して技術的負債を多く抱えたエンジンをベースに新機能を開発するよりも、実験的なエンジンで得られた成果を移植するほうがコストが少なくて済むからだ。Mozillaの狙いはおそらくこの点にある。

Servoの側から見ると、今後も独立した製品にならないことが決定したと言えそうだ。2014年を振り返ると、Servoをモバイル向け製品に使う話が出ていたし、Firefox OSの基盤に用いることを検討した形跡すらある。だが、Firefox OS自体、スマートフォン向けの開発が打ち切られたうえ、Connected Devices(IoT)にレンダリングエンジンは必須ではないとの判断が下されたことで、進路を絶たれた。Servoの行く末も、Geckoのテストベッドに求めるほかなくなった。

次に、後者について。Mozillaは「跳躍」の先にあるものを懸命に見せようとしているものの、大きく跳べば元の場所から遠く離れるわけで、当然その場所を前提にしていた技術は失われる。具体的には、XULだ。Servoの実験的なフロントエンドがBrowser.htmlと呼ばれていることからも明らかなように、ServoはXULを使用しない。前述したようにNGWEはServoの取り込みを急速に進めるから、脱XUL化もかつてないスピードで進展していくだろう。

これまでも従来型の拡張機能がFirefox本体のバージョンアップに伴って動かなくなることはあったが、本体の修正に追随すれば再び動作するようになる例が大半だった。しかし、脱XUL化は次元の違う問題だ。WebExtensionsベースに移行しない限り、拡張機能は存続できない。完全テーマも同様で、WebExtensionsの一部となる新しいテーマAPIを利用することが要求される。

Quantumプロジェクトが互換性をどれだけ犠牲にするかは、Mozilla自身が一番よくわかっているはず。それでもなお過去と訣別し、未来に賭けるほかないとの決意が、このプロジェクト名には込められている。そこまでしないと生き残れないというところまで、Mozillaは追い詰められているのだ。

(16/11/05追記)
さっそく詳しい人から指摘があったので、本文を修正した。

*1:Firefoxをマルチプロセス化したElectrolysis(電気分解)プロジェクトが分子に関係していたことを踏まえた名称とみられるが、エンジン部分の名称をQuantumに変えるわけではない。

*2:rust-bindgenというバインディングジェネレータを使用する。

*3:Firefox 48に新メディアパーザが最初のRust言語製コンポーネントとして搭載された話は、記憶に新しい。

FirefoxのFlashサポートがいつまで続くか予想してみる

段階的に減らされるFlashのサポート

MozillaがFirefox 52でNPAPI(Netscape Plug-in API)プラグインのサポートを原則として打ち切る中、例外的にAdobe Flashプラグインだけはサポートが続く。プラグインが最新版であれば初期設定で「常に有効化する」扱いになるという優遇ぶりだ。この扱いはいつまで続くのだろうか。また、Flashプラグインのサポートが廃止されるのは、どの程度先のことなのだろうか。

Chrome 55以降でHTML5版コンテンツがデフォルトになるとか、Safari 10はHTML5版コンテンツを優先してプラグイン版コンテンツの有効化にはユーザーのクリックが必要といった話を耳にすると、Mozillaがすぐにでも追随しそうに感じるかもしれない。だが、かなり保守的な計画が立てられているのが実情だ。

Reducing Adobe Flash Usage in Firefox | Future Releases和訳)で述べられているように、Mozillaは2017年中にFlashコンテンツをすべて「実行時に確認する」扱いにし、再生・実行時にはユーザーのクリックまたはタップを要求する(以下CtP:クリック・トゥ・プレイ)。他のブラウザが同年中にFlashのサポートを全廃する勢いなのに比べると、穏健な態度といえそうだ。ゆっくりと、しかし着実に有効化するFlashの数を減らしていく、というのがMozillaの方針なのである。

完全廃止は数年先

過去を振り返ってみると、MozillaがFlash以外のプラグインのサポートを廃止するまでに、ずいぶんと時間がかかった。2013年9月に原則CtP化の方針を打ち出したときは、急進的な印象を受けたものだが、2014年2月にはホワイトリストに掲載されたものは例外とされることになった。実際にリリース版でこの機能が有効化されたのは、同年6月のFirefox 30からだ。そして、ようやくFirefox 47になってこのホワイトリストが削除された。そこからさらにバージョンを5つ重ねて、上記のサポート廃止に至るわけだ。

しかも、ことFlashに関しては、ユーザーに与える影響の大きさからMozillaは慎重な姿勢を示すのが通例である。つい最近も、Firefox 49.0.2で非同期プラグインレンダリング(Asynchronous Plugin Rendering)の設定を有効化したところ、Flashコンテンツの表示が異様に遅くなる、Flashベースのゲームがプレイできないといった問題があちこちで発生したため、Mozillaはシステムアドオンを投入して、Windows向け32bit版では設定を再度無効化することにした。Flashのサポート廃止がMozillaの目標とはいっても、そこに到達するまでの道のりはたぶん長いものになるだろう。

2016年9月末にアナウンスされたMortarプロジェクトの存在も、Mozillaが近いうちにFlashのサポート廃止を打ち出すことはないだろうとの推測を裏付ける。このプロジェクトは、Googleが開発するPPAPI(Pepper Plug-in API)をFirefoxが内部的にサポートし、PDFiumライブラリとPPAPI版Flashプラグインを移植するというものだ*1。PPAPIはChromeのプロセス分離を前提に実装されているため、Firefoxのマルチプロセス機能(e10s)が完全に有効化されてからでなければ、Mortarプロジェクトの成果をNightlyチャンネルに投入することは難しいとみられる。

たとえば、Firefox Nightly 53にPPAPI版Flashが投入されるとして、バグを潰した後にAuroraチャンネルで有効化されるのは、早くてもFirefox 54だろう。そのままリリース版まで進むという最短コースを辿っても、ユーザーの手元に届くのは2017年6月だ。仮にMozillaが2世代先のESRのベースとなるFirefox 59(2018年3月リリース)でFlashのサポートを廃止するつもりなら、せっかく導入した技術がわずか9か月間しか利用されないことになってしまう。少なくともプラス1年はサポートを延ばすと考えるべきだろう。

想定されるプロセス

MozillaはFlashのサポート廃止に向け、大きく分けて2つの手段を採用する。1つはコンテンツの自動的な置き換えやブロックで、ユーザーが接触するFlashコンテンツを減らす試みだ。もう1つは既に述べた全面CtP化で、1つ目の手段でふるいにかけられたFlashコンテンツがユーザーのアクションなしに動作するのを防ぐ。

1つ目の手段は、一部が既に実装済みである。たとえば、Firefox 47では、Webサイト内に埋め込まれたYouTubeのFlash版動画プレイヤーを、HTML5版プレイヤーへと自動的に置き換えるようになった(Bug 769117)。この機能は、HTML5版コンテンツをプラグイン版コンテンツに優先させるという、より一般的な機能へと拡大される予定だ(Bug 1277346)。

また、Firefox 49では、トラッキングに用いられる不可視のプラグインが初期設定で無効化された(Bug 1268120)。この機能も、サードパーティーのドメインがFlashプラグインを起動させようとする場合、そのドメインがMozillaの管理するブロックリストに掲載されているときは起動を無効化するという、より一般的な機能へと拡大されていく(Bug 1277876)。Windows向け32bit版におけるwindowedモードの廃止(Bug 1296400*2もこの流れに位置づけられるだろう。

2つ目の手段である全面CtP化は、今のところ手がかりがないので推測に頼るしかないのだが、まずは単純に既存の「実行時に確認する」を初期設定にするのではないか。この場合、ユーザーはアドオンマネージャで「常に有効化する」へと設定を変更することができるし、クリックしてFlashを有効化する際、特定のドメインでは「常に許可する」こともできる。

だが、おそらくMozillaが2017年中に目指しているのは、こうした常時有効化の設定を排除したCtP化だろう。つまり自動的に再生・実行されるFlashコンテンツはなくなり、ユーザーが積極的に有効化のアクションをとったコンテンツに限って、Flashが起動するわけだ。

さらにその先、2018年に入ると、「実行時に確認する」の設定を残しつつ「無効化する」が初期設定になっていくとみられる。タイミングとしてはFirefox 59のリリース時点で、ESRにおいては「実行時に確認する」が初期設定のままという形で分岐する可能性が高い。もっとも、Flash以外のプラグインがそうであったように、CtPから一足飛びに廃止という流れも考えられる。ただ、前述のMortarプロジェクトがESRだけを念頭に置いたものとは思われないので、やはり通常版でも有効化の余地は残すのではないか。

以上の推測が正しいとすると、FirefoxにおけるFlashのサポートが完全に廃止されるのは、通常版で2018年半ばから後半にかけて、ESRで2019年第1四半期以降になると予想される。

*1:ちなみに、JavaScriptアプリによるFlashプラグインの代替を目指したShumwayは、開発が事実上中止され、Firefox 47時点で本体からコードが削除された

*2:64bit版では廃止済みBug 1248821参照)。

Firefox 52以降はFlash以外のプラグインが使用不可に こっそり使い続ける方法とは

MozillaはFirefox 52でプラグインのサポートを大幅に縮小する。具体的には、自動的にインストールされるもの(OpenH264 Video CodecやWidevine Content Decryption Module)を除くと、サポートされるのはAdobe Flashプラグインだけとなり、他のプラグインは使用できなくなる(Bug 1269807)。*1

アドオンマネージャの〔プラグイン〕の項目を見ると、あっさりした表示になっているのが分かる。Firefox 51までは有効・無効にかかわらず列挙されていたプラグインが、きれいさっぱり無くなっている。

f:id:Rockridge:20161016222612p:plain

Firefox 52以降もFlash以外のプラグインを使い続けたければ、延長サポート版(ESR)を利用してください、というのがMozillaのスタンスだ。この場合、Firefox 53以降に本体に追加される新機能は利用できなくなるため、ユーザーは(Flash以外の)プラグインを取るか新機能を取るかの二者択一を迫られることになる。

Flash以外のプラグインをこっそりと使い続ける方法を以下に紹介しよう。もっとも、今後のFirefoxはこれらのプラグインが動いていないことを前提に開発が進むため、Flash以外のプラグインがクラッシュの原因になっても修正されることはない点に注意してほしい。

上で述べたように、FirefoxのESRではFlash以外のプラグインもサポートが続いているわけだが、それを実現するのがplugin.load_flash_onlyの設定だ。about:configの画面で設定の欄を右クリックし、「新規作成」から真偽値の項目を選ぶ。そして、plugin.load_flash_onlyをfalseに設定する。

これで本体を再起動すればプラグインが無事復活……とはいかない。プラグイン用のキャッシュファイルが書き換えられており(Bug 1307501)、設定を変えても復活しないからだ。本体を再起動する前にこのキャッシュファイルを削除し、改めて作成するよう促す必要がある。

pluginreg.datという名のキャッシュファイルは、プロファイルフォルダ内に存在する。プロファイルフォルダへの移動は、Firefoxのヘルプメニューからトラブルシューティング情報(about:support)のページを呼び出し、〔アプリケーション基本情報〕のプロファイルフォルダ欄から「フォルダを開く」のが手っ取り早い。

まとめると、plugin.load_flash_onlyの設定をfalseの値にした状態で追加し、プロファイルフォルダ内のpluginreg.datというファイルを削除してから、Firefox本体を再起動する。これでFlash以外のプラグインは復活する。

(17/01/23追記)
同一プロファイルでESRと非ESRを切り替えた場合に混乱が生じないようにするため、plugin.load_flash_onlyの設定を追加して値をfalseにし、再起動するだけで、Flash以外のプラグインが復活するようになった(Bug 1330998)。もっとも、将来的に設定による切り替えはできなくしていく方針が示されており(Comment 17参照)、本記事の方法がいつまで通用するかはわからない。

なお、注に書いたAdobe Primetime CDMは、Firefox 52でアドオンマネージャに表示されなくなり(Bug 1329538)、Firefox 53でサポートが廃止される(Bug 1329543)。

*1:ちなみに、このバージョンから、Adobe提供のPrimetime Content Decryption Moduleはオンデマンドでのインストールとなる(Bug 1304899)。

Firefox 52からWindows XPはESRでのサポートへ移行 Vistaもやや遅れて追随か(追記あり)

Firefoxが通常版でWindows XPをサポートするのはバージョン51までであることが明らかになった。バージョン52以降は法人向け延長サポート版(ESR)でのみサポートされる(Bug 1303827)。

もともとこの話はFirefox 46のリリース前からあって、XP上のFirefoxユーザーの数に配慮した結果、先送りになっていた。Mozilla Corp.の従業員からも、サポートを変更するタイミングとしてはFirefox ESR 52のリリース時という観測が出ていたので、意外感は全くない。

Firefox 52のリリース(2017年3月7日予定)と同時なのか、それとも多少遅れるのかは定かでないものの、XP上のFirefox 51ユーザーに対してはESR 52の自動アップデートが提供されることになりそうだ。2016年3月時点で既に、そうした措置は技術的に十分可能だとされており、そこに1年分のリリースエンジニアリングの進歩が加われば、ますます簡単だろう。

Firefoxは変則的なリリース間隔を採用しているが、これは要するにESRのベースとなるバージョンのリリース時期を毎年同じくらいの時期にするものなので、ESRのサポート終了時期の予測は立てやすい。ESR 45.8のサポートが2017年6月12日まで続くことからすると、ESR 52.8のサポートが終了するのは、2018年6月のどこかになるはずだ。Microsoftのサポートが2014年4月8日に終了していることを考えると、かなり手厚い措置といえるのではないか。

XPのサポートがESRに移行すると決まったことで、俄然注目されるのはWindows Vistaの扱いである。こちらは2017年4月11日にMicrosoftのサポートが切れる。Firefox 52のリリース後だが、Firefox 53のリリース(2017年4月18日予定)よりは前なので、Vista上のFirefox 52ユーザーにESR 52.1を提供すれば、ダウングレードにはならない。

サポートするOSを減らせば、Mozillaとしては製品版リリースまでに行われる各種テストを絞り込めるだけでなく、外部から取り入れているオープンソースのコードが、FirefoxのサポートしているOSに合わないといった問題も避けられる。たとえば、プロセスのサンドボックス化にChromiumのコードを使おうとすると、GoogleがXP/Vistaのサポートを打ち切っているので古いバージョンしか選べないという状況は、FirefoxのサポートOSをChrome(Chromium)と同じにしてしまえば解決するわけだ。

しかも、最近Mozillaは64bit版Firefoxの本格提供に向けて動き出したが、64bit版はWindows 7以降しかサポートしていないため、64bit版が主流になると32bit版だけVistaのサポートを追加する格好になる。また、Firefoxの基盤にあたるGeckoにServoという新開発のブラウザエンジンの技術を取り入れていく話についても、ServoがやはりWindows 7以降しかサポートしないので、Vistaのサポートを残し続けると移植の障害になりかねない。

そのうえ、VistaのマーケットシェアはXPよりもはるかに小さいので、ESRへの移行がFirefoxユーザー全体の中で与えるインパクトも限定的だ。Vista上のユーザーにとっても、Chromeがさっさと撤収する中、MicrosoftのOSサポートが切れてから1年以上もブラウザのサポートを受けられるのは、決して悪い話ではない。

こうして見てくると、MozillaがWindows XPに引き続きVistaも同様の扱いとする可能性は非常に高いといえるだろう。

(16/09/29追記)
やはりVistaもESRでのサポートに移行する模様である。米国時間の2016年9月26日に登録されたBug 1305453では、「XP/Vista上のユーザーをESR 52に移行させる」と表現されている。XPとVistaを区別しない書きぶりは、Vista上のFirefox 51ユーザーに対しても、Firefox ESR 52の自動アップデートが提供されるという趣旨にも読める。なお、Firefox Nightly 53の開発サイクル冒頭でインストーラに手が加えられ、XP/Vista上にはインストールできなくなるという。

ESRチャンネルに移行した場合、本当に2018年6月までサポートが続くのか疑問に思う向きがあるかもしれない。だが、ユーザー数が少ないOS X 10.6~10.8でさえ、Firefox 48を最後に通常のチャンネルではサポートが打ち切られた後も、ESRチャンネルでは52.2(サポート終了日:2017年8月7日)までサポートが継続されることになっている(Bug 1293777)。それよりもはるかにユーザー数が多いXP/Vistaについて、ESRのサポート期間の途中でOSのサポートが打ち切られる可能性はまずないと考えてよいだろう。

(16/10/25追記)
Mozillaの技術者から、XPおよびVistaユーザーは自動的にESR 52チャンネルに切り替わるというコメントが出た。本文に記載したとおり自動アップデートが提供されることになる。

(16/11/27追記)
当初の話からは若干変わって、ESRへの切り替えはFirefox 53のリリース時点で行われるようだ(Bug 1315083)。とはいえ、もともと通常版Firefox 52とESR 52.0は、若干の設定の違いを除けば同じものなので、この計画変更がユーザーに与える影響はごく小さい。なお、この時点で通常版のサポートは、Windows XP/Vistaだけでなく、サーバ向けのWindows 2003/2008(R2を除く)でも終了する(Bug 1317780)。

Windows向けFirefox 52で64bit版が主役に 2017年後半には自動アップデートも提供へ(追記あり)

Windows向け64bit版Firefoxは、2014年11月に発表されたプランからすると提供がかなり遅れており、Mozillaとしても慎重ならざるを得なかったのか、これまで新たな計画が明らかにされることはなかった。だが、ここにきてFirefox/Win64 - MozillaWikiに具体的なスケジュールが掲載されるようになり、本腰を入れてきた感がある。

上記のスケジュールは、1つひとつが簡潔な記載になっているため、読み解くには様々な情報と突き合わせる必要がある。現在判明しているところでは、まず、2016年9月下旬から10月上旬にかけて、新しいダウンロードページのテストが実施される。Firefox 50のリリース予定日が11月8日(米国時間。以下同じ)であることを踏まえたものとみられ、おそらくそのリリースに合わせて、MozillaのWebサイトのトップページから64bit版Firefoxのスタンドアローン型インストーラ(フルインストーラ)への導線が強化される。

次のステップはFirefox 52で、適格性のあるユーザーに対しては、軽量インストーラ(スタブインストーラ)が初期設定で64bit版をインストールするようになる(Bug 797208)。ここで、適格性のあるユーザーとは、搭載メモリが4GB以上のPCでWindows 7以降のOSを使用しているユーザーを指す*1。軽量インストーラはMozillaのWebサイト以外でも広く公開されており、多くのユーザーがこの時点で64bit版に触れる機会を持つことになるはずだ。脇役だった64bit版は、ついに32bit版を押しのけて主役となるわけだ。ちなみに、かつてのプランでは、軽量インストーラに64bit版が統合され、ユーザーが選択できるようになるのがフェーズ2とされていた。今回のスケジュールは、64bit版を初期設定にした点が目新しい。

最後に、2017年後半には、適格性のあるユーザーが32bit版を使用している場合、64bit版が自動アップデートで提供される(Bug 1274659)。かつてのプランでフェーズ3と呼ばれていた段階であり、ここまできてようやく、2014年11月に発表されたプランが完遂されたことになる。Firefoxのリリーススケジュールを見ると、2017年の後半にリリースされるのは3バージョン。すなわち、8月8日リリースのFirefox 55、10月3日リリースのFirefox 56、11月28日リリースのFirefox 57だ。MozillaWikiの改版履歴をチェックするとわかるが、当初は2017年第2・第3四半期となっていたものが、単に第3四半期とせず、後半に変更されている。つまり第4四半期にずれ込むことを考慮したわけで、Firefox 56が暫定的なターゲットではないか。*2

スケジュール通り進められるかどうかは、前提条件を確保できるか否かにかかっている。MozillaはFirefox 52でFlash以外のNPAPIプラグインのサポートを廃止することにしているが、この予定が延びてしまうと、64bit版を主役にするという計画にも狂いが生じる。また、FlashプラグインについてMozillaは自前でサンドボックス化を実現していくが、これに関連するバグを潰しきれるかという問題がある。さらにいえば、バイナリベースの拡張機能に関し、XPCOMによるものは既にFirefox 41で廃止されたが、js-ctypesによるものの廃止にあたっては、WebExtensionsによる代替機能の提供を考慮する必要があるかもしれない

64bit版への移行は、ポインタサイズが倍になる関係で消費メモリが25%増しになるというデメリットもあるが、処理の高速化に加えて、アドレス空間消尽の問題がなく、アドレス空間配置のランダム化(ASLR)が強化されてセキュリティが向上するなど、メリットも大きい。今回のスケジュールのまま開発が進むことを期待したい。

(17/02/12追記)
本記事執筆後に動きがあり、本文の内容は最新ではない。2017年10月上旬までにWindows向け64bit版Firefoxの自動アップデートが開始 - Mozilla Fluxを参照してほしい。

*1:Windows向け64bit版FirefoxはWindows 7以降でしか動作しない。

*2:ちなみに、OS X向けFirefox 53では、Windows向けに先んじてビルドがIntel 64bit版に一本化される見込み(Bug 1295375)。