[ 通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

コールバック関数 (callback function)

pointこの用語のポイント

point関数に引数として渡される関数だよ

スポンサーリンク

簡単に書くよ

コールバック関数 (callback function)とは

「この関数、おまえの方で呼び出してや~」と関数に引数として渡される関数のこと
です。

image piyo

詳しく書くよ

順番に見ていきましょう。
まずは「関数」と「引数」について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は、適当に読み飛ばしてください。

関数は「何かを入れると何かを計算して何かを返してくれるプログラムの部品」です。
一般的には、入力を受けて処理を行い、その結果として出力があります。

コールバック関数

引数は「プログラムや関数に渡す値」です。

コールバック関数2

ちょっと汚い話で恐縮ですが、人間はご飯を食べて、ウンチを出します。

コールバック関数3

人間を関数だとすれば、ご飯に相当するものが引数です。
あと、ついでなので書いておくと、ウンチに相当するものは戻り値です。

コールバック関数4

以上を踏まえて、関数に引数として渡される関数が「コールバック関数」です。
関数Aに引数として渡された関数Bは、関数Aの中で関数Bのお仕事をします。
このときの関数Bのことです。

なんだか早口言葉みたいですね。

イメージを掴んでいただくために、まずはピヨ太君に登場してもらいましょう。

ピヨ太君は、何でも屋さんのお仕事をしています。
やってほしいことを書いた紙をお金と一緒に渡せば、紙に書いてあることをお仕事としてやってくれます。

コールバック関数5

お仕事が終わると、諸経費とピヨ太君への報酬を引いたお釣りを返してくれます。

コールバック関数6

この話における「やってほしいことを書いた紙」がコールバック関数です。

プログラムに当てはめると、ピヨ太君が「関数」、やってほしいことを書いた紙とお金が「引数」、お釣りが「戻り値」となります。
また、ピヨ太君関数の中で行われる処理は

1.やってほしいことを書いた紙の内容を実行する
2.諸経費とピヨ太君への報酬を引く
3.お釣りを返す


です。

これを、もう少しプログラムっぽい書き方に変えてみましょう。
例えば以下のように書くことができます。

お釣り ピヨ太君関数(お金,やってほしいことを書いた紙){
  報酬=100円;

  諸経費=やってほしいことを書いた紙の内容を実行;

  お釣り=お金-諸経費-報酬;

  return お釣り;
}


ピヨ太君関数は、お金とやってほしいことを書いた紙を引数として取ります。

やってほしいことを書いた紙の内容を実行し、お金から諸経費と報酬を引きます。
残りがお釣りです。

お釣りを戻り値として返却します。

ピヨ太君に渡すお金の金額や、やってほしいことを書いた紙の内容(ピヨ太君がお仕事する内容)が変われば、お釣りの額も変わります。

さて、ここで引数に注目してください。
ピヨ太君に渡すお金、これは実際のプログラムであれば、数値型の変数になるでしょう。

では、やってほしいことを書いた紙はどうでしょうね?

媒体としては紙ですが、大事なのは「やってほしいこと」という部分です。
つまり「処理」です。
やってほしいことを書いた紙は、実際のプログラムであれば処理をまとめたもの(関数)に相当します。

どうやらピヨ太君関数は、数値型の変数と関数を引数にとるようですね。
戻り値のお釣りは、お金なので数値型の変数でしょう。

これを踏まえて、先程のピヨ太君関数をもう少し単純化すると、以下のようになります。

数値型 ピヨ太君関数(数値型,関数){

  関数実行;

}


関数を引数として渡して、ピヨ太君関数の中で実行させていますね。
このように「お前の方でやらせてや~」と引数として関数に渡す処理のまとまり(関数)を、コールバック関数と言います。

実際に引数として渡すのは関数ではなく関数ポインタ(関数のある場所が書いてある紙)だったりしますが、そこら辺を説明しだすとキリが無いので、これくらいにしておきます。

あっ、そうそう。
コールバック関数の名前の由来、「コールバック関数」と呼ばれている理由については、考えない方が良いですよ。
変に突っ込んで考えると、余計に分からなくなると思います。

image piyo2

一言でまとめるよ

まぁ「コールバック関数」って単語が出てきたら「関数に渡される関数なんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク