【しーどでーた】

シードデータ とは?

最終更新:
💡 データベースに最初に「種をまく」ように投入する初期データ

データベースの初期状態を用意するために投入するデータ。開発・テスト用のサンプルや、アプリが必要とするカテゴリなどの初期値があり、スクリプトで投入を管理することが多い。

📌 このページのポイント
初期値をデータベースへ登録 初期値 書籍 ゲーム 登録処理 + seeding DB カテゴリ 書籍 ゲーム 同じ初期値でも、登録方法で結果は変わる
シードデータは登録する初期値。再実行時の重複を避けるには別途設計が必要。
ひよこ ひよこ
シードデータはスクリプトのこと?
ペンギン先生 ペンギン先生
シードデータは投入するデータのことだよ。スクリプトは、それをDBへ入れる処理を管理する手段。たとえばカテゴリの初期値をコードで管理すると、必要な状態を用意する作業を繰り返しやすくなるんだ。
ひよこ ひよこ
どんなデータを入れるの?
ペンギン先生 ペンギン先生
アプリが必要とするカテゴリや権限の初期値、開発用のダミー商品などだよ。本番で必要な初期値と、開発・テストだけのサンプルは区別し、どの環境へ投入するかを確認しよう。
ひよこ ひよこ
マイグレーションとはどう違うの?
ペンギン先生 ペンギン先生
主な役割は、マイグレーションがテーブルなどの構造の変更、シードが初期データの用意だよ。ただしRailsのマイグレーションでもデータの追加・変更はできる。名前だけで完全に切り分けず、いつ適用し、どう管理するかを考えるんだ。
ひよこ ひよこ
コマンドを繰り返せば同じ状態になる?
ペンギン先生 ペンギン先生
スクリプトに書いただけでは保証されないよ。毎回INSERTすれば重複することもある。識別するキーや一意制約を決め、既存データがあるとき追加・更新・維持のどれをするか設計しよう。ランダムな値や外部データの違いも再現性に関係するね。
ひよこ ひよこ
スキーマが変わったらどうする?
ペンギン先生 ペンギン先生
必須列や型が変わるとシードも更新が必要な場合があるよ。新しいDBに構造を作って投入できるか、同じシードを再実行できるかを確認すると役立つ。既存データを消してから投入する処理は、環境と影響を確かめて使おう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「シードデータ」って出てきたら「DBの初期状態を用意するためのデータ」と思えばだいたいOK!
📖 おまけ:英語の意味
「Seed Data」 = 種(Seed)のデータ
💬 種をまく(seed)ように、最初にデータベースに初期データを植えるイメージ

参考資料

← 用語集にもどる