AutoJudgクラス

友人にプログラミングのこと書かれてもつまらんっヽ(`Д´)ノ
とか言われたけど、ここは自分の趣味について書くところなのだ。


で、ローマ字の自動認識についてまた考察。
自動認識をするタイピングソフトで僕の頭に浮かぶのは

  1. 美佳タイプ
  2. タイプウェル
  3. The Typing Of The Dead
  4. FastType


美佳タイプはローマ字自動認識をある程度サポートしている。「し」の「si,shi」、「ふ」の「fu,hu」、「じ」の「ji,zi」などである。しかし、「ん」は「nn」固定である。他にも、「か行」や「さ行」で「c」を使うような最適化を気にする上級者にとっては少々使いづらい仕様かもしれない。


タイプウェルはあらかじめ自動認識できるものを制限している(上とは違い、こういう表現が合うと思う)。「った」等の場合には「ltu」を使えないように、「しゃ」なども「lya」を禁止して「shaかsya」に限定している。初心者が効率的な入力方法を習得できるように、かつ上級者の高速入力をサポートできるような自動認識になっている。


TODは基本的にすべてサポートか?詳しく覚えてないのにここに書くのもなんだが、僕の中の印象では「んぬ」なども「nnu」と入力できるような、変則的な自動認識をサポートしていることだ。


そして、FastTypeはローマ字自動認識についてはこの中で一番自由度が高い。基本はすべてサポート・・・と思いきや「か、く、こ」が「ka,ku,ko」だけだった。しかし、ローマ字対応表をユーザが追加・書き換えできるので自動認識候補を自由に変える事が出来る。


以上あげた4つのように自動認識にもある程度の幅が存在する。FastTypeのような自由度の高さも魅力的だが、やはりタッチタイプ習得にはタイプウェルの制限付き自動認識がもっとも良いと思う。これは、「っしゃ」はこういう風に打てますよ、こんな風にも打てますよ。と様々な手法を提供するのが混乱の元につながるからだ。


と、前置きをした上で、AutoJudgクラスではSetFlag()というメンバ関数を用意して自動認識のレベルをあらかじめ決められた形でサポートする形式にしてみた。
例えば
NO_LTU //「っ」の単独入力「ltu、xtu」を禁止、「kka」のみ許可
ONLY_NN //「ん」は常に「nn」固定
LAST_NN //文字列の最後に来た「ん」だけは常に「nn、xn」2回に固定
NO_LWORD //「ゃ:lya」などの拗音単独入力を禁止、「っ」も含む。「sha、sya」の形のみ許可
などなど。


重要なのはNO_LWORDで、これでタイプウェル形式をサポートできる。ローマ字の変換速度にもほとんど影響が出ないので、なかなか良い感じにできた。
Borland C Compiler、Visual C++.NET両方で動作確認。めでたいめでたい。
あとは、実際に何か作るだけである。