見出し画像

「イベントの発火」という表現を使わない方がいい理由

プログラミング、システムにおいて、イベントが発生することを"イベントが発火する"ということがあります。この表現について別の人の使い方が気になり、正しい使い方ってなんだっけ?と改めて調べていると、そもそもこの表現って使わない方がいいんじゃないかと思ってきたので、考えをシェアします。

理由① イベントの"発火"は意味が曖昧

おそらくイベントの"発火"という表現を使っている人の多くは、過去の私も含め「皆が自分と同じ意味で使っている」と思っているのでしょうが、私が調べた限りでは、2つの異なる意味で使われているように見えます

図解するとこんな感じです。

イベントの"発火"という言葉の2種類の使い方

イベントの発生を"発火"と呼ぶパターン

一つ目は、イベントが発生すること自体をイベントが"発火"したと呼ぶパターンです。ちなみに私はずっとこの意味で使ってきました。

この意味で使った場合の例文
・イベントを発火するには〇〇メソッドを使用する
・イベントが発火しない
・クリックイベントを発火させる

この意味で使っていた記事たち
イベントを発火
【JavaScript】jQueryのtriggerのように任意のイベントを発火させる
発火ってなんとなく使ってるけど、使い方あってる?エンジニアの話(この記事はどちらの意味も紹介している)

イベントによって処理が起動されることを"発火"と呼ぶパターン

二つ目は、イベントによって処理が起動されることを"発火"と呼ぶパターンです。

この意味で使った場合の例文
・ボタンを押したのに発火しない
・onClick関数が発火した
・指定されたイベントを起こすと発火する

この意味で使っていた記事たち
Qiita 発火とは?
発火ってなんとなく使ってるけど、使い方あってる?エンジニアの話(この記事はどちらの意味も紹介している)

理由② Event-driven Architectureの説明において発火と訳し得るfire, ignitionなどを使った例が見つからず、発生や生成と訳すほうが自然な場合が多い

次の理由としては、少なくともTech GiantたちのEvent-driven Architectureの説明を見ても発火と訳し得るfire, ignitionなどを使った例文が見つからないこと、また、その代わりに使われている表現の方がよりわかりやすいことです。

MicrosoftのEvent-Driven Architectureの説明

Microsoftは次のように説明しており、イベントが発生する部分は、generate で表現しています。

An event-driven architecture consists of event producers that generate a stream of events, and event consumers that listen for the events.

Microsoft, Event-driven architecture style
https://learn.microsoft.com/en-us/azure/architecture/guide/architecture-styles/event-driven

また、イベントが処理される部分は次のように表現されており、イベントがprocessされ、処理がtriggerされるとしています。

An event immediately triggers an action in the consumer.

A consumer processes a series of events

Multiple subsystems must process the same events.

Microsoft, Event-driven architecture stylehttps://learn.microsoft.com/en-us/azure/architecture/guide/arch

Google CloudのEvent-Driven Architectureの説明

Google Cloudでは、次のように説明しており、イベントが発生する部分はhappengenerateで表現しています。

It is a record of something that has happened.

events are generated by event producers

Google Cloud, Event-driven architectures
https://cloud.google.com/eventarc/docs/event-driven-architectures

また、イベントが処理される部分は次のように表現されており、イベントがprocessまたはhandleされ、処理がtriggerされるとしています。

The events trigger microservices that work together to achieve a common goal,

Events are handled asynchronously

Can your event source guarantee delivery if you need to process every single event?

AWSのEvent-Driven Architectureの説明

AWSは次のように説明しており、イベントが発生する部分は、publishで表現しています。

A producer publishes an event to the router, which filters and pushes the events to consumers.

AWS, What is an Event-Driven Architecture?
https://aws.amazon.com/event-driven-architecture/?nc1=h_ls

こちらにはイベントが処理される部分の表現はありませんでした。

イベントが発生/生成され、処理される、と言えば十分伝わる

上述の理由から、次のように表現すると、より意味がぶれず正確に伝わるのではないかと考えます。

・処理Aがイベントを生成し、処理Bがそのイベントを処理する
・処理Aによりイベントが発生し、イベントによって処理Bがトリガされる

上述の"発火"を使った例文を書き直すと次のようになります。
・イベントを発火するには〇〇メソッドを使用する
 ⇒ イベントを発生させる/生成するには〇〇メソッドを使用する
・イベントが発火しない
 ⇒ イベントが発生しない/生成されない
・クリックイベントを発火させる
 ⇒ クリックイベントを発生させる/生成する
・ボタンを押したのに発火しない
 ⇒(表現を補い)ボタンを押したのに処理がトリガされない
・onClick関数が発火した
 ⇒(表現を補い)クリックイベントによってonClick関数がトリガされた
 ⇒
(表現を補い)クリックイベントがonClick関数によって処理された
・指定されたイベントを起こすと発火する
 ⇒ 指定されたイベントによってトリガされる
 ⇒ 指定されたイベントを処理する

以上です。

この記事が気に入ったらサポートをしてみませんか?