これは、なにをしたくて書いたもの?
以前、データベースのセットアップや性能テスト、匿名化したデータの作成といった用途でし利用することが想定された、
Fakerというライブラリーを試してみました。
FakerはPythonのライブラリーですが、今回はJavaで似たことができるライブラリーを探してみました。
Datafaker
DatafakerのWebサイトはこちら。
Random Data Generator for Java and Kotlin - Datafaker
DatafakerはJavaおよびKotlin向けのフェイクデータを作成するライブラリーです。やっぱり、データベースに登録する
テストデータ、ストレステスト用のデータ、本番環境のデータの匿名化といった用途を想定しているようです。
もともとはJava Fakerというライブラリーがあったのですが、メンテナンスが止まってしまっているからかこちらのforkである
ことがDatafakerのREADME.mdに書かれています。
GitHub - DiUS/java-faker: Brings the popular ruby faker gem to Java
こんな感じですね。
This library is a modern fork of java-faker with up to date libraries and several newly added Fake Generators.
Datafakerのドキュメントはこちら。
基本的な使い方はこちら。
ローカライズにも対応しています。
DatafakerにはProviderというものがあり、2.4.0の時点で250のProviderがあるようです。
Base、Entertainment、Food、Sports、Videogameといったグループがあります。
AWSがあったりDraemon(ドラえもん)があったりするので、どんなものがあるのか見てみるとおもしろいかもしれません。
Doraemon - datafaker 2.4.3 javadoc
Pokemon - datafaker 2.4.3 javadoc
Zelda - datafaker 2.4.3 javadoc
それでは、簡単に使ってみましょう。
環境
今回の環境はこちら。
$ java --version openjdk 21.0.7 2025-04-15 OpenJDK Runtime Environment (build 21.0.7+6-Ubuntu-0ubuntu124.04) OpenJDK 64-Bit Server VM (build 21.0.7+6-Ubuntu-0ubuntu124.04, mixed mode, sharing) $ mvn --version Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937) Maven home: $HOME/.sdkman/candidates/maven/current Java version: 21.0.7, vendor: Ubuntu, runtime: /usr/lib/jvm/java-21-openjdk-amd64 Default locale: ja_JP, platform encoding: UTF-8 OS name: "linux", version: "6.8.0-60-generic", arch: "amd64", family: "unix"
準備
Maven依存関係など。
<properties> <maven.compiler.release>21</maven.compiler.release> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties> <dependencies> <dependency> <groupId>net.datafaker</groupId> <artifactId>datafaker</artifactId> <version>2.4.3</version> </dependency> </dependencies>
Datafakerを使ってみる
ランダムにフェイクデータを生成するので、今回は簡単に動かして終わりにしようと思います。
作成したソースコードはこちら。
src/main/java/org/littlewings/datafaker/App.java
import java.util.List; import java.util.Locale; import java.util.stream.IntStream; import net.datafaker.Faker; public class App { public static void main(String... args) { Faker defaultFaker = new Faker(); printFakeData(defaultFaker); System.out.println(); System.out.println("============================================================="); System.out.println(); Faker jaFaker = new Faker(Locale.of("ja")); printFakeData(jaFaker); } private static void printFakeData(Faker faker) { System.out.println("| First Name | Last Name | Email | University | AWS Service | Pokemon |"); System.out.println("|------------|-----------|-------|------------|-------------|---------|"); IntStream.rangeClosed(1, 20).forEach(i -> { List<String> data = List.of( faker.name().firstName(), faker.name().lastName(), faker.internet().emailAddress(), faker.university().name(), faker.aws().service(), faker.pokemon().name() ); System.out.println("| " + String.join(" | ", data) + " |"); }); } }
Localeを指定しないパターンと、日本のLocaleを使うパターンを用意しています。
Faker defaultFaker = new Faker(); printFakeData(defaultFaker); Faker jaFaker = new Faker(Locale.of("ja")); printFakeData(jaFaker);
生成するのは、名前、メールアドレス、大学名、AWSサービス名、ポケモン名にしてみました。
private static void printFakeData(Faker faker) { System.out.println("| First Name | Last Name | Email | University | AWS Service | Pokemon |"); System.out.println("|------------|-----------|-------|------------|-------------|---------|"); IntStream.rangeClosed(1, 20).forEach(i -> { List<String> data = List.of( faker.name().firstName(), faker.name().lastName(), faker.internet().emailAddress(), faker.university().name(), faker.aws().service(), faker.pokemon().name() ); System.out.println("| " + String.join(" | ", data) + " |"); }); }
これをLocaleを切り替えて実行します。
結果はこちら。
| First Name | Last Name | Email | University | AWS Service | Pokemon | |------------|-----------|-------|------------|-------------|---------| | Jospeh | Bednar | dorene.gutkowski@yahoo.com | Gerhold Academy | AWS Copilot | Charizard | | Jeanice | Hammes | keenan.kutch@yahoo.com | Northern Roob Institute | AWS CloudShell | Flareon | | Sergio | Schamberger | danelle.effertz@hotmail.com | West Grimes Academy of Vienna | Amazon Lookout for Vision | Jigglypuff | | Rudolf | Durgan | cedrick.miller@gmail.com | Northern Mayert | AWS Network Firewall | Flareon | | Valorie | Jacobs | erick.watsica@gmail.com | Koss Academy | Amazon SageMaker | Charmeleon | | Tod | Dietrich | berry.mayert@gmail.com | Metz Academy | AWS Elemental MediaPackage | Blastoise | | Bobbi | Price | dion.carter@gmail.com | Moen College | Amazon Managed Blockchain | Onix | | Elliott | Stracke | joshua.beier@yahoo.com | South Jenkins Academy | Amazon EMR | Parasect | | Robby | Beier | benton.feest@hotmail.com | East Walter College of Ioannina | Amazon Elastic Container Registry | Gloom | | Sulema | Hagenes | lena.mccullough@yahoo.com | Northern Cormier College of Tokyo | Amazon Elastic Transcoder | Ivysaur | | Wayne | Conn | jeanice.quigley@gmail.com | Northern Marks | AWS Cloud9 | Oddish | | Merle | Armstrong | russel.berge@gmail.com | Southern Spinka Academy | AWS RoboMaker | Dodrio | | Bradford | Roberts | dudley.ziemann@hotmail.com | Dietrich Institute | AWS PrivateLink | Charmander | | Tamra | Russel | rhoda.mann@hotmail.com | Western Montana University | AWS Lambda | Oddish | | Rhett | Gottlieb | andre.schuppe@yahoo.com | East Bogan College of Houston | Amazon GuardDuty | Tentacool | | Leonel | Hodkiewicz | willy.skiles@hotmail.com | Southern Witting College of Halle-Wittenberg | Amazon Elastic Transcoder | Articuno | | Gregorio | Reichert | tyron.jacobs@gmail.com | Western Prosacco | Amazon AppFlow | Spearow | | Devin | Pfannerstill | sha.runte@gmail.com | North Vermont Academy | AWS CloudTrail | Abra | | Kraig | Gulgowski | yvonne.hegmann@gmail.com | Southern Schroeder | Amazon WorkSpaces | Machoke | | Jerry | O'Keefe | jarod.olson@gmail.com | The Sauer | AWS Global Accelerator | Arbok | ============================================================= | First Name | Last Name | Email | University | AWS Service | Pokemon | |------------|-----------|-------|------------|-------------|---------| | 亮太 | 森岡 | 結衣.石山@yahoo.com | 名古屋黒田音楽大学 | AWS Application Composer | クサイハナ | | 優 | 松尾 | 陽.西田@yahoo.co.jp | 古谷大学 | Amazon ElastiCache for Redis | ディグダ | | 大輔 | 小野 | 光.奥野@gmail.com | 中部北医科大学 | Amazon HealthLake | ゴース | | 悠 | 野沢 | 千代.富田@yahoo.co.jp | 黒沢医科大学 | AWS Transfer Family | ゴローニャ | | 愛莉 | 倉田 | 大介.今野@yahoo.com | 九州岩田音楽大学 | Amazon EMR | カメックス | | 瞳 | 佐々木 | 明.横田@yahoo.com | 四国北大学 | AWS Cloud WAN | モンジャラ | | 優衣 | 星野 | 遥.北川@gmail.com | 北海道大野大学 | AWS IoT SiteWise | カブトプス | | 雄大 | 村山 | 樹.渡辺@yahoo.com | 京都東芸術大学 | AWS IoT 1-Click | カブトプス | | 浩子 | 竹村 | 洋平.熊谷@yahoo.com | 村井医科大学 | AWS Outposts | ベロリンガ | | 太郎 | 土田 | 悠太.北島@yahoo.com | 山内音楽大学 | Amazon Managed Workflows for Apache Airflow | アーボ | | 陽斗 | 坂田 | 良子.須田@yahoo.com | 中部宇野芸術大学 | AWS Database Migration Service | タマタマ | | 隼人 | 内山 | 悦子.高島@gmail.com | 東京新大学 | Amazon CloudFront | コクーン | | 茂 | 山根 | 絵美.牧野@gmail.com | 近畿豊田国際大学 | Amazon Elastic Transcoder | マタドガス | | 君子 | 吉川 | 楓.堀@gmail.com | 関西新医科大学 | AWS Elemental MediaStore | ゴルダック | | 直樹 | 湯浅 | 陽葵.福井@gmail.com | 三浦学院大学 | Amazon DevOps Guru | ゴルバット | | 雄太 | 島崎 | 光.宮川@hotmail.com | 九州木村大学 | AWS Backup | ファイヤー | | 貞子 | 富永 | 弘子.上原@yahoo.com | 四国東大学 | AWS IoT Greengrass | コクーン | | ひなた | 湯浅 | 菜摘.竹中@yahoo.com | 名古屋北医科大学 | AWS Fargate | ゴルバット | | 菜月 | 山川 | 雄太.児玉@hotmail.com | 東京新学院大学 | AWS Auto Scaling | ペルシアン | | 大樹 | 長田 | 光子.中沢@gmail.com | 京都西尾工業大学 | AWS Key Management Service | ジュゴン |
Markdownで出力しているので、それぞれMarkdownとしても貼っておきます。
英語。
| First Name | Last Name | University | AWS Service | Pokemon | |
|---|---|---|---|---|---|
| Jospeh | Bednar | dorene.gutkowski@yahoo.com | Gerhold Academy | AWS Copilot | Charizard |
| Jeanice | Hammes | keenan.kutch@yahoo.com | Northern Roob Institute | AWS CloudShell | Flareon |
| Sergio | Schamberger | danelle.effertz@hotmail.com | West Grimes Academy of Vienna | Amazon Lookout for Vision | Jigglypuff |
| Rudolf | Durgan | cedrick.miller@gmail.com | Northern Mayert | AWS Network Firewall | Flareon |
| Valorie | Jacobs | erick.watsica@gmail.com | Koss Academy | Amazon SageMaker | Charmeleon |
| Tod | Dietrich | berry.mayert@gmail.com | Metz Academy | AWS Elemental MediaPackage | Blastoise |
| Bobbi | Price | dion.carter@gmail.com | Moen College | Amazon Managed Blockchain | Onix |
| Elliott | Stracke | joshua.beier@yahoo.com | South Jenkins Academy | Amazon EMR | Parasect |
| Robby | Beier | benton.feest@hotmail.com | East Walter College of Ioannina | Amazon Elastic Container Registry | Gloom |
| Sulema | Hagenes | lena.mccullough@yahoo.com | Northern Cormier College of Tokyo | Amazon Elastic Transcoder | Ivysaur |
| Wayne | Conn | jeanice.quigley@gmail.com | Northern Marks | AWS Cloud9 | Oddish |
| Merle | Armstrong | russel.berge@gmail.com | Southern Spinka Academy | AWS RoboMaker | Dodrio |
| Bradford | Roberts | dudley.ziemann@hotmail.com | Dietrich Institute | AWS PrivateLink | Charmander |
| Tamra | Russel | rhoda.mann@hotmail.com | Western Montana University | AWS Lambda | Oddish |
| Rhett | Gottlieb | andre.schuppe@yahoo.com | East Bogan College of Houston | Amazon GuardDuty | Tentacool |
| Leonel | Hodkiewicz | willy.skiles@hotmail.com | Southern Witting College of Halle-Wittenberg | Amazon Elastic Transcoder | Articuno |
| Gregorio | Reichert | tyron.jacobs@gmail.com | Western Prosacco | Amazon AppFlow | Spearow |
| Devin | Pfannerstill | sha.runte@gmail.com | North Vermont Academy | AWS CloudTrail | Abra |
| Kraig | Gulgowski | yvonne.hegmann@gmail.com | Southern Schroeder | Amazon WorkSpaces | Machoke |
| Jerry | O'Keefe | jarod.olson@gmail.com | The Sauer | AWS Global Accelerator | Arbok |
日本語。
| First Name | Last Name | University | AWS Service | Pokemon | |
|---|---|---|---|---|---|
| 亮太 | 森岡 | 結衣.石山@yahoo.com | 名古屋黒田音楽大学 | AWS Application Composer | クサイハナ |
| 優 | 松尾 | 陽.西田@yahoo.co.jp | 古谷大学 | Amazon ElastiCache for Redis | ディグダ |
| 大輔 | 小野 | 光.奥野@gmail.com | 中部北医科大学 | Amazon HealthLake | ゴース |
| 悠 | 野沢 | 千代.富田@yahoo.co.jp | 黒沢医科大学 | AWS Transfer Family | ゴローニャ |
| 愛莉 | 倉田 | 大介.今野@yahoo.com | 九州岩田音楽大学 | Amazon EMR | カメックス |
| 瞳 | 佐々木 | 明.横田@yahoo.com | 四国北大学 | AWS Cloud WAN | モンジャラ |
| 優衣 | 星野 | 遥.北川@gmail.com | 北海道大野大学 | AWS IoT SiteWise | カブトプス |
| 雄大 | 村山 | 樹.渡辺@yahoo.com | 京都東芸術大学 | AWS IoT 1-Click | カブトプス |
| 浩子 | 竹村 | 洋平.熊谷@yahoo.com | 村井医科大学 | AWS Outposts | ベロリンガ |
| 太郎 | 土田 | 悠太.北島@yahoo.com | 山内音楽大学 | Amazon Managed Workflows for Apache Airflow | アーボ |
| 陽斗 | 坂田 | 良子.須田@yahoo.com | 中部宇野芸術大学 | AWS Database Migration Service | タマタマ |
| 隼人 | 内山 | 悦子.高島@gmail.com | 東京新大学 | Amazon CloudFront | コクーン |
| 茂 | 山根 | 絵美.牧野@gmail.com | 近畿豊田国際大学 | Amazon Elastic Transcoder | マタドガス |
| 君子 | 吉川 | 楓.堀@gmail.com | 関西新医科大学 | AWS Elemental MediaStore | ゴルダック |
| 直樹 | 湯浅 | 陽葵.福井@gmail.com | 三浦学院大学 | Amazon DevOps Guru | ゴルバット |
| 雄太 | 島崎 | 光.宮川@hotmail.com | 九州木村大学 | AWS Backup | ファイヤー |
| 貞子 | 富永 | 弘子.上原@yahoo.com | 四国東大学 | AWS IoT Greengrass | コクーン |
| ひなた | 湯浅 | 菜摘.竹中@yahoo.com | 名古屋北医科大学 | AWS Fargate | ゴルバット |
| 菜月 | 山川 | 雄太.児玉@hotmail.com | 東京新学院大学 | AWS Auto Scaling | ペルシアン |
| 大樹 | 長田 | 光子.中沢@gmail.com | 京都西尾工業大学 | AWS Key Management Service | ジュゴン |
Localeを日本にした場合、メールアドレスのローカルパートがおかしなことになっていますね…。
まあ、このあたりは工夫すればいいかなとも…。
データの元ネタを見る場合は、このあたりを確認するようですね。
https://github.com/datafaker-net/datafaker/tree/v2.4.2/src/main/resources
日本語の場合はこちらです。
https://github.com/datafaker-net/datafaker/blob/v2.4.2/src/main/resources/ja.yml
こんなところでしょうか。
おわりに
フェイクデータを生成する、Java Fakerの後継であるDatafakerを試してみました。
Java Fakerの更新が止まっているな、と思っていたのですが、forkが出ているのには気づいていなかったです。
Javaでフェイクデータを生成する時には使ってみると便利かもしれませんね。