初印象とオンボーディング
Buck2 のウェブサイト(buck2.build)を訪れると、すっきりとした、ほぼ無地のランディングページが表示されました。キャッチコピーはすぐに期待を設定します:「Buck の後継者」。サイトは最小限で、サポート言語の短いリスト(C++、Python、Rust、Haskell、Erlang、OCaml、Java、Kotlin、Go)と、3つの強調された利点(高速、信頼性、拡張性)があります。対話型デモやオンラインプレイグラウンドはありません。Buck2 はコマンドラインのビルドシステムであり、Web アプリではないからです。「Getting started」リンクは別のドキュメントサイト(おそらく GitHub または Read the Docs)にリンクしており、そこにインストール手順とクイックチュートリアルがありました。オンボーディングの流れは開発者ツールとしては典型的です。パッケージマネージャーでインストールするか、ソースからビルドし、ターミナルで buck2 コマンドを実行します。無料プラン(オープンソースなので製品全体)をテストするために、Buck2 リポジトリからサンプルプロジェクトをクローンしました。最初のビルドは、控えめなマシンでも著しく高速でした。並列実行とキャッシュ機構のおかげです。
コア機能と技術的な深さ
Buck2 は非常に大規模なコードベース向けに設計されたビルドシステムであり、多くの場合、複数言語で書かれた数十万のファイルを含みます。コアエンジンは Rust で書かれており、速度とメモリ安全性に貢献しています。すべてのビルドルールは Starlark で定義されます。Starlark は Bazel のために作られた Python 風の言語です。つまり、Buck2 のコアは言語に依存せず、言語固有のロジックはすべてユーザー定義ルールに委ねられます。これにより、システムは非常に拡張性が高くなります。チームはビルドシステム自体を変更することなく、任意のツールチェーン向けのカスタムルールを記述できます。重要な機能は密閉性(hermeticity)です。ルールはデフォルトで隔離されており、依存関係が欠けているとエラーが発生し、黙って失敗することはありません。この信頼性の保証は、以前のビルドツールからの大きな改善です。また、このツールは分散ビルドとリモートキャッシュをサポートしていますが、セットアップには追加のインフラが必要です。Buck1 とは異なり、Buck2 は状態管理に、よりシンプルな(非 SQLite)内部データベースを使用し、パフォーマンスを向上させ、エッジケースを減らしています。ウェブサイトには特定の基盤モデルや AI 技術についての言及はありません。AI ツールではなく、ソフトウェアビルドフレームワークだからです。ただし、345tool.com で「Text AI > Dev Framework」というカテゴリに割り当てられていることから、分類がずれている可能性があることに気づきました。このツールは純粋にビルドシステムであり、テキスト AI ではありません。比較として、Bazel も同様の機能を提供しますが、より重く複雑であると見なされることが多いです。Pants は Python と Scala に特化した別の代替ツールですが、Buck2 は幅広く多くの言語をサポートしています。
料金とポジショニング
Buck2 は完全に無料で、Apache 2.0 ライセンスのオープンソースです。有料プラン、エンタープライズ版、使用制限はありません。ウェブサイトには価格が記載されていません。そもそも価格がないからです。これは、同じくオープンソースでありながら有料サポートオプションのエコシステムがより広範な Bazel などの競合とは対照的です。このツールは Meta(Facebook)が支援しており、同社は内部の巨大なモノレポで使用しています。この組織的な後ろ盾は信頼性を与えますが、コミュニティは Bazel や CMake と比較するとまだ小さいです。ドキュメントは詳細ですが、Buck1 に精通していることを前提としている場合があります。コマンドラインインターフェース以外にプログラムからアクセスするための公式 API はありません。ただし、シェルコマンドを通じて CI システムと統合できます。Starlark による拡張性は強力ですが、別の DSL を学ぶ必要があります。ウェブサイトのミニマリズムは、ツールのターゲットユーザーを反映しています。すなわち、ビルドシステムとは何かをすでに理解しており、高速で信頼性の高いものを求める経験豊富な開発者です。
Buck2 を誰が使うべきか
Buck2 は多言語モノレポに取り組む大規模エンジニアリングチームに最適であり、特にすでに Buck1 を使用しているチームや、他のビルドシステムからの移行を検討しているチームに適しています。その密閉性と速度により、毎日数千人の開発者が変更をプッシュする組織に理想的です。個人の開発者や小規模スタートアップにとっては、学習曲線とセットアップのオーバーヘッドが、規模の小さいプロジェクトには高すぎるかもしれません。プロジェクトが単一言語または小規模であれば、Make、Cargo、Gradle などのよりシンプルなツールで十分です。本当の制限は、コミュニティエコシステムが比較的小さいことです。Bazel と比較して、事前構築されたルールやサードパーティツールが少ないです。もう一つの制限は、ビルドを監視するためのグラフィカルユーザーインターフェースや Web ダッシュボードがないことで、一部のチームはこれを期待します。最終的に、Buck2 は速度と信頼性の約束を果たしますが、ルール作成とインフラへの投資が必要です。増分ビルドの遅さやキャッシュミスの信頼性のなさに悩んでいるなら、試してみることをお勧めします。Buck2 の詳細は https://buck2.build/ をご覧ください。
コメント