devboxとは

misedev containerの代わりになるもので開発環境を統一するのに役立つ 内部ではnixが使われており、より扱いやすく管理するように作られている(nix language → json)

インストール方法

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

基本的にはdevboxを使う際に作成されるjsonファイルで環境の復元が行われるような仕組み

ライブラリで初期化

devbox init

jsonファイルが作成されていることを確認できる

{
  "$schema":  "https://raw.githubusercontent.com/jetify-com/devbox/0.16.0/.schema/devbox.schema.json",
  "packages": [],
  "shell": {
    "init_hook": [
      "echo 'Welcome to devbox!' > /dev/null"
    ],
    "scripts": {
      "test": [
        "echo \"Error: no test specified\" && exit 1"
      ]
    }
  }
}

必要なツールのインストール

例:jqをインストール

devbox add jq

例:nodeをインストール

devbox add nodejs@22.14.0

例:ssm セッションマネージャープラグインインストール

devbox add ssm-session-manager-plugin@latest

例:libreOfficeインストール

devbox add libreoffice-bin

必要なパッケージが揃ったターミナルを起動

devbox shell

↑ 毎回実行しなければならない vscodeの拡張機能がある(https://marketplace.visualstudio.com/items?itemName=jetpack-io.devbox) これを入れるとdevbox.jsonを認識すると自動でdevbox shellを実行してくれる

懸念

  • デプロイなどでもdevboxを入れる必要が出てくる場合がある
  • node,npmのパッケージマネージャーのversionがnvm,voltaのバージョン管理ツールと2重管理になる可能性がある
    • 特定のルールを作ることが重要

macOSのみ対応なので利用見送り miseはwindows対応なので使えるかも(?)

miseはasdfのレジストリだけでなく、npmやpipx、go、cargoさらにはaquaのレジストリ等が使えるので、対応してないツールは殆どないんじゃないかといった印象です。
https://mise.jdx.dev/dev-tools/backends/ またaquaのレジストリならツールの追加も簡単ですよ。

レポジトリごとに依存が出てくるなら採用しても良さそう そんなことなければ利用せずでいい気がする。

miseのほうがいいかも