知的インタフェース 例示によるプログラミング 予測インタフェース 制約インタフェース
例示によるプログラミング 類似操作が繰り返しあらわれる作業において、 ユーザが1,2回の操作の例をやってみせることでその繰り返しを 機械に覚えさせ、肩代わりさせる支援方法。 CUI emacsのkeyboard macro GUI Metamouse (Maulsby, Witten, & Kittlitz, ’98)繰り返し検出、turtle、特徴点 Chimera (Kurlander, ’93) 編集可能なGUIマクロ Mondorian (Lieberman, ’93) 操作からアイコン列生成 [文献] A. Cypher (ed.) “Watch What I do: Programming by Demonstration”, MIT Press, 1993
Metamouse(1/2)
Metamouse(2/2)
Chimera
Mondorian
依存関係にもとづくPBD 単純な作業では操作列の記録/再生で自動化 依存関係にもとづくPBD 途中でほかの作業が入る場合には不向き 作業の論理的な依存関係を記録し、必要な部分だけを再生 cf. make
依存関係にもとづくPBDの例 Geometer’s SketchPad (’93 Jackiw) dmake (’94 中山,宮本)
Geometer’s SketchPad (1/2)
Geometer’s SketchPad (2/2)
予測インタフェース RK-Pointer/Reactive Keyboard (Witten, 92) repeat & predict (増井,中山, 94) genhist (汎化履歴)(宮本 ’95) 依存関係にもとづく予測 pdraw (宮本, 原田’96) genhistのGUIへの応用
RK-pointer
Repeat & predict
汎化履歴の仕組み
制約 解が満たすべき条件のこと。 条件を満たす解の算出⇒制約解消系 インタラクションの立場から 制約GUI PBD 制約論理プログラム
制約の定義 変数が満たさなければいけない条件のこと。 正確には、 RをA上のn項関係としたとき、 変数x1,..., xnに関する条件 (x1,..., xn)∈ R を制約(constraint) という。 通常Rに対応する述語rを用いて r(x1,..., xn)
制約の種類 記号的制約 数値的制約 注意:制約系の種類はあとで 論理的制約 代数制約 x2+y3=5 等式制約 論理的制約 (x|y∧x|z)∧∀w.((w|y∧w|z)⊃ x < w) 代数制約 x2+y3=5 数値的制約 等式制約 不等式制約 x2+y3<5 注意:制約系の種類はあとで
制約GUI SketchPad(Sutherland,1963)が起源 レイアウト CAD 木のバランス グラフレイアウト ばねモデル、神経ネットワークモデル CAD 作図システム 単方向制約
制約系の分類 単調 非単調 問題解決一般: データフロー型(各制約が関数の入出力) 制約階層 算術領域: 数値解法、線型計画法 離散(有限)領域:探索アルゴリズム データフロー型(各制約が関数の入出力) 単方向 多方向 非単調 制約階層 (細部,コンピュータソフトウエア17-6(2000)による)
単方向制約 関数の入出力関係による制約 解法:有向グラフのトポロジカルソート w←y w y v←w×z v x←y+z x z
多方向制約 既知状態伝播法 自由度伝播法 x=y w y v=w×z v x=y+z x z
非単調制約系 満たしたほうが望ましい制約 望ましさの程度の階層(制約階層)(Borning,1987) ある制約を追加すると別の制約を諦めざるを得なくなる⇒解の膨張
PBDとの関係 編集作業(例示)←制約の追加 プログラム(マクロ)実行←制約再充足 典型的には作図などの単方向制約による関数プログラミング 制約プログラミングへの一般化
制約プログラミング 制約論理プログラミング fact(N,X) :- M is N-1, fact(M,Y), X is Y*N より宣言型のプログラミングへ 制約の集合としてのプログラム fact(N,X) :- M is N-1, fact(M,Y), X is Y*N fact(1,1). ?-fact(3,X) >> X=6 ?-fact(N,24) >>ERROR
論理プログラミングの仕組み ?-p(t) p(X) :- q(X,Y), r(Y) q(X,t) :- … 融合法(Resolution) 単一化 (Unification) X←t ? -q(t,Y), r(Y) 単一化から等号制約解消 (Semantic Unification)へ
制約論理プログラミング 制約論理プログラミング =(等号)制約解消系+融合法 Prolog I, II, III (Colmerauerら) CLP(X) (Jaffarら) CLP(R) CU-Prolog (橋田)
What’s Next 幾何自動証明の制約プログラミング言語化 GUI/PBD (Prologのアナロジー, BacktrackするCAD) …