Dev Container で VSCode 拡張機能付きの Rust 開発環境を構築する
ローカル環境に Rust をインストールすることなく、Rust の開発環境を構築していきましょう!
まずは Docker と VSCode の拡張機能 Dev Containers をインストールしておきましょう!
Microsoft 製のイメージを使う
Dev Container で Rust を 簡単に使える ようにするには Microsoft 製のイメージがおすすめです。
devconainer.json を作成する
ルートディレクトリに .devcontainer/devconainer.json
を作成します。
なお、Rust で実装する際に便利な VSCode 拡張機能も定義してありますが、詳細については後述します。
{
"name": "Rust Sandbox on Dev Container",
"image": "mcr.microsoft.com/devcontainers/rust:latest",
"customizations": {
"vscode": {
"extensions": [
"vadimcn.vscode-lldb",
"fill-labs.dependi",
"tamasfe.even-better-toml",
"Swellaby.vscode-rust-test-adapter",
"JScearcy.rust-doc-viewer",
"rust-lang.rust-analyzer"
]
}
}
}
Dev Container を起動する
Dev Container を起動して、ターミナルを開きます。
まずは Rust やパッケージマネージャである Cargo がインストールされていることを確認してみます!
rustc --version
cargo --help
Hello world!
Rust の開発環境が整ったので、Rust アプリケーションのプロジェクトを作成していきましょう!
ルートディレクトリ直下に src
が来るようにしたいので、以下のコマンドを実行します。
cargo init .
無事に cargo init
ができら、cargo run
を実行しましょう!
$ tree -I target/
.
├── Cargo.lock
├── Cargo.toml
└── src
└── main.rs
拡張機能がインストールされるので、fn main()
の上にある RUN をクリックして実行することも可能です。
自分で Dockerfile を作成する
すでに便利なイメージがあるため、それを活用することもできますが、
自分で Dockerfile や docker-compose.yml を作成することで Dev Container 環境を構築することもできます。
とは言え、Rust のイメージを使えば Dockerfile も数行の記述で終わります。
git clone で、すぐに Rust 開発環境を構築できます。
git clone https://github.com/codemountains/rusty-sandbox.git
Dockerfile
Docker Official Image である rust を使用します。
フォーマッターや Clippy が入っていないため、別途インストールしています。
FROM rust
RUN rustup component add rustfmt clippy
docker-compose.yml
上述した Dockerfile を指定します。
特筆すべき点はありません笑
version: '3'
services:
sandbox:
build:
context: .
dockerfile: Dockerfile
working_dir: /workspace
volumes:
- .:/workspace
stdin_open: true
tty: true
devcontainer.json
先ほどとの違いは dockerComposeFile
などを定義している点でしょうか。
また、同様に VSCode の拡張機能を定義しています。
{
"name": "Rust Sandbox on Dev Container",
"dockerComposeFile": "../docker-compose.yml",
"service": "sandbox",
"workspaceFolder": "/workspace",
"customizations": {
"vscode": {
"extensions": [
"ms-azuretools.vscode-docker",
"vadimcn.vscode-lldb",
"fill-labs.dependi",
"tamasfe.even-better-toml",
"Swellaby.vscode-rust-test-adapter",
"JScearcy.rust-doc-viewer",
"rust-lang.rust-analyzer"
]
}
}
Cargo Workspace の構成
Cargo Workspace を使った構成を取っています。
複数のアプリを追加できるなど汎用性も高く、複数のライブラリクレートにパッケージを分割できビルド時間の短縮が望めるなどメリットが大きいです。
app
をデフォルトの実行ターゲットとしているので、cargo run
で簡単に実行できます。
Rust のための VSCode 拡張機能
Rust を快適に書くための拡張機能として、以下を使えるようにしています。
rust-analyzer
Rust 公式の Language Server Protocol (LSP) です。
コード補完、シンタックスハイライトなど様々なことが可能になります!
もはや、どの言語においても LSP がないと快適にコードは書けません。必須です。
CodeLLDB
コンパイル言語をデバッグするための拡張機能です。
ブレークポイントを置いて、サクサク開発を進めましょう。
Rust Test Explorer
VS Code サイドバーから Rust テストを表示および実行できる、Rust テスト エクスプローラーです。
テストコードを一覧表示してくれ、実行することが可能です。
Rust Doc Viewer
ローカルで生成されたプロジェクト ドキュメントを取得し、簡単に参照できるように新しいウィンドウに表示してくれます。
Dependi
クレート(ライブラリ)を管理することが楽になります。
crates という拡張機能がありますが、メンテナンスが終了しアーカイブされているため Dependi を使うことが推奨されています。
Even Better TOML
TOML ファイルでコード補完が効くようになります。
Cargo.toml などを編集する際などに便利です。
まとめ
VSCode 拡張機能込みで、Rust の開発環境を Dev Container で構築してみました!
Dev Container は便利ですね✌️
Discussion
素晴らしいチュートリアルです! 💡Rust開発環境をDev Containerで手軽にセットアップできる方法がわかりやすく解説されていて、すぐに試したくなりました。個人的に、rust-analyzerとCodeLLDBの組み合わせが最強だと思っています。