本書における「イベント」とは何か

一般に、 イベントというと、

  • onClick
  • onTextChanged
  • onResume

のような、 UI やフレームワークが発火する通知 を思い浮かべるかもしれません。

しかし、 本書で扱う「イベント」は、 それらとは少し意味が違います。

本書におけるイベントとは、

判断が完了したことを、 構造として外部に表現するもの

です。


イベントは「判断の起点」ではない

よくある誤解として、

  • イベントが来たから判断する
  • イベントを受けて状態をチェックする

という考え方があります。

しかしこの考え方では、 判断はイベントの 後工程 に残ります。

その結果、

  • if が増える
  • 状態チェックが散らばる
  • 「このイベントは安全か?」を毎回考える

という構造になります。

これは、 イベントが判断を内包していない 状態です。


イベントは「判断が終わったこと」を表す

本書でのイベントは、 次の役割を持ちます。

  • 判断がすでに完了している
  • 前提条件はすべて満たされている
  • 境界を越えてよい状態になった

つまりイベントは、

「ここまでの判断はすべて終わりました」 という合図

です。

イベントは、 これ以上判断を進めるための材料ではありません。

判断を 終わらせた結果 です。


なぜ、イベントが明確だと境界を越えたと分かるのか

イベントが明確であるとは、

  • 判断済みの値しか持たない
  • 未検証・未確定な情報を含まない
  • そのイベントが存在するだけで前提が成立している

という状態です。

このようなイベントは、

  • 境界の内側でしか生成できず
  • 境界の外側では、前提を疑う必要がありません

そのため、

そのイベントを受け取った瞬間に、 「判断はすでに終わっている」と分かる

のです。


イベントは、境界を越えたことの通知である

境界とは、

  • 判断を行う世界
  • 前提を確認する世界

と、

  • 判断を信じてよい世界
  • 前提を疑わなくてよい世界

を分ける線でした。

イベントは、

その境界を越えたことを知らせる唯一の手段 です。

だからこそ、

  • 境界の外では if が消え
  • 状態チェックが不要になり
  • 処理は単純になる

のです。


判断が終わっていないものは、イベントではない

もしイベントが、

  • 曖昧な名前
  • 未検証の値
  • 「まだ判断が必要そうな情報」

を含んでいる場合、

そのイベントを受け取った側は、

  • 本当に安全か?
  • この状態で呼んでいいのか?

と、 再び判断を始めてしまいます。

これは、

イベントが境界を越えていない 状態です。


この章のまとめ

  • 本書におけるイベントは、UI 通知ではない
  • イベントは「判断が起きる瞬間」を表す
  • それは「判断が完了した」という合図である
  • 明確なイベントは、境界を越えたことを示す
  • イベントが曖昧だと、判断は終わらない