Pythonで簡単にダミーデータが生成できるライブラリ「Faker」の使い方
2026年 9月15日 Posted 野々瀨(フロントエンドエンジニア)
開発を行っている時、ダミーのサンプルデータが必要になることがあります。手動で用意しようとすると結構手間で、意外と時間がかかってしまいます。そこで便利なのが、ダミーデータを簡単に生成できるツールやサービスです。今回はPythonの「Faker」というライブラリの使い方を軽くご紹介しようと思います。
前提
- Python環境構築済み
注意事項
本記事にある生成されたデータは全て架空のデータです。
インストール
次のコマンドを実行し、パッケージをインストールします。
pip install Faker

基本的な使い方
importでFakerのライブラリを読み込みます。
from faker import Faker
続いてFakerクラスからインスタンスを生成します。
fake = Faker()
後は生成したいデータのメソッドを実行するだけです。
print(fake.name()) # 名前
print(fake.address()) # 住所
print(fake.email()) # メールアドレス
これらをまとめると、次のようなコードになります。
from faker import Faker
fake = Faker()
print(fake.name()) # 名前
print(fake.address()) # 住所
print(fake.email()) # メールアドレス

日本データの生成
初期状態では日本のデータを生成しません。そこでFakerクラスの引数にロケールを指定することで、指定したロケールに対応した内容を取得することができます。
from faker import Faker
fake = Faker('ja_JP')
print(fake.name())
print(fake.address())
print(fake.email())

リスト形式で指定すれば、混在したロケールで取得することもできます。
from faker import Faker
fake = Faker(['en_US', 'ja_JP'])
print(fake.name())
print(fake.address())
print(fake.email())
複数のデータを生成
for文など繰り返し処理によって複数のデータを生成することもできます。
from faker import Faker
fake = Faker('ja_JP')
data = []
for _ in range(10):
data.append([
fake.name(),
fake.address(),
fake.email()
])
print(data)

生成可能なデータ(一部)
次のようなデータを生成することができます。
| メソッド | 説明 |
|---|---|
name() |
氏名 |
address() |
住所。都道府県から号、さらにはビル・マンション・アパート名から部屋番号まで |
zipcode() |
郵便番号 |
prefecture() |
都道府県 |
city() |
市区町村 |
chome() |
丁目 |
ban() |
番地 |
building_name() |
ビル・マンション・アパート名 |
building_number() |
部屋番号 |
email() |
メールアドレス |
phone_number() |
電話番号 |
company() |
会社名 |
これ以外にもさまざまなデータをランダムで生成することができます。また、ロケールごとに取得できるデータにも違いがあります。
ロケールごとの生成できるデータについては、次の公式ドキュメントをご覧ください。
- 基本データ:https://faker.readthedocs.io/en/master/providers.html
- ロケールごとのデータ:https://faker.readthedocs.io/en/master/locales.html
独自のランダムデータによる生成
FakerはBaseProviderという生成ロジックのクラスを基準に生成を行っています。このBaseProviderクラスを継承し、独自のリストからランダムで生成を行うことができます。また、BaseProviderクラスのrandom_elementメソッドを使用することで引数で指定したリストから、ランダムで値を返すことができます。
まず、次のように独自のクラスを定義します。
class MyProvider(BaseProvider):
AGES = list(range(17, 40))
GENDERS = ['男性', '女性', 'その他']
def age(self) -> str:
return self.random_element(self.AGES)
def gender(self) -> int:
return self.random_element(self.GENDERS)
続いて、Faker側のadd_providerメソッドを使用して独自に定義したクラスを引数に渡します。
fake.add_provider(MyProvider)
後は独自に定義したメソッドを実行すれば、独自のデータを基にランダムで生成することができます。
print(fake.name())
print(fake.age())
まとめると次のようなコードになります。
from faker import Faker
from faker.providers import BaseProvider
class MyProvider(BaseProvider):
AGES = list(range(17, 40))
GENDERS = ['男性', '女性', 'その他']
def age(self) -> int:
return self.random_element(self.AGES)
def gender(self) -> str:
return self.random_element(self.GENDERS)
fake = Faker('ja_JP')
fake.add_provider(MyProvider)
print(fake.name())
print(fake.age())
print(fake.gender())
print(fake.address())
print(fake.email())

BaseProviderクラスやadd_providerメソッドについての詳細は、次の公式ドキュメントをご覧ください。
- https://faker.readthedocs.io/en/stable/#how-to-create-a-provider
- https://faker.readthedocs.io/en/master/providers/baseprovider.html
取得したデータをファイルに保存
例えば、pandasというライブラリを使用すれば、CSVなどの形式で保存することもできます。pandasはデータ解析を行うためのライブラリで、DataFrameという二次元のデータを扱うことができます。
from faker import Faker
import pandas as pd
fake = Faker('ja_JP')
data = []
for _ in range(100):
data.append([
fake.name(),
fake.address(),
fake.email()
])
df = pd.DataFrame(data, columns=['氏名', '住所', 'メールアドレス'])
df.to_csv('sample_user_data.csv', index=False)

DataFrameメソッドを使用してランダムで生成したデータを渡します。後はto_csvメソッドを使用することで、CSVファイルとして保存できます。
pandasについての詳細は、次の公式ドキュメントをご覧ください。
最後に
Fakerはさまざまな多言語にも対応していますし、生成できるデータの種類も豊富です。
近年では生成AIを使用してダミーデータを生成する方法もあります。しかし、サービスを利用できない環境であったり、生成AIサービスでは大量のデータを扱えないことがあります。今回ご紹介したFakerといったライブラリを使用することで、簡単にダミーデータを生成できます。
