データ発見隊

第3回 予測インターフェース

この記事を読むのに必要な時間:およそ 5 分

はじめに

「よろしく」と入力すると「お願い」が候補に出るような「予測入力方式」が,携帯電話などで最近広く使われています。ユーザの次の行動を予測するようなシステムは「予測インタフェース」と呼ばれており,昔からさまざまなシステムが研究されてきています。

ユーザの行動を予測する方法はいろいろなものが考えられます。上の例の場合は「よろしくお願い申しあげます」という表現が世の中でよく利用されているという統計情報を利用して予測を行ったものですが,ユーザの行動履歴や現在のコンテキストなどの情報を利用することもできます。筆者の場合は「増井」という名前を入力する機会が多いため「ま」と入力すると「増井」が予測されます。時刻や位置情報のようなコンテキストを利用できる場合,渋谷で駅名検索するときは「し」から「渋谷」を予測し,新宿で検索するときは「し」から「新宿」を予測するといったこともできるでしょう。⁠123」から「4」を予測したり,⁠青森」⁠秋田」から「岩手」を予測したりといった高度な予測も可能かもしれません。

予測インタフェースが成功する要件

予測インタフェースは次のような特徴を持っている必要があります。

予測の精度が高いこと

システムの予測結果がユーザの期待と一致しないことが多ければ予測システムを利用しようとは思わないでしょう。次の入力単語を完全に予測することは不可能ですが,候補をいくつかリストすればその中に含まれる可能性が高くなるので予測の精度が上がったように感じられます。

予測により作業が邪魔されないこと

予測のための計算に時間がかかったり,予測をキャンセルするために余計な手間がかかることが多いと,予測インタフェースを使わないほうがマシだと判断されてしまいます。

予測の実行に手間がかからないこと

システムが正しい予測を行ったとき,最小限の手間でそれを採用できるようにする必要があります。手間がかかると予測を行った意味がなくなってしまいます。

予測に失敗したとき被害をこうむらないこと

入力単語を予測するような場合は予測に失敗してもそれほど困ることはありませんが,大きな編集操作を誤って予測して実行してしまったような場合,苦労して実行結果を修正しなければならないという可能性があります。予測インタフェースのために一度でも大きな被害にあえば,二度と使う気にはならないでしょう。


上述の条件をすべて満たすシステムは多くないため,予測インタフェースはまだ広く使われているとは言えませんが,入力作業の効率化に予測インタフェースを利用する例は増えてきています。最近のブラウザでは,URL入力欄に文字列を入力すると,それを含むURLを候補として表示してくれることが多くなっていますが,これはユーザのWebページ閲覧履歴を利用した予測インタフェースです。また,検索エンジンの検索枠に文字を入力すると関連した検索語を提案してくれる「Google Suggest」のような機能が使えるようになっていますが,これはあらゆるユーザの検索履歴やGoogleのデータベースを利用した予測インタフェースと言えるでしょう。

Dynamic Macro

ここでは,便利な予測インタフェースとして,テキストエディタ上のルーチンワークを効率化する拙作のDynamic Macroを紹介します。

テキストエディタ上で同じような編集操作を繰り返すことがよくあります。よくある例として次のようなものがあるでしょう。

  • ブロックをまとめて字下げする
  • 変数名を変更する
  • 連続する行にコメント記号を挿入する

上に挙げた編集操作はすべて同じ編集操作の繰り返しになっています。「行頭に移動⇒空白を挿入⇒次の行に移動」という操作の繰り返しですし,「変数名を検索⇒変数を削除⇒別の変数名を挿入」という操作の繰り返しです。

Emacsの場合,これらの作業に関してindentregion)⁠replace-string)⁠comment-regionのような関数が用意されており注1)⁠ほかのエディタでも同様の機能が用意されていることが多いと思います。しかし,そのような機能が存在することを知らなければ使えませんし,使い方を思い出すのに時間がかかることもあります。

Dynamic Macroは,ユーザが同じ操作を繰り返したあとで「繰り返しキー」注2を押すと,繰り返されたキー操作を再実行できるシステムです。の場合,⁠行頭に移動⇒『#』を挿入⇒次の行に移動」という操作を繰り返したあとで「繰り返しキー」を押すと,この処理を再実行できます図1)⁠

図1 EmacsでDynamic Macro

画像

Emacs上でテキストファイルの最初の2行の行頭に「#」を挿入

画像

画像

「繰り返しキー」を押すと,繰り返されたキー操作がマクロとして登録されて再実行される

画像

画像

繰り返しキーを何度も押すと登録された操作が何度も繰り返される

注1)
M-x indent-regionのようにコマンドを打ち込みます。
注2)
デフォルトでは[Ctrl]+[t]。

FirefoxでもDynamic Macro

Dynamic MacroはもともとEmacs上で開発したものなので,それ以外の環境では利用できなかったのですが,最近のブラウザの「拡張機能」を利用すると,ブラウザ上のテキスト編集領域でもDynamic Macroを利用できるようになります。ここではFirefoxの拡張機能Keysnail上に実装されたDynamic Macroを紹介します。

Keysnailはmoozさんが開発したFirefoxの拡張機能で,Firefox上のキー操作を柔軟に拡張できます。またKeysnailはプラグインによって機能を拡張できるようになっており,Dynamic Macroがプラグインとして実装されています

KeysnailとDynamic Macroプラグインをインストールすると,前述のような機能をFirefox上で利用できるようになります。繰り返しキーはKeySnailの設定ファイル~/.keysnail.jsで次のように登録しておきます。ここでは[Ctrl]+[t]を繰り返しキーとして指定しています。

key.setEditKey('C-t', function (ev) {
    ext.exec("dmacro-exec");
}, 'Dynamic macro');

Twitterで投稿テキストを強調するために文字間に空白文字を入れる場合,図2の操作を行います。この例の編集操作は簡単なのでDynamic Macroを使わなくても手間はたいしたことがありませんが,ブラウザ上で大規模な編集操作を行う場合はDynamic Macroの機能は非常に有用です。

図2 FirefoxでDynamic Macro

画像

投稿テキストを入力

画像

画像

文字の間に空白文字を入れる操作を2回繰り返す

画像

画像

繰り返しキーを押すと,⁠カーソルを1文字分進めて空白文字を挿入する」という操作が繰り返される

著者プロフィール

増井俊之(ますいとしゆき)

慶應義塾大学教授。ユビキタス時代のインタフェース技術の研究開発に従事。

本棚.orgGyazoQuickMLFeedTVなど各種のネットサービスを運用中。

http://www.pitecan.com/

コメント

コメントの記入