一般に「検索」と「入力」は異なるものだと考えられている。 検索というとGoogle検索やデスクトップ検索を連想するだろうし、 入力というとキーボードや日本語入力システムを連想することが多いだろう。 しかし検索と入力は実は似たようなものである。

下図は私が公開している Gyaim というMac用のIMEである。 「艦これ」という単語を入力しようとして「k」「a」「n」...と順番にタイプすると、 「k」で始まる単語、「ka」で始まる単語が順番に候補として表示される。

Gyaimは入力システムであるが、 動作は単純であり、 ユーザが入力した文字列にマッチする単語を辞書から検索して候補として表示して 選択可能にしているだけである。 つまり、比較的単純な検索システムを入力システムとして利用しているわけで、 検索システムと入力システムは関連が深いものだということができる。 「艦これ」という単語は辞書に登録されていないためここでは候補として表示されていない。

Gyaimで入力したい単語が候補に出てこなかった場合、 「.」キーを押すとネット上のGoogleIME APIを呼び出して候補に加えるようになっている。 「kankore」と入力した後で「.」を押すと以下のように「艦これ」が表示されるのだが、 ここで「艦これ」を選択して確定すると「艦これ」という単語が「kankore」という読みで辞書に登録されるため、 以降は「ka」などと入力するだけで「艦これ」が候補に出て選択できるようになる。


つまり、 バックグラウンドで検索を行ないながら入力作業をしているだけで単語が自動的に辞書に登録されて検索/入力可能になっていることになる。 このように、検索/入力/登録を統合した使いやすいインタフェースを作ることは可能なのだが、 入力作業と登録作業が完全に別物になっているシステムが多い気がする。

下図は「POBox for Emacs」の migemo 機能を使って「艦これ」をローマ字インクリメンタル検索しているところである。 「艦これ」は「kankore」という読みで登録されており、 「簡単」は「kantan」という読みで登録されているので、 検索文字列として「k」「a」「n」を入力していくと同時に 「検索」「簡単」などの単語が順番にマッチしてハイライトされている。 「xxx」という読みで登録された単語は必ず「xxx」という入力検索可能になっているわけで、 検索/入力/登録が完全に統合されていることになる。

以上、Gyazo GIFのステマでした