平成8年度 委託研究ソフトウェアの提案

(23) KL/1による宣言型三次元アルゴリズム アニメーション システム

研究代表者:松岡 聡 講師
      東京大学 工学系研究科情報工学専攻
     (現・東京工業大学 情報理工学研究科助教授)




[目次]

  1. 研究の背景
  2. 研究の目的
  3. 研究内容
  4. 研究体制/研究方法
  5. 想定されるソフトウェア成果

[研究の背景]

従来より並列アルゴリズム開発や並列プログラミングは、デバッグ・チューニング・ソフトウェアメンテナンスなどが困難とされてきた。KL/1などの従来の言語と比較して並列性の抽象度の高い言語の登場によって、一定のの進歩はあったが、それでも(言語システムのみでは)全面的な解決には到らず、プログラミング環境、特にその中でも視覚的なプログラム開発支援は大変重用視されている。しかも近年はグラフィカルユーザインタフェース(以下,GUI)のアニメーション・三次元・その他のマルチメディア情報などを扱える先進的GUIシステムの登場とあいまって、プログラミング支援のための視覚化システムも一層の高度化が要求されている。

しかし、GUIや視覚化システムがそのように高度化するにつれ、アプリケーションのデータ・視覚的表現・その両者の対応関係が複雑化し、有効な視覚化を得るには多大な開発コストが要求されている。特に、三次元のアニメーションを活用した並列プログラムの視覚化システムでは、システム自身が複雑であるのみならず、ユーザが自身の並列アルゴリズムや並列プログラムの視覚化を三次元やアニメーションの機能をフルに生かして行うのは大変開発コストがかかってしまう。 AVSなどの計算の結果をデータフロー的に視覚化するようなシステムはあるが、それらは動的なプログラムの実行状態を表示するようには作られていない。並列プログラムの視覚化システムとしてはPolkaなどがあるが、三次元を含む複雑なデータ構造の視覚化には適していない。


[研究の目的]

我々は、過去より「絵・抽象的データ間の宣言的双方向変換の枠組」という、新しいGUIの構築パラダイムを提案し、宣言型のGUIシステムTRIPなどの各種システムを開発し、GUIに特化した制約解消技法や、例示からの制約の汎化手法などのソフトウェア基盤技術の研究を行ってきた。 本研究ではそれらの研究をベースとして、KL/1を含む並列言語で書かれたアルゴリズムやプログラムを、宣言的な視覚化規則により三次元のアルゴリズムアニメーションとしてユーザに提示するシステムTRIP-3DAを、KL/1を宣言規則の変換エンジンとして用いて開発する。ユーザは簡便な宣言的な規則によって様々な三次元の視覚化技法やアニメーション技法を用いることが可能となるため、 Visual Janusのような、従来の並列プログラム視覚化システムのように、ある特定の視覚化のスタイルや技法に縛られることがない。また、複雑なアニメーションなども、簡潔な記述によって可能であり、システムのデフォルトの視覚化も容易に修正できる。

このように、本システムを開発することにより、アルゴリズムやプログラムに適した様々な視覚化が容易に行えるようになることにより、並列アルゴリズムやプログラムの開発・デバッグ・チューニング・解説・教育などを高度に支援することが可能になる。TRIP-3DAは、KL/1やOpenGLなどの汎用のプラットフォーム上で高速に動作するように開発するため、IRISなどのグラフィックスワークステーションのみならず、通常のワークステーションや高性能PC上で三次元アニメーションを用いた並列アルゴリズムやプログラムの視覚化が行える。


[研究内容]

我々の従来からの研究の特色は、以前より提案している「絵・抽象的データ間の宣言的双方向変換の枠組」の時系列方向の拡張により、簡単な宣言的記述のみで、アプリケーション内のデータの動的挙動をアニメーションとして変換することができ、さらにGUI用の、動的な制約の連立が可能で、高速な制約解消アルゴリズムを実現するアルゴリズムDetailにより、レイアウトや動きに関する制約解消が行われることによって、アニメーションが半自動生成されることにある。

具体的には、このモデルにおけるアプリケーションデータの視覚化は,アプリケーションのデータ表現(AR)から 絵のデータ表現(PR)への一連の変換と考える.逆に,ユーザの絵に対する操作/変更のアプリケーションデータへの反映は, PR から AR への変換として捉える.抽象構造表現(ASR)と絵構造表現(VSR)とは,この変換をAR や PR に依存せずに実現するためのもので,それぞれ AR と PR との構造を表すための一般的な中間表現である.つまり, AR=>PR の変換を, ASR=>VSR の変換で表現する.また,それは宣言的に対応規則によって記述できる.例えば、グラフ構造の視覚化のためには、以下のような規則を宣言する:

 node(X) :-  
  circle(X,15,[]), 
  label(l(X),X,[]), 
  contain(X,l(X),0,[]). 
 edge(A,B) :-  
  connect(A,B,center,center,[]), 
  adjacent(A,B,1). 

これに対し、

 node(a). node(b). ... node(f). % ノード 
   edge(a,b). edge(a,c).    % エッジ 
  ... 
 edge(c,f). edge(d,b). 

のようなグラフの具体的なデータを与えると、自動的にグラフが描画される。

今回研究開発するシステムにおいては、このマッピングの部分にKLICを使用することにより、KL/1で書かれた並列アルゴリズム及びプログラムの視覚化に対応できるようにする。また、三次元の視覚化用のVSRプリミティブを用意し、高速な三次元表示に対応する。

さらに、アニメーションを扱うため,双方向変換モデルを拡張する。アニメーションの実行を,アプリケーションの実行にともなって変化していくアプリケーションデータの列,それに対応する図の列,及びそれらをつないでいく「操作」の列としてとらえ、アプリケーションが何らかの「操作」の実行をすると,モデル内の各データはそのデータ表現上での対応する「操作」によって次の状態に移り、同時に絵のデータも対応する「操作」によって,次の状態に移る.ここで、抽象構造表現 (ASR)上での操作を「抽象操作」絵構造表現(VSR)上での操作を「遷移操作」と呼ぶ。それぞれの「操作」間を変換規則で対応づけ,遷移方法の指定ができるようにすることにより、アニメーションの作成者は,この二つの間の対応規則を与えることで様々なアニメーションを作成できる。また、ユーザが指定しない部分は、操作のそれぞれの前後のモデル上でのデータの視覚化をキーフレームとして、その間を保管することにより、アニメーションのデータを自動生成する。

具体的的には、先のグラフ上でのなんらかのデータの遷移を、ノードの大きさの変化 (データがあるノードが大きい) で表すとすると、

traverse(X,Y) :- shrink(X, [smooth]), enlarge(X, [smooth]). 

といった遷移操作の変換規則を指定するだけで良く、ノードのサイズの変化による配置の変化などは、制約解消系が自動的に行う。また、本例では[smooth]といったアニメーションに対する属性を付加することにより、アニメーションの遷移時にそれぞれがスムースに(この場合は線形な大きさの変化)かつ同時に大きさの変化のアニメーションが起こることになる。

今回研究開発するシステムにおいては、このようなアニメーションの遷移則による生成を行う部分をKLICに移植することにより、並列アルゴリズムの視覚化を行えるようにする。特に、並列アニメーション時において、複数の遷移がある時点で同期するsynch()などのVSRプリミティブを用意することにより、ある物体が遷移中に別な物体が動作を始める、といった並行性を視覚化することが容易に可能になる。

最後に、サンプルプログラムとして、幾つかの並列アルゴリズムの三次元アニメーションの視覚化を通じ、有効な視覚化法を探る。

(以下が、TRIP関連の参考文献の一部)

[1] Shin Takahashi, Satoshi Matsuoka, Akinori Yonezawa, and Tomihisa Kamada.
A General Framework for Bidirectional Translation between Abstract and Pictorial Data. In Proceedings of the ACM Symposium on User Interface Software and Technology (UIST'91), Vol. 4, pp. 165-174, November 1991.

[2] Satoshi Matsuoka, Shin Takahashi, Tomihisa Kamada, and Akinori Yonezawa.
A General Framework for Bi-directional Translation between Abstract and Pictorial Data. ACM Transactions on Information Systems (TOIS), Vol. 10, No. 4, pp. 408-437, October 1992.

[3] Shin Takahashi, Ken Miyashita, Satoshi Matsuoka, and Akinori Yonezawa.
A framework for constructing animations via declarative mapping rules. In Proceedings of the 1994 IEEE Symposium on Visual Languages (VL'94), Vol. 10, pp. 314-322, 1994.

[4] Ken Miyashita, Satoshi Matsuoka, Shin Takahashi, and Akinori Yonezawa.
Declarative Programming of Graphical Interfaces by Visual Examples. In Proceedings of the ACM Symposium on User Interface Software and Technology (UIST'92), volume 5, pages 107-116, November 1992.

[5] Ken Miyashita, Satoshi Matsuoka, Shin Takahashi, and Akinori Yonezawa.
Interactive generation of graphical user interfaces by multiple visual examples. In Proceedings of the ACM Symposium on User Interface Software and Technology (UIST'94), volume 7, pages 85-94, 1994.

[6] Hiroshi Hosobe, Ken Miyashita, Shin Takahashi, Satoshi Matsuoka, and Akinori Yonezawa.
Locally simultaneous constraint satisfaction. In Proceedings of the Second Workshop on Principles and Practice of Constraint Programming, Lecture Notes in Computer Science. Springer-Verlag, 1994.


[研究体制/研究方法]

(1) 研究体制
       氏名       所属
研究代表者 松岡 聡  東京大学大学院工学系研究科情報工学専攻講師
研究協力者 高橋 伸  東京工業大学大学院情報理工学研究科数理計算科学専攻助手

(2) 研究の方法

研究は、Silicon Graphis IRIS IndyおよびOpenGL三次元アクセラレータの搭載されたPC上で行う。

1) まず、三次元アニメーション用の各VSRプリミティブの詳細仕様を決定する。特に、その具体的なインターフェースと、制約解消系へのインターフェースを、実行時に制約系に矛盾が起きないように設計する必要がある。

2) 次に現在 Sicstus Prologで書かれている前身システムであるTRIP2-aをKLIC上に移植する。変換則の部分はある程度プログラムに共通性は見られるものの、TRIP2-aはcut/failを多用しているため、Committed Choice型言語で動作させるためには新たに書き直す必要がある。

3.1) 移植したTRIP-2aシステムの上に、設計した新たなVSRプリミティブを実装する。

3.2) 同時に、制約解消系から、三次元のツールキットであるOpenGL/OpenInventor へのインターフェースや、その他のGUI部分を開発する。この部分は、様々な理由により主にC++で行う。

4) 3.1, 3.2を融合することにより、TRIP-3DAが完成する。

5) 完成したシステム上で、幾つかのKL/1の並列プログラムの視覚化を行う。


[想定されるソフトウェア成果]

(1)作成されるソフトウェア名称

宣言的規則による並列プログラムの三次元/アニメーション視覚化システム TRIP-3DA  

(2)そのソフトウェアの機能/役割/特徴

KL/1を含む並列言語で書かれたアルゴリズムやプログラムを、宣言的な視覚化規則により三次元のアルゴリズムアニメーションとしてユーザに提示するシステムTRIP-3DAを、KLICを宣言規則の変換エンジンとして用いて開発する。ユーザは簡便な宣言的な規則によって様々な三次元の視覚化技法やアニメーション技法を用いることが可能となるため、 Visual Janusのような、従来の並列プログラム視覚化システムのように、ある特定の視覚化のスタイルや技法に縛られることがない。また、複雑なアニメーションなども、簡潔な記述によって可能であり、システムのデフォルトの視覚化も容易に修正できる。

本システムにより、KLICの並列プログラムのユーザは、アルゴリズムやプログラムに適した様々な視覚化が容易に行えるようになることにより、並列アルゴリズムやプログラムの開発・デバッグ・チューニング・解説・教育などを高度に支援することが可能になる。TRIP-3DAは、KLICやOpenGLなどの汎用のプラットフォーム上で高速に動作するように開発するため、IRISなどのグラフィックスワークステーションのみならず、通常のワークステーションや高性能PC上で三次元アニメーションを用いた並列アルゴリズムやプログラムの視覚化が行える。

(3)ソフトウェアの構成/構造

システムは大きく分けて、KLICユーザのためのAPI及びライブラリ、宣言的規則変換部(ASR=>VSR)、制約解消部(VSR=>VR)、及び三次元アニメーション表示部の四つの部分よりなる。

1) KLICユーザのためのAPI及びライブラリは、並列プログラムのプログラマが視覚化したいアルゴリズム・プログラムで、状態の遷移を起こす部分をInteresting Eventとして宣言する述語群よりなる。例えば、ソーティングにおいて、ユーザはSwapという状態変化を起こす遷移に対して、対応するIntesting Eventを発生する述語をプログラム内に挿入する。

2) 宣言的規則変換部(ASR=>VSR)はKLICにより記述される。ここで、Interesting Event, およびTRIP-3DA内のアプリケーションプログラムに対応する内部状態が管理され、必要に応じて規則が適用されて、AR=>VRの変換が行われる。先に述べたとおり、この部分はPrologからKLICに書き直され、かつ並列・三次元のプリミティブが追加される。

3) 制約解消部はC,C++で記述され、すでに我々が用いている既存の制約解消系を三次元に対応するように拡張する。

4) 視覚化およびGUIの部分は、制約解消系からの幾何座標などの出力を、VSRにあった属性データと融合する。この段回で、キーフレーム補完やユーザからの属性指定を総合し、アニメーションのフレームを生成し、適当なタイムステップで画面上にアニメーションとして表示する。この部分は、三次元グラフィックスライブラリであるOpenGL/OpenInventorを用いて、C++で記述される。

(4)参考とされたICOTフリーソフトウェアとの関連

開発においては、KLICを並列プログラムの対象言語として含み、また、変換部分はKLICで記述される。

(5)使用予定言語および動作環境/必要とされるソフトウェア・パッケージ/ポータビリティなど

重複するが、変換部分はKLICで、その他の部分はC,C++で記述される。動作においてはOpenGL/OpenInventor ライブラリが必要である。OSは、OpenInventorがサポートされている主なOSをターゲットとする。具体的にはIRIX, Solaris, およびWindowsNTである。

(6)ソフトウェアの予想サイズ(新規作成分の行数)

1) KLICユーザのためのAPI及びライブラリ 500行 (C, KLIC) 
2) 宣言的規則変換部           3000行 (C, KLIC) 
3) 制約解消部(拡張部)           500行 (C, C++) 
4) 視覚化およびGUIの部分        4000行 (C, C++)  

(7)ソフトウェアの利用形態

繰り返しになるが、本システムにより、KLICを含む並列言語で書かれたアルゴリズムやプログラムを、宣言的な視覚化規則により容易に三次元のアルゴリズムアニメーションとして表示することが可能になる。これにより、並列アルゴリズムやプログラムの開発・デバッグ・チューニング・解説・教育などにおいて、大いなる手助けとなる。

通常の視覚化システムと違い、TRIP-3DAでは、ユーザに要求する記述量が極端に小さく、かつ宣言的な規則を用いるため、その理解が容易である。これが従来のプログラム視覚化システムと大いに異なるところで、ユーザは視覚化の概念的なデザインをした後、それをまず簡単な規則として記述し、かつ自分のプログラムの適当な箇所にInteresting Eventを生成する述語を挿入することが必要なだけである。オブジェクトのレイアウトや、アニメーション、同期など、数々の面倒な指定はシステムが自動的に行ってくれる。さらに、ユーザは好みに応じて規則のパラメータを変えたり、視覚化の規則を追加したリ、遷移規則に属性を追加するなどして、段階的にアニメーションをリファインしていくことが可能となる。この場合も、新たなアニメーションの要素間の同期などはシステムが自動的に行ってくれるため、ユーザは細かな時間軸上の同期や、配置などを考慮する必要はない。

(8)添付予定資料

簡単なソフトウェアの概念仕様書、及びユーザマニュアル、サンプルプログラムを添付する予定である。
通常のメンテナンスの必要なソフトウェアハウスの開発ではなく、PDSとして'AS IS'で配布するもののため、機能仕様書・詳細仕様書はその性格上全くそぐわないので、作成しない。


www-admin@icot.or.jp