Devbox - 再現可能な開発環境 チートシート
Devbox(Jetify)は 分離・再現可能な開発環境を Docker または仮想マシンなしで構築。Nix で構築されますが、JSON 設定(devbox.json)と親しみやすい CLI の背後に Nix 言語を隠します — devbox add nodejs@20 を実行して Nix derivation 書きません。結果:チーム全員(と CI)が正確なバージョンにピンされた同じツールチェーン、ホストシステムから分離を取得。
インストール
始める
| コマンド | 説明 |
|---|
devbox init | プロジェクトに devbox.json 作成 |
devbox add nodejs@20 python@3.12 | パッケージ追加(ピンバージョン) |
devbox rm python | パッケージ削除 |
devbox install | devbox.json 内すべてインストール |
devbox shell | 分離環境に入る |
devbox run <script> | 環境内で定義スクリプト実行 |
パッケージ管理
| コマンド | 説明 |
|---|
devbox add go@1.22 | 特定バージョンを追加 |
devbox search postgresql | Nix パッケージカタログ検索 |
devbox list | インストール済みパッケージ一覧 |
devbox update | パッケージを許可された最新版へ更新 |
devbox info nodejs | パッケージ詳細表示 |
バージョンは Nixpkgs カタログに対して解決されるため、nodejs@20 はどこでも再現可能。
設定(devbox.json)
{
"packages": ["nodejs@20", "python@3.12", "postgresql@16"],
"shell": {
"init_hook": ["echo 'Welcome to the project env'"],
"scripts": {
"dev": "npm run dev",
"test": "npm test",
"db": "pg_ctl start"
}
}
}
| フィールド | 目的 |
|---|
packages | ピンツール/言語バージョン |
shell.init_hook | シェル入時に実行コマンド |
shell.scripts | 名前付きコマンド(devbox run dev) |
env | プロジェクト環境変数 |
シェル・スクリプト
| コマンド | 説明 |
|---|
devbox shell | 対話的分離シェル |
devbox run dev | dev スクリプト実行 |
devbox run -- npm ci | 環境内で任意コマンド実行 |
exit | Devbox シェル終了 |
サービス(プロセス管理)
Devbox はプロジェクト用バックグラウンドサービス(データベースなど)管理可能。
| コマンド | 説明 |
|---|
devbox services ls | 設定済みサービス一覧 |
devbox services up | サービス開始 |
devbox services stop | サービス停止 |
devbox add postgresql --start-services | サービスバック付きパッケージ追加 |
CI・コンテナ
| 用途 | 実行方法 |
|---|
| CI | Devbox インストール、devbox run test 実行 — ローカルと同じ環境 |
| Docker | devbox generate dockerfile が再現可能イメージ生成 |
| Devcontainer | devbox generate devcontainer で VS Code 用 |
| Direnv | devbox generate direnv で cd 時に自動入 |
一般的なワークフロー
# ゼロからプロジェクト環境を構築
devbox init
devbox add nodejs@20 postgresql@16
devbox shell # node + postgres が利用可能、ピン済み
# ローカルと CI で同じ方法でタスク実行
devbox run test
# 同じ定義から Docker イメージ生成
devbox generate dockerfile
Devbox vs 代替案
| 項目 | Devbox | Dev Containers | Nix(生) | mise |
|---|
| バックエンド | Nix | Docker | Nix | 独自レジストリ |
| 設定 | JSON | devcontainer.json | Nix 言語 | .mise.toml |
| 分離 | 実(Nix store) | コンテナ | 実 | ツールバージョン |
| 学習曲線 | 緩和 | 中程度 | 急勾配 | 緩和 |
| 最適用途 | 再現環境・簡単 | コンテナベース開発 | 完全 Nix 力 | バージョン管理 |
Nix の基礎力も参照。コンテナベース開発は devcontainer。ツールバージョン管理は mise。
リソース