Rust の学習環境を Docker と VSCode で構築
はじめに
最近「Webアプリ開発で学ぶ Rust 言語入門」を手に取り Rust の学習を始めました。
- Webアプリ開発で学ぶ Rust言語入門 - 秀和システム あなたの学びをサポート!
- https://www.shuwasystem.co.jp/book/9784798067315.html
本書では開発環境として Mac での構築方法が紹介さ入れているのですが、今回は Windows で進めたかったので Docker を使ってみました。
今日は Docker を使った Rust 環境構築と、VSCode に入れる拡張機能、そして最も初歩的な Hello, world プログラムの作り方をご紹介します。
- OS
- Windows 11 Home
- Docker
- Docker Desktop 4.21.1
1. VSCode に rust-analyzer を入れる
VSCode に Rust 公式の拡張機能である rust-analyzer をインストールします。
VSCode の拡張機能メニューで rust-analyzer と検索すれば一番上に表示されると思います。
- rust-analyzer - Visual Studio Marketplace
- https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer
Docker 拡張を入れていない場合はこちらの導入もおススメです。
- Docker extension for Visual Studio Code
- https://code.visualstudio.com/docs/containers/overview
- Docker Compose の -p オプションで VS Code でのコンテナ管理を便利にする / Twin Turbo Computing
- https://tt-computing.com/docker-project-vscode
2. Docker 環境構築
今回のファイル構成は下記のような感じで、
apps フォルダの中にサンプルプログラムを置き、Docker コンテナと同期させます。
/path/to/your-project/
├ apps/
│
└ docker/
└ docker-compose.yml
docker-compose.yml は次の通りです。
version: "3"
services:
rust-app:
container_name: rust-app
image: rust:latest
volumes:
- ../apps:/var/rust
working_dir: /var/rust
tty: true
下記のように VSCode のターミナルなどで docker フォルダを開いて docker-compose でコンテナを立ち上げます。
ps> cd \path\to\your\project\docker
ps> docker-compose -p rust up -d
そしてコンテナをアタッチして下記コマンドを実行してみてください。
バージョン番号が表示されるはずです。
root@0123456789ab:/var/rust# rustc -V
少しだけ docker-compose.yml の内容について説明します。
まず image: rust:latest で Rust 公式イメージの最新版を指定しています。
(僕は 1.71.1 が入りました)
バージョン指定をしたいとき等は下記ページを参考に、
image: rust:1.71.1 のようにしてください。
- rust Tags | Docker Hub
- https://hub.docker.com/_/rust/tags
次に tty: true の設定についてです。
今回はコンテナ起動に VSCode の Docker 拡張を使っています。
その際、コンテナでサービスが立ち上がっていないと即終了してしまうので、この設定を付与しています。
もし下記で紹介されているように docker run で実行する場合は tty: true の設定は不要です。
- rust - Official Image | Docker Hub
- https://hub.docker.com/_/rust
コンテナ名の rust-app や /var/rust はお好みで。
3. Hello, world プログラムを作成
apps の中に sample フォルダを作って、その中にプログラムを作ります。
Rust のプログラムで最低限必要なのは src/main.rs と Cargo.toml です。
ディレクトリ構成とファイルの内容は以下の通りです。
/path/to/your-project/
├ apps/
│ └ sample/
│ ├ src/
│ │ └ main.rs
│ └ Cargo.toml
~
fn main() {
println!("Hello, world!");
}
[package]
name="sample"
version = "0.1.0"
Rust コンテナの中で cargo run コマンドでビルドできます。
root@0123456789ab:/var/rust# cd sample
root@0123456789ab:/var/rust/sample# cargo run
4. cargo new コマンド
Rust には便利な cargo new というコマンドが用意されていて、
src/main.rs と Cargo.toml を自動生成してくれます。
root@0123456789ab:/var/rust# cargo new sample
- cargo new - The Cargo Book
- https://doc.rust-lang.org/cargo/commands/cargo-new.html
5. おわりに
ゼロからの言語学習は久しぶりで、本はなかなか先に進まず、コードを書くのにも時間がかかり、初学時の気持ちを思い出しました。
最初は成果が出にくいですが、Rust も勉強するほど、コードを書くほどスピードが上がると信じで、コツコツと進めています。