前回は「エラー処理」や「コレクション」といった、Rustの堅牢さを支える仕組みを学びました。
「基礎はわかったけど、そろそろ何か役に立つものを作りたい!」
そんなあなたのために、今回は「外部クレート(ライブラリ)」を組み合わせて、WindowsのPowerShellやコマンドプロンプトでガシガシ使える「爆速ファイル検索ツール」を作っていきます。
1. Rustのエコシステム「crates.io」は宝の山
Rustには、世界中のエンジニアが公開している便利な部品が集まるcrates.ioというサイトがあります。
Windowsでの開発でも、これを使わない手はありません。 「コマンドラインの引数を解析したい」「文字に色をつけたい」といった要望は、すでに誰かが超高性能なライブラリ(クレート)として解決してくれています。
2. 「トレイト」:型にスキルを装備させる
本格的なコードを書く前に、Rustの重要ワード「トレイト(Trait)」をさらっと押さえておきましょう。
トレイトは、一言でいうと「その型ができること」の定義です。
Displayトレイト:画面に表示できるスキルDebugトレイト:開発者向けに中身を覗けるスキル
今回のコードでも、「構造体にコマンド解析スキルを与える」ためにトレイトの仕組みが登場します。「特定のルールに従わせるための共通規格」だと思えばOKです!
3. 実践!検索ツール「Simple Search (ss)」の作成
WindowsのPowerShellから呼び出せる、簡易版grep(ファイル内検索)ツールを作ってみましょう。
使うクレート
- clap: Windowsの複雑なコマンド引数も簡単に扱える定番ツール。
- colored: 無機質なターミナルの文字に色をつけて見やすくします。
ステップ1:プロジェクト準備
PowerShellを開いて、プロジェクトを作成します。
cargo new simple_search
cd simple_search生成されたファイル内のCargo.tomlを開き、[dependencies]に以下を追加します。
[dependencies]
clap = { version = "4.0", features = ["derive"] }
colored = "2.0"ステップ2:Windowsのパスも安心なコードを書く
src/main.rsを以下のように書き換えます。
use clap::Parser;
use colored::*;
use std::fs::File;
use std::io::{BufRead, BufReader};
use std::path::PathBuf; // Windowsのパス記法を柔軟に扱う
/// シンプルなファイル検索ツール
#[derive(Parser)]
#[command(name = "ss", version = "1.0", about = "指定したファイルから文字列を検索します")]
struct Cli {
/// 検索したい文字列
pattern: String,
/// ファイルのパス (C:\Users\... のような形式もOK)
path: PathBuf,
}
fn main() {
// 1. 引数をパース(clapが自動でエラーチェックもしてくれます)
let args = Cli::parse();
// 2. ファイルを開く
let file = File::open(&args.path).expect("ファイルが見つかりません。パスを確認してください。");
let reader = BufReader::new(file);
println!("Searching for '{}' in {}...", args.pattern.cyan(), args.path.display());
// 3. 検索実行
for (line_num, line) in reader.lines().enumerate() {
let content = line.expect("読み込みに失敗しました");
if content.contains(&args.pattern) {
println!("{}: {}", (line_num + 1).to_string().yellow(), content);
}
}
}ステップ3:ビルドと実行
適当なテキストファイル(例:memo.txt)を用意して、実行してみてください。
cargo run -- "検索文字" memo.txt今回試したmemo.txtは以下です。
こんにちは
今日も寒いですね。
もう2月の中頃にさしかかるので、ぼちぼちあったかくなってきてほしいですね。
検索文字 今回の実行結果です。
4行目に文字があることを検出してくれています。

4. Windowsユーザーに嬉しいポイント
パス操作が楽! (PathBuf)
Windowsではパスの区切りが \ ですが、RustのPathBufを使うと、OSの違いを吸収してくれます。将来的にLinuxなどで動かしたくなった時も、コードを書き換える必要はありません。
clapによる自動ヘルプ生成
cargo run -- --help と打ってみてください。自分で何も書いていないのに、Windowsのツールらしい綺麗なヘルプ画面が表示されるはずです。これも外部クレートの強力な恩恵です。
以下私の環境での実行結果です。

まとめ:Rustの本当の力がここから始まる
第5回、お疲れ様でした! これまでの学習は「材料を揃える段階」でしたが、今回でついに「動く道具」を作り上げることができました。
- 外部クレートを使えば、Windowsツール開発が爆速になる。
- トレイトは型に能力を授ける便利な仕組み。
- Cargoがライブラリ管理を全部やってくれる。
ここまでの知識があれば、次は「計算機」や「タスク管理ツール」など、自分の欲しいツールを自在に作れるようになりますよ!




コメント