ルビ自動入力

http://ceo.sourcelab.jp/archives/97
この手のスクリプトって度々出てくるけど、どれも精度がイマイチだよね。俺が仕事で似たようなの作った時は、かなり煩雑なコードになったけど精度はこれよりマシだった。
コード見るまでもなくわかるけど、これって変換中の文字列からひらがな以外を除去して云々って処理してるでしょ。例えば「山田」さんくらいなら一発で変換できると思うけど、直前に「山だ」って変換してたら「山だ」が最初に出る可能性が高いよね。そうするとルビが「ヤマダダ」になっちゃう。変換を繰り返すとどんどん伸びる。もってけセーラー服か。
つーか大分昔の
http://d.hatena.ne.jp/kuwa/20051027/p1
これそのまんまなのか?


ソースモロ出しはまずい(そもそも手元にないが)ので大雑把に書くけど、俺が作った時のアルゴリズム

  • 色々使うので直前の状態とか適当に保持しておく
  • スペースとか変換とかF6〜F10とかの押下をチェックして変換中か否かを保持
    • 変換中の↑↓も変換キーと同様に扱う
  • 変換中はルビの更新を行わない
  • 変換以外のキー(Shiftとかは適当に判断する)が押されたら変換処理終了

大体こんな感じだったと思う。確定部分と未確定部分を分けたりしてた記憶があるけど、選択して再変換された場合とかはあんまり考慮してない。
おそらく使える環境がかなり限られちゃうんだけど、仕事だとウインドーズIEとかで限定できたりするのでまあ。


こういうのって何処までの機能として使うかによって必要な精度が変わってくるよね。↑で紹介されてるものはあくまで「補助」として使って「最後は手で訂正してね」なんだろうけど、俺が仕事でやったときは「最終的にはルビ欄は見えないように」とか言われたので、半端な精度じゃまずかった。