Rust fakeクレート完全ガイド|テストデータ自動生成の実践テクニック

Rustでテストコードを書くとき、ダミーの名前・住所・メールアドレスなどを手動でハードコードしていませんか。テストケースが増えるたびにコピペが膨らみ、可読性も保守性も下がっていきます。 fakeクレートは、名前・住所・電話番号・UUID・日時といった多種多様なフェイクデータをワンライナーで生成できるRust用ライブラリです。累計ダウンロード数は1,000万回を超え(出典: crates.io)、GitHubスター数は約1,200(出典: GitHub)と、Rustのテスト補助クレートとして広く採用されています。 fakeクレートの基本情報 項目 内容 最新バージョン 4.4.0(2025年8月リリース) 最小Rustバージョン 1.63 ライセンス MIT / Apache-2.0 デュアルライセンス リポジトリ github.com/cksac/fake-rs 対応ロケール数 11(JA_JP含む) fakerモジュール数 22 2016年の初版公開以降、メンテナのcksac氏を中心に継続的にアップデートされています。v4系ではderiveマクロの強化やfeatureフラグの整理が行われ、実用性がさらに向上しました。 セットアップ Cargo.tomlの[dev-dependencies]にfakeクレートを追加します。deriveフィーチャーを有効にすると#[derive(Dummy)]マクロが使えるようになります。 [dev-dependencies] fake = { version = "4.4", features = ["derive"] } UUID・日時・Decimal型のフェイクデータが必要な場合は、対応するフィーチャーフラグを追加します。 [dev-dependencies] fake = { version = "4.4", features = ["derive", "uuid", "chrono", "rust-decimal"] } uuid = { version = "1", features = ["v4"] } chrono = "0.4" 基本的なデータ生成 人名・住所・電話番号 fakerモジュール配下のサブモジュールからジェネレータを取得し、.fake()メソッドで値を生成します。 use fake::faker::name::en::*; use fake::faker::address::en::*; use fake::faker::phone_number::en::*; use fake::Fake; fn main() { let full_name: String = Name().fake(); let city: String = CityName().fake(); let phone: String = PhoneNumber().fake(); println!("Name: {full_name}"); // 例: "Telly Gorczany" println!("City: {city}"); // 例: "North Allentown" println!("Phone: {phone}"); // 例: "1-234-567-8901" } 数値・真偽値・Lorem use fake::faker::number::en::*; use fake::faker::boolean::en::*; use fake::faker::lorem::en::*; use fake::Fake; fn main() { let digit: String = Digit().fake(); let flag: bool = Boolean(50).fake(); // 50%の確率でtrue let sentence: String = Sentence(5..10).fake(); println!("{digit}, {flag}, {sentence}"); } インターネット関連(メール・URL・ユーザー名) use fake::faker::internet::en::*; use fake::Fake; fn main() { let email: String = FreeEmail().fake(); let username: String = Username().fake(); let ipv4: String = IPv4().fake(); println!("{email}, {username}, {ipv4}"); } JA_JPロケールで日本語データを生成する fakeクレートは11のロケールに対応しており、JA_JPを指定すると日本語の名前や住所を生成できます。 ...

2026年2月15日 · 5 分 · 10822 文字 · uiuifree