コールバックとは:「終わったら、ここに知らせて」と連絡先を渡しておく仕組み を書いたあとで、「では、トリガーとは何が違うのか」と自分に聞いてみたところ、うまく説明できませんでした。どちらも「何かが起きたら、何かが動く」話に見えるからです。整理してみると、この 2 つは比べる軸が違う言葉で、どちらか一方を選ぶものではなく、組み合わせて使われることが多いものでした。
ひとことで
| 言葉 | 答えている問い | たとえ |
|---|---|---|
| トリガー | いつ・何がきっかけで動くか | 目覚まし時計の「7 時になったら」 |
| コールバック | 誰に・どこへ知らせるか(呼び戻すか) | 「終わったらこの番号に折り返して」の番号 |
トリガーはきっかけ(条件)、コールバックは行き先(連絡先)です。
組み合わさっている例
| 場面 | トリガー(きっかけ) | コールバック(行き先) |
|---|---|---|
| OAuth のログイン | ログインと同意が済んだ | https://app.example.com/oauth/callback |
| GitHub の Webhook | push された | 登録しておいた CI の URL |
| 決済 | 支払いが確定した | お店のサーバーの通知用 URL |
| ボタン | ボタンが押された | 渡しておいた関数 |
どれも「○○が起きたら(トリガー)、ここへ知らせる(コールバック)」と、1 つの文の前半と後半になっています。
いちばんの違い:「戻る相手」がいるかどうか
コールバックの「バック」は、頼んだ人のところへ戻るという意味です。そのため、コールバックには必ず次の流れがあります。
- 頼む側が、先に連絡先を渡す
- 相手が処理をする
- 終わったら、頼んだ側へ戻ってくる
トリガーには、この「頼んで待っている人」がいなくてもかまいません。「X が起きたら Y をする」という決まり(ルール)です。
DB のトリガーを例にすると、わかりやすいです。
INSERTされたら、履歴の表にも書く(PostgreSQL や Oracle のトリガー)- 誰かが「終わったら教えて」と頼んで待っているわけではない
- DB が、自分の中で決まりに従って次の処理を動かすだけ
なので、これはコールバックとは呼びません。
まとめ
- トリガー=きっかけ。「いつ動くか」。待っている人はいなくてもよい
- コールバック=連絡先・呼び戻し先。「どこへ知らせるか」。頼んで待っている側がいて、そこへ戻る
- 実際には「トリガーが起きたら、コールバックを呼ぶ」と、セットで使われることが多い