SRE兼スクラムマスターのブログ

チーム開発が好きなエンジニアブログです。検証した技術やチームの取り組みを書いていきます。

VSCode の Remote Development を使って開発者体験を上げる

はじめに

Remote Developmentとは

Remote Developmentは, VSCode からServerやWindows Subsystem for Linux (WSL), Containerなどの VSCode を実行しているホスト以とは別の環境に接続し, Server上のワークスペースを開発環境のように扱うことができる. これにより環境構築済みのServerへVSCodeから直接アクセスすることができ,開発者間での環境を簡単に統一できたり, ローカル環境に影響を与えず, 開発環境を構築/削除が容易にできる.

code.visualstudio.com

試してみる

今回はMacを使い, SSHで他のサーバに接続する手順を説明する.

拡張機能インストール

はじめに, Remote Development拡張機能をインストールする. VSCodeRemote Developmentを検索し,インストールする. Remote Development をインストールすると,Remote WSL, Remote SSH, Remote Containers のようにそれぞれに接続するための 拡張機能が自動的にインストールされる. とくにRemote WSL はWSLを利用しているWindowsユーザーにとっては便利機能だと思う.

f:id:JunichiMitsunaga:20201130232217p:plain
Remote Development Extension

SSH接続

サーバへの接続はSSHを用いて行われるため,鍵認証方式でサーバとSSH接続できるようにセットアップしておく必要がある. 今回は, Microsoft Azure 上に仮想マシンを作成してそこに接続する.

docs.microsoft.com

VSCode の左側のRemote Development タブを開くと接続先一覧が表示される.すでにsshで接続するために,~/.ssh/configなどがある場合は読み込まれて設定している接続先一覧が表示される.

configファイルを持っていない場合は,No SSH hosts...のような表示が出ているので,ギアクリックしてSSHのconfigファイルを作成する.

f:id:JunichiMitsunaga:20201201001208p:plain
Remote SSH Extension 1

config ファイルを以下のformatで作成する.

# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host host1
    HostName xxx.xxx.xxx.xxx (IPアドレス, DNSなど接続先)
    Port 22
    User hoge (ログインするユーザ名)
    IdentityFile ~/.ssh/sample_rsa (鍵認証に使う鍵ファイルを記述)

configファイルを設定するとconfig のhostが表示されるので選択して接続する.

f:id:JunichiMitsunaga:20201201001501p:plain
Remote SSH Extension 2

f:id:JunichiMitsunaga:20201201110835p:plain
Remote SSH Extension 3

「Continue」を選択する.

f:id:JunichiMitsunaga:20201201111058p:plain
Remote SSH Extension 4

接続が成功したら,「Open Folder」から接続先のフォルダを選択して操作できるようになる.

f:id:JunichiMitsunaga:20201201111250p:plain
Remote SSH Extension 5

Container 接続

接続するために, nginx のimageをpullして起動しておく.

$docker run --name remote-sample -d -p 8080:80 nginx
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
c164ead158ca        nginx               "/docker-entrypoint.…"   15 seconds ago      Up 13 seconds       0.0.0.0:8080->80/tcp   remote-sample

nginx が起動したのを確認して, Remote Development タブを開くと, Containers に nginxが表示される. リアルタイムで表示されなかったが,VSCodeを再起動したら表示された.

f:id:JunichiMitsunaga:20201130235455p:plain
Remote Containers Extension 1

nginx を選択して, 「Attach Container」を選ぶと nginx containerに接続して, container内部の情報をVSCodeで閲覧して修正できる. 添付画像は container 接続後に /etc/nginx 配下のfileを確認している.

f:id:JunichiMitsunaga:20201130235915p:plain
Remote Containers Extension 2

他にもチュートリアル用のContainerが用意されているので,そちらで各開発言語が含まれているContainerに接続できる.

code.visualstudio.com

終わりに

別環境をローカル環境のように扱うことができ,かつ使い慣れたエディタで開発できることは非常に便利になった. 環境構築されたContainerやServerを使うことで初期設定のコストが削減される. またローカル特有の問題に影響を受けることも少ない.