【いべんとくどう】

イベント駆動 とは?

最終更新:
💡 出来事をきっかけに、登録した処理を呼び出す設計

プログラムの制御の流れをイベント(クリック・データ受信・タイマーなど)を基点にする設計スタイル。イベントが発生したときに対応するハンドラが呼ばれる。

📌 このページのポイント
イベント駆動:出来事と処理を対応付ける 準備:clickにハンドラを登録 addEventListenerなど 画面のボタン 表示を変更 click発生 ハンドラ 表示を変える 処理を実行 イベント駆動 ≠ 必ず非同期 Node.jsのEventEmitterは emit時にリスナーを同期的に呼ぶ 分散配信の順序・重複・保証は別途確認
上段はブラウザの例。イベント駆動だけでは、同期・非同期やメッセージの配信保証は決まりません。
ひよこ ひよこ
イベント駆動って普通のプログラムと何が違うの?
ペンギン先生 ペンギン先生
「クリックされたら表示を変える」「データが届いたら処理する」のように、出来事と処理を対応付ける設計だよ。呼び出された処理の中では上から順に命令を実行できるので、手続き型と両立するんだ
ひよこ ひよこ
Webブラウザではどう使うの?
ペンギン先生 ペンギン先生
ボタンのclickイベントにaddEventListenerで関数を登録する例があるよ。押されたら、その関数で表示を変える。キーボード入力やページの読み込み完了もイベントになるんだ
ひよこ ひよこ
イベント駆動なら、全部が非同期で動くの?
ペンギン先生 ペンギン先生
そうとは限らないよ。Node.jsのEventEmitterは、emitしたときに登録されたリスナーを同期的に呼ぶ。後で実行する処理を組み合わせることはできるけれど、イベント駆動と非同期は別の性質なんだ
ひよこ ひよこ
イベント駆動の「疎結合」って?
ペンギン先生 ペンギン先生
発行側が受信側の細かい実装を直接呼び出さず、イベントを介してつなげられることだよ。ただし、イベント名やデータ形式、意味への依存は残る。変更しても影響がゼロになるわけではないんだ
ひよこ ひよこ
Pub/Subって同じもの?
ペンギン先生 ペンギン先生
イベント駆動は広い設計の考え方で、Pub/Subは発行者から購読者へメッセージを届けるパターンだよ。分散システムで使うなら、配信保証や順序、再配信による重複への対処を確認する。「イベントだから必ず届く」とは限らないんだ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「イベント駆動」って出てきたら「イベントをきっかけに動く設計スタイル」と思えばだいたいOK!
📖 おまけ:英語の意味
「Event-Driven」 = イベントに駆動される・イベントで動く
💬 「Event(出来事・イベント)」+「Driven(〜に駆動される)」。イベントがプログラムの動きを「駆動する」というニュアンス

参考資料

← 用語集にもどる