FakerJsを使ったモックデータ生成

FakerJsを使ったモックデータ生成

FakerJsとは?

FakerJsはEメールアドレス、電話番号、住所、パスワード、画像といった、多種多様なランダムデータを生成するJavaScriptライブラリーです。

デモ: https://rawgit.com/Marak/faker.js/master/examples/browser/index.html

何時に使われるか

  • APIからのデータの返却が未実装の場合にフロントエンド側でデータ処理を実装する必要がある時
  • データベース、サービス、ホスト等の接続先に問題があった場合に、APIから返却されるダミーデータを生成する時
  • APIの検証のためjson形式のサンプルデータを生成する時

NodeJsでのFakerJs使い方

まずnpmで以下のコマンドでインストールします。

npm i faker

つぎ、以下のようにインポートします。

TypeScriptプロジェクトの場合:

 import faker = require("faker")

JavaScriptプロジェクトの場合:

var faker = require("faker");

例えば、FakerJsを使って3オブジェクトのEmployeeを作成します。

const generateEmployee = () => {

  return {

    id: faker.random.uuid(),

    first_name: faker.name.firstName(),

    last_name: faker.name.lastName(),

    email: faker.internet.email(),

  };

};

//Return 3 object users

=>> Array.from({ length: 3 }, generateEmployee)

結果:

[
  {
    "id": "653551ca-29dc-458d-90dd-1c7a04004350",
    "first_name": "Yadira",
    "last_name": "Zieme",
    "email": "Russel_Will88@yahoo.com"
  },
  {
    "id": "14243402-a6f9-4005-bc61-bb1d25f23183",
    "first_name": "Nyah",
    "last_name": "Hermiston",
    "email": "Sigrid77@gmail.com"
  },
  {
    "id": "60dbec10-2898-4571-8187-31072f849ed9",
    "first_name": "Reed",
    "last_name": "Towne",
    "email": "Alejandrin.Simonis@hotmail.com"
  }
]

現在FakerJsは多言語をサポートしてくれます。

例えば、employeeオブジェクトを作成する前にロケールを予め指定しておきます。

faker.locale = 'ja';

結果:

[ 
  { 
    "id": "c0a9b596-ade2-4d9e-bddc-3a6e6ed43fcb", 
    "first_name": "結菜", 
    "last_name": "加藤", 
    "email": "海翔_井上@gmail.com" 
  }, 
  { 
    "id": "12381746-bb9e-479c-adf0-ba7887392a06", 
    "first_name": "杏", 
    "last_name": "渡辺", 
    "email": "結菜_清水11@gmail.com" 
  }, 
  { 
    "id": "264a8702-3318-43d1-9518-748046ff6ac5", 
    "first_name": "心愛", 
    "last_name": "清水", 
    "email": "結衣_山田57@gmail.com" 
  } 
]

FakerJsのサポートしてくれるデータ種類と言語についてhttp://marak.github.io/faker.js/を参照してください。

FakerJsにおけるSeed

FakerJsではランダムデータを生成できますが、異なる処理にて同じデータを生成する必要がある場合があります。その対応策としては、以下のようなSeedを利用できます。

    faker.seed(1);

    var number1st = faker.random.number(); // name1st = 123

    // Setting the seed again resets the sequence.

    faker.seed(1);

    var number2nd = faker.random.number(); // number2nd = 123

    // => number1st === number2nd

FakerJsの他のサービス

FakerJs API

APIからはリクエストパラメーターにより、単一のデータ項目を返却します。

http://faker.hook.io/?property=internet.email&locale=en

結果:

 "Ted37@hotmail.com"

Faker Cloud

単一または複数のダミーデータを素早く作成でるので、API検証のため大量データ生成に役立ちます。データのDBへの一括登録コマンドの他に、CSV形式やJson形式、MySQLやMSSQLをもサポートしてくれます。

https://fakercloud.com/

まとめ

Faker Jsはバックエンド・フロントエンド両方に適用できる、便利かつ簡潔なライブラリーです。特にFakerCloudはテスターにふさわしいです。Faker Jsでは時間にかなりかかりそうなDBへのデータ一括登録やAPIへ送信するJsonリスト作成を簡単化することができ、多言語等をもサポートしてくれます。

参考元:

  1. http://marak.github.io/faker.js/
  2. https://zetcode.com/javascript/fakerjs/