Devbox Cloudを利用したクラウド上への開発環境の構築

2023.03.18

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

  • t_o_dと申します。
  • 新しい開発環境構築の選択肢として登場したDevbox試しています
  • 今回はdevbox環境をクラウド上へ展開できるDevbox Cloudの使用感を記録いたします。
    • ※2023/03/18時点ではオープンベータ版です。

結論

  • 今回の手順で、以下のようにdevboxのクラウド上にローカルと同期している開発環境を構築します。

  • ※今回はCLIでの利用のため、ブラウザを利用した方法はこちらをご参考ください。

環境

  • mac OS Ventura 13.1
  • Devbox 0.4.4

前提

SSHキー設定済みのGithubアカウント

  • Devbox Cloudを利用するために、GithubアカウントでのSSH認証が必要となります。
  • そのためSSHキーを未設定の場合はこちらを参考に設定してください。

手順

対象プロジェクトの準備

  • 今回は例としてNode.jsプロジェクトを対象とします。
  • 以下のコマンドをうち、任意のディレクトリにDevbox Cloud上に立ち上げる対象プロジェクトを作成してください。
# ディレクトリ作成・移動
$ mkdir tod-box
$ cd tod-box

# 初期設定
$ devbox init

# パッケージ追加
$ devbox add nodejs

# indexファイル作成
$ touch index.js

# 設定確認
$ cat devbox.json

{
  "packages": [
    "nodejs"
  ],
  "shell": {
    "init_hook": null
  },
  "nixpkgs": {
    "commit": "xxxx"
  }
}

クラウド上へ展開

  • 作成後、以下のコマンドをうつことでDevbox Cloudにdevbox.jsonで設定した開発環境を構築します。
# Devbox Cloudへ展開
$ devbox cloud shell
  • 実行後、以下のようなメッセージが出力されていきます。
    • ※最初の作成の際はGithubユーザー名が求められます。
    • ※以下の「Created a virtual machine in Tokyo, Japan」とあるように、構築されるVMはFly.ioを利用して自動的にユーザーに近いエッジに展開されます。

  • 少し時間が経つと完了するため、以下のように接続されたシェルできちんと環境が出来ているか確認します。

ローカルとの同期確認

  • Devbox Cloudではローカルとクラウドの状態は同期しているため、以下のように一方でファイルを作成したら片方へも即反映されます。
# クラウド上で実行。package.jsonの作成。
$ npm init -y
$ ls

devbox.json  index.js  package.json

# ローカルに戻って確認。
$ ls

devbox.json  index.js  package.json
  • 以上です。

補足

  • 本記事では紹介していないですが、ローカルとクラウド間のポート転送機能もありテスト等に便利です。詳細はこちらをご確認してください。
  • また、プロジェクト終了の際はディレクトリの削除だけではcacheが溜まっていくので、nix-store --gcコマンドで掃除が可能です。

まとめ

  • Devbox Cloudを利用することで、「ローカルで十分の時はdevbox shellクラウド利用したい時はdevbox cloud shell」といった開発環境の柔軟な切り替えが可能になりそうです。
  • 現在(2023/03/18)オープンベータ版ですが、機能性は十分に揃っているため更なる進化が期待できます。
  • ※早期に利用したい場合、こちらのフォームを記載する必要があるらしいです。

参考

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。