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 13

Laravelのジョブとキュー:RailsのActive Jobとの比較

Posted at

はじめに

LaravelとRailsは、それぞれPHPとRubyの主要なフレームワークとして知られていますが、非同期処理を扱う仕組みも強力です。Laravelのジョブとキュー、およびRailsのActive Jobの特徴を比較し、それぞれの使い方や適用例を見ていきましょう。

ジョブとキューの基本概念

ジョブとキューは、バックグラウンドで非同期処理を実行する仕組みです。例えば、メール送信や画像処理などのタスクをユーザーが待機することなく実行できます。

ジョブ:実行されるタスクの定義。
キュー:ジョブを管理し、スケジュール通りに実行するための仕組み

Laravelのジョブとキュー

基本的な仕組み

Laravelでは、キューは統合的なAPIで提供され、Queueファサードやartisanコマンドを使って操作できます。

ジョブの作成

php artisan make:job SendEmail

SendEmailジョブを作成すると、app/Jobsディレクトリにファイルが生成されます。

namespace App\Jobs;

use Mail;

class SendEmail implements ShouldQueue
{
    public function __construct(private $email)
    {
    }

    public function handle()
    {
        Mail::to($this->email)->send(new NotificationMail());
    }
}

キューの設定

.envファイルで使用するキュードライバーを指定します。

例:

QUEUE_CONNECTION=database

ジョブのディスパッチ

SendEmail::dispatch('user@example.com');

キュードライバー

Laravelは複数のドライバーをサポートしています。

データベース

Redis

Amazon SQS

ワーカーの起動

artisanコマンドでワーカーを起動します。

php artisan queue:work

RailsのActive Job

基本的な仕組み

RailsではActive Jobが非同期処理を抽象化しています。バックエンドにはSidekiqやResqueなどを使用します。

ジョブの作成

rails generate job SendEmail

app/jobs/send_email_job.rbが生成されます。

class SendEmailJob < ApplicationJob
  queue_as :default

  def perform(email)
    UserMailer.notification_email(email).deliver_now
  end
end

キューの設定

config/sidekiq.ymlresqueなどの設定ファイルを使用します。

ジョブのエンキュー

SendEmailJob.perform_later('user@example.com')

サポートするバックエンド

Sidekiq

Resque

Delayed Job

ワーカーの起動

バックエンドに応じたコマンドを実行します。

例:

bundle exec sidekiq

LaravelとRailsの比較

項目 Laravel Rails
ジョブの作成 artisanコマンド generatorコマンド
キュードライバー データベース、Redis、SQSなど Sidekiq、Resqueなど
ワーカーの起動方法 artisan queue:work バックエンド依存
コードの書き方 PHP Ruby

まとめ

LaravelとRailsは、どちらも強力なジョブとキューの仕組みを提供しています。それぞれのフレームワークに慣れた開発者にとって使いやすい形に設計されています。選択する際は、プロジェクトの要件や既存のインフラに適したツールを選ぶことが重要です。

参考ドキュメント

Laravel Queues

Rails Active Job Guide

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?