C/C++やObjective C、Objective C++で開発されたアプリケーションを分散コンパイルできるようにするためのツールにdistccがある。distccを使うと、distccがインストールされたマシンの間でビルドを分散して実行するようになるため、ローカルでビルドする場合と比較して大幅にビルド時間を短縮できる。

distccはもともとの開発者であるMartin Pool氏が2004年に公開したdistcc 2.18.3を最後にアップデートが実施されてこなかったが、今回GoogleのBuild Tools Teamによって改良された最新バージョンdistcc 3.0が公開された。従来のdistcc 2.18.3と比較してビルド時間がさらに短縮されているところに大きな特徴がある。

もともとGoogleでは数百万行におよぶコードを持っているC/C++アプリケーションのコンパイルにはdistccを活用していた。distccを使えばローカルのみでビルドする場合と比較して大幅なビルド時間の短縮が実現できるからだ。しかしGoogleとしてはそれでもまだコンパイルにかかる時間が長いと感じていたようだ。

Google Build Tools Teamでdistccのさらなる速度改善を目指して開発が取り組まれ、今回発表されたdistcc 3.0に取り込まれたのが「ポンプモード」と呼ばれる新しいアルゴリズムだ。ポンプモードでは静的解析をおこないプリプロセッサ処理に必要になるヘッダファイルを随時調べ上げ、C/C++ソースコードとヘッダファイルを一緒にプリプロセッサ処理目的で送信する。この結果ワークステーションにおけるCPU負荷が大幅に軽減され、ビルド時間のさらなる短縮につながったとしている。公表されているベンチマークによればSamba、Linux、Apache、glibc、binutilsなどのビルドで50%から200%ほどのビルド時間の改善が確認されたという。

パンプモードが追加されたdistccはすでに1年に渡ってGoogleのC/C++ビルドシステムとして活用されてきたようだ。distccは導入がそれほど難しくない。大規模アプリケーションのビルドに頭を悩ませている場合にはdistccの導入を検討してみるといいだろう。またすでにdistccを導入している場合にはdistcc 3.0のポンプモードを試してみるとよさそうだ。