【でーたべーすしーでぃんぐ】

データベースシーディング とは?

💡 DBに種をまく——開発環境を一発でリアルな状態に育てる
📌 このページのポイント
データベースシーディングの流れ マイグレーション テーブル構造を定義 DB (空の状態) シードファイル 固定データ(フィクスチャ) ランダム生成(ファクトリ) DB 管理者ユーザー 商品カテゴリ テストデータ… アプリ起動 すぐ動作確認可能 $ rails db:seed $ prisma db seed
シーディング:空のDBに初期データを投入してすぐ開発できる状態にする
ひよこ ひよこ

データベースシーディングって何をするものなの?

ペンギン先生 ペンギン先生

開発やテスト用に「最初から入っているべきデータ」をDBへ自動で投入する仕組みだよ。ユーザーアカウントや商品カテゴリなど、アプリが動くために必要なデータをまとめてセットアップできるんだ。

ひよこ ひよこ

マイグレーションと何が違うの?

ペンギン先生 ペンギン先生

マイグレーションテーブルの構造(スキーマ)を作ったり変えたりする作業。シーディングはその器の中に「中身のデータ」を入れる作業だよ。別々のフェーズで実行するのが普通だね。

ひよこ ひよこ

どんなデータを入れるの?

ペンギン先生 ペンギン先生

管理者アカウントや固定の設定値は「フィクスチャ」として決め打ちで入れることが多い。テスト用には「ファクトリパターン」+Fakerライブラリでランダムなリアルっぽいデータを大量生成することもできるよ。

ひよこ ひよこ

本番環境では使わないの?

ペンギン先生 ペンギン先生

マスターデータ(都道府県の一覧や商品カテゴリなど)は本番でも初期投入することがある。でもランダム生成のテストデータは本番では絶対に使わないね。

ひよこ ひよこ

フレームワークには最初から入っているの?

ペンギン先生 ペンギン先生

Rails・LaravelPrismaなど主要なフレームワークには `db:seed` のようなコマンドが組み込みで用意されているよ。シードファイルを書いてコマンド1つで実行できるから、チームで同じ環境をすぐ再現できるんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「データベースシーディング」って出てきたら「テスト用の初期データ一括投入」と思えればだいたいOK!
📖 おまけ:英語の意味
「Database Seeding」 = データベース播種(はしゅ)
💬 Seeding は「種をまくこと」。空っぽのDBに最初のデータを「種」として植え付けるイメージから来ているよ
← 用語集にもどる