雅叙園でのGoogle漢字入力のセミナー

事前に登録してたのに、立ち見させられた(^^;
登録いみねーじゃん。整理券を配って欲しいよ。


ま、それは置いておいて。
言語モデルとかの話はほぼなく、アプリの堅牢性とかセキュリティとか辞書に圧縮とかそのへんの話でした
ま、言語モデルうんぬんの話をしても一般的なセミナーで意味不明かもしれないし。
概要とか内容はちゃんとした資料がネットにあると思うので、
自己メモ程度に

  • 漢字入力はDLLで特権モードで動いているので脆弱性を狙われやすい(歴史があり聖域だった)→それは困る
  • 漢字入力はDLLなのでちょっとでも不具合があると落ちやすい→落ちるのは絶対だめだめだめだめ
  • 漢字入力は歴史があり、膨大な機能があるので、落ちないセキュアなものを作るのは困難というか不可能


発想の転換。プログラムは落ちてもOK。脆弱性があってもOK

  • DLLの部分はなにもさせず最小に止め、プロセス間通信で別プロセスに漢字変換させる(DLL部分はステートレス)
  • 漢字変換プロセスが落ちたとしても、DLL部分がキー入力履歴を憶えておいて、ステートを復元させる
  • 変換プロセスの部分はsandboxに入れることで、バグで脆弱性があっても悪さができないようにする


特にプロセスが落ちても大丈夫な例では、4秒に一回プロセスをキルするバッチを常駐した状態でも、
漢字変換が問題なくできる様子を披露していた


あと、漢字辞書がある程度でかいけど、WinXPではバックグラウンドアプリのデータはメモリー
なかなか載せて貰えないので遅いという問題を、
OS起動時に動くキャッシュアプリを使うことで解決(配布中の開発版GoolgeImeに既に搭載している)
WinVistaやWin7では、アプリの仕様履歴を見て、メモリに何を載せるか判断してくれるので、
問題ないらしい



最後、辞書の圧縮の話
ハフマン圧縮とか色々と工夫して38MBぐらいになってるらしい。圧縮率忘れた。
工夫しているのが、あえて、実行ファイルと辞書を一つのバイナリに結合している。
これは、オンライン自動アップデートをするときに、一体化させるため。
そのため、辞書の形式や圧縮方法を突然変えてもOK
(辞書とアプリを分離すると、辞書の形式という互換性が出てしまう)


全然興味ない話だったわw