浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

ダミーデータ作成ライブラリFakerの紹介

 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を追加することで、オリジナルのデータセットでダミーデータを作成できます。

  • この記事いいね! (0)