Stack Map新人 Web エンジニアの地図

キューは、時間のかかる仕事を「あとでやる」列に入れて、裏で順に片づける仕組みです。
勤怠のアプリの「承認の知らせ」「月末の締め」「夜の掃除」を例に、押して試しながら見ます。考え方のヒント の印は、出典のない考え方や、練習のための作り物です。

重い処理を後ろに回す

画面のリクエストの中で全部をやると、利用者はその間ずっと待ちます。時間のかかる仕事は、キューに入れて裏で動かします。入口は性能とスケール「重い処理は裏に回す」にあります。ここでは、一段深く見ます。

どこで動かす? 考え方のヒント

勤怠のアプリの 8 つの仕事です(作り物)。その場で・キューで・定期処理で、のどれで動かすかを選んでください。

    キュー・ワーカー・ジョブ

    ジョブは、入れる → 待つ → 取り出す → 成功なら消える・失敗なら待ってやり直す → 回数を超えたら「失敗したジョブ」、と進みます。下のシミュレーターで、数を変えて流してみてください。

      言葉

      キューを流してみる 考え方のヒント

      承認の知らせを、外のサービスに送るジョブだとします。ワーカーの数・失敗の割合・やり直しの回数と待ち時間を変えると、終わるまでの時間と、失敗したジョブの数が変わります。

      Laravel のキュー

      Laravel 13 では、ジョブのクラスに属性(#[Tries] など)で、回数や待ち時間を書きます。ジョブのクラスを置く場所はLaravel「どこに何を書くか」にあります。コードは Laravel 13・PHP 8.4・MySQL 8.4 で動かして確かめました(給与システムは作り物)。

      ドライバーを選ぶ

      よく使うコマンド

      前の版の書き方(古い記事や AI の答え)

      2 回動いても大丈夫に(冪等)

      キューのジョブは、2 回動くことがあります。何回動いても結果が同じ(冪等)になるように作ります。言葉はWeb の仕組み「HTTP のやりとり」に、決済の冪等キーはよくある機能の作り方「決済の二重払いを防ぐ」にあります。

      2 回動くのは、こんなとき

      作り方

      2 回動いたら、どうなる? 考え方のヒント

      ジョブの中の 1 行です(作り物)。このジョブが 2 回動いたら、どうなるかを選んでください。

        たくさんの処理(バッチとチェーン)

        月末の締めで、全員分の勤怠を集計して CSV を作る例です。1 つのジョブで全員を処理すると長くかかり、途中で失敗すると最初からになります。小さく分けて、バッチとチェーンでつなぎます。

        失敗したら、どうなる?

        A・B・C の 3 つのジョブをつなぎます。形と、B が失敗するかを選ぶと、どのジョブが動き、どのコールバックが呼ばれるかが変わります。

        定期処理(スケジューラーと cron)

        「毎晩 2 時」「毎月 1 日」のように、時刻で動かす仕事です。基本はよくある機能の作り方「定期処理」に、cron の読み方の道具は「cron の読み方を試す」にあります。ここでは、キューとの関係と、重なり・台数を見ます。

          前の回と重なったら かかる時間は作り物です

          サーバーが何台もあったら

          動かし続ける(ワーカーの運用)

          ワーカーは、ずっと動き続けるプロセスです。止まったら起こし直す仕組み、デプロイのあとの入れ替え、詰まりと失敗の見張りが要ります。障害のときの動き方は運用「障害対応」にあります。

          デプロイのあとに

            時間の設定を確かめる

            4 つの秒数を入れるか、例を押してください。合わない組み合わせだと、何が起きるかが出ます。

            AI 時代AI の API とキュー

            AI の API は、遅く、回数の上限があり、使った分だけ料金がかかります。キューで裏に回し、やり直しで二重に払わない作りにします。AI に書かせたジョブのコードも、見るところを決めておきます。

            AI が書いたジョブを読む 考え方のヒント

            見つけた問題

            チェックリスト

            キューを使う機能を作ったら、確かめたものにチェックを付けてください(この端末にだけ保存されます)。考え方のヒント