はじめに
「Rustを学びたいが所有権・借用・ライフタイムの概念が難しい」
「コンパイルエラーのメッセージが長くて意味がわからない」
「Rustでどんなものが作れるか具体的にイメージできない」
Rustは安全性と高速性を兼ね備えた言語ですが、他の言語にない独自の概念があり学習コストが高いです。Claude Codeを使えば、難解なコンパイルエラーの解説から適切なコードの提案まで、Rust学習と実装を効率化できます。
目次
- Claude CodeとRust開発の相性
- 所有権・借用エラーの解決
- CLIツールの実装
- Webサーバーの構築(Axum)
- WebAssemblyへのコンパイル
- 非同期処理の実装
- テストとベンチマーク
- まとめ
1. Claude CodeとRust開発の相性
Rustのコンパイルエラーをその場で解説
> 以下のRustのコンパイルエラーを日本語でわかりやすく説明して、
修正方法を教えてください。
error[E0502]: cannot borrow `data` as mutable because
it is also borrowed as immutable
--> src/main.rs:8:5
|
7 | let r = &data;
| ---- immutable borrow occurs here
8 | data.push(4);
| ^^^^^^^^^^^^^ mutable borrow occurs here
所有権と借用の概念も合わせて説明してください。
Cargoプロジェクトの管理
> このRustプロジェクトのCargo.tomlを最適化してください。
確認項目:
- 依存クレートのバージョンが最新か
- features の適切な設定
- dev-dependenciesとdependenciesの適切な分離
- ビルドプロファイルの最適化(release時の設定)
- workspaceの設定(複数クレートの場合)
2. 所有権・借用エラーの解決
よくある所有権エラーのパターン別解決
> 以下のRustコードで所有権エラーが発生しています。
エラーの原因を説明して、所有権を正しく管理するコードに修正してください。
修正方針の選択肢も提示してください:
- Clone・Copyトレイトの使用
- 参照(&)の使用
- Rc<T>・Arc<T>の使用
- ライフタイムアノテーションの追加
[エラーが発生しているコードを貼り付け]
ライフタイムの設計
> このコードにライフタイムアノテーションを追加してください。
なぜそのライフタイムが必要かも説明してください。
また、ライフタイムを使わずに済む代替実装があれば提案してください。
[コードを貼り付け]
3. CLIツールの実装
clapを使ったCLIツール
> Rustでファイル処理CLIツールを実装してください。
ツール名:fileconv
機能:テキストファイルの文字コード変換・改行コード変換
コマンド:
fileconv convert input.txt --from utf-8 --to shift-jis --output out.txt
fileconv detect input.txt # 文字コードを検出
fileconv batch ./dir --from utf-8 --to utf-8 --line-ending crlf
使用クレート:clap(derive API)・encoding_rs・indicatif(プログレスバー)
4. Webサーバーの構築(Axum)
AxumでのREST API実装
> Axumを使ったREST APIを実装してください。
技術スタック:
- Axum 0.8(Webフレームワーク)
- SQLx + PostgreSQL(データベース)
- Tower(ミドルウェア)
- Serde(シリアライズ)
- tracing(ログ)
実装するエンドポイント:
- GET /users・POST /users
- GET /users/:id・PUT /users/:id・DELETE /users/:id
エラーハンドリングをtypeで統一してください。
接続プーリング・グレースフルシャットダウンも設定してください。
5. WebAssemblyへのコンパイル
wasm-packを使ったWasm構築
> このRust関数をWebAssemblyにコンパイルして、
JavaScriptから呼び出せるようにしてください。
実装する機能:
- 画像処理(リサイズ・フィルター)
- 暗号化・ハッシュ計算
- データ圧縮
wasm-packとwasm-bindgenを使ってください。
Next.jsプロジェクトへの組み込み方法も教えてください。
6. 非同期処理の実装
Tokioを使った非同期処理
> Tokioを使って以下の並行処理を実装してください。
処理内容:
- 複数のURLから並行してHTTPリクエスト(最大10並行)
- タイムアウト処理(各リクエスト5秒)
- レート制限(1秒あたり最大5リクエスト)
- エラーのリトライ(最大3回・指数バックオフ)
reqwest・tokio::time・futures::stream を使ってください。
7. テストとベンチマーク
テストの実装
> このRustモジュールのテストを作成してください。
テスト種別:
- ユニットテスト(#[test])
- 統合テスト(tests/ディレクトリ)
- ドキュメントテスト(///コメント内)
- プロパティベーステスト(proptest使用)
[モジュールコードを貼り付け]
criterionによるベンチマーク
> criterionを使ってこの関数のベンチマークを実装してください。
複数の実装を比較して、最も高速な実装を選択してください。
比較する実装:
1. 現在の実装(Vec<T>使用)
2. HashMap使用版
3. BTreeMap使用版
[対象の関数を貼り付け]
8. まとめ
Claude CodeでのRust開発の効率化ポイント:
- 難解なコンパイルエラーを日本語で解説・修正案を提示
- 所有権・借用の設計を相談しながら進められる
- Axum・Tokioなど主要クレートの使い方を熟知
- WebAssemblyへのコンパイルと他言語連携を自動設定
Rustでのオススメ学習パス:
- Claude Codeでコンパイルエラーを解説してもらいながら小さなCLIツールを作る
- axumで簡単なAPIサーバーを実装する
- 非同期処理・並行処理に挑戦する
次回の第43回:Go言語を使った開発をする方法では、シンプルで高性能なAPIサーバーを構築する手順を解説します。
よくある質問(FAQ)
Q. RustのコンパイルエラーはClaude Codeに任せれば解決できますか?
A. ほとんどのケースで解決できます。エラーメッセージ全文をClaude Codeに貼り付けると、原因の解説と複数の修正案を提示してくれます。ライフタイム関連のエラーは特に丁寧に解説してくれます。
Q. Rustの学習にClaude Codeを使うとき、自分で考える機会が失われませんか?
A. 「修正コードを直接出すのではなく、ヒントだけ教えてください」と指示することで、学習効果を保ちながら活用できます。
この記事はClaude Code入門シリーズ(第5部)の第42回です。← 第41回:Ruby on Rails | 第43回:Go言語 →
ご質問はお問い合わせページからお気軽にどうぞ。