予測/例示インタフェースの研究動向

増井俊之

コンピュータソフトウェア, pp. 1-16. 日本ソフトウェア科学会, May 1997.


目次

1. 予測/例示インタフェースとは
2. 予測インタフェース
2.1 予測インタフェースの実例
2.2 予測のレベル
3. 例示インタフェース
3.1 エンドユーザプログラミングへの応用
3.2 GUIプログラミングへの応用
3.3 例示インタフェースの実例
4. 予測/例示インタフェースの要件
4.1 Just-in-time Programming
5. 予測/例示インタフェースシステムでよく使われる手法
6. 予測/例示インタフェースに対する批判
7. 予測/例示インタフェースの将来
7.1 実世界指向インタフェースにおける応用
7.2 検索インタフェースとの融合
7.3 適応型インタフェースとの融合
8. おわりに
参考文献;

今やった 操作がそのまま プログラム --- 暦本純一  

1. 予測/例示インタフェースとは

近年はあらゆる場面で計算機を使う機会が多くなっており, 計算機操作の繁雑さが大きな問題となりつつある. 計算機の機能が多いために操作が複雑になることはある程度 仕方がないかもしれないが, 現実には単純な目的の処理の操作を行なうためにも 大きな手間がかかることが多い. 同じ装置を使って同じ結果が得られるのであれば, なるべく少ない操作で処理を指示できることが望ましい.

例えば住所録を作ったり手紙を書いたりといった日常的な作業においても, 似たような名前や住所を何度も入力したり, フォーマットを整えるための編集操作を何度も繰り返したり, 定型文を何度も入力したり, 冗長な作業を行なっていることが多い. 無味乾燥な繰返し作業は多くのユーザにとって苦痛である.

このような問題は, 計算機自身にユーザの操作を予測させることによりある程度 改善されると考えられる. 例えば,ユーザが連続する行に1, 2, 3, 4と数字を入力した場合, 続く行に5, 6...を入力するであろうことが予測できるので, それに続く一連の操作をシステムに代行させることができれば、 ユーザの操作量は減ることになる. また,数字をひとつずつ増やしながら行に挿入するというプログラムを このような操作の例から自動生成することができれば, 沢山の行に適用したり,別の機会に再利用したりすることも 可能になる.

例示によってプログラムを自動的に作成する手法は古くから PBE (Programming By Example), PBD (Programming By Demonstration)などと 呼ばれて研究されていたため, このようなシステムを総称して PBE/PBDシステムと呼ぶことも多いが, ここでは予測/例示インタフェースと総称することにする.

ユーザの操作をシステムに予測させるには各種の手法が考えられる. ユーザの以前の操作履歴を例データとして記憶しておくことにより 次の操作を予測させることも可能であるし, 例示によりデータをあらかじめ明示的に与えておくこともできる. 例データから規則を学習したり 他データに適用するための推論を行なうためには, 機械学習や帰納的推論 に用いられる各種の手法を使用することができる. 例データからの推論をうまく行なうことにより, 次の操作の単純な予測だけでなく, ユーザの意図を汲み取ったり,好みや癖を抽出して適応的な動作をさせる ことさえできるようになる可能性がある. このように, 次の操作を予測したり, 与えた例データから規則を推論したりする 予測/例示インタフェース手法は, 計算機などの機械を使いやすくするための基本的な技術の ひとつであるということができる.

予測により操作の総量を大きく減らすことができれば, 単に面倒が減ったり使いやすくなるというだけでなく, 機械操作に慣れない人や運動能力が充分でない人にとっても 計算機が楽に使えるようになるという点で意義が大きい. いわゆる障害者向けのシステムでは、予測機能を備えているものも多い.

Myers は,予測/例示インタフェースを, プログラムの作成を支援するかどうか/ 知的処理を行なうかどうかの2つの基準で4種類に 分類しているが[35], 実際には広汎な種類の予測/例示インタフェースが 存在するため 明確に4種類に分類できるわけではない. 以下では便宜的に, アプリケーションの知識やユーザの操作履歴などから ユーザの次の操作をシステムが予測する 予測インタフェースシステムと, ユーザが明示的にシステムに例を与えることにより プログラムを生成する例示プログラミング の手法をインタフェースに応用した 例示インタフェースシステムを分けて解説する.  

2. 予測インタフェース

コマンド行インタプリタや文書エディタのように, キーボードを使用して文字列のみを操作するシステムにおいては, 各種の単純で効果の高い予測手法が従来から広く使用されている. 予測を行なうためのデータとしては ユーザの操作履歴,予測実行時のコンテクスト,辞書などが 使われることが多い.  

2.1. 予測インタフェースの実例

UNIXのcshやtcshのようなコマンドインタプリタ (シェル)では,以前起動したコマンドに対しその省略形や番号を 指定するだけで再実行することのできるコマンドヒストリ機能や, ファイル名の先頭の何文字かを指定するとそれに続く文字列の 候補リストをシステムが提示してくれる 補完(completion)機能[53]が よく使われているし, テキストエディタGNU Emacsでは 補完機能に加え, テキスト中に既に現われている文字列を参照して 次の入力を予測するdynamic abbreviation機能も広く使用されている. これらにおいては, ファイル名/コマンド名/テキスト中の文字列などが 静的または動的辞書として予測に使用されている.

DarraghらのReactive Keyboard[10]では, UNIXのシェルのようなコマンド言語インタプリタや テキストエディタのキーボード操作において, ユーザの以前のキーストローク列の頻度情報から次の入力文字列を予測し, 表にして提示してユーザに選択させたり, カーソルの位置に候補を表示したりすることにより, 障害者やタイピングが苦手な人の補助に成功している. 提示された予測結果がユーザの要求と一致していた場合は それを採用し, 一致していない場合は予測結果を無視して作業を続けることができる. Reactive Keyboardでは, テキスト圧縮手法として性能の良い PPM (Prediction by Partial Match)法[2](*) に似た頻度集計方式を使用して ユーザが次に入力する文字列の予測を行なっている. 同様の手法により,ユーザ操作を予測する電卓も 試みられている[49].
(*) 例えば``abracadabra''に続く文字を予測する場合, ``a''の後には``b''が2回と ``c'', ``d''が1回ずつ出現した実績があり, ``ra''の後には``c''が1回出現した実績があり, ``bra''の後にも``c''が1回出現した実績があるといった 出現頻度の荷重和をとることにより 次の文字の予想出現確率を計算する.

筆者らの開発した Dynamic Macro [22][63] は,GNU Emacs上で同じ操作を何度か繰り返した場合, ユーザからの指示により操作履歴から繰返しパタンを抽出して 再実行を指示することができる. Emacs上でのあらゆる繰返し操作に対して有効であり, マクロ登録が不要であるという特徴を持っている. 図1の例では,行の先頭に``% ''を挿入するという繰返し作業の1回分が, ユーザによる繰返し実行指示により自動的に マクロ化/実行される様子を示している.

  Figure 1. Dynamic Macro使用例

Cypherの Eager[7]は,MacintoshのHyperCard上で 似たようなGUI操作をユーザが繰り返したとき, システムがそのパタンを検知してユーザの次の操作を予測するシステムである. ユーザの次の操作が予測できたとき, システムはユーザが次に実行すると思われる操作を先取りしてユーザに示す. 例えばユーザが次に特定のウィンドウを選択するであろうと 予測した場合,システムはそのウィンドウをハイライトすることにより 予測が行なわれていることをユーザに示す. ユーザはシステムの予測の有無にかかわらず操作を続けることができるが, ユーザがそのウィンドウを選択したときは予測が正しかったことを システムに伝えていることになり,そうでない場合は システムの予測を否定したことになる. そのような操作を何度か繰り返した後, システムが正しい予測を行なっているということを ユーザが確信した場合は, 残りの処理の自動実行をシステムに指示することができる. システムはヒューリスティクスを用いてユーザの操作の繰り返しを 検出する. 例えばユーザが``月曜'',``火曜''と順番に入力した場合は システムは次は``水曜''であることを予測する.

2にEagerの動作例を示す.ユーザは左上のウィンドウからSubject:の後の文字列を 切り出して右下のウィンドウに貼り付けようとしている ところであるが,このような操作を既に2回繰り返しているので, 右上のような「猫」が出現してユーザに繰返しの存在を認識させ, 次のユーザの操作の予測を行なう.

  Figure 2. Eager

 

2.2. 予測のレベル

シェルのコマンドヒストリやDynamic Macroの場合は, ユーザからの指示により直前の操作を再実行しているだけなので, 予測と呼ぶのはふさわしくないという見方もあるが, ユーザは必ずしも以前の操作列を完全に記憶しているわけではなく, 意図通りの処理が行なわれてほしいという期待が含まれているため, ユーザは予測機構を使用しているという意識を持って 操作を行なっていると考えられる.

直前の操作とコンテクストから次の実行内容が決まるという意味では GNU Emacsにおける罫線モード[61]も 非常に単純な予測インタフェースと考えることができる. 罫線モードでは, 現在のコンテクスト(カーソルの位置に既に存在する罫線素片の種類)及び 直前の操作(罫線描画方向)にもとづいて罫線素片を選ぶことにより, 上下左右の矢印キーの操作により移動しながら罫線を引くことができる. 動作機構はDynamic Macroやコマンドヒストリの場合とほとんど 違いは無いが, ユーザの期待と異なる動作をすることはほとんど無いため 予測インタフェースとして認識されてはいない. また仮名漢字変換も,コンテクスト及び操作履歴から 変換される漢字が決定されるので,一種の予測インタフェースと みることも可能である.  

3. 例示インタフェース

予測インタフェースでは,システムが予測を行なうために使用するデータが 何であるかは必ずしもユーザが知る必要はないが, システムに対して明示的に例データを与えて ユーザの意図や好みをシステムに推論させることにより 操作を簡略化したりマクロを作成したりすることも可能であり, このようなインタフェースを例示インタフェースと呼ぶ.

例示インタフェースは,ユーザの個々の操作を予測することにより 操作の総量を減らすことに使用できることに加え, 自動処理を行なう手続きを作成したり, 対話型プログラムそのものを作成したりするために積極的に利用することも できる. このような処理は従来はテキストベースのプログラミング言語を使用して 記述するのが普通であったが,近年の計算機環境においては エンドユーザプログラミングの支援や GUIプログラミングへの応用という点で 例示インタフェースの重要性が増している.  

3.1. エンドユーザプログラミングへの応用

計算機が広い分野で多くの人々に使われるようになったため, ニーズに対してユーザが自分でプログラムのカスタマイズを行なったり プログラムを作成したりすることが望まれるようになってきている. エンドユーザがプログラムを作成するためには, 依然としてテキストベースのプログラミングが主流であり, C, Java, Perl, Tclなどの汎用プログラミング言語や アプリケーションのマクロ言語の修得本が 書店の柵を埋め尽くしている. (音楽情報処理の分野ではMaxという データフロー型のビジュアルプログラミング言語が音学家にも普及しており, 盛んにエンドユーザプログラミングが行なわれているが, こういうケースは稀である.) しかし誰もがプログラミングに習熟しなければならないほど高度な処理が 常に必要になるわけではない. 現状でば例えばメールを条件に応じて分類するといった単純な処理を 自動的に行なわせるだけでもちょっとしたプログラミングが必要である ことが多いが, 実際のメールを分類した作業例にもとづいて分類プログラムを自動生成 することができればユーザはプログラムテキストを扱う必要が無くなる. 多くの人間にとっては,対象の扱いを抽象的に指示するプログラミングを行なう よりは,具体的な作業を例示する方が理解が容易である.  

3.2. GUIプログラミングへの応用

GUIにおける画面上の対象の表示やふるまいと,そのプログラムテキスト 上での表現の間のギャップは非常に大きいため, 抽象的対象の扱いに慣れたプログラマにとっても,GUIの開発においては 例示インタフェースが有用である場合が多いと考えられる[67]. 例えばボタン上でのマウスクリックのような基本操作を表現する場合でも, 普通のプログラミング言語では状態遷移や座標計算が 必要になってしまうが, そのかわりに実際のボタン表示やマウス操作によって操作を表現できれば プログラミングがはるかに容易になると考えられる. このような考えにもとづき,特にGUIシステム開発を目的とした 各種の例示インタフェースシステムが開発されてきている.

GUIシステムにおける表現とプログラムのギャップを埋めるための 開発システムとしてはいわゆるインタフェースビルダが ある程度の成功をおさめている[65]. インタフェースビルダとは, 直接操作インタフェースによるグラフィック画面設計とテキスト編集による プログラミングを併用しながら,ツールキットを用いて アプリケーションを作成するシステムである. ボタンやスライダのような インタフェース部品それぞれに対してその画面上での配置を 指定しつつ,部品が操作されたときの処理も簡単に指定できるようになっている. インタフェースビルダを用いると, インタフェース部品を画面上に直接配置できるため, 高速にプロトタイプを作成することができるが, インタフェースビルダは 大きな統合的環境になりがちで小回りがきかないうえに, 使用言語やツールキットなどが制約をうけるし, あらかじめ用意されている仕様と異なるインタフェースを作ることが 困難であることが多い. また,WIMPインタフェース (ウィンドウ,アイコン,メニュー,ポインティングデバイスを多用する, 現在最も主流のGUIスタイル) に特化しているため音声やジェスチャのように 現在一般的でないインタフェースには容易に対応できないし, 状態遷移のような動的な処理を指定できないという欠点も持っている.

インタフェースビルダは GUIの画面配置を実例で指定することにより成功した システムと考えることができるが, 例示インタフェース手法をより積極的に活用することにより, システムの動的なふるまいを例示により示したり, 音声などのインタフェースを併用することも可能になる. このように,特に将来のインタフェースシステムの開発においては, システム開発者にとっても例示インタフェースは非常に魅力的と考えられる.  

3.3. 例示インタフェースの実例

非常に多くの例示インタフェースシステムが提案されているが, ここではその一部を応用別に簡単に紹介する.

3.3.1 テキスト編集

NixのEditing by Exampleシステム[39]は, テキスト編集作業において, 編集前のテキストと編集後のテキストの組の例を ユーザが示すことにより システムにその変換規則を推論させ, 残りのテキストに対しその変換を適用させることができるようにするものである. 多くの例示インタフェースシステムはユーザの実際の操作列を 例データとして扱うのに対し, Editing by Exampleシステムは操作前/操作後の変化のみを 扱うという特徴がある. 少ない例からの推論を行ないやすいような 文字列置換操作(正規表現による文字列置換のサブセット)を 編集操作として利用することができる.

MoらのTELSシステム[29][50]は, GUIによる単純なテキストエディタ上でのユーザの繰り返し操作から 汎化によりプログラムを生成して以降の操作に適用可能とする システムである. 簡単のため編集操作は 挿入/削除/移動/選択の4種類しか許されていない. 似たような操作が繰り返された場合, 各操作の前後でのコンテキストを汎化することにより 積極的にループを検出してプログラムを生成する. 例えば電話番号を順次選択していくような場合, ``空白文字の後の数字222-3456の選択''と ``空白文字の後の数字234-5555の選択''という操作が 続けて実行された場合は ``空白文字の後の数字2**-**5*の選択の繰り返し''という プログラムを生成する. このように,システムは 同じ機能をもつプログラムのうちなるべく最小のものを 見つけようと試みる. 生成されたプログラムを実行するときに 間違いが発見された場合は,ユーザが操作を訂正することにより インクリメンタルにプログラムを修正することができる. ヒューリスティクスにより一番もっともらしい操作が選択される ようになっていることに加え, 修正により正しい条件判断ができるようになっているため, NixのEditing By Exampleシステムでは扱うことができない 複雑な処理も例示のみで指定可能となっている.

3.3.2 GUI操作の自動化

HalbertのSmallStar[14]は, Xerox社のStarワークステーションのデスクトップの GUI操作を例示によりプログラミング可能にするシステムである. GUI操作のプログラミングを簡単にするため, ユーザはキーボードマクロを定義する場合と同様に, 実際の操作を行なった後でその操作列を編集することにより プログラムを作成する. ユーザは プログラムしたい操作列の実行開始をシステムに指示してから 実際の操作を行ない, 最後に操作列の実行終了をシステムに指示することにより 操作列を示すテキスト形式のプログラムを得て 後でそれを修正することができる. 例えば, 「全ての``*.bak''という名前のファイルを ``bak''というディレクトリに移動する」というプログラムを 作成したい場合は, まず上記の手法により適当なファイルを``\|bak|''ディレクトリに 移動することにより「ひとつのファイルを ``bak''というディレクトリに移動する」というプログラムを 作成し,そのプログラムをエディタで編集して条件文を付加することにより 必要なプログラムを作成する.

BosのEdward[3]は GUIの操作手順から次の操作を推論するシステムである. 手順の推論方式自体はEagerと類似しているが, 自然言語でユーザが操作を指示することができ, またシステムも推論結果を自然言語で説明したり ユーザに質問を行なったりする. 推論された手順はマクロとして名前をつけてセーブしたり 編集を行なうこともできる.

Modugnoの Pursuit[30][31]は, ユーザの例示操作からの推論/汎化により理解の容易な 視覚言語プログラムを生成し, それをユーザが直接編集することによりシステムの間違った推論を 修正できるようにしたシステムである. 生成されたプログラムの例を図3に示す.視覚言語の表現を画面上での実際の操作で使われるアイコンに 似せることにより, プログラムをより理解しやすいように工夫している. 操作前の状態と操作後の状態を組にして示すことにより 操作内容を直感的に表現している. 図3のプログラムには条件分岐が含まれているが,条件分岐や繰返しもユーザの操作からある程度自動的に 抽出できるようになっている.

  Figure 3. Pursuit

PotterのTriggers[41]は, 任意のアプリケーションプログラムが表示する ビットマップ画面上のパタンマッチングにより 操作の自動実行を行なわせるシステムである. 画面上のビットマップパタン及びそれに関連する操作を 例示により定義することにより, それと同じビットマップパタンが表示されたときに, 定義された操作を自動実行させることができる. 例えば, 表計算ソフトにおいて全ての負の数値データに印をつけたい場合は, マイナス記号 ``-''を示すビットマップパタンを指定して そのパタンの近辺に印をつける操作を例示により定義することにより, 画面上の残り全ての``-''の近辺に同じ印をつけることができる. ほとんどの予測/例示インタフェースシステムでは, 予測や例示を行なうためにアプリケーション内のデータを利用するのが 普通であるが, Triggersはビットマップ画面のみを用いて操作の例示を行なう. アプリケーション内のデータには必ずしもアクセス可能とは限らないが, Triggersは画面に表示されるビットマップデータのみを使用するため, 画面へ表示を行なう任意のアプリケーションに対して 適用することができる.

杉浦らのDemoOffice[56]は, アプリケーション上のGUI操作から再利用可能な部分を自動的に抽出して マクロとして登録するシステムである. メールボックスのようなデータ集合の要素(1通のメール)に対して 選択やコピーなどのGUI操作が行なわれた場合, システムは他の要素に対しても同様の操作が 行なわれる可能性があると判断し,自動的にマクロ生成を開始する. またデータの依存関係を解析することにより,操作された要素に 関連した操作のみを履歴から抽出/汎化してマクロを生成する. 異なる操作が行なわれたときにはまた別のマクロを自動生成する. 実際に他の要素に対して同じ操作が必要になった場合は, 用意されたマクロに対して新しい要素を適用可能かどうかを ユーザが実行前に試してみることができるようになっている.

3.3.3 グラフィクス編集

Maulsby のMetamouse[23][24]は グラフィカルな図形の編集操作から編集プログラムを自動生成する システムである. 編集操作は, 「上に移動させた直線が矩形に接したとき 直線の長さだけ矩形を移動させる」 といったようなプロダクションルールの集合として表現される. ループを構成する規則を使うことにより繰り返しを含むプログラムも 作成できる. 規則を発火させる条件としては,図4の例のように「接する」「交わる」といった幾何的条件が重視される. ユーザが以前の操作と完全に同じ操作を始めたときは,システムは すぐにユーザの次の行動を予測して提示するため, 同じ操作を2度以上含む大きな繰り返しは検出できない. 規則はユーザの与える少ない例からの汎化により生成されるが, システムは推論の様子がユーザによくわかるように 擬似マウスや制約条件を表示しながら徐々に推論を行なう. ユーザはシステムに自分の意図を教えるという意思を念頭に置きながら, 間違った推論を修正しながら正しいプログラムを作成していく.

  Figure 4. Metamouse

  Figure 5. Metamouse

Kurlander のChimera[17]は, 図形エディタなどにおける編集操作の履歴を プログラムとして後で編集することにより, GUI操作をマクロとして定義可能にするシステムである. SmallStarではGUI操作列を プログラムテキストとして表現して後の編集を可能としていたが, ChimeraではGUI操作をグラフィカルな形で表現したまま 編集ができるような工夫を行なっている. GUI操作履歴はユーザにわかりやすいように 図6の編集操作履歴を図7のように紙芝居風に表現し,細かい操作列をひとつのコマで表現したり, 局所的な操作において重要な部分だけがコマ上に表現されるような 工夫を行なっている.

  Figure 6. Chimeraの編集操作例

  Figure 7. Chimeraにおける操作履歴のグラフィカル表現


Lieberman のMondrian[20]も Chimeraと同じように, 図形の編集操作履歴をマクロとして登録することのできる システムである. 登録される各編集操作は 図8のように編集前の状態と編集後の状態を組にした ドミノ状のアイコンで表現され, ビジュアルプログラミングの要素として再利用することができる. Chimeraの場合と同様に,マクロ化にあたって システムは各種の推論や汎化を行なう必要があるが, 推論の様子を音声や自然言語テキストでユーザに知らせる 工夫がされているため, 間違った推論が行なわれた場合はユーザはすぐにそれに 気付いて修正を行なうことができる.

  Figure 8. Mondrian

3.3.4 GUIプログラム作成

Buxtonらの開発したMENULAY UIMS[5]は, 画面表示を編集することにより そのインタフェースを示すプログラムが出力され, 設計者がそのプログラムと実際の動作を行なう関数を リンクすることによって目的のシステムを得ることができるという, 例示によるGUI生成の先駆的システムである.

Myersは例示によりインタフェースプログラムを 作成する数多くの試みを提案している. Peridot[32][33]では, ユーザがシステムに示したGUIの操作例から推論を行なうことにより メニューやスクロールバーなどの動きをカスタマイズ することができる. Marquise[37]は,描画エディタなどにおける GUIプログラミングのほとんどの要素を 例示のみで実現しようとした野心的なシステムである. インタフェースビルダは一般に静的な画面設計を行なうモード及び それをテストするモードを持っているが, Marquiseではこれに加え,マウスドラッグ時等のシステムの動的な反応を 定義するためのモードをふたつ持っており, ユーザ操作に対してシステムがどのように反応するかも 例示により指定することができる. Myersの率いる例示インタフェースグループでは, スライダやボタンなどを手書きすればすぐに試用 できるようにしたSILKシステム[18]や, ゲームプログラムに特化したGamutシステム[25] など,数多くの例示によるGUI作成システムが開発されている.

その他, 例示により配置やダイアログを指定するDruid UIMS[45], Xウィンドウシステムユーザに広く使われているTcl言語/Tkツールキット 及びX上のインタフェースビルダXfを使って, 操作履歴からGUIプログラムを自動生成させる 試み[46]など, 数多くの研究が行なわれている.

3.3.5 ビジュアルプログラミング

MITにおけるLogo教育の経験における知見として, 子供やプログラマ以外の人々にプログラミングを教えるには 抽象的な概念を使わず具体的な操作を示すことが有効であると いうことが明らかになり, 具体的な操作履歴のマクロ化によるプログラミングを 可能としたInstant Turtleシステムが成果をあげた. LiebermanのTinker[19]では, これを拡張して引数の変数を指定したり条件分岐を 示したり再帰呼び出しを定義したりできるようになっている.

Furnas は,ビットマップ画面上での単純な 書き換え規則の集合だけを用いることにより 細線化や計算などの各種の興味深い効果が得られることを BITPICTシステムにおいて示した[12]が, 山本はVisulanシステム[70]において, ビットマップ書き換え規則の集合が 汎用のビジュアルプログラムとして使用できることを示した. VisulanはBITPICTと異なり, プログラムを示す書き換え規則は, 書き換え対象となるビットマップ画面の中に存在している.

グラフィカルな書き換え規則は子供でも充分理解できるという 考えにもとづき, Smithらは子供用の例示プログラミング環境 KIDSIM[9][47]を提案した. KIDSIMは碁盤の目状の盤面とドミノ状の書き換え規則の集合から 構成されており, 盤面上のパタンにマッチする規則があればそれに従って 盤面がどんどん変化していく. KIDSIMは現在Cocoa[1]という名前で商品化され, Apple Computerより入手可能である.

  Figure 9. KIDSIM

Wolberは stimulus(ユーザの操作)-response(システムの反応) モデルにもとづく例示インタフェースシステム Demo[52],DemoII[11]を開発してきた. これらは静的なGUIの作成に有効であったが, その後開発された Pavlov[51]では, 時間経過やユーザの操作を刺激とするアニメーションや シミュレーションも例示により作成することができる. 描画モード/刺激定義モード/反応定義モード/テストモードを 使いわけることにより, ユーザ操作や時間などの刺激信号に呼応する オブジェクトの生成/変型/削除/前進/などの反応を定義していく. Pavlovでは時間経過も刺激として使用することができるため, 市販のオーサリングシステムのような,時間に基づくアニメーション 作成システムと似た使い方をすることができる. ひとつの刺激/反応を定義するためには一度だけ例示を行なう. システムが誤った推論を行なった場合はユーザがテキスト編集により修正する. 反応は,刺激の種類/パラメータ/反応の生ずる条件により定義される. 例えば「ハンドルを右に回すと車が右を向く」という刺激/反応の組を定義する場合, システムがヒューリスティクスにより選択した各種の条件から選択を 行なうことにより,「車が障害物に重なっていないとき」などといった 条件を追加することができる.

3.3.6 グラフィックレイアウト

Hudsonの Layout By Exampleシステム[15]は, 図形を配置するためのレイアウト規則を例示により推論する システムである. 図形が2個の場合の配置例,3個の場合の配置例... を ユーザがシステムに与えることにより システムは配置アルゴリズムを推論する. アルゴリズムは 図10に示したような「内挿」と「繰り返し」をもとに構築する.

  Figure 10. Layout by Example

例の数が少ない場合は,その例を満足する配置アルゴリズムは いくつも存在するが, このような場合システムは別のデータに対しそのアルゴリズムを適用して その結果をユーザに示すことにより, ユーザはそのアルゴリズムが適当なものであるかどうかを判断する. このように, 実際は推論された複数のプログラムの中から ユーザの要求に一致するものを選択しているにもかかわらず, ユーザとシステムの間では例データのみがやりとりされるため プログラムを明示的に扱う必要が無いという利点がある.

高橋,宮下らのTRIP2[48], TRIP3[28] は制約指向の宣言的図形配置システムである. 最初に開発されたTRIPは, 図形間の制約関係をPrologで宣言的に記述することにより 図形の自動配置を行なうシステムであったが, TRIP2では図形の実際の配置の変更により 制約の記述を修正するような双方向変換が可能となり, TRIP3ではさらに複数の配置例から宣言的配置制約を推論することが できるようになっている. またTRIP3の後継であるIMAGE[27][68]では, 推論された配置制約を別の例に適用した結果をユーザに提示する ことによりその推論が正しいかどうかを判断できるようになっており, Layout by Exampleシステムと同様の効果が得られる.

Myersの例示による文書整形システム[34]では, フォントの選択やセンタリングなどという文書整形の例を 示すことにより,システムが汎化によりマクロを生成する. 例えば章タイトルの型式を例として与えると, システムはそれを生成するような 整形スタイル(位置/フォント/番号付け方法など) をヒューリスティクスにより生成する.

グラフなどの配置を行なう場合, 遺伝的アルゴリズムや焼きなまし法(Simulated Annealing)のような 確率的アルゴリズムを使用すれば 配置の評価値を最大にする配置を自動生成させることができる. しかし評価基準が自明でない場合には評価値の計算方法が わからないことが問題となる. 筆者の開発した遺伝的プログラミングによる 有向グラフ配置システム[21][62]では, ユーザが良い配置例と悪い配置例の組を システムに与えることにより,システムが 遺伝的プログラミング[16] により配置の良否を決定する評価関数を抽出することができるため, ユーザが評価関数を明示的にプログラミングしなくても, 与えた例による評価基準にもとづいて良い配置を生成することが 可能になっている. 良い配置と悪い配置の例として図11のような配置の組をシステムに与えることにより, システムは評価関数を自動生成する. 生成された評価関数と遺伝的アルゴリズムを用いて異なるグラフの 配置を行なうと図12のような配置結果が得られる.

  Figure 11. システムに与える配置例

  Figure 12. 計算された評価関数にもとづいた配置結果

3.3.7 表データの視覚化

市販の表計算ソフトウェアでは, 表データを棒グラフをはじめとする各種のグラフに変換する機能を 備えているものが多いが, このような機能はシステム組み込みのものであるため グラフの種類は限られており, システムに用意されていない型式のグラフを書かせることはできない. MyersらのGold[36]は, 表の中のデータの値とグラフ描画に使用される図形の属性との対応を 例示により指定することにより 特殊なグラフ化を可能にするシステムである. 例えば棒グラフを作成する場合は, 最初に軸と矩形をひとつ描き, 矩形の位置/大きさ/色などの属性が 表中のひとつのデータとどのように対応しているかを指定し, 残りのデータにも同じ対応関係を適用する. システムは 「棒グラフに使われる矩形の片側は軸に接する」 といった知識を持っているため ユーザはあらゆる属性の視覚化手法を指定する必要はない.

RothらのSage[42]はGoldと同じように 例示により表データの図示を行なうシステムである. Sageは視覚化のためのツールSageBrushと 視覚化のための知識ベースSageBookから構成される. ユーザはSageBrushを使用して描いた図形の属性と 表データを関連付けることにより視覚化規則を定義し, その知識をSageBookに格納する. SageBookを使用することにより以前の視覚化規則の例を 検索し再利用することができる. 図13はナポレオンのロシア行軍記録データ中の軍の位置,兵隊の数,気温など数多くの属性を 座標,色,線の太さなどの 様々な視覚属性にマッピングすることにより ひとつのグラフとして表現したものである. SageBrushでは例示によってデータと属性を容易に 関連付けることによりこのような複雑なグラフも生成することができる.

  Figure 13. Sageによる表データの視覚化例

 

4. 予測/例示インタフェースの要件

予測インタフェースを使う目的は計算機操作を簡単にすることであるが, 予測システムを使わなくても手間さえ気にしなければ作業は遂行できるので, 予測を使わない場合に比べて少しでも不都合がある場合には 予測インタフェースは使われない傾向がある. 例えば,予測や推論に時間がかかり操作性が悪くなるような ことがあれば使用されにくい. また,どのような予測システムを用いた場合でも 予測を実行するための余分な手間が必ず発生するので, 予測による効果がそれに見合うだけ大きくなければ普及はおぼつかないし, 予測を行なう場合に漠然とした不安感がつきまとったり, 誤った予測を実行したときの被害が大きいようなものも問題がある. また,Eagerや KeyWatch[26] (IBM-PC上で,同じキーストローク列の繰り返しを発見すると 音などでユーザに知らせ,マクロとして再実行可能にするシステム) , OpenSesame[6] (Macintosh上でのユーザの操作パタンを常に監視しつつ ニューラルネットで傾向を推論し, マクロ化をユーザに提案するシステム) などの製品のように, バックグラウンドに隠れてユーザの操作を監視するシステムの場合, 予測システムを実装したことすら忘れてしまったようなときに 突然予測結果の実行を提案してユーザを驚かせてしまうことがある. また,Reactive Keyboard[10]のように 頻度情報から次の出現文字を予測するような場合, 同じことを繰り返していた場合でも ある瞬間から突然予測結果が変わってしまうことがあるが, こういう突然の挙動の変化もユーザを驚かせてしまうことになる. 予測による不都合が発生せずかつ予測の効果が大きい手法は 多くはないのが現状である.

一方,プログラミングに例示を用いる手法の場合は, 例示によりプログラミングできること自体が大きなメリットと なるため他の面での多少のデメリットは問題になりにくいはずであるが, この場合でもテキストを用いたプログラミングに比べて 全体的な手間がかなり改善されることが明らかでない場合は 導入されづらい. 例えば例示インタフェースを用いてGUIプログラムを生成する場合, ユーザの操作からシステムがうまく意図を推論することができずに 多大な修正作業が必要になるような場合は, 例示システムを使わず普通のプログラミングを行なった方が 得策であろう. 実際,3.3節で紹介したシステムがまだ広く実用レベルにはなっていないのは, 例示インタフェースについての世間での認知度が低い という理由だけではなく, 例示による効果がそれほど大きくないことが主な原因だと考えられる.  

4.1. Just-in-time Programming

一般に,新しいシステムを導入するときには必ず, 導入するかどうかの判断を行なうタイミングが重要になる. 予測/例示インタフェースの場合も, どの時点で予測を実行させたり例からプログラムを自動生成 させたりするべきかの決定がむずかしい場合がある. 複雑な編集操作を100回行なうことが最初からわかっている場合には, なんらかの手段でその操作をマクロ定義したり繰返しを自動実行させたり するほうが効率が良いだろうと判断することができるし, 逆に単純な操作を5回だけ実行するような場合は, 自動実行の工夫をするよりも実際に人手で5回操作を繰り返した方が 簡単であろう. しかし,例えば複雑な操作を5回だけ行なうような場合, 自動実行のための工夫をする方が良いか, 何も考えずに操作してしまう方が良いかの判断はむずかしい. また,実際に何回操作を行なわなければならないかが あらかじめ判断できないような場合には, 移行のタイミングの判断がさらにむずかしくなる. すぐ終わると思っていた仕事が意外と量が多く, 最初から自動化する工夫をしておけばよかったと後悔することは多い.

例えば,簡単なプログラムを作ろうとしたとき, 一回で問題無くコンパイル/実行がうまくいった場合は コンパイラを手動で起動するのが一番簡単であるが, バグのために何度もコンパイルが必要になったり, 別のライブラリが必要であることが途中で判明したような場合は, Makefileを作って自動コンパイル/リンクを行なわせた方が手間が少ない. 作業が何回繰り返されるかは最初からわかっている わけではないので,どの時点でプログラミングを行なうかの 判断がむずかしい.

これらの場合のように プログラムが必要であると判断されたその時点で効果的に プログラムを作成する手法を``Just-in-time Programming''と 呼ぶ[40]. この例の場合は,コンパイル/リンク操作の履歴から ファイルと操作の間の依存関係を解析することにより 自動的にMakefileを作成することが 可能である[57][69]が, どのような状況でもこれが可能であることが望ましい.  

5. 予測/例示インタフェースシステムでよく使われる手法

2.1節及び3.3節で紹介した各種の予測/例示インタフェースシステムでは, 以下のような手法が共通に用いられていることが多い.

予測/例示インタフェースシステムに共通に見られる これらの特徴は4節で述べた要件に起因しており, 図14のような対応関係があると考えられる.

  Figure 14. 予測/例示インタフェースの要件と手法の対応

要件 対応
予測のオーバーヘッドを最小にしたい 最も手軽に入手できる履歴データや既存の辞書を活用
予測により反応が遅くなると困る 単純な予測手法のみを使用し,誤りがあればユーザが訂正
小数の例しか利用できない ユーザ介入により推論誤りを早目に訂正
実用性を重視 アプリケーション個有の特徴を利用
システムの挙動がわからないと不安になる ビジュアルな表現によるユーザへの情報提示
 

6. 予測/例示インタフェースに対する批判

Brooksは, 1993年ごろまでの予測/例示インタフェースシステムについて まとめたCypherの本[8]の 書評[4]の中で, 「本書で紹介されている予測/例示インタフェースシステムにより自動化できる仕事は プログラムを数行書けば実現できるようなものばかりであり, それにより飛躍的に使い勝手が良くなるようなものではない」と, 予測/例示インタフェースの有効性に疑問を投じている. また,Nardiはエンドユーザプログラミングに関する 著書[38]の中で, 予測/例示インタフェースシステムには 終了条件や条件分岐を示すことができない/ 操作が間違いを多く含んでいる場合に困る/ 推論エラーを修正できない/ 推論に高いコストがかる/ といった欠点があると指摘し, ユーザが簡単にプログラムを書けるような環境を作った方が 有効だろうと述べている.

プログラムを誰でも簡単に作れるような作業であれば, 予測/例示インタフェース手法を使う必要が無いのは確かであるし, 少数の例からの推論に困難がともなうのも事実である. これらの批判がなされた時点において, 説得力のある予測/例示インタフェースシステムはあまり存在して いなかったし, 現在でも広く一般に使われている予測/例示インタフェースの数は 多くないことがこのような批判が出る一因であろう. しかし最近では操作履歴などを活用して 効果的にJust-in-time Programmingを行なう手法など, 説得力のある予測/例示インタフェース手法が各種提案されて実用になっているし, また3.2節で述べたように,予測/例示インタフェース手法は システムのふるまいやユーザの操作とプログラムの間にギャップが 有る場合でも適用できるという大きな特徴を持っており, 認識を用いたインタフェースや実世界におけるインタフェースのように, タスクをプログラムに簡単にマッピングできないような場合でも 適用可能であるため, 将来のシステムにおいてはさらに重要となってくると考えられる.  

7. 予測/例示インタフェースの将来

これまでの予測/例示インタフェースの研究は, 研究が行なわれた時点において広く普及していたインタフェースを 増強するためのものが主流であり, テキストベースの文書エディタやGUIなどが主な対象であった. 前節で述べたように, 予測/例示インタフェースはこのような従来型のシステムよりも, 将来の広い範囲のインタフェースにおいてより有効と考えられる. 以下にそのいくつかを示す.  

7.1. 実世界指向インタフェースにおける応用

計算機の小型化/低価格化及び無線ネットワークの整備により 常に身のまわりに計算機が存在して 生活のあらゆる局面で計算機を利用する世界が目前となっており, このような状況で計算機を活用するための 実世界指向インタフェース[54][71] が注目を集めている. 実世界指向インタフェースでは,実世界における状況を計算機が認識して 常に適切な対応をすることが重要である. 3.2節において,GUIのプログラミングにおける画面上の表示と プログラム内の表現とのギャップを解消するために 例示インタフェースが有効であることを述べたが, 実世界指向インタフェースの場合は計算機の外側の状況までを 考慮しなければならないため,そのギャップはさらに大きくなっており, 予測/例示インタフェースがさらに有効となる可能性がある.

例えば,各種のセンサを備えた携帯端末の利用者が 「夜の品川駅で電源を入れたときは時刻表を表示する」という 機能を登録したい場合, 通常のプログラミング言語を使うとすると, センサから得られた緯度/経度情報,電界強度,時刻などの数値を判断し, 条件を満たした場合に時刻表を起動するようなプログラムを 書く必要があるかもしれない. しかし端末が事例にもとづいて適切な動作をするようになっていれば, 一度夜の品川駅で時刻表を使ったことがあるという例情報にもとづいて, それに近い別の状況においても時刻表を表示することが 可能になるであろう.  

7.2. 検索インタフェースとの融合

従来の予測/例示インタフェースシステムでは, 2.1節で紹介した補完機能を除けば,例データをユーザ自身が作成するものがほとんどであったが, 既存のデータを例として積極的に利用することも考えられる.

検索を基本とするインタフェースは見方を変えると 予測/例示インタフェースと考えることができる. たとえば仮名漢字変換システムSKK[55]では, システム標準の辞書に含まれなかった単語を ユーザが辞書に登録することができるが, ユーザが登録した辞書は標準辞書と全く同じ構造をしているので, SKKの使用開始時の状況は, あらかじめ誰かが例示により標準辞書を作成した状態と 同じことになる. つまり,SKKは完全に例示インタフェースにもとづく仮名漢字変換 システムであるとも考えることができるわけである.

また,筆者が開発したペン計算機向け 文章入力システムPOBox[66]は, 単語の読みの部分指定及び 入力位置直前の文字列からの予測により絞り込んだ 候補単語の集合の中から 単語を選択するという操作を繰り返すことにより 高速に文章を入力可能なシステムであるが, あらかじめ用意された単語辞書と例文辞書を初期データとして 使用しつつ,ユーザが入力した単語列を例文として追加していく ことにより予測の精度を上げている.

  Figure 15. POBox

検索システムと予測インタフェースとは 全く異なる扱いをうけていることが多く, 例えば辞書プログラム,文章入力システム,スペルチェッカは 独立に実装されているのが普通である. しかしPOBoxでは辞書の検索と作成が統合されているために, ひとつの機構でそれらの機能を実現することが可能になっている. 近年は大規模な辞書やデータベースを手軽に利用できる機会が多く なっているが, まず既存のデータの検索にもとづく予測インタフェースシステムを構築し, それにユーザによる例データを追加していくという手法をとることにより, 統合的な検索/予測インタフェースシステムを構成することができる. このように予測/例示インタフェースと検索インタフェースを 融合した統合的インタフェースを例にもとづくインタフェース (Example-based Interface)と呼ぶ. 例にもとづくインタフェースでは, 例えば新たにプログラムを作成しようとする場合, ユーザの与える例データ/ユーザが以前作成したプログラム例/ 世の中に存在するプログラム例など,あらゆる例データを 統合的に活用することができる.  

7.3. 適応型インタフェースとの融合

計算機を使いやすくするための別のアプローチとして, ユーザの特性を何らかの方法で検出して それに応じて挙動を変える適応型(adaptive) インタフェース[43]が研究されている.

真の適応を行なうためにはユーザの特性の深い部分をシステムが 知る必要があるが,限られたバンド幅のインタラクションから充分な情報を 得ることはむずかしいため, 深いレベルまでユーザに適応可能なシステムは数少ないのが現状である一方, 表層的な情報を利用するだけでも 効果的な適応を行なわせることが可能である. 例えばSKKなどの仮名漢字変換システムでは,直前に確定した単語が 次回は第一候補として提示されるという単純な適応により 変換効率が向上しているし, プルダウンメニュー中の項目のうちよく使われるものを 他の項目と分離してメニューの最上部に表示されるようにした SplitMenu[44]や, 階層的電話帳メニューにおいて よく選択される名前がメニューの階層の上の方に出現するようにした システム[13] において,通常のメニュー構成をとるのに比べ操作効率が上がったことが 報告されている. これらのシステムに共通しているのは, 検索や予測を含むインタフェースにおいては 単純な適応手段が効果的に働くということである[64]. 2.1節で紹介したような各種の手法を適応的に使用することにより, より効果的な予測インタフェースを構築できる 可能性がある. 8]に良くまとめられている. また, 例示インタフェースとビジュアルプログラミングとの関連, 特に推論手法とインタラクションの関連については [58]に詳しく, GUIに関連した最近の例示インタフェースについては [67]に詳しい解説がある. またWeb上では, MITのHenry Liebermanが 予測/例示インタフェース全般についての情報をまとめたページ を管理しており, 筆者のページ でも予測/例示関連の文献情報をまとめているので 利用いただければ幸いである.

謝辞

コメント及び``研究川柳''を提供いただいた ソニーコンピュータサイエンス研究所の暦本純一氏及び 図版の転載を許諾いただいた研究者の方々に感謝します.  

参考文献

     
  1. Apple Computer, Inc.: Welcome to Cocoa - Internet Authoring For Kids, February 1997.  
  2. Bell, T. C., Cleary, J. G., and Witten, I. H.: Text Compression, Prentice Hall, Englewood Cliffs, NJ, 1990.  
  3. Bos, E.: Some Virtues And Limitations Of Action Inferring Interfaces, Proceedings of the ACM Symposium on User Interface Software and Technology (UIST'92), ACM Press, November 1992, pp. 79-88.  
  4. Brooks, R.: Watch What I Do - reviewed by Ruven Brooks, International Journal of Man-Machine Studies, (1993).  
  5. Buxton, W., Lamb, M. R., Sherman, D., and Smith, K. C.: Towards a Comprehensive User Interface Management System, Proceedings of SIGGRAPH, Vol. 17, No. 3 (July 1983), pp. 35-42.  
  6. Charles River Analytics: Open Sesame! , 55 Wheeler Street Cambridge, MA 02138, USA.  
  7. Cypher, A.: Eager: Programming Repetitive Tasks By Example, Proceedings of the ACM Conference on Human Factors in Computing Systems (CHI'91), Addison-Wesley, April 1991, pp. 33-39.  
  8. Cypher, A.(ed.): Watch What I Do - Programming by Demonstration , The MIT Press, Cambridge, MA 02142, 1993.  
  9. Cypher, A. and Smith, D. C.: KIDSIM: End User Programming of Simulations, Proceedings of the ACM Conference on Human Factors in Computing Systems (CHI'95), Addison-Wesley, May 1995, pp. 27-34.  
  10. Darragh, J. J., Witten, I. H., and James, M. L.: The Reactive Keyboard: A Predictive Typing Aid, IEEE Computer, Vol. 23 ,No. 11(1990), pp. 41-49.  
  11. Fisher, G. L., Busse, D. E., and Wolber, D. A.: Adding Rule Based Reasoning to a Demonstrational Interface, Proceedings of the ACM Symposium on User Interface Software and Technology (UIST'92), ACM Press, November 1992, pp. 89-97.  
  12. Furnas, G.: New Graphical Reasoning Models for Understanding Graphical Interfaces, Proceedings of the ACM Conference on Human Factors in Computing Systems (CHI'91), Addison-Wesley, April 1991, pp. 71-78.  
  13. Greenberg, S. and Witten, I. H.: Adaptive Personalized Interfaces - A Question of Viability, Behaviour and Information Technology, Vol. 4, No. 1 (1984), pp. 31-35.  
  14. Halbert, D. C.: Programming by Example, Technical Report OSD-T8402, Xerox Office Systems Division, December 1984.  
  15. Hudson, S. E. and Hsi, C.-N.: A Synergistic Approach to Specifying Simple Number Independent Layouts by Example, Proceedings of ACM INTERCHI'93 Conference on Human Factors in Computing Systems (CHI'93), Addison-Wesley, April 1993, pp. 285-292.  
  16. Koza, J. R.: Genetic Programming, The MIT Press, Cambridge, MA, 1992.  
  17. Kurlander, D.: Chimera: Example-Based Graphical Editing, chapter 12, pp. 270-290. In Cypher [8], May 1993.  
  18. Landay, J. A. and Myers, B. A.: Interactive Sketching for the Early Stages of User Interface Design, Proceedings of the ACM Conference on Human Factors in Computing Systems (CHI'95), Addison-Wesley, May 1995, pp. 43-50.  
  19. Lieberman, H.: An Example-Based Environment for Beginning Programmers, Instructional Science, Vol. 14(1986), pp. 277-292.  
  20. Lieberman, H.: Mondrian: A Teachable Graphical Editor , chapter 16, pp. 340-358. In Cypher [8], May 1993.  
  21. Masui, T.: Evolutionary Learning of Graph Layout Constraints from Examples, Proceedings of the ACM Symposium on User Interface Software and Technology (UIST'94), ACM Press, November 1994, pp. 103-108.  
  22. Masui, T. and Nakayama, K.: Repeat and Predict - Two Keys to Efficient Text Editing, Proceedings of the ACM Conference on Human Factors in Computing Systems (CHI'94), Addison-Wesley, April 1994, pp. 118-123.  
  23. Maulsby, D. L. and Witten, I. H.: Metamouse: An Instructible Agent for Programming by Demonstration, chapter 7, pp. 154-181. In Cypher [8], May 1993.  
  24. Maulsby, D. L., Witten, I. H., and Kittlitz, K. A.: Metamouse: Specifying Graphical Procedures by Example, Proceedings of SIGGRAPH'89, Vol. 23, No. 3, Boston, MA, July 1989, pp. 127-136.  
  25. McDaniel, R. G.: Improving Communication In Programming-by-Demonstration, CHI'96 Conference Companion, ACM Press, April 1996, pp. 55-56.  
  26. Micro Logic Corp.: KeyWatch, POB 70, Hackensack, NJ 07602, 1990.  
  27. Miyashita, K., Matsuoka, S., Takahashi, S., and Yonezawa, A.: Interactive Generation of Graphical User Interfaces by Multiple Visual Examples, Proceedings of the ACM Symposium on User Interface Software and Technology (UIST'94), ACM Press, November 1994, pp. 85-94.  
  28. Miyashita, K., Matsuoka, S., Takahashi, S., Yonezawa, A., and Kamada, T.: Declarative Programming of Graphical Interfaces by Visual Examples, Proceedings of the ACM Symposium on User Interface Software and Technology (UIST'92), ACM Press, November 1992, pp. 107-116.  
  29. Mo, D. H. and Witten, I. H.: Learning text editing tasks from examples: a procedural approach, Behaviour & Information Technology, Vol. 11, No. 1(1992), pp. 32-45. also in [8].  
  30. Modugno F.: Extending End-User Programming in a Visual Shell With Programming by Demonstration and Graphical Language Techniques, PhD Thesis, Carnegie Mellon University, 1995.  
  31. Modugno F. and Myers, B. A.: A State-Based Visual Language for a Demonstrational Visual Shell, Proceedings of 1994 IEEE Symposium on Visual Languages (VL'94), 1994.  
  32. Myers, B. A.: Creating Interaction Techniques by Demonstration, IEEE Computer Graphics and Applications, (1987), pp. 51-60.  
  33. Myers, B. A.: Creating User Interface by Demonstration, Academic Press, San Diego, 1988.  
  34. Myers, B. A.: Text Formatting By Demonstration, Proceedings of the ACM Conference on Human Factors in Computing Systems (CHI'91), Addison-Wesley, April 1991, pp. 251-256.  
  35. Myers, B. A.: Demonstrational Interfaces: A Step Beyond Direct Manipulation, IEEE Computer, Vol. 25, No. 8 (1992), pp. 61-73.  
  36. Myers, B. A., Goldstein, J., and Goldberg, M. A.: Creating Charts by Demonstration, Proceedings of the ACM Conference on Human Factors in Computing Systems (CHI'94), Addison-Wesley, April 1994, pp. 106-111.  
  37. Myers, B. A., McDaniel, R. G., and Kosbie, D. S.: Marquise: Creating Complete User Interfaces by Demonstration, Proceedings of ACM INTERCHI'93 Conference on Human Factors in Computing Systems (CHI'93), Addison-Wesley, April 1993, pp. 293-300.  
  38. Nardi, B. A.: A Small Matter of Programming, The MIT Press, Cambridge, MA, 1993.  
  39. Nix, R. P.: Editing by Example, ACM Transactions on Programming Languages and Systems, Vol. 7, No. 4 (1985), pp. 600-621.  
  40. Potter, R.: Just-in-Time Programming, chapter 27, pp. 513-526. In Cypher [8], May 1993.  
  41. Potter, R.: TRIGGERS: Guiding Automation with Pixels to Achieve Data Access, chapter 17, pp. 361-380. In Cypher [8], May 1993.  
  42. Roth, S. F., Kolojejchick, J., Mattis, J., and Goldstein, J.: Interactive Graphic Design Using Automatic Presentation Knowledge, Proceedings of the ACM Conference on Human Factors in Computing Systems (CHI'94), Addison-Wesley, April 1994, pp. 112-117.  
  43. Schneider-Hufschmidt, M., Kuehme, T., and Malinowski, U.(eds.): Adaptive User Interface - Principles and Practice, North-Holland, Amsterdam, 1993.  
  44. Sears, A. and Shneiderman, B.: Split Menus: Effectively Using Selection Frequency to Organize Menus, ACM Transactions on Computer-Human Interaction, Vol. 1, No. 1 (1994), pp. 27-51.  
  45. Singh, G., Kok, C. H., and Ngan, T. Y.: Druid: A System for Demonstrational Rapid User Interface Development, Proceedings of the ACM SIGGRAPH Symposium on User Interface Software and Technology (UIST90), October 1990, pp. 167-177.  
  46. Slagle, J. R. and Wieckowski, Z.: Ideas for Intelligent User Interface Design, Tcl'94 Workshop Proceedings, 1994.  
  47. Smith, D. C., Cypher, A., and Spohrer, J.: KIDSIM: Programming Agents Without a Programming Language, Communications of the ACM, Vol. 37, No. 7 (1994), pp. 55-67.  
  48. Takahashi, S., Matsuoka, S., Yonezawa, A., and Kamada, T.: A General Framework for Bi-Directional Translation between Abstract and Pictorial Data, Proceedings of the ACM SIGGRAPH and SIGCHI Symposium on User Interface Software and Technology (UIST'91), ACM Press, November 1991, pp. 165-174.  
  49. Witten, I. H.: A Predictive Calculator, chapter 3, pp. 66-76. In Cypher [8], 1993.  
  50. Witten, I. H. and Mo, D. H.: TELS: Learning Text Editing Tasks from Examples, chapter 8, pp. 182-203. In Cypher [8], May 1993. 182-203.  
  51. Wolber, D. A.: Pavlov: Programming By Stimulus-Response Demonstration, Proceedings of the ACM Conference on Human Factors in Computing Systems (CHI'96), Addison-Wesley, April 1996, pp. 252-259.  
  52. Wolber, D. A. and Fisher, G.: A Demonstrational Technique For Developing Interfaces With Dynamically Created Objects, Proceedings of the ACM SIGGRAPH and SIGCHI Symposium on User Interface Software and Technology (UIST'91), ACM Press, November 1991, pp. 221-230.  
  53. 井田昌之, 亀井信義: Emacs解剖学 - 入力の補完, bit, Vol. 29, No. 2 (1997), pp. 85-95.  
  54. 小島啓二: ビジュアルインタフェースの研究動向と応用, chapter 2.9, pp. 168-175. In 平川, 安村 [60], February 1996.  
  55. 佐藤雅彦: かな漢字変換システムSKK, bit, Vol. 23, No. 5 (1991), pp. 793-802.  
  56. 杉浦淳, 古関義幸: 例示プログラミングにおけるマクロ定義の簡略化, インタラクティブシステムとソフトウェアIV: 日本ソフトウェア科学会 WISS'96(田中二郎(編)), 近代科学社, December 1996, pp. 101-110.  
  57. 中山健, 宮本健司, 川合慧: コマンド履歴からの動的スクリプト生成, インタラクティブシステムとソフトウェアII: 日本ソフトウェア科学会 WISS'94(竹内彰一(編)), 近代科学社, 1994, pp. 155-164.  
  58. 萩谷昌己: ビジュアルプログラミングと自動プログラミング, コンピュータソフトウェア, Vol. 8, No. 2 (1991), pp. 27-39.  
  59. 原田康徳, 宮本健司: Visible Dispatch: Visibilityに基づくアプリケーション構築法, インタラクティブシステムとソフトウェアIV: 日本ソフトウェア科学会 WISS'96(田中二郎(編)), 近代科学社, December 1996, pp. 61-70.  
  60. 平川正人, 安村通晃 (編): ビジュアルインタフェース - ポストGUIを目指して, bit別冊, 共立出版, February 1996.  
  61. 増井俊之: keisen.elプログラム, July 1991.  
  62. 増井俊之: 進化的学習機構を用いたグラフ配置制約の自動抽出, インタラクティブシステムとソフトウェアII: 日本ソフトウェア科学会 WISS'94(竹内彰一(編)), 近代科学社, 1994, pp. 195-204.  
  63. 増井俊之, 中山健: 操作の繰返しを用いた予測インタフェースの統合, コンピュータソフトウェア, Vol. 11, No. 6 (1994), pp. 484-492.  
  64. 増井俊之: 適応/予測型テキスト編集システム, インタラクティブシステムとソフトウェアII: 日本ソフトウェア科学会 WISS'94(竹内彰一(編)), 近代科学社, 1994, pp. 145-154.  
  65. 増井俊之: GUIベースのプログラミング, chapter 2.2, pp. 45-64. In 平川, 安村 [60], February 1996.  
  66. 増井俊之: ペンを用いた高速文章入力手法, インタラクティブシステムとソフトウェアIV: 日本ソフトウェア科学会 WISS'96(田中二郎(編)), 近代科学社, December 1996, pp. 51-60.  
  67. 松岡聡, 宮下健: 例示によるGUIプログラミング, chapter 2.4, pp. 79-97. In 平川, 安村 [60], February 1996.  
  68. 宮下健, 松岡聡, 高橋伸, 米澤明憲: 複数の視覚的例による直接インターフェイスの対話的実現, インタラクティブシステムとソフトウェアI: 日本ソフトウェア科学会 WISS'93(竹内彰一(編)), 近代科学社, 1994, pp. 241-248.  
  69. 宮本健司: 汎化履歴にもとづく予測インタフェースの拡大, インタラクティブシステムとソフトウェアIII: 日本ソフトウェア科学会 WISS'95(田中二郎(編)), 近代科学社, 1995, pp. 181-190.  
  70. 山本格也: ビットマップに基づくプログラミング言語Visulan, インタラクティブシステムとソフトウェアIII: 日本ソフトウェア科学会 WISS'95(田中二郎(編)), 近代科学社, 1995, pp. 151-160.  
  71. 暦本純一, 長尾確: ポストGUI: 今後の展望, chapter 3, pp. 178-198. In 平川, 安村 [60], February 1996.