環境構築で Homebrew から Devbox に乗り換えた話¶
これまで Homebrew を使って環境構築をしていた。環境構築が完了するまで 20 分以上かかっていたが、Devboxに乗り換えたら数分で環境構築できるようになった。
Devbox とは¶
Devbox は、分離された開発環境を構築するためのツール。次のような特徴がある。
- Docker や Nix Language を使うことなく環境構築可能
- プロジェクトごとに環境を分離でき、開発マシン全体で使う環境も構築できる
- 設定ファイルを Git 管理することで共有・バックアップ・同期が容易
- 豊富なパッケージをサポート
- サービスのオーケストレーション
- キャッシュを使った高速な環境構築
Homebrew からの乗り換え¶
Homebrew をメインの環境構築ツールとして使っていたが、環境構築に時間がかかっていた。環境構築を効率化するために次のツールを検討した。
- Devbox
- installer
- gh-install
- dra
- install-release
- bin
- mamba
- eget
- whalebrew
- spack
- pixi
- nix
- Flox
- meta-package-manager
- nala
- mise
- asdf
- Homebrew の継続
Homebrew から移行を考えた理由は、環境構築に時間がかかることだった。そのため、ソースコードを一からビルドして環境構築する方法はなるべく避け、pre-built binary をインストールできれば環境構築が速くなると考えて調査を進めた。検討した主な候補と、選択肢から外した理由は次のとおりだ。
| 候補 | 選択肢から外した理由 |
|---|---|
| pre-built binary 系ツール | 対応するパッケージが少なく、メインとして使うのは難しいと判断 |
| nix | パッケージは豊富だが、使いこなすための学習コストが高いと感じた |
| whalebrew | Docker イメージを使ってインストールするため、Mac で Docker を使う一工夫が必要 |
このような背景と次の理由で Devbox を選択した。
- キャッシュを使って高速にインストールできる
- 豊富なパッケージ
- シンプルで利用にあたっての学習コストが低い
- OS への依存が少なく、いろいろな環境で使える
- プロジェクト単位と開発マシン全体のどちらの粒度でも環境を用意できる
Devbox の使い方¶
次のコマンドで Devbox をインストールする。
開発マシン全体で使うグローバル環境の操作コマンドは次のとおり。devbox global add jqのようにパッケージを追加することで、環境構築できる。
設定ファイルを GitHub に push することで、他のデバイスでも同じ環境を再現できる。私の設定は次のコマンドで保存・共有できる。
この記事執筆時点で 60 個くらいのパッケージ(実際の devbox.json)をインストールしているが、環境構築にかかる時間は数分程度に短縮された。
プロジェクト個別に環境構築できる点も気に入っており、プロジェクトごとに異なるバージョンのパッケージを使えるほか、何かツールを手軽に試すときにも便利だ。
まとめ¶
Homebrew を使っていた頃は環境構築に 20 分以上かかっていたが、Devbox に移行した後は数分で完了するようになった。Devbox はシンプルで使いやすく、設定を共有できるうえに、開発マシン全体とプロジェクトごとに環境を分離できる。そのため、気になるツールを試すときにも全体の環境に影響を与えずに済む。