FakerはPHP上で扱うダミーデータ作成ライブラリです。この記事で扱うのはPHPのFakerですがいくつかの他言語でもFakerという名のダミーデータ作成ライブラリは存在します。
JavaScript | faker |
---|---|
Python | Faker |
Ruby | Faker |
Perl | Data-Faker |
歴史的にはRuby,PerlのFakerが元で、この便利なライブラリをPHP、Javascriptで使う人が出てきて、Pythonでも実装されて、といった具合です。Ruby版はPokemon,BackToTheFuture等の特にニッチなフォーマットがいくつかあります。いずれのFakerも多種多様なフォーマットのランダムなデータを生成でき、ダミーデータの作成を簡単に行えます。
基本的な使い方はリンク先にある通り
<?php // require the Faker autoloader require_once '/path/to/Faker/src/autoload.php'; // alternatively, use another PSR-0 compliant autoloader (like the Symfony2 ClassLoader for instance) // use the factory to create a Faker\Generator instance $faker = Faker\Factory::create(); // generate data by accessing properties echo $faker->name; // 'Lucy Cechtelar'; echo $faker->address; // "426 Jordy Lodge // Cartwrightshire, SC 88120-6700" echo $faker->text; // Dolores sit sint laboriosam dolorem culpa et autem. Beatae nam sunt fugit // et sit et mollitia sed. // Fuga deserunt tempora facere magni omnis. Omnis quia temporibus laudantium // sit minima sint.
fakerを呼び出し、任意のフォーマット名のプロパティを呼び出せば、そのフォーマットのランダムな値が返ってきます。
$faker->optional($weight = 0.9, $default = 'abc')->word; // 10% chance of 'abc'
の様に重みとデフォルト値をつけると、一定の割合でデフォルト値が出力されます。こういったデータの分布の操作もいくらかできます。
配布された状態のままでは出力されるデータのパターン数がwebページのテストに困らない程度しかありません。そのため機械学習等のビッグデータを用いたプログラムのテストには使用できません。
しかしながらデータセットの改変は容易です。データセットの記述されたファイルはfaker/src/Faker/Provider以下にあります。この部分を参考にProviderクラスのどれかを継承して、データセット変数を任意のデータセットで上書き、
$faker->addProvider(new Faker\Provider\en_US\Person($faker));
の様に新たなProviderを追加することで、オリジナルのデータセットでダミーデータを作成できます。