見出し画像

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 も何をすればいいか分かりません。


初心者向け開発フロー

 最後に、ここまでの道具を使った、おすすめの開発の流れをまとめます。この順番をなぞるだけで、ぐっと安定した開発ができます。

  1. 作りたいものを Claude Code に伝える
    何を作りたいか、できるだけ具体的に。

  2. 生成されたコードを「読む」
    第1回第2回の知識で、ざっくり何をしているか把握します。

  3. `cargo check` で文法を確認してもらう
    まず、ちゃんと組み立てられるかをチェック。

  4. `cargo test` で動きを確認してもらう
    ちゃんと期待通りに動くかをチェック。

  5. `cargo clippy` で品質を上げてもらう
    危ない書き方や、もっと良い書き方を直してもらいます。

  6. `Cargo.toml` の依存ライブラリをレビューしてもらう
    変な部品が入っていないか、Claude Code に点検を頼みます。

  7. 動かして、エラーが出たら専門用語を添えて頼む
    「所有権を維持して直して」のように、的確にお願いします。


まとめ:そして連載の終わりに

 最終回のおさらいです。

  • 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を活用したあなたの開発を、心から応援しています。


【第1回】所有権・借用を理解すれば世界が変わる

【第2回】つまずきやすいポイントOption・Result・async

 今回の連載について、ChatGPT(5.5)に全体構成とファクトチェックと表紙画像生成を、Claude Cowork(Opus 4.8)に原稿作成を、それぞれ担当してもらいました。最後に、私が加筆・修正しています。

いいなと思ったら応援しよう!