はじめに
Webアプリでデータを入れたい!でもRailsコンソールで1つずつレコードを生成するの面倒くさい!
ということで効率的に開発を進めるため、ダミーデータを一括で作成できるというgem Fakerを使用していきたかったんですが、公式GitHubを確認しましたが、初心者の自分には少し分かりづらかったため、今後の備忘録として本記事を執筆しました。間違ってたらご指摘ください!
注意!
今回は使い方ではないのでデータベースには保存されません。
railsコンソールを使用してどのようなダミーデータを生成するか。またそれまでの内容を説明します。
Fakerとは?
あらゆるカテゴリ(名前・パスワード・住所、、、)などのデータをランダムに作り出してくれるGemです。
前提条件
Ruby on Rails 7.2.3
Ruby 3.4.8
Docker環境
gem Faker 導入方法
gemを入れるだけなので書く必要もないかもしれませんが、念の為。
↓GiTHubです
gem Fakerをインストールする
編集場所:Gemfile
gem 'faker'
実行場所:ターミナル
docker compose exec web bundle install
これで完了です。
Faker 基本的な構文
Fakerは主に db/seeds.rb や Railsコンソールなどで使用します。
Faker::カテゴリ.項目(メソッド)
カテゴリ→欲しいデータの大きい括り
項目(メソッド)→実際に欲しいデータ
になります。
Fakerは「カテゴリ」と「メソッド」の組み合わせでデータを生成します。
以下のように考えると理解しやすいです。
GitHubに記載されている使用法をわかりやすく日本語訳してみました。
Faker::Name.name
#=> `name`は実際に欲しいデータ `Name`は`name`のカテゴリ(大きい括り)
Faker::Internet.password
#=>`password`は実際に欲しいデータ `Internet`は`password`のカテゴリ(大きい括り)
#=>違う言い方で言うと
Faker::Address.full_address
#=>1.`Faker`さん、
#=>2.`Address`カテゴリの中にある
#=>3.`full_address`のデータを生成して!
カテゴリはどんな種類があるの?
たくさんあります。一部を紹介します。
Faker::Name #=> 人の名前
Faker::Address #=> 住所
Faker::PhoneNumber #=> 電話番号
Faker::Lorem #=> ダミー文章
Faker::Date #=> 日付
ここには書ききれません。
生成したいカテゴリがあるか調べたい場合
自分が欲しいデータがあるかどうかわからない場合、railsコンソールで調べることができます。
ターミナルにてrailsコンソールを開きます
実行場所:ターミナル
docker compose exec web rails c
↓
Loading development environment (Rails 7.2.3)
myapp(dev)>
続いてrailsコンソール内で以下を実行します。
myapp(dev)>Faker.constants
constantsは定義されている定数名の配列を返します。
以下のように出力されました。

*そのまま出力されると縦一列に並んでしまうのでpメソッドで出力しました。
大変見えにくいですが、これがFakerで使用できるカテゴリの一覧です。
また、自分が探したいカテゴリを抽出することも可能です。
Faker.constants.grep(/抽出したいカテゴリ名(省略可)/)
grepとは特定の文字列を抽出するRubyの配列用メソッドです。
これにより自分が想定しているカテゴリがあるかどうか安易に調べることができます。

項目(メソッド)はどんな種類があるの?
カテゴリによって異なります。一部を紹介します。
Faker::Name.first_name #=> 人の下の名前
#=> 出力結果:"Taro"
Faker::Food.fruits #=> 果物
#=> 出力結果:"Apple"
Faker::Game.title #=> ゲームタイトル
#=> 出力結果:"Super Mario Odyssey"
どんな種類のメソッドがあるか調べる場合
カテゴリと同様にrailsコンソールで調べることができます。
railsコンソールの入り方はカテゴリで確認してください。
railsコンソール内で以下を実行します。
例)Nameカテゴリで使用できるメソッドを調べる場合
Faker::Name.methods

*そのまま出力されると縦一列に並んでしまうのでpメソッドで出力しました。
大変見えにくいですが、これがNameカテゴリで使用できるメソッドの一覧です。
こちらもカテゴリと同様に自分が探したいメソッドを抽出することも可能です。
例)Nameカテゴリで使用できるメソッドを調べる場合
Faker::Name.methods.grep(/抽出したいメソッド名(省略可)/)
grepの使い方はこちらを参考にしてください
出力されるデータの日本語にしたい!
現状
Faker::Name.first_name #=> 人の下の名前
#=> 出力結果:"Taro"
お気づきかもしれませんが、Fakerで出力されるデータは日本語ではありません。
これを日本語対応していきます。
編集場所:config/application.rb
class Application < Rails::Application
+ config.i18n.default_locale = :ja # 追記
end
config.i18n.default_locale = :jaを追加するだけです。
注意!
gem Fakerは海外で作成されたgemなので、日本語対応されていないカテゴリがあります。
今まで出てきた例で言うと、
Faker::Food.fruits
Faker::Game.title
などがあたります。実際にrailsコンソールで確認してみてください。
おわりに
とても便利なgemです。カテゴリも豊富にあるので開発効率があがりそうですが、日本語対応していないものも結構ありそうです。gimeiという日本語特化のtestデータを作成するgemもあるみたいですね
次回はFakerを使って実際にデータベースに保存するところまでやっていきたいとおもいます。
参考記事

