228
156

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

macOSでRustのローカル開発環境を整えるための手順2022

Last updated at Posted at 2022-01-24

このページについて

macOSでのRustのローカル開発環境を整えるための手順を紹介します。

Rust自身についての説明は以下のページをご参照ください。

動作確認環境

  • macOS Monterey (12.1)
  • MacBook Pro (14インチ、2021)
  • チップ: Apple M1 Max
$ sw_vers
ProductName:	macOS
ProductVersion:	12.1
BuildVersion:	21C52

検証にはM1 Max(Apple Silicon系の)チップを使っていますが、Intel Macでも同様に動くと思います。

もし以下の手順で動かなかった場合は、その旨をコメントか編集リクエストいただけますと幸いです。

必要なもの

Rustのローカル開発環境を用意するには、あらかじめ以下のツールが必要となります。インストールしておきましょう。

  • Xcode command line tools
    • ターミナルで xcode-select --install を実行する

Rustローカル開発環境構築

1. rustup のインストール

すべてはここから。

Rustを使ったプログラミングを行えるように、Rustコンパイラのアップデートや開発に必要なツール類を管理するための rustup をインストールします。

macOSの場合は Homebrew を使うと簡単に導入できます。

ターミナル
# rustupインストールおよびrust環境のセットアップ
brew install rustup-init
rustup-init
# シェルの再起動
exec $SHELL -l

Homebrew を使わずにインストールすることもできます。

ターミナル
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

rustupのインストールが完了しましたら、rustupコマンドが実行できるか確かめてみましょう。
以下のコマンドを実行します。

ターミナル
rustup --version
実行結果
rustup 1.24.3 (ce5817a94 2021-05-31)
info: This is the version for the rustup toolchain manager, not the rustc compiler.
info: The currently active `rustc` version is `rustc 1.58.1 (db9d1b20b 2022-01-20)`

このようにrustupのバージョンが表示されればOKです。

バージョン番号はrustupをインストールした時期によって変わってきますが、このバージョンより新しいものであれば特に問題ありません。
2022/1/24現在だとrustupのバージョンは1.24.3です。

また、rustupがインストールされると同時に、Rustのコンパイラである rustc と、ビルドシステム兼パッケージマネージャの cargo も一緒にインストールされます。確認してみましょう。

ターミナル
rustc --version
#=> rustc 1.58.1 (db9d1b20b 2022-01-20)

cargo --version
#=> cargo 1.58.0 (f01b232bc 2022-01-19)

これらがRustでプログラミングを始めるのに必要最低限のツールとなります。

2. Rustの動作確認 - Hello World

動作確認のため、ターミナルで適当な作業用ディレクトリに移動し、以下のコマンドを実行してみましょう。

ターミナル
# rustプロジェクトファイルの作成
cargo new hello_rust

# ディレクトリの移動
cd hello_rust

# Rustプログラムのコンパイルと実行
cargo run
実行結果
   Compiling hello_rust v0.1.0 (<作業ディレクトリ>/hello_rust)
    Finished dev [unoptimized + debuginfo] target(s) in 0.39s
     Running `target/debug/hello_rust`
Hello, world!

実行結果の最後に Hello, world! と表示されれば成功です。

少しプログラムを書き換えてみましょう。お好きなエディターを使って、 src/main.rs ファイルを開き、以下のように書き換えます。

src/main.rs
fn main() {
    for n in 0..10 {
        println!("{n}: Hello, Rust!");
        // NOTE: 文字列中で変数を展開する記法は、古いバージョンのRustだと動かない場合があります
        // その場合は以下に書き換えてください。
        // println!("{}: Hello, Rust!", n);
    }
}

src/main.rs 書き換えたら、保存して実行します。

ターミナル
cargo run
実行結果
   Compiling hello_rust v0.1.0 (<作業ディレクトリ>/hello_rust)
    Finished dev [unoptimized + debuginfo] target(s) in 0.13s
     Running `target/debug/hello_rust`
0: Hello, Rust!
1: Hello, Rust!
2: Hello, Rust!
3: Hello, Rust!
4: Hello, Rust!
5: Hello, Rust!
6: Hello, Rust!
7: Hello, Rust!
8: Hello, Rust!
9: Hello, Rust!

実行結果が変わりましたね。修正したコードが実行結果に反映されていることが確認できました。

3. 開発効率をあげるツールのインストール

cargo-edit - パッケージの追加/削除サブコマンド追加

Rustのビルドシステム兼パッケージマネージャーのCargoは、デフォルトだとパッケージの依存関係を追記する際に Cargo.toml ファイルを手動で書き換える必要があります。

パッケージの依存関係を追加する際に毎回ファイルを編集するのも大変なので、 cargo add <パッケージ名> のようにコマンドでパッケージの依存関係を追加することができる cargo-edit を導入します。

ターミナル
# cargo-editのインストール
cargo install cargo-edit

これでcargo-editの機能が使えるようになりました。

cargo-editの使い方一例
# パッケージの追加
cargo add <パッケージ名>
cargo add <パッケージ名>@<バージョン指定>

# パッケージの追加(開発用)
cargo add <パッケージ名> --dev

# パッケージのアップグレード
cargo upgrade <パッケージ名>

# パッケージの削除
cargo rm <パッケージ名>

cargo-watch - ファイル変更検知

コードを修正する度にターミナルで cargo run を実行するのは面倒です。

そこでファイルの変更を監視し、ファイルの変更を検知すると自動的にビルドや実行を行ってくれる cargo-watch というツールがあります。

cargo-watch をインストールするには以下のコマンドを実行します。

ターミナル
cargo install cargo-watch

cargo-watch の使い方ですが、ファイル変更検知した際に自動実行したいコマンドを cargo watch -x につづけて渡します。 

# cargo check の自動実行
cargo watch -x check

# cargo test の自動実行
cargo watch -x test

# cargo run の自動実行
cargo watch -x run

# check, test, run の連続実行
cargo watch -x check -x test -x run

# cargoではないコマンドの自動実行
cargo watch -- echo Hello world

ファイル変更後にエディターとターミナルの行き来が少なくなるため、開発効率をあげることができるかと思います。

rustfmt - コードフォーマッター

Rustには rustfmt というコードフォーマッターが用意されています。

コードフォマッターを使用することで、コードのスタイルを自動で修正してくれます。

また、コードのスタイルが統一されることで、より本質的なロジックに集中することができ、チーム開発において、スタイルに関する不毛な議論を終わらせる手助けもしてくれます(たぶん)。

rustfmt の導入は rustup component add コマンドを使います。

rustup component add rustfmt

これで rustfmt コマンドおよび cargo fmt コマンドが使えるようになります。

ためしに、 src/main.rs を以下のように書き換え、スタイルをあえて崩した状態で保存します。

src/main.rs
fn main(){
for n in 0..10{
println!("{n}: Hello, Rust!");
}
}

この状態で rustfmt または cargo fmt コマンドを実行します。

# コードスタイルの修正
rustfmt src/main.rs

# または
cargo fmt

再び src/main.rs ファイルを確認すると、コードのスタイルが自動修正されているのがわかります。

src/main.rs
fn main() {
    for n in 0..10 {
        println!("{n}: Hello, Rust!");
    }
}

コードを修正して、Git等のバージョン管理システムにコミットする前には rustfmt または cargo fmt を実行することを癖付けておくとよいでしょう。

Clippy - 静的解析ツール

ClippyはRustの静的解析ツールで、よくある間違いを見つけてRustのコード改善のヒントを出してくれます。

rustup component add サブコマンドを使ってインストールします。

rustup component add clippy

使い方は簡単で、 cargo clippy を実行するだけです。

cargo clippy

コードに問題があれば、エラーまたは警告が発生します。

rust-analyzer - VS Code拡張機能

VS Codeを使ってRustのコードを書く際に便利な rust-analyzer を紹介します。

現在はまだプレビュー状態ですが、rust-analyzerを使うとコード補完が高速に表示されたり、コードジャンプができるようになるのでオススメです。

rust-analyzer を使うためには、rls, rust-src, rust-analysisの3つのrustup componentを追加する必要があります。

rustup component add rls rust-src rust-analysis

続いてVS Codeに rust-analyzer 拡張機能をインストールします。

基本的にはこれだけです。あとはVS CodeでRustプロジェクトを開いて、しばらく経つとコード補完やコードジャンプが使えるようになります。

スクリーンショット 2022-01-24 13.10.00.png

なお、2022/1/24現在ではプレビュー状態なので、たまに補完が効かなくなったり、コードジャンプができなかったりする時があります。

その状態になってしまった場合は Command + Shift + P でコマンドパレットを開き、Rust Analyzer: Restart server を実行するとだいたい直ります。

スクリーンショット 2022-01-24 13.09.22.png

お試しあれ。

Tips

Rustの最新版をインストール(アップデート)する

ターミナルで rustup update コマンドを実行します。

# 安定版のみアップデートする
rustup update stable

# nightlyビルドのみアップデートする
rustup update nightly

# すべてアップデートする
rustup update

参考ページ

228
156
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
228
156

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?