(57)【特許請求の範囲】
【請求項１】
ツリー構造作成描画装置として動作するようにプログラムされ、表示装置と、前記表示装置上の表示領域の任意の座標位置を指示するイベントを発生するポインティングデバイスと、複数個のキーを有し、操作者によって押下されたキーを示すイベントを発生するキーボードとに接続可能なコンピュータであって、
ツリー構造を作成するためのプログラムおよび前記プログラムによって生成されるツリー構造のデータベースを格納する記憶手段を含み、
前記データベースは、
前記ツリー構造のノードごとに、前記ノードの属性値として、前記ノードの座標位置を示すデータと、テキスト型のデータであって前記座標位置に対応して表示される前記ノードのラベルとを有し、
前記表示装置、前記ポインティングデバイス、前記キーボード、および前記記憶手段に接続されるようにされ、前記記憶手段に格納されている前記プログラムを実行し、かつ前記ポインティングデバイス、および前記キーボードにより発生されるイベントに応答して、前記プログラムの実行を制御する中央演算処理装置をさらに含み、
前記中央演算装置は、前記プログラムに従い、
前記データベースの内容に変更があったことに応答して、前記データベース内の情報にしたがって前記表示領域上にツリー構造を描画するための前記プログラムのうちの第１のプログラム部分の処理を実行し、
前記中央演算処理装置に通知されたイベントが前記ポインティングデバイスにより発生されたイベントか、前記キーボードにより発生されたイベントかを判定するための前記プログラムのうちの第２のプログラム部分の処理を実行し、
前記イベントが前記ポインティングデバイスにより発生されたイベントであると判定されたことに応答して、前記ポインティングデバイスにより指定された前記表示領域上の座標位置および前記表示装置によって表示されたツリー構造の各ノードの座標位置の関係に基づきあるノードを特定し、前記ポインティングデバイスにより指定された前記表示領域上の座標位置および前記特定されたノードの座標位置の関係によって、ノードの生成処理と、処理対象のノードの選択処理とを選択的に実行するための前記プログラムのうちの第３のプログラム部分の処理を実行し、
前記イベントが前記キーボードにより発生されたイベントであると判定されたことに応答して、選択されているノードと、前記キーボード上で押下されたキーとにより定まる処理を前記データベース内のツリー構造に対して行なうための前記プログラムのうちの第４のプログラム部分の処理を実行し、
前記中央演算装置は、前記第４のプログラム部分の処理において、前記キーボード上で押下されたキーが、前記ツリー構造を変更することを指示する構造キーのうちスペースキーであると判定された場合に、前記処理対象のノードの前記ラベルの編集処理として前記ラベルに挿入されたスペースの位置に応じて、前記処理対象のノードを、前記スペースの挿入された前記ラベルのテキストを前記スペースにより特定される位置で分離したことに相当する２つのテキストをそれぞれラベルとする２つのノードに分離する変更を前記ツリー構造に対して行なう処理を実行する、コンピュータ。
【請求項２】
前記中央演算装置は、前記第３のプログラム部分の処理において、
前記イベントが前記ポインティングデバイスにより発生されたイベントであると判定されたことに応答して、前記ポインティングデバイスにより指定された前記表示領域上の座標位置および前記表示装置によって表示されたツリー構造の各ノードの座標位置の関係に基づきあるノードを特定する処理と、
前記ポインティングデバイスにより指定された前記表示領域上の座標位置が前記特定されたノードの座標位置の上側、下側、左側、右側のいずれにあるかを判定し、前記特定されたノードの親ノード、子ノード、左シスターノード、右シスターノードを生成する処理を選択的に行なう処理とを実行する、請求項１に記載のコンピュータ。
【請求項３】
前記中央演算装置は、前記第４のプログラム部分の処理において、
前記イベントが前記キーボードにより発生されたイベントであると判定されたことに応答して、前記キーボード上で押下されたキーが、前記構造キーと、処理位置の移動を指示するブラウズキーと、テキストキーとのいずれであるかを判定する処理と、
前記キーボード上で押下されたキーが前記構造キーのうちリターンキーであると判定されたことに応答して、選択されているノードに基づき、前記処理対象のノードの前記ラベルの編集処理において前記押下されたキーに付随する前記ラベル上での入力位置の移動と同じ方向へ新たな子ノードを追加する変更を前記ツリー構造に対して行なうための前記プログラムのうちの第５のプログラム部分の処理と、
前記キーボード上で押下されたキーが前記ブラウズキーであると判定されたことに応答して、前記ブラウズキーに予め割当てられている移動方向にしたがって、表示されているノードのラベル内での処理位置を順次移動させる処理と、
前記キーボード上で押下されたキーが前記テキストキーであると判定されたことに応答して、選択されているノードのラベルの処理位置に、入力されたテキストを挿入する処理を行なう、請求項１または２に記載のコンピュータ。
【請求項４】
表示装置と、前記表示装置上の表示領域の任意の座標位置を指示するイベントを発生するポインティングデバイスと、複数個のキーを有し、操作者によって押下されたキーを示すイベントを発生するキーボードとに接続可能なコンピュータをツリー構造作成描画装置として動作させるための方法であって、
前記コンピュータは、
ツリー構造を作成するためのプログラムおよび前記プログラムによって生成されるツリー構造のデータベースを格納する記憶手段を含み、
前記データベースは、
前記ツリー構造のノードごとに、前記ノードの属性値として、前記ノードの座標位置を示すデータと、テキスト型のデータであって前記座標位置に対応して表示される前記ノードのラベルとを有しており、
前記データベースの内容に変更があったことに応答して、前記データベース内の情報にしたがって前記表示領域上にツリー構造を描画するステップと、
前記中央演算処理装置に通知されたイベントが前記ポインティングデバイスにより発生されたイベントか、前記キーボードにより発生されたイベントかを判定するステップと、
前記イベントが前記ポインティングデバイスにより発生されたイベントであると判定されたことに応答して、前記ポインティングデバイスにより指定された前記表示領域上の座標位置および前記表示装置によって表示されたツリー構造の各ノードの座標位置の関係に基づきあるノードを特定し、前記ポインティングデバイスにより指定された前記表示領域上の座標位置および前記特定されたノードの座標位置の関係によって、ノードの生成処理と、処理対象のノードの選択処理とを選択的に実行するステップと、
前記イベントが前記キーボードにより発生されたイベントであると判定されたことに応答して、選択されているノードと、前記キーボード上で押下されたキーとにより定まる処理として、前記キーボード上で押下されたキーが、前記ツリー構造を変更することを指示する構造キーのうちスペースキーであると判定された場合に、前記処理対象のノードの前記ラベルの編集処理として前記ラベルに挿入されたスペースの位置に応じて、前記処理対象のノードを、前記スペースの挿入された前記ラベルのテキストを前記スペースにより特定される位置で分離したことに相当する２つのテキストをそれぞれラベルとする２つのノードに分離する変更を前記ツリー構造に対して行なう処理を実行するステップとを含む、方法。
【請求項５】
前記選択的に実行するステップは、
前記イベントが前記ポインティングデバイスにより発生されたイベントであると判定されたことに応答して、前記ポインティングデバイスにより指定された前記表示領域上の座標位置および前記表示装置によって表示されたツリー構造の各ノードの座標位置の関係に基づきあるノードを特定するステップと、
前記ポインティングデバイスにより指定された前記表示領域上の座標位置が前記特定されたノードの座標位置の上側、下側、左側、右側のいずれにあるかを判定し、前記特定されたノードの親ノード、子ノード、左シスターノード、右シスターノードを生成する処理を選択的に行なうステップとを含む、請求項４に記載の方法。
【請求項６】
前記データベース内のツリー構造に対して行なうステップは、
前記イベントが前記キーボードにより発生されたイベントであると判定されたことに応答して、前記キーボード上で押下されたキーが、前記構造キーと、処理位置の移動を指示するブラウズキーと、テキストキーとのいずれであるかを判定するステップと、
前記キーボード上で押下されたキーが前記構造キーのうちリターンキーであると判定されたことに応答して、選択されているノードに基づき、前記処理対象のノードの前記ラベルの編集処理において前記押下されたキーに付随する前記ラベル上での入力位置の移動と同じ方向へ新たな子ノードを追加する変更を前記ツリー構造に対して行なう構造キー処理ステップと、
前記キーボード上で押下されたキーが前記ブラウズキーであると判定されたことに応答して、前記ブラウズキーに予め割当てられている移動方向にしたがって、表示されているノードのラベル内での処理位置を順次移動させる処理を行なうステップと、
前記キーボード上で押下されたキーが前記テキストキーであると判定されたことに応答して、選択されているノードのラベルの処理位置に、入力されたテキストを挿入する処理を行なうステップとを含む、請求項４または５に記載の方法。
【請求項７】
表示装置と、前記表示装置上の表示領域の任意の座標位置を指示するイベントを発生するポインティングデバイスと、複数個のキーを有し、操作者によって押下されたキーを示すイベントを発生するキーボードとに接続可能なコンピュータをツリー構造作成描画装置として動作させるためのプログラムを記録したコンピュータ読取可能な記録媒体であって、
前記コンピュータは、
ツリー構造を作成するためのプログラムおよび前記プログラムによって生成されるツリー構造のデータベースを格納する記憶手段を含み、
前記データベースは、
前記ツリー構造のノードごとに、前記ノードの属性値として、前記ノードの座標位置を示すデータと、テキスト型のデータであって前記座標位置に対応して表示される前記ノードのラベルとを有しており、
前記プログラムによって、前記コンピュータが、
前記データベースの内容に変更があったことに応答して、前記データベース内の情報にしたがって前記表示領域上にツリー構造を描画する処理と、
前記中央演算処理装置に通知されたイベントが前記ポインティングデバイスにより発生されたイベントか、前記キーボードにより発生されたイベントかを判定する処理と、
前記イベントが前記ポインティングデバイスにより発生されたイベントであると判定されたことに応答して、前記ポインティングデバイスにより指定された前記表示領域上の座標位置および前記表示装置によって表示されたツリー構造の各ノードの座標位置の関係に基づきあるノードを特定し、前記ポインティングデバイスにより指定された前記表示領域上の座標位置および前記特定されたノードの座標位置の関係によって、ノードの生成処理と、処理対象のノードの選択処理とを選択的に実行する処理と、
前記イベントが前記キーボードにより発生されたイベントであると判定されたことに応答して、選択されているノードと、前記キーボード上で押下されたキーとにより定まる処理として、前記キーボード上で押下されたキーが、前記ツリー構造を変更することを指示する構造キーであると判定された場合に、前記処理対象のノードの前記ラベルの編集処理として前記ラベルに挿入されたスペースの位置に応じて、前記処理対象のノードを、前記スペースの挿入された前記ラベルのテキストを前記スペースにより特定される位置で分離したことに相当する２つのテキストをそれぞれラベルとする２つのノードに分離する変更を前記ツリー構造に対して行なう処理を実行する処理と、
を実行するように動作する、コンピュータ読取可能な記録媒体。
【請求項８】
前記選択的に実行する処理は、
前記イベントが前記ポインティングデバイスにより発生されたイベントであると判定されたことに応答して、前記ポインティングデバイスにより指定された前記表示領域上の座標位置および前記表示装置によって表示されたツリー構造の各ノードの座標位置の関係に基づきあるノードを特定する処理と、
前記ポインティングデバイスにより指定された前記表示領域上の座標位置が前記特定されたノードの座標位置の上側、下側、左側、右側のいずれにあるかを判定し、前記特定されたノードの親ノード、子ノード、左シスターノード、右シスターノードを生成する処理を選択的に行なう処理とを含む、請求項７に記載のコンピュータ読取可能な記録媒体。
【請求項９】
前記データベース内のツリー構造に対して行なう処理は、
前記イベントが前記キーボードにより発生されたイベントであると判定されたことに応答して、前記キーボード上で押下されたキーが、前記構造キーと、処理位置の移動を指示するブラウズキーと、テキストキーとのいずれであるかを判定する処理と、
前記キーボード上で押下されたキーが前記構造キーのうちリターンキーであると判定されたことに応答して、選択されているノードに基づき、前記処理対象のノードの前記ラベルの編集処理において前記押下されたキーに付随する前記ラベル上での入力位置の移動と同じ方向へ新たな子ノードを追加する変更を前記ツリー構造に対して行なう構造キー処理と、
前記キーボード上で押下されたキーが前記ブラウズキーであると判定されたことに応答して、前記ブラウズキーに予め割当てられている移動方向にしたがって、表示されているノードのラベル内での処理位置を順次移動させる処理と、
前記キーボード上で押下されたキーが前記テキストキーであると判定されたことに応答して、選択されているノードのラベルの処理位置に、入力されたテキストを挿入する処理とを含む、請求項７または８に記載のコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明はコンピュータ上でツリー構造を作成し、視覚的に描画するプログラムに関し、特に、いわゆるテキストエディタと同様の操作性で容易にツリー構造を作成することができるプログラムを記憶したコンピュータ読み取り可能な記録媒体、そのプログラムに基づいて動作するコンピュータ、およびコンピュータを用いてツリー構造を描画する方法に関する。
【０００２】
【従来の技術】
現代言語学の多くの学派では、文の構造をツリーで表すことが行なわれている。そのため、言語学の論文では、図１に示すようなツリー構造の図表が頻繁に用いられる。最近のパーソナルコンピュータの普及により、研究者がパーソナルコンピュータで論文とそのための図表とを作成し、学会誌に投稿することが普通となっている。
【０００３】
最初に、ツリー構造でよく用いられる用語について説明する。ここではたとえば図１に示されるツリー構造５０を例とする。なお、ツリーは数学のグラフ理論でいうグラフの一種であるから、一般的なグラフでの用語が使用されることが前提である。
【０００４】
図１に示されるツリー５０は、複数個のノード６０、６２、６４、６６、７０、７２、７４、７６、７８、８０、８４、８６、８８、９０と、これらをつなぐ枝とを含む。ノード６０のように、そこから各枝が出る根となるように指定されたノードのことをルートと呼ぶ。また、たとえばノード６６から先のすべてのノードからなるツリー１００のように、ルート以外のあるノードをルートとするようなツリーをツリー５０のサブツリーと呼ぶ。
【０００５】
図１に示す例では、ルートノード６０は、一文を表す。したがって「sentence」を表す文字「S」で表されている。このように、あるノードに割当られた、そのノードを表すテキストを「ラベル」と呼ぶ。たとえば「NP」は「Noun Phraseを表すラベルであり、「det」は定冠詞を表すラベルである。
【０００６】
図１に示すように、一般的に言語学の論文で現れるツリーでは、その「葉」には文中の単語がラベルとして割り当てられるのが通常である。
【０００７】
さて、言語学における論文のテキスト自体は、ワードプロセッサプログラムなどにより容易に作成できるが、ツリー構造の図表となるとテキストほど容易には行なえない。たとえばワードプロセッサプログラムに付随している作図機能を用いればツリー構造を作図することはできるが、言語学で用いるようなツリーを作成するための専用の機能をそなえていないので、ツリーの作成が容易でなく、できあがったツリーの形式が時として整わず、修正も容易には行なえない。
【０００８】
一方、言語学で使用されるようなツリー構造を作成するための専用のプログラム、たとえばStern Markによるxoobrというプログラムが存在する。そうしたプログラムではたとえば、新たなノードを作成する場合には必ずメニューから「新規ノードを作成」という項目を選択しなければならない。また、あるノードのラベルを入力する場合には、そのノードをマウスでクリックすることによりラベル入力のためのダイアログが開く。
【０００９】
こうして、従来のプログラムでは、ツリーに対してある操作を行なうためには、必ずメニューから必要な操作を選択したり、ある操作を行なうことにより現れるダイアログボックスに必要な情報を入力したりすることにより、ツリー構造を作成し表示している。
【００１０】
【発明が解決しようとする課題】
しかし、上記したような操作が不便なものであることは論を待たない。これを一般的なテキストエディタと呼ばれるものと比較してみればその操作性の低さは明らかである。テキストエディタで上記した様な方法で入力することをユーザに要求したりすれば、たちまち大変な非難を受けることになるだろう。
【００１１】
たとえば、テキストエディタで英語、ドイツ語、フランス語などを入力する際に、新たな単語を入力しようとするたびにメニューから「新たな単語を挿入」という項目を選択し、作成された単語位置をダブルクリックし、現れたダイアログにその単語を入力しなければならない場合を想像すれば、既存のツリー作成のためのプログラムの操作性の低さが理解できる。
【００１２】
現実のテキストエディタは、ポインティングデバイス、スペースキー、リターンキーなどの各種の編集キーをごく自然に用いて、画面上に現れた文書を自由に編集しながらテキスト入力できるようになっている。ツリー構造の入力においても、そのような操作性を実現することが望ましい。
【００１３】
それゆえに、本発明の目的は、直感的な操作方法で、キーボードおよびポインティングデバイスを用いてツリー構造を入力することができるツリー構造の編集のためのプログラム、そのプログラムを記録した記憶媒体、およびコンピュータ上でツリー構造を編集するための方法を提供することである。
【００１４】
この発明の他の目的は、テキストエディタを操作する場合と同様の感覚で、キーボードに用意された編集キーを用いてツリー構造を入力することができるツリー構造の編集のためのプログラム、そのプログラムを記録した記憶媒体、およびコンピュータ上でツリー構造を編集するための方法を提供することである。
【００１５】
【課題を解決するための手段】
請求項１に記載の発明にかかるコンピュータは、ツリー構造作成描画装置として動作するようにプログラムされ、表示装置と、表示装置上の表示領域の任意の座標位置を指示するイベントを発生するポインティングデバイスと、複数個のキーを有し、操作者によって押下されたキーを示すイベントを発生するキーボードとに接続可能なコンピュータであって、ツリー構造を作成するためのプログラムおよびプログラムによって生成されるツリー構造のデータベースを格納する記憶手段を含み、データベースは、ツリー構造のノードごとに、ノードの属性値として、ノードの座標位置を示すデータと、テキスト型のデータであって座標位置に対応して表示されるノードのラベルとを有し、表示装置、ポインティングデバイス、キーボード、および記憶手段に接続されるようにされ、記憶手段に格納されているプログラムを実行し、かつポインティングデバイス、およびキーボードにより発生されるイベントに応答して、プログラムの実行を制御する中央演算処理装置をさらに含み、中央演算装置は、プログラムに従い、データベースの内容に変更があったことに応答して、データベース内の情報にしたがって表示領域上にツリー構造を描画するためのプログラムのうちの第１のプログラム部分の処理を実行し、中央演算処理装置に通知されたイベントがポインティングデバイスにより発生されたイベントか、キーボードにより発生されたイベントかを判定するためのプログラムのうちの第２のプログラム部分の処理を実行し、イベントがポインティングデバイスにより発生されたイベントであると判定されたことに応答して、前記ポインティングデバイスにより指定された前記表示領域上の座標位置および前記表示装置によって表示されたツリー構造の各ノードの座標位置の関係に基づきあるノードを特定し、前記ポインティングデバイスにより指定された前記表示領域上の座標位置および前記特定されたノードの座標位置の関係によって、ノードの生成処理と、処理対象のノードの選択処理とを選択的に実行するための前記プログラムのうちの第３のプログラム部分の処理を実行し、前記イベントが前記キーボードにより発生されたイベントであると判定されたことに応答して、選択されているノードと、前記キーボード上で押下されたキーとにより定まる処理を前記データベース内のツリー構造に対して行なうための前記プログラムのうちの第４のプログラム部分の処理を実行し、前記中央演算装置は、前記第４のプログラム部分の処理において、キーボード上で押下されたキーが、ツリー構造を変更することを指示する構造キーのうちスペースキーであると判定された場合に、処理対象のノードのラベルの編集処理としてラベルに挿入されたスペースの位置に応じて、処理対象のノードを、スペースの挿入されたラベルのテキストをスペースにより特定される位置で分離したことに相当する２つのテキストをそれぞれラベルとする２つのノードに分離する変更をツリー構造に対して行なう処理を実行する。
【００１６】
ポインティングデバイスによって指定された座標位置と、表示されているノードとの位置関係によって処理対象のノードが特定され、さらにその位置関係に基づいて、ノードの生成処理またはノードの選択処理が行なわれる。ツリーの親子関係による位置の関係に関連して、新たなノードの生成を指定することができるので、ツリー構造を編集する上での操作者の負担が軽減される。
さらに、スペースキーを押すことにより、一つのノードを二つのノードに分離することができる。ちょうどテキストエディタにおいて、一つの単語中にスペースを挿入することによってその単語が二つの単語に分割されるのと同様で、直感的であり、ツリー構造の編集を行なう上での操作者の負担が軽減される。
【００１７】
請求項２に記載の発明にかかるコンピュータは、請求項１に記載の発明の構成に加えて、中央演算装置は、第３のプログラム部分の処理において、イベントがポインティングデバイスにより発生されたイベントであると判定されたことに応答して、ポインティングデバイスにより指定された表示領域上の座標位置および表示装置によって表示されたツリー構造の各ノードの座標位置の関係に基づきあるノードを特定する処理と、ポインティングデバイスにより指定された表示領域上の座標位置が特定されたノードの座標位置の上側、下側、左側、右側のいずれにあるかを判定し、特定されたノードの親ノード、子ノード、左シスターノード、右シスターノードを生成する処理を選択的に行なう処理とを実行する。
【００１８】
あるノードに対し、その情報の座標位置をポインティングデバイスで指定した場合には親ノードが、下方の座標位置を指定した場合には子ノードが、左側を指定した場合には左シスターノードが、右側を指定した場合には右シスターノードが、それぞれ生成される。ツリーにおけるノードの位置関係と対応した座標位置を指定すれば、所望のノードが生成できるので、操作者の操作の負担が軽減される。
【００１９】
請求項３に記載の発明にかかるコンピュータは、請求項１または２に記載の発明の構成に加えて、中央演算装置は、第４のプログラム部分の処理において、イベントがキーボードにより発生されたイベントであると判定されたことに応答して、キーボード上で押下されたキーが、構造キーと、処理位置の移動を指示するブラウズキーと、テキストキーとのいずれであるかを判定する処理と、キーボード上で押下されたキーが構造キーのうちリターンキーであると判定されたことに応答して、選択されているノードに基づき、処理対象のノードのラベルの編集処理において押下されたキーに付随するラベル上での入力位置の移動と同じ方向へ新たな子ノードを追加する変更をツリー構造に対して行なうためのプログラムのうちの第５のプログラム部分の処理と、キーボード上で押下されたキーがブラウズキーであると判定されたことに応答して、ブラウズキーに予め割当てられている移動方向にしたがって、表示されているノードのラベル内での処理位置を順次移動させる処理と、キーボード上で押下されたキーがテキストキーであると判定されたことに応答して、選択されているノードのラベルの処理位置に、入力されたテキストを挿入する処理を行なう。
【００２０】
キーボードを使用し、かつ構造キーの入力位置の移動方向と同じ方向への処理位置の移動を伴うツリー構造の変更、ブラウズキーに割当てられている移動方向と一致する方向への処理位置の移動が行なえる。ちょうどテキストエディタと同様のキーボードの使用法によりツリーの編集を行なうことができるので、ツリー構造の編集を行なう上での操作者の負担が軽減される。
さらに、リターンキーを押すことにより、テキストエディタにおける新たな段落の生成と同様に処理対象のノードの子ノードを生成することができる。操作が直感的で、ツリー構造の編集を行なう上での操作者の負担が軽減される。
【００２５】
請求項４に記載の発明にかかる方法は、表示装置と、表示装置上の表示領域の任意の座標位置を指示するイベントを発生するポインティングデバイスと、複数個のキーを有し、操作者によって押下されたキーを示すイベントを発生するキーボードとに接続可能なコンピュータをツリー構造作成描画装置として動作させるための方法であって、コンピュータは、ツリー構造を作成するためのプログラムおよびプログラムによって生成されるツリー構造のデータベースを格納する記憶手段を含み、データベースは、ツリー構造のノードごとに、ノードの属性値として、ノードの座標位置を示すデータと、テキスト型のデータであって座標位置に対応して表示されるノードのラベルとを有しており、データベースの内容に変更があったことに応答して、データベース内の情報にしたがって表示領域上にツリー構造を描画するステップと、中央演算処理装置に通知されたイベントがポインティングデバイスにより発生されたイベントか、キーボードにより発生されたイベントかを判定するステップと、イベントがポインティングデバイスにより発生されたイベントであると判定されたことに応答して、ポインティングデバイスにより指定された表示領域上の座標位置および表示装置によって表示されたツリー構造の各ノードの座標位置の関係に基づきあるノードを特定し、ポインティングデバイスにより指定された表示領域上の座標位置および特定されたノードの座標位置の関係によって、ノードの生成処理と、処理対象のノードの選択処理とを選択的に実行するステップと、イベントがキーボードにより発生されたイベントであると判定されたことに応答して、選択されているノードと、キーボード上で押下されたキーとにより定まる処理として、キーボード上で押下されたキーが、ツリー構造を変更することを指示する構造キーのうちスペースキーであると判定された場合に、処理対象のノードのラベルの編集処理としてラベルに挿入されたスペースの位置に応じて、処理対象のノードを、スペースの挿入されたラベルのテキストをスペースにより特定される位置で分離したことに相当する２つのテキストをそれぞれラベルとする２つのノードに分離する変更をツリー構造に対して行なう処理を実行するステップとを含む。
【００２６】
ポインティングデバイスによって指定された座標位置と、表示されているノードとの位置関係によって処理対象のノードが特定され、さらにその位置関係に基づいて、ノードの生成処理またはノードの選択処理が行なわれる。ツリーの親子関係による位置の関係に関連して、新たなノードの生成を指定することができるので、ツリー構造を編集する上での操作者の負担が軽減される。
さらに、スペースキーを押すことにより、一つのノードを二つのノードに分離することができる。ちょうどテキストエディタにおいて、一つの単語中にスペースを挿入することによってその単語が二つの単語に分割されるのと同様で、直感的であり、ツリー構造の編集を行なう上での操作者の負担が軽減される。
【００２７】
請求項５に記載の発明にかかる方法は、請求項４に記載の発明の構成に加えて、選択的に実行するステップは、イベントがポインティングデバイスにより発生されたイベントであると判定されたことに応答して、ポインティングデバイスにより指定された表示領域上の座標位置および表示装置によって表示されたツリー構造の各ノードの座標位置の関係に基づきあるノードを特定するステップと、ポインティングデバイスにより指定された表示領域上の座標位置が、特定されたノードの座標位置の上側、下側、左側、右側のいずれにあるかを判定し、特定されたノードの親ノード、子ノード、左シスターノード、右シスターノードを生成する処理を選択的に行なうステップとを含む。
【００２８】
あるノードに対し、その情報の座標位置をポインティングデバイスで指定した場合には親ノードが、下方の座標位置を指定した場合には子ノードが、左側を指定した場合には左シスターノードが、右側を指定した場合には右シスターノードが、それぞれ生成される。ツリーにおけるノードの位置関係と対応した座標位置を指定すれば、所望のノードが生成できるので、操作者の操作の負担が軽減される。
【００２９】
請求項６に記載の発明にかかる方法は、請求項４または５に記載の発明の構成に加えて、データベース内のツリー構造に対して行なうステップは、イベントがキーボードにより発生されたイベントであると判定されたことに応答して、キーボード上で押下されたキーが、構造キーと、処理位置の移動を指示するブラウズキーと、テキストキーとのいずれであるかを判定するステップと、前記キーボード上で押下されたキーが前記構造キーのうちリターンキーであると判定されたことに応答して、選択されているノードに基づき、前記処理対象のノードの前記ラベルの編集処理において前記押下されたキーに付随する前記ラベル上での入力位置の移動と同じ方向へ新たな子ノードを追加する変更を前記ツリー構造に対して行なう構造キー処理ステップと、前記キーボード上で押下されたキーが前記ブラウズキーであると判定されたことに応答して、前記ブラウズキーに予め割当てられている移動方向にしたがって、表示されているノードのラベル内での処理位置を順次移動させる処理を行なうステップと、前記キーボード上で押下されたキーが前記テキストキーであると判定されたことに応答して、選択されているノードのラベルの処理位置に、入力されたテキストを挿入する処理を行なうステップとを含む。
【００３０】
キーボードを使用し、かつ構造キーの入力位置の移動方向と同じ方向への処理位置の移動を伴うツリー構造の変更、ブラウズキーに割当てられている移動方向と一致する方向への処理位置の移動が行なえる。ちょうどテキストエディタと同様のキーボードの使用法によりツリーの編集を行なうことができるので、ツリー構造の編集を行なう上での操作者の負担が軽減される。
さらに、リターンキーを押すことにより、テキストエディタにおける新たな段落の生成と同様に処理対象のノードの子ノードを生成することができる。操作が直感的で、ツリー構造の編集を行なう上での操作者の負担が軽減される。
【００３５】
請求項７に記載の発明にかかる記憶媒体は、表示装置と、表示装置上の表示領域の任意の座標位置を指示するイベントを発生するポインティングデバイスと、複数個のキーを有し、操作者によって押下されたキーを示すイベントを発生するキーボードとに接続可能なコンピュータをツリー構造作成描画装置として動作させるためのプログラムを記録したコンピュータ読取可能な記録媒体であって、コンピュータは、ツリー構造を作成するためのプログラムおよびプログラムによって生成されるツリー構造のデータベースを格納する記憶手段を含み、データベースは、ツリー構造のノードごとに、ノードの属性値として、ノードの座標位置を示すデータと、テキスト型のデータであって座標位置に対応して表示されるノードのラベルとを有しており、プログラムによって、コンピュータが、データベースの内容に変更があったことに応答して、データベース内の情報にしたがって表示領域上にツリー構造を描画する処理と、中央演算処理装置に通知されたイベントがポインティングデバイスにより発生されたイベントか、キーボードにより発生されたイベントかを判定する処理と、イベントがポインティングデバイスにより発生されたイベントであると判定されたことに応答して、ポインティングデバイスにより指定された表示領域上の座標位置および表示装置によって表示されたツリー構造の各ノードの座標位置の関係に基づきあるノードを特定し、ポインティングデバイスにより指定された表示領域上の座標位置および特定されたノードの座標位置の関係によって、ノードの生成処理と、処理対象のノードの選択処理とを選択的に実行する処理と、イベントがキーボードにより発生されたイベントであると判定されたことに応答して、選択されているノードと、キーボード上で押下されたキーとにより定まる処理として、キーボード上で押下されたキーが、ツリー構造を変更することを指示する構造キーであると判定された場合に、処理対象のノードのラベルの編集処理としてラベルに挿入されたスペースの位置に応じて、処理対象のノードを、スペースの挿入されたラベルのテキストをスペースにより特定される位置で分離したことに相当する２つのテキストをそれぞれラベルとする２つのノードに分離する変更をツリー構造に対して行なう処理を実行する処理と、を実行するように動作する、コンピュータ読取可能な記録媒体。
【００３６】
ポインティングデバイスによって指定された座標位置と、表示されているノードとの位置関係によって処理対象のノードが特定され、さらにその位置関係に基づいて、ノードの生成処理またはノードの選択処理が行なわれる。ツリーの親子関係による位置の関係に関連して、新たなノードの生成を指定することができるので、ツリー構造を編集する上での操作者の負担が軽減される。
さらに、スペースキーを押すことにより、一つのノードを二つのノードに分離することができる。ちょうどテキストエディタにおいて、一つの単語中にスペースを挿入することによってその単語が二つの単語に分割されるのと同様で、直感的であり、ツリー構造の編集を行なう上での操作者の負担が軽減される。
【００３７】
請求項８に記載の発明にかかる記憶媒体は、請求項７に記載の発明の構成に加えて、選択的に実行する処理は、イベントがポインティングデバイスにより発生されたイベントであると判定されたことに応答して、ポインティングデバイスにより指定された表示領域上の座標位置および表示装置によって表示されたツリー構造の各ノードの座標位置の関係に基づきあるノードを特定する処理と、ポインティングデバイスにより指定された表示領域上の座標位置が特定されたノードの座標位置の上側、下側、左側、右側のいずれにあるかを判定し、特定されたノードの親ノード、子ノード、左シスターノード、右シスターノードを生成する処理を選択的に行なう処理とを含む。
【００３８】
あるノードに対し、その情報の座標位置をポインティングデバイスで指定した場合には親ノードが、下方の座標位置を指定した場合には子ノードが、左側を指定した場合には左シスターノードが、右側を指定した場合には右シスターノードが、それぞれ生成される。ツリーにおけるノードの位置関係と対応した座標位置を指定すれば、所望のノードが生成できるので、操作者の操作の負担が軽減される。
【００３９】
請求項９に記載の発明にかかる記憶媒体は、請求項７または８に記載の発明の構成に加えて、データベース内のツリー構造に対して行なう処理は、イベントがキーボードにより発生されたイベントであると判定されたことに応答して、キーボード上で押下されたキーが、構造キーと、処理位置の移動を指示するブラウズキーと、テキストキーとのいずれであるかを判定する処理と、キーボード上で押下されたキーが構造キーのうちリターンキーであると判定されたことに応答して、選択されているノードに基づき、処理対象のノードのラベルの編集処理において押下されたキーに付随するラベル上での入力位置の移動と同じ方向へ新たな子ノードを追加する変更をツリー構造に対して行なう構造キー処理と、キーボード上で押下されたキーがブラウズキーであると判定されたことに応答して、ブラウズキーに予め割当てられている移動方向にしたがって、表示されているノードのラベル内での処理位置を順次移動させる処理と、キーボード上で押下されたキーがテキストキーであると判定されたことに応答して、選択されているノードのラベルの処理位置に、入力されたテキストを挿入する処理とを含む。
【００４０】
キーボードを使用し、かつ構造キーの入力位置の移動方向と同じ方向への処理位置の移動を伴うツリー構造の変更、ブラウズキーに割当てられている移動方向と一致する方向への処理位置の移動が行なえる。ちょうどテキストエディタと同様のキーボードの使用法によりツリーの編集を行なうことができるので、ツリー構造の編集を行なう上での操作者の負担が軽減される。
さらに、リターンキーを押すことにより、テキストエディタにおける新たな段落の生成と同様に処理対象のノードの子ノードを生成することができる。操作が直感的で、ツリー構造の編集を行なう上での操作者の負担が軽減される。
【００４５】
【発明の実施の形態】
最初に、以下に述べる本実施の形態によるツリー編集システムにおけるツリー編集のための操作方法の特徴について説明する。その後に、そうした操作によってツリー構造の編集を可能とするコンピュータの構成と、プログラムの構成とについて詳述する。
【００４６】
［目標とする編集操作］
端的にいうと、このシステムにおけるツリー編集の操作は、テキストエディタにおけるテキスト編集の操作とよく似た直感的なものとなっている。それは、ツリー編集のための編集操作と、テキストエディタにおけるテキスト編集のための操作との間に、以下に述べるような類似性が見出せるからである。
【００４７】
たとえば、通常のテキストエディタでは、新たに単語を挿入したいときには、その箇所をクリックすればよい。それと同様に、以下で説明するツリー編集プログラムでは、新規にノードを追加したいときには、その場所をクリックすればよく、クリックした箇所によって適切なノードが追加される。たとえば図２に示されるように、ある親ノードが３つの子ノードを有しているときに、２番目の子ノードと親ノードとの間に新たなノードを作成したいときには、新たなノードを作成したい位置（親ノードと子ノードとの間の枝付近）にポインタ１１０を位置させてクリックする。すると、図３に示されるように、親ノードと２番目の子ノードとの間に、新たなノード１１２が生成される。
【００４８】
親ノードに対して新たな子ノードを作成するときには、その子ノードを作成したい位置をクリックする。たとえば、図４に示すように、二つの子ノードを有する親ノードに対して、それら二つの子ノードと同じレベルの新たな子ノードを追加する場合を考える。この場合には、その子ノードを追加したい位置にポインタ１１０を合わせてクリックする。すると、図５に示されるように、クリックした位置付近に新たな子ノード１１４が生成される。
【００４９】
テキストエディタの場合、単語と単語とはスペースによって分けられる。そこで、本実施の形態のシステムのツリー構造編集プログラムでは、同様にスペースキーによってノードとノードとを分離するようにした。具体的には次のような操作により、一つのノードが二つのノードに分離される。なお、以下の説明では、各ノードのラベルが自由に編集可能であることが前提となっており、後述するように本実施の形態のシステムのプログラムでは容易にラベルを編集することができる。
【００５０】
図６を参照して、上部に示すように、親ノードの下の子ノードのラベル「ＮＯＤＥ」の先頭にスペースを挿入する。すると、図６の下部に示されるように、子ノードが、スペースのみをラベルとする新たなノード１２０と、もともとのノードとに分離される。新たなノード１２０は、もともとのノードに対して左側に生成される。このようにあるノードの左側にある、そのノードの親と同じノードの子ノードを、そのあるノードの「左シスター」と呼ぶことにする。また、同じ親の子ノードのうち、最も左側にあるノードを「先頭の左シスター」と呼ぶこととする。
【００５１】
ノードのラベルの末尾にスペース入力した場合も同様である。図７を参照して、子ノードのラベル「ＮＯＤＥ」の末尾にスペースを入力すると、図７の下部に示されるように、その子ノードはもともとのノード「ＮＯＤＥ」と、スペースのみをラベルとする新たなノード１２２とに分離される。新たなノード１２２は、もともとのノードに対して右側に生成される。このようにあるノードの右側にある、そのノードの親と同じノードの子ノードを、そのあるノードの「右シスター」と呼ぶことにする。
【００５２】
また、あるノードのラベルの文字列内にスペースを挿入した場合にも、そのノードは以下のように二つのノードに分離される。図８を参照して、ノードPARENTを親ノードとするノードを考える。このノードのラベルが「ＮＯＤＥ」であるものとする。図８の上段に示すように、このラベルの「N」と「O」の間にカーソル（黒い三角で示す。）を位置させてスペースキーを押すと、図８の中段に示すようにこのノードのラベルは「Ｎ  ＯＤＥ」となり、ＮとＯとの間にスペースが挿入される。ついで、スペースによってノードが分離される、という原則に則り、図８の下段に示すように、スペースの前にあった文字「Ｎ」をラベルとする新たなノード１２４と、スペースの後ろにあった文字列「ＯＤＥ」をラベルとする新たなノード１２６とが生成される。
【００５３】
さて、テキストエディタでは、段落の途中で「リターンキー」を押すと、一般にその段落がその箇所で分離され、改行されてそのときのカーソル位置以降の文字列を持つ新たな段落が生成される。本実施の形態のシステムのプログラムでは、これにならって、ノードの文字列の途中で「リターンキー」を押すことによって、そのノードのラベルとして、リターンキーを押したときのカーソル位置より前の文字列だけとし、カーソル位置より後の文字列をラベルとする新たなノードを、元のノードの子ノードとして生成する。
【００５４】
より具体的には、図９を参照して、ラベル「ＮＯＤＥ」を持つノードにおいて、ラベルの「Ｎ」の後にカーソル（黒い三角）をおいてリターンキーを押した場合を考える。このとき、図９の下段に示すように、もとのノードは、親ノード１３０と、子ノード１３２とに分離される。すなわち子ノード１３２が新たに生成される。親ノード１３０のラベルは、「Ｎ」であり、子ノード１３２のラベルは「ＯＤＥ」である。
【００５５】
このようにテキストエディタにおける各編集キーによる編集操作とよく似た直感的な編集操作を可能とするように、本実施の形態のシステムはプログラムされている。
【００５６】
［ハードウェア的構成］
以下、本実施の形態のシステムについて説明する。図１０に、本実施の形態にかかるシステムを構成するコンピュータの外観を示す。本実施の形態のシステムにおいて、ツリー編集プログラムを実行するコンピュータ１５０は、ノートブック型のものである。もちろん、コンピュータとしてはノートブック型に限らず、いわゆるデスクトップ型であってもよいし、また汎用のコンピュータではなく、専用のハードウェアを用いたものであってもよい。また、以下の説明では触れないが、いわゆるパーソナルコンピュータの場合、ネットワークを経由して、または直接に、プリンタを接続してツリーを印刷できることはいうまでもない。
【００５７】
図１０および図１１を参照して、本発明の一実施の形態にかかるプログラムがインストールされたコンピュータ１５０は、それぞれバス１８６に接続されたＣＰＵ（中央演算処理装置、Central Processing Unit ）１７６と、ＲＯＭ（Read Only Memory)１７８と、RAM（Random Access Memory）１８０と、補助記憶装置であるハードディスク１７４と、このコンピュータ１５０をネットワークに接続するためのネットワークインタフェース１９４と、ＵＳＢ（Universal Serial Bus）インタフェース１９０と、モデム１９２と、ＰＣＭＣＩＡ（Personal Computer Memory Card International Association）カードドライバ１９６と、ＣＤ−ＲＯＭ（Compact Disc Read-Only Memory）ドライブ１７０と、ＦＤ（Flexible Disk）ドライブ１７２と、表示装置としての液晶ディスプレイ１６２と、入力装置としてのキーボード１６６およびポインティングデバイスの一種であるタッチパッド装置１６８とを含んでいる。ＣＤ−ＲＯＭドライブ１７０にはＣＤ−ＲＯＭ１８２が装着される。ＦＤドライブ１７２にはＦＤ１８４が装着される。
【００５８】
既に述べたようにこの実施の形態のシステムにかかるツリー編集方法は、図１０および図１１に示したコンピュータハードウェアと、ＣＰＵ１７６により実行されるソフトウェアとにより実現される。一般的にこうしたソフトウェアはＣＤ−ＲＯＭ１８２、ＦＤ１８４等のコンピュータ読取り可能な記憶媒体に格納されて流通し、ＣＤ−ＲＯＭドライブ１７０またはＦＤドライブ１７２等により記憶媒体から読取られてハードディスク１７４に一旦格納される。または、当該装置がネットワークに接続されている場合には、ネットワーク上のサーバからネットワークインタフェース１９４を介してハードディスク１７４に一旦コピーされる。そうしてさらにハードディスク１７４からＲＡＭ１８０に読出されてＣＰＵ１７６により実行される。なお、前述したように、ネットワーク接続されている場合には、ハードディスク１７４に格納することなくＲＡＭ１８０に直接ロードして実行するようにしてもよい。また、ＰＣＭＣＩＡカード形式の不揮発性メモリに当該プログラムを格納しておき、ＣＰＵ１７６によって直接実行するようにしてもよい。
【００５９】
図１０および図１１に示したコンピュータ１５０のハードウェア自体およびその動作原理は一般的なものである。したがって、本発明の最も本質的な部分はＦＤ１８４、ＣＤ−ＲＯＭ１８２、ハードディスク１７４、ＰＣＭＣＩＡカード等の記憶媒体に記憶されたソフトウェア、またはネットワークを介して搬送される信号波として流通するソフトウェアである。
【００６０】
なお周知のように、タッチパッド装置１６８は、画面上のポインタを移動させるためのタッチパッドと呼ばれる装置と、ボタンとを含み、ボタンを押すこと（これを「クリックする」と呼ぶ。）により、そのときのポインタの座標を引数とするイベントが発生し、プログラムに通知される。
【００６１】
図１２を参照して、以下に説明するツリー編集プログラムは、データベース２００を生成し編集する。データベース２００は、通常はファイルオブジェクトとして図１１に示されるハードディスク、ＦＤ１８４などの補助記憶装置に格納されているが、このプログラムの実行時にはＲＡＭ１８０にロードされ、プログラムによる変更を受ける。プログラムの終了時には、このデータベース２００は再度ファイルオブジェクトとしてハードディスク１７４、ＦＤ１８４などの補助記憶装置に格納される。サーバを含むネットワークシステムの場合には、データベース２００はネットワークインタフェース１９４およびネットワークを介して、図示されないサーバ内の補助記憶装置に格納されることもある。
【００６２】
データベース２００は、ツリーのモデル２０２と、当該ツリーに含まれるノードオブジェクトのデータベース２０４とを含む。モデル２０２は、作成されているツリーに含まれるノードオブジェクトのリスト２１０を含んでいる。リスト２１０は、オブジェクトのデータベース２０４内の各ノードオブジェクトへのポインタを含んでおり、したがってリスト２１０をたどることにより編集中のツリーの全てのノードを知ることができる。当業者には明らかなように、ノードの追加時には当該ノードオブジェクトをデータベース２０４に追加するとともに、リスト２１０にその新たなノードオブジェクトへのポインタを追加し、リストの最後の要素からそのポインタへのリンクを追加する。削除はその逆である。
【００６３】
なお、データベース２００の内容に変化が生ずると、後に説明するようにプログラム実行時の所定のタイミングで描画ルーチン２１２が動作して液晶ディスプレイ１６２にツリーを描画する。この描画ルーチンは、後述するように各ノードオブジェクトに準備されているノード描画のためのメンバ関数を順に呼び出すことによりツリーを描画する。
【００６４】
図１３を参照して、ノードオブジェクトは、ＮＯＤＥクラス２２０のインスタンスとして生成される。ＮＯＤＥクラス２２０は、プロパティ２２２とメンバ関数２２４とを含む。
【００６５】
プロパティ２２２は、当該ノードオブジェクトに対応するノードのラベル（テキスト型）と、親ノード（ノード型）と、当該ノードの右シスターを示す右シスター（SISTER R）（ノード型）と、当該ノードの左シスターを示す左シスター（SISTER L）（ノード型）と、当該ノードの子ノードのうちの先頭ノードを示すFIRST DAUGHTER（ノード型）と、当該ノードが編集画面で選択されているか否かを示すSELECTED（Boolean）と、当該ノードの位置を示すＸ，Ｙ座標からなるPOSITIONとを含む。
【００６６】
メンバ関数２２４は、当該ノードに新たな親ノードを追加する関数であるADDMOTHERと、当該ノードに左シスターを追加する関数であるADDLEFTSISTERと、当該ノードに右シスターを追加する関数であるADDRIGHTSISTERと、当該ノードに対して先頭の子ノードを追加する関数であるADD1STDAUGHTERと、当該ノードを削除するための関数であるDELETENODE、当該ノードに対応する画面上または印刷上の図形を描画するための関数であるDRAWNODEと、当該ノードのラベル表示を変更するための関数であるUPDATELABELなどの関数を含む。
【００６７】
一般的に、このＮＯＤＥクラスから生成されたノードオブジェクトのインスタンスはいずれも同じデータ構造を有しているが、それぞれ一意な名称が与えられている。そしてその一意な名称と、プロパティまたは関数とを指定することにより、当該オブジェクトのプロパティの取出しまたは変更と、当該オブジェクトに関する構造上の操作とを行なうことができる。
【００６８】
図１４を参照して、本実施の形態における親ノードと子ノードとの間のリンク関係は以下のとおりとなっている。まず、親ノードは、自分の子ノードのうちの先頭ノードに対するリンク２３０をプロパティFIRST DAUGHTERとして含む。各子ノードは、親ノードへのリンク２３２、２３４をプロパティMOTHERとして含む。さらに子ノードは、自分の右側のシスターノードへのリンク２３６を、プロパティSISTER Lとして含む。子ノードはさらに、自分の左側のシスターノードへのリンク２３８を、プロパティSISTER Lとして含む。
【００６９】
なお、図２および図３、図４および図５に示したように、クリックしたときのポインタの位置によって親ノード、左シスター、右シスター、子ノードのいずれを生成すべきかを決定するために、本実施の形態では図１５に示すようにノード２５０の上下および左右に領域２５２、２５４、２５６、２５８を想定し、どの領域にポインタがあるときにクリックがされたかによってどのようなノードを生成するかを決定している。たとえば領域２５２の中にポインタがあるときにクリックされると、ノード２５０の親ノードにあたるノードを新規に生成し、領域２５４の中にポインタがあるときにノード２５０の左シスターにあたるノードを新規に生成し、などという処理を行なう。また、同様に、枝部分にポインタがあるときにクリックされたときにも、その枝の両端の親ノードと子ノードとの間に新たなノードを生成するようにしている。具体的にどのようにしてノードを生成するかについては後述する。
【００７０】
［ソフトウェア構成］
以下、図１６〜図２２を参照して、本実施の形態にかかるツリー編集プログラムの制御構造について説明する。
【００７１】
なお、ソフトウェアについては以下の事項に注意する必要がある。すなわち、以下に説明するような制御構造自体は、本実施の形態のシステムを構成する最上位レベルのソフトウェアが提供するが、実際の動作を実行するより下位のプログラム部分については、本実施の形態のシステムのソフトウェアの外部にあってもよいということである。たとえばコンピュータ上で動作するオペレーティングシステム（ＯＳ）に組み込まれているサービスプログラム、特定の言語で作成されたアプリケーションプログラムを実行するための環境としてコンピュータ上に構築される仮想マシン環境、特定の機能を実行するルーチンとしてＯＳに組み込まれ、プログラムの実行時に呼び出されるダイナミックリンクライブラリなどは、必ずしも本実施の形態のシステムのソフトウェアが流通する際にそのパッケージに含まれていなくともよい。コンピュータに本実施の形態のシステムのソフトウェアをインストールし、実行するときに、それらの資源がコンピュータ上に存在していればよい、ということである。
【００７２】
また、仮にそれら資源がコンピュータ上に存在していないことが判明した場合、ネットワークを介して自動的にそれら資源が準備されているほかのサーバなどをアクセスし、取り寄せた後にプログラムの実行を開始するようにしてもよい。
【００７３】
さらにはまた、以下に述べるソフトウェアの制御構造の全ての部分が同じ一つのコンピュータ上に存在している必要もない。たとえば上記したプログラムを機能単位に複数のプログラム部分に分割してアプリケーションサーバに蓄積しておき、必要なプログラム部分をその都度アプリケーションサーバから実行コンピュータのメモリにロードして実行させるようにしてもよい。
【００７４】
さらに、以下に述べるソフトウェアは、必ずしも単独で実行可能というわけでなくともよく、たとえば一般的なワードプロセッサプログラムにアドインプログラムとして組み込まれ、当該ワードプロセッサプログラムから呼び出されることによって起動し、結果として作成されたツリー図がもとのワードプロセッサプログラムで作成中の文書中に組み込まれるような形式であってもよい。本実施の形態のシステムのプログラムはそのようなものであることが想定されている。この場合、図の印刷はワードプロセッサプログラムで行なえるため、ツリー編集プログラムでは印刷ルーチンをインプリメントする必要がなく、プログラムサイズを小さくできる。
【００７５】
まず図１６に、メインルーチンに相当するプログラム部分をフローチャート形式で示す。このプログラムは、一般的なＧＵＩ（Graphical User Interface）を用いたＯＳが稼動しているパーソナルコンピュータ上で動作することが想定されているので、いわゆるイベント駆動形式のプログラムになっている。ＧＵＩを採用したＯＳでは一般的に、あるイベント（マウスのクリック、ダブルクリック、トリプルクリック、キーボード上のキーの押下、プログラム間メッセージの発生、ネットワークを介した他コンピュータからのアクセスなど）が起こったことをＯＳが検知すると、そのイベントがどのプログラムに関するものであるかをＯＳが判断し、そのプログラムに、そのイベントと、そのイベントに付随する情報（たとえばクリックがあったときのポインタ位置の座標など）とを渡す。当該プログラムでは、受取ったイベントがどのようなイベントかを内部で判断して必要な処理を行なう。なお以下の例では、可能性のある種々のイベントのうち、ツリー編集に特に関連のあるクリックイベントと、キーボードのいずれかのキーを押下したときのキーボードイベントとの二つについてだけ、行なわれる処理を示す。クリックイベントは、タッチパネル装置１６８のボタンの一方を操作者が押すことにより発生する。
【００７６】
図１６に示す例では、メインルーチンでは最初にまずイベントがどのような種類のイベントであるかを判定する（Ｓ００２）。イベントがクリックイベントであれば制御はＳ００４に、イベントがキーボードイベントであれば制御はＳ０２０に、それぞれ進む。なお、イベントがクリックイベントである場合、イベントにはタッチパネル装置１６８のスイッチを操作者が押したときのポインタの位置の座標（ｘ，ｙ）が付随しており、またキーボードイベントのときには、どのキーが押されたかについての情報が付随している。
【００７７】
Ｓ００４では、これ以前の処理でいずれかのノードが空ノードとなった場合にその空ノードの発生に伴う種々の処理が行なわれ、最後に画面の再描画が行なわれる。
【００７８】
続いてＳ００８では、クリックがあったときのポインタが、どのノードに関するものであるか、そしてそのノード（これを「指定されたノード」と呼ぶこととする。）に関して、図１５の領域２５０、２５２、２５４、２５６、２５８のいずれかの領域内、または枝上に位置しているかについての判定が行なわれる。クリックがあったときのポインタの位置が、どのノードに関しても図１５に示される領域２５０、２５２、２５４、２５６、２５８のどの中にもなく、かつどの枝の上でもない場合には何も処理せず制御はＳ０２８に進み、さもなければ制御はＳ０１６に進む。
【００７９】
Ｓ０１６では、クリックがあったときのポインタが、指定されたノードに対して図１５に示す領域２５０、２５２、２５４、２５６、２５８内、または枝上の、いずれに位置していたかについての判定が行なわれる。ポインタが領域２５０内にあった場合には制御はＳ０１８に進む。いずれかのノードに関して、ポインタが領域２５２にあった場合には制御はＳ０２０に進む。ポインタ領域２５４にあった場合には制御はＳ０２４に進む。ポインタが領域２５６にあった場合には制御はＳ０２６に進む。ポインタが領域２５８にあった場合には制御はＳ０２２に進む。なお、ポインタが領域２５２，２５４，２５６，２５８のいずれの中にもなく、かつ枝上にあった場合には、本実施の形態のシステムでは、ポインタがその枝に接続されている子ノードに関して領域２５２にあったものとして処理を行なう。この場合には制御はＳ０２０に進む。すなわち、ここでは、クリックイベントから引渡される指定された座標位置と、その座標位置と所定の関係を有するノードとの間の位置関係によって、ノードの選択と、新たなノードの生成とが選択的に実行される。
【００８０】
Ｓ０１８では，指定されたノード自体に関し、たとえばラベルの修正、ラベルへの入力に伴う新たなノードの生成またはノードの削除などの処理が行なわれる。その詳細については図１７を参照して後述する。
【００８１】
Ｓ０２０では、指定されたノードに対する親ノードの生成処理が、Ｓ０２２では、指定されたノードに対する右シスターノードの生成処理が、Ｓ０２４では、指定されたノードに対する左シスターノードの生成処理が、Ｓ０２６では、指定されたノードに対する新たな子ノードの生成処理が、それぞれ行なわれる。
【００８２】
さて、図１６のＳ００２で、発生したイベントがキーボードイベントであると判定された場合、制御はＳ００６に進み、押されたキーがどのキーであるかについての判定が行なわれる。なおここでは制御キーを大きく「構造キー」、「ブラウズキー」の二種類に分類しており、それ以外のキーを「テキストキー」とする。制御は、押されたキーが構造キーである場合はＳ０１０に、ブラウズキーである場合はＳ０１２に、テキストキーである場合はＳ０１４に、それぞれ進む。
【００８３】
Ｓ００８，Ｓ０２０，Ｓ０２２，Ｓ０２４，Ｓ０２６，Ｓ０１０，Ｓ０１２およびＳ０１４の各処理の後、制御はＳ０２８に進む。Ｓ０２８では、上記した各処理の結果、ツリーを変更する必要があればツリーを再描画する処理が実行される。Ｓ０２８の後、制御は先頭に戻り、次のイベントの発生を待機する。
【００８４】
こうして、図１６の処理をイベントが発生するたびに行なうことを繰返すことにより、本実施の形態のシステムのプログラムによってツリー構造が作成され、描画される。
【００８５】
図１７を参照して、図１６のＳ０１８で行なわれるノード処理について説明する。この処理では、クリックが行なわれたときのポインタがあるノード内に存在していたため、そのノードのラベルを修正したり、そのノードまたはそのノードをルートノードとするサブツリーを選択したりする処理が行なわれる。なお、本明細書では詳細な説明は行なわないが、選択したノードまたはサブツリーに関しては、ＧＵＩを使用したＯＳで一般的なように、いわゆるカットアンドペースト処理を行なうことができる。
【００８６】
ノード処理では、まず最初に全てのノードの選択を解除する処理が行われれる（Ｓ１０２）。選択されたノードなどはハイライトされて表示されるが、Ｓ１０２の処理を最初に行なうことにより、SELECTEDプロパティを「ＦＡＬＳＥ」に設定する。
【００８７】
続いて、Ｓ１０４において、クリックイベントがシングルクリックであったか、ダブルクリックであったか、トリプルクリックであったかの判定が行なわれる。この判定は、所定時間内に、ほぼ同一のポインタ位置でクリックが何回行なわれたかを調べることにより判定される。制御は、シングルクリックの場合にはＳ１０６に、ダブルクリックの場合にはＳ１０８に、トリブルクリックの場合にはＳ１１０に、それぞれ進む。
【００８８】
Ｓ１０６では、指定されたノードのラベル内で、クリックがあったときのポインタの位置に依存してカーソル（黒い三角）位置を設定する処理が行なわれる。カーソルの位置をどこに設定するかについては種々の方法が考えられる。最も普通なのは、ポインタ位置がラベルの左端より左側であればカーソルをラベルの先頭に位置させ、ポインタ位置がラベルの右端より右側であればカーソルをラベルの末尾に位置させ、ポインタ位置がラベルの左端と右端との間であるときはポインタ位置に最も近い二つの文字の間にカーソルを設定するという方法である。カーソル位置を設定すればこの処理は終了する。
【００８９】
Ｓ１０８では、ダブルクリックがあったときの処理を行なう。ノード領域内でこのようにダブルクリックがあったときには、そのノードを選択する。すなわち、そのノードオブジェクトのSELECTEDプロパティを「ＴＲＵＥ」とする。ここでSELECTEDプロパティが「ＴＲＵＥ」となったノードは、図１６のＳ０２８の処理において、画面上でハイライト表示されて選択されたことが示される。SELECTEDプロパティを「ＴＲＵＥ」に設定するとこの処理は終了する。
【００９０】
Ｓ１１０では、トリプルクリックがあったときの処理を行なう。ここでは、指定されたノードをルートノードとするサブツリーを選択する。具体的には、指定されたノードのSELECTEDプロパティを「ＴＲＵＥ」とした後、そのノードのFIRST DAUGHTERプロパティによって子ノードのうちの最も左側のノードを求め、そのノードのSELECTEDプロパティを「ＴＲＵＥ」に設定する。以下、これらノードFIRST DAUGHTERプロパティおよびSISTER Rプロパティを用いて、サブツリー内の全ノードを順に探索し、探索された各ノードのSELECTEDプロパティを全て「ＴＲＵＥ」に設定する。サブツリー内のノードの探索方法としては、周知の再帰的幅優先探索または深さ優先探索のいずれをも用いることができる。こうして指定されたノードをルートノードとするサブツリー内の全てのノードのSELECTEDプロパティを「ＴＲＵＥ」に設定し終われば、この処理は終了する。Ｓ００８での処理と同様、ここでSELECTEDプロパティを「ＴＲＵＥ」に設定されたノードは、図１６に示すＳ０２８においてハイライト表示される。つまり、指定されたノードをルートノードとするサブツリー全体がハイライト表示される。
【００９１】
以上で図１６のＳ０１８におけるノード処理は終了する。
前述のとおり、Ｓ０２０では、指定されたノードに対する親ノードの生成処理が、Ｓ０２２では、指定されたノードに対する右シスターノードの生成処理が、Ｓ０２４では、指定されたノードに対する左シスターノードの生成処理が、Ｓ０２６では、指定されたノードに対する新たな子ノードの生成処理が、それぞれ行なわれる。これら各処理の内容については、新たなノードに関する他ノードへのリンクの設定方法と、隣接する既存のノードのリンクの更新方法とのみが互いに異なるだけである。したがって、上記した各処理のうち、Ｓ０２４で行なわれる左シスター生成処理についてのみ図１８を参照してその詳細を後に説明し、他の処理については詳細な説明は繰返さない。当業者であれば、左シスター生成処理の内容を見れば、親ノード生成処理、右シスターノード生成処理、子ノード生成処理をどのように構成すればよいか容易に理解できるであろう。
【００９２】
図１８を参照して、図１６のＳ０２４では、指定されたノードに対応するノードオブジェクトのメンバ関数のADDLEFTSISTERが実行される。この関数では、まずＳ２０２において、指定されたノードの左シスターに相当するノードオブジェクトが生成される。この新たなノードオブジェクトの表示位置は所定の計算方法によって定められる。この例のように指定されたノードに対するシスターノードを生成する場合には、新たなノードのPOSITIONプロパティのＹ座標には指定されたノードのPOSITIONプロパティのＹ座標が代入される。さらに、指定されたノードと新たに生成されたノードとを含む、同じノードを親とするシスターノードの全てのＸ座標が、互いの間の距離が等しくなるように再計算される。
【００９３】
続いてＳ２０４では、新ノードのラベル、リンクなどに関する各種プロパティが設定される。LABELプロパティは空を表す「＜＞」に設定される。MOTHERプロパティは、指定されたノードの右シスターのMOTHERプロパティの値に設定される。SISTER Rプロパティは、指定されたノードの右シスターに設定される。SISTER Lプロパティは、指定されたノードの右シスターのSISTER Lプロパティの値に設定される。
【００９４】
さらにＳ２０６では、新たな親ノードを生成したことによる、隣接するノードのリンクプロパティを更新する処理が行なわれる。より具体的には、指定されたノードの右シスターのSISTER Lプロパティの値により特定されるノードのSISTER Rプロパティの値を、新たに生成されたノードとする。また、指定されたノードの右シスターのSISTER Lプロパティの値を、新たに生成されたノードとする。指定されたノードのMOTHERプロパティの値は新たに生成されたノードに設定される。
【００９５】
次にＳ２０８において、指定されたノードのMOTHERのFIRST DAUGHTERプロパティの値が、指定されたノードであるか否かを判定する。判定の結果がＹＥＳであれば、次のＳ２１０で、指定されたノードのMOTHERノードのFIRST DAUGHTERプロパティの値を新ノードに設定する。判定の結果がＮＯであればこの処理は行なわれない。
【００９６】
次にＳ２１２において、指定されたノードのリンクを更新し、指定されたノードのLEFT SISTERのリンクを更新する。さらにＳ２１４において、新たに生成されたノードをデータベース２００内のモデル２０２内のリスト２１０に追加する処理をしてメンバ関数ADDLEFTSISTERの実行を終了する。
【００９７】
Ｓ０２０，Ｓ０２２，Ｓ０２６で行なわれる処理も、この処理とほぼ同様である。
【００９８】
図１９を参照して、図１６のＳ０１０で行なわれる構造キーに対する処理について説明する。構造キーとは、具体的にはスペースキーおよびリターンキーのことをいう。
【００９９】
まずＳ３０２で、キーボードで押されたキーがどのキーであるかを判断し、スペースキーであればＳ３０６に、リターンキーであればＳ３１０に、それぞれ制御が進む。各処理が終了すれば構造キーの処理も終了である。
【０１００】
スペースキーおよびリターンキーの機能については図６〜図９を参照してすでに説明した。これら構造キーの機能を実現するためのルーチンの内容は互いによく似ている。したがってここでは、例としてスペースキーが押されたときに実行される処理のフローについて図２０を参照して説明する。
【０１０１】
図２０を参照して、まずＳ４０２において、スペースキーが押された箇所がラベルの中のどの位置であるかが判定される。スペースキーが押された箇所がラベルの先頭であれば制御はＳ４０４に、ラベルの内部であれば制御はＳ４０６に、ラベルの末尾であれば制御はＳ４１０に、それぞれ進む。
【０１０２】
Ｓ４０４では、指定されたノードに対して左シスターを追加する処理が行なわれる。この処理は、図１８を参照して説明した処理と全く同じである。Ｓ４０４の処理が終了するとこのルーチンを終わる。
【０１０３】
Ｓ４０６では、指定されたノードに対して右シスターを追加する処理が行なわれる。この処理は、図１８を参照して説明した処理と同様であり、当業者であれば図１８の説明に基づいて容易に実現できる。この処理によって、選択されたノードは二つのノードに分割され、左側のノードのラベルは、元のラベルの、スペースキーが押された位置より左側の部分となり、右側のノードのラベルは、元のラベルの、スペースキーが押された位置より右側の部分となる。そこで、Ｓ４０８で、二つのノードのラベルを上記したように更新して処理を終了する。
【０１０４】
Ｓ４１０では、選択されたノードに対して右シスターを追加する処理が行なわれる。この処理はＳ４０６で行なわれる処理と同じである。
【０１０５】
こうして、スペースキーが押された位置がラベル内のどこかによって３通りの処理が行なわれ、いずれの場合にも指定されたキーが２つに分割される。
【０１０６】
次に、図１６のＳ０１２で実行される処理について図２１を参照して説明する。ブラウズキーは、現在選択されているノード、または現在カーソルが設定されているノードから他のノードに移動していく際に用いられるキーであり、具体的には４つのカーソル移動キー（矢印キー）のことをさす。以下に述べるように、本実施の形態のシステムでは、いわゆるテキストエディタにおけるカーソル移動キーの機能とよく似た処理位置の移動機能をツリー構造上で実現している。
【０１０７】
図２１を参照して、ブラウズ処理では、最初にどの矢印キーが押されたかを判定する（Ｓ５０２）。そして、右矢印キーであれば制御はＳ５０４に、左矢印キーであれば制御はＳ５０６に、上矢印キーであれば制御はＳ５０８に、下矢印キーであれば制御はＳ５１０に、それぞれ進む。これら処理はいずれも同様にして実現できるので、ここでは右矢印キーが押されたときにＳ５０４で行なわれる処理についてのみ説明する。この説明に基づけば、当業者であれば他の処理についても容易に実現できるであろう。
【０１０８】
図２２を参照して、右矢印キー（→）が押されたときには、まずＳ６０２でカーソル（黒い三角）が、指定されたノードのラベルの末尾にあるか否かが判定される。カーソルがラベルの末尾にあれば、制御はＳ６０４に移り、さもなければ制御はＳ６０８に移る。
【０１０９】
Ｓ６０４では、指定されたノードが右シスターを有するか否かの判定を行う。もし右シスターが存在していなければカーソルを移動させず処理を終了する。もし右シスターが存在していれば、カーソルをその右シスターのラベルの先頭に設定して処理を終了する。
【０１１０】
一方、Ｓ６０８では、カーソルを当該ノードのラベル内の次の文字に移動させ、処理を終了する。
【０１１１】
したがってこの右矢印キーが押されたときの処理によって、カーソルがノードのラベルの末尾以外にあればカーソルが一文字だけ右方向に移動し、カーソルがノードのラベルの末尾にあるときには、もし右シスターがあればその右シスターの先頭にカーソルが移動し、もし右シスターがなければカーソルはそれ以上移動しない。すなわち、テキストエディタにもにた極めて自然な感覚でツリー上を矢印キーを用いて移動することができる。
【０１１２】
同様にして、左矢印キーがおされたときには左方向にカーソルを移動させ、上矢印キーが押されたときには親ノードにカーソルを移動させ、下矢印キーが押されたときには先頭の子ノードにカーソルを移動させることができる。
【０１１３】
以上のように、本実施の形態によれば、言語学の論文などで頻繁に使用されるツリー構造を、極めてわかりやすい操作によって容易に作成することができる。また、こうして作成されたツリーを、たとえばワードプロセッサプログラム中にオブジェクトとして埋め込むことができる規約にしたがったデータ形式で作成しておくことにより、ワードプロセッサで作成される文書中に埋め込み、見栄えのよい論文を容易に作成することができる。しかもこの場合、印刷に関してもワードプロセッサプログラムが実行するので、ツリー作成プログラムでは印刷に関するルーチンを用意しておく必要がない。
【０１１４】
もちろん、単独でこのプログラムが動作するようにしておくためには、印刷機能を実装しておいてもよい。
【０１１５】
上記した実施の形態では、親ノードのFIRST DAUGHTERプロパティの値には、最も左側の子ノードを設定した。しかし本発明はこれには限定されない。たとえば、最初に作成された子ノードをFIRST DAUGHTERプロパティの値に設定してもよい。
【０１１６】
また、上の実施の形態のシステムでは、ポインティングデバイスとしてタッチパッド装置を用いたが、これ以外にもいわゆるマウス、ライトペン、デジタイザなど種々のポインティングデバイスを用いることができる。
【０１１７】
さらに、上の説明では構造キーとしてスペースキー、リターンキーを挙げたが、本発明の構造キーはこれらには限定されず、特定のキーの組合わせ、ファンクションキーなどを構造キーとして用いることもできる。
【０１１８】
また、上の説明のコンピュータはノートブック型であり、したがって表示装置としては液晶表示装置を用いているが、これ以外にもＣＲＴ（Cathode Ray Tube）、プラズマ表示装置その他、一般的な表示装置を用いることができる。
【０１１９】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【図１】  言語学の論文で用いられるツリーの一例を示す図である。
【図２】  本発明の実施の形態のシステムの動作を示すための図である。
【図３】  本発明の実施の形態のシステムの動作を示すための図である。
【図４】  本発明の実施の形態のシステムの動作を示すための図である。
【図５】  本発明の実施の形態のシステムの動作を示すための図である。
【図６】  本発明の実施の形態のシステムの動作を示すための図である。
【図７】  本発明の実施の形態のシステムの動作を示すための図である。
【図８】  本発明の実施の形態のシステムの動作を示すための図である。
【図９】  本発明の実施の形態のシステムの動作を示すための図である。
【図１０】  本発明の実施の形態にかかるプログラムが動作するコンピュータの外観を示す図である。
【図１１】  図１０に示すコンピュータのハードウェアブロック構成を示すブロック図である。
【図１２】  本発明の実施の形態にかかるシステムで用いられるツリー構造を表すデータベースの構成を示す図である。
【図１３】  本発明の実施の形態にかかるシステムでのノードクラスの構成を示す図である。
【図１４】  本発明の実施の形態にかかるシステムでのノード間のリンク関係を示す図である。
【図１５】  本発明の実施の形態にかかるシステムにおいて、クリックした位置とノードとの関係を示すための図である。
【図１６】  本発明の実施の形態にかかるシステムを実現するためのプログラムのメインルーチンのフローチャートである。
【図１７】  ノード処理のフローチャートである。
【図１８】  左シスター生成処理のフローチャートである。
【図１９】  構造キーが押された際の処理のフローチャートである。
【図２０】  スペースキーが押された際の処理のフローチャートである。
【図２１】  ブラウズ処理のフローチャートである。
【図２２】  右矢印キーが押されたときの処理のフローチャートである。
【符号の説明】
１５０  コンピュータ、１６６  キーボード、１６８  タッチパッド装置、１７４  ハードディスク、１７６  ＣＰＵ、１７８  ＲＯＭ、１８０  ＲＡＭ、１８２  ＣＤ−ＲＯＭ、１８４  ＦＤ、２００  データベース、２２０  ノードクラス。
【図１】
0003802743.tif 000002
【図２】
0003802743.tif 000003
【図３】
0003802743.tif 000004
【図４】
0003802743.tif 000005
【図５】
0003802743.tif 000006
【図６】
0003802743.tif 000007
【図７】
0003802743.tif 000008
【図８】
0003802743.tif 000009
【図９】
0003802743.tif 000010
【図１０】
0003802743.tif 000011
【図１１】
0003802743.tif 000012
【図１２】
0003802743.tif 000013
【図１３】
0003802743.tif 000014
【図１４】
0003802743.tif 000015
【図１５】
0003802743.tif 000016
【図１６】
0003802743.tif 000017
【図１７】
0003802743.tif 000018
【図１８】
0003802743.tif 000019
【図１９】
0003802743.tif 000020
【図２０】
0003802743.tif 000021
【図２１】
0003802743.tif 000022
【図２２】
0003802743.tif 000023