あるとき、出発直前に航空券を予約したことがある。

支払いに成功しました。お金は口座から差し引かれました。

でも「予約が成功しました」と表示される代わりに、画面には短い1行だけが出ていた:

「処理中です。」

そのとき最初に思ったのは、システムが遅れているんだということだった。

やるべきことはすべて終わっていた。

じゃあ、ほかに何を待つ必要があるの?

あとになって気づいたのだが、たぶんシステムは本当に遅れているわけではない。

そのtransactionをすぐに完了させたくないだけだ。

変に聞こえる。

私たちはしばしば、決定には可能性が2つしかないと思ってしまう。許可されるか、許可されないか。

しかし、実際にはもう一つ別の選択肢がある。

許可はされる。でも今ではない。

これを読むと、@NewtonProtocolについてかなり深く考えさせられる。

私が面白いと思うのは、ポリシーが“allow”か“deny”かを答えることではない。

さらに小さな疑問がある:

正当なexecutionは、要求された時点で必ずすぐに起きる必要があるのか?

必ずしもそうだとは思わない。

許可するかどうかだけが、決定の価値を決めるわけではない実行がある。

それに加えて、システムがそれを“本当に”実行すると決めるタイミングの問題でもある。

このとき、「待つ」ことはもはや遅いシステムのサインではない。

それは、決定そのものの一部になり得る。

それが、私がかなり違うと感じるポイントだ。

通常、私たちは時間をただ「ボタンを押してから完了するまでの距離」だと思いがちだ。

でも、その一方で、時間がauthorizationのパラメータになることもある。

実行が間違っているからではない。

だからといって、実行が正しい=すぐに起こるべきだ、ということにはならない。

反論してやる。

あるポリシーが常に安全のために延期を選ぶなら、体験はすぐに不快なものになる。ユーザーは、明確な理由がないのに、あらゆる操作が遅いと感じ始める。

しかし、ポリシーのデフォルトが「すべての正当なexecutionは即時に実行されなければならない」と決めているなら、システムは「allow」と「deny」の間にある、とても重要な処理の一部を自ら失ってしまう。

@NewtonProtocol から見て取りたいのは、意思決定を下す能力だけではない。

つまり、ポリシーが「いつ実行を今すぐ行うべきか」と「もう少し待ってから行うほうが合理的か」を定義する方法のこと。

私にとって、良いauthorization layerは、何が許可されるかを決めるだけではない。

それは、場合によっては“ちょうどそのタイミング”こそが、その決定の一部であると理解していることでもある。

#Newt $SPCXB $LAB $NEWT