[初学者向け]Rustを触ってみよう① ~環境構築編~

## はじめに
こんにちは！ITスクールRareTECHにてCS（Customer Support）を担当している池村です。
今回はRustの学習を始める方向けの記事になります。私自身、Rustを触るのは初めてです。いつもは初学者向けの記事を量産しているのですが、自分の勉強にはあまりなっていないと感じていました。じゃあ自分も初めて触れる技術について記事にしていこうと考えた次第です。

対象読者
- PATHの概念がわかっている方
- Rust触ってみたい方


## なぜRustなのか？
私は今までGoとPythonは触ってきました。
静的かつコンパイラの言語と、動的かつインタプリタの言語に触れてみたものの、メモリについてはそれほど詳しくありません。
もちろんメモリが何をしているかはある程度理解していますが、ガベージコレクションが搭載されている言語の場合、あまりメモリを意識する必要がないことがメリットでデメリットでもあります。メモリを管理する言語はCやC++などがあると思いますが、今から学習するなら新しい言語でメモリについて学びたいと思いました。

特にRustにある所有者という概念が面白そうと思いました。
結局はこの『面白そう』が強いです。
![cbd8ada3-a7b1-489c-b1de-9983c5ea3fed_720.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/173ac286-c864-da56-cdd4-7a52aad32119.png)

では早速環境構築して`Hello World`をしていきたいと思います。
今回はこちらの書籍をもとに進めていくことにしました。

https://www.amazon.co.jp/%E3%83%90%E3%83%83%E3%82%AF%E3%82%A8%E3%83%B3%E3%83%89%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%82%92%E7%9B%AE%E6%8C%87%E3%81%99%E4%BA%BA%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AERust-%E5%AE%89%E6%9D%B1-%E4%B8%80%E6%85%88-ebook/dp/B0DG8CD8JX/ref=sr_1_5?adgrpid=105000872347&dib=eyJ2IjoiMSJ9.LqDzG3sbJIdJgPeFBlYtY1zrrUSTTgk45Xo6_H3th1mjyNLNuhyF_hCHOSS9PV0o0TfJR-oo3OSikgqoGD_eZ5q96-CfVWQII_SGOUqkn1qaLrTzhP_6DTBMtHxDxoU_O3J4y3yH1F0W16PuiUvzvtMWOA_KtTAmsRHYRFKsdcIuISyh5gQ3hd4v1R-W1IIHuNporo_90UtsiWYKZ88HtSmZRxkw94m9epoA1nAd6-82YRfgh-YQTlKucT65lmlGsx3bwmmS4nagK9eg3roYVuiinohxEvPU4_bXZMrfl75dq0Fe_mHQzmbeEfoX-W2dRpdpafSLJAubZ7CswfBCBRJAJ2IzjN5OwPDC5-DaqJOYnAN7vSukNNdzChfG3DF12wlfycxn-A-_0LIKqgn4i621D_ky2rn9kB1-K3wetGx065oIB7WYfDWS4APYmM8M.i6VLGjgjkK8qXTtYl23gNQdhErIYmxa5gBaELbjfOWM&dib_tag=se&hvadid=651373598636&hvdev=c&hvlocphy=1009309&hvnetw=g&hvqmt=e&hvrand=4678991623846973515&hvtargid=kwd-915296383819&hydadcr=27001_14664495&jp-ad-ap=0&keywords=rust+%E6%9C%AC&qid=1734235086&sr=8-5

:::note info
私は新しい技術を学ぶ時は、本やUdemyなどでとりあえず簡単そうなものを選びます。簡単な本だと挫折しにくいというのが理由です。
そして少しずつ難しめな本に切り替えていきます。もちろん学習の過程でググりまくりますし、AIもバリバリ使っていきます。
:::


## インストール
私のMac環境は以下になります。
| チップ | Apple M1 Pro |
| ---- | ---- |
| **OS** | **macOS Sequoia バージョン15.1** |
| **PC名** | **MacBook Pro 14インチ** |
| **メモリ** | **16GB** |
| **ストレージ** | **516GB** |

そろそろ買い替え時期な気がしますね。（3年以上使用中）

では以下のリンクからRustをインストールしていきます。

https://www.rust-lang.org/ja/tools/install


```Bash:インストールコマンド
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```

```Bash:インストール時の選択肢
1) Proceed with standard installation (default - just press enter)
2) Customize installation
3) Cancel installation
>
```
インストール時に3択の質問がされます。
```Bash:内容
1) デフォルトの設定でインストールする
2) カスタム設定でインストールする
3) インストールをキャンセルする
>
```

カスタムは難易度高そうなので、一旦はデフォルトでインストールしてみます。
1と打ってEnterですね。

```Bash:インストール完了
Rust is installed now. Great!

To get started you may need to restart your current shell.
This would reload your PATH environment variable to include
Cargo's bin directory ($HOME/.cargo/bin).

To configure your current shell, you need to source
the corresponding env file under $HOME/.cargo.

This is usually done by running one of the following (note the leading DOT):
. "$HOME/.cargo/env"            # For sh/bash/zsh/ash/dash/pdksh
source "$HOME/.cargo/env.fish"  # For fish

```

一旦シェルを再起動した方がいいと言われていますね。再起動して、PATHが通っていればOKなようです。

```Bash:バージョンの確認
rustc --version
```

```Bash:バージョン確認完了
rustc 1.83.0 (90b35a623 2024-11-26)
```




## 環境構築の際にインストールされるものについて
インストールをするのは簡単ですが、実際はどういった設定がされているかは理解しておきましょう。
- Cargo（カーゴ）と呼ばれるパッケージマネジャー
これはホームディレクトリに`.cargo`というディレクトリが作られ、その中の`.cargo/bin`の中にRustで使うコマンド類が準備されているようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/9b26d312-2fc5-22c2-de5a-4bfd6466e634.png)


- `rustup`
これはRust本体のバージョンを変更したりできるコマンドですね。
- `rustc`
これはRustでコンパイルするためのコマンドです。Rustはコンパイラ型の言語なので、機械語に翻訳するためのコマンドになります。
- `clippy`
linterですね。要はコードのいい書き方や誤りを指摘してくれるものです。これ標準で入ってるんですね。面白い。
- rustfmt
コードを整形してくれるformatterですね。これも標準搭載か〜。

## Hello World!してみよう
### シンプルにコンパイルから実行
早速ファイルを作って、`Hello World!`をしてみます。
今回は適当なディレクトリを作成して、その中にファイルを作ってみます。私はVimを使いますが、基本的にエディタはなんでも大丈夫です。VSCodeでも使ってください。
```Rust:main.rs
fn main() {
   println!("Hello World!") ;
}
```

ではコンパイルして実行ですね。この辺りはGoやJavaなどとも手順は一緒です。インタプリタ型の言語しか使ったことがない人は、以下の点を意識してみましょう。
1. ファイルを作成
1. 中身にコードを記述して保存
1. コンパイルを行う
1. 実行する

シェルでファイルを作成するなら
```Bash:ファイルの作成
touch main.rs
```
か、Vimでファイルを作成しつつ開くことも可能です。
```Bash:Vimで開く
vim main.rs
```

VSCodeの場合は`code`コマンドのPATHを通している前提で以下のコマンドを叩きましょう。
```Bash:VSCode
code main.rs
```
**コンパイル**
```Bash:コンパイル
rustc main.rs
```

**実行**
```Bash:実行方法
./main
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/2f5b8bd8-0249-9a40-05c9-258af6a6c627.png)

これ以外にCargoを使った実行方法もあるので、そちらも見ていきましょう。

### Cargoの利用
Cargoを使うときは、プロジェクトが作成されます。`new`以降のプロジェクト名は適当で大丈夫です。今回は`test_hello`にします。要はパッケージを作っているんですね。
```Bash:Cargoでプロジェクトを作成
cargo new test_hello
```
このコマンドを叩くと以下のようなディレクトリが勝手に生成されます。
```Bash:プロジェクトの中身
.
└── test_hello
    ├── Cargo.toml
    └── src
        └── main.rs

3 directories, 2 files
```

ではこの`main.rs`にコードを書いていきましょう。と、思ったらすでに書いてありました。勝手に書かれているとはびっくりです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/d9045662-37bc-8400-23a2-181a8cd2d07e.png)

ここで勝手に作られているファイルはなんなのか見ていきましょう。
#### Cargo.toml
これはCargoの設定ファイルですね。TOML形式で書かれています。今回作られたRustのパッケージ情報が書かれているみたいですね。
```TOML:Cargo.tomlの中身
[package]
name = "test_hello"
version = "0.1.0"
edition = "2021"

[dependencies]

```
#### `.git`と`.gitignore`
これはGitHubなどで使われるディレクトリとファイルですね。Gitにpushしたくないものなどを書いておくことで、その通りにGitコマンドが動きます。

### Cargoでの実行方法
```Bash:実行方法
cargo run
```

このコマンドを実行すると、コンパイルと実行を同時にしてくれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/578fa58f-3edf-128f-bf7f-df2f996a0530.png)

便利ですね。コンパイルと実行を別々にすることもできます。
**コンパイル（ビルド）**
```Bash:build
cargo build
```
**実行**
```Bash:実行
target/debug/test_hello
```

## おわりに
やはり新しい言語を触るのはワクワクしますね。
でもこれからどんどん難しくなると思うので、気合い入れて理解していきます。
同じようにRustを触り始めた人は一緒に頑張っていきましょう。
次の記事では標準搭載のformatterやlinterを使ってみようかなと思います。あとVimのRust用プラグインも調べて入れておかないとですね。

また次回の記事も見てくれると嬉しいです。

## 余談
Rustはなんで蟹なんだろう、、今度調べよう。
![0044b294-06ea-4dfa-a697-59192533cb91_720.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798971/406eb258-cdfd-0a8e-7dfc-115533e7765f.png)