画像ツール一覧

イベント駆動型

Event-Driven

DEVELOPMENT

イベント駆動は、操作・通知・状態変化などのイベントに対応する処理を登録し、発生に応じて実行する設計です。UIのイベント処理から分散システムまで使われますが、通知方式や実行順序は基盤ごとに異なります。

🐾 猫で例えると?

遠くの方に何かを発見したような顔をするアメショ
リラックスした待機状態から、イベントを察知した瞬間のアメショ

腕をダラーンと伸ばし、遠くへ顔を向けるアメショ。「おやつ袋の音がしたら、そちらを向く」と想像してみましょう。この音がイベント(出来事)、それをきっかけに振り向く動作が対応する処理です。イベント駆動型も、クリックや通信の完了などをきっかけに、登録しておいた処理を呼び出します。

🐾 PR

💻 アプリ・Web開発における「イベント駆動型」とは?

利用側が短い間隔で状態を問い合わせる代わりに、通知を受け取る方式を選べる場合があります。ただしイベント待ちの内部実装にも監視やポーリングが使われることがあり、イベント駆動だからCPUも通信も全く消費しない、という意味ではありません。

Webアプリの世界では、JavaScriptがこのイベント駆動の代表格です。クリック、マウスの移動、通信の完了など、ブラウザ上で発生するあらゆる出来事を「イベント」として捉え、それに対応するプログラム(イベントハンドラ)を実行します。この仕組みのおかげで、私たちは非常にレスポンスの速いアプリを実現できています。

⚠️ イベント駆動型の仕組みと注意点

効率的な一方で、イベント駆動には複雑さを増しやすいという側面もあります。

// #cat-buttonがあるページを想定
const button = document.getElementById("cat-button");
function onCatClick() {
  console.log("猫のボタンがクリックされました");
}
if (button) button.addEventListener("click", onCatClick);
// この画面の管理を終えるときに呼ぶ後始末
function dispose() {
  if (button) button.removeEventListener("click", onCatClick);
}

document全体にclickを登録すると、猫以外の場所のクリックも届く場合があります。この例は対象ボタンを指定しています。DOMイベントには伝播の仕組みもあるため、どこで発生したかを示すtargetと、登録先のcurrentTargetを区別すると切り分けやすくなります。

🛠️ イベント駆動と賢く付き合うためのポイント

イベント駆動をうまく使いこなすには、その処理の「責任」を明確にすることが大切です。

おやつ袋の音に反応するアメショのように、イベント駆動では出来事をきっかけに処理を進めます。イベントが続けて届いた場合や順番が変わる場合にも、同じ操作を二重に実行しないか、状態が食い違わないかを確認することが大切です。