IT-Q

マイグレーションは何のためにありますか。

DB のスキーマ変更を PHP のコードとして書き、バージョン管理に載せるためのものです。本番への反映漏れを防ぎ、参画した人が migrate だけで同じ構造を再現できる状態を作ります。

面接官が見ているのはDB スキーマをコードで管理する発想があるか。

よくある答えと、面談でどう見られるか

  • DB のスキーマ変更をコードとして残し、全環境で同じ手順を再現するため
    その通りです。誰がどの環境に何を適用したかが履歴として残るのが本質です。
  • 本番の DB データを開発環境にコピーするため
    それはデータの複製です。マイグレーションが扱うのは構造(スキーマ)だけです。
  • サーバーを移設するときにデータを移すため
    一般的な語義と混ざっています。Laravel ではスキーマ変更の管理を指します。
  • テスト用のダミーデータを投入するため
    それは seeder の役割です。マイグレーションは構造、seeder は中身。

模範解答

DB のスキーマ変更を PHP のコードとして記述し、バージョン管理に載せるためのものです。「開発環境でカラムを足したが本番に反映し忘れた」を防げますし、新しく参画した人も migrate を流すだけで同じ構造を再現できます。本番では確認プロンプトが出るため php artisan migrate --force を使います。