tanaka101

コールバック関数

別名: Callback Function, コールバック

コールバック関数とは、他の関数に渡して、あとから呼び出してもらう関数のことです。

「この処理が終わったら、この関数を実行してね」と頼んでおくイメージです。

コールバック関数はJavaScript、Python、Java、Rubyなどどの言語にも共通する概念です。
この記事ではJavaScriptを例に説明します。

ボタンをクリックしたらメッセージを表示してみよう

以下のコードでは、ボタンをクリックすると「クリックされました!」と表示されます。

実際に「クリック」ボタンを押してみてください。

コールバック関数の例

このコードの最後の行に注目してください。

button.addEventListener('click', showMessage);

addEventListenershowMessage という関数を渡しています。
この渡された showMessageコールバック関数です。

showMessage は自分で実行しているわけではありません。
ボタンがクリックされたタイミングで、addEventListener が代わりに実行してくれます。

自分で呼ぶのか、呼んでもらうのか

普通の関数呼び出しとコールバック関数の違いを整理しましょう。

// 普通の呼び出し:自分で今すぐ実行する
showMessage();
 
// コールバック:あとで呼んでもらう(()をつけない)
button.addEventListener('click', showMessage);

showMessage() のように () をつけると、その場ですぐに実行されます。
showMessage のように () をつけないと、関数そのものを渡すだけで、まだ実行されません。

書き方意味
showMessage()今すぐ実行する
showMessage関数を渡すだけ(あとで呼んでもらう)

コールバック関数では () をつけずに渡す、というのがポイントです。

コールバック関数が使われる場面

ボタンのクリック以外にも、コールバック関数はあらゆる場面で使われます。

場面やりたいことコールバックの役割
ユーザーの操作ボタンが押されたら処理したいクリックされたときに呼び出される
データの加工リストの各要素を変換したい1つずつ要素を受け取って処理する
時間の経過3秒後に処理を実行したい指定時間が経ったら呼び出される
外部との通信サーバーからデータを取得したいデータが届いたら呼び出される

すべてに共通するのは、「ある条件が揃ったときに、渡しておいた関数を呼び出す」 というパターンです。

これはJavaScriptに限った話ではありません。
たとえばPythonのリスト操作やJavaのイベント処理など、どの言語でもコールバック関数は登場します。

まとめ

  • コールバック関数は、他の関数に渡してあとから呼び出してもらう関数
  • 渡すときは()をつけない。()をつけるとその場で実行されてしまう
  • イベント処理、配列操作、非同期処理など幅広く使われる