(57)【特許請求の範囲】
【請求項１】
ネットワークを介して接続された端末と該端末からアクセス可能な周辺機器との配置情報に基づいて、各端末と周辺機器とのレイアウト情報を計算する計算手段と、
計算された各端末と周辺機器とのレイアウト情報を表示する表示手段と
を備え、
前記配置情報が、
各端末を使用するユーザのユーザ名と、
該端末が設置された机の上に設置された端末名及び周辺機器名と、
前記机に隣接する机の上に設置された端末名及び周辺機器名と
を含むことを特徴とするシステム環境表示装置。
【請求項２】
前記ネットワークを介して接続された端末と該端末の周辺に設置されている端末及び周辺機器との配置情報を入力する入力手段をさらに備えることを特徴とする請求項１記載のシステム環境表示装置。
【請求項３】
前記端末と周辺機器に対応付けられたアイコン及び前記端末を設置する机に対応付けられたアイコンを記憶する記憶手段をさらに備え、
前記表示手段が、前記レイアウト情報に基づいて、前記端末と周辺機器に対応付けられたアイコンを机に対応付けられたアイコン上に表示する
ことを特徴とすることを特徴とする請求項１または２に記載のシステム環境表示装置。
【請求項４】
前記配置情報において、端末が設置された机に隣接する机が、該机の位置に対して前後左右方向の隣に位置するいずれかの机であることを特徴とする請求項１記載のシステム環境表示装置。
【請求項５】
前記周辺機器が、プリンタ、スキャナ、ファクシミリ、ディジタル複写機、パーソナルコンピュータ、サーバ装置を含むことを特徴とする請求項１から４までのいずれか１項に記載のシステム環境表示装置。
【請求項６】
前記計算手段が、端末と周辺機器との配置情報に基づいて、前記ネットワークに接続されている端末と周辺機器とのレイアウト情報を計算し、矛盾のないレイアウト情報を少なくとも１つ以上算出することを特徴とする請求項１から５までのいずれか１項に記載のシステム環境表示装置。
【請求項７】
前記計算手段が、矛盾のない複数のレイアウト情報を算出した場合、該矛盾のない複数のレイアウト情報を一つのレイアウト情報として組み立てる組み立て手段をさらに備えることを特徴とする請求項６記載のシステム環境表示装置。
【請求項８】
ネットワークを介して接続された端末と該端末からアクセス可能な周辺機器とが接続されたシステム環境表示装置の制御方法であって、
前記ネットワークを介して接続された端末と該端末からアクセス可能な周辺機器との配置情報に基づいて、各端末と周辺機器とのレイアウト情報を計算する計算工程と、
計算された各端末と周辺機器とのレイアウト情報を表示する表示工程と
を備え、
前記配置情報が、
各端末を使用するユーザのユーザ名と、
該端末が設置された机の上に設置された端末名及び周辺機器名と、
前記机に隣接する机の上に設置された端末名及び周辺機器名と
を含むことを特徴とするシステム環境表示装置の制御方法。
【請求項９】
前記ネットワークを介して接続された端末と該端末の周辺に設置されている端末及び周辺機器との配置情報を入力する入力工程をさらに備えることを特徴とする請求項８記載のシステム環境表示装置の制御方法。
【請求項１０】
前記システム環境表示装置が、前記端末と周辺機器に対応付けられたアイコン及び前記端末を設置する机に対応付けられたアイコンを記憶する記憶手段をさらに備え、
前記表示工程が、前記レイアウト情報に基づいて、前記端末と周辺機器に対応付けられたアイコンを机に対応付けられたアイコン上に表示する
ことを特徴とすることを特徴とする請求項８または９に記載のシステム環境表示装置の制御方法。
【請求項１１】
前記配置情報において、端末が設置された机に隣接する机が、該机の位置に対して前後左右方向の隣に位置するいずれかの机であることを特徴とする請求項１０記載のシステム環境表示装置の制御方法。
【請求項１２】
前記周辺機器が、プリンタ、スキャナ、ファクシミリ、ディジタル複写機、パーソナルコンピュータ、サーバ装置を含むことを特徴とする請求項８から１１までのいずれか１項に記載のシステム環境表示装置の制御方法。
【請求項１３】
前記計算工程が、端末と周辺機器との配置情報に基づいて、前記ネットワークに接続されている端末と周辺機器とのレイアウト情報を計算し、矛盾のないレイアウト情報を少なくとも１つ以上算出することを特徴とする請求項８から１２までのいずれか１項に記載のシステム環境表示装置の制御方法。
【請求項１４】
前記計算工程が、矛盾のない複数のレイアウト情報を算出した場合、該矛盾のない複数のレイアウト情報を一つのレイアウト情報として組み立てる組み立て工程をさらに備えることを特徴とする請求項１３記載のシステム環境表示装置の制御方法。
【請求項１５】
ネットワークを介して端末と該端末からアクセス可能な周辺機器とが接続されたシステム環境表示装置を制御するためのコンピュータプログラムであって、
前記ネットワークを介して端末と該端末からアクセス可能な周辺機器の配置情報に基づいて、各端末と周辺機器とのレイアウト情報を計算する計算工程と、
計算された各端末と周辺機器とのレイアウト情報を表示する表示工程と、
を前記システム環境表示装置に実行させ、
前記配置情報が、
各端末を使用するユーザのユーザ名と、
該端末が設置された机の上に設置された端末名及び周辺機器名と、
前記机に隣接する机の上に設置された端末名及び周辺機器名と
を含むことを特徴とするシステム環境表示装置を制御するためのコンピュータプログラム。
【請求項１６】
請求項１５記載のコンピュータプログラムを格納したことを特徴とする記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のユーザが使用する端末及び周辺機器を含むネットワーク上のシステム環境の把握を容易にするシステム環境表示装置及びその制御方法に関する。
【０００２】
【従来の技術】
近年、パーソナルコンピュータ（以下、「ＰＣ」と称す。）や、プリンタ、スキャナ、外付けハードディスク及びディジタルカメラ等の各種周辺機器の普及に伴い、複数の周辺機器を用いて電子データを処理する機会が非常に増えてきている。例えば、紙等の記録媒体上の画像をスキャナで読み取った電子データや、ディジタルカメラで撮影された電子データをＰＣを用いて編集し、外付けハードディスクに記憶すると共に、プリンタで印刷をする場合がある。また、ＬＡＮ等のネットワークの普及に伴って、ネットワーク上で、プリンタ、モデム、スキャナ等の周辺機器を複数のユーザが共有する場合も増えてきている。このように、プリンタ、スキャナ等の周辺機器を複数のユーザがネットワーク上で共有することによって、システム構成に要する経費を抑えることができると共に、周辺機器を設置する場所も必要最小限に抑えることができる。
【０００３】
【発明が解決しようとする課題】
しかしながら、従来、ネットワーク上に多くの周辺機器が接続されている場合、ユーザにとってネットワーク上における周辺機器等の接続環境を容易に把握することが難しいという問題があった。また、ネットワーク上において周辺機器等の接続状況は機器の種類毎に表示されていたので、各周辺機器がどのユーザによって管理されているものであるかを調べるための操作には手間がかかり、作業効率が悪いという問題があった。
【０００４】
さらに、ネットワーク上における周辺機器の接続状況を調べる場合、ネットワーク上にある全ての周辺機器の接続状況を調べる必要があり、ネットワークに対して大きな負荷をかけると共に、処理時間がかかるという問題もあった。
【０００５】
一方、ユーザが各自のＰＣ等において、ネットワーク上のシステム環境を表示させる場合、必要に応じて「通常表示」と「お気に入り表示」とを切り替えて表示させるという技術が知られている。ここで、「通常表示」とは、ネットワーク上に接続されている全ての周辺機器の接続状況を表示させるものであり、「お気に入り表示」とは、ユーザが所望する周辺機器だけの接続状況を選択して表示させるものである。
【０００６】
このような表示技術を用いることにより、ネットワーク上のシステム全体の構成とその動作状況の把握、あるいはユーザが登録したお気に入りの周辺機器だけによるシステム環境とその動作状況の把握といったいずれの要求にも対応することができる。また、これらのシステム環境をユーザに対して視覚的にわかり易くＰＣ等の画面に表示することによって、ユーザはネットワーク上のシステム環境をより正確、迅速に認識することができる。さらに、ユーザがシステム環境を確実に認識することによって、接続された各種周辺機器等を効率良く利用して、データ処理作業を効率的に行うことができる。
【０００７】
さらにまた、あるユーザが他のユーザのお気に入り表示された周辺機器に関する接続情報を取得し、自らのＰＣ等にユーザ別のお気に入り表示を表示させることもできる。これによって、あるユーザが、別のユーザのＰＣ等を操作して、自分のＰＣ等の周辺機器の操作環境と同一の操作環境で各種データ処理を行うことができる。
【０００８】
さらにまた、他のＰＣでカスタマイズされた各ユーザのシステム環境を他のＰＣに反映させることができる。すなわち、既に作成されたあるユーザのお気に入り表示を、他のユーザのシステム環境にそのまま取り入れることによって、他のユーザのシステム環境を非常に簡単な操作で利用することができるようになる。これによって、あるユーザのお気に入り表示される周辺機器のシステム環境を、別のユーザのＰＣにおいて表示させるために必要なデバイス登録作業を、大幅に軽減させることができる。
【０００９】
このように、現実のＰＣや周辺機器の配置に基づいて、各ユーザが利用する机あるいはＰＣを中心とした周辺機器の接続関係を、お気に入り表示として反映させることは比較的容易である。
【００１０】
しかしながら、各ユーザがそれぞれのＰＣ等でカスタマイズしたお気に入りのシステム環境を他のＰＣに反映させるためには、ネットワークに接続している全ユーザのシステム環境を表示させることが望ましい。そこで、多くのＰＣ等の周辺機器が接続されたネットワーク環境やオフィス環境において、お気に入り表示を新しく作成するためには、それぞれの周辺機器の現実の配置に基づいて、お気に入り表示を作成しなければならない。しかし、新たにシステム環境を構築してそのお気に入り表示を作成するためには、非常に多くの操作や各種設定が必要となり、ユーザに負荷をかけることになる。したがって、システム環境の視認性を向上させるためにお気に入り表示を新たにユーザが作成する場合、現実のデータ処理装置の配置に基づいて、お気に入り表示の全体レイアウトの作成を支援するようなものが要求されている。
【００１１】
この発明は、このような事情を考慮してなされたものであり、システム環境下の各ユーザが利用する端末及び周辺機器の配置情報を統合して、システム全体の端末及び周辺機器の配置情報を表示するレイアウト画面を容易に生成することができるシステム環境表示装置及びその制御方法を提供することを目的とする。
【００１２】
【課題を解決するための手段】
上記課題を解決するために、この発明は、ネットワークを介して接続された端末と該端末からアクセス可能な周辺機器との配置情報に基づいて、各端末と周辺機器とのレイアウト情報を計算する計算手段と、計算された各端末と周辺機器とのレイアウト情報を表示する表示手段とを備え、前記配置情報が、各端末を使用するユーザのユーザ名と、該端末が設置された机の上に設置された端末名及び周辺機器名と、前記机に隣接する机の上に設置された端末名及び周辺機器名とを含むことを特徴とする。
【００１３】
【発明の実施の形態】
以下、図面を参照して、この発明の実施形態について説明する。
【００１４】
＜第１の実施形態＞
図１は、本発明の第１の実施形態によるシステム環境表示装置を含むネットワーク機器のシステム構成を説明するための概要図である。なお、本実施形態では、システム環境表示装置は、他の様々なデータ処理装置として使用可能なパーソナルコンピュータ（ＰＣ）で実現されているものとする。図１において、プリンタ１０２は開放型アーキテクチャを持つプリンタで、ネットワークボード（ＮＢ）１０１を介してローカルエリアネットワーク（ＬＡＮ）１００に接続されている。ＮＢ１０１は、同軸コネクタを持つイーサネットインタフェース１０ＢＡＳＥ−２や、ＲＪ−４５をもつ１０ＢＡＳＥ−ＴなどのＬＡＮインタフェースを介して、ＬＡＮ１００、１３０に接続されている。
【００１５】
ＰＣ１０３、１０４は、ＬＡＮ１００に接続されている。またＰＣ１１１、１１２はＬＡＮ１３０に接続されている。なお、これらのＰＣは、ネットワークオペレーティングシステムの制御の下で、ＮＢ１０１と通信することができる。
従って、本システムにおけるあるＰＣ（例えば、ＰＣ１０３）をネットワークデバイス管理用のＰＣとして使用することができる。また、ＰＣ１０４にプリンタ１０５をローカルプリンタとしてローカル接続しても良い。
【００１６】
また、ＰＣ１０６は、ＬＡＮ１００に接続されており、ファイルサーバとして機能して、大容量（例えば、１００億バイト）のネットワークディスク１０７に記憶されたファイルへのアクセスを処理する。同様にして、ＰＣ１１３は、ＬＡＮ１３０に接続されており、ファイルサーバとして機能して、大容量のネットワークディスク１１４に記憶されたファイルへのアクセスを処理する。
【００１７】
一方、ＰＣ１０４は、プリントサーバとして機能し、ローカルに接続されたプリンタ１０５または遠隔地にあるプリンタ１０２などのプリンタへの印刷を管理する。
【００１８】
同様にして、ＰＣ１１５は、スキャナサーバとして機能し、ローカル接続されたスキャナ１１７または遠隔地にあるスキャナ１１０などのスキャナを管理する。なお、本実施形態においてスキャナ１１０は、ネットワークボード等を介してＬＡＮ１００に接続されている。
また、複写機１１８は、イメージプロセッシングユニット１１９の管理制御の下に、プリンタやスキャナとしての機能を提供している。なお、本実施形態においてイメージプロセッシングユニット１１９は、ＬＡＮ１３０に接続されている。
【００１９】
なお、図１に示される本実施形態のネットワークシステムでは、さまざまなネットワークメンバ間で効率良く通信を行うために、ＮｏｖｅｌｌやＵＮＩＸなどのネットワークソフトウェアを利用することができるものとする。例えば、Ｎｏｖｅｌｌ社のＮｅｔＷａｒｅ（登録商標。以下、省略）ソフトウェアを使用することができる。このソフトウェアパッケージに関する詳細説明は、ＮｅｔＷａｒｅパッケージに同梱されているオンラインドキュメンテーション（Ｎｏｖｅｌｌ社からのＮｅｔＷａｒｅパッケージに同梱されている）に記載されているのでここでの説明は省略する。
【００２０】
また、ＰＣ１０３、１０４は、それぞれ、データファイルの生成と、生成したデータファイルのＬＡＮ１００への送信と、ＬＡＮ１００からのファイルの受信と、それらのファイルの表示や処理を行うことができる一般的なＰＣである。なお、図１においては、ＰＣが示されているが、ネットワークソフトウェアを実行するのに適した他のコンピュータ機器であってもよい。例えば、ＵＮＩＸのソフトウェアを使用している場合にはＵＮＩＸワークステーションをＬＡＮに接続してもよく、これらのワークステーションは図１に示されているＰＣと共に使用することができる。
【００２１】
通常、ＬＡＮ１００は、比較的ローカルなユーザグループ（例えば、１つの建物内の１つの階または連続した複数の階のユーザグループ等）にサービスを提供するために用いられる。
【００２２】
一方、ユーザが異なる建物や異なる地域（例えば、異なる都道府県等）にいる場合などのユーザ同士が離れる場合は、ワイドエリアネットワーク（ＷＡＮ）を構築してもよい。ＷＡＮは、いくつかのＬＡＮがサービス総合ディジタルネットワーク（例えば、ＩＳＤＮ）などの高速ディジタル線で接続されることにより形成されたＬＡＮの集合体である。例えば、図１に示すように、ＬＡＮ１００とＬＡＮ１２０とがバックボーン１４０によって接続されることにより、ＷＡＮが形成される。ここで、ＰＣ１２１、１２２はＬＡＮ１２０に接続されている。これによって、ＬＡＮ１００、ＬＡＮ１２０、ＬＡＮ１３０にそれぞれ接続されている機器が、ＷＡＮ接続を介して他のＬＡＮに接続されている機器の機能にアクセスすることが可能となる。
【００２３】
図２は、本発明によるシステム環境表示装置の第１の実施形態を示すクライアント構成を説明するためのブロック図である。図２では、図示しない通信媒体、例えばイーサネット等のＬＡＮを介して所定の周辺機器（プリンタ、スキャナ、モデム、複合画像処理装置等を含む）がローカル接続された他のＰＣ等と所定のプロトコルにより通信可能に構成されているものとする。
【００２４】
図２において、システムバス１には、ＣＰＵ(Central Processing Unit)２を始めとして、以降に説明する各部が接続されている。プログラムメモリ（以降、「ＰＭＥＭ］と称す。）３は、本処理のためのプログラムが記憶されており、適宜ハードディスク１０から選択されて読み出され、ＣＰＵ２によって実行される。また、キーボード１２から入力されたデータは、テキストメモリでもあるＰＭＥＭ３にコード情報として格納される。
【００２５】
通信制御部４は、通信ポート５における入出力データの制御を行う。通信ポート５から出力された信号は、通信回線６を経由して、ネットワーク上の他の装置７の通信ポートに伝えられる。ネットワーク上で共有されているプリンタや、画像読取装置（スキャナ）とのデータのやり取りは、この通信制御部４を介して行われる。なお、本実施形態ではＬＡＮなどのネットワークに関して記述するが、この通信制御部４に接続される通信ポート及び通信回線６が一般の公衆回線であっても本発明が適応されることは言うまでもない。
【００２６】
外部記憶装置制御部８は、データファイル用のディスク（例えば、フレキシブルディスク（以降、「ＦＤ」と称す。）９、ハードディスク（以降、「ＨＤ」と称す。）１０等）とのアクセスを制御する。
【００２７】
入力制御部１１は、キーボード１２、マウス１３等の入力装置が接続される。本システムのユーザは、キーボード１２を操作することによりシステムに対して動作指令等を行う。ＣＲＴ１６上に表示される画像情報を加工指示するために、本実施形態ではポインティングデバイス（以降、「ＰＤ」と称す。）が使用される。すなわち、本実施形態ではマウス１３等の入力装置が使用される。これによって、ＣＲＴ１６上のカーソルをＸ、Ｙ方向に任意に移動させて、コマンドメニュー上のコマンドアイコンを選択することによって処理の指示を行う他、編集対象の指示や描画位置の指示等も行うことができる。
【００２８】
ビデオイメージメモリ（以降、「ＶＲＡＭ」と称す。）１４では、ＣＲＴ１６に表示すべき描画データ（ビットマップデータ）が展開され、表示出力制御部１５を介して適宜読み出され、ＣＲＴ１６上にその内容が表示される。プリンタ制御部１７は、接続されているプリンタ１８に対するデータの出力制御が行われる。
【００２９】
画像読み取り機器制御部１Ａでは、接続されている画像読み取り機器１Ｂの画像読み取り制御が行われる。なお、外部機器制御部１９は、プリンタ制御部１７または画像読み取り機器制御部１Ａを介して外部機器の動作を制御するものである。
【００３０】
なお、本発明における画像読み取りサーバ装置には、上述した画像読み取り機器制御部１Ａと画像読み取り機器１Ｂの構成要素が必須となるが、クライアント側装置では、前述したように、通信制御部４及び通信ポート５を介してサーバ側の共有されている同構成要素を使用することができる。更に、図２に示される構成は、画像読み取り機器１Ｂと画像読み取り機器制御部１Ａが物理的に別々のコンポーネントであっても、画像読み取り機器１Ｂが、画像読み取り機器制御部１Ａを含む１つのコンポーネントと同様の機能を有することとする。
【００３１】
なお、本実施形態でＲＯＭに記憶しているプログラムは、装置に直接接続されているハードディスク（ＨＤ）やフレキシブルディスク（ＦＤ）などの記憶媒体にも記憶されていてもよい。さらに、ネットワークで接続されている他の装置上に記憶されていてもよい。また、本発明のプログラムは、ハードディスク（ＨＤ）やフレキシブルディスク（ＦＤ）などの記憶媒体やネットワークを介してシステムや装置に供給することができる。
【００３２】
すなわち、この発明は、ネットワークを介して接続された端末と該端末からアクセス可能な周辺機器との配置情報に基づいて、各端末と周辺機器とのレイアウト情報を計算する計算手段（ＣＰＵ２）と、計算された各端末と周辺機器とのレイアウト情報を表示する表示手段（ＣＲＴ１６、表示出力制御部１５）とを備えることを特徴とする。
【００３３】
また、この発明は、ネットワークを介して接続された端末と端末の周辺に設置されている端末及び周辺機器との配置情報を入力する入力手段（キーボード１２、マウス１３、入力制御部１１）をさらに備えることを特徴とする。
さらに、この発明は、周辺機器が、プリンタ、スキャナ、ファクシミリ、ディジタル複写機、パーソナルコンピュータ、サーバ装置を含むことを特徴とする。さらにまた、計算手段が、入力された端末と周辺機器との配置情報に基づいて、ネットワークに接続されている端末と周辺機器とのレイアウト情報を計算し、矛盾のないレイアウト情報を少なくとも１つ以上算出することを特徴とする。
さらにまた、計算手段が、矛盾のない複数のレイアウト情報を算出した場合、矛盾のない複数のレイアウト情報を一つのレイアウト情報として組み立てる組み立て手段（キーボード１２、マウス１３、入力制御部１１）をさらに備えることを特徴とする。
【００３４】
図３は、図２に示されたシステム環境表示装置のＣＲＴ１６に表示される「お気に入り表示」に登録されているＰＣや周辺機器の操作画面の一例を示す図である。この画面では、システム環境状態をユーザにわかり易く表示するために、例えば、システムに接続しているＰＣや周辺機器がそれぞれの外観をしたアイコンで表示されている。また、図３に示される画面では、「お気に入り表示」を編集することも可能であり、例えば、表示されているアイコンの配置を変更することができるようになっている。
【００３５】
図３において、編集画面３０１は、ツールバー３０１ａ、３０１ｂ、３０１ｃ、メニューバー３０１ｄ、そしてＰＣおよび周辺機器を表すアイコンが表示されているメインウィンドウから構成されている。ツールバー３０１ａ、３０１ｂ、３０１ｃは、お気に入り表示を選択して編集するためのアイコンであり、それぞれ「開く」、「保存」、「終了」の操作に対応している。
【００３６】
また、「お気に入り表示」ウィンドウ３０２では、お気に入り表示に登録されているＰＣ及び周辺機器の配置が表示されている。「お気に入り表示」ウィンドウ３０２において、３０２ａ〜３０２ｍは、「お気に入り表示」に登録されているＰＣ及び周辺機器を示すアイコンである。アイコン３０２ａは、外付けハードディスクを示している。また、アイコン３０２Ｂ、３０２ｅ、３０２ｆ、３０２ｇ、３０２ｉ、３０２ｋはＰＣを示している。さらに、アイコン３０２ｃ、３０２ｍは、プリンタを示している。さらにまた、アイコン３０２ｄ、３０２ｈ、３０２ｊ、３０２ｌは、スキャナを示している。そして、ユーザが「お気に入り表示」ウィンドウ３０２において行った操作は、対応するＰＣ及び周辺機器に対する操作となる。
【００３７】
さらに、「お気に入り表示」ウィンドウ３０２においては、現実の設置環境に近い表示を行うことによって、よりシステム環境の認識性を高めることが可能となっている。すなわち、図３における鉢植え３０３、椅子３０４ａ〜３０４ｆ、机３０５ａ〜３０５ｆは、このような目的のために表示されている。なお、これら表示アイテムは、ネットワークにおける装置と論理的な関係は一切無く、表示画面上だけの補助的な画像でしかない。
【００３８】
但し、鉢植え、椅子、机等の補助的な画像の初期表示位置については、後述する自動レイアウトの際に、ＰＣ及び周辺機器を示すアイコンを配置する位置と連携して定められるものとする。そして、これらの画像が自動レイアウトされた後、ユーザが現実の設置環境により近いレイアウトにするために「お気に入り表示」ウィンドウ３０２上で移動等の編集を行う際には、単なる画面上の画像データとして処理される。
また、図３における「お気に入り表示」ウィンドウ３０２横に配置されているスクロールバーＳＢを使って、同時に表示されない部分のＰＣ及び周辺機器も確認することが可能である。
【００３９】
すなわち、この発明は、端末と周辺機器に対応付けられたアイコン及び前記端末を設置する机に対応付けられたアイコンを記憶する記憶手段（ＶＲＡＭ１４）をさらに備え、表示手段（ＣＲＴ１６、表示出力制御部１５）が、レイアウト情報に基づいて、端末と周辺機器に対応付けられたアイコンを机に対応付けられたアイコン上に表示することを特徴とする。
【００４０】
また、この発明は、配置情報が、端末を使用するユーザのユーザ名と、端末が設置された机の上に設置された端末名及び周辺機器名と、机に隣接する机の上に設置された端末名及び周辺機器名とを含むことを特徴とする。
さらに、この発明は、配置情報において、端末が設置された机に隣接する机は、当該机の位置に対して前後左右方向の隣に位置するいずれかの机であることを特徴とする。
【００４１】
図４は、図２に示したシステム環境表示装置に登録する情報を記憶するための構造体の一例を示す図である。すなわち、図４では、「お気に入り表示」ウィンドウにおいて表示される機器の情報を格納するお気に入り表示デバイスのリストの構造体２００が示されている。
【００４２】
図４において、構造体２００におけるヘッダ部２０１は、お気に入り表示に登録されているＰＣあるいは周辺機器のデバイス数２０１ａ、デバイス以外の画面情報を示す画面情報２０１ｂ、コメント２０１ｃから構成される。
【００４３】
構造体２００におけるデータ部２０２は、機器の識別子２０２ａ、機器の名称２０２ｂ、機器の種別、能力、設定などを識別するための属性データ２０２ｃ、「使用中」、「用紙無し」、「ドライバがインストールされていない」などの情報を含む状態２０２ｄ、機器に対応するアイコンを表示する位置情報２０２ｅ、コメント２０２ｆ等から構成されている。同様にして、データ部２０２には、データ数２０１ａに記憶されている登録数分だけデータ（上記２０２ａから２０２ｆを１セットとするデータ）が記憶されている。
【００４４】
図５は、図３における机３０５ａ〜３０５ｆの形状と配置方向（向き）を説明するための図である。図５において、机４００に対して、符号４０１の方向を前方、４０２の方向を後方、４０３の方向を左方、４０４の方向を右方と定める。本実施形態において、各申告者は申告する位置、つまり机の位置を中心に４０１、４０２、４０３、４０４の方向及び申告する現在位置並びに機器の存在を申告する。
【００４５】
次に、機器の存在の申告について詳細に述べる。
図６は、本実施形態における機器の配置を定める規則を説明するための図である。図６において、符号４０５は機器の配置される座標を表している。座標４０５はＸ軸（横軸）とＹ軸（縦軸）とから成る二次元の直交座標系であり、整数（画素）単位で座標が定められている。本実施形態において機器の座標は、画面右へ行くほどＸ座標値が大きくなり、画面下へ行くほどＹ座標値が大きくなるように定める。このように、座標４０５は碁盤目上のマスに配置されるような平面で定める。
【００４６】
座標４０５中で、各機器及び申告者は２つのマスにまたがることなく１つのマスの中に配置される。すなわち、１つのマスの中に申告者は唯一人だけ存在することができる。但し、マスの中に申告者がいなくても良い。
【００４７】
また、各マスの中で、申告者は前後左右いずれかの向きを持って配置される。図６においては、「申告者」の文字の向きで申告者の配置されている向きが表される。例えば、座標４０５ｃで示されるマスに配置された申告者の文字は右方向を向いているので、現実の申告者の向きも右方向であるとみなせる。また、座標４０５ｅで示されるマスに配置された申告者は前方向を向いていることがわかる。
【００４８】
一方、１つのマスの中には各種装置は１個でも複数でも、あるいは０個であってもよい。また、装置は申告者と異なって方向を持たないとする。例えば、座標４０５ａで示されるマスには機器、申告者のいずれも存在しないことがわかる。また、座標４０５ｂで示されるマスには、３個の装置が存在している。さらに、座標４０５ｆで示されるマスには、１個の装置と、１人の申告者が存在する。
【００４９】
そして、符号４０６は、自動生成された装置及び申告者の配置と、「お気に入り表示」との対応との様子をイメージさせるためのアイコンである。本実施形態では、申告者の向きは机の向きで表現され、１つのマスに対して配置された装置は、１つの机上に配置されていることを意味するものとする。図６では、アイコン４０６ａは座標４０５ｅの装置及び申告者に対応し、アイコン４０６ｂは座標４０５ｆの装置及び申告者に対応する。
【００５０】
上述したように、１つのマスの中に申告者は１人しか存在できないため、ある机を利用する申告者は、その机に対応する一人だけが機器の配置を申告するようにする。例えば、１つの机を共同利用している場合、利用者の中の代表者１人のみが機器配置の申告を行うものとする。
また、１つの机に複数のＰＣを配置して利用している申告者が、その机上に配置された複数のＰＣから装置の配置を申告しても二重申告となってしまう。この場合には、１つのＰＣに限って機器配置の申告を行うようにすればよい。
【００５１】
図７は、申告者が申告する機器の配置可能な範囲を説明するための図である。図７で示される座標系は図６における座標系と同様である。図７において、座標系４０７は、申告者を中心として機器の配置を申告することが可能な範囲を示すためのものである。例えば、申告者の位置が座標４０７ｅであるとすると、申告者が機器の配置を申告することが可能な座標は、座標７０２、４０７ｄ、４０７ｅ、４０７ｆ、４０７ｈの位置にある機器のみである。すなわち、隣接した前後左右のマスの機器、あるいは、申告者と同じマスの機器のみである。
【００５２】
したがって、申告者の位置に隣接していても、申告者に対して斜めの位置である４０７ａ、４０７ｃ、４０７ｇ、４０７ｉのマスは申告対象とはならない。また、前後左右方向であっても、１マス以上間を置いて配置されているように申告者の位置に隣接していない位置の機器は申告対象とすることはできない。
【００５３】
次に、実際の配置例からどのような手順で申告するかを具体的に説明する。
図８は、本実施形態における第１の配置例を示した図である。図８において、申告者Ａは机４０８を、申告者Ｂは机４０９を利用しているものとする。また、机４０８には、ＰＣ４０８ａとプリンタ４０８ｂが配置されており、机４０９には、ＰＣ４０９ａが配置されている。
【００５４】
図８に示された配置例から、申告者Ａ、Ｂの機器配置の申告手順の一例について述べる。申告者Ａにとって、ＰＣ４０８ａとプリンタ４０８ｂは自分の利用している机４０８の上に配置されているため、それらの機器の位置を「自分の位置」であると申告する。また、ＰＣ４０９ａは申告者Ａの右側の机４０９に配置されているため、「右」であると申告する。
【００５５】
一方、申告者Ｂにとって、ＰＣ４０８ａとプリンタ４０８ｂは前方の机４０８に配置されているため、「前」であると申告する。また、ＰＣ４０９ａは自分の利用している机４０９の上に配置されているため、「自分の位置」であると申告する。
【００５６】
なお、申告者Ａ，Ｂは実際に機器が存在していても、それらが利用対象でない場合はその機器を申告しなくても構わないものとする。例えば、申告者ＡがＰＣ４０８ａを申告しなくても構わない。但し、申告する情報が少なくなるにしたがって、配列の組み合わせ候補が増えるため、「お気に入り表示」画面の編集が必要となる場合がある。
【００５７】
図９は、本実施形態における第２の配置例を示した図である。図９において、申告者Ａは机４１０を、申告者Ｂは机４１１を利用している。また、ＰＣ４１０ａは机４１０上に、ＰＣ４１１ａは机４１１上に、またプリンタ４１２は机４１０と机４１１とにまたがって配置されている。
【００５８】
図９における申告者Ａ、Ｂの機器配置の申告手順例について述べる。第１の配置例と同様、申告者ＡはＰＣ４１０ａを「自分の位置」と申告し、申告者ＢはＰＣ４１０ａを「左」と申告する。また、申告者ＡはＰＣ４１１ａを「右」と申告し、申告者ＢはＰＣ４１１ａを「自分の位置」と申告する。そして、机４１０と机４１１とにまたがって配置されているプリンタ４１２については、申告者ＡあるいはＢのどちらかの机の上にあるものとして申告する。例えば、プリンタ４１２が机４１０上にあるものとした場合、申告者Ａはプリンタ４１２を「自分の位置」と申告し、申告者Ｂは「左」と申告する。一方、プリンタ４１２が机４１１上にあるものとした場合、申告者Ａはプリンタ４１２を「右」と申告し、申告者Ｂは「自分の位置」と申告する。
【００５９】
上述したように、申告者Ａ及びＢが、共にプリンタ４１２を「自分の位置」と申告してはならない。また、申告者Ａ、Ｂが、互いに、プリンタ４１２を相手の机の上にあるものとして、申告者Ａが「右」と申告し、申告者Ｂが「左」と申告してはならない。ただし、申告者Ａ、Ｂの両方がプリンタ４１２を申告しなくても構わない。
上述したような手順で定めた機器の位置は、申告者が更に多い場合でも、全ての申告者間で統一されていなければならない。
【００６０】
図１０は、現実の配置から「お気に入り表示」の配置の自動生成を行う例を説明するための図である。図１０において、符号４１３は現実の配置例を示している。図１０において申告者Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、Ｈは、それぞれ利用する机を中心に各自が機器の配置の申告を行う。これによって、符号４１４に示されるような申告リストを作成することができる。また、符号４１５は、申告リスト４１４から自動生成される機器の配置の一例である。
【００６１】
申告リスト４１４において、申告者Ａは「自分の位置」にＰＣ１００４、「前」にＰＣ１００８、「左」にファクシミリ（ＦＡＸ）１００９を申告している。なお、左方向のＰＣ１００２は申告していない。
申告者Ｂは、「自分の位置」としてＰＣ１００２、ＦＡＸ１００９、「前」にＰＣ１００７を申告している。なお、申告者Ｂは左右の機器は申告していない。
【００６２】
申告者Ｃは、「自分の位置」としてＰＣ１００３、「前」にＰＣ１００６、「右」にＦＡＸ１００９を申告している。なお、左方向の機器は申告していない。申告者Ｄは、「自分の位置」としてＰＣ１００４、「前」にプリンタ（ＬＢＰ）１０１０を申告している。なお、前方のＰＣ１００５及び右方向の機器は申告していない。
【００６３】
申告者Ｅは、「自分の位置」としてＰＣ１００５、ＬＢＰ１０１０、「前」にＰＣ１００４、「左」にＰＣ１００６を申告している。すなわち、申告者Ｅは、申告できる周囲の全ての機器を申告している。
申告者Ｆは、「自分の位置」としてＰＣ１００６、「前」にＰＣ１００３、「右」にＬＢＰ１０１０を申告している。なお、右方向のＰＣ１００５及び左方向の機器は申告していない。
【００６４】
申告者Ｇは、「自分の位置」としてＰＣ１００７、「前」にＦＡＸ１００９を申告している。なお、前方のＰＣ１００２及び左右の機器は申告していない。
申告者Ｈは、「自分の位置」としてＰＣ１００８、「前」にＰＣ１００１、「右」にＰＣ１００７を申告している。すなわち、申告者Ｈは、申告できる周囲の全ての機器を申告している。
【００６５】
この結果、符号４１５に示すような配置例が候補として挙げられる。符号４１５で示される配値例は、符号４１３に示す現実の配置と若干異なり、申告者Ｃ、Ｄ、Ｅ、Ｆのグループが縦に配置されてしまっている。但し、符号４１３と同一の配置例が生成される場合もある。符号４１５に示されるような配置例が候補として挙げられた理由として、申告者Ａ〜Ｈ全員がすべての機器を申告しなかったことにある。
【００６６】
例えば、申告者Ｂは「左」の机の上にある機器の位置関係を申告しておらず、申告者Ｆと申告者Ｇがお互いの机の上にある機器の位置関係を申告していない。このように、各申告者が利用する機器のグループによっては、符号４１３と符号４１５に示されるような配置の違いが生じる可能性はある。ただし、このような場合には、図３に示すような編集画面において、申告者Ｃ、Ｄ、Ｅ、Ｆの机及び機器をまとめて移動、回転する編集を行うことで容易に解決することができる。
【００６７】
図１１は、装置の配置を中心に申告者の配置を決定する方法を説明するための図である。図１１において、符号５００は基準となる装置の配置を示している。次に、その装置が「自分の位置」であると申告している申告者の配置を検討する。符号５０１は、その装置を「自分の位置」として申告している申告者がいる場合を示している。なお、その装置を「自分の位置」として申告している申告者がいない場合には、符号５０６で説明される手順に進む。
【００６８】
符号５０１で示されるように、その装置を「自分の位置」として申告する申告者の配置については、その申告者をどの向きに配置するかによって、４つの選択肢がある。符号５０２は、申告者を前向きに配置する場合の例である。符号５０３は、申告者を左向きに配置する場合の例である。符号５０４は、申告者を後ろ向きに配置する場合の例である。また、符号５０５は、申告者を右向きに配置する場合の例である。
【００６９】
なお、申告者の向きは、配置の検討を進めていく上で矛盾がなければいずれの向きに配置しても問題はない。しかし、配置に矛盾が生じた場合には、この時点での申告者の向きを別の向きに変えて配置の検討をやり直すことが必要である。さらに、４つの向きのいずれについても配置上の矛盾が生じた場合には、符号５００において、その装置を配置すること自体が不可能であることを示している。
【００７０】
「自分の位置」として申告する申告者の配置が決まった場合、あるいは「自分の位置」として申告する申告者がいない場合、次に装置の周囲に配置する申告者の候補を検討する。符号５０６は、その装置が前後左右いずれかに配置されていると申告する申告者の配置を説明するための図である。その装置が前後左右のいずれか隣のマスに配置されていると申告する申告者は０人以上４人以下存在する可能性がある。すなわち、申告者が最大数の４人の場合には、配置の組み合わせは２４通り（４×３×２×１＝２４）となる。
【００７１】
ここで、申告者がその装置をどの方向に申告しているかについて、あるいはその申告者がその装置に対してどの方向に配置されるかは関係がない。しかし、申告者が申告している方向と、装置に対してその申告者がどの方向に配置されるかが決まれば、申告者がどの向きで配置されるかが決定される。
【００７２】
図１２は、申告者が申告する方向と装置からの配置方向で決定される申告者の向きについて説明するための図である。すなわち、図１２では、図１１の符号５０６において隣に配置される申告者の向きがどのように決まるかが示される。図１２において、縦方向には、申告者が装置をどの方向に申告しているかについて前後左右の順に示している。また、横方向には装置に対してどの方向に申告者を配置するかについて右後左前の順に示している。
【００７３】
図１２において、申告者が配置される向きは「申告者」の文字の向き及び矢印で示す向きによって表されている。例えば、符号５０７においては、申告者がその装置を「前」にあると申告し、装置の右にその申告者を配置した場合であり、申告者は左向きに配置されている。図１２における符号５０７〜５２２に示される配置例が全ての組み合わせである。
【００７４】
図１３は、申告者の配置を中心に装置の配置を決定するための方法を説明するための図である。図１３において、符号５２３は、基準となる申告者の配置を示している。次に、その申告者が「自分の位置」として申告している装置の配置を検討する。
【００７５】
符号５２４は、その申告者が「自分の位置」として申告している装置がある場合を示している。なお、装置の配置には向きはないので、装置を中心に申告者を配置した場合と異なり、装置の配置は一通りしか存在しない。しかし、この時点で該当する装置が、別の場所で既に配置済みである等の矛盾が生じた場合には、申告者の配置自体も不可能ということになる。
【００７６】
さらに、符号５２５に示すように、申告者の隣のマスであって、前後左右のマスに位置する装置の配置を検討する。ただし、符号５２３で配置された申告者は、向きを有して配置されているので、申告者に対して装置の存在する方向と、絶対座標での位置関係では異なる場合がある。
【００７７】
図１４は、図１３における符号５２５において、隣に配置される装置の位置がどのように決まるかを説明するための図である。図１４において、符号５２６は申告者が前向きの場合、符号５２７は申告者が左向きの場合、符号５２８は申告者が後向きの場合、符号５２９は申告者が右向きの場合を示している。また、図１４の右側に示されているのは、符号５２６〜５２９のそれぞれの場合における申告者が申告した方向の装置がどの位置に配置されるかを示す図である。
【００７８】
例えば、申告者が前向きの場合（符号５２６）には、申告者の申告した方向と、装置の配置される方向は一致している。しかし、それ以外の場合（符号５２７〜５２９）には、申告者の向きと装置の位置とは異なる。例えば、申告者が左向きに配置されている場合（符号５２７）に、申告者が右側とする方向は、絶対座標では前方向となる。
【００７９】
図１１から図１４において説明した手順に基づいて、装置の位置から申告者の位置を決定し、更にその申告者から装置の配置を検討する。そして、申告者の位置から装置の位置を決定し、更にその装置から申告者の配置を検討する。この手順を全ての装置と申告者とについて繰り返し実行する。この結果、矛盾の無い配置を探し出すことができた場合には、その配置を出力させる。また、矛盾のある配置しか存在しない場合、申告者の申告内容に矛盾があるとみなしてエラーを出力する。
【００８０】
図１５は、図２に示されるシステム環境表示装置に一人分の申告者の申告データを入力し、入力されたデータを記憶するための構造体の一例を示す図である。図１５において、符号２１６は、一人の申告者による機器配置に関する申告データを記憶する申告入力データの構造体である。構造体２１６において、ヘッダ部２１７は、申告者を識別するための申告者名で構成される。
【００８１】
データ部２１８は、ヘッダ部２１７に記憶された申告者が「自分の位置」にあると申告する機器の情報であり、「自分の位置」とする機器の数（データ数）２１８ａ、各機器を識別するデバイス名２１８ｂから成り、デバイス名２１８ｂはデータ数２１８ａだけ存在する。
【００８２】
データ部２１９は、申告者が「前」にあると申告する機器の情報であり、「前」とする機器の数（データ数）２１９ａと各機器を識別するデバイス名２１９ｂとから成り、デバイス名２１９ｂはデータ数２１９ａだけ存在する。
【００８３】
データ部２２０は、申告者が「後」にあると申告する機器の情報であり、「後」とする機器の数（データ数）を示す２２０ａ、各機器を識別するデバイス名２２０ｂとから成り、デバイス名２２０ｂはデータ数２２０ａだけ存在する。
【００８４】
データ部２２１は、申告者が「左」にあると申告する機器の情報であり、「左」とする機器の数（データ数）を示す２２１ａ、各機器を識別するデバイス名２２１ｂとから成り、デバイス名２２１ｂはデータ数２２１ａだけ存在する。
【００８５】
データ部２２２は、申告者が「右」にあると申告する機器の情報であり、「右」とする機器の数（データ数）を示す２２２ａ、各機器を識別するデバイス名２２２ｂとから成り、デバイス名２２２ｂはデータ数２２２ａだけ存在する。
【００８６】
上述した構造体２１６で示される申告入力データは、申告者の人数分だけ入力される。構造体２１６で示されるデータは、自動配置のために後述する構造体に変換される。したがって、構造体２１６で示される申告入力データは、申告者人数分をデータ処理装置内に記憶してもよい。また、入力されるたびに変換を行って、次の申告者の入力に転用しても構わない。
【００８７】
図１６は、申告者および装置の自動配置のために、本実施形態によるシステム環境表示装置に申告者データを記憶するための図１５に示される構造体を加工して得られた構造体群を示す図である。図１６に示すように、本実施形態におけるデータ構造は複数の構造体からなり、それぞれリンク構造を持っている。ただし、これらの実装については、各構造体をそれぞれ別の記憶領域、記憶手段に持っても良いし、１つの記憶ブロックを分割して使用してリンク構造を作っても良い。
【００８８】
図１６において、符号２０３は、入力された全申告者に関するデータを保持する申告者構造体である。また、ヘッダ部２０４は、構造体２０３において記憶している申告者の人数（データ数）からなる。そして、符号２０５は、構造体２０３におけるデータ部である。そして、図１５の構造体２１７に申告者２０５ａが対応している。また、申告者２０５ａが「自分の位置」にあると申告する機器群２０５ｂ、同様に「前」の機器群２０５ｃ、「後」の機器群２０５ｄ、「左」の機器群２０５ｅ、「右」の機器群２０５ｆより構成されている。さらに、データ部２０５には、データ数２０４に記憶されている登録数分だけデータ（例えば、上記符号２０５ａから２０５ｆまでを１セットとするデータ）が記憶されている。
【００８９】
さらにまた、符号２０６は、機器群を保持する間接データ構造体である。そして、構造体２０３における各種方向の機器群２０５ｂ、２０５ｃ、２０５ｄ、２０５ｅ、２０５ｆから参照され、それぞれ独立の構造体が申告者数分だけ存在する。
【００９０】
また、符号２０７は、構造体２０６におけるヘッダ部で、リストに保持している機器の数を記憶するデータ数からなる。そして、符号２０８は、構造体２０６におけるデータ部で、機器データへのポインタより構成されている。データ部２０８には、同様にしてデータ数２０７に記憶されている登録数分だけデータが記憶されている。
【００９１】
本実施形態においては、構造体２０６を独立した構造体として構成した。この理由として、構造体２０６が構造体２１６から構成される際に動的にサイズが変化するデータであることが挙げられる。また、本実施形態に限らず、構造体２０６を構造体２０３の各データの中に埋め込み、リンク構造を持たない実現方法も有効である。
【００９２】
さらに、符号２０９は、入力された全機器を保持するデバイス構造体である。そして、ヘッダ部２１０は、構造体２０９におけるヘッダ部で、記憶している機器の数を記憶するデータ数からなる。また、データ部２１１は、構造体２０９におけるデータ部で、構造体２１６における機器群のデバイス名２１８ｂ、２１９ｂ、２２０ｂ、２２１ｂ、２２２ｂ等に対応するデバイス２１１ａが記憶されている。さらに、その機器を「自分の位置」にあると申告している申告者へのポインタ２１１ｂ、その機器を前後左右いずれかの隣にあると申告している申告者の人数を保持するデータ数２１１ｃ、その機器を隣にあると申告している申告者へのポインタ２１１ｄ、２１１ｆ、２１１ｈ、２１１ｊ、その申告者が前後左右のどの方向にあると申告しているかを示す申告方向２１１ｅ、２１１ｇ、２１１ｉ、２１１ｋ等より構成されている。
【００９３】
同様にして、データ部２１１には、データ数２１０に記憶されている登録数分だけデータ（すなわち、上記符号２１１ａから２１１ｋを１セットとするデータ）が記憶されている。なお、隣と申告する申告者と申告方向は、それぞれ、符号２１１ｄと２１１ｅ、２１１ｆと２１１ｇ、２１１ｈと２１１ｉ、２１１ｊと２１１ｋとが対になっており、データ数２１１ｃに従う数のみ有効なデータが格納されている。
【００９４】
なお、構造体２０６におけるデータ２０８が指す機器データは、構造体２０９におけるデータ２１１である。また、構造体２０９におけるデータ２１１ｄ、２１１ｆ、２１１ｈ、２１１ｊが指す申告者データは構造体２０３におけるデータ２０５である。
そして、構造体２１６から構造体２０３及び構造体２０９が構成される際には、二重申告やデータ数に関する矛盾などがチェックされる。
【００９５】
図１７は、自動配置において矛盾の無い配置を探索するために、本実施形態によるシステム環境表示装置に配置探索状態を各時点で記憶しておくための構造体の一例を示す図である。図１７において、符号２１２は配置探索状態を記憶するためのレイアウト探索構造体である。なお、最終的な配置の決定は、この構造体２１２のデータ完成をもって終了する。また、自動配置時には、必要に応じて複製が作成される。
【００９６】
図１７において、符号２１３は、構造体２１２のヘッダ部である。ヘッダ部２１３は、後述するデータ部２１５のデータの位置を得るために、データ部２１４のデータサイズを保持している。なお、データ部２１４、２１５は、構造体２１２のデータ部であり、それぞれ、申告者の配置情報、機器の配置情報を示すものである。
【００９７】
データ部２１４において、ヘッダ部２１４ａは、データ部２１４で記憶する申告者のデータ数を示すものである。そして、データ部２１４ｂ、２１４ｃ，２１４ｄは、データ部２１４における各申告者のデータである。すなわち、構造体２０３におけるデータ２０５へのポインタを保持する申告者データ２１４ｂ、申告者が配置されるｘおよびｙ座標を示す位置データ２１４ｃ、申告者が配置される向きを示すデータ２１４ｄから構成されている。同様に、データ部２１４には、データ数２１４ａに記憶されている登録数分だけデータが記憶されている。これらのデータは、上述した申告者データ２１４ｂ、位置データ２１４ｃ、配置される向きを示すデータ２１４ｄを１セットとするデータである。
【００９８】
一方、データ部２１５において、ヘッダ部２１５ａは、機器の数（デバイス数）を保持する。また、符号２１５ｂ、２１５ｃは、それぞれデータ部２１５における機器のデータである。すなわち、デバイス２１５ｂは、構造体２０９におけるデータ２１１へのポインタであり、位置２１５ｃは、機器２１５ｂが配置されるｘおよびｙ座標を示す位置である。同様に、データ部２１５には、デバイス数２１５ａに記憶されている登録数分だけデータ（上記デバイス２１５ｂ及び位置２１５ｃを１セットとするデータ）が記憶されている。
このようにして、構造体２１２におけるデータ部２１５が自動配置完了した後、構造体４００に必要な情報がコピーされ、「お気に入り表示」が表示される。
【００９９】
図１８は、本発明によるシステム環境表示装置における自動レイアウト生成に関するデータ処理手順の一例を示すフローチャートである。最初に、一人分の申告データ、つまり構造体２１６に対応する情報を入力する（ステップＳ１０００）。この入力操作では、図２に示されるマウス１３による操作、あるいはキーボード１２によるキー操作を行うことで、申告者の位置、あるいは申告者の前後左右に位置する装置の情報が入力される。入力されたデータは構造体２０３及び構造体２０９が保持するデータに変換される。
【０１００】
次に、構造体２０３を調べて、同じ申告者が既に申告済みであるか否かが判定される（ステップＳ１００１）。その結果、既に申告済みである場合（ＹＥＳ）、エラー処理が行われる（ステップＳ１０２５）。一方、まだ申告済みでない場合（ＮＯ）、ステップＳ１００２へ進む。
【０１０１】
ステップＳ１００２では、まず、「自分の位置」として申告している機器の登録が行われる。次いで、構造体２１６における「自分の位置」として申告されている機器を、全て構造体２０３におけるデータ２０５ｂへ登録したか否かが判定される（ステップＳ１００２）。その結果、全ての「自分の位置」として申告された機器が登録済みである場合（ＹＥＳ）、「前」として申告された機器の登録が行われる（ステップＳ１００５）。一方、全ての「自分の位置」として申告された機器が登録済みでない場合（ＮＯ）、ステップＳ１００３へ進む。
【０１０２】
ステップＳ１００３では、「自分の位置」として申告されている機器の１つが構造体２０９に登録され、構造体２０９におけるデータ２１１ｂが更新される。更に、構造体２０９において該当するデータを参照するように、構造体２０３におけるデータ２０５ｂの参照する構造体２０６が更新される。
【０１０３】
次に、ステップＳ１００３において登録した機器を既に「自分の位置」として申告している申告者がいるかどうかが構造体２０３の内容から判定される（ステップＳ１００４）。その結果、既に申告した申告者がいる場合（ＹＥＳ）、二重申告となり申告データが矛盾するため、エラー処理が行われる（ステップＳ１０２５）。一方、まだ申告した申告者がいない場合（ＮＯ）、ステップＳ１００２へ戻って、更に機器の登録が行われる。
【０１０４】
次に、機器が「前」にあると申告している場合の登録が行われる。まず、構造体２１６における「前」として申告している機器を全て構造体２０３におけるデータ２０５ｃへ登録したか否かが判定される（ステップＳ１００５）。その結果、全ての「前」にあると申告された機器が登録済みである場合（ＹＥＳ）、「後」として申告された機器の登録を行う（ステップＳ１００９）。一方、全てが登録済みでない場合（ＮＯ）、ステップＳ１００６へ進む。
【０１０５】
ステップＳ１００６では、「前」として申告されている機器の１つを構造体２０９に登録し、構造体２０９におけるデータ２１１ｃ〜２１１ｆが更新される。更に、構造体２０９において該当するデータを参照するように、構造体２０３におけるデータ２０５ｃの参照する構造体２０６が更新される。
【０１０６】
そして、ステップＳ１００６において登録した機器を「隣の位置」にあると申告している申告者、つまり、「前」、「後」、「左」、「右」のいずれかにあるとして申告している申告者が４人を超えたか否かを構造体２０９におけるデータ２１１ｃの内容より判定する（ステップＳ１００７）。その結果、「隣の位置」とする申告者が４人を超えた場合（ＹＥＳ）、申告データが矛盾するためにエラー処理が行われる（ステップＳ１０２５）。一方、申告者が４人を超えない場合（ＮＯ）、ステップＳ１００８へ進む。なお、ステップＳ１００６における登録処理と、ステップＳ１００７における判定処理は同時に行っても良い。
【０１０７】
ステップＳ１００８では、ステップＳ１００６において登録した機器が、同じ申告者によって別の場所（例えば、前後左右や自分の位置）にも存在するように、二重申告されていないかどうかが構造体２０３及び構造体２０９より判定される。その結果、二重申告されている場合（ＹＥＳ）、申告データが矛盾するのでエラー処理が行われる（ステップＳ１０２５）。一方、二重申告されていない場合（ＮＯ）、ステップS１００５へ戻って更に機器の登録が行われる。
【０１０８】
次に、機器が「後」にあると申告している場合の登録が行われる。まず、構造体２１６における「後」として申告している機器が全て構造体２０３におけるデータ２０５ｄへ登録されたか否かが判定される（ステップＳ１００９）。その結果、全ての「後」にある機器が登録済みである場合（ＹＥＳ）、「左」にあると申告された機器の登録が行われる（ステップＳ１０１３）。一方、全ての「後」にある機器が登録済みでない場合（ＮＯ）、「後」にあると申告されている機器の１つが構造体２０９に登録され、構造体２０９におけるデータ２１１ｃ〜２１１ｋが更新される（ステップＳ１０１０）。更に、構造体２０９における該当するデータを参照するように、構造体２０３におけるデータ２０５ｄの参照する構造体２０６が更新される。そして、ステップＳ１０１１へ進む。
【０１０９】
ステップＳ１０１１では、ステップＳ１０１０において登録した機器を「隣の位置」にあると申告している申告者が４人を超えたか否かが構造体２０９におけるデータ２１１ｃの内容から判定される。その結果、「隣の位置」とする申告者が４人を超えた場合（ＹＥＳ）、申告データが矛盾するためのでエラー処理が行われる（ステップＳ１０２５）。一方、申告者が４人を超えない場合（ＮＯ）、ステップＳ１０１２へ進む。
【０１１０】
ステップＳ１０１２では、ステップＳ１０１０において登録した機器が、同じ申告者によって別の場所にも存在するとして二重申告されていないかどうかが、構造体２０３及び構造体２０９より判定される。その結果、二重申告されている場合（ＹＥＳ）、申告データが矛盾するのでエラー処理が行われる（ステップＳ１０２５）。一方、二重申告されていない場合（ＮＯ）、ステップＳ１００９へ戻って更に機器の登録が行われる。
【０１１１】
次に、「左」にあるとして申告されている機器の登録が行われる。ステップＳ１０１３では、構造体２１６において「左」にあると申告されている機器が、全て構造体２０３におけるデータ２０５ｅに登録されたか否かが判定される。その結果、全ての「左」にある機器が登録済みである場合（ＹＥＳ）、ステップＳ１０１７へ進んで、「右」にあると申告された機器の登録が行われる。一方、全ての「左」にある機器が登録済みでない場合（ＮＯ）、ステップＳ１０１４へ進む。
【０１１２】
ステップＳ１０１４では、「左」にあると申告されている機器の１つが構造体２０９に登録され、構造体２０９におけるデータ２１１ｃ〜２１１ｋが更新される。更に、構造体２０９における該当するデータを参照するように、構造体２０３におけるデータ２０５ｅの参照する構造体２０６が更新される。そして、ステップＳ１０１５へ進む。
【０１１３】
ステップＳ１０１５では、ステップＳ１０１４において登録された機器を「隣の位置」にあるとして申告した申告者が４人を超えたかどうかが、構造体２０９におけるデータ２１１ｃの内容から判定される。その結果、「隣の位置」として申告した申告者が４人を超えた場合（ＹＥＳ）、申告データが矛盾するのでエラー処理が行われる（ステップＳ１０２５）。一方、申告者が４人を超えていない場合（ＮＯ）、ステップＳ１０１６へ進む。
【０１１４】
ステップＳ１０１６では、ステップＳ１０１４において登録された機器が、同じ申告者によって別の場所にも存在するとして二重申告されていないかどうかが構造体２０３及び構造体２０９により判定される。その結果、二重申告されている場合（ＹＥＳ）、申告データが矛盾するのでエラー処理が行われる（ステップＳ１０２５）。一方、二重申告されていない場合（ＮＯ）、ステップＳ１０１３へ戻って更に機器の登録が行われる。
【０１１５】
次に、「右」にあるとして申告している機器の登録が行われる。ステップＳ１０１７では、構造体２１６における「右」にあると申告された機器が全て構造体２０３におけるデータ２０５ｆへ登録されたか否かが判定される。その結果、全ての「右」にあると申告された機器が登録済みである場合（ＹＥＳ）、ステップＳ１０２１へ進む。一方、全ての「右」にあると申告された機器が登録済みでない場合（ＮＯ）、ステップＳ１０１８へ進む。
【０１１６】
ステップＳ１０１８では、「右」にあると申告された機器の１つが、構造体２０９に登録され、構造体２０９におけるデータ２１１ｃ〜２１１ｋが更新される。更に、構造体２０９における該当するデータを参照するように、構造体２０３におけるデータ２０５ｆの参照する構造体２０６が更新される。
【０１１７】
そして、ステップＳ１０１８において登録した機器を「隣の位置」にあるとして申告した申告者が４人を超えたかどうかが、構造体２０９におけるデータ２１１ｃの内容より判定される（ステップＳ１０１９）。その結果、「隣の位置」であると申告した申告者が４人を超えた場合（ＹＥＳ）、申告データが矛盾するのでエラー処理が行われる（ステップＳ１０２５）。一方、申告者が４人を超えていない場合（ＮＯ）、ステップＳ１０２０へ進む。
【０１１８】
ステップＳ１０２０では、ステップＳ１０１８において登録した機器が、同じ申告者によって別の場所にも存在するとして二重申告されていないかどうかが、構造体２０３及び構造体２０９より判定される。その結果、二重申告されている場合（ＹＥＳ）、申告データが矛盾するのでエラー処理が行われる（ステップＳ１０２５）。一方、二重申告されていない場合（ＮＯ）、ステップＳ１０１７へ戻って更に機器の登録が行われる。
【０１１９】
その後、他の申告者の入力が終了したか否かが判定される（ステップＳ１０２１）。その結果、入力が更にある場合（ＮＯ）、ステップＳ１０００へ戻って登録処理が繰り返えされる。一方、全ての申告者の入力が終了した場合（ＹＥＳ）、ステップＳ１０２２へ進む。
【０１２０】
ステップＳ１０２２では、申告者の入力によって作成された構造体２０３及び構造体２０９に基づいて、申告者と機器の配置とが探索される。この配置結果は、図１７における構造体２１２の形式で得ることができる。
【０１２１】
図１９は、図１８におけるステップＳ１０２２に対応する処理手順の詳細を示すフローチャートである。まず、図１７に示される構造体２１２を示す変数layoutを初期化する（ステップＳ１０２６）。ここで、変数layoutは図１９におけるフローチャート内のみで有効とし、他のフローチャートにおける同一名称の変数とは異なるものとする。
【０１２２】
次に、配置を開始する中心位置を計算し、計算結果を変数centerとする（ステップＳ１０２７）。この変数centerは、申告者の人数×２＋１として求める。これは、全ての申告者が一列に並び、申告者と申告者との間に機器が配置された場合に必要となる長さである。この長さが、考えられる配置の中で最も長辺が長くなる場合の配置における長さでなる。なお、本実施形態では、座標系の中で配置される位置が負の座標値とならないようにcenterの値を定めたが、座標値が負となっても構わない場合には、例えば中心を０としてもよい。
【０１２３】
次に、配置が分割された場合のグループのインデックスを示す変数ｋを１に初期化する（ステップＳ１０２８）。そして、ステップＳ１０２７において定めた変数centerとこの変数ｋを用いて、各グループの配置をはじめる中心座標を後述するように（center * k, center）とする。
【０１２４】
さらに、構造体２０３から申告者を１つ取り出し変数repへ代入する（ステップＳ１０２９）。なお、変数repは図１９におけるフローチャート内のみを有効範囲とし、他のフローチャートにおける同一名称の変数とは異なるものとする。
【０１２５】
そして、ステップＳ１０２９において得られた申告者repの配置が、構造体layoutにおいて配置済みであるかどうかが判定される（ステップＳ１０３０）。その結果、変数layoutの中でrepの配置が決定している場合（ＹＥＳ）、ステップＳ１０３３へ進む。一方、repの配置が決定していない場合（ＮＯ）、ステップＳ１０３１へ進む。
【０１２６】
ステップＳ１０３１では、申告者repをlayoutにおいて配置するために、後述する申告者配置サブルーチンを呼び出す。申告者配置サブルーチンは５つの引数を持ち、それぞれ、第１引数は申告者を配置するｘ座標、第２引数は申告者を配置するｙ座標、第３引数は申告者を配置する向き、第４引数は配置する申告者、第５引数は構造体２１２で示されるレイアウト探索構造体である。
【０１２７】
ここで、第５引数は、値渡しではなく参照渡しの引数であり、申告者配置サブルーチン内で配置した内容に従って変更されて返される。なお、第１引数から第４引数は値渡しである。申告者配置サブルーチンは、矛盾無く配置できた場合には正常値を返し、配置に矛盾が生じた場合にはエラーを返す。
ステップＳ１０３１では、引数として順に（center * k，center，’前向き’，rep，layout）を渡す。
【０１２８】
そして、ステップＳ１０３１における配置でエラーがあったか否かが判定される（ステップＳ１０３２）。その結果、エラーの場合（ＹＥＳ）、エラーとして終了し、図１８におけるステップＳ１０２３においてエラーと判定される。一方、エラーでない場合（ＮＯ）、ステップＳ１０３３へ進む。
【０１２９】
ステップＳ１０３３では、全ての申告者の配置が終了したか否かが判定される。その結果、全ての申告者の配置が終了した場合（ＹＥＳ）、正常終了して図１８におけるステップＳ１０２３においてエラーではないと判定される。一方、配置していない申告者が残っている場合（ＮＯ）、ステップＳ１０３４へ進む。ステップＳ１０３４では、既に配置されている申告者や機器と配置が重ならないように変数ｋをインクリメントし、ステップＳ１０２９へ戻る。
以上示した手順により、申告者、機器の配置が変数layoutに構成されることとなる。
【０１３０】
そして、図１８において、ステップＳ１０２３では、ステップＳ１０２２における配置においてエラーが発生したかどうかが判定される。その結果、エラーがあった場合（ＹＥＳ）、申告データが矛盾するのでエラー処理が行われる（ステップＳ１０２５）。一方、エラーが発生していない場合（ＮＯ）には、ステップＳ１０２４へ進む。
【０１３１】
ステップＳ１０２４では、ステップＳ１０２２において決定された配置に従って「お気に入り表示」を図２に示したシステム環境表示装置のＣＲＴ１６上に表示する。また、ステップＳ１０２２の結果である構造体２１２を図４における構造体２００の所定のデータへ変換する。具体的には、構造体２１２におけるデータ２１４ｃ及び２１４ｄから机を表示する位置と向きを定め、構造体２００におけるデータ２０１ｂへ対応させる。さらに、構造体２１２におけるデータ２１５ｂ及び２１５ｃから機器を表示する位置を定め、構造体２００における所定の機器に対応する２０２ｅへ対応させる。
【０１３２】
なお、ステップＳ１０２５では、入力された申告データに矛盾がある旨をＣＲＴ１６へ表示して終了する。
【０１３３】
図２０及び図２１は、図１９におけるステップＳ１０３１に対応する処理手順（サブルーチン）の詳細を示すフローチャートである。まず、図２０において、サブルーチンを呼び出した手順から渡された引数を受け取る（ステップＳ１０３５）。なお、引数の内容については前述した通りである。すなわち、第１引数から第５引数までを順に、変数ｘ、ｙ、dir、rep、layoutに対して割り当てる。但し、これら５つの変数は、図２０および図２１におけるフローチャート内のみを有効範囲とし、他のフローチャートおよび再帰的に別に呼び出された本フローチャート内における同一名称の変数とは異なるものとする。また、最後の引数layoutについては、参照渡しで渡されるため、図２０および図２１の示すフローチャートにおける値の更新は、呼び出し元における第５引数に対応する変数へ同じ変更をもたらすものとする。
【０１３４】
次に、layoutのローカルコピーであるllayoutが作成される（ステップＳ１０３６）。なお、変数llayoutについても、図２０および図２１におけるフローチャート内のみを有効範囲とし、他のフローチャートおよび再帰的に別に呼び出された本フローチャート内における同一名称の変数とは異なるものとする。
【０１３５】
さらに、座標（ｘ，ｙ）の位置に配置されている申告者を変数llayoutから得る（ステップＳ１０３７）。そして、座標（ｘ，ｙ）の位置に申告者が配置されているかどうかが、ステップＳ１０３７の結果から判定される（ステップＳ１０３８）。その結果、誰も配置されていない場合（ＹＥＳ）、ステップＳ１０４１へ進む。また、既に配置されている場合（ＮＯ）、ステップＳ１０３９へ進む。
【０１３６】
ステップＳ１０３９では、ステップＳ１０３７において得られた申告者がrepの示す申告者であるか否かが判定される。その結果、当該申告者がrepである場合（ＹＥＳ）、ステップＳ１０４０へ進む。また、当該申告者がrepでない場合（ＮＯ）、配置に矛盾が生じているためエラー終了する。そして、この結果はステップＳ１０３２に渡される。
【０１３７】
また、ステップＳ１０４０では、ステップS１０４７において得られた申告者が、（ｘ，ｙ）においてdirの示す向きで配置されているか否かが判定される。その結果、dirの向きである場合（ＹＥＳ）、repの配置はすでに正常に終了しているので、正常終了する。一方、dirの向きではない場合（ＮＯ）、配置に矛盾が生じているため、エラー終了する。これらの結果は、ステップＳ１０３２に渡される。
【０１３８】
一方、ステップＳ１０４１では、repが示す申告者が別の位置で既に配置されているかがllayoutから判定される。その結果、既に配置されている場合（ＹＥＳ）、配置に矛盾が生じているため、エラー終了する。一方、まだ配置されていない場合（ＮＯ）、ステップＳ１０４２へ進む。
【０１３９】
ステップＳ１０４２では、llayoutに対して申告者repが位置（ｘ，ｙ）、向きdirで登録される。具体的には、構造体２１２において対応する申告者のデータ２１４ｂ、２１４ｃ、２１４ｄへそれぞれrep、（ｘ、ｙ）、dirを登録する。なお、この処理は図１３における符号５２３に示す処理に相当する。
【０１４０】
また、ステップＳ１０４３からＳ１０４６は、図１３における符号５２４に示す処理に相当する。ステップＳ１０４３では、repが「自分の位置」にあると申告された機器が更にあるか否かが判定される。その結果、登録する機器がまだある場合（ＹＥＳ）、ステップＳ１０４４へ進む。一方、登録する機器がもうない場合（ＮＯ）、repの前にある機器の配置を登録するために図２１におけるステップＳ１０４７へ進む。
【０１４１】
ステップＳ１０４４では、repの位置にある機器を構造体２０３におけるデータ２０５ｂより取得してtmpへ代入する。なお、変数tmpは、図２０および図２１におけるフローチャート内のみを有効範囲とし、他のフローチャートおよび再帰的に別に呼び出された本フローチャート内における同一名称の変数とは異なるものとする。
【０１４２】
また、ステップＳ１０４５では、llayoutに対してtmpを（ｘ，ｙ）の位置で登録するために、図２２において後述するデバイス配置サブルーチンを呼び出す。このデバイス配置サブルーチンは４つの引数を持ち、それぞれ、第１引数は機器を配置するｘ座標、第２引数は機器を配置するｙ座標、第３引数は配置する機器、第４引数は構造体２１２で示されるレイアウト探索構造体となっている。
【０１４３】
ここで、第４引数は値渡しではなく参照渡しの引数であり、デバイス配置サブルーチン内で配置した内容に従って変更されて返される。また、第１引数から第３引数は値渡しである。そして、デバイス配置サブルーチンは、矛盾無く配置できた場合には正常値を返し、配置に矛盾が生じた場合にはエラーを返す。ステップＳ１０４５では、引数として順に（ｘ，ｙ，tmp，llayout）を渡す。
【０１４４】
ステップＳ１０４６では、ステップＳ１０４５における配置でエラーがあったか否かが判定される。その結果、エラーの場合（ＹＥＳ）、エラー終了してステップＳ１０３２に結果が渡される。一方、エラーでない場合（ＮＯ）、ステップＳ１０４３へ戻って登録が繰り返えされる。
【０１４５】
図２１におけるステップＳ１０４７からステップＳ１０５１は、図１３における符号５２５に示す申告者が「前」にあると申告した機器の配置処理に相当する。ステップＳ１０４７では、repにとっての「前」の座標が計算される。repが配置されている向きdirに応じて「前」の座標は、図１４に示すように異なる。そこで、ステップＳ１０４７では、「前」の座標を求めて、それを変数ｘ’及びｙ’へ代入する。なお、変数ｘ’、ｙ’は、図２０および図２１におけるフローチャート内のみを有効範囲とし、他のフローチャートおよび再帰的に別に呼び出された本フローチャート内における同一名称の変数とは異なるものとする。
【０１４６】
ステップＳ１０４８ではrepが「前」にあると申告している機器が更にあるか否かが判定される。その結果、登録する機器がまだある場合（ＹＥＳ）、ステップＳ１０４９へ進む。また、登録する機器がない場合（ＮＯ）、repの後ろにある機器の配置を登録するためにステップＳ１０５２へ進む。
【０１４７】
ステップＳ１０４９ではrepの前の位置にある機器を構造体２０３におけるデータ２０５ｃより取得してtmpへ代入する。そして、llayoutに対してtmpを（ｘ’，ｙ’）の位置で登録するために、デバイス配置サブルーチンが呼び出される（ステップＳ１０５０）。このステップＳ１０５０では、引数として順に（ｘ’，ｙ’，tmp，llayout）を渡す。なお、ステップＳ１０５０の処理手順の詳細については後述する。
【０１４８】
ステップＳ１０５１では、ステップＳ１０５０における配置でエラーがあったか否かが判定される。その結果、エラーがあった場合（ＹＥＳ）、エラー終了する。なお、この結果はステップＳ１０３２に渡される。また、エラーでない場合（ＮＯ）、ステップＳ１０４８へ戻って登録が繰り返えされる。
【０１４９】
ステップＳ１０５２からステップＳ１０５６までの処理は、図１３における符号５２５に示される申告者が「後」にあると申告した機器の配置処理に相当する。ステップＳ１０５２では、repに対して「後」の座標を計算する。すなわち、図１４に示されるように、「後」の座標を求めて、変数ｘ’およびｙ’へ代入する。
【０１５０】
そして、repが「後」にあると申告している機器が更にあるか否かが判定される（ステップＳ１０５３）。その結果、登録する機器がまだある場合（ＹＥＳ）、ステップＳ１０５４へ進む。また、登録する機器がない場合（ＮＯ）、repの左にある機器の配置を登録するためにステップＳ１０５７へ進む。
【０１５１】
ステップＳ１０５４では、repの後ろの位置にある機器を構造体２０３におけるデータ２０５ｄより取得してtmpへ代入する。ステップＳ１０５５では、llayoutに対してtmpを（ｘ’，ｙ’）の位置で登録するために、デバイス配置サブルーチンが呼び出される。ステップＳ１０５５では、引数として順に（ｘ’、ｙ’、tmp、llayout）を渡す。なお、ステップＳ１０５５の処理手順の詳細については後述する。
【０１５２】
ステップＳ１０５６では、ステップＳ１０５５における配置でエラーがあったか否かが判定される。その結果、エラーがあった場合（ＹＥＳ）、エラー終了する。なお、この結果はステップＳ１０３２に渡される。また、エラーでない場合（ＮＯ）、ステップＳ１０５３へ戻って登録が繰り返えされる。
【０１５３】
ステップＳ１０５７からステップＳ１０６１は、図１３における符号５２５に示す申告者が「左」にあると申告した機器の配置処理に相当する。ステップＳ１０５７では、repにとっての「左」の座標が計算される。すなわち、図１４に示されるように、「左」の座標を求めて、変数ｘ’およびｙ’へ代入する。
【０１５４】
次いで、repが「左」にあると申告している機器が更にあるか否かが判定される（ステップＳ１０５８）。その結果、登録する機器がまだある場合（ＹＥＳ）、ステップＳ１０５９へ進む。一方、登録する機器がない場合（ＮＯ）、repの右にある機器の配置を登録するためにステップＳ１０６２へ進む。ステップＳ１０５９では、repの左の位置にある機器を構造体２０３におけるデータ２０５ｅより取得してtmpへ代入する。
【０１５５】
また、ステップS１０６０では、llayoutに対してtmpを（ｘ’，ｙ’）の位置で登録するために、デバイス配置サブルーチンが呼び出される。そして、ステップＳ１０６０では、引数として順に（ｘ’，ｙ’，tmp，llayout）を渡す。なお、ステップＳ１０５５の処理手順の詳細については後述する。
【０１５６】
ステップＳ１０６１では、ステップＳ１０６０における配置でエラーがあったか否かが判定される。その結果、エラーの場合（ＹＥＳ）には、エラー終了する。なお、この結果はステップＳ１０３２に渡される。また、エラーでない場合（ＮＯ）、ステップＳ１０５８へ戻って登録が繰り返えされる。
【０１５７】
ステップＳ１０６２からステップＳ１０６６までの処理は、図１３における符号５２５に示される申告者が「右」にあると申告した機器の配置処理に相当する。ステップS１０６２では、repに対して「右」の座標が計算される。すなわち、図１４に示すように、「右」の座標を求めて、変数ｘ'およびｙ'へ代入する。
【０１５８】
ステップＳ１０６３では、repが「右」にあると申告している機器が更にあるか否かが判定される。その結果、登録する機器がまだある場合（ＹＥＳ）、ステップＳ１０６４へ進む。また、登録する機器がない場合（ＮＯ）、ステップＳ１０６７へ進む。
【０１５９】
ステップＳ１０６４では、repの右の位置にある機器を構造体２０３におけるデータ２０５ｆより取得してtmpへ代入する。ステップＳ１０６５では、llayoutに対してtmpを（ｘ’，ｙ’）の位置で登録するために、デバイス配置サブルーチンが呼び出される。ステップＳ１０６５では、引数として順に（ｘ'、ｙ'、tmp、llayout）を渡す。なお、ステップＳ１０５５の処理手順の詳細については後述する。
【０１６０】
ステップＳ１０６６では、ステップＳ１０６５における配置でエラーがあったかが判定される。その結果、エラーがあった場合（ＹＥＳ）、エラー終了する。なお、この結果はステップＳ１０３２に渡される。また、エラーでない場合（ＮＯ）、ステップＳ１０６３へ戻って登録が繰り返えされる。
【０１６１】
ステップＳ１０６７では、更新されたllayoutがlayoutにコピーされる。これにより、サブルーチン内の更新内容を呼び出し元に反映させることが可能となる。そして、この結果はステップＳ１０３２に渡される。以上により、申告者を中心とした配置処理が終了する。
【０１６２】
図２２は、図２０におけるステップＳ１０４５、図２１におけるステップＳ１０５０、ステップＳ１０５５、ステップＳ１０６０、ステップＳ１０６５に対応する処理手順（サブルーチン）の詳細を示すフローチャートである。
図２２において、まず、サブルーチンを呼び出した手順から渡された引数を受け取る（ステップＳ１０６８）。引数の内容については前述した通りである。
【０１６３】
すなわち、第１引数から第４引数までを順に、変数ｘ、ｙ、dev、layoutに割り当てる。なお、これら４つの変数は、図２２におけるフローチャート内のみを有効範囲とし、他のフローチャートおよび再帰的に別に呼び出された本フローチャート内における同一名称の変数とは異なるものとする。但し、最後の引数layoutについては参照渡しで渡されたため、図２２の示すフローチャートにおける値の更新は呼び出し元における第４引数に対応する変数へ同じ変更をもたらすものとする。
【０１６４】
次に、devの示す機器がlayoutにおいて既に配置されているか否かが判定される（ステップＳ１０６９）。その結果、既に配置されている場合（ＹＥＳ）、ステップＳ１０７０へ進む。一方、まだ配置されていない場合（ＮＯ）、ステップＳ１０７１へ進む。
【０１６５】
ステップＳ１０７０では、devが（ｘ，ｙ）に配置されているか否かが判定される。その結果、devが配置されている位置が（ｘ，ｙ）である場合（ＹＥＳ）、devの配置は既に正常に終了しているのでステップＳ１０７７へ進む。一方、そうでない場合（ＮＯ）、配置に矛盾が生じているのでエラー終了する。
【０１６６】
さらに、ステップＳ１０７１では、devを「自分の位置」にあると申告している申告者がいるか否かが判定される。その結果、「自分の位置」にあるとする申告者がいる場合（ＹＥＳ）、ステップＳ１０７８へ進む。また、申告者がいない場合（ＮＯ）、ステップＳ１０７２へ進む。
【０１６７】
ステップＳ１０７２では、layoutのローカルコピーであるllayoutが作成される。ここで、変数llayoutは、図２２におけるフローチャート内のみを有効範囲とし、他のフローチャートおよび再帰的に別に呼び出された本フローチャート内における同一名称の変数とは異なるものとする。
【０１６８】
そして、llayoutに対してdevが（ｘ，ｙ）の位置で登録される（ステップＳ１０７３）。具体的には、構造体２１２における対応するデバイスのデータ２１５ｂ、２１５ｃへdev、（ｘ，ｙ）を登録する。なお、この処理は、図１１における符号５００に示す処理に相当する。
【０１６９】
また、ステップＳ１０７４では、devを「隣の位置」にあると申告している申告者のリストを構造体２０９における２１１ｃ〜２１１ｋのコピーを作成することで得る。このコピーは、変数neighborへ代入する。なお、変数neighborは、図２２におけるフローチャート内のみを有効範囲とし、他のフローチャートおよび再帰的に別に呼び出された本フローチャート内における同一名称の変数とは異なるものとする。また、neighborのデータ構造については、構造体２０９におけるデータ２１１ｃから２１１ｋまでのデータのセットと同じ構造をしているものとする。
【０１７０】
そして、ステップＳ１０７５では、llayoutに対してdevの周囲の申告者を登録するために、後述する周囲申告者配置サブルーチンを呼び出す。周囲申告者配置サブルーチンは５つの引数を持ち、それぞれ、第１引数は機器を配置するｘ座標、第２引数は機器を配置するｙ座標、第３引数は配置する機器、第４引数は機器の周囲で申告している申告者リスト、第５引数は構造体２１２で示されるレイアウト探索構造体となっている。ここで、第５引数は値渡しではなく参照渡しの引数であり、周囲申告者配置サブルーチン内で配置した内容に従って変更されて返される。また、第１引数から第４引数は値渡しである。
【０１７１】
周囲申告者配置サブルーチンは矛盾無く配置できた場合には正常値を返し、配置に矛盾が生じた場合にはエラーを返す。ステップＳ１０７５では、引数として順に（ｘ，ｙ，dev，neighbor，llayout）を渡す。なお、この処理は図１１における符号５０６に示す処理に相当する。
【０１７２】
ステップＳ１０７６では、ステップＳ１０７５における配置でエラーがあったか否かが判定される。その結果、エラーがあった場合（ＹＥＳ）、エラー終了する。また、エラーがない場合（ＮＯ）、ステップＳ１０７７へ進む。
【０１７３】
一方、ステップＳ１０７１において「自分の位置」にあると申告する申告者のいる場合は、「自分の位置」にあるとする申告者を取得してrepに代入する（ステップＳ１０７８）。ここで、repは、図２２におけるフローチャート内のみを有効範囲とし、他のフローチャートおよび再帰的に別に呼び出された本フローチャート内における同一名称の変数とは異なるものとする。
【０１７４】
ステップＳ１０７９では、repを配置する向きの候補を順に定める。まず、１つの方向を決めてdirに代入する。変数dirは、図２２におけるフローチャート内のみを有効範囲とし、他のフローチャートおよび再帰的に別に呼び出された本フローチャート内における同一名称の変数とは異なるものとする。そして、後述するステップＳ１０８７から、このステップに戻ってきた場合、順に（前、後、左、右）の中から１つずつ順に割り当てる。
【０１７５】
ステップＳ１０８０では、layoutのローカルコピーであるllayoutが作成される。そして、llayoutにおいてdevが（ｘ，ｙ）の位置で登録される（ステップＳ１０８１）。具体的には、構造体２１２における対応するデバイスのデータ２１５ｂ、２１５ｃへdev、（ｘ，ｙ）を登録する。この処理は、図１１における符号５００に示す処理に相当する。
【０１７６】
ステップＳ１０８２では、申告者repをllayoutにおいて位置（ｘ，ｙ）、向きdirで配置するために、図２０に示される申告者配置サブルーチンが再帰呼び出しされる。この処理は、図１１における５０２、５０３、５０４あるいは５０５に示す処理に相当する。そして、ステップＳ１０８２における配置でエラーがあったか否かが判定される（ステップＳ１０８３）。その結果、エラーがあった場合（ＹＥＳ）、他の向きの候補を試すためにステップＳ１０８７へ進む。一方、エラーがない場合（ＮＯ）、次に周囲の申告者を配置するためにステップＳ１０８４へ進む。
【０１７７】
ステップＳ１０８４では、devを「隣の位置」にあると申告している申告者のリストが構造体２０９における２１１ｃ〜２１１ｋのコピーを作成することで得られる。そして、このコピーは、変数neighborへ代入される。
さらに、llayoutに対してdevの周囲の申告者を登録するために、周囲申告者配置サブルーチンが呼び出される（ステップＳ１０８５）。ステップＳ１０８５では、引数として順に（ｘ，ｙ，dev，neighbor，llayout）を渡す。この処理は、図１１における符号５０６に示す処理に相当する。
【０１７８】
ステップＳ１０８６では、ステップＳ１０８５における配置でエラーがあったか否かが判定される。その結果、エラーの場合（ＹＥＳ）、他の向きの候補を試すためにステップＳ１０８７へ進む。また、エラーでない場合（ＮＯ）、ステップＳ１０７７へ進む。
【０１７９】
ステップＳ１０８７では、前後左右の全ての向きについて配置を検討したか否かが判定される。その結果、他の向きの配置候補がある場合（ＮＯ）、ステップＳ１０７９へ戻って配置が繰り返えされる。一方、全ての向きについて検討しており、かつ配置エラーとなっている場合（ＹＥＳ）、エラー終了する。ステップＳ１０７７では、正常終了する前に更新されたllayoutがlayoutにコピーされる。これにより、サブルーチン内の更新内容を呼び出し元に反映させることが可能となる。
【０１８０】
図２３は、図２２におけるステップＳ１０７５及びステップＳ１０８５に対応する処理手順（サブルーチン）の詳細を示すフローチャートである。図２３において、まずサブルーチンを呼び出した手順から渡された引数を受け取る（ステップＳ１０８８）。なお、引数の内容については前述した通りである。そして、第１引数から第５引数までを順に変数ｘ、ｙ、dev、neighbor、layoutに対して割り当てる。これら５つの変数は、図２３におけるフローチャート内のみを有効範囲とし、他のフローチャートおよび再帰的に別に呼び出された本フローチャート内における同一名称の変数とは異なるものとする。ただし、最後の引数layoutについては、参照渡しで渡されたため、図２３の示すフローチャートにおける値の更新は呼び出し元における第５引数に対応する変数へ同じ変更をもたらすものとする。
【０１８１】
次に、neighborのローカルコピーであるlneighborが作成される（ステップＳ１０８９）。さらに、lneighborから配置申告者が１つ取り出されてrepへ代入される（ステップＳ１０９０）。そして、lneighborからはrepの分が削除される。なお、変数repは、図２３におけるフローチャート内のみを有効範囲とし、他のフローチャートおよび再帰的に別に呼び出された本フローチャート内における同一名称の変数とは異なるものとする。
【０１８２】
次いで、repを配置する位置の候補が順に定められる（ステップＳ１０９１）。まず、１つの方向を決めてdirに代入される。なお、変数dirは、図２３におけるフローチャート内のみを有効範囲とし、他のフローチャートおよび再帰的に別に呼び出された本フローチャート内における同一名称の変数とは異なるものとする。また、後述するステップＳ１１０１から、このステップに戻ってきた場合には、devに対する方向として、前、後、左、右の中から１つずつ順に割り当てるようにする。
【０１８３】
さらに、layoutのローカルコピーであるllayoutが作成される（ステップＳ１０９２）。なお、変数llayoutは、図２３におけるフローチャート内のみを有効範囲とし、他のフローチャートおよび再帰的に別に呼び出された本フローチャート内における同一名称の変数とは異なるものとする。
【０１８４】
さらにまた、dirおよび（ｘ，ｙ）よりrepが配置される位置の座標が定められ、（ｘ’，ｙ’）へ代入される（ステップＳ１０９３）。具体的には、dirが「前」であれば、（ｘ’，ｙ’）は（ｘ，ｙ−１）となる。また、dirが「後」であれば、（ｘ’，ｙ’）は（ｘ，ｙ＋１）となる。さらに、dirが「左」であれば、（ｘ’，ｙ’）は（ｘ−１，ｙ）となる。さらにまた、dirが「右」であれば、（ｘ’，ｙ’）は（ｘ＋１，ｙ）となる。
【０１８５】
次に、dirおよび（ｘ，ｙ）よりrepが配置される向きが定められてdir’に代入される（ステップＳ１０９４）。具体的には、図１２に示す規則にしたがって、repの向きが定められる。なお、変数dir’は、図２３におけるフローチャート内のみを有効範囲とし、他のフローチャートおよび再帰的に別に呼び出された本フローチャート内における同一名称の変数とは異なるものとする。
【０１８６】
そして、devの周囲に申告者repを配置するために、図２０に示される申告者配置サブルーチンが再帰呼び出しされる（ステップＳ１０９５）。ステップＳ１０９５では、引数として順に（ｘ’，ｙ’，dir’，rep，llayout）を渡す。
さらに、ステップＳ１０９５における配置でエラーがあったか否かが判定される（ステップＳ１０９６）。その結果、エラーの場合（ＹＥＳ）、他の方向の配置候補を試すためにステップＳ１１０１へ進む。一方、エラーでない場合（ＮＯ）、ステップＳ１０９７へ進む。
【０１８７】
ステップＳ１０９７では、lneighborの中に配置するべき申告者が含まれているか否かが判定される。その結果、まだ申告者がいる場合（ＹＥＳ）、ステップＳ１０９８へ進む。一方、申告者がいない場合（ＮＯ）、全ての申告者が矛盾無く配置できたことを意味するので、ステップＳ１１００へ進む。
ステップＳ１０９８では、残りの周囲申告者を配置するために図２３に示される周囲申告者配置サブルーチンが再帰呼び出しされる。ステップＳ１０９８では、引数として順に（ｘ，ｙ，dev，lneighbor，llayout）を渡す。
【０１８８】
ステップＳ１０９９では、ステップＳ１０９８における配置でエラーがあったか否かが判定される。その結果、エラーの場合（ＹＥＳ）、他の方向の配置候補を試すためにステップＳ１１０１へ進む。また、エラーでない場合（ＮＯ）、全ての申告者が矛盾無く配置できたことを意味するので、ステップＳ１１００へ進む。
【０１８９】
ステップＳ１１０１では、devに対して前後左右全ての方向の位置についてrepの配置を検討したか否かが判定される。その結果、他の方向の配置候補がある場合（ＮＯ）、ステップＳ１０９１へ戻って配置が繰り返えされる。一方、全ての向きについて検討しており、かつ配置エラーとなっている場合（ＹＥＳ）、エラー終了する。
ステップＳ１１００では、正常終了する前に更新されたllayoutがlayoutにコピーされる。これにより、サブルーチン内の更新内容を呼び出し元に反映させることが可能となる。
【０１９０】
以上で、申告者による機器の位置に関する申告に基づいた、申告者（すなわち、机）及び機器の自動配置処理についての説明を終了する。
上述した第１の実施形態によれば、ＰＣ及び周辺機器を利用する各ユーザの申告情報を総合することで、自動的に現実の配置通りのお気に入り表示画面を容易に生成することができ、ユーザがお気に入り表示画面を作成する際の作業効率を高くすることができる。
【０１９１】
＜第２の実施形態＞
次に、本発明によるシステム環境表示装置の第２の実施形態について説明する。なお、第２の実施形態では、第１の実施形態との差異を中心に説明する。また、第２の実施形態においては、申告者（すなわち、机）の配置を向かい合わせによる２列の配置に限定する。したがって、申告者が配置される向きは、座標系の中で前向きと後向きのみとなり、横向き（左右向き）の配置はない。このように、第２の実施形態では限定条件が第１の実施形態よりも厳しくなるが、オフィスにおける一般的な机の配置には即しており、また、条件を厳しくすることにより配置計算の効率を上げることが可能となっている。
【０１９２】
図２４は、第１実施形態における図６に対応した第２の実施形態における機器の配置を定める規則を説明するための図である。図２４において、Ｙ座標は０と１のみであり、さらに、Ｙ＝０の場合には、申告者（机）は必ず後向きの配置となり、Ｙ＝１の場合には、申告者（机）の配置は必ず前向きとなる。したがって、配置のＹ座標が決まれば申告者の向きは決定し、申告者の向きが決定すればＹ座標が決まることになる。
【０１９３】
図２５は、第２の実施形態における申告者が配置を申告する機器の存在可能な範囲を説明するための図である。図２５に示すように、申告者を基準として前方及び左右、そして自分の位置の合計４箇所のみが申告可能である。申告者の位置と向きは、図２４において説明したように２つのパターンに限定されるため、申告範囲についても、図２５に図示できる２つに限定される。ここで、符号６０２は、申告者がＹ＝１の座標にいる場合の申告領域を示し、符号６０３は、申告者がＹ＝０の座標にいる場合の申告領域を示している。
【０１９４】
図２６は、第１の実施形態における図１１に対応した第２の実施形態における配置方法を説明するための図である。図２６では、装置の配置を中心として申告者の配置を決定する手順が示されている。図２６において、符号６０４は、基準となる装置の配置を示している。装置の配置が決定した後、その装置が「自分の位置」であると申告している申告者の配置が検討される。符号６０５は、その装置が「自分の位置」であると申告している申告者が存在する場合を示している。一方、「自分の位置」であると申告する申告者が存在しない場合には、符号６０６及び符号６０７で示される手順を経ずに、符号６０８、符号６０９で示される手順に進む。
【０１９５】
「自分の位置」であるとする申告者の配置においては、装置が配置された座標にしたがってその申告者をどの向きに配置するかが自動的に定まる。すなわち、装置がＹ＝０の座標に配置されていた場合には、申告者の向きは符号６０７で示されるように後向きであり、装置がＹ＝１の座標に配置されていた場合には、申告者の向きは符号６０６で示されるように前向きとなる。第１の実施形態においては、配置の候補が複数あったために、配置の検討において矛盾が生じた場合には他の向きの候補を調べていたが、第２の実施形態における条件では、この時点で配置の可不可を決定することができる。
【０１９６】
上述したような手順で、「自分の位置」であるとする申告者の配置が決まった場合、あるいは「自分の位置」であるとする申告者が存在しない場合、次に装置の周囲に配置する申告者の候補が検討される。図２６において、符号６０８及び符号６０９は、その装置が前、左、右のいずれかに配置されていると申告する申告者を配置することを示している。但し、その装置を前、左、右のそれぞれに配置されていると申告する申告者は、各方向毎に最大一人しかいない。すなわち、申告者の申告方向が定まれば、装置に対して相対的に配置される位置は一意に決定することができる。
【０１９７】
符号６０８は、装置がＹ＝１の座標に配置されている場合、その装置を「隣の位置」とする申告者が配置される位置を示している。一方、符号６０９は、装置がＹ＝０の座標に配置されている場合、その装置を「隣の位置」とする申告者が配置される位置を示している。この際、申告者の配置位置と同時にその申告者が配置される向きも決定するものとする。
【０１９８】
図２７は、装置に対して前、左、右に位置すると申告した申告者が配置される向きを説明するための図である。また、図２８は、第１の実施形態における図１３に対応した第２の実施形態における配置手順を説明するための図である。図２８では、申告者の配置を中心として装置の配置を決定する手順が示されている。
【０１９９】
図２８において、符号６１６は基準となる申告者の配置を示している。申告者の配置が決定した後、その申告者が「自分の位置」であると申告している装置の配置が検討される。符号６１７は、その申告者が「自分の位置」であると申告している装置が存在する場合を示している。この時点で、該当する装置が、別の場所で既に配置済みである等の矛盾が生じた場合には、申告者の配置自体も不可能になる。
【０２００】
次に、符号６１８あるいは符号６１９に示すように、申告者の隣（前、左、右）に位置する装置の配置が検討される。これについても、申告者の座標から申告者の向きが一意に定められるので、前、左、右の装置の位置も一意に定められる。符号６１８は、申告者がＹ＝１の座標に配置されている場合の周囲の装置の配置を示している。一方、符号６１９は、申告者がＹ＝０の座標に配置されている場合の周囲の装置の配置を示している。
【０２０１】
図２９は、第１の実施形態における図１５に対応した第２の実施形態における一人分の申告データを入力するための構造体の一例を示す図である。構造体２５０は、基本的には図１５と同じ構成をしているが、申告方向として「後」方向がないので、第１の実施形態と比較してレコードが１つ少なくて済む。
なお、図２９において、データ２５２は、「自分の位置」を示すデータ、データ２５３は、「前」に配置されている装置を示すデータ、同様にデータ２５４は、「左」に配置されている装置を示すデータ、データ２５５は、「右」に配置されている装置を示すデータを示す。
【０２０２】
図３０は、第１の実施形態における図１６に対応した第２の実施形態における自動配置に使用する構造体の一例を示す図である。同様に、第１の実施形態との差異について説明する。図３０では、申告者データ２５６における「後」にある装置を記憶するデータが存在しない。また、デバイスデータ２６２において、その装置を「隣の位置」と申告する申告者は、各方向につき最大一人に限定されるので、データ２６４の中の申告者データは各方向毎に存在する。
【０２０３】
図３１は、第１の実施形態における図１８に対応した第２の実施形態におけるデータ処理手順の一例を示すフローチャートである。図１８において、まず、一人分の申告データ、すなわち構造体２５０に対応する情報が入力される（ステップＳ１２００）。入力されたデータは、構造体２５６及び構造体２６２が保持するデータに変換される。
【０２０４】
次に、構造体２５６を調べて、同じ申告者が既に申告済みであるか否かが判定される（ステップＳ１２０１）。その結果、既に申告済みである場合（ＹＥＳ）、ステップＳ１２１８へ進んでエラー処理が行われる。一方、まだ申告が済んでいない場合（ＮＯ）、ステップＳ１２０２へ進む。
【０２０５】
ステップＳ１２０２では、「自分の位置」にあると申告している機器の登録が行われる。そして、構造体２５０における「自分の位置」にあると申告している機器が、全て構造体２５６におけるデータ２５８ｂへ登録されたか否かが判定される。その結果、全ての「自分の位置」にある機器が登録済みである場合（ＹＥＳ）、ステップＳ１２０５へ進んで「前」にあると申告された機器の登録が行われる。一方、当該機器が登録済みでない場合（ＮＯ）、ステップＳ１２０３へ進む。
【０２０６】
ステップＳ１２０３では、「自分の位置」にあると申告されている機器の１つが構造体２６２に登録され、構造体２６２におけるデータ２６４ｂが更新される。更に、構造体２６２における該当するデータを参照するように、構造体２５６におけるデータ２５８ｂの参照する構造体２５９が更新される。そして、ステップＳ１２０４へ進む。
【０２０７】
ステップＳ１２０４では、ステップＳ１２０３において登録した機器を既に「自分の位置」であると申告している申告者がいるかどうかが、構造体２５６の内容から判定される。その結果、そのような申告者がいる場合（ＹＥＳ）、二重申告となって申告データが矛盾するのでエラー処理が行われる（ステップＳ１２１８）。一方、二重申告でない場合（ＮＯ）、ステップＳ１２０２へ戻って更に機器の登録が行われる。
【０２０８】
ステップＳ１２０５からＳ１２０７では、ステップＳ１２０２からＳ１２０４で「自分の位置」にある装置の登録をした場合と同様に、「前」にある装置の登録が行われる。同様にして、ステップＳ１２０８からＳ１２１０では「左」にある装置の登録が行われる。また、ステップＳ１２１１からＳ１２１３では「右」にある装置の登録が行われる。
【０２０９】
ステップＳ１２１４では、さらに申告者の入力があるか否かが判定される。その結果、入力が更にある場合（ＮＯ）、ステップＳ１２００へ戻って登録処理が繰り返えされる。また、全ての申告者の入力が終了した場合（ＹＥＳ）、ステップＳ１２１５へ進む。
ステップＳ１２１５では、申告者の入力によって作成された構造体２５６及び構造体２６２から、申告者と機器の配置をが探索される。そして、その配置結果は、第１の実施形態と同様に、図１７に示される構造体２１２の形式で得られる。
【０２１０】
さらに、ステップＳ１２１６では、ステップＳ１２１５における配置においてエラーが発生したかどうかが判定される。その結果、エラーがあった場合（ＹＥＳ）、申告データが矛盾するのでステップＳ１２１８へ進んでエラー処理が行われる。また、エラーがない場合（ＮＯ）、ステップＳ１２１７へ進む。
【０２１１】
ステップＳ１２１７では、ステップＳ１２１５において決定された配置に従って「お気に入り表示」を図２に示されるシステム環境表示装置のＣＲＴ１６に表示する。なお、自動生成及び申告の条件としては、机を向かい合わせにして二列で配置するが、ユーザによるお気に入り表示の編集においては、この限りではない。
一方、ステップＳ１２１８では、入力された申告データに矛盾がある旨をＣＲＴ１６へ表示して終了する。
【０２１２】
図３２は、図３１におけるステップＳ１２１５に対応する処理手順の詳細を示すフローチャートである。このフローチャートについても、上述した第１の実施形態における図１９に相当しており、処理内容もほとんど同じであるので、異なる部分についてのみ説明する。
第１の実施形態においては、申告者の配置において（center * k，center）を座標としていた。しかし、第２の実施形態では、Ｙ座標としてとり得る値は０あるいは１しかないため、ステップＳ１２２４においてサブルーチンへ渡している引数は（center * k，１，’前’，rep)としている。
【０２１３】
また、配置を探索するために第１の実施形態と同様に、構造体２１２の構造を持つ変数layoutを使用するが、配置候補が一意に定まるため、局所変数ではなく大域変数として利用している。したがって、ステップＳ１２２４において呼び出すサブルーチンにおいてもlayoutを引数として渡していない。
【０２１４】
図３３及び図３４は、図３２におけるステップＳ１２２４に対応する処理手順（サブルーチン）の詳細を示すフローチャートである。図３３において、まず、サブルーチンを呼び出した手順から渡された引数を受け取る（ステップＳ１２２８）。引数の内容については前述した通りである。すなわち、第１引数から第４引数までを、順に変数ｘ、ｙ、dir、repに割り当てる。なお、これら４つの変数は図３３および図３４におけるフローチャート内のみを有効範囲とし、他のフローチャート及び再帰的に別に呼び出された本フローチャート内における同一名称の変数とは異なるものとする。
【０２１５】
次に、座標（ｘ，ｙ）の位置に配置されている申告者を変数layoutから取得する（ステップＳ１２２９）。そして、座標（ｘ，ｙ）の位置に申告者が配置されているかどうかをステップＳ１２２９の結果から判定する（ステップＳ１２３０）。その結果、誰も配置されていない場合（ＹＥＳ）、ステップＳ１２３３へ進む。一方、既に誰か配置されている場合にはステップＳ１２３１へ進む。
【０２１６】
ステップＳ１２３１では、ステップＳ１２２９において得た申告者が、repの示す申告者であるか否かが判定される。その結果、repである場合（ＹＥＳ）、ステップＳ１２３２へ進む。一方、repでない場合（ＮＯ）、配置に矛盾が生じているため、エラー終了する。
【０２１７】
ステップＳ１２３２では、ステップＳ１２２９において得た申告者が（ｘ，ｙ）においてdirの示す向きで配置されているか否かが判定される。その結果、dirの向きである場合（ＹＥＳ）、repの配置はすでに正常に終了しているので、正常終了する。また、dirの向きではない場合（ＮＯ）、配置に矛盾が生じているため、エラー終了する。
【０２１８】
ステップＳ１２３３では、repが示す申告者が別の位置で既に配置されているか否かをlayoutから判定する。その結果、既に配置されている場合（ＹＥＳ）、配置に矛盾が生じているため、エラー終了する。一方、未だ配置されていない場合（ＮＯ）、ステップＳ１２３４へ進む。
【０２１９】
ステップＳ１２３４では、layoutに対して申告者repを位置（ｘ，ｙ）、向きdirで登録する。具体的には、図１７で示される構造体２１２における申告者のデータ２１４ｂ、２１４ｃ、２１４ｄへ対応するrep、（ｘ，ｙ）、dirを登録する。
ステップＳ１２３５では、repが「自分の位置」にあると申告されている機器が更にあるか否かが判定される。その結果、登録される機器がまだある場合（ＹＥＳ）、ステップＳ１２３６へ進む。また、登録される機器がない場合（ＮＯ）、repの前にある機器の配置を登録するために、図３４におけるステップＳ１２３９へ進む。
【０２２０】
ステップＳ１２３６では、repの位置にある機器を図３０で示される構造体２５６におけるデータ２５８ｂから取得し、tmpへ代入する。なお、変数tmpは、図３３及び図３４におけるフローチャート内のみを有効範囲とし、他のフローチャートおよび再帰的に別に呼び出された本フローチャート内における同一名称の変数とは異なるものとする。
【０２２１】
ステップＳ１２３７では、layoutに対してtmpを（ｘ，ｙ）の位置で登録するために、後述する図３５において、デバイス配置サブルーチンを呼び出す。デバイス配置サブルーチンは３つの引数を持ち、第１引数は機器を配置するｘ座標、第２引数は機器を配置するｙ座標、第３引数は配置する機器である。そして、デバイス配置サブルーチンは、矛盾無く配置できた場合には正常値を返し、配置に矛盾が生じた場合にはエラーを返す。ステップＳ１２３７では、引数として順に（ｘ，ｙ，tmp）が渡される。
【０２２２】
ステップＳ１２３８では、ステップＳ１２３７における配置でエラーがあったか否かが判定される。その結果、エラーがあった場合（ＹＥＳ）、エラー終了する。一方、エラーでない場合（ＮＯ）、ステップＳ１２３５へ戻って登録が繰り返えされる。
【０２２３】
図３４において、ステップＳ１２３９では、repにとっての「前」の座標が計算される。ここで、repがＹ＝０の位置に配置されている場合は、ｘ座標が同じ座標であってＹ＝１となるような座標であり、repがＹ＝１の位置に配置されている場合は、ｘ座標が同じであってＹ＝０となるような座標である。ここではＹ座標を変数ｙ’へ代入する。なお、変数ｙ’は、図３３及び図３４におけるフローチャート内のみを有効範囲とし、他のフローチャートおよび再帰的に別に呼び出された本フローチャート内における同一名称の変数とは異なるものとする。
【０２２４】
ステップＳ１２４０からＳ１２４３までの処理は、ステップＳ１２３５からＳ１２３８までの処理と同様の処理が行われる。但し、ステップＳ１２４２においては、引数として順に（ｘ，ｙ’，tmp）が渡される。
同様にして、ステップＳ１２４４からＳ１２４８までの処理においては、「左」の装置の配置が行われ、ステップＳ１２４９からＳ１２５３までの処理においては、「右」の装置の配置が行われる。
【０２２５】
左の装置を配置する座標については、repがＹ＝０の位置に配置されている場合は、ｙ座標が同じであって、Ｘ＝ｘ＋１となるような座標であり、repがＹ＝１の位置に配置されている場合は、ｙ座標が同じであって、Ｘ＝ｘ−１となるような座標である。
【０２２６】
右の装置を配置する座標については、repがＹ＝０の位置に配置されている場合は、ｙ座標が同じであって、Ｘ＝ｘ−１となるような座標であり、repがＹ＝１の位置に配置されている場合は、ｙ座標が同じであって、Ｘ＝ｘ＋１となるような座標である。
ここではＸ座標を変数ｘ’へ代入する。なお、変数ｘ’は、図３３及び図３４におけるフローチャート内のみを有効範囲とし、他のフローチャートおよび再帰的に別に呼び出された本フローチャート内における同一名称の変数とは異なるものとする。
そして、全ての装置の配置がエラーなく終了した場合は、正常終了する。
【０２２７】
図３５は、図３３におけるステップＳ１２３７、図３４におけるステップＳ１２４２、Ｓ１２４７、Ｓ１２５２に対応する処理手順（サブルーチン）の詳細を示すフローチャートである。
図３５において、まず、サブルーチンを呼び出した手順から渡された引数が受け取られる（ステップＳ１２５４）。なお、引数の内容については前述した通りである。そして、第１引数から第３引数までを順に変数ｘ、ｙ、devに割り当てる。これら３つの変数は、図３５におけるフローチャート内のみを有効範囲とし、他のフローチャートおよび再帰的に別に呼び出された本フローチャート内における同一名称の変数とは異なるものとする。
【０２２８】
次に、devの示す機器がlayoutにおいて既に配置されているか否かが判定される（ステップＳ１２５５）。その結果、既に配置されている場合（ＹＥＳ）、ステップＳ１２８０へ進む。一方、そうでない場合（ＮＯ）、ステップＳ１２５６へ進む。
【０２２９】
ステップＳ１２８０では、devが（ｘ，ｙ）に配置されているか否かが判定される。その結果、devが配置されている位置が（ｘ，ｙ）である場合（ＹＥＳ）、devの配置は既に正常に終了しているので正常終了する。一方、そうでない場合（ＮＯ）、配置に矛盾が生じているため、エラー終了する。
【０２３０】
ステップＳ１２５６では、layoutにおいてdevが（ｘ，ｙ）の位置で登録される。具体的には、図１７で示される構造体２１２におけるデバイスのデータ２１５ｂ、２１５ｃへ対応するdev、（ｘ，ｙ）が登録される。
また、ステップＳ１２５７では、devを「自分の位置」にあると申告されている申告者がいるか否かが判定される。その結果、「自分の位置」にあると申告した申告者がいる場合（ＹＥＳ）、ステップＳ１２５８へ進む。また、自分の位置にない場合（ＮＯ）、ステップＳ１２６２へ進む。
【０２３１】
ステップＳ１２５８では、「自分の位置」にあると申告した申告者を取得し、repに代入する。ここで、repは、図３５におけるフローチャート内のみを有効範囲とし、他のフローチャート及び再帰的に別に呼び出された本フローチャート内における同一名称の変数とは異なるものとする。
ステップＳ１２５９では、repの向きを定め、dirへ代入する。ここで、dirは、図３５におけるフローチャート内のみを有効範囲とし、他のフローチャート及び再帰的に別に呼び出された本フローチャート内における同一名称の変数とは異なるものとする。なお、向きは申告者の配置される位置によって図２７に示すように一意に定めることができる。
【０２３２】
ステップＳ１２６０では、申告者repをlayoutにおいて位置（ｘ，ｙ）、向きdirで配置するために、図３３におけるフローチャートの示す申告者配置サブルーチンを再帰呼び出しする。
ステップＳ１２６１では、ステップＳ１２６０における配置でエラーがあったか否かが判定される。その結果、エラーがあった場合（ＹＥＳ）、エラー終了する。また、エラーでない場合（ＮＯ）、ステップＳ１２６２へ進む。
【０２３３】
ステップＳ１２６２では、devを「前」にあると申告している申告者がいるか否かが判定される。その結果、「前」にあるとする申告者がいる場合（ＹＥＳ）、ステップＳ１２６３へ進む。一方、「前」と申告した申告者がいない場合（ＮＯ）、ステップＳ１２６８へ進む。
ステップＳ１２６３では、「前」にあるとする申告者を取得し、repに代入する。そして、repの向きを定め、dirへ代入する（ステップＳ１２６４）。さらに、repの配置される位置を定める（ステップＳ１２６５）。なお、repの位置と向きは、devの位置から図２７に示すように一意に定めることができる。
【０２３４】
次いで、申告者repをステップＳ１２６４及びステップＳ１２６５で定めた位置と向きで配置するために、図３３におけるフローチャートの示す申告者配置サブルーチンを再帰呼び出しする（ステップＳ１２６６）。
そして、ステップＳ１２６６における配置でエラーがあったか否かが判定される（ステップＳ１２６７）。その結果、エラーがあった場合（ＹＥＳ）、エラー終了する。一方、エラーがなかった場合（ＮＯ）、ステップＳ１２６８へ進む。
【０２３５】
ステップＳ１２６８からＳ１２７３においては、同様にして、「左」と申告する申告者が配置され、ステップＳ１２７４からＳ１２７９においては、「右」と申告する申告者が配置される。
このようにして、装置の位置、前、左、右方向に申告している申告者が全て正常に配置された場合には正常終了する。
【０２３６】
以上述べたように、図３１から図３５に示したフローチャートの手順にしたがって、「向い合った机の列」という限定した配列での申告者及び装置の自動配置が可能になった。
すなわち、上述した第２の実施形態によれば、机の配列条件を現実のオフィス環境の配置に合わせて限定することにより、より効率良く、かつ正確な配置の自動生成が可能となった。
【０２３７】
次に、図３６に示すメモリマップを参照して、本発明に係るシステム環境表示で読み出し可能なデータ処理プログラムの構成について説明する。図３６は、本発明に係るシステム環境表示装置で読み出し可能な各種データ処理プログラムを格納する記録媒体のメモリマップを説明する図である。
【０２３８】
なお、記録媒体には、格納されるプログラム群を管理する情報、例えばバージョン情報や作成者情報等も格納され、かつ、プログラム読み出し側のＯＳ等に依存する情報、例えばプログラムを識別表示するアイコン等も格納されている場合もある。
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、各種プログラムをコンピュータにインストールするためのプログラムや、インストールするプログラムが圧縮されている場合に、回答するプログラム等も格納される場合もある。
【０２３９】
また、上述した実施形態では、ネットワークに接続している各ユーザのＰＣ等の端末を用いて計算させた周辺機器を含むシステム環境を表示させていたが、この処理をネットワークに接続されたサーバを用いて行ってもよい。例えば、各ユーザが申告する周辺機器の配置情報をサーバに登録することによって、サーバが各ユーザから申告された配置情報に基づいてレイアウトを計算する。そして、各ユーザは、サーバから計算された配置情報を受け取るようにしてもよい。これによって、全員に対して同一のレイアウト情報を付与することが可能となる。
【０２４０】
なお、本発明は、複数の機器（例えば、ホストコンピュータ、インタフェース機器、リーダ、プリンタ等）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置等）に適用してもよい。
【０２４１】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２４２】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２４３】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【０２４４】
以上説明したように、本発明によれば、現実の配置に忠実なお気に入り表示を作成する際に、ユーザ各個人の局所的な配置情報を総合することで、自動的にオフィス全体のお気に入り表示を作成することが可能となった。各ユーザが申告する機器の配置（位置関係）情報は、お気に入り表示を自動生成するために新規に一斉に入力しても構わないが、各ユーザがローカルに使用しているお気に入り表示情報を使用することも可能であり、再利用可能な視認性の高いお気に入り表示を容易に取得することが可能である。
【０２４５】
また、自動生成のために申告情報を総合するに当たっては、申告対象となる機器が少ない場合には、配置候補が増え、現実のオフィスの配置に完全に一致するレイアウトが生成されない場合もある。しかし、逆に、現実の配置に一致した視認性が高い表示画面が必要とされる環境は多くのＰＣや周辺機器を備え、共有利用している環境であることから、本発明の必要とされる環境であればあるほど自動生成された配置の正確性が増し、操作環境の視認性向上に効果を与えるものである。
【０２４６】
また、一般的なオフィスの机やユーザの配置に特化し、申告情報の制約条件を厳しくすることにより、より効率良く自動生成を行うことも可能となっている。
【発明の効果】
以上説明したように、この発明によれば、システム環境下の各ユーザが利用する端末及び周辺機器の配置情報を統合して、システム全体の端末及び周辺機器の配置情報を表示するレイアウト画面を容易に生成することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態によるシステム環境表示装置を含むネットワーク機器のシステム構成を説明するための概要図である。
【図２】本発明によるシステム環境表示装置の第１の実施形態を示すクライアント構成を説明するためのブロック図である。
【図３】図３における机３０５ａ〜３０５ｆの形状と配置方向（向き）を説明するための図である。
【図４】図２に示したシステム環境表示装置に登録する情報を記憶するための構造体の一例を示す図である。
【図５】図３における机３０５ａ〜３０５ｆの形状と配置方向（向き）を説明するための図である。
【図６】本実施形態における機器の配置を定める規則を説明するための図である。
【図７】申告者が申告する機器の配置可能な範囲を説明するための図である。
【図８】本実施形態における第１の配置例を示した図である。
【図９】本実施形態における第２の配置例を示した図である。
【図１０】現実の配置から「お気に入り表示」の配置の自動生成を行う例を説明するための図である。
【図１１】装置の配置を中心に申告者の配置を決定する方法を説明するための図である。
【図１２】申告者が申告する方向と装置からの配置方向で決定される申告者の向きについて説明するための図である。
【図１３】申告者の配置を中心に装置の配置を決定するための方法を説明するための図である。
【図１４】図１３における符号５２５において、隣に配置される装置の位置がどのように決まるかを説明するための図である。
【図１５】図２に示されるシステム環境表示装置に一人分の申告者の申告データを入力し、入力されたデータを記憶するための構造体の一例を示す図である。
【図１６】申告者および装置の自動配置のために、本実施形態によるシステム環境表示装置に申告者データを記憶するための図１５に示される構造体を加工して得られた構造体群を示す図である。
【図１７】自動配置において矛盾の無い配置を探索するために、本実施形態によるシステム環境表示装置に配置探索状態を各時点で記憶しておくための構造体の一例を示す図である。
【図１８】本発明によるシステム環境表示装置における自動レイアウト生成に関するデータ処理手順の一例を示すフローチャートである。
【図１９】図１８におけるステップＳ１０２２に対応する処理手順の詳細を示すフローチャートである。
【図２０】図１９におけるステップＳ１０３１に対応する処理手順（サブルーチン）の詳細を示すフローチャートである。
【図２１】図１９におけるステップＳ１０３１に対応する処理手順（サブルーチン）の詳細を示すフローチャートである。
【図２２】図２０におけるステップＳ１０４５、図２１におけるステップＳ１０５０、ステップＳ１０５５、ステップＳ１０６０、ステップＳ１０６５に対応する処理手順（サブルーチン）の詳細を示すフローチャートである。
【図２３】図２２におけるステップＳ１０７５及びステップＳ１０８５に対応する処理手順（サブルーチン）の詳細を示すフローチャートである。
【図２４】第１実施形態における図６に対応した第２の実施形態における機器の配置を定める規則を説明するための図である。
【図２５】第２の実施形態における申告者が配置を申告する機器の存在可能な範囲を説明するための図である。
【図２６】第１の実施形態における図１１に対応した第２の実施形態における配置方法を説明するための図である。
【図２７】装置に対して前、左、右に位置すると申告した申告者が配置される向きを説明するための図である。
【図２８】第１の実施形態における図１３に対応した第２の実施形態における配置手順を説明するための図である。
【図２９】第１の実施形態における図１５に対応した第２の実施形態における一人分の申告データを入力するための構造体の一例を示す図である。
【図３０】第１の実施形態における図１６に対応した第２の実施形態における自動配置に使用する構造体の一例を示す図である。
【図３１】第１の実施形態における図１８に対応した第２の実施形態におけるデータ処理手順の一例を示すフローチャートである。
【図３２】図３１におけるステップＳ１２１５に対応する処理手順の詳細を示すフローチャートである。
【図３３】図３２におけるステップＳ１２２４に対応する処理手順（サブルーチン）の詳細を示すフローチャートである。
【図３４】図３２におけるステップＳ１２２４に対応する処理手順（サブルーチン）の詳細を示すフローチャートである。
【図３５】図３３におけるステップＳ１２３７、図３４におけるステップＳ１２４２、Ｓ１２４７、Ｓ１２５２に対応する処理手順（サブルーチン）の詳細を示すフローチャートである。
【図３６】本発明に係るシステム環境表示装置で読み出し可能な各種データ処理プログラムを格納する記録媒体のメモリマップを説明する図である。
【符号の説明】
１  システムバス
２  ＣＰＵ
３  プログラムメモリ（ＰＭＥＭ）
４  通信制御部
５  通信ポート
６  通信回線
７  ネットワーク上の他の装置
８  外部記憶装置制御部
９  フレキシブルディスク（ＦＤ）
１０  ハードディスク（ＨＤ）
１１  入力制御部
１２  キーボード
１３  マウス
１４  ビデオイメージメモリ（ＶＲＡＭ）
１５  表示出力制御部
１６  ＣＲＴ
１７  プリンタ制御部
１８  プリンタ
１９  外部機器制御部
１Ａ  外部読み取り装置制御部
１Ｂ  外部読み取り装置
【図１】
0003890218.tif 000002
【図２】
0003890218.tif 000003
【図３】
0003890218.tif 000004
【図４】
0003890218.tif 000005
【図５】
0003890218.tif 000006
【図６】
0003890218.tif 000007
【図７】
0003890218.tif 000008
【図８】
0003890218.tif 000009
【図９】
0003890218.tif 000010
【図１０】
0003890218.tif 000011
【図１１】
0003890218.tif 000012
【図１２】
0003890218.tif 000013
【図１３】
0003890218.tif 000014
【図１４】
0003890218.tif 000015
【図１５】
0003890218.tif 000016
【図１６】
0003890218.tif 000017
【図１７】
0003890218.tif 000018
【図１８】
0003890218.tif 000019
【図１９】
0003890218.tif 000020
【図２０】
0003890218.tif 000021
【図２１】
0003890218.tif 000022
【図２２】
0003890218.tif 000023
【図２３】
0003890218.tif 000024
【図２４】
0003890218.tif 000025
【図２５】
0003890218.tif 000026
【図２６】
0003890218.tif 000027
【図２７】
0003890218.tif 000028
【図２８】
0003890218.tif 000029
【図２９】
0003890218.tif 000030
【図３０】
0003890218.tif 000031
【図３１】
0003890218.tif 000032
【図３２】
0003890218.tif 000033
【図３３】
0003890218.tif 000034
【図３４】
0003890218.tif 000035
【図３５】
0003890218.tif 000036
【図３６】
0003890218.tif 000037