Rails初心者でもわかるSidekiq導入ガイド|Redis設定・queues設定・Web UIの使い方
生徒
「Railsで時間のかかる処理を裏で動かす方法ってありますか?」
先生
「あります。Railsではバックグラウンド処理を使うことで、画面を止めずに処理できます。」
生徒
「バックグラウンド処理って難しそうです…」
先生
「大丈夫です。Sidekiqという仕組みを使えば、初心者でも安全に始められます。」
1. Railsとは?バックグラウンド処理の全体像
Railsは、Webアプリケーションを作るための便利な枠組みです。画面表示やデータ保存などを分担して動かす決まりがあり、この考え方をMVCと呼びます。通常の処理は画面操作と同時に実行されますが、メール送信や集計処理のように時間がかかる作業は、バックグラウンド処理として裏側で動かす方が安全です。Sidekiqは、その裏側の仕事を担当する仕組みです。
2. 開発環境とRedisの準備
Sidekiqを使うにはRedisというデータ保管場所が必要です。Redisはメモ帳のように一時的な情報を高速で保存できます。Sidekiqは「やることリスト」をRedisに保存し、順番に処理します。RubyやRailsが動く環境があれば、Redisを追加するだけで準備は整います。
brew install redis
redis-server
3. プロジェクト作成とSidekiq導入
RailsプロジェクトにSidekiqを組み込みます。GemfileにSidekiqを追加することで、RailsがSidekiqを使えるようになります。Gemとは便利な部品のセットです。
gem 'sidekiq'
bundle install
次にSidekiq用の設定ファイルを作ります。ここでRedisの場所やキューの順番を決めます。
:concurrency: 5
:queues:
- default
- mailers
4. ルーティングとWeb UIの設定
Sidekiqには処理状況を確認できるWeb画面があります。これをWeb UIと呼びます。ルーティングとはURLと処理を結びつける設定です。管理画面としてSidekiqの状態を確認できます。
require 'sidekiq/web'
Rails.application.routes.draw do
mount Sidekiq::Web => '/sidekiq'
end
ブラウザで/sidekiqにアクセスすると、待機中や実行中の処理が一覧で表示されます。
5. コントローラとジョブの基本
実際に裏で動かす処理をジョブと呼びます。コントローラからジョブを呼び出すことで、画面操作とは別に処理されます。Active JobはRails標準の仕組みで、Sidekiqと組み合わせて使えます。
class SampleJob < ApplicationJob
queue_as :default
def perform(name)
puts "こんにちは #{name}"
end
end
SampleJob.perform_later('Rails')
6. キュー管理とリトライの考え方
キューとは「順番待ちの列」です。重要な処理を先に動かしたい場合、キューを分けます。また失敗した処理は自動でやり直されます。これをリトライと呼びます。Sidekiqは失敗時も安全に再実行できるため、初心者でも安心して使えます。
class MailJob < ApplicationJob
queue_as :mailers
end