MENU

【PHP】Fakerを使用して大量のテストデータを作成する方法

アプリやサービスを作成する際に大量のテストデータが必要になることがありますよね?

今回Twitter風の収支管理(お小遣い帳)アプリを作成した際に大量のテストデータ作成するためにFakerというライブラリを使用しました。

これを使用すれば一瞬で大量のテストデータを作成することができるので、ライブラリのインストール方法や使用方法を紹介します。

目次

目次

Fakerとは

Fakerとはその名の通り、フェイク(偽)のデータを作成できるPHPのライブラリ。

テスト時の大量データ作成などに利用されます。

Fakerのインストール方法

FakerはPHPのライブラリ(パッケージ)管理システムであるcomposerを使用してインストールすることが可能です。

Fakerをインストールするにはターミナルにて以下のコマンドを実行します。

$ composer.phar require fzaninotto/faker

以下のようなメッセージが表示されればインストール完了です。

Using version ^1.9 for fzaninotto/faker
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing fzaninotto/faker (v1.9.1): Loading from cache
Writing lock file
Generating autoload files

僕がインストールした時点(2020年4月19日時点)ではバージョン1.9.1がインストールされます。

これでFakerのインストールは完了です。

Fakerの使用方法

Fakerを利用した簡単なプログラム例を書きします。

<!--?php 
  // faker読み込み
  require_once('vendor/fzaninotto/faker/src/autoload.php'); 

  // フェイクデータを生成するジェネレータを作成 
  $faker = Faker\Factory::create('ja_JP');
  
  // 氏名
  echo 氏名$faker->name . "\n";
  // メールアドレス
  echo $faker->email . "\n";
  // パスワード
  echo $faker->password . "\n";
  // 郵便番号
  echo $faker->postcode . "\n";
  // 住所
  echo $faker->address . "\n";
  // 電話番号
  echo $faker->phoneNumber . "\n";
  // 日付
  echo $faker->date . "\n";
  // 時間
  echo $faker->time . "\n";
?-->

Fakerを実行するために必須なのは

  • Fakerの読み込み(2行目)
  • フェクデータを生成するジェネレータを作成(5行目)

それ以外は作成したジェネレータにメソッドを指定することで、目的のデータを作成することができます。

上記のサンプルコードをターミナル(Windowsの場合はコマンドプロンプト)で実行した結果は以下の通りです。
(実行結果は毎回変わります)

氏名:津田 治
メールアドレス:tsubasa.sugiyama@yahoo.co.jp
パスワード:}G.y\-r`
郵便番号:9706720
住所:2905418  沖縄県坂本市東区佐々木町近藤2-7-10
電話番号:090-3539-3908
日付:1989-05-07
時間:12:22:57

Fakerを使用した大量のテストデータの作成方法

今回は以下のようなユーザーテーブルに対して大量のテストデータを作成していきます。

結論から言うとループでINSERTを回すだけなんですけどね。

  // 10データ分作成
  for ($i = 0; $i < 10; $i++) { 
    // 氏名 $
    name = $faker->name;
    // メールアドレス
    $email = $faker->email;
    // パスワード
    $password = $faker->password;
    // 郵便番号
    $postalCode = $faker->postcode;
    // 住所(先頭に郵便番号が入るので郵便番号は切る)
    $address = mb_substr($faker->address, 9);
    // 電話番号
    $tel = $faker->phoneNumber;
    // 誕生日
    $date = $faker->date;

    $sql = 
      "INSERT INTO faker_test (
        user_name,
        email,
        password,
        postal_code,
        address,
        tel,
        birthday)
      VALUES (
        :user_name,
        :email,
        :password,
        :postal_code,
        :address,
        :tel,
        :birthday)";
    $stmt = $dbh->prepare($sql);
    $stmt->bindValue(':user_name', $name);
    $stmt->bindValue(':email', $email);
    $stmt->bindValue(':password', $password);
    $stmt->bindValue(':postal_code', $postalCode);
    $stmt->bindValue(':address', $address);
    $stmt->bindValue(':tel', $tel);
    $stmt->bindValue(':birthday', $date);
    $stmt->execute();
  }
?>

実行後のデータです。

ループの回数を変えれば作成するデータの数も自由自在です。

Fakerのよく使用するプロパティ一覧

Fakerのよく使用するプロパティの一覧を紹介します。

「$faker->○○」の○○部分です。

名前 プロパティ名 実行例
氏名 name 津田 治
苗字 lastName 中津川
名前 firstNmae 英樹
氏名(カナ) kanaName ミヤケ ハルカ
苗字(カナ) lastKanaName サカモト
名前(カナ) firstKanaName ヤスヒロ
メールアドレス email kijima.tsubasa@hotmail.co.jp
電話番号 phoneNumber 0150-830-619
郵便番号 postcode 1739792
住所 address 4741847 北海道中島市北区青田町伊藤7-9-4 コーポ杉山106
都道府県 prefecture 愛媛県
市町村 city 佐々木市
番地など streetAddress 若松町若松1-6-9
会社名 company 株式会社 井高
日付 date 2002-05-23
時間 time 11:31:53
ユーザー名 userName sato.manabu
パスワード(記号あり) password 70B:unkM
クレジットカード種類 creditCardType Visa
クレジットカード番号 creditCardNumber 2615350032204259
クレジットカード有効期限 creditCardExpiration
DateString

02/23

URL url http://www.hamada.info/corrupti-qui-quia-nostrum-amet-reiciendis-sed-sint
ドメイン名 domainName saito.org
IPアドレス(IPv4) ipv4 70.142.145.203
IPアドレス(IPV6) ipv6 c59c:701d:bacb:d483:d122:3125:54d3:1d7d
マックアドレス macAddress 46:DF:C3:28:31:92
テキスト(英語) text Dolore aut ducimus accusamus quia. Delectus dolorem nisi tempore in sit ut. Molestias blanditiis ad enim sed officiis quo nihil.
テキスト(日本語) realText もは失礼しつれて、じっけん命めいことを思いました。「川へはいちょうは涼すずしくなって行きますと、一つジョバンニ、ラッコの上を、きれいなんで言いよ、あの緑みどりいろのかわけもののつぶったのではもうその黒い門もんですね」「来なかぎのぼんやなんてつぶれたねえさんから、「そう勢いきょくの遠くのですかに聞こえてその鳥捕とりとりはり答えましたもとかすが可愛かわを刻きざまにあの遠くのでした。それは次つぎへとた。
ランダム値(桁数) randomNumber(桁数) 888
(指定した桁数までのランダム値が
生成される)
ランダム値(範囲) numberBetween(開始数値, 終了数値) 152
(numberBetween(100, 200)の例)
EAN-13(バーコード) ean13 0656391600734
EAN-9 ean8 52758898
ISBN-13(書籍コード) isbn13 9797376047722
ISBN-10 isbn10 3841803970
正規表現 regexify(正規表現) 指定した正規表現の内容

これぐらいあれば、大抵の場合はなんとかなると思います。

というか、正規表現での指定ができるのでなんでもありですね。

Fakerのまとめ

Fakerはテストデータを作成するのに本当に便利なので、使い方をしっかりと覚えておきましょう。

また、今回紹介したプロパティはFakerの一部のプロパティでしかないので、それ以外は本家のサイト(GitHub)を確認できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ソフトウェア会社(SIer)で10年以上勤務のシステムエンジニア|ポケットWiFi使用歴2年以上|ポケットWiFi+αで快適でお得なインターネット環境を構築するための情報を発信|その他、IT情報やWebサービス、アプリ、ガジェットなどの情報を発信|自分と他の人のカバンの中身を紹介するメディア「カバンの中身ラボ(https://kaban-no-nakami-labo.com/)」も運営しています。
ポケットWiFi選びに迷ったらTwitter、お問合せフォームからご連絡ください。

コメント

コメントする

目次