0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rails学習者向けのLaravelAdvent Calendar 2024

Day 7

Laravelのマイグレーション:Railsのマイグレーション機能との比較

Last updated at Posted at 2024-12-06

はじめに

プログラミング初学者の方にとって、フレームワークの選定は学習の方向性を大きく左右します。LaravelとRailsは、それぞれのエコシステムで高い人気を誇るフレームワークですが、その中でも特に重要な機能の一つが「マイグレーション」です。本記事では、LaravelとRailsのマイグレーション機能を比較し、それぞれの特長を整理します。

マイグレーションとは?

マイグレーションとは、データベースのスキーマ(テーブルの構造など)をバージョン管理する仕組みです。これにより、開発チーム全員が同じデータベース構造を共有し、変更を適用する手間を省けます。

Laravelのマイグレーション

基本的な仕組み

Laravelでは、マイグレーションファイルはPHPのスクリプト形式で作成されます。このファイルはデータベースの変更を記述するためのもので、artisanコマンドを使って生成および実行します。

マイグレーションファイルの生成

php artisan make:migration create_users_table

上記コマンドを実行すると、以下のようなマイグレーションファイルが生成されます。

php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateUsersTable extends Migration
{
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('users');
    }
}

マイグレーションの実行

php artisan migrate

ロールバック

php artisan migrate:rollback

Railsのマイグレーション

基本的な仕組み

Railsでは、マイグレーションファイルはRubyのスクリプト形式で記述されます。railsコマンドを用いてファイルを生成し、適用します。

マイグレーションファイルの生成

rails generate migration CreateUsers

生成されるファイルの例:

class CreateUsers < ActiveRecord::Migration[6.1]
  def change
    create_table :users do |t|
      t.string :name
      t.string :email, unique: true
      t.timestamps
    end
  end
end

マイグレーションの実行

rails db:migrate

ロールバック

rails db:rollback

LaravelとRailsの比較

項目 Laravel Rails
マイグレーション言語 PHP Ruby
コマンド php artisan rails
デフォルトでの型 明示的に指定 暗黙的に指定
ロールバック migrate:rollback db:rollback

具体例:usersテーブルの作成

LaravelとRailsで同じテーブルを作成する例を比較します。

Laravel

php
Schema::create('users', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->string('email')->unique();
    $table->timestamps();
});

Rails

ruby
create_table :users do |t|
  t.string :name
  t.string :email, unique: true
  t.timestamps
end

初学者におすすめの選び方

Laravelを選ぶ場合: PHPに馴染みがある、またはシンプルで直感的なコードを好む場合におすすめです。

Railsを選ぶ場合: Rubyのエコシステムを活用したい、または「書きやすさ」を重視する場合に適しています。

まとめ

LaravelとRailsのマイグレーション機能は、基本的な目的は同じですが、記述言語やコマンド体系に違いがあります。どちらも強力なツールであり、公式ドキュメントを参考にしながら再現性のあるコードを書けるよう練習していきましょう。

公式ドキュメント:

Laravel Migrations
Rails Migrations

初心者の方でも、この記事が参考になれば幸いです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?