IMEは平気で嘘をつく

川西智也

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

目次

  1. はじめに:1日で動いた。しかし、それで終わりではなかった
  2. 第1章:なぜ親指シフトを自分で作るのか
  3. 第2章:1日でできたプロトタイプ
  4. 第3章:「よかった」が「よがんた」になる
  5. 第4章:最初の一文字が化ける
  6. 第5章:「わからない」を値にする
  7. 第6章:過去から届く観測
  8. 第7章:敵プロセスを外側から観測する
  9. 第8章:フィルタでは勝てない
  10. 第9章:増殖したFSMを解体する
  11. 第10章:意図・観測・遷移・障壁
  12. 第11章:エポック
  13. 第12章:それでも壊れる条件
  14. 終章:IMEからロボットへ
  15. 付録