Rails Active Job入門|ジョブの作り方・enqueue/performの基本を初心者向けに徹底解説【Rails 7/8対応】
生徒
「Railsで時間がかかる処理を裏で動かす方法ってありますか?」
先生
「RailsにはActive Jobという仕組みがあって、重たい処理を後回しにできます。」
生徒
「後回しって、どういうことですか?」
先生
「画面表示とは別に、裏側で仕事をするイメージです。まずは基本から見ていきましょう。」
1. Active Jobとは?Railsのバックグラウンド処理の基本
Active Job(アクティブ ジョブ)は、Railsに標準で用意されているバックグラウンド処理の仕組みです。バックグラウンド処理とは、ユーザーの画面操作とは別に、裏側でこっそり実行される作業のことです。たとえば、メール送信やデータ整理のように、すぐ終わらない処理を担当します。
Active Jobは「仕事の依頼書」を作って、あとで実行してもらうイメージです。Rails 7やRails 8でも基本的な考え方は変わらず、初心者でも扱いやすいのが特徴です。
2. なぜActive Jobが必要なのか?初心者向けの例え
レストランを想像してください。注文を受けてから料理が完成するまで、ずっとお客さんを立たせたままだと困ります。そこで、注文だけ先に受けて、料理はキッチンで作ります。Active Jobは、この「キッチンで料理する役割」です。
Railsで重たい処理をそのまま実行すると、画面が固まったように見えます。Active Jobを使うと、画面表示を先に終わらせて、処理は裏で進められます。
3. Active Jobの作り方(ジョブの生成)
Active Jobでは、まず「ジョブ」というクラスを作ります。ジョブとは、やってほしい仕事をまとめた設計図です。Railsではコマンド一つで簡単に作成できます。
rails generate job Sample
このコマンドを実行すると、app/jobs/sample_job.rbというファイルが作られます。この中に、実際の処理内容を書いていきます。
4. performメソッドとは?ジョブの中身を理解する
ジョブの中心となるのがperformメソッドです。performとは「実行する」という意味で、ここに処理内容を書きます。
class SampleJob < ApplicationJob
queue_as :default
def perform(name)
puts "#{name}さん、バックグラウンド処理中です"
end
end
この例では、名前を受け取ってメッセージを表示しています。難しく考えず、「ここにやりたい作業を書く」と覚えて大丈夫です。
5. enqueueとは?ジョブを予約する仕組み
enqueueは、ジョブを「今すぐやって」とお願いする操作です。実際には、キューと呼ばれる待ち行列に並びます。初心者向けに言うと、順番待ちの紙に名前を書く感じです。
SampleJob.perform_later("太郎")
これでSampleJobがバックグラウンドで実行されます。画面表示を止めずに処理できるのがポイントです。
6. enqueueとperform_nowの違い
Active Jobにはperform_nowという方法もあります。これはバックグラウンドではなく、その場で実行する方法です。
SampleJob.perform_now("花子")
初心者のうちは、perform_laterは後回し、perform_nowは即実行と覚えておくと混乱しません。
7. キューとは何か?Active Jobと待ち行列の関係
キューとは、仕事を順番に並べておく箱のようなものです。Active Jobはキューにジョブを入れ、SidekiqやGoodJobといった仕組みが順番に処理します。
初心者の段階では、「キュー=順番待ちの列」と理解しておけば十分です。
8. Active Jobでできる代表的な処理例
Active Jobは、メール送信、データの整理、定期的なチェックなどによく使われます。重たい処理を裏で動かすことで、Railsアプリ全体が快適になります。
class CleanupJob < ApplicationJob
def perform
puts "不要なデータを整理しています"
end
end
このように、内容はとてもシンプルで問題ありません。まずは動かしてみることが大切です。