Mozilla Foundationによって公開されている公式のFirefoxバイナリは、さまざまな環境で安定して動作するようにビルドされている。言い換えれば、チューニングの余地があるということだ。本稿では、Firefoxのビルド方法について解説し、コンパイラやビルドオプションによるパフォーマンス向上に挑戦する。
Firefoxはオープンソースソフトウェアであるため、環境さえ整っていれば誰もが簡単にコンパイルできる。実際、ユーザーの手によってビルドされた「野良ビルド」などと呼ばれるバイナリがネット上で数多く公開されている*。Mozilla Foundationによって公開されている公式バイナリは、さまざまな環境で安定して動作するよう「消極的」なコンパイルオプションが指定されているが、このような「野良ビルド」の多くはコンパイラによる最適化、特にPentium 4やAthlonなど、特定のCPU向けの最適化が行われていることが多い。
最近のコンパイラは最適化能力が強化されているため、適切な設定でFirefoxをビルドすることでより高速なFirefoxを作れる可能性が高い。また、コンパイル時のオプションでしか有効/無効化できない機能も存在する。
そこで、本パートではLinuxおよびWindows環境におけるFirefoxのビルド方法を解説し、さらにビルド時のオプションやコンパイラの違いによって、Firefoxのパフォーマンスがどれだけ変わるのか検証する。
なお、Firefoxはすべてのプラットフォームに対して同じソースからビルドされており、そのビルド方法もほぼ共通化されている。また、Firefoxはブラウザやメールクライアント、HTMLエディタなどが統合されたアプリケーションであるMozillaに由来しているため、現在でもそのソースの大部分はMozillaやThunderbird、カレンダーアプリケーションであるSunbirdなどと共有されている。よって、ここで解説するFirefoxのビルド方法はほかのMozilla由来アプリケーションのビルドや、ほかのプラットフォームでのビルドなどにも簡単に応用できるだろう。
Linux環境でのコンパイルにはGCCを使用するのが一般的だ。また、各種開発ツールやライブラリが必要である。最低限ビルドに必要なツールやライブラリは表1のとおりだ。最近のディストリビューションではどれもパッケージの形で入手できるので、適宜インストールしてほしい。なお、表1ではDebian GNU/Linux "sarge"(以下、Debian)とFedora Core 4(以下、Fedora)でのパッケージ名も併記してある。
Firefoxのビルドの手順は次のようになる。
なお、Firefoxのビルドには少なくとも300Mバイト以上、デバッグ版をビルドする場合には1.5Gバイト以上の空きHDDスペースが必要だ。また、Pentium 4/3GHz、メモリ512Mバイトのマシンでビルドを行ったところ、30分〜1時間程度の時間が必要であった。
Firefoxのソースアーカイブを次のように任意のディレクトリに展開する。
$ tar xvjf firefox-2.0.0.3-source.tar.bz2
ソースアーカイブを展開するとmozillaディレクトリが作成され、そのディレクトリ内にソースが展開される。なお、このmozillaディレクトリの名称はビルドスクリプト内にハードコーディングされているため、変更すると正しくコンパイルが行えないようだ。
Firefoxのビルド設定は一般的なアプリケーションとは異なり、mozillaディレクトリ中に.mozconfigという名前で設定ファイルを作成することで行う。make実行時にこの.mozconfigディレクトリを参照してconfigureが実行され、ビルドが行われる仕組みだ。
. ~/mozilla/browser/config/mozconfig ←Firefox用のデフォルト設定ファイルを読み込み
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/firefox_build ←バイナリの生成先ディレクトリを指定
export CC="/usr/local/bin/gcc" ←使用するCコンパイラを指定
export CXX="/usr/local/bin/g++" ←使用するC++コンパイラを指定
ac_add_options --disable-optimize ←--disable-optimizeオプションを指定
リスト1は.mozconfigファイルの例である。この例では、Firefoxをmozillaディレクトリ以下のfirefox_buildディレクトリ中で、「--disable-optimize」オプション付きでビルドするよう設定している。.mozconfig内ではconfigureに与えるオプションを「ac_add_options」で指定できるほか、configure実行時に設定する環境変数も指定できる。なお、configureで設定できる代表的なビルドオプションは表2のとおりだ。ビルドオプションの完全な一覧は次のようにconfigureを「-help」オプション付きで実行することで表示できる。
$ ./configure --help
また、Web上で.mozconfigファイルの内容を生成できる「UNIX Build Configurator」というツール(図1)も公開されている。適宜利用してほしい。
「Firefoxまとめサイト」で多くの最適化ビルドが紹介されている。
configureオプションではほかのGUIライブラリを選択することもできるが、動作は未確認。
Copyright © ITmedia, Inc. All Rights Reserved.