入力補完を考える

こんなのが作りたいってわがまま言えるのは作り始める前だけだから、自由に書いてみる。
例えば小泉って入力したら、次に何を書きたいかを予想して、
総理大臣とか首相とか純一郎とか、あるいは今日子って候補が出てきて、
みなまで打たなくても選ぶだけで済むようにするのが入力補完。
さて、小泉の後に総理大臣や今日子を補完するために、
真魚は人名辞典とか広辞苑とかを添付して連動しなきゃいけないのか?
いや、そりゃ無理だから辞書なしでどうやって候補を探すか?っていうのが問題なのね。

入力補完が当たり前についているのはDelphiやVC♯などの開発環境だ。
補完してくれるのは日本語ではなく、既に定義された変数名、関数名など。
予約語は手が勝手に動くから補完に頼らず打っちゃうんだけど、たぶん予約語もいける。
これらは辞書連動ではなく、言語を解析して参照をたどったりすることで、
補完できる単語を正確に探し出して候補としている。
よって、コメント内部などでは補完できないし、日本語とか打っても補完できない。
この方法は、専門の開発環境じゃないと無理なので、実装する気はない。
また、HTML専用エディタであれば、タグとして使える要素、それに対応する属性、
カーソル位置がタグ内かどうか、タグの先頭かどうか、ってところまで保持していれば、
ほぼ不満のない入力補完が簡単に実現出来るだろうな。
でもこれって、HTMLの補完にしか使えない物だから、
HTML編集しない人にとっては無駄にアプリを太らせる機能になっちゃうので、
なんかやるのはためらわれる。
最後の手段として、現在編集中のテキストや、開いている別のタブのテキストを元に、
使えそうな単語を集めて表示させるという手法も考えられる。
しかしこれの場合、入力補完開始の時点で随時単語集めと並べ替えをしてたら、
そのたびにガリガリ待たされるような仕様になるんじゃないかと懸念される。
そもそも、普通の入力よりも速く入力するための補完なんだから、
候補が出るのが遅いと使い物にならないわけだ。
かといって、入力補完開始以外のタイミングで単語集めをした場合は、
入力補完を必要としてない人にとって、無意味にアプリを遅くする要素となる。

補完の実装は、それによって別のところで重くなったりとかしないようにやりたいので、
補完開始の時点でドバっと処理をさせることが必須となるわけで、
であるにもかかわらず、ここが素早く処理出来なきゃ補完の存在価値はないわけで、
どうにも中途半端な実装になりそうな気がしている。
理想を言えば、全ての編集モードに個別の補完方法を用意し、
言語も解析した上で完璧な補完をやらせ、間違いまで指摘するのが一番便利のはず。
でも、その一番便利を実装してるアプリは全部起動でガリガリいうものばかり。
ガリガリ言っても、そのアプリでなきゃ編集できないっていうのが開発環境なわけで、
たかがテキストエディタの地位にいようとする真魚は、理想を捨てるべきかもな。
しかし予約語のみの補完も、テキストから単語集めるだけの補完も魅力は薄い。

あれば便利だと思うのは理想の方の補完であり、妥協の方の補完はなくてもいい。
何も犠牲にせずに実装出来そうなのは妥協の方の補完であり、理想の補完は無理。
考えてもどんな動作を実装するかまとまりもしない。

425703694X
425703694X

たぶん関連のある記事:

コメントは終了しています。