Googleのソフトウェアエンジニアリング ―持続可能なプログラミングを支える技術、文化、プロセス
by Titus Winters, Tom Manshreck, Hyrum Wright, 竹辺 靖昭, 久富木 隆一
18章ビルドシステムとビルド哲学
Erik Kuefler 著
Lisa Carey 編
Googleのエンジニアたちに、Googleで働くことの何が(無料の食べ物と素晴らしい製品の他に)最も好きかと尋ねたら、びっくりするような答えを聞くかもしれない。なんと、エンジニアたちはビルドシステムを愛しているのだ†1。Googleは創業以来、社内のエンジニアたちが素早く確実にコードを開発できる状態を担保するというゴールを抱いて、途方もない量のエンジニアリングに関する労力を、自社ビルドシステムの一からの開発へと注いできた。Googleでの取り組みは大きな成功を収めたので、このビルドシステムの主要な構成要素であるBlazeに相当するものが、会社を去った元グーグラーたちによって幾度となく再実装されてきている†2。2015年に、GoogleはついにBazel(https://bazel.build/)という名のBlazeの実装をオープンソース化した。
†1 社内の調査では、83%のグーグラーがビルドシステムに満足していることを報告しており、19個の調査対象のうち、4番目に満足度の高いツールとなっている。ツール全体の平均満足度は69%だった。
†2 https://buck.build/ と https://www.pantsbuild.org/ を参照してほしい。
18.1 ビルドシステムの目的
全てのビルドシステムの根底には単純明快な目的がある。それは、エンジニアたちが書いたソースコードを、機械が読める実行可能バイナリへと変換するというものだ。優れたビルドシステムというものは、一般に、2つの重要な属性へ向けた最適化に努めるだろう。
速い
開発者はコマンドを1つだけ入力すればビルドを実行できるべきであり、生成されるバイナリを多くの場合たった数秒程度以内に取得できるべきである。 ...