Crateによる依存関係管理
Cargoによる外部crate(ライブラリ)の管理方法と、コミュニティで利用できる自作crateの公開方法を理解します。
「Crateによる依存関係管理」はCoddyKit上の無料Learn Rust Codingレッスンです。 これはレッスン2/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn Rust Coding学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn Rust Codingコースには全3レッスンが含まれています。
クレートとCargoとは
Rustでは、クレートはコンパイルと配布の基本単位です。コードを含むパッケージやライブラリのようなものだと考えてください。
Cargoは、Rust公式のパッケージマネージャー兼ビルドシステムです。新しいプロジェクトの作成から依存関係の管理、コードのコンパイル、テストの実行まで、あらゆる処理を担います。Rust開発の強い味方です。
`Cargo.toml` ファイル
Cargoで管理されるすべてのRustプロジェクトには、ルートディレクトリに Cargo.toml ファイルがあります。これはTOML(Tom's Obvious, Minimal Language)で記述されたプロジェクトのマニフェストファイルです。
プロジェクトのメタデータを定義し、特に重要な役割として依存関係を一覧にします。
プロジェクトの設定
Cargo.toml の [package] セクションには、クレートに関する重要な情報を記述します。
- name:クレートの名前です。
- version:現在のバージョンです。
- edition:使用するRustエディションです(例:2021)。
- authors:作成者です。
これらの情報は、特にクレートを公開する予定がある場合に重要です。
依存関係を追加する
外部ライブラリ(他のクレート)をプロジェクトで使うには、Cargo.toml の [dependencies] セクションに記述します。
プロジェクトをビルドすると、CargoはRustの中央パッケージレジストリである crates.io から依存関係を自動的にダウンロードしてコンパイルします。
依存関係の構文
Cargo.toml で依存関係を宣言する方法は次のとおりです。
[dependencies]
rand = "0.8.5"これは、rand クレートのバージョン 0.8.5 を取得するようCargoに指示します。バージョンの範囲やローカルパスを指定することもできます。
クレートを使う:例
rand クレートを追加して、乱数を生成してみましょう。まず、[dependencies] に rand = "0.8.5" が記述されていることを確認します。次に、コード内で使用します。
use rand::Rng; // Import the Rng trait
fn main() {
let mut rng = rand::thread_rng(); // Create a random number generator
let n: u8 = rng.gen_range(1..=10); // Generate a number between 1 and 10 (inclusive)
println!("Your random number is: {}", n);
}`Cargo.lock` ファイル
依存関係を含むプロジェクトをビルドすると、Cargoは Cargo.lock ファイルを作成します。このファイルには、プロジェクトで使われる直接依存関係と推移的依存関係の正確なバージョンが記録されます。
これにより、プロジェクトに関わる全員が同じ依存関係のバージョンを使えるため、異なる環境でも再現性のあるビルドが可能になります。
依存関係を更新する
時間が経つと、依存関係にバグ修正や新機能を含む新しいバージョンがリリースされることがあります。更新するには、cargo update コマンドを使います。
このコマンドは、Cargo.toml に記述されたバージョン要件に合う新しいバージョンを crates.io で確認し、それに応じて Cargo.lock を更新します。
自分のクレートを公開する
自分の素晴らしいRustコードをコミュニティと共有したいですか。crates.io に自分のクレートを公開できます。
公開する前に、Cargo.toml に description、license、repository のリンクなど、適切なメタデータが設定されていることを確認してください。
公開コマンド
手順は簡単です。
- ログイン: crates.io の API トークンを使って
cargo login <token>を実行します。 - 公開: プロジェクトのルートディレクトリで
cargo publishを実行します。
Cargo がチェックを実行してコードをパッケージ化し、アップロードします。これで、他の人が利用できるようになります。
クイックチェック: Cargo と Crates
Rust の Cargo によるパッケージ管理について、次のうち正しい説明はどれですか。
復習: 依存関係の管理
Cargo が Rust プロジェクトとその依存関係の管理に欠かせないことを学びました。
- Crates は再利用可能なコードパッケージです。
- Cargo.toml はプロジェクトとその依存関係を定義します。
- Cargo.lock は再現可能なビルドを保証します。
- 独自の crate を crates.io に公開できます。
この強力なシステムにより、Rust でのコードの共有と再利用を非常に効率的かつ信頼性の高い方法で行えます。
よくある質問
「Crateによる依存関係管理」レッスンは無料ですか?
はい。「Crateによる依存関係管理」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn Rust Codingコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn Rust Codingコースには全3レッスンが含まれています。
「Crateによる依存関係管理」で何を学びますか?
Cargoによる外部crate(ライブラリ)の管理方法と、コミュニティで利用できる自作crateの公開方法を理解します。 ブラウザで直接実行するハンズオンコードでLearn Rust Codingを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Learn Rust Codingを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLearn Rust Codingは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/3です。
「Crateによる依存関係管理」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLearn Rust Codingレッスンでコードを書いて実行できますか?
はい。すべてのLearn Rust Codingレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- モジュールによるコード整理
- Crateによる依存関係管理
- `Result`による堅牢なエラー処理