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 25

実践アプリケーション開発:RailsからLaravelへの移行プロセス

Last updated at Posted at 2024-12-24

はじめに

この記事は、Rails学習者向けのLaravel Advent Calendar 2024の一環として、RailsからLaravelへの移行プロセスについて解説します。Railsに親しんだ開発者がLaravelの世界へスムーズに足を踏み入れるためのステップやポイントを紹介します。
RailsとLaravelはどちらも人気の高いWebアプリケーションフレームワークで、それぞれに独自の特徴があります。

前提条件

以下の知識があることを前提に解説します。

Railsを用いた基本的なアプリケーション開発経験

PHPの基本的な知識(Laravelのプログラミング言語)

Composer、Node.js、npm/yarnなどのツールの基本的な使い方

移行プロセスの全体像

  1. 開発環境のセットアップ

  2. プロジェクトの構造比較と理解

  3. モデル、マイグレーションの移行

  4. コントローラとルートの移行

  5. ビューの移行

  6. データベースと認証機能の設定

各ステップを順に説明します。

1. 開発環境のセットアップ

まずはLaravelの開発環境を準備します。

必要なツール

PHP 8.1以上

Composer

Laravel CLI

セットアップ手順

Composerを使ってLaravelプロジェクトを新規作成します:

composer create-project laravel/laravel example-app
cd example-app

開発サーバーを起動して、セットアップが正しく行われたことを確認します:

php artisan serve

http://localhost:8000 にアクセスしてLaravelの初期ページが表示されれば成功です。

2. プロジェクトの構造比較と理解

RailsとLaravelのディレクトリ構造を比較して、対応する役割を理解しましょう。

Rails Laravel 説明
app/models app/Models データベースのモデル
app/controllers app/Http/Controllers ルーティングに対応するロジックを管理
app/views resources/views HTMLテンプレートが格納されるディレクトリ
config config アプリケーションの設定ファイル

Railsの慣れ親しんだ構造とLaravelの構造を対応づけて考えることで、スムーズに作業を進められます。

3. モデル、マイグレーションの移行

モデルの移行

RailsのモデルクラスをLaravelに移植する際には、次の点を考慮してください:

RailsではActive Recordが主流ですが、LaravelではEloquent ORMを使用します。

主キーやタイムスタンプの設定はデフォルトで対応していますが、カスタマイズが必要な場合はモデルクラスで明示的に指定します。

Railsの例:

class User < ApplicationRecord
  has_many :posts
end

Laravelの例:

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use HasFactory;

    public function posts()
    {
        return $this->hasMany(Post::class);
    }
}

マイグレーションの移行

RailsのマイグレーションをLaravelのマイグレーションに変換します。

Railsの例:

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

Laravelの例:

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');
    }
}

4. コントローラとルートの移行

Railsのコントローラとルート設定をLaravelに移植します。

Railsのルート例:

Rails.application.routes.draw do
  resources :posts
end

Laravelのルート例:

use Illuminate\Support\Facades\Route;

Route::resource('posts', PostController::class);

5. ビューの移行

LaravelではBladeテンプレートエンジンを使用します。RailsのERBと似ていますが、構文が異なります。

Railsの例:

<h1><%= @post.title %></h1>
<p><%= @post.content %></p>

Laravelの例:

<h1>{{ $post->title }}</h1>
<p>{{ $post->content }}</p>

6. データベースと認証機能の設定

Laravelは認証機能を簡単に構築するための仕組みを提供しています。次のコマンドで認証システムを導入できます:

php artisan make:auth

データベース接続設定は、.envファイルを編集することで行います。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database_name
DB_USERNAME=your_username
DB_PASSWORD=your_password

まとめ

RailsからLaravelへの移行は、構造の違いを理解しつつ、公式ドキュメントを活用することでスムーズに進められます。本記事で紹介したプロセスを参考に、実際の移行作業に挑戦してみてください。

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?