HTTP / WebSpec

コールバックとトリガーの違い:「きっかけ」と「連絡先」は別の軸

コールバックとは:「終わったら、ここに知らせて」と連絡先を渡しておく仕組み を書いたあとで、「では、トリガーとは何が違うのか」と自分に聞いてみたところ、うまく説明できませんでした。どちらも「何かが起きたら、何かが動く」話に見えるからです。整理してみると、この 2 つは比べる軸が違う言葉で、どちらか一方を選ぶものではなく、組み合わせて使われることが多いものでした。

ひとことで

言葉答えている問いたとえ
トリガーいつ・何がきっかけで動くか目覚まし時計の「7 時になったら」
コールバック誰に・どこへ知らせるか(呼び戻すか)「終わったらこの番号に折り返して」の番号

トリガーはきっかけ(条件)、コールバックは行き先(連絡先)です。

組み合わさっている例

場面トリガー(きっかけ)コールバック(行き先)
OAuth のログインログインと同意が済んだhttps://app.example.com/oauth/callback
GitHub の Webhookpush された登録しておいた CI の URL
決済支払いが確定したお店のサーバーの通知用 URL
ボタンボタンが押された渡しておいた関数

どれも「○○が起きたら(トリガー)、ここへ知らせる(コールバック)」と、1 つの文の前半と後半になっています。

いちばんの違い:「戻る相手」がいるかどうか

コールバックの「バック」は、頼んだ人のところへ戻るという意味です。そのため、コールバックには必ず次の流れがあります。

  1. 頼む側が、先に連絡先を渡す
  2. 相手が処理をする
  3. 終わったら、頼んだ側へ戻ってくる

トリガーには、この「頼んで待っている人」がいなくてもかまいません。「X が起きたら Y をする」という決まり(ルール)です。

DB のトリガーを例にすると、わかりやすいです。

  • INSERT されたら、履歴の表にも書く(PostgreSQL や Oracle のトリガー)
  • 誰かが「終わったら教えて」と頼んで待っているわけではない
  • DB が、自分の中で決まりに従って次の処理を動かすだけ

なので、これはコールバックとは呼びません。

まとめ

  • トリガー=きっかけ。「いつ動くか」。待っている人はいなくてもよい
  • コールバック=連絡先・呼び戻し先。「どこへ知らせるか」。頼んで待っている側がいて、そこへ戻る
  • 実際には「トリガーが起きたら、コールバックを呼ぶ」と、セットで使われることが多い
スポンサーリンク
タイトルとURLをコピーしました