rubyのfakerでテストデータ作成

名前、Eメールアドレス、適当な文字列などでテストデータを作成したいときにRubyのfakerというGemを使った。

PythonのライブラリやWeb上で公開されているツールなどもあるが、自分で柔軟に出力をカスタマイズしたいときはWeb上のツールでは不十分なのと自分が書きやすい言語ということでRubyのGemを採用した。

使ったGem

github.com

機能

テストデータの種類(名前とか住所とか)をひとまとまりにしたGeneratorという単位がある。 例えばDefault GeneratorにはAddress, Date, Job, Nameなどがあり、Japanese Mediaという漫画のキャラクター名を出力するものもある。

READMEにもある通り機能はかなり豊富でDefault Generatorだけでもたいていのテストデータは作れそうに見える。

今回データを作るときに使ったコードは下記のようなものになった。

氏名、ランダムな文字列、単語、日付 のサンプルデータでCSVファイルを作成した。

require 'faker'

Faker::Config.locale = 'ja'

File.open('./sample_data01.csv', 'w') do |f|
  100.times do |i|
    name = Faker::Name.name
    str = Faker::Lorem.characters(30)
    word = Faker::Lorem.word
    date = Faker::Date.backward

    str = "#{name},#{str},#{word},#{date}"
    f.puts str
  end
end

これで100行のCSVファイルが作成できる。

名前の部分は

https://github.com/stympy/faker/blob/be75ff9a2c208e57a95bf836c400513a13cfb67f/lib/locales/ja.yml#L68

のYmlファイルからとってきているみたいだった。

作成されたデータの一部。

森田 誠,x8e2cojfg4xlhibhggyfzpsdec2t0t,しょくん,2019-01-03
小島 颯,pg6wy8ntlsqi09wekjnj1kqn6twj17,勇気,2018-08-06
菊地 大地,km0ruz1urb86yju24pwozbcv11ilf0,明治,2018-12-20
...

ちょっと適当なデータで処理時間やメモリ消費の計測をやってみたいときとか、大きめのデータサイズのファイルを処理するときの軽い検証などに便利に使えそう。