おすすめ書籍はじめに大量なデータのインポートやメールの送信など、処理時間が長くなるタスクを実行する際は非同期で実行することが多いと思います。Jobという便利な仕組みにより、非同期処理を簡単に実装することができます。Job単体でも使用することはできますが、プロセスがクラッシュしたりコンピュータをリセットしたりするとジョブが失われてしまいます。JobやSidekiqなどのライブラリと合わせて使用することが一般的です。Jobは、ジョブを宣言し、それによってバックエンドでさまざまな方法によるキュー操作を実行するためのフレームワークです。大量なデータのインポートやメールの送信など、様々な処理を非同期で並列的に実行できます。詳しい説明はこちらから見ることができます。Jobの主な役割はジョブの処理とジョブ管理機能の制御を分離することです。Jobなど)のキューを管理するライブラリを意識する必要がなくなり、ジョブ管理機能ではキューの操作方法以外のことを気にする必要がなくなります。ジョブごとに複数のキューを管理するライブラリを採用することができ、それらのライブラリを切り替える際にコードを書き換える必要がなくなります。ジョブを作成するジョブはコントローラやモデルなどと同じようにRailsジェネレータで生成することができます。以下のコマンドを実行するとapp/jobsにジョブが生成されます。app/jobs/mail_delivery_job.rb生成されたコードは以下のとおりです。laterendendジョブをキューに登録するキューへのジョブの登録は以下のように行います。1.week).perform_later(mail)また、ジョブに引数を渡す場合は以下のように行います。Jobが提供するフックを用いて、以下のようにジョブのライフサイクル中に任意の処理を実行することができます。performの直後に何か実行endend利用できるコールバックは以下のとおりです。before_enqueuearound_enqueueafter_enqueuebefore_performaround_performafter_perform例外ジョブの実行中に起こった例外は以下のようにキャッチする事ができます。laterendend例外が発生したときに以下のようにジョブのリトライや破棄も行なえます。Jobはジョブを実行するためのライブラリの一つです。installします。'delayed_job_active_record'次に、ジョブのキューを保存するためのテーブルを作ります。db:migrate実行すると下記のテーブルが作られます。Jobと連携させるための設定をapplication.rbに追加します。Jobを設定しただけではジョブを処理することはできません。以下のコマンドでワーカーを起動させます。Jobの他によく使われるライブラリとしてはSidekiqやResqueなどがあります。Jobがキューの管理にDBを用いるのに対して、これら2つはRedisで管理します。JobはRedisを使用しないため容易に利用できますが、ジョブの処理に時間がかかります。上記の理由により、非同期処理を多用するサイトではSidekiqやResqueなどを使ったほうが良いでしょう。さいごにRailsでの非同期処理とライブラリについて紹介しました。Jobは非常に使いやすいので、重たい処理は非同期で処理してユーザビリティを高めていきましょう。コメントをキャンセルメールアドレスが公開されることはありません。コメント名前メールアドレスサイト上に表示された文字を入力してください。私たちは無料アプリもリリースしています、ぜひご覧ください。下記のアイコンから無料でダウンロードできます。