プロシージャ

プロシージャ: procedure)とは、コンピュータプログラミングにおいて複数の処理をひとつの単位にまとめておき、呼び出し可能にしたものをいう。日本語では手続きとするのが定訳である。一連の処理を意味を持ったひとまとまりにすることで、再利用性が高まり、プログラム中に繰り返して現れる処理を1ヶ所で記述でき、プログラムの保守、管理を容易にする。

繰り返し利用されることから、ルーチン(routine)ともいう。呼び出し関係は通常階層構造をなし、その最上位にある、プログラム全体のエントリーポイントを含むルーチンをメインルーチン(メインプログラム)、呼び出されるものをサブルーチン(サブプログラム)という。また、プログラミング言語によっては関数function)と呼ばれることもある[注釈 1]

プログラミング言語により、プロシージャのような構文の分類や呼称はさまざまである。詳細はサブルーチンの記事を参照のこと。

ウィンドウプロシージャ

Microsoft Windows用のWindows APIでは、ウィンドウプロシージャ(window procedure)と呼ばれる概念があり、ウィンドウに対するメッセージを処理するコールバック関数のことを指す[1]。ウィンドウの生成や破棄、描画やサイズ変更、マウスキーボードによるユーザー入力などに伴って送信される各メッセージに対する処理(メッセージハンドラー)を記述することで、イベント駆動型プログラミングを行なう。従来のWindows APIの多くはDLLにエクスポートされたC言語互換の関数形式となっており、単純なGUIアプリケーションであれば(C++Object Pascalではなく)CやPascalのような従来の手続き型言語を使って実装することもできる。

MFC[2]Windows FormsWPFや、DelphiVCLに代表されるアプリケーションフレームワークでは、メッセージループ(イベントループ)およびウィンドウプロシージャの詳細は隠蔽されており、メッセージハンドラーはオブジェクト指向言語の持つ仮想関数のオーバーライドやデリゲートの仕組みなどを使ってイベントハンドラーにマッピングされるため、通常は意識する必要はない。

ダイアログボックスに対するコールバック関数については、ダイアログボックスプロシージャ(dialog box procedure)と呼ばれる概念があるが、システムから送信されるメッセージを処理するという点でウィンドウプロシージャと似ている[3]

脚注

注釈

  1. ^ プログラミング言語における関数という用語はもともと、数学における関数へのアナロジーから命名されたものだが、プログラミング言語の関数はシステムに対する副作用(状態の変更)を伴うこともあり、数学の関数とは異なるものである。

出典

関連項目