ビルドの基本

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

このセクションでは、Bazel の作成にかかわる設計上の決定事項など、システムのビルドとビルドに関する歴史と基礎について説明します。Bazel、Buck、Pants などのアーティファクト ベースのビルドシステムに精通している場合は、このセクションをスキップできます。ただし、アーティファクト ベースのビルドシステムを使用する理由を理解することは役立ちます。優れたスケーラビリティを実現。

  • ビルドシステムを使用する理由

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

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

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

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

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

  • 分散ビルド

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

  • 依存関係管理

    このページでは、大規模な依存関係の複雑な問題と、その複雑さに対処するための戦略について説明します。