【Rust 入門】macOS と VSCode で環境構築をする方法


![rust-dev-env-20231015.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1612505/7cd585bf-5511-7071-6057-7c5ab1d930dd.jpeg)

## 概要

Rust はメモリ安全性・速度・並行性の点で優れたプログラミング言語です。C や C++ と同じくシステムプログラミング言語としての側面を持ちながら、高性能な Web サーバーや API を開発することができ、バックエンド開発のための言語としても利用することができます[^1]。

今回は記事執筆時（2023/10/15） macOS で Rust の開発環境を整えるための手順を解説させていただきます。

**この記事を読んでわかること**

- macOS で Rust の環境構築をする方法
- `cargo` コマンドとそれらに付随するコマンドの基本的な使い方
- Rust のプロジェクト作成・実行方法
- VSCode で Rust の開発環境を整える方法

**対象読者**

- Rust に初めて触れる開発者
- 他の言語である程度の開発経験がある開発者

**前提知識・環境**

- `brew` コマンドの基本的な使い方
- VSCode の基本的な使い方
- Intel macOS Sonoma v14.0

---

## 1. Rust の開発環境の構築

### 1.1. `rustup-init` コマンドのインストール

Rust では `cargo`, `rustc`, `rustdoc`, `rustup` コマンドを用いて開発を行います。
これらのコマンドをまとめて使えるようにするための `rustup-init` コマンドを Homebrew からインストールします。

```shell
brew install rustup-init
```

上記のコマンドを実行後、シェルを再起動してもらえれば `rustup-init` コマンドが使えるようになります。`rustup-init` コマンドを実行します。

```shell
rustup-init
```

実行後、下記の３択から選ぶように入力を求められます。今回はデフォルトの 1 で環境構築を行います。1 を入力して Enter キーを押して下さい。

```
1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
> 1
```

再びシェルを再起動してもらえれば、`cargo`, `rustc`, `rustdoc`, `rustup` コマンドが使用できるようになっているはずです。確認のためにそれぞれのバージョンを見てみます。

```shell
# cargo のバージョン確認
cargo --version
# rustc のバージョン確認
rustc --version
# rustdoc のバージョン確認
rustdoc --version
# rustup のバージョン確認
rustup --version
```

それぞれのコマンドを実行してバージョンが表示されれば準備完了です。

### 1.2. 各コマンドの基本的な使い方

#### 1.2.1. `cargo` コマンド

`cargo` は Rust のコンパイルマネージャー兼パッケージマネージャーです。プロジェクトの作成・プログラムのビルド・ライブラリの管理などを担います。

```shell
# プロジェクトの新規作成
cargo new (プロジェクト名)
# カレントディレクトリでプロジェクトを作成
cargo init
# プログラムの実行
cargo run
# テストの実行
cargo test
# ビルドの実行
cargo build
# パッケージのインストール
cargo install (パッケージ名)
# パッケージのアンインストール
cargo uninstall (パッケージ名)
```

Node.js の `npm` コマンドのように使用できますね。

#### 1.2.2. `rustc` コマンドの使い方

`rustc` は Rust のコンパイラです。基本的には `cargo` を使ったビルドの過程でコンパイルが自動的に行われますが、`rustc` を使って直接コンパイルすることもできます。

```shell
# rustc によるコンパイル
rustc (ファイルのパス)
```

#### 1.2.3. `rustdoc` の使い方

`rustdoc` は Rust のドキュメンテーションツールです。ドキュメントの作成に用いられますが、`cargo doc` で同様の操作が行えるため、直接実行することは少ないかもしれません。

```shell
# rustdoc によるドキュメントの生成
rustdoc (ファイルのパス)
```

#### 1.2.4. `rustup` コマンド

`rustup` コマンドは Rust のアップデートを行う際に使用します。

```shell
# Rust のツールチェーンすべてのアップデート
rustup update
# Rust の安定版へのアップデート
rustup update stable
# Rust の Nightly 版へのアップデート
rustup update nightly
# Rust のデフォルトのツールチェーンの設定
rustup default stable
```

Node.js の `nvm` や `nodenv` のような役割を担っていますね。

以上が Rust の開発における基本的なコマンドの使い方です。おおよそコマンドについての理解が得られたところで、プロジェクトの作成と実行を試してみます。

---

## 2. Rust プロジェクト作成・実行

Rust でのプロジェクトの作成方法は 2 通りあります。
カレントディレクトリ直下にプロジェクトを作成する場合は `cargo new (プロジェクト名)` を実行します。今回はプロジェクト名を `rust-project` として作成します。

```shell:カレントディレクトリ直下にプロジェクトを作成する場合
cargo new rust-project
```

また、カレントディレクトリ自体をプロジェクトとする場合は `cargo init` コマンドを実行します。

```shell:カレントディレクトリをプロジェクトとする場合
mkdir rust-project
cd rust-project
cargo init
```

:::note warn
ディレクトリ内で、同名のプロジェクトが既に存在したり、公式のパッケージ名として使用されている場合はエラーが出てプロジェクトの作成に失敗します。
:::

上記いずれかの方法でプロジェクトを作成し、`rust-project` ディレクトリ内で `src/main.rs` に `Hello, world!` を出力する Rust のプログラムが生成されます。

```rust:src/main.rs
fn main() {
    println!("Hello, world!");
}
```

プロジェクト内の任意のディレクトリで下記のコマンドを実行するとターミナルに `Hello, world!` が表示されます。

```shell
cargo run
```

これでプロジェクトの作成を行って、プログラムを実行するまでの流れが完了です。

---

## 3. Rust の開発で役立つ VSCode の拡張機能

最後に VSCode で Rust の開発を行うときに役立つ拡張機能の紹介をして締めくくらせていただきます。Rust の開発元から公式で出ている rust-analyzer というプラグインがおすすめです。

https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer

これさえインストールしておけば、コードのシンタックスハイライト・スニペットの表示・コードのフォーマットなど一通りのことはやってくれます。

フォーマットをする際は、VSCode で `⌘ Shift P` でコマンドパレットを開き `Format Document` と入力して下さい。フォーマットに rust-analyzer を選択すれば変更を保存したときに自動でフォーマットしてくれるようになります。

---

最後まで読んでくださりありがとうございました。
今回はこれから Rust を使って開発を行う人向けに基本的な環境構築の方法を解説させていただきました。筆者自身、記事執筆時点では Rust に触れて間もないためまだまだ勉強しなくてはなりません。Rust の開発で学んだことは随時記事にさせて頂こうと思います。

[^1]: [Rust 公式ドキュメント](https://www.rust-lang.org/ja)