
macOSやLinuxで人気のパッケージマネージャーといえばHomebrewですが、そのインストール処理を大幅に高速化することを目指して開発されているのが本日紹介する「Zerobrew」です。
GitHub上では「最大6.6倍高速なHomebrew代替」と紹介されており、Homebrewのエコシステムを活用しながら独自のアーキテクチャで高速化を実現しています。
Homebrewを置き換えるのではなく、活用する
Zerobrewは独自にパッケージをビルドしたり管理したりするわけではありません。実際にはHomebrewが提供するFormulaやBottle、パッケージメタデータなどを利用しています。Zerobrewの特徴は、パッケージの入手後の処理を効率化する点にあります。
プロジェクトの説明として「Homebrewの高性能クライアント」とあることからもわかる通り、Homebrewの豊富なパッケージ資産をそのまま活用しながら、インストール方法を最適化して速度向上を実現しているのです。
驚異的なインストール速度を実現
掲載されているベンチマークでは、100パッケージの一括インストール時にHomebrewが776秒だったのに対し、Zerobrewは117秒を記録しています。また、キャッシュ済みデータを利用する「Warm」状態では、638秒に対してわずか9.3秒という結果が示されています。
| Package | Homebrew (cold) | ZB (cold) | Cold speedup | Homebrew (warm) | ZB (warm) | Warm speedup |
|---|---|---|---|---|---|---|
| Overall (100 packages) | 776s | 117s | 6.6x | 638s | 9.3s | 68x |
| [email protected] | 16.99s | 1.97s | 8.6x | 14.37s | 207ms | 69.4x |
| node | 29.31s | 3.16s | 9.3x | 28.24s | 232ms | 121.7x |
| tesseract | 34.63s | 2.16s | 16.0x | 32.37s | 476ms | 68.0x |
| openjdk | 32.09s | 5.17s | 6.2x | 26.86s | 448ms | 60.0x |
| llvm | 18.22s | 9.14s | 2.0x | 9.66s | 183ms | 52.8x |
Node.jsやPython、OpenJDK、Tesseractなどの主要パッケージでも大幅な高速化が確認されており、とくに再インストール時の性能向上が目立ちます。プロジェクトによれば、100種類のパッケージを対象にしたテストでは、中央値でコールドインストールが5.3倍、ウォームインストールが56倍高速だったとしています。
Zerobrewの高速処理の日持つは、ダウンロード後の処理方法にあります。
HomebrewではRubyによるFormula評価や展開処理、パス書き換え、バイナリ再署名などを実行します。一方のZerobrewは、リロケーション処理をプロセス内部で行い、コンテンツアドレスストレージを利用して効率的にリンクします。これにより、一度取得したデータを最大限再利用できる仕組みになっています。
また、APFSのclonefile機能やコンテンツアドレス方式のストレージを活用し、不要なコピー処理や重複データを削減している点も特徴です。
Zerobrewのインストール方法
Zerobrewは公式インストーラー、またはHomebrew経由で導入できます。READMEでは、まず公式インストーラーの利用が案内されています
curl -fsSL https://zerobrew.rs/install | bash
インストール完了後は、ターミナルを再起動するか、表示されるsourceコマンドを実行して環境を反映します。すでにHomebrewを利用している場合は、以下のコマンドでもインストールできます。
brew install zerobrewhq/zerobrew/zerobrew
Zerobrewのコマンドはzbです。Homebrewのbrewコマンドに近い感覚で利用できるため、既存のHomebrewユーザーでも戸惑うことは少ないでしょう
たとえば単一パッケージをインストールする場合は次のように実行します。
zb install jq
以下のような使用例が紹介されています。
zb install jq # install one package zb install wget git # install multiple zb bundle # install from Brewfile zb bundle install -f myfile # install from custom file zb bundle dump # export installed packages to Brewfile zb bundle dump -f out --force # dump to custom file (overwrite) zb uninstall jq # uninstall one package zb outdated # list packages with newer versions zb upgrade # upgrade all outdated packages zb upgrade jq wget # upgrade specific packages zb reset # uninstall everything zb gc # garbage collect unused store entries zbx jq --version
なお、Zerobrewは現在では実験的な位置付けです。開発者自身は日常利用しているものの、Homebrewを完全に置き換えるよりも、まずは併用することが推奨されています。Homebrewを削除して全面的に移行することは勧められていません。
新しい技術を試したい開発者や、パッケージインストール時間を短縮したいユーザーにとっては魅力的な選択肢ですが、本番環境では慎重な検証が必要でしょう。
まとめ
Zerobrewは、Homebrewの膨大な資産を活用しながら、インストール処理を徹底的に最適化することで高速化を実現する新しいプロジェクトです。特にキャッシュが活用できる環境では圧倒的な速度向上が期待でき、今後の発展次第ではmacOS・Linuxユーザーにとって注目すべき選択肢となりそうです。現時点では実験的なソフトウェアですが、「Homebrewをもっと速くしたい」という課題に対する非常に興味深いアプローチと言えるでしょう。
Hacker Newsでも、Zerobrewに関する議論は行われており、ベンチマーク結果に驚く声がある一方で、「なぜHomebrew本体に取り込まないのか」といった疑問や、ベンチマークの見せ方に対する指摘もみられました。
