イベント (プログラミング)
DOMイベントはWebにおいて発生した動作・出来事である。 正格な定義としては、Document Object Model(DOM)で定義されたEventinterfaceを実装するオブジェクトが event と呼ばれる。
例として、ウェブブラウザが発火するclick イベントや keydownイベントが挙げられる。またプログラマが任意に発火できるカスタムイベント(CustomEvent interfaceの実装)も存在する。これらのイベントを用いることでマウスクリックのような動作(アクション)、ネットワークリクエスト完了のような出来事(イベント)の発生を表現し、イベントに応答した振る舞いを定義できる。
DOM Eventsの特徴は、イベントの伝播がDOM(ウェブブラウザ処理系)によって扱われる点にある。イベントはDOM treeのnodeに対して発行され、treeのrootへ向かって各nodeで処理されながら伝播していく。この伝播はすべてウェブブラウザによって処理されており、その点でウェブブラウザはイベント(メッセージ)処理のためのミドルウェアとして働いているとみなすことができる。
イベントドリブン (イベント駆動型、英: event-driven) とは、イベントに応じて選択的にインスタンスへの処理(メソッドの実行)やコンテクストの切り替えを行う方式である。アクションの例としては、キーボードのキーが押される、マウスのボタンがクリックされる、などがある。アクションが発生すると、イベント信号が付帯情報(キー種別やボタン種別などのデータ)とともに発信される。また、アクションを起爆剤としてさらに他のプログラムコードが動かされたりするようにプログラミングすることをイベント駆動型プログラミングと称することが多い。
一般的にGUIアプリケーションソフトウェアのプログラミングでは、イベントの発生を監視しながら待機するイベントループ(メッセージループ)にて、オペレーティングシステムから受け取ったイベント(メッセージ)オブジェクトを、あらかじめ登録されたコールバック関数にディスパッチ(配送)してイベントに応じたユーザー処理(イベントハンドラー)を実行し、再びイベントループに戻るポーリング的な手法が用いられている。
なお、登録されるコールバック関数はそれぞれインタフェースが決まっており、プログラマはインタフェースを除いてこの関数の中身を自由に記述することでイベントを処理することができる。
通常、コールバック処理の登録は関数ポインタやデリゲートなどを用いて実現される。Javaではコールバック処理のカスタマイズに、イベントリスナーインタフェースを実装するカスタム派生クラスでのメソッドオーバーライドを利用する。イベントを言語の仕様として組み込んでいるプログラミング言語、たとえばC#では、特定のアクションが発生した場合に呼び出されるイベントハンドラーを簡潔に記述・登録できる。