Tech Blog

プログラミングと技術の情報サイト

RustでCLIツールを作る

RustでCLIツールを作る

Rustはメモリ安全性とゼロコスト抽象化を特徴とするシステムプログラミング言語です。 CLIツール開発においてもRustは人気で、高速かつシングルバイナリで配布できる点が魅力です。

プロジェクトの作成

cargo new my-cli
cd my-cli

clapで引数を解析する

clapはRustで最も使われているCLI引数パースライブラリです。

# Cargo.toml
[dependencies]
clap = { version = "4", features = ["derive"] }
use clap::Parser;

#[derive(Parser)]
#[command(name = "myapp", about = "ファイルを処理するツール")]
struct Cli {
    /// 入力ファイルのパス
    input: String,

    /// 詳細出力を有効にする
    #[arg(short, long)]
    verbose: bool,
}

fn main() {
    let cli = Cli::parse();
    println!("入力: {}", cli.input);
    if cli.verbose {
        println!("詳細モード有効");
    }
}

エラーハンドリング

Rustでは Result 型を使ってエラーを明示的に扱います。

use std::fs;

fn read_file(path: &str) -> Result<String, std::io::Error> {
    fs::read_to_string(path)
}

fn main() {
    match read_file("input.txt") {
        Ok(content) => println!("{}", content),
        Err(e) => eprintln!("エラー: {}", e),
    }
}

リリースビルド

# 最適化された実行ファイルをビルド
cargo build --release
# ./target/release/my-cli に生成される

まとめ

Rustで作ったCLIツールはGCなしで高速に動作し、シングルバイナリで配布できます。 clapを使えば引数パースのコードも少なく済みます。ぜひ日常のツール作りにRustを試してみてください。

← 記事一覧に戻る