Claude Codeを使いこなすためのRust入門【第3回】Cargo・依存ライブラリ・セキュリティ
はじめに:いよいよ「作る」ための道具の話
第1回では「所有権・借用」、第2回では「Option・Result・async」を学びました。ここまでで、Claude Code が書いたコードを「読む」力は、だいぶついてきたはずです。
最終回では少し視点を変えます。テーマは、「実際に開発を進めるための道具」です。
`Cargo`(カーゴ)
`Cargo.toml`(カーゴ・トムル)
クレート / 依存ライブラリ
`cargo check`・`cargo test`・`cargo clippy`
セキュリティレビュー
文法ではなく「現場の道具」の話なので、今回はコードよりも「使い方」の感覚をつかんでいきましょう。
なぜこの知識が必要なのか
Claude Code は、コードを書くだけでなく、ライブラリを追加したり、テストを走らせたりもしてくれます。
でも、ここで問題が起きます。
Claude Code が「便利だから」と、よく知らないライブラリを勝手に追加することがあります。中には、もう更新が止まっていたり、安全でないものが混じることもあります。
つまり、あなたが道具の名前と役割を知らないと、「気づかないうちに、あやしい部品がアプリに紛れ込む」というリスクに気づけません。
逆に、道具の名前を知っているだけで、「この `Cargo.toml`、変なライブラリ入ってない?」「`cargo clippy` でチェックして」と、的確に指示できるようになります。
基本概念(1):Cargo 〜Rust開発の「総合マネージャー」〜
まず `Cargo`(カーゴ)です。Cargo は、「なんでもやってくれるRust 開発の総合マネージャー」です。
引っ越しを思い浮かべてください。荷造り、運搬、荷ほどき…ぜんぶ自分でやると大変ですよね。そこで、まとめて引き受けてくれる引っ越し業者がいると助かります。
Cargo は、まさにこの引っ越し業者です。Rust 開発で必要な、こまごました作業をまとめて担当してくれます。
例えば、こんなことをしてくれます。
新しいプロジェクトの土台を作る
必要な部品(ライブラリ)を取ってくる
プログラムを動く形に組み立てる(これを「ビルド」と呼びます)
テストを走らせる
Claude Code が `cargo` で始まるコマンドを実行しているとき、それは「この総合マネージャーに仕事を頼んでいる」と思えばOKです。
基本概念(2):Cargo.toml 〜プロジェクトの「設計図」〜
次に `Cargo.toml` です。これは、あなたのプロジェクトの「設計図」兼「買い物リスト」です。
このファイルを開くと、こんなことが書いてあります。
[package]
name = "my_app" # アプリの名前
version = "0.1.0" # バージョン
[dependencies]
serde = "1.0" # 使うライブラリと、そのバージョンこのファイルは、人間が読みやすいように作られています。
`[package]` のところには、アプリの名前やバージョンが書いてあります。そして、大事なのが `[dependencies]` の部分です。
ここに、このアプリが使う外部の部品(ライブラリ)の一覧が並びます。
上の例では `serde`(サーデ)というライブラリを使う、と書いてあります。
つまり、 `Cargo.toml` を見れば、「このアプリが、外からどんな部品を借りてきているか」が一目で分かるのです。セキュリティの話で、ここがとても重要になります。
なお、 `Cargo.toml` に似た名前のものに `Cargo.lock` があります。これは「実際にライブラリのどのバージョンを使っているか」を記録したファイルです。初心者のうちは、「Cargo.toml は人が編集するもの、Cargo.lock はCargoが管理するもの」と覚えておけば十分です。
基本概念(3):クレートと依存ライブラリ
ここで「ライブラリ」という言葉を整理しておきましょう。
Rust の世界では、crate(クレート)という便利な部品を用います。多くの場合、外部から借りてきます。「クレート」は英語で「木箱」のこと。部品が詰まった箱、というイメージです。
そして、自分のアプリが動くために必要なクレートのことを、依存ライブラリ(または単に「依存」)と呼びます。「このクレートに頼って(依存して)動いている」という意味です。
レシピで例えましょう。
カレーを作るとき、市販のカレールーを使いますよね。ルーを一から作らず、できあいの便利なものを借りてくる。このルーが「クレート」、そして「カレーはルーに依存している」というわけです。
世界中の人が作ったクレートは、crates.io(クレーツ・アイオー)という
大きな倉庫に集められていて、Cargo がそこから自動で取ってきてくれます。
便利な反面、「その箱の中身、本当に安全?」という視点も大切になります。
開発の必需品:cargo check と cargo clippy
ここからは、Claude Code と一緒に使うと心強い、2つの道具を紹介します。
・cargo check 〜すばやい「動くかな?」チェック〜
`cargo check` は、「このコード、ちゃんと組み立てられる?」をすばやく確認する道具です。
プログラムを完全に組み立てる(ビルドして実行ファイルを作る)のは、少し時間がかかります。`cargo check` は、その手前まで進めて、「文法やルールの間違いがないか」だけを高速でチェックしてくれます。
第1回・第2回で出てきた、所有権や型のエラーも、ここで見つかります。言わば「料理を作る前に、材料がそろっているか確認する」ようなものです。
・cargo test 〜ちゃんと「期待どおり」に動くか確認〜
`cargo test` は、「プログラムが期待どおりに動くか」を確認する道具です。
`cargo check` は、「コードに文法やルールの間違いがないか」を調べてくれました。でも、それだけでは「正しい答えを返すか」までは確認できないのです。
そこで活躍するのが `cargo test` です。
学校のテストを思い浮かべてください。計算式がきれいに書けていても、答えが間違っていたら点はもらえませんよね。同じように、プログラムも「動く」だけでは十分ではなく、「期待どおりに動くか」を確かめる必要があります。
`cargo test` は、プログラムにあらかじめ用意しておいた「テスト」をまとめて実行し、「成功した」「失敗した」を教えてくれます。
Claude Code はテストコードも作ってくれることがあります。新しい機能を追加したら、まず `cargo test` を実行してもらいましょう。もし失敗したら、「どのテストが、なぜ失敗したのかを説明して修正してください」とお願いすれば、原因を一緒に調べてもらえます。
「コードがルールの間違いなく書けたら終わり」ではなく、「テストが通ったらひと安心」。この習慣を身につけると、安心して開発を進められるようになります。
・cargo clippy 〜親切な「先輩」からのアドバイス〜
`cargo clippy`(カーゴ・クリッピー)は、もう一歩進んだ道具です。これは、「動くけど、もっと良い書き方があるよ」と教えてくれる先輩のような存在です。
エラーにはならないけれど、
危ない書き方になっている
もっとシンプルに書ける
無駄な処理がある
といった点を、やさしく指摘してくれます。
clippy(クリッピー)は「クリップ」から来た名前で、Microsoft Officeにいた、アドバイスをくれるキャラクターが由来です。まさに「気の利く相棒」というわけです。
Claude Code が書いたコードに `cargo clippy` をかけてもらうと、品質がぐっと上がります。ぜひ習慣にしてみてください。
セキュリティレビュー 〜借りた部品は安全?〜
さて、最終回の山場、セキュリティの話をします。重要なポイントは、
「外から借りてきた部品(クレート)は、本当に信頼できる?」
です。
カレールーの例で言えば、「賞味期限は切れていない?」「変なメーカーのものじゃない?」と確認するのと同じ感覚です。
具体的に、初心者が気にすべきはこのあたりです。
更新が止まっていないか:何年も放置されたクレートは、危険が直っていない可能性があります。
本当に必要か:「念のため」で増えた部品は、リスクも増やします。
有名で、よく使われているか:多くの人が使うクレートは、それだけ多くの目でチェックされていて、リスクが低くなっています。
Rust には、依存ライブラリの危険性を自動で調べてくれる`cargo audit`(カーゴ・オーディット)という便利な道具もあります。「監査(オーディット)」、つまり安全点検をしてくれる、と覚えておけば十分です。
そして、何より心強いのが、Claude Code 自身にレビューを頼めることです。
AIへのレビュー依頼方法
ここが今回のいちばん大事なところです。Claude Code に「点検」をお願いする言葉を紹介します。
(1)依存ライブラリのチェック
悪い例
安全にして
良い例
`Cargo.toml` に書かれている依存ライブラリを一覧にして、
それぞれが「何のために必要か」「よく使われている安全なものか」を
説明してください。不要そうなものがあれば教えてください。
(2)コード全体の品質チェック
悪い例
バグないか見て
良い例
このコードを `cargo clippy` の観点でレビューしてください。
特に、`unwrap()` などアプリが落ちる危険がある箇所を
重点的に教えてください。
(3)セキュリティの観点
悪い例
安全にして
良い例
このプログラムで、外部からの入力を扱っている箇所はどこですか?
そこに危険な処理がないか、初心者にも分かるように説明してください。
コツは、これまでと同じです。「何を」「どの観点で」見てほしいかを、具体的に伝えること。「安全にして」では、AI も何をすればいいか分かりません。
初心者向け開発フロー
最後に、ここまでの道具を使った、おすすめの開発の流れをまとめます。この順番をなぞるだけで、ぐっと安定した開発ができます。
作りたいものを Claude Code に伝える
何を作りたいか、できるだけ具体的に。`cargo check` で文法を確認してもらう
まず、ちゃんと組み立てられるかをチェック。`cargo test` で動きを確認してもらう
ちゃんと期待通りに動くかをチェック。`cargo clippy` で品質を上げてもらう
危ない書き方や、もっと良い書き方を直してもらいます。`Cargo.toml` の依存ライブラリをレビューしてもらう
変な部品が入っていないか、Claude Code に点検を頼みます。動かして、エラーが出たら専門用語を添えて頼む
「所有権を維持して直して」のように、的確にお願いします。
まとめ:そして連載の終わりに
最終回のおさらいです。
Cargo:Rust 開発の総合マネージャー
Cargo.toml:プロジェクトの設計図兼、部品の買い物リスト
クレート / 依存ライブラリ:外から借りてくる便利な部品(箱)
cargo check:すばやい「動くかな?」チェック
cargo test:期待通りに動くかチェック
cargo clippy:もっと良い書き方を教えてくれる先輩
セキュリティ:借りた部品は安全? を意識する
そして、全3回を通じていちばん伝えたかったこと。
Rust の全部を理解する必要は、まったくありません。
所有権や借用、Option や Result、Cargo やクレート。今回学んだのは、Rust という広い世界の、ほんの入り口です。でも、それで十分なのです。
なぜなら、あなたの隣には Claude Code がいるからです。あなたがやるべきことは、すべてを書くことではなく、次の3つです。
コードを「なんとなく読める」
エラーの「種類に気づける」
AI に「的確にお願いできる」
「Rust は難しいから、自分には無理」ではなく、「Claude Code となら、Rust でもちゃんと開発できそう」。その手応えこそが、この連載のゴールでした。
Claude Codeを活用したあなたの開発を、心から応援しています。
【第2回】つまずきやすいポイントOption・Result・async
今回の連載について、ChatGPT(5.5)に全体構成とファクトチェックと表紙画像生成を、Claude Cowork(Opus 4.8)に原稿作成を、それぞれ担当してもらいました。最後に、私が加筆・修正しています。
