日本語環境でのスニペットツールの問題、今回はキーワードの制限について説明します。
スニペットツールのキーワード
スニペットツールの基本的な操作手順は次の2ステップになります。
- キーワードを入れる
- キーワードに対応した定型文が挿入される
このキーワードは定型文を想起しやすくて短いものが理想的です。例えば「おはようございます」であれば「おは(oha)」などが考えられます。実際に日常生活でも「おは」と言えば「おはようございます」といった意味で使われることもあります。なんの制限もなければ、このようなキーワードが自然で覚えやすいのですが、日本語環境では問題が発生します。
キーワードと定型文挿入の間
キーワードを入れて定型文が挿入されるという動作をもう少し正確に言うと
- キーワードを入れる
- キーワードを削除する
- キーワードに対応した定型文が挿入される
のように、キーワードを削除するという動作が入っています。今回の例の「おは(oha)」であれば、「oha」を入力してから3文字削除してから「おはようございます」を挿入することになります。しかし、3文字削除というのはIMEがオフのときに「oha」と入力されているので、その3文字を削除するわけです。
これがIMEがオンのときにはどうなるでしょうか?キーワードは「おは」となるので2文字だけ削除しなければなりません。つまり、IMEがオンのときとオフのときでは違った文字数を削除しないといけません。
日本語入力のキーワード問題
スニペットツールの多くは日本語環境を考慮していないので「おは(oha)」の場合は3文字削除するというものがほとんどです。そうなると、入力したのは2文字(おは)なのに3文字削除してしまうので、余分に1文字削除してしまいます。つまりローマ字入力でキーワードを子音+母音で指定すると子音+母音で1文字になるために、余分に文字が削除されるという問題があります。
これまでの解決方法
このような問題のこれまでの解決方法は次のようなものがあります。
(1)子音+母音を使わない
この問題は子音+母音の組み合わせにあります。したがって子音の後には母音を続けないようなキーワードを使うとか、記号を入れることで「かな」にならないようにすることで回避する解決策があります。今回の場合では「おは(oha)」というキーワードの代わりに「oh」をキーワードにするといった方法です。
(2)先頭を大文字にする
子音+母音を使わない方法の問題点は自然なキーワードにならないので覚えにくかったり入力しにくくなるという点です。この点を解決するために入力する先頭を大文字にするという方法があります。今回の場合では「おは(oha)」というキーワードの代わりに「Oha」をキーワードにするといった方法です。IMEの入力では最初に大文字を入力すると、その後はかなに変換せずにアルファベットがそのまま入力されます。「Oha」の場合は「おは」とならずに「Oha」が入力されます。この方法だと入力した文字数は必ず打鍵数と合致します。
この方法はキーワードを覚えやすいという利点がありますが、先頭を大文字にするためにShiftキーを押す必要があり、少し入力しにくくなります。しかし、非常に簡単な方法で、しかもキーワードを覚えやすいので良い解決方法だと思います。
azasuの解決方法
私も先頭を大文字にするという解決方法をこれまで使っていましたが、余分にShiftキーを押す必要があるのはずっと気になっていました。今回azasuを開発するに当たってこの問題をどう解決しようかと悩みましたが、ある日突然アイデアが浮かびました。「oha」と入力したときに「おは」にならずに「oha」になれば良いのですが…
と考えていると、IMEのキー操作のF9キーを使えば良いことに気が付きました。IMEがオンで「おは」と入力している状態でF9キーを押すと「oha」に変換されます。つまりIMEがオフのときと同じ3文字を入力したことにるので、IMEがオンのときでもオフのときでも打鍵数が同じになるので、その文字数だけ削除すれば良いわけです。手順は次のようになります。
- IMEの状態を調べる
- オンのときはF9キーを押す。オフのときは何もしない
- 打鍵数だけ文字を消す
この操作をキーワードにマッチしたときに行って定型文を挿入します。
azasuというツールの名前も「azasu」と入力すれば「ありがとうございます」という定型文を挿入することができるという意味があります。これで、IMEがオンのときでもオフのときでも素直なキーワードにより定型文を挿入することができるようになりました。
まとめ
「確実に動作し、できるだけ制限を少なくし、自然に定型文を素早く挿入できるようにする」といった狙いをazasuでは次のように解決しました。
- 誤発動を防ぐ → shiftキーを確定キーにする
- 履歴を壊さないでクリップボード経由で定型文を挿入する
- 自然なキーワードを使える
この特長を実装できたので、かなり満足していますが、もっと便利なツールになるように改善を続けていきたいと考えていますので、ご要望などありましたらメールやコメントをお願いします。