Pythonで簡単にダミーデータが生成できるライブラリ「Faker」の使い方

2026年 9月15日 Posted 野々瀨(フロントエンドエンジニア)

開発を行っている時、ダミーのサンプルデータが必要になることがあります。手動で用意しようとすると結構手間で、意外と時間がかかってしまいます。そこで便利なのが、ダミーデータを簡単に生成できるツールやサービスです。今回はPythonの「Faker」というライブラリの使い方を軽くご紹介しようと思います。

前提

注意事項

本記事にある生成されたデータは全て架空のデータです。

インストール

次のコマンドを実行し、パッケージをインストールします。

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() 会社名

これ以外にもさまざまなデータをランダムで生成することができます。また、ロケールごとに取得できるデータにも違いがあります。

ロケールごとの生成できるデータについては、次の公式ドキュメントをご覧ください。

独自のランダムデータによる生成

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メソッドについての詳細は、次の公式ドキュメントをご覧ください。

取得したデータをファイルに保存

例えば、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についての詳細は、次の公式ドキュメントをご覧ください。

https://pandas.pydata.org/

最後に

Fakerはさまざまな多言語にも対応していますし、生成できるデータの種類も豊富です。

近年では生成AIを使用してダミーデータを生成する方法もあります。しかし、サービスを利用できない環境であったり、生成AIサービスでは大量のデータを扱えないことがあります。今回ご紹介したFakerといったライブラリを使用することで、簡単にダミーデータを生成できます。