「イベント駆動型プログラミング」の版間の差分

削除された内容 追加された内容
m 曖昧さ回避ページブラックボックスへのリンクを解消、リンク先をブラックボックス (代表的なトピック)に変更(DisamAssist使用)
編集の要約なし
(同じ利用者による、間の1版が非表示)
1行目:
{{出典の明記|date=2015年12月}}
[[ファイル:Event driven programming Simply Explained.jpg|境界|右|フレームなし|265x265ピクセル]]
'''イベント駆動型プログラミング'''(イベントくどうがたプログラミング、{{lang-en-short|event-driven programming}})は、[[コンピュータプログラム]]が起動すると共に[[イベント (プログラミング)|イベント]]を待機し、発生したイベントに従って受動的に処理を行う[[プログラミングパラダイム]]のこと。従来の[[キャラクタユーザインタフェース]] (CUI) のプログラムに多く見られる、起動後に指定のタスクのみを実行して即座に終了するような、直線的な[[制御フロー]]を基本とするプログラミングパラダイムに対する概念。「イベント駆動」は「イベントドリブン ({{lang|en|event-driven}})」とカナ表記されることもある。
*[[{{プログラミングパラダイム]]}}
 
'''イベント駆動プログラミング'''({{lang-en-short|''event-driven programming''}})は、イベントの発生によってプログラムフローが決定されるプログラミング手法である。イベントとは[[クリック (マウス)|マウスクリック]]や[[キーボード (コンピュータ)|キーボード]]押下によるユーザーアクション、センサーやシグナルなどによるハードウェアインプット、他の[[スレッド (コンピュータ)|スレッド]]や[[トランザクション]]からのメッセージレシーブなどを指す。プログラムフローとはスレッドの開始やプロセスの分岐を意味する。[[グラフィカルユーザーインターフェース]]上のシステムでよく用いられる手法であり、ユーザー入力へのレスポンス部分の実装に適合している。
== 概要 ==
 
== 概要特徴 ==
規則型(宣言型)のイベント駆動型プログラミングにおいては、規則の条件部が満たされ指定されたイベントが発生すると、その規則が実行される。このような規則を [[ECA]]規則 ({{lang|en|event-condition-action rule}}) という。
 
11 ⟶ 14行目:
イベント駆動型プログラミングを行うメリットは、アプリケーションを作成する際に、必要なイベントハンドラーにのみ処理を書けばよい、ということである。イベントを待機するプログラム構造自体はどのアプリケーションもほぼ共通であり、結果として、アプリケーションフレームワークによるプログラム構造の[[ブラックボックス (代表的なトピック)|ブラックボックス]]化と再利用がしやすくなり、アプリケーションプログラマーが記述しなければならないコード量が減る。処理の記述をハンドラーごとに分けるので、プログラムの見通しも良くなる。
 
==用語と解説==
==イベント駆動型プログラミングの用語==
; イベント : 「キーボードのキーを押した」、「時計がある時刻になった」などの、プログラムの流れとは別に発生する事象。または、その事象に関する情報を含んだ[[メッセージ (コンピュータ)|メッセージ]]を指す。 →[[イベント (プログラミング)]]
; イベントハンドラー : イベントが発生した際に実行すべき[[サブルーチン]]のこと。イベント[[フック (プログラミング)|フック]]、イベントリスナーなどの呼び方がある。
18 ⟶ 21行目:
; イベントキュー : 複数のイベントが連続して発生した場合に、それらのイベントを[[キュー (コンピュータ)|待ち行列]]として保持するデータ構造。イベントの発生間隔が短く、次のイベントが発生するまでにイベントハンドラーの処理が間に合わない場合に[[バッファ]]として用いられる。→[[メッセージキュー]]
; [[イベントループ]] : イベントを待機する[[ループ (プログラミング)|ループ]]を持つ機構。イベントループ内にイベントディスパッチャーを持つ構造が一般的である。メッセージループ、メッセージポンプとも呼ばれる。
 
== 脚注 ==
<div class="references-small"><references/></div>
 
==関連項目==
*[[プログラミングパラダイム]]
*[[データフロープログラミング]]
*[[シグナルプログラミング]]
*[[コールバック関数]]
*[[イベント (プログラミング)]]
*[[イベントループ]]
*[[コールバック関数]]
*[[割り込み (コンピュータ)|割り込み]]
*[[出版-購読型モデル]]
*[[メッセージ指向ミドルウェア]]
*[[データフロープログラミング]]
*[[割り込み (コンピュータ)|割り込み]]
*[[シグナルプログラミング]]
*{{仮リンク|フローベースプログラミング|en|Flow-based programming}}
<!-- 以前の版に記載されてあった「フロー駆動型プログラミング」は出典がなく、独自研究により生み出された造語と思われるため、削除。なお、「命令型プログラミング」や「手続き型プログラミング」は、イベント駆動型プログラミングの対になる概念ではない。 -->