Windows用の日本語入力エンジン「awase」を、たった一人で作った記録。1日で動くプロトタイプはできた。しかし、正しく動くようになるまでには、そこから長い道のりを要した。理由はひとつ、観測した状態と、いま実行してよい状態は同じではなかったからだ。 Windowsは自分のIMEの状態すら正直に教えてくれない。ブラウザは非同期の裏でこっそり順序を入れ替える。競合するIMEが何をしているかは、公式には知る方法がない。LINEは自分自身の合成イベントに怯えて偽の入力を作り出す。固定の待機時間をいくら調整しても、根本的には直らない。 本書は、これら一つひとつの「工夫」を、症状・仮説・実験・発見・設計という形で追った記録である。最終的にたどり着いたのは「観測は状態ではない、鮮度は一度検査して終わりではなく、実行に移す直前に再検証される契約である」という設計原則だった。 終章では、この原則がIME固有の話ではないことを示すため、著者が別に設計しているロボット向けアプリケーションランタイム(Go2 Runtime)を検証する。そこにも、同じ設計上の空白が見つかった。