JA
Rails 8.1 でStructured Event Reportingという新機能が導入されました。 これはRailsのアプリケーションレイヤにpub/subの仕組みを導入するという機能です。
Rails.event.notify()でなんらかの「イベント」が起こったことを通知でき、通知されたイベントは事前に登録されているサブスクライバで処理されます。典型的には、サービス内で発生したコンバージョンのログ取得などに役立つでしょう。
さらに、イベントという語はDB論理設計にも現れます。コトを表す「イベントエンティティ」ですね。CRUDのシンプルさを実アプリケーションに適用するために重要な概念です。
他方で、アプリケーション設計における「イベント」といえば、イベント駆動アーキテクチャ(EDA)も想起されます。EDAは、システム内で発生した状態の変化すなわちイベントを起点にして処理を動作させる設計パターンです。話者は、RailsでこのEDAを手軽に導入する手段としても、このRails.eventに可能性を感じています。
本トークでは、これが同じ「イベント」と呼ばれる理由を考察し、「サービスで大事なことが起きた」ことを扱う標準のインターフェースが導入されたことを讃えながら、Structured Event Reportingの発展的な利用法を紹介します。