⛏️

RustのDevcontainerにVSCodeの拡張機能を追加しよう

2023/08/04に公開

はじめに

前回の記事でRustの開発ツールをDevcontainerに追加しました。

今回はVSCodeの拡張機能を追加していきましょう。

追加済みのコードはこちらにあります。
https://github.com/ao-39/rust_devcontainer/tree/add_extensions

最速で環境を構築する場合

クローンすればすぐ環境を作成できます。

git clone https://github.com/ao-39/rust_devcontainer.git -b add_extensions

VSCodeの左下の><のメニューからコンテナーのリビルドを選択すれば環境を立ち上げられます。

とはいえ、リポジトリには反映せず、自分しか使わない拡張機能を自分だけ使えるようにするのが、開発者にとって気になるポイントだと思います。

自分の環境だけに拡張機能を設定する方法

VSCodeの設定画面から設定する

VSCodeの設定を開きユーザーの設定のタブを開いた状態で、
dev.containers.defaultExtensionsと検索して項目の追加をクリックして編集画面を開き、拡張機能IDを入力します。

拡張機能のIDの取得方法

拡張機能を検索し、歯車メニューの拡張機能のIDをコピー取得できます。

settings.jsonから設定する

VSCodeの設定画面の右上の赤い線を引いてるマークからもsettings.jsonを開くことができます。

settings.jsondev.containers.defaultExtensionsの項目に拡張機能のIDを入れることでも設定可能です。

settings.json
{
  ...
  "dev.containers.defaultExtensions": ["github.copilot"]
}

チーム共通で使う拡張機能を設定する方法

VSCodeの拡張機能画面から設定する

開発コンテナをVSCodeで開き、拡張機能の画面の歯車のメニューからdevcontainer.jsonに追加するを選択することで追加されます。

現在開いている開発コンテナには拡張機能が適応するには、開発コンテナを一度閉じて、再び開くか、開発コンテナーにインストールするをクリックしてください。

.devcontainer/devcontainer.jsonから設定する

devcontainer.jsonextensionsに拡張機能のIDを記入していきます。

devcontainer.json
{
  ...
  "customizations": {
    "vscode": {
      "extensions": [
        "rust-lang.rust-analyzer"
      ]
    }
  }
}

便利なVSCode拡張機能

こちらの方がまとめていたものが参考になりました。
https://zenn.dev/t4aru/articles/4a77ec07432e57

devcontainer.jsonに追加するときのリスト

devcontainer.json
{
  ...
  "customizations": {
    "vscode": {
      "extensions": [
        "rust-lang.rust-analyzer",
        "vadimcn.vscode-lldb",
        "serayuzgur.crates",
        "JScearcy.rust-doc-viewer",
        "Swellaby.vscode-rust-test-adapter",
        "tamasfe.even-better-toml",
        "ritwickdey.LiveServer"
      ]
    }
  }
  ...
}
Cargo.tomlの場所がプロジェクトのルートにない場合はVSCodeの設定を追加します。

rust-analyzerがCargo.tomlを探せるようにしてあげます。

devcontainer.json
  ...
  "customizations": {
    "vscode": {
	...
	"rust-analyzer.linkedProjects": [
        "./app/Cargo.toml"
      ]
    }
  }
  ...

おわりに

VSCodeの便利な拡張機能を追加する設定をしました。今後は拡張機能やRustのツールの使い方について記事を作成していきたいと思います。

コラボスタイル Developers

Discussion