【いべんとくどう】

イベント駆動 とは?

💡 「何かが起きたら動く」受け身型のプログラム設計
📌 このページのポイント
イベント駆動アーキテクチャ 同期型(従来) クライアント リクエスト サービスA リクエスト サービスB ← 待機が発生 密結合 イベント駆動型 イベント ソース Event Event Event Bus Queue / Broker Handler A Handler B Handler C 独立して 並行処理 ✓ 疎結合 ✓ 非同期 ✓ スケーラブル イベントを介して各サービスが独立して動作 → 柔軟で拡張しやすい設計
イベント駆動アーキテクチャ
ひよこ ひよこ

イベント駆動って普通のプログラムと何が違うの?

ペンギン先生 ペンギン先生

普通の(手続き型の)プログラムは上から下に順番に実行される。イベント駆動は「ボタンがクリックされたら処理する」「データが来たら処理する」という形で、何かが起きるまで待機して、起きたら動く。

ひよこ ひよこ

Webブラウザがイベント駆動なの?

ペンギン先生 ペンギン先生

そう。ページが読み込まれたらonload、クリックしたらonclick、キーを押したらonkeydown。ユーザーの操作やネットワークの応答がイベントとして飛んできて、登録したリスナーが呼ばれる。GUIアプリの多くがこの仕組みで動いてる。

ひよこ ひよこ

イベント駆動の「疎結合」って?

ペンギン先生 ペンギン先生

イベントを発行する側と受け取る側が直接知り合わなくていいから疎結合になる。発行者は「こういうイベントが起きたよ」と投げるだけ。受け取る側は「このイベントが来たら動く」と登録するだけ。両者を直接繋ぐ必要がないから、どちらかを変更しても影響が少ない。

ひよこ ひよこ

イベント駆動とPub/Subって同じ?

ペンギン先生 ペンギン先生

考え方は近いけど使われる文脈が違う。イベント駆動は設計のスタイル全般を指す。Pub/Sub(Publish-Subscribe)はメッセージングシステムのパターンで、KafkaやRabbitMQのような分散システムに使われることが多い。同期的なイベントリスナーと、非同期の分散メッセージングではスケールも特性も全然違って、後者では「イベントが消えない(少なくとも一度は配信される)」などの保証が設計の核心になるんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
イベント駆動って出てきたら「イベントをきっかけに動く設計スタイル」と思えばだいたいOK!
📖 おまけ:英語の意味
「Event-Driven」 = イベントに駆動される・イベントで動く
💬 「Event(出来事・イベント)」+「Driven(〜に駆動される)」。イベントがプログラムの動きを「駆動する」というニュアンス
← 用語集にもどる