ちょっとどうかと思うくらい簡単にダミーデータを作成することができるPHPのライブラリ「Faker」を紹介します。*最新版はPHP5.3.3以上。
インストールはComposerでサクッと
最近のPHPのライブラリはComposerがほとんどですね。
僕はこのサイトを参考にローカルの開発環境にサクッとインストールしました。
Composerについての解説はここが詳しいと思います。
実際に作ってみる
<?php
require __DIR__ . '/vendor/autoload.php';
$faker = Faker\Factory::create('ja_JP');
$randamArray = array("りんご","バナナ","すいか");
$datas = array();
for ($i=0; $i < 5; $i++) {
$datas[] = array(
"id" => $i+1,
"name" => $faker->name,
"address" => $faker->address,
"randomElement" => $faker->randomElement($randamArray),
"randomNumber" =>$faker->randomNumber(2),
"sentence" =>$faker->sentence(3),
"randomNumber" =>$faker->randomNumber(2),
"date" => $faker->date('Y-m-d', 'now'),
"dateTimeThisMonth" => $faker->dateTimeThisMonth->format('Y-m-d'),
"url" => $faker->url,
"imageUrl" => $faker->imageUrl('800','600'),
);
}
echo '<pre>', print_r($datas, true), '</pre>';
$fp = fopen('output/file.csv', 'w');
foreach ($datas as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
たったこれだけでそれっぽいCSVファイルが書き出しちゃえます。
しかも多言語対応で一部の固有名詞は日本語でも出力させることができます。
上記スクリプトを走らせるとこんな感じ。
Array
(
[0] => Array
(
[id] => 1
[name] => 村山 聡太郎
[address] => 9488850 岩手県原田市中央区田辺町中津川3-5-2
[randomElement] => すいか
[randomNumber] => 40
[sentence] => Perferendis illum voluptatem.
[date] => 1985-06-09
[dateTimeThisMonth] => 2014-08-28
[url] => http://suzuki.net/fugit-hic-consequatur-porro-modi.html
[imageUrl] => http://lorempixel.com/800/600/
)
[1] => Array
(
[id] => 2
[name] => 笹田 淳
[address] => 7795527 茨城県笹田市中央区大垣町杉山5-5-6
[randomElement] => りんご
[randomNumber] => 69
[sentence] => Incidunt harum adipisci.
[date] => 1980-07-15
[dateTimeThisMonth] => 2014-08-07
[url] => http://www.kudo.info/similique-enim-quia-voluptatem.html
[imageUrl] => http://lorempixel.com/800/600/
)
//省略....
)
使い方
日本語対応
インスタンス立ち上げ時に引数「ja_JP」を与えると、名前とか住所に日本語が対応します。
$faker = Faker\Factory::create('ja_JP');
詳しくはここを見ると中で何やってるか分かります。
「個人名」「住所」「電話番号(フォーマット)」「会社名」「ドメイン名」など対応してます。助かりますね。
乱数も当然簡単
上のサンプルでは整数の桁数指定randomNumber(2)と用意した配列の中からランダムに中身を取り出すrandomElement($randamArray)を使ってみました。数の生成は範囲指定も、小数の指定も可能です。
ここのFaker\Provider\Baseを見れば大体できる事が分かります。
Date関連メソッド多数
期限を絞ってランダムに日付を生成するメソッドが色々とありいい感じです。
上のサンプルではdateTimeThisMonthを使ってみました。これだとここ一ヶ月以内の日付が得られます。
オブジェクトで返ってくるので日付フォーマットの自由もきいて使いやすいです。
"dateTimeThisMonth" => $faker->dateTimeThisMonth->format('Y-m-d')
他にもFaker\Provider\DateTimeを見ると色々あります。
そんなわけでかなり色々出来るFaker、みなさんもダミーデータ作りまくりましょう!
コメントを残す