【カーゴ】

Cargo とは?

最終更新:
💡 Rustの荷物をそろえて、作る・試す・動かす

Rustのパッケージ管理とビルドを支える公式ツール。Cargo.tomlに書いた依存関係を解決し、必要なクレートを取得してコンパイラを呼び出す。ビルド・テスト・実行などを共通のコマンドで扱える。

📌 このページのポイント
Cargo:荷物をそろえて、作る・試すCargo.toml依存と設定クレートcrates.io などCargoがまとめて準備依存を解決 → rustcでビルドbuild作るtest試すrun動かす
Cargo.tomlで依存を指定し、Cargoが取得とビルドをまとめます。Cargo.lockは解決した依存の具体的な版などを記録します。
ひよこ ひよこ
Cargoは、Rustのnpmみたいなもの?
ペンギン先生 ペンギン先生
パッケージを管理する点では似ているよ。CargoはRustの依存関係を取得し、コンパイラのrustcを呼び出してビルドするところもまとめる公式ツールなんだ。cargo buildでビルド、cargo testでテスト、cargo runでビルドして実行するなど、目的に合わせて使えるよ。
ひよこ ひよこ
Cargo.tomlには、何を書くの?
ペンギン先生 ペンギン先生
パッケージの名前や版、依存するクレート、ビルドに関する設定などを書くよ。TOMLという形式の設定ファイルで、マニフェストとも呼ばれる。たとえば使いたいライブラリをdependenciesに記載すると、Cargoが依存関係を解決して必要なものを取得するんだ。
ひよこ ひよこ
クレートは、どこから取ってくるの?
ペンギン先生 ペンギン先生
標準の公開レジストリはcrates.ioだよ。ほかにGitのリポジトリやローカルのパスなどを依存先に指定することもできる。cargo addで依存の設定を追加する使い方もある。便利だからと何でも取り込むのではなく、使うクレートの内容や利用条件、更新状況を確かめよう。
ひよこ ひよこ
Cargo.lockがあれば、全員まったく同じ環境になる?
ペンギン先生 ペンギン先生
Cargo.lockには、解決した依存の版や取得元などの具体的な情報が記録される。共有すれば、同じ依存を使う助けになるよ。ただしOS、コンパイラ、外部ライブラリなどの違いまで全部なくなるわけではない。基本はCargoが更新するファイルで、手で書き換えるのではなく、意図した依存更新はcargo updateなどで行うんだ。
ひよこ ひよこ
最初は、何から試すとよい?
ペンギン先生 ペンギン先生
小さな実行プログラムなら、cargo new hello_worldで作り、生成されたフォルダーへ移ってcargo runを試せるよ。ソースとCargo.tomlを見比べると役割をつかみやすいね。開発用の通常ビルドと、cargo build --releaseによる最適化したビルドも区別しよう。Cargoが便利でも、プログラムの正しさまで自動で保証するわけではないよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Cargo」って出てきたら「Rustのパッケージ管理とビルドをまとめる道具」と思えばだいたいOK!
📖 おまけ:英語の意味
「Cargo」 = 貨物・積み荷
💬 英語では貨物のこと。Rustで使うパッケージをそろえる道具として覚えるとイメージしやすいよ。

参考資料

← 用語集にもどる