覚えたものを素早く入力することを目的としたazasuですが、そのためには確実に動作し、できるだけ制限を少なくし、自然に定型文を素早く挿入できるようにする。これがazasuの狙いです。では、具体的にazasuでどのような工夫をしているかについて説明します。
1 誤発動とこれまでの解決方法
1.1 誤発動とは
誤発動はスニペットツールの最大の問題点といえます。意図しないのに定型文が挿入されてしまい、それを削除して入力しなおす…入力を効率化するためのツールなのにかえって手間がかかるというのは本末転倒です。ではなぜ誤発動という望ましくないことが起きてしまうのでしょうか?
それは、スニペットツールの基本的な操作手順に原因があります。次はスニペットツールの基本的な操作手順です。
- キーワードを入れる
- キーワードに対応した定型文が挿入される
これが一番原始的な操作手順で、このように動作できるようにしているスニペットツールも多いです。ですが、キーワードを入れると即座に定型文が挿入されるというのでは流石に意図せずに定型文が挿入されて困るというのは想像できると思います。
例えばキーワード「oha」に対して「おはようございます」という定型文を登録したとします。「oha」の3打鍵で「ohayougozaimasu」15打鍵の定型文を挿入できるので、かなりの効率化になりますが…このようなキーワードでは誤発動が頻発してしまいます。
例えば、この記事で「かえって手間がかかるというのは」という部分があります。「というのは」を入力するときは「toiunoha」と入力しているので「というnおはようございます」と誤発動してしまいます。実用的にスニペットツールを使うのは、この誤発動との戦いといってもいいぐらい大きな問題です。では、今までのスニペットツールがどのようにして誤発動を防いでいるのか次に説明します。
1.2 プレフィックスをつける
1つ目の解決策はキーワードの前に文字(プレフィックス)をつけて「ここから先がキーワードです」とスニペットツールに教える方法です。
例えばキーワードの最初に「;」(セミコロン)をつけることで、普通の入力では起きないようにして誤発動を防ぐというわけです。さきほどの例であれば「;oha」というキーワードにするので、めったなことでは誤発動しなくなります。確かに誤発動を防ぐことができる実用的な方法ですが、これには次の2つの欠点があります。
- 余計な1打鍵が必要
- 誤発動を完全には防ぐことができない
1つ目はこの方法自体なので仕方ありません。また誤発動もプレフィックスを工夫すれば滅多に起きないので実用的ではありますが、完璧な方法とは言えません。
1.3 確定キーを押す
2つ目の解決策はキーワードにマッチしても即座に定型文を挿入するのではなく、確定キーを押すことで定型文を挿入する方法です。IMEの確定操作でEnterキーを押すのとよく似ています。
先程の例であれば「oha」だけでは定型文は挿入されずEnterキーを押すことにより「おはようございます」と入力されます。この方法はプレフィックスの逆のような方法で誤発動もある程度防ぐことができます。更に「oha」と入力した段階で「おはようございます」と入力されるというヒントを表示することにより、キーワードにマッチしたことを確認して定型文を挿入することができるという利点もあります。
ただし、この例のように「Enter」キーを確定キーにするのはお勧めできません。IMEの確定とかぶるのでIMEの確定のつもりでスニペットの定型文を挿入してしまうという誤発動が頻発してしまいます。「TAB」キーやセミコロンなど、あまり頻繁に使わないキーを指定することが多いようです。
さて、この方法はヒントも表示できるのでかなり良い方法ですが、誤発動を完全には防ぐことができないというプレフィックスの方法と同じ欠点があります。
2 azasuの解決方法
azasuも確定キーを押すという方法で誤発動を防ぐようにしています。「なんだ、今までのツールと同じじゃないか」と思われたでしょう。確かに確定キーを押すという解決方法ですが、誤発動はほぼ完全に防ぐことができるようになりました。
それは確定キーにShiftキーを使用するようにしたからです。つまりキーワードを入れた後にShiftキーを押すことにより確定になり定型文が挿入されます。先程の例であれば「oha」と入力した後にShiftキーを軽く押すことで「おはようございます」と入力されます。
確定キーをShiftキーにしただけですが、文字を入力している途中に単独でShiftキーを押すことはありません。Shiftキーを押すときは必ずShiftキーを押しながら別のキーを押すという操作になります。つまりShiftキーを単独押しするという確定操作は通常のキー入力では原理的に起きないので誤発動をほぼ完全に防ぐことができるようになります。
では、なぜ今までのツールがShiftキー単独押しを確定操作として使わなかったかというと、単純にShiftキーを確定キーとして指定すると、本来のShiftキーの機能が失われるからです。このことを回避するにはShiftキーを次のように2つの役割を持たせるようにしないといけません。
- Shiftキーを単独で押す
- Shiftキーを押しながら他のキーを押す(本来のShiftキー)
この2つの機能をShiftキーに持たせるためにazasuではShiftキーをチョンと押したときだけ確定操作にするようにしました。このチョンというのはShiftキーだけを押して離すを0.2秒以内程度に行うことで判別しています。この方法はazasuを開発している最終段階で思いつきました。おそらくこの方法が最も誤発動しない方法だと思います。
azasuでは、他に「変換」「無変換」キーを確定キーとして指定できるようにしています。このキーは日本語配列のキーボードにしかないのでUS配列の場合はShiftキーのみが確定キーとなります。「変換」「無変換」キーはあまり使われていないので、現状では単純に確定キーとして指定しているだけなので本来の「変換」「無変換」の機能は失われます。ただ、このキーを使いたいという意見もいただいたので、次期バージョンではShiftキーと同じくチョンと押すと確定キーとなるようにしようと思います。
次回は…
次回の記事は、スニペットツールでの定型文挿入方法の問題について、どのようにazasuで工夫をしたかを説明します。