Event-driven architecture

脳の動き方はイベント駆動
脳の動き方は非同期型で、かつイベント駆動らしい

脳の基本的な構成要素はneuron
脳の基本的な構成要素はneuron(神経細胞)
そして、Neuronの動作はevent-driven的。
Neuronは、他の多数のneuronからsignalを受け取る
これらのsignalには、neuronを興奮させるものと、抑制するものがある
Neuronは受け取ったsignalを蓄積し、その合計がある一定のthreshold(閾値)を超えた瞬間に発火(fire)する
この発火とは、action potential(活動電位)と呼ばれる現象のこと
これは、neuronが一瞬だけ放つ、強いelectricなspike(波)を指す
普段は静かにしているのに、条件が揃うと一気にエネルギーを放出し、このspikeが次のneuronに情報を伝えるsignalになる、というイメージ
そして注目したいのが、この発火が「全か無か」の法則に従う点
Thresholdに達しなければ何も起こらず、達した瞬間にaction potentialによる完全な形のspikeを発生させる

※
もちろん、脳の仕組みを完全にevent-drivenモデルだけで説明することはできない
けれどそういうモデルで考えた時に普段ソフトウェアとかのアーキテクチャ作りで考えることと共通点をもてて面白いのだ

脳ではすべての neuron が常に活動しているわけではない
だから省エネ..?
イベント駆動モデルだと、入力信号があるとか条件をみたさなければ目を覚さない
つまり、活動がないときはほとんどエネルギーを使わない → 省エネ
↑
省エネにここで結びつけようとしたけれど、実際、脳は活動してなくても、常にものすごいエネルギー使っているらしい。実際には、neuron が「いつでも発火できる」状態をキープするだけで、膨大なenergyが必要。脳が体重のわずか2%でありながら体全体のエネルギーの約20%を消費するって話そう言えばよく聞く。
イベント駆動じゃなくても待機コストはかかる
でも考えたら、イベント駆動じゃなくても待機コストはかかるよなーって想像する。
深掘りしてみたいところだけど一旦その上で考えると、
「どうせかかる待機コスト」を前提とした上で、いかに通信のエネルギーを最適化するか、という問いに対する生物の賢い答えが、イベント駆動の仕組みだった
だからイベント駆動は効率のいいエネルギーの使い方に貢献しているのは確かである。ただ、活動がないときはエネルギーを使わないというのは間違っていて、あくまでその待機コストを払い続けている基盤の上での運用コストの効率の話でイベント駆動があるってはなしなのかな、と。
参考:

脳のエネルギー消費の大部分は、neuronが活動していない状態のとき
脳の莫大な「待機コスト」
脳のneuronって、ほとんどの時間、「活動休止電位(resting potential)」っていう安定した電気的な状態をキープしてるらしく、これって、まさに「いつでもGOサイン出せるよ!」っていうスタンバイ状態のことなんだけど、この状態を保つのが超大変..みたいな話

非同期イベント駆動型(Asynchronous Event-Driven)
イベントが発生したときにその場で処理せずに、後で処理を回すスタイル。

λ計算:すべては関数
イベント駆動は「アーキテクチャの設計思想」、λ計算は「計算の理論的基礎」であり、生まれた背景や目的は異なる..って話だけど前にイベント駆動とλ計算の関係性について考えたとき結構面白かったのだけど思い出す(記憶の整理)のにちょっと時間がかかるので WIP
データも操作もぜーんぶ関数で表現されるって考えがラムダ計算。ラムダ計算では、データも操作も全部関数で表現される。この関数でラップできるってところが、イベント駆動の世界のイベントの扱い方と相性がいいって話だった気がするのだ。

λ計算(Lambda Calculus)は一回ちゃんと勉強したいくらい面白い世界なのだ