アプリやサービスを作成する際に大量のテストデータが必要になることがありますよね?
今回Twitter風の収支管理(お小遣い帳)アプリを作成した際に大量のテストデータ作成するためにFakerというライブラリを使用しました。
これを使用すれば一瞬で大量のテストデータを作成することができるので、ライブラリのインストール方法や使用方法を紹介します。
Fakerとは
Fakerとはその名の通り、フェイク(偽)のデータを作成できるPHPのライブラリ。
テスト時の大量データ作成などに利用されます。
Fakerのインストール方法
FakerはPHPのライブラリ(パッケージ)管理システムであるcomposerを使用してインストールすることが可能です。
Fakerをインストールするにはターミナルにて以下のコマンドを実行します。
1 |
$ composer.phar require fzaninotto/faker |
以下のようなメッセージが表示されればインストール完了です。
1 2 3 4 5 6 7 8 |
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を利用した簡単なプログラム例を書きします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<!--?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の場合はコマンドプロンプト)で実行した結果は以下の通りです。 (実行結果は毎回変わります)
1 2 3 4 5 6 7 8 |
氏名:津田 治 メールアドレス:tsubasa.sugiyama@yahoo.co.jp パスワード:}G.y\-r` 郵便番号:9706720 住所:2905418 沖縄県坂本市東区佐々木町近藤2-7-10 電話番号:090-3539-3908 日付:1989-05-07 時間:12:22:57 |
Fakerを使用した大量のテストデータの作成方法
今回は以下のようなユーザーテーブルに対して大量のテストデータを作成していきます。
結論から言うとループでINSERTを回すだけなんですけどね。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
// 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 | ヤスヒロ |
メールアドレス | 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)を確認できます。