対象読者: PC(Windows/Mac/Linux)に不要なツールを直接インストールしたくない方、チームで開発環境を統一したい方
目的: VS Codeの「DevContainers」を使って、一瞬でコンパイル環境付きのクリーンなRust環境を手に入れる方法を共有する
第1回では、「rustup 一発で環境が完成する」という話を書きました。
ただ、長くJavaで開発してきた身としては「そうはいっても、本業のPCに色々な言語のランタイムを直接入れたくないな…」という気持ちもあったりします。
チーム開発だと特に「自分のPCでは動くのに……」がよく起きるので、環境を統一する仕組みが欲しくなりますよね。
今回は番外編として、そういう悩みにハマりすぎた末にたどり着いた方法、「VS Code + Docker(DevContainers)」を使ったコンテナ開発環境の作り方をメモしておきます。
1. DevContainersって何?
一言で言うと、「プロジェクトごとに専用の開発ツールが詰まった、使い捨ての仮想作業部屋を用意する仕組み」 です。
「コンテナ」のイメージ(使い捨てできる隔離部屋)
PC本体にツールを直接インストールせず、
「使い捨てできる隔離ボックス」に全部まとめてポンと置くイメージです。
面白いのが、PCにRustを一切インストールしていないのに、VS Codeでフォルダを開いた瞬間にRust環境が立ち上がるんです。初めてやったときは、ちょっと不思議な感覚でした。
💡 コラム:Windows(WSL2)ユーザーに朗報
Windowsで開発している方はDocker DesktopとWSL2を組み合わせることで、Linuxと同じ超高速なファイルアクセスとコンパイル速度の恩恵を受けられます。「コンパイルが遅い…」と悩む必要はもうありません。
🛠️ Step 1:事前準備(Dockerの導入)
まずはご自身のPCにDockerをインストールします。MacやLinuxの方も、それぞれのOSに応じたDockerを入れれば「Step 2」以降の手順は完全に共通です!
- Macの場合: Docker Desktop for Mac をインストールします。
- Linuxの場合: Docker Desktopは不要です。純粋の「Docker Engine」を直接入れるのが最適です(詳細はQ&Aをご覧ください)。
Windowsの場合:
Docker公式サイトから「Docker Desktop for Windows」をダウンロードし、インストールします。
Windowsでのパフォーマンスを上げる必須設定(WSL 2)
WindowsでDockerを使う場合、裏でWSL2(Windows Subsystem for Linux)を有効化しておくと、Linuxと同じ超高速なファイルアクセスとコンパイル速度の恩恵を受けられます。
スタートメニューから「PowerShell」を管理者権限で開き、以下のコマンドを実行してPCを再起動してください。
wsl --install
💻 Step 2:VS Codeと拡張機能の準備
エディタは「Visual Studio Code(VS Code)」を使います。
- VS Code公式サイトからインストールします。
- VS Codeを開き、左側の拡張機能アイコンをクリックします。
- 検索バーに
Dev Containersと入力し、Microsoft公式の拡張機能をインストールします。
🪄 Step 3:魔法の設定ファイルを作る
いよいよ環境を作ります。今回は例として、Rustの公式学習ツール「rustlings」も自動で入る環境を作ってみます。
- お好きな場所に、空のフォルダを作成します(例:
rust-study)。 - VS Codeでそのフォルダを開きます。
- フォルダの中に
.devcontainerという名前のフォルダを作り、その中にdevcontainer.jsonというファイルを作成して、以下のコードを貼り付けます。
devcontainer.json (コンテナの設計図)
このファイルで「どんなイメージを使うか」「VS Codeに拡張機能を最初から入れておくか」を設定します。
今回はLinux(Debian系)のパソコンが仮想的に立ち上がります。
{
"name": "Rust Learning Env",
"image": "mcr.microsoft.com/devcontainers/rust:latest",
"customizations": {
"vscode": {
"extensions": [
"rust-lang.rust-analyzer",
"tamasfe.even-better-toml"
]
}
},
"postCreateCommand": "cargo install rustlings",
"remoteEnv": {
"PATH": "${containerEnv:PATH}:/usr/local/cargo/bin"
}
}
この設定を使うと、第1回で紹介した rust-analyzer(とClippy)も自動でインストールされます。さらに postCreateCommand の行のおかげで、コンテナが起動し終わった時点で rustlings まで入った状態になっています。自分でコマンドを打つ必要が何もないのが気持ちいいです。
🚀 Step 4:いざ、コンテナ起動!
設定はこれだけです。Rustのインストールコマンドなどを手打ちする必要はありません。
- VS Codeの画面右下に 「コンテナーで再度開く (Reopen in Container)」 という通知が出るので、クリックします。(出ない場合は、画面左下の緑色のアイコン「><」をクリックして選択します)
- 初回は数分かかります。 裏側でDockerが自動的に「Rustが完璧にセットアップされたLinux環境」を構築してくれます。
- 起動が終わったら、VS Codeのメニューから「ターミナル」→「新しいターミナル」を開きます。
- 以下のコマンドを打ってみます。
cargo --version
バージョンが表示されれば完了です。PCにRustを直接入れていないのに、ちゃんと動く。ここが一番「おっ」となる瞬間だと思います。
さっそく Rustlings を始めてみよう
ターミナルで続けて以下の3つのコマンドを打ち、学習用フォルダを生成します。
rustlings init
cd rustlings
rustlings
これで、画面いっぱいにRustlingsのアスキーアートが表示されれば環境構築は完全に成功です!あとは cargo new my_app で自分のアプリを作り始めるもよし。思ったより簡単に動くので、ぜひいろいろ試してみてください。
🚪 コンテナの終わらせ方(閉じ方)
作業が終わってコンテナを閉じたい時は、以下のいずれかを行うだけです。
- VS Code自体の「×」ボタンを押してウィンドウを閉じる
- メニューの「ファイル」から 「フォルダーを閉じる (Close Folder)」 を選ぶ
- 左下の緑色のアイコン(
><)をクリックし、「フォルダーをローカルで再度開く (Reopen Folder Locally)」 を選ぶ(元の環境に戻る)
閉じた瞬間に裏で動いていたDocker側の処理も一時停止するため、何も気にせずサクッと終了して構いません。
4. チームで使うとさらに便利
この .devcontainer フォルダをGitでコミットしておけば、チームメンバーが git clone してVS Codeを開いた瞬間に、同じバージョン・同じ拡張機能の環境がそのまま立ち上がります。
Javaのバージョン違いや環境変数の設定漏れによる「自分のPCでは動くのに…」問題が、構造的になくなるのがいいですね。
⚠️ 注意点:メモリ割り当て
Rustのコンパイル機能(特にrust-analyzerによる裏側の解析)は、規模が大きくなるとメモリを消費します。Dockerの設定画面で、コンテナに割り当てるメモリを最低でも4GB、できれば8GB程度に設定しておくことをおすすめします。
🙋 よくあるつまづきポイント(Q&A)
実際に環境を作る際によくある疑問やエラーについてまとめました。
Q. VS Codeの拡張機能で「Dev Containers」が検索に出ない!
A. お使いのVS Codeが「OSS版(VSCodium等)」ではないか確認してください。
「Dev Containers」はMicrosoftが公式VS Code向けに限定して配信しているプロプライエタリな(独占的な)拡張機能です。もしVSCodiumなどを使っている場合、ストアからは検索できません。公式のVS Codeをインストールし直すか、サードパーティ製の同等機能を持つ拡張機能(例: Container Tool)を使用してください。
Q. Linux環境なんだけど、Docker Desktopを入れるべき?
A. いいえ!Linuxユーザーの場合はネイティブな「Docker Engine」が最適です。
Docker Desktopは本来、「Linux環境がないWindowsやMacで、裏で仮想のLinuxを立ち上げてDockerを動かすためのツール」です。すでにLinux(UbuntuやMintなど)を使っている方は、わざわざ重いDesktop版を入れずとも、以下のコマンドで超軽量な純粋Dockerを直接インストールできます。(WindowsはOSの仕組み上、必ずDesktop版等を介する必要があります)
# Ubuntu/Debian系でのネイティブDockerインストール例
sudo apt update && sudo apt install -y docker.io docker-compose-v2
sudo usermod -aG docker $USER
# ※実行後はPCの再起動(または再ログイン)が必要です
Q. じゃあWindowsもWSLの中で上のコマンドを打てば、重いDesktop版はいらない?
A. 技術的には可能ですが、初学者には「Docker Desktop」を強くおすすめします。
WindowsのWSL(Linux互換層)の中でネイティブなDockerを動かすことも実は可能です。しかし、それをやると「Windows側からWSL内のポート(localhost)にうまく繋がらない」「PC再起動のたびにDockerのサービスを手動で起動しなければならない」といったネットワークや権限の壁にぶつかりやすくなります。
Docker Desktopは多少重い代わりに、これらの「WindowsとLinuxの間を取り持つ面倒な設定(ポートフォワーディングや自動起動)」をすべて自動でやってくれるという絶大なメリットがあるため、WindowsではDesktop版を入れるのが標準となっています。
Q. rustlings や cargo コマンドが見つからないエラーが出る
A. コンテナ内のPATHが一時的に反映されていない可能性があります。
devcontainer.json に "remoteEnv" の追記を忘れているか、インストール完了直後でパスが通っていないことが原因です。一度VS Code内のターミナルをゴミ箱ボタンで完全に消し、再度「新しいターミナル」を開き直すことで解決します。
🛡️ 【おまけ】他人のコードを試すときの「完全隔離」テクニック
GitHubなどで見つけた外部のコードや、rustlings のような学習用リポを試すとき、「もし何か怪しいコードが混じってたら…」と不安になることはありませんか?
そんなときは、ローカルPCのフォルダを共有せず、Docker内部の「隔離された領域(ボリューム)」に直接クローンするという方法が安全です(Windowsに限らず、MacやLinuxユーザーにとっても非常に有効なセキュリティ自衛策です)。
ダウンロードしたコードはPC本体のドライブには一切触れず、用が済んだらボリュームごと削除するだけで痕跡もなく完全に消せます。
完全隔離環境の作り方
- VS Codeを開き、左下の緑色のアイコン(
><)をクリックします。 - メニューから 「リポジトリをコンテナー ボリュームにクローンする… (Clone Repository in Container Volume…)」 を選択します。
- 試したいリポのGitHub URL(例:
https://github.com/rust-lang/rustlings.git)を入力します。
これでDocker内の安全な領域にコードが保存され、隔離された環境が立ち上がります。
不要になったら完全消去
VS Codeのコマンドパレット(F1キー)から「Dev Containers: コンテナー ボリュームの削除…」を選ぶか、Docker Desktopの「Volumes」画面からゴミ箱ボタンを押すだけ。PCは元の真っさらな状態に戻ります。
💡 Q. 「クローンの時」しか完全隔離はできないの?
A. いいえ、ゼロから「空の隔離部屋」を作ることも可能です!
コマンドパレット(F1)から「Dev Containers: 新しいコンテナーを作成… (New Dev Container…)」を選ぶと、PCのローカルファイルシステムに一切紐づかない、Docker内部だけの「真っさらな隔離ボリューム」を作り、そこで安全に新しいプロジェクトを書き始めることもできます。
まとめ
今回は「PCを汚さずにRust環境を作る方法」としてDevContainersを紹介しました。
- PCに直接インストールしないのでローカルが常に綺麗なまま
- VS Codeの拡張機能もコンテナの中に統一できる
- 設定ファイルをGit管理すればチーム全員で環境を揃えられる
「Rustを試してみたいけど、PCに余計なもの入れたくないな」という方には、この方法がかなりフィットするんじゃないかと思っています。もし似たような悩みがあれば、ぜひ参考にしてみてください。
コメント