Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Learning Rust with Dev Containers and Rustlings

2025年10月04日に「Dev.to」が公開したITニュース「Learning Rust with Dev Containers and Rustlings」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Rust学習初心者向けに、DockerとVS CodeのDev Containersを使った効率的な開発環境構築法を解説。Rustコードを動かす基本から、Dev Containerで隔離された環境を作り、学習ツールRustlingsを導入してすぐに学習を開始できる手順を紹介する。これにより、複雑な設定なしでRust学習に集中できる環境を構築する。

ITニュース解説

Rustのようなプログラミング言語を学ぶ際、開発環境の構築は時に複雑で、初心者にとって最初のハードルとなることがある。特に異なるプロジェクトで複数のツールやライブラリを使う場合、環境が互いに干渉し合い、問題を引き起こすことも少なくない。しかし、隔離された開発環境である「Dev Container」を利用すれば、このような問題を解決し、初心者でも安心して学習に集中できるクリーンな環境を簡単に構築できる。ここでは、その基盤となるDockerの仕組みから、Dev Containerを使ったRust開発環境のセットアップ、そしてRust学習ツールであるRustlingsの導入までを順を追って解説する。

まず、Dev Containerの基盤となるDockerについて理解することが重要だ。Dockerとは、アプリケーションとその実行環境を「コンテナ」と呼ばれる隔離された箱にまとめて管理する技術である。これにより、どんなパソコン環境でも同じようにアプリケーションを動作させることが可能になる。Dockerを使い始めるには「Docker Desktop」というツールをインストールするのが最も簡単だ。Dockerには「イメージ」と「コンテナ」という重要な概念がある。イメージはアプリケーションと実行環境をまとめた設計図のようなもので、コンテナはそのイメージをもとに実際に動作する隔離された環境を指す。イメージはDocker Hubのような公開リポジトリからダウンロードしたり、自分で作成したりできる。

次に、Rustがインストールされていない環境で、Dockerコンテナ内でRustアプリケーションを動かす最小限のステップを説明する。まず、手動でRustプロジェクトの基本的なファイルを用意する。「Cargo.toml」というファイルにはプロジェクト名や使用するRustのエディションといった設定を記述し、「main.rs」には「Hello World!」と表示する簡単なRustコードを記述する。これらは、通常CargoというRustのビルドツールが自動生成するが、ここでは手動で準備する。 このRustプロジェクトをDockerコンテナ内でビルドして実行するための設定ファイルが「Dockerfile」だ。Dockerfileには、どのOSとRustのバージョンをベースイメージとして使うか(FROM rust:latest)、作成したプロジェクトファイルをコンテナ内にコピーするか(COPY ./ ./)、Rustのコンパイラであるcargoを使ってアプリケーションをビルドするか(RUN cargo build --release)、そしてコンテナが起動したときにどのコマンドを実行するか(CMD ["./target/release/hello-world"])といった指示を順に記述する。 Dockerfileの準備ができたら、そのファイルがあるフォルダでdocker build -t rs-hello-world .というコマンドを実行してDockerイメージを作成する。rs-hello-worldはこのイメージの名前だ。イメージが正常に作成されたら、docker run rs-hello-world:latestというコマンドでコンテナを起動する。すると、ターミナルに「Hello World!」と表示され、Rustアプリケーションがコンテナ内で正しく動作したことを確認できる。

ここまでのDockerの基本を理解した上で、いよいよDev Containerの導入に移る。Dev Containerは、Visual Studio Code(VS Code)という開発エディタとDockerを連携させることで、開発環境自体をDockerコンテナ内に構築する仕組みだ。これにより、ローカル環境を汚さずに、プロジェクトごとに最適な開発環境を簡単に用意できる。 VS Codeに「Dev Containers」という拡張機能をインストールすることから始める。次に、新しい空のフォルダをVS Codeで開き、コマンドパレット(Ctrl+Shift+P)から「Dev Containers: Open folder in container...」を選択する。ここでRustのテンプレートを選ぶと、VS Codeが自動的にコンテナをビルドし、そのコンテナ内でVS Codeを開き直す。この設定を行うと、プロジェクトフォルダの直下に「.devcontainer/devcontainer.json」というファイルが作成される。このファイルがDev Containerの動作を定義する設定ファイルであり、細かなカスタマイズも可能だ。Dev Containerに接続すると、VS Codeのターミナルでcargo --versionと入力すれば、ローカルにRustがインストールされていなくても、コンテナ内のRustツールチェーンが正しく動作することを確認できる。これにより、環境構築の複雑さから解放され、すぐに開発や学習を始められる。

さらにRust学習を強力にサポートするツールとして「Rustlings」がある。Rustlingsは、Rustで書かれたたくさんの演習問題が用意されており、それらの問題を修正しながらRustの基本的な概念や文法を実践的に学べる。このRustlingsをDev Containerに組み込むことで、学習環境の準備の手間を省き、すぐに学習に取り掛かることができる。 devcontainer.jsonファイルに特定のコマンドを追記するだけで、コンテナが作成される際にRustlingsを自動的にインストールし、さらにコンテナ起動時にはRustlingsのCLIアプリケーションが自動で実行されるように設定できる。具体的には、onCreateCommandでコンテナ作成時にcargo install rustlingsを実行してRustlingsをインストールし、postCreateCommandyes "" | rustlings initを実行してRustlingsの初期設定を行い、そしてpostAttachCommandでコンテナ起動時にcd rustlings && rustlings --manual-runコマンドを実行する設定を加える。これらの変更を加えた後は、VS Codeのコマンドパレットから「Dev Containers: Rebuild Container」を選択してコンテナを再ビルドする必要がある。すると、再ビルド完了後にはすぐにRustlingsの学習画面が表示され、すぐに学習を始められる状態となる。

Dev Containerで開発したアプリケーションは、最初に説明したような独立したDockerコンテナとして実行することも可能だ。これは開発環境と本番環境を分離するという点で非常に有効なアプローチとなる。.devcontainer.jsonファイルは、より複雑なDocker設定(例えば複数のコンテナを連携させるDocker Composeなど)とも連携できる柔軟性を持っている。また、データ永続化のためにはDocker Volumesという機能を使うこともできる。 注意点として、WSL(Windows Subsystem for Linux)環境でDockerを使用する場合、ファイルの変更が自動的にコンテナに反映されない「ファイルウォッチング」の問題が発生することがあるため、rustlings --manual-runのような手動実行オプションが必要になる場合がある。また、一度Rustlingsをセットアップしたコンテナを再ビルドする際には、rustlings initコマンドがすでに存在するRustlingsフォルダでエラーを起こすことがある。この場合は、一度Rustlingsフォルダを削除するか、devcontainer.jsonの設定を変更して初期化コマンドを無効にするなどの対応が必要となる。

Dev ContainerとRustlingsを組み合わせることで、Rustの学習環境を素早く、そしてクリーンに構築し、効率的に学習を進めることができる。Dockerの基本的な使い方から始まり、VS Codeの強力な連携機能、そして学習に特化したツールの導入まで、一連の流れを理解することで、システムエンジニアとして新たな技術を学ぶ際の強力な基盤を築けるだろう。このアプローチはRustだけでなく、様々なプログラミング言語の学習や開発にも応用できるため、ぜひ活用してほしい。

関連コンテンツ

関連IT用語

関連ITニュース