7月第二週。今週の三編は一本の線でつながる — 画面は外から来て、権限は中で止める。
今週の Signal
画面が配送される。「画面はサーバーから届く」はクライアントに UI のコードを一行も置かない。サーバーが定義を出し、ランタイムが描く。定義を直せば再ビルドも再インストールも無しに次の接続で変わる。
ボタンを隠すのはセキュリティではない。「誰がこれを押していいのか」は権限を画面ではなく 道具の側 に置く。画面でボタンを隠すのは礼儀で、実際に止めるのは道具が拒むことだ。画面は JSON で、JSON はデプロイのたびに変わる — 最後に受け止めるのは常にサーバーでなければならない。
言葉ではなく数字で返した。「画面の層だけが融ける」は創刊号と2月の二つのビジョン記事をひとつに合わせ、当時測らずに書いた数字を全部実測に置き換えた。画面定義は本当に小さいのか — 656 バイト。修正は本当に即座に届くのか — 83 ミリ秒、ビルド 0 回。
道具・パッケージのメモ
リソースを登録する順序に罠がひとつある。クライアントが問い合わせられるものは、ハードウェアやスキャンの応答に依存してはならない。 画面リソースを機器スキャンの後に登録すると、その往復の間に繋いだクライアントが Resource not found を受け取る。ハードウェアが速ければ通り、遅ければ失敗する — いちばん捕まえたくない種類の欠陥だ。登録を先に(同期)、接続、そのあとスキャン。
短い考え
「画面はサーバーがくれる」という文は楽そうに見えて、責任を移す。画面がクライアントの外に出た瞬間、何を画面に載せるかが、そのまま何を許すかになる。 だから今週の二編目が必要だった。定義を出す側は、同時に拒むことができねばならない。
来週
二重に予約が入る問題、再試行が生む重複、そしてドメインの判断が通訳なしに規則になる場所へ行く。
makemind.dev 「更新」— 週に一度、その週に何が上がり、作りながら何に引っかかったか。