カテゴリ: Laravel 更新日: 2025/11/21

LaravelでファクトリとSeederを組み合わせてダミーデータを生成する方法!初心者でも簡単にテストデータ作成

LaravelのファクトリとSeederを組み合わせてダミーデータを生成する方法
LaravelのファクトリとSeederを組み合わせてダミーデータを生成する方法

先生と生徒の会話形式で理解しよう

生徒

「先生、Seederで初期データを入れるのは分かったんですが、テスト用の大量データを簡単に作る方法はありますか?」

先生

「ありますよ。LaravelにはFactoryという仕組みがあって、ダミーデータを自動で生成できるんです。それをSeederと組み合わせることで、大量のテストデータも簡単に作れます。」

生徒

「Factoryって具体的にどうやって使うんですか?」

先生

「それでは、手順を順番に見ていきましょう!」

1. Factory(ファクトリ)とは?

1. Factory(ファクトリ)とは?
1. Factory(ファクトリ)とは?

LaravelのFactoryは、テーブルに挿入するためのダミーデータを簡単に作成するための仕組みです。たとえば、ユーザー名やメールアドレス、パスワードなどを自動でランダムに生成してくれます。

Factoryを使うと、テスト環境や開発環境でのデータ準備が簡単になります。手作業でデータを入力する必要がなく、同じテーブルに複数のレコードを一度に作ることができます。

2. Factoryを作成する方法

2. Factoryを作成する方法
2. Factoryを作成する方法

まず、Factoryファイルを作成します。ターミナルで次のコマンドを入力してください。


php artisan make:factory UserFactory --model=User

このコマンドで、database/factories/UserFactory.phpが作成されます。--model=Userは、このFactoryがUserモデル用であることを指定しています。

3. Factoryの基本構文と記述例

3. Factoryの基本構文と記述例
3. Factoryの基本構文と記述例

Factoryファイルの中で、どのようなデータを生成するかを定義します。LaravelではFakerライブラリを使ってランダムデータを生成します。


use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;

class UserFactory extends Factory
{
    protected $model = \App\Models\User::class;

    public function definition(): array
    {
        return [
            'name' => $this->faker->name(),
            'email' => $this->faker->unique()->safeEmail(),
            'password' => bcrypt('password123'),
        ];
    }
}

ここでは、nameにはランダムな名前、emailにはユニークなメールアドレス、passwordには暗号化された固定のパスワードを生成しています。

4. Seederと組み合わせてダミーデータを登録

4. Seederと組み合わせてダミーデータを登録
4. Seederと組み合わせてダミーデータを登録

次に、作成したFactoryをSeederで呼び出して、データベースに登録します。Seederは事前に作成しておきましょう。


use Illuminate\Database\Seeder;
use App\Models\User;

class UsersTableSeeder extends Seeder
{
    public function run(): void
    {
        // Factoryを使って10件のユーザーデータを生成
        User::factory()->count(10)->create();
    }
}

このようにcount(10)と指定することで、10件のダミーデータを一度に作成できます。create()を呼ぶことで、実際にデータベースに挿入されます。

5. Seederを実行してデータを確認

5. Seederを実行してデータを確認
5. Seederを実行してデータを確認

Seederを実行するには、次のコマンドを使います。


php artisan db:seed --class=UsersTableSeeder

これで、Userテーブルにダミーデータが登録されます。複数件のデータをすぐに確認できるので、開発中のテストやデザイン確認にとても便利です。

6. DatabaseSeederでまとめて実行する

6. DatabaseSeederでまとめて実行する
6. DatabaseSeederでまとめて実行する

全てのSeederをまとめて実行したい場合は、DatabaseSeeder.phpに呼び出しを追加します。


public function run(): void
{
    $this->call(UsersTableSeeder::class);
}

その後、次のコマンドで全てのSeederが一括で実行されます。


php artisan db:seed

7. マイグレーションとSeederを組み合わせる

7. マイグレーションとSeederを組み合わせる
7. マイグレーションとSeederを組み合わせる

新しい環境を作るときは、マイグレーションでテーブルを作り、Seederでダミーデータを挿入することが便利です。次のコマンドで両方を一度に実行できます。


php artisan migrate:fresh --seed

migrate:freshは既存のテーブルを削除して再作成するコマンドです。これに--seedを付けることで、Factoryを使ったダミーデータも一緒に作成されます。

8. 開発環境と本番環境での注意点

8. 開発環境と本番環境での注意点
8. 開発環境と本番環境での注意点

FactoryとSeederは開発やテスト環境で非常に便利ですが、本番環境では注意が必要です。誤ってダミーデータを本番データベースに入れると問題になる場合があります。

  • 本番環境ではSeederの実行を控える
  • 開発環境用のSeederはDatabaseSeederで分ける
  • 必要に応じて条件分岐を入れて安全にデータ登録する
カテゴリの一覧へ
新着記事
New1
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.7
Java&Spring記事人気No7
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.8
Java&Spring記事人気No8
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)