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

13.DJ:Javaに基づく制約言語とシステム

研究代表者: 周 能法 助教授
九州工業大学



[目次]

  1. ブラッシュアップ対象ソフトウェア名称
  2. 体制/方法
  3. 想定されるブラッシュアップ成果

[ブラッシュアップ対象ソフトウェア名称]

[体制/方法]

(1) 体制

 氏名 所属
研究代表者周 能法九州工業大学
研究協力者藤田憲悦九州工業大学
研究協力者兼子聰介九州工業大学
研究協力者山内講二九州工業大学

(2) ブラッシュアップの方法

ベースクラスと制約の拡張: 周,山内
イベント処理機能の追加: 周
定理証明器のGUI: 藤田,周
時間割作成アプレット: 兼子,山内,周
マニュアルの充実化: 周


[想定されるブラッシュアップ成果]

  1. ブラッシュアップ項目

    • ソフトウェアの操作性の向上

       DJは,制約プログラミングを可能としたJavaの拡張である.DJは2つの目的で使用できる. 1つは,GUIの構築のためである. Javaでは,ユーザが適切なレイアウトマネージャを選ぶ必要があり,時にはグラフィカルコンポーネントのサイズや位置までも決める必要がある.一方DJでは,ユーザは, GUIを構成するコンポーネントとコンポーネント間の関係を,制約を利用して記述するだけでよい.コンポーネントの幾何学的な属性値はすべてシステムが決定する.2つめの目的として,DJは制約充足問題(CSP)を記述/解決するための汎用ツールとして役立つ.ユーザはCSPにおける変数や制約を記述するだけでなく,解をどのようにグラフィカルに表示するかも記述できる.

       我々が平成9年度にDJのコンパイラ(8000行のB-Prologプログラム)を開発し,また国旗を描くものから設計・スケジューリング問題を解くものまでいくつかの例題プログラムを作った.これらの例題は,Javaのクラスとクラス階層に関する知識なしでアプレットを宣言的に構築できるというDJの魅力をある程度示すことができた.

       問題を記述しやすくするために,ベースクラスとベース制約を拡張する必要がある.例えば、ジョブというベースクラスがあれば,スケジューリング問題が容易に記述できる.DJコンパイラは,新しいベースクラスと制約を簡単に導入できるように設計しているので,普通十数行程度のPrologプログラムを書けば一つのベースクラスが導入可能である.したがって,この作業は, 短期間で完了できる.

       さらに,間違い箇所を分かりやすいようなエラーメッセージを出力するように,コンパイラをブラッシュアップする.

    • 操作説明書や例題集の拡充

       現在のマニュアルは,以下の二点において改良すべきである.1)ベースクラスと制約を分かりやすく整理する.それぞれのクラスについて,各属性の意味を文章で説明するだけではなく,それらをグラフィカルに表示する.この部分をDJ自身を使って書くことを考えている. 2)DJの各構造をより多くの例を用いて分かりやすく解説する.

      現在リリースされているDJシステムに,20個の例題プログラムが含まれている.その中で最大なものでも,130行程度に過ぎない.DJの有効性を証明するために,以下の二つの中規模なプログラム例を開発したいと考えている.

      1. 定理証明器のGUIの構築.

         定理証明器のGUIでは,証明木をグラフィカルに表示する機能が要求され,また,ユーザ指示による証明木のインクリメンタルな表示機能やプログラムの実行機能も要求される.この応用例は,DJのレイアウト機能だけではなく,イベント処理機能のテストにも使える.

      2. 九州工業大学情報工学部の時間割りの自動作成アプレットの構築.

         現在,九州工業大学で時間割りの作成は,今だ手作業によって行なわれている. また,完成した時間割りを印刷して関係者に配布している.DJを使って, 時間割りの作成を支援し,そして時間割りをアプレットの形でWebページを通じて公開する.

  2. 上記のブラッシュアップによるユーザの立場からみた改善点

    現在,好奇心を持ってJavaを勉強する人は多いが,実際にJavaを使って役立つアプレットを書いている人はまだ少ない.これは,多くの人がJavaのAWTで挫折してしまうからである.DJは,Javaの拡張言語である.ユーザがAWTに関する知識なしで,DJの自動レイアウト機能と簡単なイベント処理機能を使えば,いろいろな応用を簡単に構築することができる.このため,改善されたDJシステムは,リソースとして十分価値があり,Webの設計を含む多くの応用に使われることが期待できる.

    ユーザの立場から見ると,上記のブラッシュアップにより,DJは次の点において改良される.

    1. エラーメッセージが親切になり,プログラミング効率が向上する.
    2. ベースクラスと制約が増え,プログラムが短くなる.
    3. コンパイル時間の大部分がコンポーネントのレイアウトに費やされていたが,新しいレイアウトアルゴリズムを導入することによって,コンパイル時間を大幅に短縮するとこができる.

  3. 上記のブラッシュアップ以外のソフトウェア機能の改良

    DJを実用的なものにするために,以下の機能拡張を行なう必要がある.
    1. Webページのナビゲータなどを作成するのに不可欠なイベント処理機能を追加する.
    2. 上でも述べたように,ベースクラスと制約を拡張する.
    3. 大規模な配置問題を効率よく解くために,コンポーネントの拡大・縮小,コンポーネントの移動などの操作を組み合わせた配置アルゴリズムを導入する.

     上記の改良項目は,昨年の成果のブラッシュアップであるが,新規的なもの(例えば,改良)も含んでいる.しかし,言語仕様を変更する必要がなく,また実装言語としてPrologを使っているため,改良ソフトウエアは提出締切までに完了できる.


www-admin@icot.or.jp