Devbox: 簡単かつ迅速な開発環境設定ツール
今日は仮想マシンやコンテナとは異なる開発環境の構築方法として、Devboxというツールを紹介します。私は長いことコンテナに慣れ親しんでいますが、Devboxにはコンテナとまた違った環境作成の利便性を感じています。
Devboxとは何か?
DevboxはJetpack.ioによって開発された、開発環境を簡単かつ迅速に設定できるツールです。
これは特に、複数のプロジェクトや言語に対応する必要がある開発者にとって便利です。DevboxのCLIとJSON形式を使用してプロジェクトの設定を簡単に行えます。また、Devboxは40万以上のパッケージバージョンにアクセスでき、Python、NodeJS、Ruby、Goなど多言語に対応しています。Linux、macOS、WSL2 for Windowsにおいても同じパッケージバージョンをインストールすることが可能であり、PostgreSQL、Nginx、Caddy、PHPなどのパッケージを自動的に設定するプラグインも利用できます。このような柔軟性と包括性により、Devboxは多様な開発環境の要求に応える強力なツールとして機能します。
Devboxの特徴とユースケース
Devboxの特徴は以下のようになっています
- 一貫性のあるシェル環境:
devbox.json
ファイルを宣言することで、プロジェクトに必要なツールのリストを指定し、チーム全員が同じバージョンのツールを備えたシェル環境を取得できます。 - 新しいツールの試用に適している: Devboxで作成された開発環境は他のものから隔離されているため、新しいツールを試す際にラップトップを汚すことなく、使用後は簡単に削除できます。
- パフォーマンスの犠牲がない: Devboxは追加の仮想化レイヤーを使わずに隔離された環境を作成するため、ファイルシステムや各コマンドの速度が低下することはありません。
- バージョンの競合解消: 複数のプロジェクトで異なるバージョンの同じバイナリが必要な場合、各プロジェクトに対して隔離された環境を作成し、それぞれのプロジェクトで好きなバージョンを使用
以下のようなユースケースでの利用ができます
- 複数プロジェクトの管理: 異なるプロジェクトで異なるバージョンのツールやライブラリを使用する場合、Devboxを使って各プロジェクトの環境を分離し、衝突を避けることができます。
- CI/CDの統合: Devboxは、CI/CDパイプライン内でのスクリプト実行やタスク自動化をサポートします。
- クラウドやコンテナとの統合: Devboxのプロジェクトはクラウドでの使用にも対応しており、DockerイメージやDevcontainerとしてエクスポートすることも可能です。
Devboxの使い方
Devboxを使用するにはブラウザでアクセス可能なプレイグラウンド環境と、自身の開発環境にインストールする方法があります。試してみるだけであればプレイグラウンド環境を使用してみることをお勧めします。
ブラウザでクイックスタート
Devboxを試すことができるプレイグラウンド環境が用意されています。 www.jetpack.io
インストール
Devbox自体のインストールは次のように行います:
curl -fsSL https://get.jetpack.io/devbox | bash
Devboxの使用方法は簡単です。新しい空のフォルダでターミナルを開き、devbox init
コマンドでDevboxを初期化します。これにより現在のディレクトリにdevbox.json
ファイルが作成されます。その後、必要なコマンドラインツールを追加し(例:devbox add python310
)、devbox shell
コマンドでこれらのツールがインストールされた新しいシェルを開始します。
使い方の例
使用時の基本的なコマンドは以下になります。
- 環境の初期化:
devbox init
コマンドを使用して、新しいプロジェクトのためのdevbox.json
ファイルを作成します。 - パッケージの追加:
devbox add
コマンドを使って、必要なパッケージを追加します。 - Devboxシェルの使用:
devbox shell
コマンドで、設定した環境内で作業を開始します。
例えばpythonの環境を作るには以下のようにします。
$ mkdir dev-python $ cd dev-python $ devbox init $ devbox add python $ devbox shell $ python --version Python 3.12.1 $ exit # devboxシェルを終了する
まとめ
Devboxは分離環境を簡単に作ることができる新しいツールです。また、コンテナと比較して基礎知識がほとんどいらず、キャッチアップなしに素早くほしい環境を構築できるといった利点があります。
エンジニアにとって、状況によって選択可能なツールをより多く知っていることは、たくさんの種類の道具をもっていることと同義です。そういったツールの一つとしてDevboxを扱ってみてはいかがでしょうか。
Written with ChatGPT-4