ちょっとした作業で、テスト用のユーザデータを作る必要が出てきて「なんか良いのないかなー」と思って探してみたところ、fakerというPythonのツールがいい感じにデータを生成してくれたので、記録として残しておくことにする。ライブラリとしても利用できるようだ。 localeの設定に応じて出力してくれるサンプルも変えているようで、日本語の名前や住所、メールアドレスも取得できるらしい。 fakerはPythonで書かれており、以下のコマンドでインストールできる。
pip install faker
インストールができたら、helpを見てみよう。
blacknon@BS-PUB-UBUNTU-01:~$ faker --help
usage: faker [-h] [--version] [-o output] [-l LOCALE] [-r REPEAT] [-s SEP]
[-i [INCLUDE [INCLUDE ...]]]
[fake] [fake argument [fake argument ...]]
faker version 0.8.10
positional arguments:
fake name of the fake to generate output for (e.g. profile)
fake argument optional arguments to pass to the fake (e.g. the
profile fake takes an optional list of comma separated
field names as the first argument)
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
-o output redirect output to a file
-l LOCALE, --lang LOCALE
specify the language for a localized provider (e.g.
de_DE)
-r REPEAT, --repeat REPEAT
generate the specified number of outputs
-s SEP, --sep SEP use the specified separator after each output
-i [INCLUDE [INCLUDE ...]], --include [INCLUDE [INCLUDE ...]]
list of additional custom providers to user, given as
the import path of the module containing your Provider
class (not the provider class itself)
supported locales:
ar_AA, ar_EG, ar_JO, ar_PS, ar_SA, bg_BG, bs_BA, cs_CZ, de_AT, de_CH, de_DE, dk_DK, el_GR, en, en_AU, en_CA, en_GB, en_TH, en_US, es, es_ES, es_MX, et_EE, fa_IR, fi_FI, fr_CH, fr_FR, he_IL, hi_IN, hr_HR, hu_HU, id_ID, it_IT, ja_JP, ka_GE, ko_KR, la, lt_LT, lv_LV, ne_NP, nl_BE, nl_NL, no_NO, pl_PL, pt_BR, pt_PT, ro_RO, ru_RU, sk_SK, sl_SI, sv_SE, th_TH, tr_TR, tw_GH, uk_UA, zh_CN, zh_TW
faker can take a locale as an argument, to return localized data. If no
localized provider is found, the factory falls back to the default en_US
locale.
examples:
$ faker address
968 Bahringer Garden Apt. 722
Kristinaland, NJ 09890
$ faker -l de_DE address
Samira-Niemeier-Allee 56
94812 Biedenkopf
$ faker profile ssn,birthdate
{'ssn': u'628-10-1085', 'birthdate': '2008-03-29'}
$ faker -r=3 -s=";" name
Willam Kertzmann;
Josiah Maggio;
Gayla Schmitt;
examplesを見るとわかるように、サブコマンドとして取得したい値を指定してやることで、サンプルデータを生成してくれる。 指定できるサブコマンドはかなり数が多い(どうもライブラリから直接持ってきてるっぽい)のだが、とりあえず以下のようなものが利用できるようだ(かなり数が多いので一部だけ抜粋)。
- name
- email(引数でドメイン指定可能)
- free_email
- zipcode
- address
- mac_address
- ipv4
- ipv6
- text(あまり使わない気がする…)
countryやcity、ビル名といった情報も個別に取得可能のようだ。 その他、「profile」を指定することで、jsonでプロフィール関係のデータを一括出力してくれる。
blacknon@BS-PUB-UBUNTU-01:~$ faker profile
{'website': [u'http://hamada.jp/'], 'username': u'amiyake', 'name': u'\u9234\u6728 \u76f4\u5b50', 'blood_group': 'A+', 'residence': u'\u5c71\u5f62\u770c\u5c0f\u7b20\u539f\u6751\u571f\u5442\u90e86\u4e01\u76ee23\u756a4\u53f7 \u30af\u30ec\u30b9\u30c8\u5143\u6d45\u8349282', 'company': u'\u682a\u5f0f\u4f1a\u793e \u5c71\u7530', 'address': u'\u9ce5\u53d6\u770c\u8db3\u7acb\u533a\u4e09\u7b4b6\u4e01\u76ee6\u756a20\u53f7 \u30d1\u30fc\u30af\u767e\u6751855', 'birthdate': '1990-12-15', 'sex': 'F', 'job': 'Speech and language therapist', 'ssn': u'435-47-3076', 'current_location': (Decimal('61.2161055'), Decimal('-128.061467')), 'mail': u'akirahamada@yahoo.com'}