コンテンツにスキップ

環境構築で Homebrew から Devbox に乗り換えた話

これまで Homebrew を使って環境構築をしていた。環境構築が完了するまで 20 分以上かかっていたがDevboxに乗り換えたら、数分で環境構築できるようになった。

Devbox とは

Devbox は、分離された開発環境を構築するためのツール。次のような特徴がある。

  • Docker や Nix Language を使うことなく環境構築可能
  • プロジェクトごとに環境を分離でき、開発マシン全体で使う環境も構築できる
  • 設定ファイルを Git 管理することで共有・バックアップ・同期が容易
  • 豊富なパッケージをサポート
  • サービスのオーケストレーション
  • cache を使った高速な環境構築

Homebrew からの乗り換え

Homebrew をメインの環境構築ツールとして使っていたが、環境構築に時間がかかっていた。環境構築を効率化するために Devbox を含めて次のツールを検討した。

Homebrew から移行を考えた理由は、環境構築に時間がかかることだった。そのため、ソースコードを一からビルドして環境構築する方法はなるべく避けるようにした。pre-built binary をインストールできれば、環境構築が速くなると考え、調査を進めたが対応するパッケージが少なく、メインとして使うのは難しいと判断した。nix は豊富なパッケージをサポートしているが、使いこなすための学習コストが高いと感じた。whalebrew は Docker イメージを使ってパッケージをインストールするが、Mac で Docker を使うのは一工夫必要なので、これも選択肢から外した。

このような背景から次の理由で Devbox を選択した。

  • cache を使って高速なインストール
  • 豊富なパッケージ
  • シンプルで利用にあたっての学習コストが低い
  • OS への依存が少なく、いろいろな環境で使える
  • プロジェクトごとに環境を分離でき、開発マシン全体で使う環境も構築できる

Devbox の使い方

次のコマンドで Devbox をインストールする。

curl -fsSL https://get.jetify.com/devbox | bash

global の環境構築に関するコマンドは次の通り。devbox global add jq のようにパッケージを追加することで、環境構築できる。

 devbox global
Manage global devbox packages

Usage:
  devbox global [command]

Available Commands:
  add         Add a new package to your devbox
  install     Install all packages mentioned in devbox.json
  list        List installed packages
  path        Show path to [global] devbox config
  pull        Pull a config from a file or URL
  push        Push a [global] config. Leave empty to use jetify cloud. Can be a git repo for self storage.
  rm          Remove a package from your devbox
  run         Run a script or command in a shell with access to your packages
  services    Interact with devbox services.
  shellenv    Print shell commands that create a Devbox Environment in the shell
  update      Update packages in your devbox

Flags:
  -h, --help   help for global

Global Flags:
  -q, --quiet   suppresses logs

Use "devbox global [command] --help" for more information about a command.

設定ファイルを GitHub に push することで、他のデバイスでも同じ環境を再現できる。私の設定は次のコマンドで保存・共有できる。

1
2
3
4
5
# push config to GitHub
devbox global push https://github.com/Nishikoh/devbox.git

# pull config from GitHub
devbox global pull https://github.com/Nishikoh/devbox.git

この記事執筆時点で 60 個くらいのパッケージ(参考)をインストールしているが、環境構築にかかる時間は数分程度に短縮された。

プロジェクト個別に環境構築できる点も気に入っており、プロジェクトごとに異なるバージョンのパッケージを使うこともできるし、何かツールをサクッと試すときにも便利。

まとめ

Homebrew を使っている頃は環境構築に 20 分以上かかっていたが、Devbox に乗り換えたことで数分で完了するようになった。Devbox はシンプルで使いやすく、設定の共有もできる。開発マシン全体とプロジェクトごとに環境を分離できる点も便利で、気になるツールを試すときにも使いやすい。