以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理装置を示す図である。情報処理装置1は、情報処理システムに含まれる複数のノードそれぞれを示すモデルを3次元の仮想空間に配置し、3次元で表示されるトポロジーを作成する。ここで、ノードは、PC(Personal Computer)やサーバなどの装置またはルータなどの中継装置である。情報処理装置1は、作成したトポロジーを情報処理装置1の画面に表示する。
情報処理装置1は、記憶部1aと演算部1bを有する。記憶部1aは、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。演算部1bは、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。演算部1bはプログラムを実行するプロセッサであってもよい。「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)も含まれ得る。
記憶部1aは、各ノード間の接続関係を示す接続情報を記憶する。例えば、接続情報は、ノードXとノードX1,X2、ノードYとノードY1,Y2,Y3,Y4、ノードZとノードZ1,Z2が接続関係を有する旨を示す情報を含む。ノード間の接続関係は、階層的になっている。図1の例では、ノードX,Y,Zが上位の階層のノード(上位ノード)であり、ノードX1,X2,Y1,Y2,Y3,Y4,Z1,Z2が、下位の階層のノード(下位ノード)である。
演算部1bは、トポロジーを3次元で表示するためのモデルを、仮想空間2内に作成する。トポロジーは、複数のノードのモデルが階層的に設けられた複数の領域に配置されたツリー状のネットワークの接続関係を表示したものである。ネットワークは、論理ネットワークを示すものであってもよいし、仮想ネットワークを示すものであってもよい。
演算部1bは、記憶部1aに仮想空間2を構築する。これにより、情報処理装置1の画面に仮想空間2が表示される。演算部1bは、仮想空間2に第1階層として第1の領域を設ける。演算部1bは、仮想空間2に、第1の階層の下の第2階層として複数の第2の領域を設ける。演算部1bは、情報処理装置1を操作するユーザからの入力に応答し、第1の階層に設けられた第1の領域内に、第1の領域に属する複数の上位ノードのモデルを配置する。ここで、1つの領域に属するノードのモデルは、例えば、同じ地域、同じ建物に配置されているノード、または同じサブネットまたは同じセグメントのノードである。
さらに演算部1bは、トポロジーに従って、仮想空間2内に設けた第1の領域および第2の領域に複数のノードのモデルを配置し、接続関係を有するノードのモデル同士を接続線で結線することで、トポロジーを3次元で表すモデルを作成する。演算部1bは、トポロジーを3次元で表すモデルを情報処理装置1の画面に出力する。トポロジーを3次元で表示すれば、視点を変えることで各ノード間の接続関係を様々な方向から視認することができる。
なお、トポロジーを表す3次元のモデルを表示するとき、多くの接続線が交差してしまうと、ノード間の接続関係が見づらくなる。接続線の交差が多くなる原因としては、3次元空間へのノードのモデルの配置が、不適切であることが考えられる。例えば、各階層の領域に配置される各ノードのモデルが、ノードを識別するID(identifier)、またはある室内に各ノードが配置されている物理的な位置に基づいて配置されると、接続線の交差が多く、接続関係の視認性がよくない。
そこで演算部1bは、接続線の交差が少なくなるように、第1の階層のノードのモデルの位置を考慮して、そのノードと接続関係を有する第2の階層のノードのモデルを配置する。すなわち、演算部1bは、第2の階層に対応する情報処理装置1に表示された第2の領域に、第2の階層に属する複数の下位ノードそれぞれを示すモデルを、下位ノードと接続関係を有する上位ノードのモデルの第1の領域内での配置位置に対応する、第2の領域内の配置位置に配置する。例えば、第2の階層に属する下位ノードのモデルを第2の領域内に配置する場合は、下位ノードのモデルと接続関係を有する上位ノードのモデルの第1の領域内での配置位置に対応する、第2の領域内の配置位置に、当該下位ノードのモデルを寄せて配置する。
また、例えば、演算部1bは、仮想空間2に、第1階層として領域3を設ける。演算部1bは、仮想空間2に、第2階層として領域4,4aを設ける。演算部1bは、領域3内に、領域3に属するノードX,Y,Zのモデルを配置する。次に演算部1bは、領域3内でのノードX,Y,Zのモデルそれぞれの位置に対応する、領域4,4aの位置を判断する。例えば演算部1bは、領域3内でのノードX,Y,Zのモデルそれぞれの位置を領域4,4aそれぞれに投影する。そして演算部1bは、ノードX,Y,Zのモデルそれぞれの投影された像の領域4,4a内での位置を、ノードX,Y,Zのモデルそれぞれの位置に対応する位置とする。さらに、演算部1bは、領域4に属するノードX1のモデルを、ノードX1と接続関係を有するノードXのモデルの領域3内での位置に対応する、ノードX1のモデルが属する領域4内の位置に寄せて配置する。同様に、演算部1bは、領域4に属するノードY1,Y2,Z1のモデルを、ノードY1,Y2,Z1と接続関係を有するノードY,Zのモデルの領域3内での位置に対応する、領域4内の位置に寄せて配置する。また、演算部1bは、領域4aに属するノードX2,Y3,Y4,Z2のモデルを、ノードX2,Y3,Y4,Z2と接続関係を有するノードX,Y,Zのモデルの領域3内での位置に対応する、領域4a内の位置に寄せて配置する。
そして、演算部1bは、接続関係を有するノードのモデル同士を接続線で繋ぐ。これにより、トポロジーを3次元で表示するためのモデルが作成される。演算部1bは、作成したトポロジーのモデルを情報処理装置1の画面に表示する。これにより、3次元で表現されたトポロジーが画面に表示される。また、演算部1bは、作成したトポロジーのモデルをブラウザに表示できるようにしてもよい。
図1の仮想空間2には、演算部1bが作成したトポロジーのモデルが示されている。ノードXのモデルは、視点からみて、領域3内で手前に配置されているので、ノードX1のモデルは領域4内で手前に配置され、ノードX2のモデルは領域4a内で手前に配置される。ノードYのモデルは、視点からみて、領域3内で右に配置されているので、ノードY1,Y2のモデルは領域4内で右に配置され、ノードY3,Y4のモデルは領域4a内で右に配置される。ノードZのモデルは、視点からみて、領域3内で奥に配置されているので、ノードZ1のモデルは領域4内で奥に配置され、ノードZ2のモデルは領域4a内で奥に配置される。このように、下位のノードのモデルを、当該下位のノードと接続関係を有する上位のノードのモデルの位置に応じた位置に配置することで、交差する接続線を少なくすることができる。
例えば、正面奥に配置されているノードZ2のモデルの接続関係を視認したい場合を想定する。この場合、演算部1bは、ユーザの操作により、3次元で表示されるトポロジーを時計回りに90度回転させる。すると、交差する接続線が少ないため、ノードZ2がノードZと接続関係を有することを容易に認識できる。このように、第1の実施の形態によって作成されたモデルによりトポロジーを3次元で表示すれば、交差する接続線の数が抑止され、各ノード間の接続関係を把握しやすくなる。
すなわち、第1の実施の形態によれば、複数の下位ノードそれぞれを示すモデルが、下位ノードと接続関係を有する上位ノードのモデルの領域内での配置位置に対応する、該下位ノードのモデルが属する領域内の配置位置に、寄せて配置される。このように上位ノードのモデルの位置に、その上位ノードと接続関係を有する下位ノードのモデルの位置を合わせることで、トポロジーのモデルを表示したときに交差する接続線を少なくすることができる。そして、交差する接続線が少なくなることで、ノード間の接続関係を把握しやすくなる。その結果、トポロジーを3次元で表示するときの視認性を向上させることができる。
また、第1の実施の形態では、2つの階層の領域にノードのモデルを配置する方法を示したが、3階層以上でも第1の実施の形態を実現できる。例えば、3階層目の領域に属するノードのモデルを、3階層目の領域に属するノードと接続関係を有する2階層目の領域に属するノードのモデルの領域内での位置に対応する、3階層目の領域内の位置に、寄せて配置することで、交差する接続線を少なくすることができる。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムを示す図である。第2の実施の形態の情報処理システムは、クライアント100およびサーバ200を含む。クライアント100およびサーバ200は、ネットワーク10を介して接続されている。ネットワーク10は、LAN(Local Area Network)でもよいし、WAN(Wide Area Network)やインターネットなどの広域ネットワークでもよい。
クライアント100は、トポロジーを3次元で表すモデルを作成するクライアントコンピュータである。クライアント100は、複数のノードのモデルを3次元の仮想空間に配置し、トポロジーを表すモデルを作成する。クライアント100は、作成したトポロジーのモデルをクライアント100の画面に表示する。
サーバ200は、モデル作成対象となるトポロジーのデータを記憶するコンピュータである。サーバ200は、クライアント100からデータの読み出しの要求を受け付ける。サーバ200は、要求されたデータをクライアント100に送信する。
図3は、クライアントのハードウェア例を示す図である。クライアント100は、プロセッサ101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、読み取り装置106および通信インタフェース107を有する。各ユニットがクライアント100のバスに接続されている。
プロセッサ101は、クライアント100全体を制御する。プロセッサ101は、複数のプロセッシング要素を含むマルチプロセッサであってもよい。プロセッサ101は、例えばCPU、DSP、ASICまたはFPGAなどである。また、プロセッサ101は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。
RAM102は、クライアント100の主記憶装置である。RAM102は、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101による処理に用いる各種データを記憶する。
HDD103は、クライアント100の補助記憶装置である。HDD103は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。クライアント100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
画像信号処理部104は、プロセッサ101からの命令に従って、クライアント100に接続されたディスプレイ11に画像を出力する。ディスプレイ11としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、有機EL(Electro-Luminescence)ディスプレイなど各種のディスプレイを用いることができる。
入力信号処理部105は、クライアント100に接続された入力デバイス12から入力信号を取得し、プロセッサ101に出力する。入力デバイス12としては、マウスやタッチパネルなどのポインティングデバイスやキーボードなどの各種の入力デバイスを用いることができる。クライアント100には、複数の種類の入力デバイスが接続されてもよい。
読み取り装置106は、記録媒体13に記録されたプログラムやデータを読み取る装置である。記録媒体13として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。また、記録媒体13として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。読み取り装置106は、例えば、プロセッサ101からの命令に従って、記録媒体13から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
通信インタフェース107は、ネットワーク10を介してサーバ200と通信を行う。通信インタフェース107は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
なお、サーバ200もクライアント100と同様のハードウェアにより実現できる。また、図1に示した第1の実施の形態の情報処理装置1も、クライアント200と同様のハードウェアにより実現できる。
ここで、第2の実施の形態におけるトポロジーのモデルの作成方法を説明する前に、第2の実施の形態の方法を適用しない場合における問題点について説明する。
図4は、3次元で表示されたトポロジーの比較例を示す図である。図4の上部では、各ノードのモデルが階層的に設けられた複数の領域に配置されたツリー状のネットワークの接続関係を示している。トポロジーに含まれる領域やノードのモデルは、例えば、VRML(Virtual Reality Modeling Language)、または3次元の空間に領域やノードのモデルを設定できるプログラムを用いて作成される。
サーバ棟V1は、上位の階層の領域を示している。実験棟V2および執務棟V3は、下位の階層の領域を示している。サーバ棟V1、実験棟V2および執務棟V3には、複数のノードのモデルが配置されている。サーバ棟V1に属するノードのモデルは、サーバ棟に配置されているノードのモデルである。実験棟V2に属するノードのモデルは、実験棟に配置されているノードのモデルである。執務棟V3に属するノードのモデルは、執務棟に配置されているノードのモデルである。
図4の比較例では、サーバ棟V1、実験棟V2および執務棟V3に配置されているノードは、ノードを識別するIDや実際にサーバ棟、実験棟、執務棟に配置されているノードの物理的な位置に基づいて、配置されているものとする。ここで、ノードは、PCやサーバなどの装置、またはルータなどの中継装置である。例えば、サーバ棟V1に属するノードのモデルは、サーバである。図4の上部では、サーバ棟、実験棟および執務棟に属するノード間の接続関係を接続線によって表している。
図4の下部は、図4の上部の3次元で表示されるトポロジーを時計回りに90度回転させた状態を示している。3次元で表示されるトポロジーでは、図4の上部の状態からノード間の接続関係を視認することができるし、視点を変えて、図4の下部の状態からノード間の接続関係を視認することもできる。
ここで、図4の上部の執務棟に属するノードR1の接続関係を視認したい場合がある。ノードR1のモデルは執務棟V3の領域の正面奥側に配置されており、視認しにくいため、右回りに90度回転させ、図4の下部の状態にする。しかし、図4の下部の状態では、多くの接続線が交差しているため、ノードR1がどのノードと接続関係を有しているのかを把握しづらい。
そこで第2の実施の形態では、クライアント100がトポロジーのモデルを作成する際に、接続線の交差が少なくなるようにノードのモデルを配置することで、ノード間の接続関係の視認性を向上させる。
図5は、情報処理システムの機能例を示す図である。図5に示すユニットの一部または全部は、各装置が備えるプロセッサによって実行されるプログラムのモジュールであってもよい。クライアント100は、記憶部110、読み込み部120、領域設定部130、配置決定部140および描画部150を有する。読み込み部120、領域設定部130、配置決定部140および描画部150は、互いに通信可能である。記憶部110は、例えば、RAM102またはHDD103に確保した記憶領域として実装される。読み込み部120、領域設定部130、配置決定部140および描画部150は、例えば、プロセッサ101が実行するプログラムのモジュールとして実装される。
記憶部110は、読み込み部120、領域設定部130、配置決定部140および描画部150の処理に用いられる情報を記憶する。記憶部110は、配置可能テーブル111を記憶する。配置可能テーブル111には、仮想空間内に設けた領域におけるノードのモデルを配置可能な位置を示す情報が登録されている。
読み込み部120は、サーバ200が記憶するデータの読み出し要求をサーバ200に送信する。読み込み部120は、サーバ200から読み出しの要求に応じたデータを取得し、取得したデータを記憶部110に格納する。また、読み込み部120は、データを取得した旨を示す応答をサーバ200に送信する。
領域設定部130は、仮想空間を構築する。これにより、クライアント100のディスプレイ11に仮想空間が表示される。さらに領域設定部130は、仮想空間内に、各階層のノードのモデルを配置するための領域を設定する。例えば上位の階層の領域ほど、仮想空間の上方に設定される。各領域には、ノードのモデルを配置可能な場所が定義されている。例えば領域が升目で区切られており、各升目に1つずつのノードのモデルが配置できる。升目の大きさは、階層ごとに異なってもよい。各階層の領域の形状は、正方形でもよいし、矩形でもよい。ここで、各階層の領域それぞれの大きさは、同じものとする。
1つの領域に属するノードのモデルは、例えば、同じ地域、同じ建物に配置されているノード、または同じサブネットまたは同じセグメントのノードである。なお複数のサブネットのノードのモデルを同じ領域に配置してもよい。同様に、複数のセグメントのノードのモデルを同じ領域に配置してもよい。第2の実施の形態では、同じ領域に属するノードのモデル同士をグループ化した、複数のグループがあらかじめ設けられている。
また領域設定部130は、配置可能テーブル111を生成する。例えば、領域設定部130は、領域内の升目状に区切られた枠内を配置可能な位置として、配置可能テーブル111を生成する。
配置決定部140は、仮想空間に設定された領域に、その領域に対応するグループのノードのモデルを配置する。例えば配置決定部140は、上位の階層に属するグループと、上位の階層の下の下位の階層に属するグループの2つのグループを選択する。配置決定部140は、クライアント100を操作するユーザからの入力に基づいて、上位の階層に属するノードのモデルを上位の階層の領域に配置する。次に配置決定部140は、上位の階層に属するノードのモデルが配置されている上位の階層の領域内での位置を下位の階層の領域に投影する。そして配置決定部140は、下位ノードのモデルを配置可能でノードのモデルを未配置の、下位の階層の領域内の位置のうち、上位ノードのモデルの位置を投影した位置から最短距離の位置へ、順に、その上位ノードと接続関係を有する下位ノードのモデルを配置する。
描画部150は、接続関係を有するノードのモデル同士を接続線で繋ぎ、トポロジーを3次元で表示するためのモデルを作成する。描画部150は、作成されたトポロジーのモデルをブラウザに表示する。例えば、描画部150は、トポロジーのモデルをWebブラウザで表示できるように、当該トポロジーのモデルをXML(Extensible Markup Language)の形式に加工してもよい。そして、描画部150は、トポロジーをWebブラウザに表示する。
サーバ200は、ノードテーブル201、所属グループテーブル202および接続関係テーブル203を記憶する。ノードテーブル201には、ノードを識別するための情報が登録されている。所属グループテーブル202には、各ノードがどのグループに属するかを示す情報が登録されている。接続関係テーブル203には、ノード間の接続関係を示す情報が登録されている。
図6は、ノードテーブルの例を示す図である。ノードテーブル201は、サーバ200に格納されている。ノードテーブル201は、ノードIDおよびノード名の項目を含む。ノードIDの項目には、ノードを識別する符号(ノードID)が登録される。ノード名の項目には、ノードの名称が登録される。
例えば、ノードテーブル201には、ノードIDが“A1”、ノード名が“サーバ”という情報が登録される。これは、ノードID“A1”はノード名“サーバ”であることを示している。
図7は、所属グループテーブルの例を示す図である。所属グループテーブル202は、サーバ200に格納されている。所属グループテーブル202は、グループID、グループ名、階層およびノードIDの項目を含む。
グループIDの項目には、グループを識別する符号が登録される。グループ名の項目には、グループの名称が登録される。階層の項目には、グループ内のノードのモデルが属する領域が、トポロジーの何階層目に該当するかを示す情報が登録される。図7の例では、階層が数字で示されている。階層を示す数字が小さいほど、上位の階層である。ノードIDの項目には、対応するグループに属するノードを識別する符号(ノードID)が登録される。
例えば、所属グループテーブル202には、グループIDが“A”、グループ名が“サーバ棟”、階層が“1”およびノードIDが“A1,A2”という情報が登録される。これは、グループID“A”の名称が“サーバ棟”であり、グループID“A”はトポロジーに含まれる領域のうち1階層目に該当することを示している。また、グループID“A”には、ノードID“A1,A2”が属することを示している。
また、例えば、所属グループテーブル202には、グループIDが“C”、グループ名が“実験棟”、階層が“2”およびノードIDが“C1,・・・”という情報が登録される。これは、グループID“C”の名称が“実験棟”であり、グループID“C”はトポロジーに含まれる領域のうち2階層目に該当することを示している。また、グループID“C”には、ノードID“C1,・・・”が属することを示している。
図8は、接続関係テーブルの例を示す図である。接続関係テーブル203は、サーバ200に格納されている。接続関係テーブル203は、接続関係の項目を含む。接続関係の項目には、ノード間の接続関係を示す情報が登録される。ノード間の接続関係を示す情報には、接続関係を有する2つのノードのノードIDが含まれる。
例えば、接続関係テーブル203には、接続関係が“ノードA1−ノードB1”という情報が登録される。これは、ノード“A1”とノード“B1”が接続関係を有することを示している。
図9は、配置可能テーブルの例を示す図である。配置可能テーブル111は、記憶部110に格納される。配置可能テーブル111は、グループID、座標およびノードIDの項目を含む。
グループIDの項目には、グループを識別する符号が登録される。座標の項目には、領域設定部130が設定した領域内における、ノードのモデルを配置可能な位置の座標が登録される。配置可能テーブル111に設定される座標は、グループごとの領域内の所定の点を原点とした、領域ごとのローカル座標である。ノードIDの項目には、対応する座標に配置されたノードのモデルを識別する符号が登録される。
例えば、配置可能テーブル111には、グループIDが“B”、座標が“(2,2)”、ノードID“−(ハイフン)”という情報が登録される。これは、グループID“B”の領域の座標“(2,2)”に、グループID“B”に属するノードを配置可能であり、当該座標には、どのノードも配置されていない(“−”)ことを示している。
また、例えば、配置可能テーブル111には、グループIDが“B”、座標が“(2,10)”、ノードID“B2”という情報が登録される。これは、グループID“B”の領域の座標“(2,10)”に、グループID“B”に属するノードを配置可能であり、当該座標には、ノードID“B2”が配置されていることを示している。
また、配置可能テーブル111が領域設定部130により生成された段階では、1階層目であるグループAの座標の項目は、“−”であってもよい。
次に、3次元で表示するためのトポロジーのモデルを作成する処理の説明をする。
図10は、トポロジーのモデルの作成処理の例を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。
(S11)読み込み部120は、サーバ200からトポロジーに関する情報を読み込む。例えば読み込み部120は、サーバ200が記憶するノードテーブル201、所属グループテーブル202、および接続関係テーブル203の読み出し要求を、サーバ200に送信する。読み出し要求に応じて、サーバ200が、ノードテーブル201、所属グループテーブル202、および接続関係テーブル203を送信する。読み込み部120は、サーバ200が送信したノードテーブル201、所属グループテーブル202、および接続関係テーブル203を取得する。読み込み部120は、取得したノードテーブル201、所属グループテーブル202、および接続関係テーブル203を記憶部110に格納する。そして、読み込み部120は、トポロジーの情報を取得した旨を領域設定部130に通知する。
(S12)領域設定部130は、ノードのグループごとの領域を仮想空間内に設定する。例えば領域設定部130は、仮想空間を構築する。そして領域設定部130は、所属グループテーブル202を参照し、階層の番号に従って各グループの領域を仮想空間に設定する。このとき領域設定部130は、例えば上位の階層のグループの領域ほど、仮想空間内の上方に設定する。図7に示したグループの例であれば、グループ名「サーバ棟」のグループに対応する領域より下に、グループ名「執務棟」、「実験棟」、「ネットワーク監視棟」のグループに対応する領域が設定される。
また、領域設定部130は、配置可能テーブル111を生成する。配置可能テーブル111の生成時には、ノードIDの項目には、すべて“−”(配置ノードなしを示す記号)が設定されている。領域設定部130は、各グループの領域を設定した旨を配置決定部140に通知する。
(S13)配置決定部140は、所属グループテーブル202を参照し、1階層目に属するノードを選択し、クライアント100を操作するユーザにより選択したノードのモデルを1階層目の領域に配置する。例えば、配置されるノードのモデルは、領域内の升目状に区切られた枠内に配置される。配置決定部140は、配置した座標を配置可能テーブル111に登録する。以下の処理をツリー状の上位のグループから順に処理を行う。
(S14)配置決定部140は、上位の階層に属するグループと上位の階層の下の下位の階層に属するグループの2つのグループを選択する。例えば、配置決定部140は、1階層目に属するグループAと2階層目に属するグループBとを選択する。
(S15)配置決定部140は、選択した下位の階層のグループに属する下位ノードのモデルの配置処理を行う。この処理により、下位ノードのモデルが下位の領域に配置される位置を決定できる。
(S16)配置決定部140は、全てのグル―プについて処理済みであるか否かの判定を行う。処理済みの場合、配置決定部140は、全てのグル―プに属するノードのモデルの配置が決定した旨を描画部150に通知する。そして、処理をステップS17に進める。処理済みでない場合、処理をステップS14に進める。この場合、ステップS14で前回選択した下位の階層と同じ階層のグループが処理済みでない場合は、当該グル―プを優先して処理を行う。例えば、ステップS14の下位の階層がグループBの場合、グループBと同じ階層のグループCが処理済みでない場合は、ステップS16の次に行われるステップS14においてグループAとグル―プCとの処理を優先して行う。
(S17)描画部150は、接続関係テーブル203を参照し、接続関係を有するノードのモデル同士を接続線で繋ぎ、3次元表示用のトポロジーのモデルを作成する。描画部150は、作成されたトポロジーのモデルをブラウザで表示できるように加工する。描画部150は、トポロジーのモデルをブラウザで表示する。そして、処理を終了する。
図11は、下位ノードのモデルの配置決定処理の例を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。図11に示す処理はステップS15の処理に対応する。
(S21)配置決定部140は、1つの上位ノードIDを選択する。配置決定部140は、選択した上位ノードIDで配列を生成する。
(S22)配置決定部140は、接続関係テーブル203を参照し、選択した上位ノードと接続関係を有する下位ノードを配列に設定する。例えば、配置決定部140は、ノードA1と接続関係を有するノードB1,B3,B5をノードA1の配列に設定する。
(S23)配置決定部140は、選択した上位ノードのモデルが配置されている上位グループの領域内での位置を下位グループの領域に投影する。例えば配置決定部140は、上位グループに配置されている上位ノードのモデルの座標を、配置可能テーブル111から取得する。そして配置決定部140は、下位のグループの領域における取得した座標の位置を、上位ノードのモデルの位置を投影した位置とする。
(S24)配置決定部140は、上位ノードID毎に配列を生成したか否かを判定する。例えば、上位グループがグループAの場合、配置決定部140は、ノードA1,A2で配列を生成したか否かを判定する。生成している場合、配置決定部140は、生成した配列のうち1つの配列を選択する。そして、処理をステップS25に進める。生成していない場合、処理をステップS21に進める。
(S25)配置決定部140は、配列から1つの下位ノードを選択する。例えば、ノードA1の配列に含まれるノードB1を選択する。配置決定部140は、配置可能テーブル111を参照し、選択した下位ノードのモデルを配置可能な座標であり、ステップS23で投影した位置から距離が最短の位置の座標を特定する。配置可能な座標とは、他の下位ノードのモデルが配置されていない座標である。
(S26)配置決定部140は、ステップS25で特定した座標に選択した下位ノードのモデルを配置する。配置決定部140は、配置可能テーブル111に特定した座標に選択した下位ノードのモデルを配置した旨を登録する。
(S27)配置決定部140は、全ての配列に含まれる下位ノードに対して処理済みであるか否かを判定する。処理済みの場合、処理を終了する。処理済みでない場合、処理をステップS28に進める。
(S28)配置決定部140は、異なる配列から1つの下位ノードを選択する。例えば、ステップS25で選択した配列がノードA1の場合、次に選択される配列は、ノードA2の配列である。すなわち、ステップS25,S26の処理を配列毎、順番に下位ノードのモデルを配置する。これは、ステップS25,S26の処理を配列毎にラウンドロビンで処理を行うともいえる。そして、処理をステップS25に進める。
また、異なる配列に処理対象の下位ノードが存在しない場合は、同じ配列に含まれる下位ノードを選択する。例えば、ノードA2の配列に処理対象の下位ノードが存在しない場合は、ノードA1の配列に含まれる未処理の下位ノードを選択する。
このように、下位ノードのモデルは、上位ノードのモデルを投影した位置から距離が最短の位置に配置される。このように配置することで、上位ノードと接続関係を有する下位ノードのモデルを投影した位置の近辺に集めることができる。そして、投影した位置の近辺に下位ノードのモデルを集めることで、3次元でトポロジーを表示した場合、交差する接続線を少なくすることができる。
また、ステップS25,S26の処理を配列毎、順番に下位ノードのモデルを配置することで、上位ノードのモデルを投影した位置の近辺に、その上位ノードと接続関係を有する下位ノードを確実に配置できる。すなわち、ある上位ノードと接続関係を有する下位ノードが多数ある場合、それらの下位ノードを連続して選択して優先的に配置してしまうと、他の上位ノードのモデルを投影した位置の近辺にまで、それらの下位ノードのモデルが配置されてしまう場合があり得る。すると、その後、他の上位ノードと接続関係を有する下位ノードのモデルを配置しようとしても、他の上位ノードのモデルを投影した位置の近辺には配置可能な位置が存在せず、上位ノードのモデルを投影した位置から遠い位置にしか下位ノードのモデルを配置できないことになる。そこで、第2の実施の形態では、複数の上位ノードそれぞれの下位ノードのモデルの配置処理が、ラウンドロビン方式で、各上位ノードに対して平等に実施される。これにより、ある上位ノードのモデルを投影した位置の近辺に、その上位ノードと接続関係を有する下位ノードのモデルを確実に配置できるようになる。その結果、上位ノードのモデルを投影した位置から遠い位置にしか下位ノードのモデルを配置できないような事態の発生が抑止され、3次元でトポロジーを表示した場合における交差する接続線の数の増加が抑止される。
次に、下位ノードのモデルの配置決定処理の具体例を説明する。
図12は、下位ノードのモデルの配置決定処理の具体例を示す図である。図12では、読み込み部120が、サーバ200からノードテーブル201、所属グループテーブル202、接続関係テーブル203を取得し、記憶部110に格納している。記憶部110に格納後の処理について具体例を用いて説明する。
領域設定部130は、グループAとグループBの升目状の領域を仮想空間に設定する。グループAとグループBの領域の大きさは、同じである。例えば、各グループの領域の大きさを16×16とする。図12では、領域設定部130が設定したグループAの領域は、4つの枠を有する升目状の領域である。また、領域設定部130が設定したグループBの領域は、16の枠を有する升目状の領域である。ここで、領域ごとに紙面左上を原点Oとして、原点Oから右方向をX軸、原点Oから下方向をY軸とする。
領域設定部130は、領域を設定すると共に、配置可能テーブル111を生成する。図12では、グループBの領域内にグループBに属するノードが配置可能な位置を点で表している。例えば、配置可能な位置を示す点は、点Qである。
配置決定部140は、上位の階層に属するグループAと下位の階層に属するグループBの2つのグループを選択する。配置決定部140は、クライアント100を操作するユーザにより、ノードA1,A2のモデルをグループAの領域内に配置する。配置決定部140は、ノードA1,A2のモデルを配置した座標を配置可能テーブル111に登録する。
配置決定部140は、ノードA1,A2の配列を生成する。配置決定部140は、ノードA1と接続関係を有するノードB1,B3,B5をノードA1の配列に設定する。配置決定部140は、ノードA2と接続関係を有するノードB2,B4,B6をノードA2の配列に設定する。配置決定部140は、ノードA1,A2のモデルが配置されているグループAの領域内の位置をグループBの領域内に投影する。ノードA1のモデルが配置されているグループAの領域内の位置をグループBの領域内に投影した位置を点P1とする。ノードA2のモデルが配置されているグループAの領域内の位置をグループBの領域内に投影した位置を点P2とする。
配置決定部140は、ノードA1の配列からノードB1を選択する。配置決定部140は、配置可能テーブル111を参照し、点P1から距離が最短の位置であって、下位ノードのモデルを配置可能な座標を特定する。ここで、点P1から距離が最短の位置であって、配置可能な位置が複数ある場合には、配置決定部140は、例えば点P1を中心に所定の位置から時計回りに位置を決定する。配置決定部140は、(10,2)を特定し、ノードB1のモデルを配置する。配置決定部140は、配置可能テーブル111に、ノードB1のモデルを(10,2)に配置した旨を登録する。
配置決定部140は、ノードA2の配列からノードB2を選択する。配置決定部140は、配置可能テーブル111を参照し、点P2から距離が最短の位置であって、下位ノードのモデルを配置可能な座標を特定する。配置決定部140は、(2,10)を特定し、ノードB2のモデルを配置する。配置決定部140は、配置可能テーブル111に、ノードB2のモデルを(2,10)に配置した旨を登録する。
配置決定部140は、ノードA1の配列からノードB3を選択する。配置決定部140は、配置可能テーブル111を参照し、点P1から距離が最短の位置であって、下位ノードのモデルを配置可能な座標を特定する。具体的には、配置決定部140は、点P1から距離が最短の位置であって、配置可能な位置のうち、点P1を中心にノードB1のモデルから時計回りにして配置可能な座標(12,2)を特定する。配置決定部140は、(12,2)にノードB3のモデルを配置する。配置決定部140は、配置可能テーブル111に、ノードB3のモデルを(12,2)に配置した旨を登録する。
次に、グループBに属するノードが以下の順番でグループBの領域に配置される。まず、ノードB4のモデルが(6,10)に配置され、ノードB5のモデルが(14,2)に配置され、ノードB6のモデルが(6,14)に配置される。このようにして、グループBに属するノードのモデルは、グループBの領域に配置される。また、できる限り下位ノードのモデルを、当該下位ノードと接続関係を有する上位ノードのモデルが配置される上位の領域の枠内に対応する下位の領域に配置する。例えば、ノードA1のモデルが(8,0)〜(16,8)の範囲に配置されるので、ノードA1と接続関係を有するノードB1,B3,B5のモデルを(8,0)〜(16,8)の範囲に配置する。すると、ノードA1のモデルと、ノードB1,B3,B5のモデルそれぞれを接続線で繋いだとき、交差する接続線が少なくなる。
また、グループBに属するノードのモデルをグループBの領域に配置する方法について、点P1から距離が最短の位置であって、配置可能な座標が複数ある場合には、点P1から最短距離の角の位置の方向から順に配置するようにしてもよい。例えば、点P1から距離が最短の位置であって、配置可能な座標は、(10,2)、(14,2)、(10,6)、(14,6)である。点P1から最短距離の角の位置は(16,0)なので、配置決定部140は、(12,2)にノードB1のモデルを配置し、(10,2)にノードB3のモデルを配置し、(14,6)にノードB5のモデルを配置する。点P2についても同様にノードB2,B4,B6のモデルが配置される。
また、点P1と点P2から等距離の位置に配置可能な座標がある場合は、時計回りに優先して配置する下位ノードのモデルを決定してもよい。例えば、(2,2)が配置可能な座標である場合、(8,8)を中心に時計回りにして、ノードA1と接続関係を有するグループBに属するノードのモデルを配置するのではなく、ノードA2と接続関係を有するグループBに属するノードのモデルを配置する。
図13は、トポロジーのモデルの具体例を示す図である。図13の上部では、第2の実施の形態により作成されたトポロジーのモデルを示している。サーバ棟W1は、上位の階層の領域を示している。実験棟W2および執務棟W3は、下位の階層の領域を示している。サーバ棟W1、実験棟W2および執務棟W3には、複数のノードのモデルが配置されている。図13の上部では、サーバ棟、実験棟および執務棟に属するノード間の接続関係を接続線によって表している。サーバ棟に属するノードと接続関係を有する実験棟および執務棟に属する各ノードは、サーバ棟W1に属するノードのモデルがサーバ棟W1に配置される位置を実験棟W2および執務棟W3に投影した位置に、寄せて配置される。このように各ノードのモデルを配置することで、交差する接続線を少なくすることができる。
図13の下部は、上部のトポロジーのモデルを時計回りに90度回転させた状態を示している。執務棟に属するノードR2の接続関係を視認したい場合がある。そこで、図13の下部の状態にする。すると、交差する接続線が少ないため、ノードR2の接続関係を容易に把握できる。
ここで、トポロジーを3次元で表示すれば、視点を変えることで各ノード間の接続関係を様々な方向から視認することができる。しかし、視点を変えても多くの接続線が交差してしまい、ノード間の接続関係が見づらい場合がある。また、図4に示すようなトポロジーに含まれる各ノードは、ノードを識別するID、またはある室内に各ノードが配置されている物理的な位置に基づいて、配置されることがある。このため、各ノードのモデルを領域内で、多くの接続線が交差しない位置へ自由に動かすことができない場合がある。
第2の実施の形態によれば、各階層の領域に属する各ノードのモデルは、ノードを識別するIDやある室内にノードが配置されている物理的な位置に基づいて配置しなくてもよいので、多くの接続線が交差しないように配置される。また、第2の実施の形態によれば、上位の階層に属するノードのモデルが配置されている上位の階層の領域内での位置を下位の階層の領域に投影する。上位の階層に属するノードと接続関係を有する下位ノードのモデルは、投影した位置から最短の位置に配置される。このように、上位の階層に属するノードと接続関係を有する下位ノードのモデルを下位の階層の領域内に配置することで、交差する接続線を少なくすることができる。そして、交差する接続線を少なくすることで、視点を変えても各ノード間の接続関係を把握しやすくなるので、トポロジーを3次元で表示するときの視認性を向上させることができる。
なお、第1の実施の形態の情報処理は、演算部1bとして用いられるプロセッサに、プログラムを実行させることで実現できる。第2の実施の形態の情報処理は、プロセッサ101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体に記録できる。
例えば、プログラムを記録した記録媒体を配布することで、プログラムを流通させることができる。また、読み込み部120、領域設定部130、配置決定部140、描画部150に相当する機能を実現するプログラムを別個のプログラムとし、各プログラムを別個に配布してもよい。読み込み部120、領域設定部130、配置決定部140、描画部150の機能が別個のコンピュータにより実現されてもよい。コンピュータは、例えば、記録媒体に記録されたプログラムを、RAM102やHDD103に格納されているDiskなどの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。