fakerとは
概要
ダミーデータ(テストデータ)を生成するライブラリです。PHPやRubyにも同名のものがあり、デファクトっぽい雰囲気があります。
https://github.com/joke2k/faker
この度、僕の方で住所データを日本語で生成できるように対応したので紹介します。
どんなデータが生成できるか
fakerでどんなデータが生成できるのか?まずシンプルな例を書いてみます。
from faker import Factory
f = Factory.create()
print f.name()
print f.address()
print f.phone_number()
print f.date()
Jennie Homenick
Petramouth, WI 21918-9349
177.513.9541
1998-12-21
良い感じにデータを生成してくれますが、デフォルトは英語圏の表記です。
Factory.create
の引数でlocation
を指定してやると他言語のデータも生成できます。
日本語対応について
気になる日本語対応ですが、一月ほど前の@ta2xeoさんのコミットで名前や電話番号は日本語表記で生成できるようになりました。
そして今回、僕の方で住所も生成できるように対応しました。
併せて見てみましょう。
from faker import Factory
f = Factory.create('ja_JP')
print f.name()
print f.phone_number()
print f.date()
print f.address()
print f.address()
print f.zipcode()
print f.prefecture()
print f.city()
print f.town()
print f.chome()
print f.ban()
print f.gou()
print f.building_name()
松本 明美
070-1472-1794
2011-03-04
福島県横浜市鶴見区花川戸11丁目4番20号 コーポ三ノ輪553
富山県山武市氏家新田31丁目24番20号
121-0122
秋田県
小金井市
台東
11丁目
8番
13号
パレス
見てわかる通り、良くも悪くも実在する住所はほぼ出ません。
整合性のあるデータを生成するところまではいけてなかったり、日本の多様な住所表示形式に対応していなかったりしますが、とりあえず英語表記よりはマシになりました。
使用するにあたって
日本語対応版はまだPyPIにリリースされていないようです。
使われる場合はGitHubリポジトリからインストールしてください。
v0.5.1でリリースされたのでこの節の手順は不要です。
データマスクツール作成中
fakerなどのライブラリでテストデータを生成できますが、ダミーデータだけだとうまくいかないケースもあります。そういう場合はたいてい本番環境のデータの一部をマスクして使いたくなるので、そのためのツールを作りました。もちろんfakerを使っています。
CSVの特定の列だけをマスクするHermesというツールです。まだまだ貧弱ですが地道に改良していくつもりです。
https://github.com/ohbarye/Hermes