大量のダミーデータのCSVを作るにはFakerが便利

世の中には人名などのダミーデータを生成してくれるサービスがあります。ただまず日本語に対応しているサービスの数があまり多くありません。

また、日本語に対応しているものでも、項目順を調整する必要が出たり、氏名をカンマ区切りに分けたり・・・みたいな調整が発生してしまい、なかなかこれだ、というものがありません。

そんな中、素晴らしいものを見つけてしまいました。

Faker

https://github.com/fzaninotto/Faker#formatters

インストール

composer require fzaninotto/faker
composer require league/csv

今回はCSV出力させたいので、このCSV用のライブラリも用意しておきます。

サンプル

以下にサンプルを載せておきます。

user.php

<?php
require_once 'vendor/autoload.php';

$faker = Faker\Factory::create('ja_JP');

$count = 50;

$data = [];

    $data[] = [
    'email'     => 'ユーザー名(メールアドレス)',
    ];


for ($i = 0; $i < $count; $i++) {
    $data[] = [
          'email'    => $faker->safeEmail,
    ];
}

// 出力
mb_convert_variables('SJIS', 'UTF-8', $data);
$writer = League\Csv\Writer::createFromFileObject(new SplTempFileObject());
echo $writer->insertAll($data);

CSVファイル生成

出力コマンドはこんな感じ

php user.php > user.csv

50件のデータをヘッダー行つきで出力します。CSVファイルの文字コードはSJISにしたいのでエンコードをしています。

日付を扱うメソッドもあるようなので、そのへんも便利に使えそうです。

参考

http://ps.zzqune.com/archives/43

https://www.tam-tam.co.jp/tipsnote/program/post10791.html