プロシージャとは
プロシージャ(procedure)とは、
コンピュータプログラミングにおいて、複数の処理をひとまとめにし、呼び出し可能にしたものです。日本語では「
手続き」と訳されます。プロシージャは、一連の処理を意味のあるまとまりとして定義することで、プログラムの再利用性を高め、同じ処理を何度も記述する手間を省きます。これにより、プログラムの保守や管理が容易になります。
プロシージャは、繰り返し利用されることからルーチン(routine)とも呼ばれます。プログラムの実行は、通常、階層構造をなしており、プログラム全体の開始点を含むルーチンをメインルーチン(メインプログラム)、そこから呼び出されるルーチンを
サブルーチン(サブプログラム)といいます。
プログラミング言語によっては、プロシージャは関数(function)と呼ばれることもあります。
プロシージャの構文や分類、呼称は
プログラミング言語によって異なります。詳細については、
サブルーチンの記事を参照してください。
ウィンドウプロシージャ
Microsoft WindowsのWindows APIには、ウィンドウプロシージャ(window procedure)という概念があります。これは、ウィンドウに対するメッセージを処理するコールバック関数を指します。ウィンドウの生成や破棄、描画、サイズ変更、マウスやキーボードによるユーザー入力など、様々なイベントに応じてメッセージが送信され、ウィンドウプロシージャはこれらのメッセージに対する処理(メッセージハンドラー)を記述することで、イベント駆動型のプログラミングを実現します。
従来のWindows APIでは、
C言語互換の関数形式でDLLにエクスポートされています。そのため、
C言語や
Pascalのような
手続き型言語を使ってGUIアプリケーションを実装することも可能です。ただし、MFC、Windows Forms、WPF、
DelphiのVCLなどのアプリケーションフレームワークでは、メッセージループ(イベントループ)とウィンドウプロシージャの詳細が隠蔽されています。これらのフレームワークでは、メッセージハンドラーはオブジェクト指向言語の仮想関数のオーバーライドやデリゲートの仕組みなどを利用してイベントハンドラーにマッピングされるため、通常はウィンドウプロシージャを直接意識する必要はありません。
ダイアログボックスに対するコールバック関数は、ダイアログボックスプロシージャ(dialog box procedure)と呼ばれます。これもウィンドウプロシージャと同様に、システムから送信されるメッセージを処理するという点で共通しています。
関連事項