なぜ「コールバック関数」と呼ばれるのか?―JavaScriptの基礎からしっかり解説

こんにちは。ゆうせいです。

JavaScriptを学び始めて、きっとこんなコードに出会ったことがあるのではないでしょうか?

setTimeout(function () {
  console.log('1秒後に表示されます');
}, 1000);

ここで使われている function () { ... } が「コールバック関数」です。

でも、そもそも疑問に思いませんか?

「なぜ 'コールバック' って言うの?何を 'コール(呼ぶ)' してるの?」

今回はこの不思議な名前の由来と、その意味をかみ砕いて解説していきます。


コールバック関数とは何か?

まずは定義からしっかり押さえましょう。

コールバック関数とは:
別の関数に引数として渡されて、あとで“呼び戻される”関数」のことです。

名前の由来は英語の "call back"(呼び返す) にあります。

つまり、一度渡した関数が、ある条件やタイミングで「あとで呼ばれる」からコールバックなんですね。


コールバック関数の例で考えてみよう

例:料理でたとえると…

たとえば、あなたがシェフで、オーブンに料理を入れてタイマーをセットしたとしましょう。

setTimeout(料理が焼き上がったら呼んでね関数, 10000);

  • あなた(メイン関数)は「10分後にアラームを鳴らしてね」とタイマー(setTimeout)に命令
  • 焼き上がったあとに呼ばれる「呼んでね関数」= コールバック関数

この関数はあとから「呼び戻される(callback)」役割を果たしているわけです。


実際のコードで見てみよう

普通の関数

function greet() {
  console.log('こんにちは!');
}
greet(); // すぐに呼び出される

コールバック関数

function greetLater(callback) {
  console.log('先に何かやってから...');
  callback(); // 後で呼ばれる
}

greetLater(function () {
  console.log('こんにちは!(後で呼ばれた)');
});

ここでの function () {...}コールバック関数です。


数式的にイメージしてみよう

通常の関数呼び出し:

f() ⇒ 処理A

コールバック関数を使う場合:

g(callback) ⇒ 処理B → callback() ⇒ 処理C

つまり、

  • callback引数として渡される関数
  • g の中であとから「呼び戻される」= call back

これが 「コールバック関数」 と呼ばれる理由です。


なぜJavaScriptでよく使われるのか?

JavaScriptは非同期処理(async)がとても多い言語です。

たとえば:

  • ユーザーのクリックを待つ
  • サーバーからデータが返ってくるのを待つ
  • タイマーが終了するのを待つ

これらの「いつ起きるか分からない出来事」に対して、「そのときになったらこれ呼んでね」として使われるのがコールバック関数です。


メリットとデメリットを見てみよう

観点メリットデメリット
シンプルな書き方直感的で分かりやすいネストが深くなると読みにくい
非同期に強い処理の順番を自由に制御可能「コールバック地獄」に陥りやすい(callback hell)

コールバック関数を使う場面は?

  • イベント発生時(クリック、キー入力など)
  • タイマー処理(setTimeout, setInterval)
  • API通信完了後fetch().then(...) の前身)

たとえば、ボタンをクリックしたら動く処理も、ほとんどが コールバック関数 です。

button.addEventListener('click', function () {
  console.log('ボタンが押された!');
});


まとめ:コールバックとは「あとで呼び戻す」仕組みのこと!

  • 関数に関数を渡して、あとで呼ぶのが「コールバック関数」
  • "call back" = 呼び戻す という意味から名前がついた
  • 非同期処理と相性が良いため、JavaScriptで多用される
  • ただし、複雑になりすぎると読みづらくなる欠点もある

今後の学習のヒント

次のステップとして、以下を学んでおくと理解がさらに深まります!

  • Promiseとasync/await:コールバックの代わりになるモダンな書き方
  • コールバック関数とクロージャの関係
  • コールバック地獄とは?解消方法は?

「コールバック」という言葉の意味がわかると、コードの流れもクリアになりますよ。

ぜひ、いろんな場面で試してみてください!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。