ビルドシステムは、エンジニアリング組織の最も重要な部分の 1 つです 各デベロッパーは、1 日に数十回から数百回もビルドシステムとやり取りする可能性があります 組織が拡大するにつれてデベロッパーの生産性 を高めるには、フル機能のビルドシステムが必要です。個々のデベロッパーにとっては、コードをコンパイルするだけで済むため、ビルドシステムは過剰に思えるかもしれません。しかし、大規模な環境では、ビルドシステムを使用すると、 コードベースの別の部分や ライブラリなどの外部リソースに依存するなど、共有依存関係の管理に役立ちます。ビルドシステムは、ビルドを開始する前にコードのビルドに必要なものがすべて揃っていることを 確認するのに役立ちます。また、エンジニアがリソースと結果を共有できるようにビルド システムを設定すると、速度が向上します。
このセクションでは、ビルドとビルドシステムの歴史と基本について説明します。 これには、Bazel の作成に至った設計上の決定も含まれます。Bazel、Buck、Pants などのアーティファクト ベースのビルドシステムに精通している場合は、このセクションをスキップできますが、アーティファクト ベースのビルドシステムがスケーリングに優れている理由を理解するのに役立ちます。
-
ビルドシステムを使用したことがない場合は、ここから始めます。このページでは、ビルドシステムを使用する理由と、組織が数人のデベロッパーを超えて拡大し始めたときにコンパイラとビルドスクリプトが最適な選択肢ではない理由について説明します。
-
このページでは、タスクベースのビルドシステム(Make、Maven、 Gradle など)とその課題について説明します。
-
このページでは、タスクベースのビルドシステムの課題に対応するアーティファクト ベースのビルドシステムについて説明します。
-
このページでは、分散ビルド、つまり ローカルマシン以外で実行されるビルドについて説明します。リソースとビルド結果を共有するには、より堅牢なインフラストラクチャが必要です (ここで真の魔法が起こります)。
-
このページでは、大規模な依存関係の複雑さと、 その複雑さに対抗するための戦略について説明します。