(57)【要約】【課題】  描画アルゴリズムを変更可能とした自動レイアウト方法および装置を提供することを目的とする。【解決手段】  アプリケーションプログラムの動作に基づいて所定の図を作成するのにあたり、図の構成要素の自動レイアウトを行う自動レイアウト方法において、前記アプリケーションプログラムの動作に基づいて、レイアウトエンジン管理オブジェクトが生成される工程と、  このレイアウトエンジン管理オブジェクトが、前記アプリケーションプログラムの指示に基づいて、前記構成要素の座標を異なるアルゴリズムにより算出する複数のレイアウトエンジンオブジェクトの中から少なくとも１つを選択する工程と、  選択されたレイアウトエンジンオブジェクトが算出した座標に基づいて、前記アプリケーションプログラムが前記所定の図を作成する工程と、を有することを特徴とする自動レイアウト方法。【選択図】                    図１
2007114822.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムの動作に基づいて所定の図を作成するのにあたり、図の構成要素の自動レイアウトを行う自動レイアウト方法において、
前記アプリケーションプログラムの動作に基づいて、レイアウトエンジン管理オブジェクトが生成される工程と、
このレイアウトエンジン管理オブジェクトが、前記アプリケーションプログラムの指示に基づいて前記構成要素の座標を異なるアルゴリズムにより算出する複数のレイアウトエンジンオブジェクトの中から少なくとも１つを選択する工程と、
選択されたレイアウトエンジンオブジェクトが算出した座標に基づいて、前記アプリケーションプログラムが前記所定の図を作成する工程と、
を有することを特徴とする自動レイアウト方法。
【請求項２】
前記レイアウトエンジン管理オブジェクトが、選択すべきレイアウトエンジンオブジェクトが無いと判断した場合、レイアウトエンジンファクトリオブジェクトを生成する工程と、
このレイアウトエンジンファクトリオブジェクトが前記選択すべきレイアウトエンジンオブジェクトを生成する工程と、
を有することを特徴とする請求項１に記載の自動レイアウト方法。
【請求項３】
アプリケーションプログラムの動作に基づいて所定の図を作成するのにあたり、図の構成要素の自動レイアウトを行う自動レイアウト装置において、
前記アプリケーションプログラムを動作させるアプリケーション実行手段と、
前記構成要素の座標を異なるアルゴリズムにより算出する複数のレイアウト計算手段と、
前記アプリケーションプログラムの動作に基づいて、前記複数のレイアウト計算手段の中から少なくとも１つを選択する管理手段と、
を有し、  
選択されたレイアウト計算手段が算出した座標に基づいて、前記所定の図を作成することを特徴とする自動レイアウト装置。
【請求項４】
前記管理手段が選択すべきレイアウト計算手段が無いと判断した場合に、前記選択すべきレイアウト計算手段を生成する生成手段を有することを特徴とする請求項３に記載の自動レイアウト装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク構成図などのグラフ構造を示す図の作成に際し、図の構成要素のレイアウトを行う自動レイアウト方法および装置に関するものである。
【背景技術】
【０００２】
従来、ネットワーク構成図を始め構成要素（ノード）とそれらを結ぶコネクションから構成されている図は多く使用されている。これらの図はノードやコネクションが多い場合、手作業でレイアウトすることは難しくなり、何らかのレイアウト機能を使用して描画されている。
【０００３】
このような従来の自動レイアウトには、各種のアルゴリズムが知られている。例えば、スプリングモデル、マグネテック・スプリング・モデルあるいはサークル手法などがある（例えば非特許文献１参照。）。
【０００４】
【非特許文献１】中島  他，「オブジェクト指向方法論に基づくオブジェクト図の自動レイアウト」，情報処理学会論文誌，Vol.39，No.12，pp．3282，1998
【０００５】
図４は、従来の自動レイアウト装置の一例を示す構成図である。
図４において、コンピュータ４は一般的なものであり、少なくとも中央演算装置（ＣＰＵ）４１、入力手段（キーボード、タッチパネル等）４２、表示手段（ＣＲＴ、ＬＣＤなど）４３および記憶手段（ハードディスク、メモリ等）４４から構成される。
【０００６】
記憶手段４４には、ノードの位置、ノード間の結合関係、ノードの形、色、サイズ、をはじめ自動レイアウト計算に必要なデータが格納されたノードデータ４４１と、これらのノードデータに基づき予め規定されたアルゴリズムの一つを用いてノードの座標を計算するプログラムであるレイアウト計算部４４２と、この計算結果に基づき表示手段に所望の構成図を表示させるプログラムであるアプリケーション部４４３が格納されている。
なお、ノードデータは入力手段から予めユーザが入力しておく。
【０００７】
また、図４の記憶手段４４に示した各プログラム部は、プログラム実行手段であるＣＰＵ４１により動作する。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
このように、従来の自動レイアウト方法および装置では、システム（表示させたい構成図）に最も適した特定のアルゴリズムを設計者が採用して装置に直接実装していた。このため、描画手法（レイアウト計算のアルゴリズム）を変更することが困難であるという問題があった。
【０００９】
本発明は、このような自動レイアウト方法および装置が有していた問題を解決しようとするものであり、描画アルゴリズムを変更可能とした自動レイアウト方法および装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は次の通りの構成になった自動レイアウト方法および装置である。
【００１１】
（１）アプリケーションプログラムの動作に基づいて所定の図を作成するのにあたり、図の構成要素の自動レイアウトを行う自動レイアウト方法において、
前記アプリケーションプログラムの動作に基づいて、レイアウトエンジン管理オブジェクトが生成される工程と、
このレイアウトエンジン管理オブジェクトが、前記アプリケーションプログラムの指示に基づいて、前記構成要素の座標を異なるアルゴリズムにより算出する複数のレイアウトエンジンオブジェクトの中から少なくとも１つを選択する工程と、
選択されたレイアウトエンジンオブジェクトが算出した座標に基づいて、前記アプリケーションプログラムが前記所定の図を作成する工程と、
を有することを特徴とする自動レイアウト方法。
【００１２】
（２）前記レイアウトエンジン管理オブジェクトが、選択すべきレイアウトエンジンオブジェクトが無いと判断した場合、レイアウトエンジンファクトリオブジェクトを生成する工程と、
このレイアウトエンジンファクトリオブジェクトが前記選択すべきレイアウトエンジンオブジェクトを生成する工程と、
を有することを特徴とする（１）に記載の自動レイアウト方法。
【００１３】
（３）アプリケーションプログラムの動作に基づいて所定の図を作成するのにあたり、図の構成要素の自動レイアウトを行う自動レイアウト装置において、
前記アプリケーションプログラムを動作させるアプリケーション実行手段と、
前記構成要素の座標を異なるアルゴリズムにより算出する複数のレイアウト計算手段と、
前記アプリケーションプログラムの動作に基づいて、前記複数のレイアウト計算手段の中から少なくとも１つを選択する管理手段と、
を有し、  
選択されたレイアウト計算手段が算出した座標に基づいて、前記所定の図を作成することを特徴とする自動レイアウト装置。
【００１４】
（４）前記管理手段が選択すべきレイアウト計算手段が無いと判断した場合に、前記選択すべきレイアウト計算手段を生成する生成手段を有することを特徴とする（３）に記載の自動レイアウト装置。
【発明の効果】
【００１５】
本発明によれば、以下のような効果がある。
【００１６】
請求項１から請求項４に記載の発明によれば、レイアウト計算を行う部分をライブラリ形式にして汎用化を実現し、このライブラリに新たな描画手法（アルゴリズム）を追加することもできるため、レイアウト計算を行う際に、システム（表示させたい構成図）に最も適したアルゴリズムに切り替えることができる。
【発明を実施するための最良の形態】
【００１７】
以下図面を用いて本発明を詳細に説明する。図１は本発明に係る自動レイアウト装置の一例を示す構成図である。
【００１８】
図１において、図１において、コンピュータ１は一般的なものであり、少なくとも中央演算装置（ＣＰＵ）１１、入力手段（キーボード、タッチパネル等）１２、表示手段（ＣＲＴ、ＬＣＤなど）１３および記憶手段（ハードディスク、メモリ等）１４から構成される。
【００１９】
図１は、概略を説明するための構成図であって、記憶手段１４には、ノードデータ１４１と、レイアウト計算部１４２ａ，１４２ｂ，１４２ｃと、アプリケーション部１４３と、レイアウトインタフェース部１４４を示している。
【００２０】
ノードデータ１４１はノードの位置、ノード間の結合関係、ノードの形、色、サイズ、をはじめ自動レイアウト計算に必要なデータである。
【００２１】
レイアウト計算部１４２ａ，１４２ｂ，１４２ｃは、複数存在し、それぞれが異なるアルゴリズムによりノードデータに基づきレイアウト計算を行うプログラムである。
【００２２】
アプリケーション部１４３は、予め実装されたプログラムであって、ノードデータをレイアウト計算部１４２ａ，１４２ｂ，１４２ｃのいずれかに渡し、レイアウト計算部１４２ａ，１４２ｂ，１４２ｃのいずれかの計算結果に基づき表示手段１３に所望の構成図を表示させるプログラムである。
【００２３】
レイアウトインタフェース部１４４は、アプリケーション部１４３とレイアウト計算部１４２ａ，１４２ｂ，１４２ｃとの間のやり取りを行うプログラムである。
【００２４】
なお、ノードデータは入力手段１２から予めユーザが入力しておく。
【００２５】
図２は、本発明に係る自動レイアウト装置の詳細な構成および各部の動作を説明する説明図である。なお、図２は図１の記憶手段１４についてのみ図示している。
【００２６】
図２において、図１のレイアウトインタフェース部１４４および各レイアウトエンジン１４２ａ，１４２ｂ，１４２ｃ（図１のレイアウト計算部に相当する。）や後述するレイアウトエンジン管理部１４７，エンジンファクトリ部１４６をレイアウトライブラリといい、図２を用いてこのレイアウトライブラリの生成および動作を説明する。
【００２７】
なお、この生成とは、該当する責務を果たすプログラムを記憶手段１４にロードし、動作させることを意味する。ロードされるプログラムは、図示しないネットワークに接続された他のコンピュータに存在するものを、そこからロードしても良いし、予めコンピュータ１の記憶手段１４に格納されていても良い。
【００２８】
レイアウトファクトリ部１４５は、予め実装されたプログラムであって、動作としてはアプリケーション部１４３のライブラリ生成依頼に基づいてレイアウトインタフェース部１４４の生成を行う。  
【００２９】
レイアウトインタフェース部１４４は、レイアウトファクトリ部１４５によりロードされたプログラムであって、動作としてはアプリケーション部１４３とのやり取りを行う。このレイアウトインタフェース部１４４ではアプリケーション部１４３のレイアウト依頼（レイアウトエンジンの切り替え依頼）をレイアウトエンジン管理部１４７に渡す。
なお、アプリケーション部１４３のレイアウト依頼（レイアウトエンジンの指定情報を含む）はユーザの入力手段１２からの指示に基づき発生させるものである。
【００３０】
レイアウトエンジン管理部１４７は、レイアウトインタフェース部１４４によりロードされたプログラムであって、動作としては複数のレイアウトエンジンを管理し、レイアウトインタフェース部１４４を介して渡されたアプリケーション部１４３からのレイアウト依頼に基づきレイアウトエンジンの少なくとも１つにレイアウト依頼する。
【００３１】
エンジンファクトリ部１４７は、レイアウトエンジンを生成するプログラムであって、指定されたレイアウトエンジンが無い場合に、レイアウトエンジン管理部１４７の動作によりロードされ、予め決められたインタフェースを持つプラグインプログラムであるレイアウトエンジンをロードし生成するように動作する。
【００３２】
レイアウトエンジン１４２ａ，１４２ｂ，１４２ｃのいずれかは、レイアウトエンジン管理部１４７のレイアウト依頼に基づきレイアウト計算を行いノードの座標を算出し、レイアウトインタフェース部１４４を介してアプリケーション部１４３に算出結果を渡すように動作する。
【００３３】
なお、本実施例ではレイアウトエンジンが３つの場合について説明したがそれに限るものではない。
【００３４】
また、図１および図２の記憶手段１４に示した各プログラムは、ＣＰＵ１１により動作する。これらが、アプリケーション実行手段、レイアウト計算手段、レイアウト計算手段を管理する管理手段、レイアウト計算手段を生成する生成手段、レイアウトインタフェース手段などを構成する。
【００３５】
このようなレイアウトライブラリは、オブジェクト指向言語で記述されており、記憶手段１４の各部はオブジェクトを意味するものでもある。エンジンファクトリ部１４６（オブジェクト）は、レイアウトエンジン（オブジェクト）を動的にクラスローディングすることで動作中にレイアウト手法（アルゴリズム）を追加することが可能となる。
【００３６】
図３は、本発明に係る自動レイアウト方法の処理の流れを示す説明図である。
なお、図３は、ＵＭＬ(Unified Modeling Language)のノーテーションに基づいて、オブジェクト間の通信を、時間を基準に表現したシーケンス図である。図３の通信順序を示す符号に対応させて処理の流れを以下に説明する。
【００３７】
（Ｓ１）アプリケーションが、レイアウトファクトリに対してレイアウトライブラリを生成させる。レイアウトファクトリは、レイアウトインタフェースを生成する。レイアウトインタフェースは、レイアウトエンジン管理およびエンジンファクトリを生成する。
【００３８】
（Ｓ２）アプリケーションがレイアウトインタフェースにノードのレイアウトを依頼する。依頼にはノードの位置、大きさ接続情報を、このレイアウトインタフェースに渡す。アプリケーションからのメッセージ（依頼）は非同期で行う。このため、レイアウトインタフェースやレイアウトエンジンなどの処理によってアプリケーションの動作がブロックされるのを防ぐことができる。
【００３９】
（Ｓ３）レイアウトインタフェースは、レイアウト依頼をレイアウトエンジン管理に委譲する。レイアウトエンジン管理は指定されたレイアウトエンジンが無かった場合、エンジンファクトリにレイアウトエンジンの生成を依頼する。
【００４０】
（Ｓ４）エンジンファクトリは、指定されたレイアウトエンジンの生成を行う。この際、オブジェクト指向言語の機能を使用して動的にクラスローディングを行う。
【００４１】
（Ｓ５）レイアウトエンジン管理がレイアウトエンジンに対してレイアウトを依頼する。レイアウトの結果はノードの座標となる。
【００４２】
（Ｓ６）レイアウトインタフェースがレイアウトの結果をイベントとしてアプリケーションに通知する。レイアウト結果であるノードの座標はすべてイベントに含まれている。
【００４３】
以上により、レイアウトエンジンをクラスローディングすることにより生成するため、レイアウト機能を汎用的に使用することができる。
また、レイアウトのアルゴリズムを動的に切り替えてシステム（表示させたい構成図）に最適なレイアウト計算を行うことができる。
【００４４】
なお、本発明は、上記実施例に限定されることなく、その本質から逸脱しない範囲で更に多くの変更、変形をも含むものである。
【００４５】
例えば、様々な種類の小型デバイスが無線ＬＡＮを使用してフィールドに設置される状況を考えた場合、このようなデバイスは動的にネットワークに追加或いは削除可能となると予想される。これに対して本発明を適用することにより、デバイスが追加或いは削除された場合においても容易に管理画面のレイアウトを行うことができ、常にユーザが見やすい画面構成が可能となる。
【図面の簡単な説明】
【００４６】
【図１】本発明に係る自動レイアウト装置の一実施例を示す構成図である。
【図２】本発明に係る自動レイアウト装置の詳細な構成及び動作を説明する説明図である。
【図３】本発明に係る自動レイアウト方法の処理の流れを示す説明図である。
【図４】従来の自動レイアウト装置の一例を示した構成図である。
【符号の説明】
【００４７】
１  コンピュータ
１１  ＣＰＵ
１２  入力手段
１３  表示手段
１４  記憶手段
１４１  ノードデータ部
１４２ａ、１４２ｂ、１４２ｃ  レイアウト計算部（レイアウトエンジン）
１４３  アプリケーション部
１４４  レイアウトインタフェース部
１４５  レイアウトインタフェース部
１４６  エンジンファクトリ部
１４７  レイアウトエンジン管理部
【図１】
2007114822.tif 000003
【図２】
2007114822.tif 000004
【図３】
2007114822.tif 000005
【図４】
2007114822.tif 000006