特許第6162909号(P6162909)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 楽天株式会社の特許一覧

特許6162909木構造データ編集装置、木構造データ編集方法、及びプログラム
<>
  • 特許6162909-木構造データ編集装置、木構造データ編集方法、及びプログラム 図000002
  • 特許6162909-木構造データ編集装置、木構造データ編集方法、及びプログラム 図000003
  • 特許6162909-木構造データ編集装置、木構造データ編集方法、及びプログラム 図000004
  • 特許6162909-木構造データ編集装置、木構造データ編集方法、及びプログラム 図000005
  • 特許6162909-木構造データ編集装置、木構造データ編集方法、及びプログラム 図000006
  • 特許6162909-木構造データ編集装置、木構造データ編集方法、及びプログラム 図000007
  • 特許6162909-木構造データ編集装置、木構造データ編集方法、及びプログラム 図000008
  • 特許6162909-木構造データ編集装置、木構造データ編集方法、及びプログラム 図000009
  • 特許6162909-木構造データ編集装置、木構造データ編集方法、及びプログラム 図000010
  • 特許6162909-木構造データ編集装置、木構造データ編集方法、及びプログラム 図000011
  • 特許6162909-木構造データ編集装置、木構造データ編集方法、及びプログラム 図000012
  • 特許6162909-木構造データ編集装置、木構造データ編集方法、及びプログラム 図000013
  • 特許6162909-木構造データ編集装置、木構造データ編集方法、及びプログラム 図000014
  • 特許6162909-木構造データ編集装置、木構造データ編集方法、及びプログラム 図000015
  • 特許6162909-木構造データ編集装置、木構造データ編集方法、及びプログラム 図000016
  • 特許6162909-木構造データ編集装置、木構造データ編集方法、及びプログラム 図000017
  • 特許6162909-木構造データ編集装置、木構造データ編集方法、及びプログラム 図000018
  • 特許6162909-木構造データ編集装置、木構造データ編集方法、及びプログラム 図000019
  • 特許6162909-木構造データ編集装置、木構造データ編集方法、及びプログラム 図000020
  • 特許6162909-木構造データ編集装置、木構造データ編集方法、及びプログラム 図000021
  • 特許6162909-木構造データ編集装置、木構造データ編集方法、及びプログラム 図000022
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6162909
(24)【登録日】2017年6月23日
(45)【発行日】2017年7月12日
(54)【発明の名称】木構造データ編集装置、木構造データ編集方法、及びプログラム
(51)【国際特許分類】
   G06F 9/44 20060101AFI20170703BHJP
【FI】
   G06F9/06 620E
【請求項の数】8
【全頁数】22
(21)【出願番号】特願2016-570367(P2016-570367)
(86)(22)【出願日】2015年7月31日
(86)【国際出願番号】JP2015071883
(87)【国際公開番号】WO2017022041
(87)【国際公開日】20170209
【審査請求日】2016年11月30日
【早期審査対象出願】
(73)【特許権者】
【識別番号】399037405
【氏名又は名称】楽天株式会社
(74)【代理人】
【識別番号】110000154
【氏名又は名称】特許業務法人はるか国際特許事務所
(72)【発明者】
【氏名】青木 亮祐
(72)【発明者】
【氏名】安藤 麻美
(72)【発明者】
【氏名】鈴木 英友
【審査官】 坂庭 剛史
(56)【参考文献】
【文献】 特開2001−291112(JP,A)
【文献】 特許第5666758(JP,B2)
【文献】 特開平02−121030(JP,A)
【文献】 特開昭60−100226(JP,A)
【文献】 特開平01−243113(JP,A)
【文献】 特開平05−307476(JP,A)
【文献】 特開平04−205458(JP,A)
【文献】 特開平11−039145(JP,A)
【文献】 特開平07−182147(JP,A)
【文献】 原田賢一 編,“第III部 図式向きプログラミング用エディタ:4.YAC II エディタ”,構造エディタ,日本,共立出版株式会社,1987年 4月 1日,初版,pp.135−146,ISBN4-320-02311-0
【文献】 中島 隆,“木構造チャートツールの開発”,第36回(昭和63年前期)全国大会 講演論文集(II),日本,社団法人情報処理学会,1988年 3月16日,pp.901−902(3L-5)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/44
(57)【特許請求の範囲】
【請求項1】
木構造データと、前記木構造データに対応するテキストデータと、の変換ルールに基づいて、前記木構造データと前記テキストデータを相互に変換する変換手段と、
前記テキストデータを編集するためのテキストエディタの画面を表示手段に表示させる表示制御手段と、
前記テキストエディタの画面で選択範囲が指定された場合、当該選択範囲の位置に基づいて、前記木構造データの中から1以上のノードIDを選択するノード選択手段と、
前記テキストエディタの画面で前記選択範囲の貼り付け先が指定された場合、当該貼り付け先の位置に基づいて、前記木構造データの中から接続先のノードIDを決定する接続先決定手段と、
前記1以上のノードIDが示すノードが前記接続先のノードIDが示すノードに接続するように、前記木構造データを編集する木構造データ編集手段と、
を含み、
前記変換手段は、前記変換ルールに基づいて、前記木構造データ編集手段により編集された前記木構造データを前記テキストデータに変換し、
前記表示制御手段は、前記変換手段により変換された前記テキストデータに基づいて、前記テキストエディタの画面の表示を更新する、
ことを特徴とする木構造データ編集装置。
【請求項2】
前記木構造データ編集装置は、前記木構造データの各ノードのノードIDと、当該ノードを示す文字列のテキストデータ上での位置情報と、が関連付けられた位置データを取得する取得手段を更に含み、
前記ノード選択手段は、前記位置データと前記選択範囲の位置とに基づいて、前記1以上のノードIDを選択し、
前記接続先決定手段は、前記位置データと前記貼り付け先の位置とに基づいて、前記接続先のノードIDを決定し、
前記木構造データ編集手段は、前記1以上のノードIDが示すノードが前記接続先のノードIDが示すノードに接続するように、前記木構造データと前記位置データとを編集する、
ことを特徴とする請求項1に記載の木構造データ編集装置。
【請求項3】
前記位置データに格納される前記位置情報は、前記テキストデータの何文字目に各ノードを示す文字列があるかを示す情報である、
ことを特徴とする請求項2に記載の木構造データ編集装置。
【請求項4】
前記選択範囲は、前記テキストエディタの画面におけるテキストの切り取り範囲であり、
前記木構造データ編集装置は、前記1以上のノードIDの親ノードIDと子ノードIDを特定する手段を更に含み、
前記木構造データ編集手段は、前記1以上のノードIDが示すノードが前記接続先のノードIDが示すノードに接続し、かつ、前記子ノードIDが示すノードが前記親ノードIDが示すノードに接続するように、前記木構造データを更新する、
ことを特徴とする請求項1〜3の何れかに記載の木構造データ編集装置。
【請求項5】
前記接続先決定手段は、前記貼り付け先の位置の最も近くにテキストが表示されているノードのノードIDを、前記接続先のノードIDとして決定する、
ことを特徴とする請求項1〜4の何れかに記載の木構造データ編集装置。
【請求項6】
前記テキストエディタの画面は、所与のプログラミング言語のコードを入力するための画面であり、
前記変換手段は、前記テキストデータをコンパイルして前記木構造データに変換し、前記木構造データを逆コンパイルして前記テキストデータに変換する、
ことを特徴とする請求項1〜5の何れかに記載の木構造データ編集装置。
【請求項7】
木構造データと、前記木構造データに対応するテキストデータと、の変換ルールに基づいて、前記木構造データと前記テキストデータを相互に変換する変換ステップと、
前記テキストデータを編集するためのテキストエディタの画面を表示手段に表示させる表示制御ステップと、
前記テキストエディタの画面で選択範囲が指定された場合、当該選択範囲の位置に基づいて、前記木構造データの中から1以上のノードIDを選択するノード選択ステップと、
前記テキストエディタの画面で前記選択範囲の貼り付け先が指定された場合、当該貼り付け先の位置に基づいて、前記木構造データの中から接続先のノードIDを決定する接続先決定ステップと、
前記1以上のノードIDが示すノードが前記接続先のノードIDが示すノードに接続するように、前記木構造データを編集する木構造データ編集ステップと、
を含み、
前記変換ステップは、前記変換ルールに基づいて、前記木構造データ編集ステップにより編集された前記木構造データを前記テキストデータに変換し、
前記表示制御ステップは、前記変換ステップにより変換された前記テキストデータに基づいて、前記テキストエディタの画面の表示を更新する、
ことを特徴とする木構造データ編集方法。
【請求項8】
木構造データと、前記木構造データに対応するテキストデータと、の変換ルールに基づいて、前記木構造データと前記テキストデータを相互に変換する変換手段、
前記テキストデータを編集するためのテキストエディタの画面を表示手段に表示させる表示制御手段、
前記テキストエディタの画面で選択範囲が指定された場合、当該選択範囲の位置に基づいて、前記木構造データの中から1以上のノードIDを選択するノード選択手段、
前記テキストエディタの画面で前記選択範囲の貼り付け先が指定された場合、当該貼り付け先の位置に基づいて、前記木構造データの中から接続先のノードIDを決定する接続先決定手段、
前記1以上のノードIDが示すノードが前記接続先のノードIDが示すノードに接続するように、前記木構造データを編集する木構造データ編集手段、
としてコンピュータを機能させ、
前記変換手段は、前記変換ルールに基づいて、前記木構造データ編集手段により編集された前記木構造データを前記テキストデータに変換し、
前記表示制御手段は、前記変換手段により変換された前記テキストデータに基づいて、前記テキストエディタの画面の表示を更新する、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、木構造データ編集装置、木構造データ編集方法、及びプログラムに関する。
【背景技術】
【0002】
従来、テキストデータの編集画面上でユーザが任意の範囲を選択する技術が知られている。例えば、特許文献1には、テキストエディタにおいて矩形選択を行うためのコマンドが記載されている。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】http://www.gnu.org/software/emacs/manual/html_node/emacs/Rectangles.html
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記のようなテキストエディタは、例えば、プログラミング言語で木構造データをコーディングするために用いることができる。この場合、ユーザは、テキストエディタを用いて、ノードやブランチを示すテキストを入力して木構造データのコードを入力する。ユーザは、似た内容の部分木を繰り返し使用したいような場合、キーボードから直接入力すると手間がかかるため、部分木に対応するコード部分をコピーアンドペーストすることが考えられる。
【0005】
しかしながら、特許文献1の技術を利用して矩形選択を行い、部分木に対応するコード部分をコピーアンドペーストしても、あくまでテキストエディタ上でテキストが挿入されるだけなので、貼り付け先に部分木がきちんと接続しなかったり、貼り付け後に他のコードがずれてテキストで表現した木構造が崩れてしまったりすることがある。この場合、ユーザは、所望の木構造を示すように、ノードやブランチのテキストの位置をいちいち調整する必要があり、非常に手間がかかっていた。
【0006】
本発明は上記課題に鑑みてなされたものであって、その目的は、木構造データをテキストで編集する際のユーザの手間を軽減することである。
【課題を解決するための手段】
【0007】
上記課題を解決するために、本発明に係る木構造データ編集装置は、木構造データと、前記木構造データに対応するテキストデータと、を相互に変換する変換手段と、前記テキストデータの編集画面を表示手段に表示させる表示制御手段と、前記編集画面で選択範囲が指定された場合、当該選択範囲の位置に基づいて、前記木構造データの中から1以上のノードIDを選択するノード選択手段と、前記編集画面で前記選択範囲の貼り付け先が指定された場合、当該貼り付け先の位置に基づいて、前記木構造データの中から接続先のノードIDを決定する接続先決定手段と、前記1以上のノードIDが示すノードが前記接続先のノードIDが示すノードに接続するように、前記木構造データを編集する木構造データ編集手段と、を含み、前記変換手段は、前記木構造データ編集手段により編集された前記木構造データを前記テキストデータに変換し、前記表示制御手段は、前記変換手段により変換された前記テキストデータに基づいて、前記編集画面の表示を更新する、ことを特徴とする。
【0008】
また、本発明に係る木構造データ編集方法は、木構造データと、前記木構造データに対応するテキストデータと、を相互に変換する変換ステップと、前記テキストデータの編集画面を表示手段に表示させる表示制御ステップと、前記編集画面で選択範囲が指定された場合、当該選択範囲の位置に基づいて、前記木構造データの中から1以上のノードIDを選択するノード選択ステップと、前記編集画面で前記選択範囲の貼り付け先が指定された場合、当該貼り付け先の位置に基づいて、前記木構造データの中から接続先のノードIDを決定する接続先決定ステップと、前記1以上のノードIDが示すノードが前記接続先のノードIDが示すノードに接続するように、前記木構造データを編集する木構造データ編集ステップと、を含み、前記変換ステップでは、前記木構造データ編集ステップにより編集された前記木構造データを前記テキストデータに変換し、前記表示制御ステップでは、前記変換手段により変換された前記テキストデータに基づいて、前記編集画面の表示を更新する、ことを特徴とする。
【0009】
また、本発明に係るプログラムは、木構造データと、前記木構造データに対応するテキストデータと、を相互に変換する変換手段、前記テキストデータの編集画面を表示手段に表示させる表示制御手段、前記編集画面で選択範囲が指定された場合、当該選択範囲の位置に基づいて、前記木構造データの中から1以上のノードIDを選択するノード選択手段、前記編集画面で前記選択範囲の貼り付け先が指定された場合、当該貼り付け先の位置に基づいて、前記木構造データの中から接続先のノードIDを決定する接続先決定手段、前記1以上のノードIDが示すノードが前記接続先のノードIDが示すノードに接続するように、前記木構造データを編集する木構造データ編集手段、としてコンピュータを機能させ、前記変換手段は、前記木構造データ編集手段により編集された前記木構造データを前記テキストデータに変換し、前記表示制御手段は、前記変換手段により変換された前記テキストデータに基づいて、前記編集画面の表示を更新する、ことを特徴とする。
【0010】
また、本発明に係る情報記憶媒体は、上記のプログラムが記憶されたコンピュータ読み取り可能な情報記憶媒体である。
【0011】
また、本発明の一態様では、前記選択範囲は、前記編集画面におけるテキストの切り取り範囲であり、前記木構造データ編集装置は、前記1以上のノードIDの親ノードIDと子ノードIDを特定する手段を更に含み、前記木構造データ編集手段は、前記1以上のノードIDが示すノードが前記接続先のノードIDが示すノードに接続し、かつ、前記子ノードIDが示すノードが前記親ノードIDが示すノードに接続するように、前記木構造データを更新する、ことを特徴とする。
【0012】
また、本発明の一態様では、前記接続先決定手段は、前記貼り付け先の位置の最も近くにテキストが表示されているノードのノードIDを、前記接続先のノードIDとして決定する、ことを特徴とする。
【0013】
また、本発明の一態様では、前記編集画面は、所与のプログラミング言語のコードを入力するためのテキストエディタの画面であり、前記変換手段は、前記テキストデータをコンパイルして前記木構造データに変換し、前記木構造データを逆コンパイルして前記テキストデータに変換する、ことを特徴とする。
【発明の効果】
【0014】
本発明によれば、木構造データをテキストで編集する際のユーザの手間を軽減することが可能になる。
【図面の簡単な説明】
【0015】
図1】木構造データ編集装置のハードウェア構成を示す図である。
図2】木構造データ編集装置で実現される機能の一例を示す機能ブロック図である。
図3】テキストデータの一例を示す図である。
図4】木構造データの一例を示す図である。
図5図4の木構造データの各ノードの接続関係を示す図である。
図6】位置データの一例を示す図である。
図7】テキストエディタ上で矩形選択をする様子を示す図である。
図8図7のように矩形選択が行われた場合に選択されるノードIDを示す図である。
図9】貼付操作が行われる様子を示す図である。
図10】木構造データ編集部による編集後の木構造データを示す図である。
図11】木構造データ編集部による編集後の木構造データを示す図である。
図12】編集後のテキストデータを示す図である。
図13】編集後の木構造データに基づいて生成される位置データを示す図である。
図14】木構造データ編集装置において実行される処理の一例を示すフロー図である。
図15】変形例の機能ブロックを示す図である。
図16】変形例において指定された選択範囲を示す図である。
図17】変形例において指定された選択範囲を示す図である。
図18】変形例において指定された貼り付け先を示す図である。
図19】変形例において木構造データが更新される様子を示す図である。
図20】変形例において木構造データが更新される様子を示す図である。
図21】木構造データが更新された後の編集画面である。
【発明を実施するための形態】
【0016】
[1.木構造データ編集装置のハードウェア構成]
以下、本発明に関わる木構造データ編集装置の実施形態の例を説明する。図1は、木構造データ編集装置のハードウェア構成を示す図である。木構造データ編集装置1は、ユーザが利用可能なコンピュータであり、例えば、パーソナルコンピュータ、サーバコンピュータ、携帯情報端末(タブレット型コンピュータを含む)、又は携帯電話機(スマートフォンを含む)等である。木構造データ編集装置1は、制御部2、記憶部3、通信部4、操作部5、表示部6、及び入出力部7を含む。
【0017】
制御部2は、例えば、一又は複数のマイクロプロセッサを含む。制御部2は、記憶部3に記憶されたプログラムやデータに従って処理を実行する。記憶部3は、主記憶部及び補助記憶部を含む。例えば、主記憶部はRAMであり、補助記憶部は、ハードディスク又はソリッドステートドライブ等である。通信部4は、ネットワークカードを含む。通信部4は、ネットワークを介してデータ通信を行う。
【0018】
操作部5は、ユーザが操作を行うための入力デバイスであり、例えば、マウスやキーボード、タッチパネル等である。操作部5は、ユーザによる操作内容を制御部2に伝達する。表示部6は、例えば、液晶表示部又は有機EL表示部等である。表示部6は、制御部2の指示に従って画面を表示する。入出力部7は、外部機器とのデータの入出力を行う入出力インタフェースである。例えば、入出力部7は、コンピュータ読み取り可能な情報記憶媒体(例えば、光ディスクやメモリカード等)からデータやプログラムを読み取る。
【0019】
なお、記憶部3に記憶されるものとして説明するプログラム及びデータは、ネットワークに接続された他のコンピュータから、通信部4を介して記憶部3に供給されるようにしてもよいし、情報記憶媒体から、入出力部7を介して記憶部3に供給されるようにしてもよい。また、木構造データ編集装置1のハードウェア構成は、上記の例に限られず、種々のコンピュータのハードウェアを適用可能である。
【0020】
[2.木構造データ編集装置において実現される機能]
図2は、木構造データ編集装置1で実現される機能の一例を示す機能ブロック図である。図2に示すように、木構造データ編集装置1では、データ記憶部10、変換部11、表示制御部12、選択操作受付部13、ノード選択部14、貼付操作受付部15、接続先決定部16、及び木構造データ編集部17が実現される。
【0021】
本実施形態では、所与のプログラミング言語で実装される木構造データのソースコード(以降、単にコードという。)をテキストエディタで編集する際に、ユーザが矩形選択したテキストをコピーアンドペーストする場合を例に挙げて、木構造データ編集装置1の機能を説明する。なお、詳細は後述するが、テキストエディタのプログラムは、コンパイラと逆コンパイラを含んでおり、本実施形態では、木構造として2分木を説明する。
【0022】
[2−1.データ記憶部]
データ記憶部10は、記憶部3を主として実現される。データ記憶部10は、木構造データを編集するための各種データを記憶する。ここでは、データ記憶部10が記憶するデータの一例として、テキストデータ、木構造データ、及び位置データについて説明する。
【0023】
[テキストデータ]
図3は、テキストデータの一例を示す図である。図3では、テキストデータが後述の編集画面20で表示される様子を示している。図3に示すように、テキストデータは、木構造データに含まれるノードとブランチの各々を示すテキストを含む。テキストデータの内容は、キーボード等の操作部5からの入力信号に基づいて更新されたり、後述の変換部11によって更新されたりする。
【0024】
各文字列T(nは、自然数。本実施形態では、nの数値は、後述のノードIDに対応している。)は、ノードの内容を示す。例えば、各文字列Tは、所与のプログラミング言語のコードであり、条件式や関数等である。図3に示す例では、分岐が発生するノードを示す文字列T,T,T,T11,T12,T20,T21は、それぞれ条件式である。例えば、各条件式に示される条件が満たされる場合には、下の文字列Tが示すノード(2分木としては左のノード)に進み、条件が満たされない場合には、右の文字列Tが示すノード(2分木としては右のノード)に進む。例えば、文字列T,T,T11,T20は、引数のパラメータが所定の条件を満たすか否かを判定するif文であり、文字列T,T12,T21は、乱数に基づいて50%の確率で満たされる条件である。
【0025】
各記号は、2つのノードを接続するブランチを示す。各記号は、あるノードを示す文字列Tと他のノードを示す文字列Tとの間に配置される。記号は、2つの文字列Tを繋いでいることを視覚的に認識可能であればよく、任意の記号を適用可能である。例えば、ブランチを示す記号は、「−」(ハイフン)や「|」(縦線)であってもよいし、「+」(プラス)や「−」(マイナス)のような記号であってもよい。他にも例えば、「─」「│」「┐」「┌」「├」等の罫線であってもよい。本実施形態では、ブランチを示す記号として、「−」(ハイフン)と「|」(縦線)が用いられる場合を説明する。なお、各ブランチは、1つの記号で示されてもよいし、複数の記号で示されてもよい。
【0026】
各ノードを示す文字列Tは、上下左右の少なくとも1つの方向にブランチを示す記号が配置されており、各文字列Tと各記号との位置関係によって、木構造データが示す各ノードの接続関係が表現されている。
【0027】
例えば、ある1の文字列Tが、その下に配置された記号によって他の文字列Tと繋がっている場合、当該1の文字列Tが示すノードは、当該他の文字列Tが示すノードの親ノードである。図3に示す例では、文字列Tは、その下に配置された「|」によって、文字列Tと繋がっているため、文字列Tが示すノードは、文字列Tが示すノードの親ノードとなる。
【0028】
別の言い方をすれば、ある1の文字列Tが、その上に配置された記号によって他の文字列Tと繋がっている場合、当該1の文字列Tが示すノードは、当該他の文字列Tが示すノードの子ノードである。図3に示す例では、文字列Tは、その上に配置された「|」によって文字列Tと繋がっているため、文字列Tが示すノードは、文字列Tが示すノードの子ノードとなる。
【0029】
また例えば、ある1の文字列Tが、その右に配置された記号によって他の文字列Tと繋がっている場合、当該1の文字列Tが示すノードは、当該他の文字列Tが示すノードの親ノードである。図3に示す例では、文字列Tは、その右に配置された2つの「−」によって文字列T31と繋がっている。このため、文字列Tが示すノードは、文字列T31が示すノードの親ノードとなる。
【0030】
別の言い方をすれば、ある1の文字列Tが、その左に配置された記号によって他の文字列Tと繋がっている場合、当該1の文字列Tが示すノードは、当該他の文字列Tが示すノードの子ノードである。図3に示す例では、文字列T31は、その左に配置された2つの「−」によって文字列Tと繋がっているため、文字列T31が示すノードは、文字列Tが示すノードの子ノードとなる。
【0031】
本実施形態では、所定の文字列である「<main>」によって、根ノードを定義することができるようになっている。図3のコード例では、「<main>」と「|」で結ばれた文字列Tが示すノードが、根ノードである。即ち、「<main>」の文字列は、根ノードを定義するためのコードといえる。
【0032】
また、ある1の文字列Tの右及び下の何れにも記号が配置されていない場合、又は、記号が配置されているがその先に他の文字列Tが存在しない場合、当該1の文字列Tが示すノードは、葉ノードである。図3のコード例では、文字列T,T10,T17,T19,T27,T29,T30,T31は、その右にも下にも記号が存在しないので、これらのノードは、葉ノードである。
【0033】
なお、テキストデータには、ノードとブランチ以外のテキストを含んでいてもよく、例えば、ヘッダ部分やコメント部分を示す文字列を含んでいてもよい。
【0034】
[木構造データ]
図4は、木構造データの一例を示す図であり、図5は、図4の木構造データの各ノードの接続関係を示す図である。図4のように、木構造データは、木構造の各ノードの内容(データ部分)とノードの接続関係とを示し、例えば、ノードID、親ノードのノードID、子ノードのノードID、及びノードの内容が関連付けられている。なお、図5において、円で囲われた数値は、図4のノードIDである。
【0035】
ノードIDは、各ノードを一意に識別する情報であり、例えば、各ノードに割り振られるノード番号(ポインタ)である。本実施形態では、根ノードから前順走査を行って探索した各ノードに、1から順番にノードIDが付与されている。なお、図4に示す例では、各ノードIDに関連付けて、親ノードと子ノードの両方のノードIDが格納されている場合を説明しているが、何れか一方のみが格納されていてもよい。
【0036】
本実施形態では、テキストデータがプログラミング言語のコードを含む場合を説明するので、図4に示す木構造データは、図3に示すテキストデータをコンパイルすることで生成される。別の言い方をすれば、図4に示す木構造データを逆コンパイルすると、図3に示すテキストデータが生成される。なお、図4では、ノードの内容を文字列で記載しているが、実際にはノードの内容は機械語で表される。
【0037】
図3のコード例では、文字列Tが示すノードが根ノードであり、図4及び図5に示すように、このノードにノードID「1」が付与されている。ノードIDが「1」のノードは、根ノードであり親ノードを持たないため、図4に示すように、ノードIDが「1」のノードは、親ノードIDを持たず、親ノードID部分には「NULL」等が格納される。
【0038】
また、根ノードの子ノードは、文字列TとT31の各々が示すノードであり、これらのノードにノードID「2」と「31」が付与されている。このため、図4及び図5に示すように、ノードIDが「1」のノードの子ノードIDは、「2」と「31」になる。一方、ノードIDが「2」と「31」のそれぞれのノードの親ノードIDは、「1」になる。なお、先述したように、文字列T31が示すノード(ノードIDが「31」のノード)は、葉ノードなので、図4に示すように、子ノードIDを持たず、子ノードID部分には「NULL」等が格納される。他のノードも同様に、図3に示すテキストデータで定義されたように、各ノードの親子関係は図4及び図5のようになっている。即ち、文字列T,T,T11,T12,T20,T21のそれぞれは、条件式を示すので、これらの文字列が示すノードであるノードID「2」「3」「11」「12」「20」「21」のそれぞれのノードは、2つの子ノードを持つ。他のノードは、条件式ではなく関数なので、1つの子ノードを持つノード、又は、葉ノードとなる。
【0039】
[位置データ]
図6は、位置データの一例を示す図である。図6に示すように、位置データには、木構造データの各ノードのノードIDと、当該ノードを示す文字列Tのテキストデータ上での位置情報と、が関連付けられている。位置データは、後述する変換部11が、逆コンパイル時に生成してもよいし、コンパイル時に生成してもよい。位置情報は、テキストデータにおけるノードを示す文字列Tの位置を示せばよく、例えば、テキストデータの何文字目に、そのノードを示す文字列Tがあるかを示している。なお、位置情報は、テキストデータにおけるノードを特定可能であればよく、編集画面20における文字列Tの表示位置であってもよい。この場合、位置情報は、1次元的な情報ではなく、2次元的な情報が格納されることになる。
【0040】
なお、データ記憶部10が記憶するデータは、テキストデータや木構造データに限られない。データ記憶部10は、木構造データを編集するために必要なデータを記憶するようにすればよい。例えば、データ記憶部10は、テキストエディタのプログラムを記憶してもよい。
【0041】
[2−2.変換部]
変換部11は、制御部2を主として実現される。変換部11は、木構造データと、木構造データに対応するテキストデータと、を相互に変換する。これらの変換ルールを定義した変換データは、データ記憶部10に予め記憶されているものとする。変換データは、テキストデータから木構造データへの変換アルゴリズムと、木構造データからテキストデータへの変換アルゴリズムと、を含む。
【0042】
本実施形態では、変換データは、所与のプログラミング言語で使用されるコンパイラと、逆コンパイラと、であり、テキストエディタのプログラムに含まれている。コンパイラは、プログラミング言語で記述されたコードから、機械語で記述されたオブジェクトコードを生成するプログラムである。逆コンパイラは、機械語で記述されたオブジェクトコードを解析し、ユーザが視覚的に理解しやすいコードを作成するプログラムである。変換部11は、テキストデータをコンパイルして木構造データに変換し、木構造データを逆コンパイルしてテキストデータに変換する。
【0043】
例えば、変換部11は、次のようにしてテキストデータをコンパイルする。まず、変換部11は、テキストデータに含まれる所定の文字列Tに基づいて根ノードを特定する。本実施形態では、変換部11は、所定のコードである「<main>」の下に配置された「|」で接続されたコードを根ノードとして特定する。そして、変換部11は、根ノードを示す文字列Tの周囲(下又は右)にブランチを示す特定の記号「|」又は「−」があるか否かを判定する。変換部11は、「|」又は「−」があると判定した場合、その先にある文字列Tを根ノードの子ノードとして特定する。以降同様に、変換部11は、各ノードの周囲を探索して「|」又は「−」があるか否かを判定し、これらの記号があると判定した場合、その先にある文字列Tを当該ノードの子ノードとして特定する。変換部11は、ノードの周囲に「|」又は「−」が無いと判定した場合、又は、ノードの周囲に「|」又は「−」があるがその先に文字列Tがないと判定した場合、当該ノードを葉ノードとして特定する。変換部11は、上記のように各ノードの親子関係を特定し、所定の順番で各ノードにノードIDを付与することによって、木構造データを生成する。
【0044】
また例えば、変換部11は次のようにして木構造データを逆コンパイルする。まず、変換部11は木構造データの親ノードIDがないノード(「NULL」が格納されているノード)を、根ノードとして特定する。そして、変換部11は、テキストデータ上の所定位置に所定のコードである「<main>」を配置し、その下にブランチを示す特定の記号である「|」を配置し、その先に根ノードを示す文字列Tを生成して配置する。ノードと文字列Tの変換表は、予めデータ記憶部10に記憶しておくものとする。そして、変換部11は、木構造データの根ノードの子ノードIDによって子ノードを特定する。特定した子ノードが1つである場合、変換部11は、根ノードを示す文字列Tの下に「|」を配置し、その先に子ノードを示す文字列Tを配置する。一方、特定した子ノードが2つである場合、変換部11は、根ノードを示す文字列Tの下に「|」を配置し、その先にノードIDが小さい方の子ノードを示す文字列Tを配置する。次いで、変換部11は、根ノードを示す文字列Tの右に「−」を配置し、その先にノードIDが大きい方の子ノードを示す文字列Tを配置する。以降同様にして、変換部11は、子ノードの特定、ブランチを示す記号の配置、子ノードを示す文字列Tの配置を繰り返すことによって、木構造データからテキストデータを生成する。なお、変換部11は、ノードを示す文字列Tの文字数やその周囲のノードを示す文字列Tの位置や文字数に応じて、各文字列Tが結合しないように、ブランチを示す記号の数を調整してもよい。
【0045】
[2−3.表示制御部]
表示制御部12は、それぞれ制御部2を主として実現される。表示制御部12は、テキストデータの編集画面20を表示部6に表示させる。編集画面20は、テキストデータを編集するための画面であり、例えば、テキストエディタの画面である。本実施形態では、テキストデータがプログラミング言語のコードを含む場合を説明するので、編集画面20は、所与のプログラミング言語のコードを入力するためのテキストエディタの画面といえる。図3に示すように、編集画面20のメニューバー21には、テキストエディタの各種機能を利用するためのメニューが表示される。
【0046】
[2−4.選択操作受付部]
選択操作受付部13は、制御部2を主として実現される。選択操作受付部13は、操作部5からの入力信号に基づいて、編集画面20上の範囲を選択するための選択操作を受け付ける。選択範囲は、編集画面20におけるテキストのコピー範囲である。本実施形態では、選択操作は、編集画面20上で矩形選択をするための操作である場合を説明するが、必ずしも選択範囲は、矩形でなくてもよい。ユーザがメニューバー21の編集ボタンを選択したり、操作部5から所定のコマンドを入力すると矩形選択をしたりすることができる。
【0047】
図7は、テキストエディタ上で矩形選択をする様子を示す図である。図7に示すように、ユーザは、編集画面20に表示されたカーソル22を用いて開始位置と終了位置を指定すると、開始位置と終了位置を対角線とする長方形の選択範囲23が選択される。ここでは、選択範囲23内に、文字列T20〜T29とこれらを繋ぐブランチの記号とが含まれている。なお、ユーザは、カーソル22ではなく、マウスポインタ等を使用して矩形選択を行うようにしてもよい。
【0048】
[2−5.ノード選択部]
ノード選択部14は、制御部2を主として実現される。ノード選択部14は、編集画面20で選択範囲23が指定された場合、当該選択範囲23の位置に基づいて、木構造データの中から1以上のノードIDを選択する。本実施形態では、ノード選択部14は、位置データに基づいて、選択されたノードIDを特定する。例えば、ノード選択部14は、選択範囲23のテキストデータ上の位置を特定し、当該選択範囲23に位置が含まれるノードIDを特定する。
【0049】
図8は、図7のように矩形選択が行われた場合に選択されるノードIDを示す図である。ノード選択部14が位置データを参照して、図7で矩形選択された選択範囲23内を検索すると、検索結果として、ノードIDが「20」〜「29」の部分木(図8に破線で示す)のノードIDを得る。このため、ノード選択部14は、ノードIDが「20」〜「29」の10個の各ノードIDを、矩形選択で選択されたノードとして特定する。
【0050】
[2−6.貼付操作受付部]
貼付操作受付部15は、制御部2を主として実現される。貼付操作受付部15は、操作部5からの入力信号に基づいて、選択範囲23内のテキストを貼り付けるための貼付操作を受け付ける。図9は、貼付操作が行われる様子を示す図である。図9に示すように、ユーザは、編集画面20上の任意の位置をカーソル22で指定することによって、貼付操作を行う。なお、ユーザは、マウスポインタ等を使用して矩形選択を行うようにしてもよい。
【0051】
[2−7.接続先決定部]
接続先決定部16は、制御部2を主として実現される。接続先決定部16は、編集画面20で選択範囲23の貼り付け先が指定された場合、当該貼り付け先の位置に基づいて、木構造データの中から接続先のノードIDを決定する。本実施形態では、接続先決定部16は、貼り付け先の位置の最も近くにテキストが表示されているノードのノードIDを、接続先のノードIDとして決定する。
【0052】
例えば、接続先決定部16は、位置データに基づいて接続先のノードIDを決定する。具体的には、接続先決定部16は、貼付操作によって指定されたテキストデータ上の位置を特定する。そして、接続先決定部16は、当該特定した位置に最も近い位置のノードIDを探索し、そのノードIDを接続先として決定する。例えば、図9に示すように、貼付操作で指定された位置が文字列Tの付近である場合、接続先決定部16は、ノードIDが「2」のノードを接続先として決定する。
【0053】
[2−8.木構造データ編集部]
木構造データ編集部17は、制御部2を主として実現される。木構造データ編集部17は、ノード選択部14が特定した1以上のノードIDが示すノードが接続先のノードIDが示すノードに接続するように、木構造データを編集する。木構造データ編集部17が、接続先のノードIDを親ノードとして、ノード選択部14が特定した1以上のノードIDによる部分木を挿入するようにコンパイルを行い、木構造データを更新する。
【0054】
図10及び図11は、木構造データ編集部17による編集後の木構造データを示す図である。なお、ここでは、木構造データ編集部17が木構造データを編集するとノードIDを振り直す場合を説明する。図10及び図11に示すように、ノードIDが「1」〜「10」のノードは編集前と同じである。ノードIDが「11」〜「20」のノードは、図8で選択されたノードIDが「20」〜「29」のノードと同じ内容である。即ち、選択範囲23内の部分木が、接続先のノードIDである「2」の子ノードとして挿入されていることになる。図11に示すノードIDが「21」〜「40」のノードは、図8に示すノードIDが「11」〜「30」と同じ内容である。即ち、図8に示すノードIDが「11」のノードは、ノードIDが「2」のノードが親ノードであったが、選択範囲23内の部分木が挿入されたので、当該部分木の根ノードであるノードID「20」(図11では「12」)の子ノードとなっている。
【0055】
木構造データ編集部17の処理が実行されると、変換部11は、木構造データ編集部17により編集された木構造データをテキストデータに変換することになる。例えば、変換部11は、編集後の木構造データを逆コンパイルすることによってテキストデータに変換する。逆コンパイルの方法は、先述した通りである。また、木構造データ編集部17は、編集後の木構造データに基づいて位置データを更新する。木構造データ編集部17は、各ノードIDのノードを示す文字列Tの生成時に、その文字列Tがテキストデータ上のどの位置になるかを計算することで、位置データを更新すればよい。木構造データ編集部17の処理が実行されると、表示制御部12は、変換部11により変換されたテキストデータに基づいて、編集画面20の表示を更新する。
【0056】
図12は、編集後のテキストデータを示す図であり、図13は、編集後の木構造データに基づいて生成される位置データを示す図である。図12に示すように、編集後の木構造データを示すようにテキストデータが生成され、図13に示すように、編集後の木構造データを示すように位置データも更新される。即ち、図12に示すように、テキストエディタ上では、文字列T11〜T19の部分が挿入されているが、それより下のノードを示す文字列T20〜T40のレイアウトが崩れることなく、木構造を示すように保持されている。即ち、テキストエディタ上でコピーアンドペーストをした場合は、レイアウトが崩れてしまうが、本実施形態では、コピーアンドペースト後にテキストエディタ内のコンパイラと逆コンパイラとで上記説明した処理が行われて、木構造を保持したテキストデータを生成するので、レイアウトを保つことができる。
【0057】
[3.木構造データ編集装置において実行される処理]
図14は、木構造データ編集装置1において実行される処理の一例を示すフロー図である。図14に示す処理は、制御部2が、記憶部3に記憶されたプログラムに従って動作することによって実行される。本実施形態では、下記に説明する処理が実行されることにより、図2に示す機能ブロックが実現される。なお、ここでは、ユーザが、記憶部3に記憶されたテキストデータをテキストエディタで開いて、コード編集作業をする場合の処理を例に挙げて説明する。
【0058】
図14に示すように、まず、制御部2は、記憶部3に記憶されたテキストエディタを起動し、記憶部3に記憶されたテキストデータをRAMに展開し、編集画面20を表示部6に表示させる(S1)。制御部2は、操作部5からの入力を受け付ける(S2)。ここでは、ユーザは、編集画面20へのテキスト入力と、矩形選択をするための選択操作と、選択範囲をコピーするためのコピー操作と、コピー元のテキストを張り付けるための貼付操作と、テキストエディタを終了させる終了操作と、テキストエディタ上で可能な他の操作と、の何れかをすることができるものとする。
【0059】
ユーザがテキストを入力した場合(S2;テキスト入力)、制御部2は、記憶部3のRAMに記憶されたテキストデータを更新する(S3)。制御部2は、S3で更新されたテキストデータをコンパイルして木構造データを生成する(S4)。なお、S4の処理が実行される場合に、制御部2は、生成した木構造データを逆コンパイルしてテキストデータを更新するようにしてもよい。また、S4では、制御部2は、位置データを生成して記憶部3に記録するものとする。
【0060】
一方、S2において、ユーザが選択操作をした場合(S2;選択操作)、制御部2は、操作部5からの入力に基づいて、編集画面20上で選択された選択範囲を特定する(S5)。S5においては、制御部2は、編集画面20においてカーソル22の開始位置と終了位置とを取得し、これらを対角線とする長方形の領域を選択範囲23として特定し、選択範囲23の位置を示す情報を記憶部3に一時的に保持する。
【0061】
一方、S2において、ユーザがコピー操作をした場合(S2;コピー操作)、制御部2は、記憶部3に記憶された位置データを参照し、S5において取得した選択範囲に含まれるノードIDを選択する(S6)。S6においては、制御部2は、テキストデータを参照して選択範囲23に含まれる位置を特定する。そして、制御部2は、位置データを参照して選択範囲23内の位置のノードIDを特定することになる。制御部2は、S6で特定したノードIDを記憶部3に一時的に記録する。なお、通常のテキストエディタと同様、制御部2は、選択範囲23内のテキストを記憶部3の所定領域(クリップボード)に保持するようにしてもよい。
【0062】
一方、S2において、ユーザが貼付操作をした場合(S2;貼付操作)、制御部2は、貼付操作により指示された貼り付け先の位置を取得する(S7)。S7においては、制御部2は、貼付操作が行われた場合の編集画面20におけるカーソル22の位置に基づいて、テキストデータ上の貼り付け先の位置を取得する。
【0063】
制御部2は、位置データを参照して、S7で取得した貼り付け先の位置に最も近いノードIDを接続先として決定し(S8)、S6で選択したノードIDとS8で決定した接続先のノードIDとをコンパイラに入力して木構造データを編集する(S9)。S9においては、制御部2がコンパイルを実行すると、S6で選択したノードIDがS8で決定した接続先のノードIDの子ノードに挿入される。
【0064】
制御部2は、編集後の木構造データを逆コンパイラに渡し、テキストデータに変換し(S10)、S10で変換したテキストデータに基づいて、編集画面20の表示を更新する(S11)。S10においては、制御部2が逆コンパイルを実行すると、S9で編集された木構造データを示すテキストデータが生成される。なお、S10においては、制御部2は、新たな位置データを生成することになる。
【0065】
なお、S2において、ユーザがその他の操作をした場合(S2;その他の操作)、制御部2は、当該操作に応じた処理を実行する(S12)。例えば、その他の操作は、テキストデータを保存する操作やテキストエディタの設定を変更する操作等である。S2において、ユーザが終了操作をした場合(S2;終了操作)、本処理は終了する。
【0066】
以上説明した木構造データ編集装置1によれば、木構造データに対応するテキストデータをテキストエディタ上で編集する際に、選択範囲23内のコピーアンドペーストが指示されると、選択範囲23内のテキストを単純に貼り付けるのではなく、選択範囲23内のノードIDと接続先のノードIDをコンパイラに渡してコンパイルした後に木構造データを逆コンパイルするので、部分木の挿入を確実に実行するとともに、テキストデータ上のレイアウトが崩れることを防止することができる。このため、崩れたレイアウトを手作業で修正するようなことがなくなり、木構造データをテキストで編集する際のユーザの手間を軽減することができる。
【0067】
[4.変形例]
なお、本発明は、以上に説明した実施の形態に限定されるものではない。本発明の趣旨を逸脱しない範囲で、適宜変更可能である。
【0068】
例えば、実施形態では、テキストエディタ上でコピーアンドペーストをする場合を例に挙げて説明したが、カットアンドペーストをする場合も同様の処理が実行されるようにしてもよい。図15は、変形例の機能ブロックを示す図である。図15に示すように、変形例では、実施形態で説明した機能に加えて、親子特定部18が実現される。親子特定部18は、制御部2を主として実現される。親子特定部18は、ノード選択部14により選択された1以上のノードIDの親ノードIDと子ノードIDを特定する。
【0069】
図16及び図17は、変形例において指定された選択範囲23を示す図である。変形例における選択範囲23は、編集画面20におけるテキストの切り取り範囲といえる。図16のように選択範囲23が指定されると、選択範囲23内に文字列T21,T28,T29が含まれているので、図17に示すように、ノード選択部14は、位置データを参照して、ノードIDが「21」、「28」、「29」のノードを選択することになる(図17に破線で示す)。選択範囲23内のノードID選択方法は、実施形態で説明した方法と同じである。
【0070】
親子特定部18は、テキストデータ及び位置データを参照し、これら3つのノードからなる部分木の親ノードIDと子ノードIDを特定する。例えば、親子特定部18は、選択範囲23内の部分木の根ノードを示す文字列T21の上にある記号「|」で繋がれた文字列T20のノードID「21」を親ノードIDとして特定する。そして、親子特定部18は、文字列T21の下にある記号「|」で繋がれた文字列T22のノードID「22」を子ノードIDとして特定する。なお、文字列T29の下にはブランチを示す記号が無く、ノードID「29」のノードは葉ノードなので、子ノードIDは、「22」のみとなる。
【0071】
図18は、変形例において指定された貼り付け先を示す図である。図18に示す場合、接続先決定部16は、ノードID「12」を接続先として決定する。接続先のノードIDの決定方法は、実施形態で説明した方法と同じである。この場合、ユーザは、選択範囲23で選択したノードID「21」「28」「29」の部分木を切り取って、ノードID「12」の下に挿入することを指示している。
【0072】
木構造データ編集部17は、ノード選択部14により選択された1以上のノードIDが示すノードが接続先のノードIDが示すノードに接続し、かつ、子ノードIDが示すノードが親ノードIDが示すノードに接続するように、木構造データを更新する。接続先のノードIDへの接続方法は、実施形態と同じである。変形例では、木構造データ編集部17、実施形態で説明した処理に加えて、親子特定部18が特定した子ノードIDが親ノードIDに直接的に接続するようにコンパイルを行い、木構造データを更新することになる。
【0073】
図19及び図20は、変形例において木構造データが更新される様子を示す図である。図19及び図20に示すように、ノードIDが「1」〜「12」のノードは編集前と同じである。ノードIDが「13」、「19」、「20」のノードは、図8で選択されたノードIDが「21」「28」「29」のノードと同じ内容である。即ち、選択範囲23内の部分木が、接続先のノードIDである「12」の子ノードとして挿入されていることになる。図20に示すノードIDが「14」〜「18」のノードは、図8に示すノードIDが「13」〜「17」と同じ内容である。即ち、図8に示すノードIDが「13」のノードは、ノードIDが「12」のノードが親ノードであったが、選択範囲23内の部分木が挿入されたので、当該部分木の根ノードであるノードID「21」(図20では「14」)の子ノードとなっている。また、図20に示すノードIDが「21」〜「23」のノードは、図8に示すノードIDが「18」〜「20」と同じ内容である。ただし、図8に示すノードIDが「21」「28」「29」の部分木は切り取られているので、ノードID「20」(図20では、ノードID「23」)とノードID「22」(図20では、ノードID「24」)が直接結合するようになっている。図20に示すノードID「24」〜「31」は、図8に示すノードID「22」〜「27」、「30」「31」と同じ内容である。
【0074】
実施形態と同様、木構造データ編集部17の上記処理が実行されると、変換部11は、木構造データ編集部17により編集された木構造データをテキストデータに変換し、木構造データ編集部17は、編集後の木構造データに基づいて位置データを更新することになる。そして、表示制御部12は、変換部11により変換されたテキストデータに基づいて、編集画面20の表示を更新する。
【0075】
図21は、木構造データが更新された後の編集画面20である。図21に示すように、編集後の木構造データを示すようにテキストデータが生成される。即ち、図21に示すように、テキストエディタ上では、切り取られた文字列T13,T19,T20図18では、文字列T21,T28,T29)の部分が挿入されているが、実施形態と同様、挿入先の文字列T14〜T18のレイアウトが崩れることなく、木構造を示すように保持されている。更に、文字列T23とT24図18では、文字列T20,T22)が結合しているので、切り取った部分のレイアウトも崩れずに保つことができる。
【0076】
上記変形例によれば、カットアンドペーストをするときであっても、テキストデータ上のレイアウトが崩れることを防止することができるので、崩れたレイアウトを手作業で修正するようなことがなくなり、木構造データをテキストで編集する際のユーザの手間を軽減することができる。
【0077】
なお、変換部11による変換方法は、上記の例に限られない。変換部11は、予め定められた変換ルールに基づいて、木構造データとテキストデータとを相互に変換すればよい。例えば、これらの変換ルールを定めた変換テーブルを用意しておいてもよい。また、ノード選択部14がノードIDを特定する方法は、上記の例に限られない。例えば、ノード選択部14は、選択範囲23内のテキストをコンパイラに渡すことによってノードIDを特定してもよい。また、接続先決定部16による接続先の決定方法は、上記の例に限られない。接続先決定部16は、接続先として指定された付近のテキストをコンパイラに渡すことによって接続先のノードIDを特定してもよい。
【0078】
また、上記においては、テキストエディタ内にコンパイラと逆コンパイラが含まれる場合を説明したが、テキストエディタ・コンパイラ・逆コンパイラは、それぞれプログラムとして別体であってもよい。また、上記説明した処理は、木構造の分岐が発生しやすいABテストパターンを実装するプログラミング言語に適用してもよいし、他のプログラミング言語に適用してもよい。更に、ソースコードを編集する場合を例に挙げて説明したが、木構造データをテキストエディタ上で編集すればよく、ソースコードの編集に限られない。例えば、データベースの編集時に上記と同様の処理を実行してもよい。また、木構造データを2分木として説明したが、テキストデータ上で木構造を視覚的に分かりやすく編集可能であればよく、3分木以上であってもよい。
【0079】
また、上記においては、木構造データ編集装置1をユーザが直接操作するパーソナルコンピュータとしたが、木構造データ編集装置1は、サーバコンピュータにより実現されるようにしてもよい。この場合、ユーザは自分が操作するコンピュータと木構造データ編集装置1は、ネットワークを介してデータ送受信可能に接続されており、ユーザは木構造データ編集装置1にアクセスして、上記説明した処理をサーバコンピュータである木構造データ編集装置1に実行させる。この場合、ユーザが操作するコンピュータと木構造データ編集装置1とを合わせて木構造データ編集システムということもできる。上記説明した各機能が、木構造データ編集システム内のコンピュータで分担されてもよい。なお、この場合、データ記憶部10に記憶されるものとして説明したデータは、他のデータベースサーバに存在してもよい。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21