イベント駆動型プログラミング
手続き型のイベント駆動型プログラミングにおいては、まず各イベントに対応する処理を記述した手続き(サブルーチン、関数、あるいはメソッド)を、システムあるいはアプリケーションフレームワークに登録する。この手続きはイベントハンドラー (event handler) と呼ばれ、イベントが発生したときにシステムあるいはアプリケーションフレームワークによって呼び出される(コールバックされる)。イベントの待機中(アイドリング時)の処理はシステムに任せる。
一般的に、グラフィカルユーザインタフェース (GUI) を使用するオペレーティングシステムやアプリケーションソフトウェアでは、イベント駆動型プログラミングを利用している。マウス操作やキーボード操作といったユーザーからの入力や、システム状態の変化・変更といった各イベントに対する処理を統一的に記述することができる。
イベント駆動型プログラミングを行うメリットは、アプリケーションを作成する際に、必要なイベントハンドラーにのみ処理を書けばよい、ということである。イベントを待機するプログラム構造自体はどのアプリケーションもほぼ共通であり、結果として、アプリケーションフレームワークによるプログラム構造のブラックボックス化と再利用がしやすくなり、アプリケーションプログラマーが記述しなければならないコード量が減る。処理の記述をハンドラーごとに分けるので、プログラムの見通しも良くなる。
規則型(宣言型)のイベント駆動型プログラミングにおいては、規則の条件部が満たされ指定されたイベントが発生すると、その規則が実行される。このような規則を ECA規則 (event-condition-action rule) という。例えば為替レート換算であれば
プログラムの起動直後 → 換算前の金額を1に設定する
換算前の通貨単位と変換後の通貨を「選択」する → 換算前の金額とそれぞれの通貨を為替換算サービスに送る
サービスから為替レートを「受け取る」→ 換算前の金額とレートから換算式を組み立てる。
入力欄に換算前の通貨の金額を「入力」する → 入力された金額を換算前の金額に設定する
換算前の金額が「設定される」→ 換算式を利用して換算結果を提示する
といった規則を用意しておけば、利用者としては
通貨単位だけ選択済みで金額が未入力ならば、例えば1円あたり何ドルかが得られる
金額だけを変更することで、選択しておいた通貨間で換算を次々に行える
金額をそのままにしても、通貨を選ぶ度にすぐに換算される。
入力を「確定する」という余計な手順を省ける(リアルタイム性)
というメリットを享受できる。ここで挙げた例は、データや状態の変化に反応して処理が起動されるリアクティブプログラミング(英語版)と呼ばれる。
「キーボードのキーを押した」、「時計がある時刻になった」などの、プログラムの流れとは別に発生する事象。または、その事象に関する情報を含んだメッセージを指す。 →イベント (プログラミング)