Firefoxは「メモリ食い」という悪評を払拭できるか:OSS界のちょっと気になる話(3)(1/2 ページ)
皆さんの中で、Firefoxをご利用の方はどれくらいいますか? すぐにメモリが足りなくなるなぁと思いながら使っている人もいるでしょう。しかし、Firefoxを開発しているMozilla Foundationも問題を放置しているわけではありません(編集部)
Firefoxの炎は尽きてしまうのか
Linuxディストリビューションでは長らくFirefoxが標準のWebブラウザだった(図1)。しかし近年、Firefox以外のものを標準としようとする動きが目立ち始めている。Firefoxに替えてGoogle Chromeを標準のWebブラウザとしようという動きだ。このままFirefoxはユーザー数を減らし続け、進化が止まってしまうのか? 今回はFirefoxを巡るここ1年ほどのニュースを紹介したい。
Googleからセンセーショナルに登場したGoogle Chromeは素早い開発体制とリリースエンジニアリング、便利な機能、そしてシンプルなユーザーインターフェイスと、これでもかと野心的な取り組みを詰め込んだ意欲作だった。
Google Chromeは上級ユーザーの心をつかみ、登場後間もなく、一気にシェアを伸ばした。現在の伸び率を維持したままシェアが増え続ければ、2012年の末にはGoogle ChromeがWebブラウザシェアの50%を握ることになると予測する向きもある(Royal Pingdom - 「Google Chrome could exceed 50% market share by end of 2012 (study)」における予測)。
開発体制が保守的になったことも
Google Chromeが登場したころのFirefoxは、最近のGoogle Chromeのように大きくシェアを伸ばしているところで、MicrosoftのInternet Explorerに追い付け追い越せの勢いだった。しかし、その勢いの影に、開発に対する姿勢がより「慎重」になってきたのではないかという雰囲気もあった。
開発に対する姿勢が慎重になった理由としては、皮肉にもユーザー数の増加が考えられる。当時のFirefoxのユーザー数は、億単位を突破してもさらに伸び続けていた。あまりに多くのユーザーを「抱え込んでしまった」と考えたのかどうかは分からないが、「多数のユーザーに影響を与える」という理由から、新機能の取り込みに消極的になっていった。Webブラウザを変革していくという雰囲気は薄れ、企業内のWebアプリケーション向けに安定して使えることを目指そうという雰囲気が生まれつつあった。Internet Explorerに続く第2のシェアを持つブラウザとしての「責任」を感じていたのだろう。
メモリの無駄遣いが決定打に
Firefoxが活力を失いつつあるところにさっそうと現れたのがGoogle Chromeだ。開発元のGoogleは、6週間おきという短周期のリリースで、最新機能を続々と投入していった。シンプルで効率の良いユーザーインターフェイスに心を奪われるユーザーも続出した。
従来のブラウザに少々飽きつつあった上級ユーザーは、この新しいWebブラウザに惚れ込み、すぐに飛び付いた。しかし世に出たばかりのころのGoogle Chromeなら、まだFirefoxの方が有利な点が残っていた。エクステンションやアドオンの機能だ。エクステンションやアドオンに依存していたユーザーはFirefoxを使い続けた。しかしそれも、長くは続かなかった。Google Chromeも続々とエクステンションを投入してきたからだ。
以上のように、いくつか要因が考えられるが、FirefoxからGoogle Chromeへの移行を加速させた最大の要因は、「メモリを食う」という問題だろう。Google Chromeはタブ1枚ごとにプロセスを割り当てる「マルチプロセスアーキテクチャ」を採用している以上、どうやってもメモリの使用量は多くなる。しかし、Google Chromeはタブを1枚閉じれば、そのタブに割り当てられていたプロセスとメモリを解放できる。
OSは、ハードウェアの空きメモリ容量が不足すると、あまり使われていないデータをメモリからハードディスクに移す(スワップアウト)。スワップアウトが発生し始めると、PCの処理速度は一気に落ちる。こうなると、とても使っていられるものではない。
メモリを浪費し続ける傾向が続いていたFirefoxは、このスワップアウトを発生させるアプリケーションの1つとして悪名を馳せることになってしまった。特に、電源を切らずに起動し続けるノートPCではこれは大きな問題となった。Google Chromeなら、メモリは消費するがタブを閉じればきちんとメモリを解放できると知ったユーザーは徐々にFirefoxから離れていく。
Chromeに対抗するためにふくれ上がったFirefox
Firefoxにおけるメモリ利用効率の改善は、どの時代も大きなテーマだった。Firefox 2の時代はバグの修正や使用方法の改善を進め、Firefox 3.xで1つのマイルストーンを迎える。Firefox 3.xの評価は高く、現在でも一定のユーザーを確保し続けている。
Mozilla FoundationにとってFirefox 4はかなりの難産だった。ユーザーインターフェイスを大きく変えるだけでもかなりの労力が必要だ。その上、Google Chromeに対抗すべく大量の新機能を導入することになった。このような事情からメモリの使用量が一気に上がった。高速化したJavaScriptエンジン、より強化したセキュリティ対策機能、そのほか、大量に増えたさまざまな新機能がメモリをどんどん消費していく。Firefox 4はFirefox 3と比べて優れた機能が多く、性能も高いという評価も受けたが、一部のユーザーからはメモリを消費し過ぎると悪評が立つようになった。
Firefox 4以降、Firefoxは基本的にChromeと同じく6週間おきの短周期リリースを実施。新機能を迅速にユーザーへ届けられるようになった。これで、ユーザーからのフィードバックを得て、処理性能の向上や新機能の追加に継続して取り組む体制ができた。しかし、時を同じくしてメモリ使用量に注目が集まり、Firefoxからユーザーが離れていったのだ。
着実な改善で逆襲の機をうかがう
Firefox以外の主要Webブラウザ(Internet Explorer、Safari、Opera)も、「最先端」というイメージの面では、Google Chromeの後追いを強いられた。当然、Google Chrome以外のWebブラウザが先行し、これをGoogle Chromeがまねるというケースも少なくはなかった。しかしユーザーは、Google Chromeが最先端のWebブラウザで、ほかはそれを「まねている」という印象を抱いていただろう。Googleが掲げた6週間という短期間のリリース周期がユーザーに与えた影響はことのほか大きかったといえる。
しかし、この間、Firefoxの開発陣は何もしていなかったわけではない。FirefoxはMozillaの時代から、何度もWebブラウザのあり方を変革し、その時代にふさわしいWebブラウザであり続けてきた。そしてGoogle Chromeが大きなインパクトをもたらした後、Firefoxは開発ポリシーやリリースエンジニアリングの方針を変え、かつてのように積極的に新機能を取り込んでリリースする体制を取り戻していった。
本稿執筆時点でも「メモリ食いのFirefox」というイメージが定着してしまっているが、実は最新バージョンのFirefoxはFirefox 4と比べるとメモリを消費しないようにできている。例えば、Firefoxを起動して、@ITのトップページと@ITフォーラムの各トップページをタブに展開してからメモリ消費量を計測してみると以下のようになる。OSとFirefoxのバージョンの組み合わせを変えた5例をご覧いただこう。
まずは、Ubuntu 11.04でFirefox 4.0.1を利用した場合だ。以下のような結果になる。RSSの項目が、実際に消費しているメモリ量を表している。単位はKbytesだ。
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND daichi 3709 26.9 21.2 591100 217740 ? Sl 13:51 0:14 /usr/lib/firefox-4.0.1/firefox-bin
次は、Ubuntu 11.04でFirefox 10.0.1を利用した場合だ。
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND daichi 3786 26.6 18.9 564392 193788 pts/1 Sl+ 13:52 0:11 ./firefox-bin
Ubuntu 11.04で、Firefox 13.0a1(正式リリース前のバージョン)を使うとこのようになる。
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND daichi 3886 14.2 17.6 564756 181092 pts/1 Sl+ 13:54 0:13 ./firefox
今度はOSのバージョンを変えてみる、Ubuntu 11.10でFirefox 10.0を使った場合の結果だ。
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND daichi 1783 16.6 18.2 518964 186880 ? Sl 14:36 0:13 /usr/lib/firefox-10.0/firefox
最後は、Ubuntu 11.10でFirefox 13.0a1を使った場合を見てみよう。
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND daichi 2030 9.2 17.2 529928 177096 pts/0 Sl+ 14:40 0:11 ./firefox
Firefoxの各バージョンと、ここまで見てきたメモリ使用量の関係をまとめると表1のようになる。
Firefoxのバージョン(OS) | 物理メモリ消費量(単位はMbytes) |
---|---|
Firefox 4.0.1 (Ubuntu 11.04) | 212.64 |
Firefox 10.0.1 (Ubuntu 11.04) | 189.25 |
Firefox 13.0a1 (Ubuntu 11.04) | 176.85 |
Firefox 10.0 (Ubuntu 11.10) | 182.50 |
Firefox 13.0a1 (Ubuntu 11.10) | 172.95 |
表1 実際に確かめたメモリ使用量とFirefoxのバージョンの関係をまとめた表。1Mbytesを1024Kbytesとして換算し、小数点以下第3位で四捨五入している |
Firefoxのバージョンが上がるごとに確実にメモリ使用量が減っていることが明らかに分かる。メモリの解放やガベージコレクションも新しいバージョンの方がうまく機能するようになっている。利用時間が長くなり、利用頻度が高くなるほど、最新のFirefoxはより少ないメモリで動作する傾向がある。
Copyright © ITmedia, Inc. All Rights Reserved.