コールバック 【callback】
概要
コールバック(callback)とは、コンピュータプログラム中で、ある関数などを呼び出す際に別の関数などを途中で実行するよう指定する手法のこと。呼び出し側の用意した関数などを、呼び出し先のコードが「呼び出し返す」(callback)ように登録する。コールバックを受け付ける関数などは、他の関数を引数などの形で受け取って内部で呼び出す仕組みがあらかじめ実装されている。プログラマは自らが記述した関数を用意して引き渡すことで、その関数から呼び出して実行することができる。コールバックされる関数のことを「コールバック関数」という。
コールバックの仕組みは汎用的・抽象的なコードの一部を、開発者が自らが必要とする個別的・具体的な処理で置き換えるためによく利用され、ライブラリやフレームワークを利用したソフトウェア開発で多用される。
例えば、あるプログラミング言語の標準ライブラリが高速で汎用的な並べ替え(ソート)関数を提供する場合に、二つの変数の比較を行う関数をコールバック関数に指定できるようにしておけば、開発者は二数を比較して結果を返す関数を記述するだけで、独自のデータ構造や複雑な比較処理に基づくソート関数を実装することができる。実際、C言語のqsort関数やJavaScriptのArray.sortメソッドは、比較を行うコールバック関数を渡すことができるようになっている。
コールバックの具体的な実装はプログラミング言語の仕様により異なり、C言語のように関数へのポインタを渡す方式や、関数オブジェクトやクロージャを渡す方式がよく知られる。
通信におけるコールバック接続
アナログ電話回線やISDN回線など呼び出し(call)を伴う通信回線で、相手先を一旦呼び出し、すぐに相手側から発信し返して接続を確立する方式をコールバック接続という。
通常の発信・接続と違うのは(本来の)着信側が通話料・通信料を負担する点で、異なる地方や国の間の通話で着信側から掛けたほうが通話料金が安い場合や、業務上の理由などで着信側へ課金させたい場合(社員の自宅から会社へのリモートアクセスなど)に利用される。
最初の発呼時に短時間接続して掛け返す電話番号などを通知してすぐ切断してコールバックする方式(課金方式)と、通信事業者の提供する番号通知サービスなどを利用して指示を行い、最初の発呼時には接続せずにコールバックする方式(無課金方式)がある。