Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away