FakerのFormattersを使いこなす

プログラミング

概要

先日、CakePHPでFakerの簡単な使い方をご紹介しました。
CakePHPでFakerを使いテスト用データを自動生成する

今回は、Fakerで利用できるFormattersについて深堀りしてみました。名称、引数例 、サンプルを一覧で分かりやすくまとめましたのでご紹介します。

環境情報

  • XAMPP 8.0.6
  • php 8.0.6(requires PHP >= 7.1.)
  • CakePHP 4.2.6
  • fakerphp/faker 1.15.0
  • MariaDB 10.4.1

Fakerで利用できるフォーマッター (Formatters)

Person

名称引数例サンプル備考
title‘female’ “Mrs.”param1: null | ‘male’ | ‘female’
titleMale“Prof.”
titleFemale“Prof.”
suffix“Jr.” ja_JPでは利用不可
name‘male’ “中津川 直人” param1: null | ‘male’ | ‘female’
firstName‘female’ “裕美子” param1: null | ‘male’ | ‘female’
firstNameMale“裕太”
firstNameFemale“舞”
lastName“鈴木”
kanaName“イトウ ショウタ” ja_JPのみ利用可
firstKanaName“ツバサ” ja_JPのみ利用可
firstKanaNameMale“アツシ” ja_JPのみ利用可
firstKanaNameFemale“リカ” ja_JPのみ利用可
lastKanaName“ヨシモト” ja_JPのみ利用可

Address

名称 引数例サンプル備考
cityPrefix“New” ja_JPでは利用不可
secondaryAddress“コーポ山口102号”
state“North Carolina” ja_JPでは利用不可
stateAbbr“MO” ja_JPでは利用不可
citySuffix“市”
streetSuffix“町”
buildingNumber“105”
city“山岸市”
streetName“宮沢町”
streetAddress“若松町鈴木6-10-6”
postcode“5312088”
address“6406762 岩手県加納市北区青田町
坂本1-4-8 ハイツ原田109号”
country“キューバ”
latitude25.05105
longitude-17.228917
localCoordinatesarray(2) {
‘latitude’ =>
double(-69.884283)
‘longitude’ =>
double(-114.629555)
}
公式に記載なし
postcode1862公式に記載なし
ja_JPのみ利用可
postcode27008公式に記載なし
ja_JPのみ利用可
prefecture“福岡県”公式に記載なし
ja_JPのみ利用可
ward“西区”公式に記載なし
ja_JPのみ利用可
areaNumber9公式に記載なし
ja_JPのみ利用可

PhoneNumber

名称 引数例サンプル備考
phoneNumber“04-8920-4055”
phoneNumberWithExtension“754-246-7342 x5173”ja_JPでは利用不可
tollFreePhoneNumber“866-231-7614”ja_JPでは利用不可
e164PhoneNumber“+464663001292”
imei“991588131443165”公式に記載なし

Company

名称 引数例サンプル備考
catchPhraseProgrammable fresh-thinking challengeja_JPでは利用不可
bsdisintermediate next-generation usersja_JPでは利用不可
company”有限会社 杉山”
companySuffix”Ltd”
jobTitle”Cashier”
companyPrefix”株式会社”ja_JPのみ利用可

Text

名称 引数例サンプル備考
realText20,2”うしろのことをしめし、とてもって博士は。”param1:maxNbChars 10~ 最大文字数
param2:indexSize 1~5 数値が大きいほど自然な文章となる
realTextBetween1,20,2”あしの辞典じてんてつどうしろく明るい実。”param1:minNbChars 1~ 最小文字数
param2:maxNbChars 10~ 最大文字数
param3:indexSize 1~5 数値が大きいほど自然な文章となる
※ プログラムを確認したところ、param1は最小文字数というよりはデータ取得終了の目安として使われている

Numbers and Strings

名称 引数例サンプル備考
randomDigit70~9の数値
randomDigitNot25引数を除外した、0~9の数値
param1:除外する0~9の数値
randomDigitNotNull91~9の数値
randomNumber3, false77param1:桁数
param2:桁数固定フラグ
randomFloat2, 20, 3024.87param1:小数点以下の桁数
param2:最小値
param3:最大値
numberBetween0, 1009932-bit integerを生成
param1:最小値
param2:最大値
randomLetter“c”アルファベット1文字を生成
randomElements[1, ‘b’, ‘Z’, ‘d’, ‘e’], 3array(3) {
[0] =>
int(1)
[1] =>
string(1) “d”
[2] =>
string(1) “a”
}
半角英数字1文字を指定要素数だけ生成
param1:取得リスト
param2:要素数
randomElement [1, ‘b’, ‘Z’, ‘d’, ‘e’] 1半角英数字1文字を生成
param1:取得リスト
shuffle‘hello-world!’“wold!o-lhrel”文字列をシャッフル
numerify‘user-##%%’“user-7044”#を0から9の数字、%を1から9の数字に置換
lexify‘id-????’“id-zhbk”?を英小文字に置換
bothify‘###-???-***’“042-qfz-f60”#を0から9の数字、%を1から9の数字
?を英小文字、*を0から9の数字または
英小文字に置換
asciify‘user-****’”user-k.X$”*をASCIIに置換
regexify‘[A-Z]{5}[0-4]{3}’”WVODW431”正規表現に一致する文字列を生成
randomAscii”&”ASCII1文字を生成
randomKey[‘a’ => ‘A’, ‘b’ => ‘B’]”a”配列のキーから1文字生成
shuffleArray[‘a’ => ‘A’, ‘b’ => ‘B’]array(2) {
[0] =>
string(1) “B”
[1] =>
string(1) “A”
}
配列をシャッフル
※ 添字は0からの連番
shuffleString‘hello-world!’”odlll!we-rho”文字列をシャッフル
toLower‘HELLO-WORLD!’“hello-world!”英字大文字を小文字に変換
toUpper‘hello-world!’”HELLO-WORLD!”英字小文字を大文字に変換

Text and Paragraphs

名称 引数例サンプル備考
word”minus”ランダムに1単語を生成
wordsarray(2) {
[0] =>
string(5) “velit”
[1] =>
string(4) “fuga”
}
ランダムに単語を指定要素数だけ生成
param1:要素数
sentence3, false”Ut autem ut.”指定した単語数の文章を生成
param1:単語数
param2:誤差許容フラグ
ディフォルトの単語数は6
※ param2がtrueの場合、 単語数から ±40%の誤差が生じる。falseの場合、指定された単語数の文のみを生成。
sentences2, falsearray(2) {
[0] =>
string(37) “Quo aperiam corporis culpa molestiae.”
[1] =>
string(40) “Culpa ut et ipsam explicabo accusantium.”
}
文章を指定要素数だけ生成
param1:要素数
param2:取得タイプ
※ param2がtrueの場合、連結した文字列で生成。falseの場合、配列で生成。
paragraph2, false “Nisi unde consequuntur et consequuntur. Molestiae sit dolor eum.”指定した数の文章を文字列で連結して生成
param1:文章数
param2:誤差許容フラグ
ディフォルトの文章数は3
※ param2がtrueの場合、文章数から±40%の誤差が生じる。falseの場合、 指定された文章数の文のみを生成 。
paragraphs1, false“In tempore deserunt corporis sed quos. Officia amet optio nisi recusandae suscipit a. Repudiandae quaerat repudiandae nostrum adipisci sapiente maiores. Molestiae ut id ut et qui deleniti cupiditate nemo.”文章を指定要素数だけ生成
param1:要素数
param2:取得タイプ
※ param2がtrueの場合、連結した文字列で生成。falseの場合、配列で生成。
text10”Ad natus.” 指定した長さのテキストを生成
param1:文字列の長さ

Date and Time

名称 引数例サンプル備考
unixTimenew DateTime(‘+3 weeks’)81853982ゼロから指定された値までのunix時間を生成
デフォルトでは、最大値に「now」が使用される
param1:DateTime | タイムスタンプ値
dateTimeclass DateTime#208 (3) {
public $date =>
string(26) “2015-10-07 20:10:47.000000”
public $timezone_type =>
int(3)
public $timezone =>
string(10) “Asia/Tokyo”
}
1970年1月1日から指定された値までの DateTime を生成
デフォルトでは、最大値に「now」が使用される
param1:DateTime | タイムスタンプ値
param2:タイムゾーン
dateTimeADclass DateTime#209 (3) {
public $date =>
string(26) “0883-12-26 04:26:09.000000”
public $timezone_type =>
int(3)
public $timezone =>
string(10) “Asia/Tokyo”
}
0001年1月1日から指定された値までの間の DateTime を生成
デフォルトでは、最大値に「now」が使用される
param1:DateTime | タイムスタンプ値
param2:タイムゾーン
iso8601”2004-11-30T21:11:22+0900”0001年1月1日から指定された値までのISO8601形式の文字列を生成
デフォルトでは、最大値に「now」が使用される
param1:DateTime | タイムスタンプ値
date‘Y_m_d’“2006_08_10”指定されたフォーマットと最大値を持つ日付文字列を生成
デフォルトでは、フォーマットに「Y-m-d」、最大値に「now」が使用される
param1:生成する日付フォーマット
param2:タイムスタンプ値
time ‘H_i_s’”20_42_41”指定されたフォーマットと最大値を持つ時間文字列を生成
デフォルトでは、フォーマットに「H:i:s」、最大値に「now」が使用される
param1:生成する時間フォーマット
param2:秒数(9時を起点として生成)
dateTimeBetween‘-1 week’, ‘+1 week’class DateTime#208 (3) {
public $date =>
string(26) “2021-07-23 19:03:49.000000”
public $timezone_type =>
int(3)
public $timezone =>
string(10) “Asia/Tokyo”
}
2つの日付の間の DateTime を生成
デフォルトでは、 日付は-30年から「now」が使用される
param1:DateTime
param2:DateTime
param3:タイムゾーン
dateTimeInInterval‘-1 week’, ‘+3 days’class DateTime#211 (3) {
public $date =>
string(26) “2021-07-18 14:01:40.000000”
public $timezone_type =>
int(3)
public $timezone =>
string(10) “Asia/Tokyo”
}
日付とその日付からの間隔の DateTime を生成
デフォルトでは、 日付は-30年、間隔は+5日が使用される
param1:DateTime
param2:DateTime
param3:タイムゾーン
dateTimeThisCentury ‘+8 years’class DateTime#209 (3) {
public $date =>
string(26) “1997-12-02 01:49:20.000000”
public $timezone_type =>
int(3)
public $timezone =>
string(10) “Asia/Tokyo”
}
今世紀の範囲内にある DateTime を生成
デフォルトでは、最大値に「now」が使用される
param1:DateTime
param2:タイムゾーン
※ プログラムを確認したところ、厳密な世紀判定をせず、今現在の100年前から最大値までの値を取得する。
dateTimeThisDecade ‘+2 years’class DateTime#209 (3) {
public $date =>
string(26) “2013-12-01 17:44:07.000000”
public $timezone_type =>
int(3)
public $timezone =>
string(10) “Asia/Tokyo”
}
現在の10年以内の DateTime を生成
デフォルトでは、最大値に「now」が使用される
param1:DateTime
param2:タイムゾーン
dateTimeThisYear‘+2 months’class DateTime#208 (3) {
public $date =>
string(26) “2021-04-11 11:43:00.000000”
public $timezone_type =>
int(3)
public $timezone =>
string(10) “Asia/Tokyo”
}
現在の年の範囲内にある DateTime を生成
デフォルトでは、最大値に「now」が使用される
param1:DateTime
param2:タイムゾーン
dateTimeThisMonth‘+12 days’class DateTime#209 (3) {
public $date =>
string(26) “2021-07-02 13:50:03.000000”
public $timezone_type =>
int(3)
public $timezone =>
string(10) “Asia/Tokyo”
}
現在の月の範囲内にある DateTime を生成
デフォルトでは、最大値に「now」が使用される
param1:DateTime
param2:タイムゾーン
amPm‘+2 weeks’“pm”上限を指定してランダムな DateTime を生成し、am/pm の文字列を返す
デフォルトでは、最大値に「now」が使用される
param1:DateTime
dayOfMonth‘+2 weeks’“05”上限を指定してランダムな DateTime を生成し、月の日の文字列を返す
デフォルトでは、最大値に「now」が使用される
param1:DateTime
dayOfWeek‘+2 weeks’“Friday”上限を指定してランダムな DateTime を生成し、曜日の文字列を返す
デフォルトでは、最大値に「now」が使用される
param1:DateTime
month‘+10 weeks’“10”上限を指定してランダムな DateTime を生成し、その月の数字の文字列を返す
デフォルトでは、最大値に「now」が使用される
param1:DateTime
monthName‘+10 weeks’“March”上限を指定してランダムな DateTime を生成し、月名の文字列を返す
デフォルトでは、最大値に「now」が使用される
param1:DateTime
year‘+10 years’“2006”上限を指定してランダムな DateTime を生成し、 その年の文字列を返す
デフォルトでは、最大値に「now」が使用される
century“VI”ランダムなセンチュリー名を生成
timezone“America/Managua”ランダムなタイムゾーン名を生成

Internet

名称 引数例サンプル備考
email“pkato@gmail.com”メールアドレスを生成
safeEmail“sayuri.matsumoto@example.net”安全なメールアドレスを生成
freeEmail“cyoshida@yahoo.co.jp”フリーのメールアドレスを生成
companyEmail“ykato@yamamoto.com”社用のメールアドレスを生成
freeEmailDomain“yahoo.co.jp”フリーメールのドメイン名を生成
safeEmailDomain“example.org”安全なメールドメインを生成
userName“miyazawa.kana”ユーザー名を生成
password 12, 16“30HZfG*zYaXE”指定された最小および最大の長さのパスワードを生成
デフォルトでは、最小値に6、最大値に20が使用される
domainName“ogaki.com”ドメイン名を生成
domainWord“zhu”ドメインワードを生成
tld“com”tld(トップレベルドメイン)を生成
url“http://www.sato.jp/quo-voluptatem-in-optio-et.html”URLを生成
slug3, false“consectetur-corrupti-praesentium”指定された語数のスラッグを生成
デフォルトでは、単語数に6が使用される
param1:単語数
param2: 誤差許容フラグ
※ param2がfalseの場合、指定された語数のスラッグのみを生成
ipv4“68.183.163.59”IPv4アドレスを生成
localIpv4“10.115.114.181”ローカルサブネット内のIPv4アドレスを生成
ipv6“b767:1b68:37a9:f77a:ff2f:a07c:ebda:df77”IPv6アドレスを生成
macAddress“F6:49:8C:01:71:15”MACアドレスを生成

User Agent

名称 引数例サンプル備考
userAgent“Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_1) AppleWebKit/5322 (KHTML, like Gecko) Chrome/36.0.834.0 Mobile Safari/5322” ユーザーエージェントを生成
chrome“Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_8_4) AppleWebKit/5342 (KHTML, like Gecko) Chrome/39.0.819.0 Mobile Safari/5342”Google Chromeに属するユーザーエージェントを生成
firefox“Mozilla/5.0 (Macintosh; PPC Mac OS X 10_7_3 rv:2.0) Gecko/20110625 Firefox/35.0”Mozilla Firefoxに属するユーザーエージェントを生成
safari“Mozilla/5.0 (iPhone; CPU iPhone OS 8_0_2 like Mac OS X; sl-SI) AppleWebKit/533.43.3 (KHTML, like Gecko) Version/3.0.5 Mobile/8B111 Safari/6533.43.3”Apple Safariに属するユーザーエージェントを生成
opera“Opera/8.28 (X11; Linux x86_64; en-US) Presto/2.10.266 Version/11.00”Operaに属するユーザーエージェントを生成
internetExplorer“Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 4.0; Trident/4.0)”Internet Explorerに属するユーザーエージェントを生成

Payment

名称 引数例サンプル備考
creditCardType“JCB”クレジットカードの種類を生成
creditCardNumber‘Visa’, true, ‘::’“4532::4071::1085::6222”指定された種類のクレジットカード番号を生成
デフォルトでは、ランダムなタイプが使用される
param1:種類 ‘Visa ‘ | ‘MasterCard’ | ‘American Express’ | ‘Discover’
param2:クレジットカード番号をフォーマットするかどうか
param3:セパレータを定義
creditCardExpirationDatefalseclass DateTime#208 (3) {
public $date =>
string(26) “2021-05-12 23:56:02.000000”
public $timezone_type =>
int(3)
public $timezone =>
string(10) “Asia/Tokyo”
}
クレジットカードの有効期限(DateTime)を生成
デフォルトでは、有効な日付のみが生成される
param1:日付有効フラグ
※ param1がfalseの場合、無効な日付が生成される可能性がある
creditCardExpirationDateStringtrue, ‘m-Y’“08-2021”クレジットカードの有効期限(文字列)を生成
デフォルトでは、有効な日付のみが生成される
文字列は、m/yを使用してフォーマットされる
param1:日付有効フラグ
param2:日付フォーマット
※ param1がfalseの場合、無効な日付が生成される可能性がある
creditCardDetailsfalsearray(4) {
‘type’ =>
string(4) “Visa”
‘number’ =>
string(16) “4485884319056100”
‘name’ =>
string(16) “原田 くみ子”
‘expirationDate’ =>
string(5) “05/21”
}
クレジットカードの詳細を含む配列を生成
デフォルトでは、有効な日付のみが生成される
param1:日付有効フラグ
※ param1がfalseの場合、無効な日付が生成される可能性がある
iban‘NL’, ‘INGB’“NL36INGB5305196510”指定された国と銀行コードでIBAN文字列を生成
デフォルトでは、ランダムな国コードと銀行コードが使用される
国コードのフォーマットは、ISO 3166-1 alpha-2
param1:国コード
param2:銀行コード
swiftBicNumber“ZNPPILFE”ランダムなSWIFT/BIC番号の文字列を生成

Color

名称 引数例サンプル備考
hexColor“#f83adc”ランダムな16進数の色を生成
safeHexColor“#005511”R、G、Bごとに16個の値のみを含むランダムな16進数の色を生成
rgbColorAsArrayarray(3) {
[0] =>
int(163)
[1] =>
int(160)
[2] =>
int(197)
}
ランダムなRGBカラーを配列として生成
rgbColor“103,146,9”カンマで区切られたRGBの色文字列を生成
rgbCssColor“rgb(196,159,218)”CSSに適したRGB色の文字列を生成
rgbaCssColor“rgba(39,142,201,0.1)”CSSに適したRGBA(アルファチャンネル)の色文字列を生成
safeColorName“navy”CSSに適した色名を生成
colorName“PaleVioletRed”色名を生成
hslColor“136,82,23”ランダムなHSLの色文字列を生成
hslColorAsArrayarray(3) {
[0] =>
int(109)
[1] =>
int(90)
[2] =>
int(49)
}
ランダムなHSLカラーを配列で生成

File

名称 引数例サンプル備考
mimeType“application/vnd.oasis.opendocument.graphics”ランダムなMIMEタイプの文字列を生成
fileExtension“mp3”ランダムなファイル拡張子タイプの文字列を生成
file‘tmp\from’, ‘tmp\to’, falsearray(1) {
‘file’ =>
string(40) “86855cb9-ab5b-38d0-b099-dd10651b1c3a.png”
}
ランダムなファイルをコピー元ディレクトリからコピー先ディレクトリにコピーし、パス/ファイル名を返す
param1:コピー元のディレクトリ(相対パス/絶対パス)
param2:コピー先のディレクトリ(相対パス/絶対パス)
param3:返り値にディレクトリパスを含めるかどうかのフラグ
※ param3 が trueの場合はパスを含めて返し、falseの場合はファイル名のみを返す

Image

名称 引数例サンプル備考
imageUrl360, 360, ‘animals’, true, ‘dogs’, true”https://via.placeholder.com/360×360.png/CCCCCC?text=animals+dogs+enim”placeholder.comからランダムな画像URLを取得
param1:幅
param2:高さ
param3:カテゴリ
param4:画像及びURLに任意の文字列が追加される
param5:ワード
param6:カラーを淡いグレーに固定
image‘tmp\to’, 360, 360, ‘animals’, true, true, ‘cats’, truearray(1) {
‘image’ =>
string(43) “tmp\to\85d9eb64da70dfd1c39081a54bcecffb.png”
}
placeholder.comからランダムな画像を取得し、ディレクトリにダウンロードし、画像のパスを文字列で返す
param1:ディレクトリ指定 (相対パス/絶対パス)
param2:幅
param3:高さ
param4:カテゴリ
param5:返り値にディレクトリパスを含めるかどうかのフラグ
param6:画像及びURLに任意の文字列が追加される
param7:ワード
param8:カラーを淡いグレーに固定
※ param1がnullの場合、システム内の一時フォルダが選択される。Windows10の場合は C:\Users\***\AppData\Local\Temp以下

UUID

名称 引数例サンプル備考
uuidarray(1) {
‘uuid’ =>
string(36) “7de92107-5407-370e-96af-7e0ab516a6ab”
}
ランダムなUUIDを生成

Barcode

名称 引数例サンプル備考
ean13“0220079314338”ランダムなEAN-13バーコードを生成
ean8“94203356”ランダムなEAN-8バーコードを生成
isbn10“7345284875”ISBN-10に準拠したランダムな文字列を生成
isbn13“9798067614674”ISBN-13に準拠したランダムな文字列を生成

Miscellaneous

名称 引数例サンプル備考
booleanbool(true)ランダムなbool値を生成
md5“6f71b970854807b7ede1e927349edc5f”ランダムなMD5ハッシュ文字列を生成
sha1“72a1a0b349fa2d1513cd8515f729153e28da924d”ランダムなSHA-1ハッシュ文字列を生成
sha256“7d9fac742ba3051bb174c09f5c9dc19bd500d29dd128183a57869304aa3b67d4”ランダムなSHA-256ハッシュ文字列を生成
locale“gsw_CH”ランダムなロケール文字列を生成
countryCode“CK”ランダムな2文字の国コード文字列を生成
countryISOAlpha3“HUN”ランダムな3文字の国コード文字列を生成
languageCode“mn”ランダムな2文字の言語コード文字列を生成
currencyCode“IQD”ランダムな電流コード文字列を生成
emoji“😁”ランダムな絵文字を生成

Biased

名称 引数例サンプル備考
biasedNumberBetween0, 20, ‘log’12与えられた関数を使って、偏りのあるランダムな整数を生成
※ 実行は可能だが、結果を取得不可

HTML Lorem

名称 引数例サンプル備考
randomHtml1, 1array(1) {
‘randomHtml’ =>
‘randomHtml’ => string(286) “<html><head><title>Voluptatem temporibus quia ea dicta quam aut ut.</title></head></body><form action=”example.net” method=”POST”><label for=”username”>aut</label><input type=”password” id=”password”></from></body></html>”
}
与えられた最大の深さと幅で、ランダムなHTML文字列を生成
デフォルトでは、深さと幅に4が使用される
param1:ボディの最大の深さ
param2:各要素が持つことのできる兄弟の最大数

Version

名称 引数例サンプル備考
semvertrue, true0.0.1-betaランダムなセマンティックバージョン v2.0.0 の文字列を生成
オプションで、パラメータ $preRelease および $build を true に設定すると、
プレリリースやビルドの部分をランダムにバージョンに含めることができる
※ 実行不可

まとめ

今回は、Fakerの Formatters について調査したものをご紹介しました。
fakerphp公式 からまとめたものになっています。コーディングの際の参考になれば幸いです。

タイトルとURLをコピーしました