カテゴリ: Laravel 更新日: 2026/05/10

LaravelでSeederとFactoryを使う方法を完全解説!初心者でもできるデータ作成

LaravelでSeederやFactoryを作成・実行する方法
LaravelでSeederやFactoryを作成・実行する方法

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

生徒

「Laravelでテスト用のデータを簡単に作る方法ってありますか?」

先生

「ありますよ。SeederとFactoryを使えば、大量のデータを自動で作れます。」

生徒

「手入力しなくていいんですか?」

先生

「はい。プログラムで自動生成できるので、とても便利です。順番に見ていきましょう。」

1. SeederとFactoryとは

1. SeederとFactoryとは
1. SeederとFactoryとは

LaravelのSeederとFactoryは、データベースにテスト用のデータを簡単に作成するための仕組みです。開発中に画面確認や動作チェックをするとき、毎回データを手で入力するのはとても大変です。そこでSeederとFactoryを使うと、自動でデータを作成できます。

Seederはデータを登録する処理を書いたクラスで、Factoryはその元となるデータの設計図のようなものです。例えば、ユーザーの名前やメールアドレスをランダムに作ることができます。これにより、リアルなテスト環境を簡単に再現できます。

2. Factoryの作成方法

2. Factoryの作成方法
2. Factoryの作成方法

まずはFactoryを作成します。Factoryはデータのテンプレートです。コマンドラインで以下のコマンドを実行します。


php artisan make:factory UserFactory --model=User

このコマンドでFactoryファイルが作成されます。中身を編集して、どんなデータを作るか定義します。


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

ここで使われているfakerとは、ランダムなデータを生成する便利なツールです。名前やメールなどを自動で作ってくれます。

3. Seederの作成方法

3. Seederの作成方法
3. Seederの作成方法

次にSeederを作成します。Seederは実際にデータベースにデータを登録する役割です。


php artisan make:seeder UserSeeder

作成されたSeederファイルに、Factoryを使った処理を書きます。


use App\Models\User;

public function run()
{
    User::factory()->count(10)->create();
}

このコードは、ユーザーデータを10件自動で作成します。countは作成する件数を指定するためのものです。

4. Seederの実行方法

4. Seederの実行方法
4. Seederの実行方法

Seederを作成しただけではデータは登録されません。実行する必要があります。以下のコマンドで実行できます。


php artisan db:seed --class=UserSeeder

このコマンドを実行すると、先ほど定義したデータがデータベースに登録されます。ブラウザで確認すると、データが追加されていることがわかります。

5. DatabaseSeederにまとめて登録

5. DatabaseSeederにまとめて登録
5. DatabaseSeederにまとめて登録

複数のSeederをまとめて実行したい場合は、DatabaseSeederに登録します。これにより、一度のコマンドでまとめて実行できます。


public function run()
{
    $this->call([
        UserSeeder::class,
    ]);
}

そして、以下のコマンドで実行します。


php artisan db:seed

これで複数のSeederをまとめて実行できます。

6. migrateと同時に実行する方法

6. migrateと同時に実行する方法
6. migrateと同時に実行する方法

データベースを作り直すときに、Seederも同時に実行したい場合があります。その場合は以下のコマンドを使います。


php artisan migrate:fresh --seed

このコマンドは、データベースを一度すべて削除してから再作成し、その後Seederを実行します。開発中によく使う便利なコマンドです。

7. Factoryの応用パターン

7. Factoryの応用パターン
7. Factoryの応用パターン

Factoryでは固定値を指定することもできます。例えば、特定のユーザーを作りたい場合です。


User::factory()->create([
    'name' => 'テストユーザー',
    'email' => 'test@example.com',
]);

このように書くと、指定した内容でデータを作成できます。ランダムだけでなく、特定のデータを作ることも可能です。

8. SeederとFactoryを使うメリット

8. SeederとFactoryを使うメリット
8. SeederとFactoryを使うメリット

SeederとFactoryを使うことで、開発効率が大きく向上します。手作業でデータを作る必要がなくなり、テストや動作確認がスムーズになります。また、同じデータを何度でも再現できるため、チーム開発でも非常に役立ちます。

特に初心者の方にとっては、画面に表示するデータがないと理解が難しいですが、この機能を使えば簡単にデータを用意できるので、学習効率も上がります。

まとめ

まとめ
まとめ

SeederとFactoryの重要ポイントの振り返り

Laravelでの開発において、SeederとFactoryはデータベースにテストデータを効率よく投入するための非常に重要な機能です。特にLaravel初心者やプログラミング未経験者にとって、データの準備はつまずきやすいポイントですが、SeederとFactoryを活用することでその問題を簡単に解決できます。

Factoryはデータの設計図として、名前やメールアドレスなどのダミーデータを自動生成する役割を持っています。一方でSeederは、そのFactoryを利用して実際にデータベースへデータを登録する処理を担います。この二つを組み合わせることで、リアルな開発環境を簡単に再現できます。

また、LaravelのArtisanコマンドを利用することで、SeederやFactoryの作成や実行が非常に簡単になります。例えば、makeコマンドでクラスを生成し、db:seedコマンドでデータ投入を行う流れは、Laravel開発の基本操作として必ず覚えておきたいポイントです。

実務でも役立つ活用方法

SeederとFactoryは単なるテストデータ作成だけでなく、開発効率の向上や品質向上にも大きく貢献します。例えば、チーム開発において同じデータ環境を再現できるため、バグの再現やテストの共有がスムーズになります。

さらに、migrate:freshとseedを組み合わせることで、データベースを初期化しながら最新のテストデータを自動で投入できます。この操作は開発中に何度も行うことになるため、非常に実用的です。

サンプルコードで最終確認


use App\Models\User;

public function run()
{
    User::factory()->count(5)->create([
        'password' => bcrypt('password'),
    ]);
}

上記のコードでは、ユーザーデータを五件生成しつつ、パスワードを固定値に設定しています。このように、Factoryのランダム生成と固定値の組み合わせも柔軟に対応できます。

実行結果のイメージ


id  name        email
1   山田太郎    test1@example.com
2   佐藤花子    test2@example.com
3   鈴木一郎    test3@example.com

このように、実際のユーザーに近いデータが自動生成されるため、画面表示や機能確認がとても分かりやすくなります。

なお、本記事の内容は以下の解説をもとに整理しています。 :contentReference[oaicite:0]{index=0}

先生と生徒の振り返り会話

生徒

「SeederとFactoryを使うと、データ入力を自動化できるということですね」

先生

「その通りです。Laravelではテストデータの準備がとても重要なので、必ず覚えておきましょう」

生徒

「Factoryはデータのテンプレートで、Seederが実際に登録する役割でしたね」

先生

「よく理解できています。さらにArtisanコマンドを使うことで、作成や実行も簡単になります」

生徒

「migrateと一緒に実行できるのも便利ですね。開発がかなり楽になりそうです」

先生

「その通りです。実務でもよく使う機能なので、繰り返し使って慣れていきましょう」

生徒

「これでLaravelのデータ作成がかなり理解できました」

先生

「素晴らしいです。次は応用として、複雑なデータやリレーションも試してみるとさらに理解が深まります」

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelのルーティングでサブドメインを使う方法!初心者向けにやさしく解説
New2
Laravel
Laravelでマルチ言語ルートを設定する方法!ロケールごとのprefixで簡単管理
New4
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
人気記事
No.1
Java&Spring記事人気No1
Symfony
SymfonyのRemember Me機能を完全解説!初心者でもわかるログイン保持の仕組み
No.2
Java&Spring記事人気No2
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
No.3
Java&Spring記事人気No3
Laravel
LaravelのFeatureテストとUnitテストの違いを理解しよう
No.4
Java&Spring記事人気No4
Laravel
Laravelでルートに中間処理を追加する方法!ミドルウェア活用ガイド
No.5
Java&Spring記事人気No5
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.6
Java&Spring記事人気No6
Laravel
Laravelでドメインルートを使う方法!マルチドメイン対応を初心者向けに解説
No.7
Java&Spring記事人気No7
CodeIgniter
CodeIgniterで多言語対応(Language)を徹底解説!言語切り替え機能を実装
No.8
Java&Spring記事人気No8
CodeIgniter
CodeIgniterでファイルアップロードとストレージ管理をマスター!初心者向け完全ガイド