先月、iPad Pro のキーボードを購入しましたが、持ち運んでいる中で「この部分のデプロイがうまく行ってないからみて欲しい」という話があり、リモートサーバーを構築しました。

急ぎでサーバを構築して・・・ということをやっていたのですが、 もう少しラフに使うためにも、 Visual Studio Code Server などを使った環境構築を夢見たメモ。

個人開発には GitHub Codespaces はまだ早い

2023 年 2 月時点では GitHub Codespaces を個人開発で使うことは非現実的だと思っています。仮に常時起動した場合、圧倒的な差がありますし、個人レポジトリでの利用はできません。

常時起動していた場合の前提ですが、GitHub Codespaces と各社 VPS サービスは比較できないほど高価です。

対象 性能 月額換算(30 日もしくは月計算)
※ 1 USD = 140 円
GitHub Codespaces 2-Core
RAM 4GB
129.6 USD
18,144 円
Linode Shared CPU 2-Core
4GB RAM
20 USD
3,080 円
AWS EC2 t3a.small
Spot Instance
2-Core
2 GB RAM
17.64 USD
2,470 円
※ 0.0245 USD / hour
※ Compute 料金のみ
Azure Virtual Machine D2s v5
Spot Instance
2-Core
8 GB RAM
11.84 USD
1,539 円
※ 0.0162 USD / hour
※ Compute 料金のみ
WebARENA Indigo 2-Core
2GB RAM
699 円
1 時間あたり 1.1 円

開発時のみ起動している環境であれば、かなり安価に済むのかもしれませんが、開発するために必要なツールのインストールも事前に必要になりますし、データベースの初期設定も必要です。

また、個人開発だと、予算が青天井にあるわけでもないため、最大でもこれくらいの金額という見積もりは必要になります。

以上のことから、 仮想マシン上で Visual Studio Code Server を利用してみることにしました。

色々なツールはあるが、 Visual Studio Code Server で試してみた

サードパーティツールも複数ありますが、認証認可など色々な観点から Visual Studio Code Server にしました。 GitHub のアカウントで認証できることもありますし、使用しているツールとの都合が良かったためです。

もちろん、障害などで Visual Studio Code のウェブ版が利用できなくなったら、というリスクはありますが、個人開発ということもあり、割り切っています。

Visual Studio Code Server のセットアップ

ここからは、以下のスペックのサーバーで検証します。(Microsoft Azure 上に構築しているスポットインスタンス、必要な時のみ起動)

  • Ubuntu 22.04
  • 2 vCPU
  • 8 GB RAM
  • Azure AD によるユーザ管理の有効化

また、クライアント側は M1 MacBook Air RAM 16 GB モデルもしくは iPad Pro を利用しています。

ツールのインストール

Visual Studio Code のインストールと同じように実施します。 apt でアップデートなど行いたいため、Running Visual Studio Code on Linuxを参考に設定します。

設定後、 code tunnel -h でインストールできているか確認します。

起動確認

ここから先は、ローカルユーザー(かつ sudo など安易な方法で root 権限に昇格できないユーザ)で実行することを推奨します。

code tunnel で起動します。(初回のみ VS Code のライセンスに同意する必要があります。オプションに記載があるため、確認してください。)

初回のみ、 GitHub の認証が必要になるため、表示されるリンクとコードを用いてログインを行います。ログイン後に表示される、 vscode.dev から始まるリンクをコピーし、ブラウザで表示します。

ターミナルが表示され、コマンドなどが実行できることを確認したらセットアップ完了です。

OS のサービスに登録

常にバックグラウンドプロセスでうごかすこともできますが、予期せぬ再起動などもあるため、サービスに登録します。

[Unit]
After=network.target

[Service]
User=<local_user_name>
Group=<local_user_group_name>
ExecStart=/usr/bin/code tunnel

[Install]
WantedBy=default.target

この記事を執筆した時には、上記の内容で検証していますが、以下の方法でも動くようです。今回検証したサーバではサービスの登録に失敗しているため、先述の方法で検証しています。

code tunnel service --help

まとめ

Visual Studio Code Remote Development を利用するために必要な環境を構築しました。

元々のツールが入っていることなどから、 Azure 上の環境を利用していますが、常時起動などを考えたときにはリザーブインスタンスや他のサービスも視野に入ると思います。

利用しているパソコンの性能が足りなかったり、異なるチップのアプリを動かしたり(そんなことは多くないと思うけど)する場合などにも役立つと思います。

参考サイト