ビルドの基本

問題を報告 ソースを表示

ビルドシステムはエンジニアリング組織にとって最も重要な部分の一つです。各デベロッパーが 1 日に数十または数百回もやり取りする可能性があるためです。組織の拡大に合わせてデベロッパーの生産性を高めるには、フル機能のビルドシステムが必要です。個々の開発者にとっては、コードをコンパイルするだけなので、ビルドシステムが過剰に見えることがあります。しかし、規模が大きいと、コードベースの別の部分やライブラリなどの外部リソースに依存するような共有依存関係の管理に、ビルドシステムが役立ちます。ビルドシステムを使用すると、ビルドを開始するのに必要なコードをすべて揃えることができます。また、エンジニアがリソースと結果を共有できるようにセットアップされている場合、速度が向上します。

このセクションでは、Bazel の作成に関する設計上の決定事項を含め、システムのビルドとビルドシステムの歴史と基本事項について説明します。Bazel、Buck、Pants などのアーティファクト ベースのビルドシステムに慣れている場合は、このセクションをスキップできます。ただし、アーティファクト ベースのビルドシステムがスケーリングの有効化に優れている理由を理解するのに役立ちます。

  • ビルドシステムのメリット

    ビルドシステムを使用したことがない場合は、ここから始めます。このページでは、ビルドシステムを開発する必要がある理由と、組織が少数のデベロッパーを超えてスケーリングを開始したときにコンパイラとビルド スクリプトが最適な選択ではない理由について説明します。

  • タスクベースのビルドシステム

    このページでは、タスクベースのビルドシステム(Make、Maven、Gradle など)とその課題について説明します。

  • アーティファクト ベースのビルドシステム

    このページでは、タスクベースのビルドシステムの課題に対応するアーティファクト ベースのビルドシステムについて説明します。

  • 分散ビルド

    このページでは、分散ビルド、またはローカルマシンの外部で実行されるビルドについて説明します。リソースを共有し、結果を構築するには、より堅牢なインフラストラクチャが必要です(これが真のウィザードの登場する場所です)。

  • 依存関係の管理

    このページでは、大規模な依存関係のウォッチフェイスの追加機能の一部と、そうしたウォッチフェイスの追加機能に対抗するための戦略について説明します。