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

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

公開:
💡 DBに種をまく——開発環境を一発でリアルな状態に育てる
📌 このページのポイント
データベースシーディングの流れ マイグレーション テーブル構造を定義 DB (空の状態) シードファイル 固定データ(フィクスチャ) ランダム生成(ファクトリ) DB 管理者ユーザー 商品カテゴリ テストデータ… アプリ起動 すぐ動作確認可能 $ rails db:seed $ prisma db seed
シーディング:空のDBに初期データを投入してすぐ開発できる状態にする
ひよこ ひよこ
データベースシーディングって何をするものなの?
ペンギン先生 ペンギン先生
開発やテスト用に「最初から入っているべきデータ」をDBへ自動で投入する仕組みだよ。ユーザーアカウントや商品カテゴリなど、アプリが動くために必要なデータをまとめてセットアップできるんだ。
ひよこ ひよこ
マイグレーションと何が違うの?
ペンギン先生 ペンギン先生
マイグレーションテーブルの構造(スキーマ)を作ったり変えたりする作業。シーディングはその器の中に「中身のデータ」を入れる作業だよ。別々のフェーズで実行するのが普通だね。
ひよこ ひよこ
どんなデータを入れるの?
ペンギン先生 ペンギン先生
管理者アカウントや固定の設定値は「フィクスチャ」として決め打ちで入れることが多い。テスト用には「ファクトリパターン」+Fakerライブラリでランダムなリアルっぽいデータを大量生成することもできるよ。
ひよこ ひよこ
本番環境では使わないの?
ペンギン先生 ペンギン先生
マスターデータ(都道府県の一覧や商品カテゴリなど)は本番でも初期投入することがある。でもランダム生成のテストデータは本番では絶対に使わないね。
ひよこ ひよこ
フレームワークには最初から入っているの?
ペンギン先生 ペンギン先生
Rails・LaravelPrismaなど主要なフレームワークには `db:seed` のようなコマンドが組み込みで用意されているよ。シードファイルを書いてコマンド1つで実行できるから、チームで同じ環境をすぐ再現できるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「データベースシーディング」って出てきたら「テスト用の初期データ一括投入」と思えればだいたいOK!
📖 おまけ:英語の意味
「Database Seeding」 = データベース播種(はしゅ)
💬 Seeding は「種をまくこと」。空っぽのDBに最初のデータを「種」として植え付けるイメージから来ているよ
← 用語集にもどる