この記事では、RustのCargo入門として、プロジェクトの立ち上げから基本的な使い方、ちょっと便利な機能まで、まるっと解説していきます!
Rustを学び始めたばかりだと、Cargoって名前は聞くけど、実際何をしてくれるヤツなのか、イマイチぴんと来ないかもしれませんね。
大丈夫!この記事を読めば、CargoがRust開発をどれだけ楽にしてくれるか、きっと実感できるはず。
この記事でわかること
- Cargoが何者なのか、なぜRust開発でよく使われるのかが分かる
- Cargoを使って新しいRustプロジェクトをサクッと作れる
- 書いたコードをビルド(コンピューターが分かる言葉に翻訳)して実行できる
- 便利な外部プログラム(クレート)を自分のプロジェクトに取り込む方法が分かる
- よく使うCargoコマンドを覚えられる
RustのCargoとは?Rust開発に必須の味方を理解しよう
一言でいうと、CargoはRustプログラムを作る上でのお助け役、万能マネージャーみたいな存在です。
プログラミングの世界では、コードを書くだけでなく、それを動かすための準備(ビルド)や、他の人が作った便利なプログラム部品(ライブラリやクレートと呼びます)の管理、テストの実行など、色々な作業が発生します。
Cargoは、そういったRust開発にまつわる面倒な作業を、ほとんど自動でやってくれるんです。
もしCargoがなかったら…と考えると、プロジェクトの準備からビルド、ライブラリの管理まで、全部手作業でやることになり、考えるだけでちょっと大変そうですよね?
Cargoがあるからこそ、私たちは快適にRustコードを書くことに集中できるのです。
なぜCargoが必要?Rust開発におけるCargoの役割
じゃあ、具体的にCargoはどんな仕事をしてくれるのでしょうか? 主な役割を見てみましょう。
- プロジェクトのひな形作成
Rustプロジェクトに必要な基本的なファイルやフォルダ構成を、コマンド一つでパッと作ってくれます。 - ビルド(翻訳作業)の自動化
人間が書いたRustのコードを、コンピューターが実行できる形式に変換(ビルド)する作業を自動で行います。 - 依存クレート(外部プログラム)の管理
他の人が作って公開している便利なプログラム部品(クレート)を使いたい時、それをインターネットから探してきて、自分のプロジェクトに組み込む準備を自動でやってくれます。バージョン管理もしてくれるので安心です。 - テストの実行
書いたコードが正しく動くかを確認するテストコードを実行するのも、Cargoのコマンド一つで簡単に行えます。 - その他いろいろ
ドキュメント作成の補助や、プロジェクトの公開など、他にもたくさんの機能があります。
Cargoはまさに、Rust開発の縁の下の力持ちと言えるでしょう。
Cargoを使うメリット - 開発効率が劇的に向上!
Cargoを使うと、どんないいことがあるのでしょうか?
一番大きなメリットは、開発の効率がめちゃくちゃ上がることです!
- 時間の節約
ビルドや依存関係の管理といった面倒な作業をCargoが肩代わりしてくれるので、プログラマーはコードを書くことに集中できます。 - ミスの削減
手作業でやると間違いやすい設定なども、Cargoがよしなに対応してくれるので、ミスが減ります。 - コードの再利用が簡単に
世界中の開発者が作った便利なクレートを、まるで自分の道具箱から道具を取り出すように、簡単にプロジェクトに追加して使えます。これにより、複雑な機能も効率よく実装できるようになるのです。車輪の再発明をしなくて済むのは嬉しいですね! - プロジェクト構成の標準化
Cargoを使うと、誰が作っても同じようなフォルダ構成になるので、他の人が書いたコードも読みやすくなります。
特に、他の開発者が作った便利なクレート(部品)を簡単に使えるようになる点は、開発スピードを格段に上げてくれます。これを使わない手はないですよね!
Cargoの基本的な使い方 - 最初のプロジェクトを作ってみよう
お待たせしました! ここからは実際にCargoを使ってみましょう。
まずは、あなたのパソコンにCargoが入っているか確認するところから始めます。
ターミナル(WindowsならコマンドプロンプトやPowerShell、Macならターミナル.app)を開いて、以下のコマンドを打ち込んでみてください。
cargo --version
もし、`cargo 1.XX.X (....)` みたいな表示が出れば、Cargoはすでに準備OKです!
(もしコマンドが見つからない、といったエラーが出た場合は、Rustの公式サイトからRust自体をインストールし直してみてください。通常、Rustと一緒にCargoもインストールされます。)
準備ができたら、いよいよ最初のRustプロジェクトを作成してみましょう!
プロジェクトの作成 - `cargo new`コマンド
新しいRustプロジェクトを作るのは、驚くほど簡単です。
ターミナルで、プロジェクトを作りたい場所に移動してから、以下のコマンドを実行します。
cargo new my_first_project
`my_first_project` の部分は、あなたの好きなプロジェクト名に変えてくださいね。(半角英数字とアンダースコア `_` が使えます)
このコマンドを実行すると、`my_first_project` という名前のフォルダが作られ、その中にいくつかファイルとフォルダが自動で生成されます。
my_first_project/ ├── Cargo.toml └── src/ └── main.rs
- `Cargo.toml`
プロジェクトの設定ファイルです。プロジェクト名やバージョン、そして利用する外部クレート(後で説明します)などを記述します。このファイルはCargoにとって非常に心臓部です。 - `src/`
ソースコードを置くためのフォルダです。 - `src/main.rs`
プログラムのエントリーポイントとなるファイルです。最初に実行されるコードが書かれています。中身は `Hello, world!` を表示する簡単なプログラムがすでに書かれているはずですよ。
たったこれだけで、Rustプロジェクトの基本的な骨組みが完成しました!簡単でしょう?
プログラムのビルド - `cargo build`コマンド
さて、プロジェクトができたので、次はこの中のプログラム(`src/main.rs`)をコンピューターが実行できる形に変換(ビルド)してみましょう。
ターミナルで、先ほど作成したプロジェクトのフォルダ(`my_first_project`)の中に移動してから、以下のコマンドを実行します。
cd my_first_project cargo build
コマンドを実行すると、いくつかメッセージが表示され、ビルドが行われます。
ビルドが成功すると、プロジェクトフォルダの中に `target` という新しいフォルダが作られ、さらにその中の `debug` フォルダに、実行可能なファイル(Windowsなら `.exe` がついたファイル、MacやLinuxなら拡張子なしのファイル)が生成されます。
この `cargo build` コマンドは、ソースコードをチェックして、問題がなければ実行ファイルを作り出す大事な工程です。
ちなみに、配布用の最適化された実行ファイルを作りたい場合は、`cargo build --release` というコマンドを使います。これは少しビルドに時間がかかりますが、実行速度が速くなります。
プログラムの実行 - `cargo run`コマンド
ビルドして実行ファイルを作る方法が分かりましたね。
でも、「ビルドして、それから実行ファイルを自分で探して実行するのって、ちょっと面倒…」と感じませんか?
そんなあなたのために、もっと便利なコマンドがあります。それが `cargo run` です!
cargo run
このコマンドは、ビルドと実行を一度にやってくれるスグレモノです。
もしソースコードに変更があってまだビルドされていなければ、まずビルドを行い、その後すぐにプログラムを実行してくれます。変更がなければ、すぐに実行してくれます。
開発中は、コードを書いては試して、を繰り返すことが多いので、`cargo run` コマンドを主に使うことになるでしょう。
実行すると、ターミナルに `Hello, world!` と表示されるはずです。最初のプログラムが動きましたね!
コードのテスト - `cargo test`コマンド
プログラムが大きくなってくると、「ちゃんと意図した通りに動いているかな?」と確認するのが大変になってきます。
そんな時に役立つのが「テスト」です。RustとCargoは、テストコードを書いて、それを簡単に実行する仕組みも備えています。
テストを実行するには、以下のコマンドを使います。
cargo test
このコマンドを実行すると、プロジェクト内のテストコードを探して実行し、結果を表示してくれます。
まだテストコードは書いていないので、今は「0 tests ran」のように表示されるかもしれませんが、プログラムの品質を保つためにはテストがとても有効です。
これからRustを学んでいく中で、テストの書き方もぜひ覚えてみてくださいね。
RustのCargoで開発を加速 - 外部クレートを使ってみよう
Cargoのすごい機能の一つが、依存関係の管理です。
これは、他の人が作って公開してくれている便利なプログラム部品(クレートと呼びます)を、自分のプロジェクトに簡単に取り込んで利用できる機能のこと。
例えば、「ランダムな数字を使いたいな」と思った時、自分でその仕組みを作るのは結構大変です。でも、Rustには `rand` という、まさにそのためのクレートが公開されています。
Cargoを使えば、この `rand` クレートを、まるで自分の道具箱に新しい道具を追加するように、簡単にプロジェクトに組み込めるのです。
Rustのクレートはcrates.ioというサイトにたくさん集められていて、誰でも利用できます。ここを探せば、きっとあなたの欲しい機能を持ったクレートが見つかるはずですよ。
依存関係の追加 - `Cargo.toml`の編集
では、実際に外部クレートを使ってみましょう。例として、先ほどの `rand` クレートを追加してみます。
プロジェクトのルートにある `Cargo.toml` ファイルをテキストエディタで開いてください。
ファイルの下の方に `[dependencies]` というセクションがあります。(もしなければ、自分で追加してください。)
このセクションに、使いたいクレート名とバージョンを追記します。
[package] name = "my_first_project" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] rand = "0.8"
上の例では、`[dependencies]` の下に `rand = "0.8"` と追記しました。これは、「`rand` クレートのバージョン0.8系統を使いますよ」という意味です。
バージョン番号は `crates.io` で確認できます。通常は最新の安定版を指定することが多いでしょう。
たったこれだけの記述で、外部クレートを使う準備は完了です。ね、簡単でしょう?
クレートの利用:`use`宣言とビルド
`Cargo.toml` に使いたいクレートを記述したら、次はソースコード(`src/main.rs`)で「このクレートの機能を使いますよ!」と宣言する必要があります。
それには `use` キーワードを使います。
例えば、`rand` クレートを使って0から9までのランダムな整数を生成するには、`src/main.rs` を以下のように書き換えます。
use rand::Rng; // randクレートのRngトレイトを使いますよ、と宣言 fn main() { let mut rng = rand::thread_rng(); // 乱数生成器を用意 let n: u32 = rng.gen_range(0..10); // 0から9までの乱数を生成 println!("Random number: {}", n); // 生成した乱数を表示 }
コードを書き換えたら、ターミナルで `cargo run` を実行してみましょう。
cargo run
すると、Cargoはまず `Cargo.toml` を見て、「お、`rand` クレートが必要なんだな」と判断し、インターネットから自動で `rand` クレート(と、それが必要とする他のクレート)をダウンロードしてきます。そして、それらをあなたのコードと一緒にビルドし、実行してくれます。
実行結果として、`Random number: 7` のように、毎回違う数字が表示されるはずです。
`Cargo.toml` に書いて `use` で宣言し、あとは普通にビルド(または実行)するだけで、外部の強力な機能を自分のプログラムに取り込めてしまう。これがCargoの依存関係管理の力です!
【まとめ】RustのCargoで快適な開発を!
さて、ここまでRustの万能マネージャー、Cargoについて解説してきました。
Cargoがプロジェクト作成、ビルド、実行、テスト、そして依存関係の管理といった、Rust開発における様々な作業をいかに簡単にしてくれるか、感じていただけたでしょうか?
もう一度おさらいすると、Cargoは
- `cargo new` でプロジェクトをサクッと作成
- `cargo build` でコードをコンピューターが分かる言葉に翻訳
- `cargo run` でビルドと実行を一気に
- `cargo test` で書いたコードの動作確認
- `Cargo.toml` で外部の便利なクレート(部品)を簡単に追加
といった機能で、あなたのRust開発を力強くサポートしてくれます。
最初は覚えることが少しあるかもしれませんが、一度使い方を覚えてしまえば、手放せなくなること間違いなしです。
ぜひ、この記事を参考に、実際にコマンドを打ち込んで試してみてください。Cargoを使いこなして、快適なRustプログラミングの世界を楽しみましょう!
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。