27
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Pythonのfakerで日本語テストデータを生成する

Last updated at Posted at 2015-04-27

fakerとは

概要

ダミーデータ(テストデータ)を生成するライブラリです。PHPやRubyにも同名のものがあり、デファクトっぽい雰囲気があります。
https://github.com/joke2k/faker

この度、僕の方で住所データを日本語で生成できるように対応したので紹介します。

どんなデータが生成できるか

fakerでどんなデータが生成できるのか?まずシンプルな例を書いてみます。

sample.py
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さんのコミットで名前や電話番号は日本語表記で生成できるようになりました。

そして今回、僕の方で住所も生成できるように対応しました。
併せて見てみましょう。

sample_ja_JP.py
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

27
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?