(57)【要約】【課題】  大きな表示領域を確保しつつも表示の切り替えが容易で、ユーザービリティの高いディスプレイ表示が行えるようにする。【解決手段】  一つのリアルデスクトップ２がリアルディスプレイ１に表示されている際、当該ディスプレイ１に隣接して仮想ディスプレイ１０が配置されているとし、この仮想ディスプレイ１０に別のデスクトップ２０が表示されているものとする。リアルディスプレイ１の右側に位置する仮想ディスプレイ１０上の仮想デスクトップ２０に切り替える操作がされると、それまで右側の仮想ディスプレイ１０に表示されていたと仮想される仮想デスクトップ２０がリアルディスプレイ１に表示された状態となり、それまでリアルディスプレイ１に表示されていたリアルデスクトップ２は、リアルディスプレイ１の左側に位置する仮想デスクトップ２０に仮想的に表示される仮想デスクトップ２０となる。【選択図】  図２
2007334525.tif 000002
【特許請求の範囲】
【請求項１】
演算処理部と、記憶部と、ディスプレイとを有するコンピュータであって、
記憶部には、ディスプレイに表示される情報であるオブジェクトが記憶されているとともに、コンピュータを動作させるオペレーティングシステムと、複数のアプリケーションプログラムと、オブジェクトをディスプレイに表示する表示プログラムがインストールされており、
表示プログラムによって表示されるオブジェクトには、各アプリケーションプログラムを起動するためのアイコンと、各アプリケーションによって取り扱われるデータが含まれており、
記憶部には、アイコンを表示するためのアイコン表示用ファイルと、各アプリケーションによって取り扱われるデータとが記憶されており、
表示プログラムは、各アイコン表示用ファイルによって各アプリケーションプログラムを起動するアイコンをそれぞれディスプレイに表示するものとなっており、
オペレーティングシステムは、二以上の前記アプリケーションプログラムを並行して実行することが可能であって、表示プログラムは、二以上の前記アプリケーションプログラムが実行されている際にそれぞれのアプリケーションプログラムの実行状況を一つディスプレイにおいてそれぞれのウインドウに表示するマルチウインドウ表示が可能となっており、
記憶部には、ディスプレイにおける各オブジェクトの表示状態の情報である状態情報を記録した状態情報ファイルが記憶されており、
表示プログラムは、オペレーティングシステムが起動した際、状態情報ファイルに保存された状態情報を読み出して、前回オペレーティングシステムが終了した際のディスプレイへの表示状態を再現するようになっており、
記憶部には、前記現実のディスプレイ及び現実のディスプレイに隣接して仮想的に存在している仮想ディスプレイから成るディスプレイ群のレイアウトに関する情報であるディスプレイレイアウト情報を記録したディスプレイレイアウト情報ファイルが記憶されており、
状態情報ファイルに記録された状態情報は、現実のディスプレイの全画面領域内に同時に表示されるすべてのオブジェクトの状態情報を、複数のオブジェクトグループに分けて保存したものとなっており、
オブジェクトグループの数は、現実のディスプレイの数に仮想ディスプレイの数を加えたものに一致しており、記憶部は、前記ディスプレイ群におけるどのディスプレイに対応するのかの情報とともに前記状態情報を記憶するようになっており、
さらに、
一つのオブジェクトグループが現実のディスプレイに表示されている際、現実のディスプレイに隣接する任意の仮想ディスプレイを選択する入力をユーザーに行わせる選択入力手段が設けられており、この選択入力手段は、現実のディスプレイに対して仮想ディスプレイが存在する側を指定させるものであり、
表示プログラムは、それまで現実のディスプレイに表示されてきたオブジェクトグループの表示を止め、別のオブジェクトグループを現実のディスプレイに表示する切替モジュールを有しており、
切替モジュールは、選択入力手段がユーザーに任意の仮想ディスプレイを選択させた際に動作するものであって、選択された仮想ディスプレイに対応したオブジェクトグループを現実のディスプレイに表示するものであることを特徴とするコンピュータ。
【請求項２】
前記選択入力手段は、ハードウェアとしてのマウスと、記憶部にインストールされたマウス駆動プログラム及び前記表示プログラムの一部である切替起動モジュールとから構成されており、切替起動モジュールは、マウス駆動プログラムによってディスプレイ上に表示されるマウスポインタが、ユーザーによるマウスの操作により前記ディスプレイの画面端に位置し且つ所定の付加動作が行われたのを検出し、前記切替モジュールを起動させるものであって、前記ディスプレイのどの側の画面端で付加動作が行われたのかの情報を前記切替モジュールに渡すものであり、
前記切替モジュールは、渡された情報に従い、その側に位置する仮想ディスプレイに対応したオブジェクトグループを現実のディスプレイに表示するものとなっていることを特徴とする請求項１記載のコンピュータ。
【請求項３】
前記付加動作は、画面端に位置したマウスポインタを当該画面端に沿って所定距離以上移動させる動作であることを特徴とする請求項２記載のコンピュータ。
【請求項４】
前記ディスプレイ群のレイアウトは、横方向の一つのみの列と縦方向の一つのみの列とから成るものであることを特徴とする請求項１、２又は３記載のコンピュータ。
【請求項５】
前記ディスプレイ群のレイアウトは、横方向の一つのみの列と縦方向の一つのみの列とから成るものであり、
横方向の列のディスプレイ群の一つが現実のディスプレイである場合にその左又は右側の仮想ディスプレイが前記選択入力手段により選択された結果、前記切替モジュールにより、その左又は右側の仮想ディスプレイが現実のディスプレイに切り替わった際、縦方向の仮想ディスプレイの列も同様に左又は右にシフトし、切り替わった現実のディスプレイを通って縦方向の列が位置するようレイアウトが変更されるようになっており、
前記ディスプレイレイアウト情報ファイルは、変更されたレイアウトの情報が更新されて記録されるものであることを特徴とする請求項１、２又は３記載のコンピュータ。
【請求項６】
前記ディスプレイ群のレイアウトは、横方向の一つのみの列と縦方向の一つのみの列とから成るものであり、
縦方向の列のディスプレイ群の一つが現実のディスプレイである場合にその上又は下側の仮想ディスプレイが前記選択入力手段により選択された結果、前記切替モジュールにより、その上又は下側の仮想ディスプレイが現実のディスプレイに切り替わった際、横方向の仮想ディスプレイの列も同様に上又は下にシフトし、切り替わった現実のディスプレイを通って横方向の列が位置するようレイアウトが変更されるようになっており、
前記ディスプレイレイアウト情報ファイルは、変更されたレイアウトの情報が更新されて記録されるものであることを特徴とする請求項１、２又は３記載のコンピュータ。
【請求項７】
前記横方向の一つののみの列又は縦方向の一つのみの列は、無終端のループ状につながったものであることを特徴とする請求項４、５又は６記載のコンピュータ。
【請求項８】
前記横方向の一つののみの列及び縦方向の一つのみの列は、無終端のループ状につながったものであることを特徴とする請求項４、５又は６記載のコンピュータ。
【請求項９】
請求項１乃至８いずれかに記載のコンピュータがクライアントコンピュータとしてネットワークを介してサーバコンピュータに複数接続されているクライアント−サーバコンピュータ群であって、サーバコンピュータはサーバ記憶部を有しており、
サーバ記憶部には、各クライアントコンピュータにおける前記状態情報を保存したサーバ側状態情報ファイルが設けられており、サーバ側状態情報ファイルは、ユーザーを識別するユーザーＩＤ毎に前記状態情報を保存しており、
サーバ記憶部には、認証プログラム、状態情報登録プログラム及び状態情報送信プログラムがインストールされており、
認証プログラムは、クライアントコンピュータからユーザーＩＤを発信させてアクセスを許可するかどうか判断するプログラムであり、
前記表示プログラムは、状態情報発信モジュール及び登録情報受信モジュールを有しており、
状態情報発信モジュールは、当該クライアントコンピュータのオペレーティングシステムが終了する際、当該クライアントコンピュータにおける前記状態情報を発信してサーバコンピュータへの登録を要求するものであり、
状態情報登録プログラムは、認証プログラムによりアクセスが許可されたクライアントコンピュータから発信された状態情報を、発信されたユーザーＩＤの状態情報としてサーバ側状態情報ファイルに記録して登録するプログラムであり、
状態情報送信プログラムは、認証プログラムによりアクセスが許可されたクライアントコンピュータに、発信されたユーザーＩＤの状態情報を送信するプログラムであり、
状態情報受信モジュールは、サーバコンピュータから送信された状態情報を受信して各オブジェクトグループの前記現実のディスプレイへの表示を可能とするものであり、
状態情報送信プログラムは、認証プログラムにより認証される限り、前回状態情報を送信してきたクライアントコンピュータとは異なるクライアントコンピュータに対しても状態情報を送信するものであって、オペレーティングシステム終了時のディスプレイ表示状態の再現を異なるクライアントコンピュータ間において可能とするものであることを特徴とするクライアント−サーバコンピュータ群。
【請求項１０】
前記状態情報送信プログラムは、前記状態情報とともに広告オブジェクトを送信するものであり、この広告オブジェクトは、送信されたクライアントコンピュータにおいていずれかのオブジェクトグループに追加されるものであり、そのオブジェクトグループが現実のディスプレイに表示される際にディスプレイに表示されるものであることを特徴とするクライアント−サーバコンピュータ群。
【請求項１１】
請求項９又は１０に記載するクライアント−サーバコンピュータ群を構成する前記サーバコンピュータ。
【請求項１２】
請求項１乃至５記載のコンピュータにインストールされる前記表示プログラム。
【請求項１３】
請求項１乃至８いずれかに記載のコンピュータがクライアントコンピュータとしてネットワークを介してサーバコンピュータに複数接続されているクライアント−サーバコンピュータ群において、いずれかのクライアントが備える現実のディスプレイにオブジェクトを表示するディスプレイ表示方法であって、
サーバコンピュータはサーバ記憶部を有しており、
サーバ記憶部は、各クライアントコンピュータにおける前記状態情報を記録したサーバ側状態情報ファイルを記憶しており、サーバ側状態情報ファイルは、ユーザーを識別するユーザーＩＤ毎に前記状態情報を記録しており、
サーバ記憶部には、認証プログラム、状態情報登録プログラム及び状態情報送信プログラムがインストールされており、
認証プログラムは、クライアントコンピュータからユーザーＩＤを発信させてアクセスを許可するかどうか判断するプログラムであり、
前記表示プログラムは、状態情報発信モジュール及び登録情報受信モジュールを有しており、
クライアントコンピュータのオペレーティングシステムが終了する際、状態情報発信モジュールが、当該クライアントコンピュータにおける前記状態情報を発信してサーバコンピュータへの登録を要求するステップと、
状態情報登録プログラムが、認証プログラムによりアクセスが許可されたクライアントコンピュータから発信された状態情報を、発信されたユーザーＩＤの状態情報としてサーバ側状態情報ファイルに記録して登録するステップと、
状態情報送信プログラムが、認証プログラムによりアクセスが許可されたクライアントコンピュータに、発信されたユーザーＩＤの状態情報を送信するステップと、
状態情報受信モジュールが、サーバコンピュータから送信された状態情報を受信して各オブジェクトグループの前記現実のディスプレイへの表示を可能とするステップと、
状態情報送信プログラムが、認証プログラムにより認証される限り、前回状態情報を送信してきたクライアントコンピュータとは異なるクライアントコンピュータに対しても状態情報を送信するステップを備えており、ペレーティングシステム終了時のディスプレイ表示状態の再現を異なるクライアントコンピュータ間において可能とすることを特徴とするディスプレイ表示方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願の発明は、コンピュータのディスプレイへの情報の表示に関するものである。
【背景技術】
【０００２】
コンピュータにおいて、ディスプレイは主要なヒューマンインターフェースの一つであり、マウスを始めとする各種ＧＵＩ（Graphical User Interface）の発達により、操作性の向上が図られてきた。特に、マルチウインドウ、マルチタスクを可能にするＯＳの発達により、一つのディスプレイ上において異なるアプリケーションプログラム（以下、単にアプリケーション）を同時に起動して表示することがごく当たり前の技術となってきている。
【特許文献１】特開平３−２０４６８９
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、マルチウインドウ、マルチタスクとは言っても、一つのディスプレイにおいてウインドウを並べて表示するか、重ねて表示するかであり、使い勝手はあまり良くない。並べて表示する場合、一つのウインドウが小さくなる欠点がある。多数のウインドウを開く場合、この欠点は顕著である。重ねて表示する場合、広い領域に表示が可能であるが、複数のウインドウが重なった状態を仮想しながら切り替えを行うため、アクティブにしたいウインドウがどこにあるかを発見しづらく、切り替えがやりづらい欠点がある。Ｗｉｎｄｏｗｓ（登録商標）では、タスクバーにウインドウアイコンが表示されるので、それをマウスでクリックすることでウインドウの切り替えができる。しかしながら、ユーザーにおいて仮想されているのは多数のウインドウの重なりであり、その仮想状態においてタスクバーにウインドウアイコンを横に並べても、仮想状態とは一致しないため、ユーザビリティが高いとは言えない。
【０００４】
本願の発明は、このような課題を解決するためになされたものであり、ディスプレイへの表示技術の分野において優れたイノベーションを提供し、大きな表示領域を確保しつつも表示の切り替えが容易で、ユーザービリティの高いディスプレイ表示が行えるようにすることを課題としている。
【課題を解決するための手段】
【０００５】
上記課題を解決するため、本願の請求項１記載の発明は、演算処理部と、記憶部と、ディスプレイとを有するコンピュータであって、
記憶部には、ディスプレイに表示される情報であるオブジェクトが記憶されているとともに、コンピュータを動作させるオペレーティングシステムと、複数のアプリケーションプログラムと、オブジェクトをディスプレイに表示する表示プログラムがインストールされており、
表示プログラムによって表示されるオブジェクトには、各アプリケーションプログラムを起動するためのアイコンと、各アプリケーションによって取り扱われるデータが含まれており、
記憶部には、アイコンを表示するためのアイコン表示用ファイルと、各アプリケーションによって取り扱われるデータとが記憶されており、
表示プログラムは、各アイコン表示用ファイルによって各アプリケーションプログラムを起動するアイコンをそれぞれディスプレイに表示するものとなっており、
オペレーティングシステムは、二以上の前記アプリケーションプログラムを並行して実行することが可能であって、表示プログラムは、二以上の前記アプリケーションプログラムが実行されている際にそれぞれのアプリケーションプログラムの実行状況を一つディスプレイにおいてそれぞれのウインドウに表示するマルチウインドウ表示が可能となっており、
記憶部には、ディスプレイにおける各オブジェクトの表示状態の情報である状態情報を記録した状態情報ファイルが記憶されており、
表示プログラムは、オペレーティングシステムが起動した際、状態情報ファイルに保存された状態情報を読み出して、前回オペレーティングシステムが終了した際のディスプレイへの表示状態を再現するようになっており、
記憶部には、前記現実のディスプレイ及び現実のディスプレイに隣接して仮想的に存在している仮想ディスプレイから成るディスプレイ群のレイアウトに関する情報であるディスプレイレイアウト情報を記録したディスプレイレイアウト情報ファイルが記憶されており、
状態情報ファイルに記録された状態情報は、現実のディスプレイの全画面領域内に同時に表示されるすべてのオブジェクトの状態情報を、複数のオブジェクトグループに分けて保存したものとなっており、
オブジェクトグループの数は、現実のディスプレイの数に仮想ディスプレイの数を加えたものに一致しており、記憶部は、前記ディスプレイ群におけるどのディスプレイに対応するのかの情報とともに前記状態情報を記憶するようになっており、
さらに、
一つのオブジェクトグループが現実のディスプレイに表示されている際、現実のディスプレイに隣接する任意の仮想ディスプレイを選択する入力をユーザーに行わせる選択入力手段が設けられており、この選択入力手段は、現実のディスプレイに対して仮想ディスプレイが存在する側を指定させるものであり、
表示プログラムは、それまで現実のディスプレイに表示されてきたオブジェクトグループの表示を止め、別のオブジェクトグループを現実のディスプレイに表示する切替モジュールを有しており、
切替モジュールは、選択入力手段がユーザーに任意の仮想ディスプレイを選択させた際に動作するものであって、選択された仮想ディスプレイに対応したオブジェクトグループを現実のディスプレイに表示するものであるという構成を有する。
また、上記課題を解決するため、請求項２記載の発明は、前記請求項１の構成において、前記選択入力手段は、ハードウェアとしてのマウスと、記憶部にインストールされたマウス駆動プログラム及び前記表示プログラムの一部である切替起動モジュールとから構成されており、切替起動モジュールは、マウス駆動プログラムによってディスプレイ上に表示されるマウスポインタが、ユーザーによるマウスの操作により前記ディスプレイの画面端に位置し且つ所定の付加動作が行われたのを検出し、前記切替モジュールを起動させるものであって、前記ディスプレイのどの側の画面端で付加動作が行われたのかの情報を前記切替モジュールに渡すものであり、
前記切替モジュールは、渡された情報に従い、その側に位置する仮想ディスプレイに対応したオブジェクトグループを現実のディスプレイに表示するものとなっているという構成を有する。
また、上記課題を解決するため、請求項３記載の発明は、前記請求項２の構成において、前記付加動作は、画面端に位置したマウスポインタを当該画面端に沿って所定距離以上移動させる動作であるという構成を有する。
また、上記課題を解決するため、請求項４記載の発明は、前記請求項１、２又は３の構成において、前記ディスプレイ群のレイアウトは、横方向の一つのみの列と縦方向の一つのみの列とから成るものであるという構成を有する。
また、上記課題を解決するため、請求項５記載の発明は、前記請求項１，２又は３の構成において、前記ディスプレイ群のレイアウトは、横方向の一つのみの列と縦方向の一つのみの列とから成るものであり、
横方向の列のディスプレイ群の一つが現実のディスプレイである場合にその左又は右側の仮想ディスプレイが前記選択入力手段により選択された結果、前記切替モジュールにより、その左又は右側の仮想ディスプレイが現実のディスプレイに切り替わった際、縦方向の仮想ディスプレイの列も同様に左又は右にシフトし、切り替わった現実のディスプレイを通って縦方向の列が位置するようレイアウトが変更されるようになっており、
前記ディスプレイレイアウト情報ファイルは、変更されたレイアウトの情報が更新されて記録されるものであるという構成を有する。
また、上記課題を解決するため、請求項６記載の発明は、前記請求項１、２又は３の構成において、前記ディスプレイ群のレイアウトは、横方向の一つのみの列と縦方向の一つのみの列とから成るものであり、
縦方向の列のディスプレイ群の一つが現実のディスプレイである場合にその上又は下側の仮想ディスプレイが前記選択入力手段により選択された結果、前記切替モジュールにより、その上又は下側の仮想ディスプレイが現実のディスプレイに切り替わった際、横方向の仮想ディスプレイの列も同様に上又は下にシフトし、切り替わった現実のディスプレイを通って横方向の列が位置するようレイアウトが変更されるようになっており、
前記ディスプレイレイアウト情報ファイルは、変更されたレイアウトの情報が更新されて記録されるものであるという構成を有する。
また、上記課題を解決するため、請求項７記載の発明は、前記請求項４、５又は６の構成において、前記横方向の一つののみの列又は縦方向の一つのみの列は、無終端のループ状につながったものであるという構成を有する。
また、上記課題を解決するため、請求項８記載の発明は、前記請求項４、５又は６の構成において、前記横方向の一つののみの列及び縦方向の一つのみの列は、無終端のループ状につながったものであるという構成を有する。
また、上記課題を解決するため、請求項９記載の発明は、前記請求項１乃至８いずれかに記載のコンピュータがクライアントコンピュータとしてネットワークを介してサーバコンピュータに複数接続されているクライアント−サーバコンピュータ群であって、サーバコンピュータはサーバ記憶部を有しており、
サーバ記憶部には、各クライアントコンピュータにおける前記状態情報を保存したサーバ側状態情報ファイルが設けられており、サーバ側状態情報ファイルは、ユーザーを識別するユーザーＩＤ毎に前記状態情報を保存しており、
サーバ記憶部には、認証プログラム、状態情報登録プログラム及び状態情報送信プログラムがインストールされており、
認証プログラムは、クライアントコンピュータからユーザーＩＤを発信させてアクセスを許可するかどうか判断するプログラムであり、
前記表示プログラムは、状態情報発信モジュール及び登録情報受信モジュールを有しており、
状態情報発信モジュールは、当該クライアントコンピュータのオペレーティングシステムが終了する際、当該クライアントコンピュータにおける前記状態情報を発信してサーバコンピュータへの登録を要求するものであり、
状態情報登録プログラムは、認証プログラムによりアクセスが許可されたクライアントコンピュータから発信された状態情報を、発信されたユーザーＩＤの状態情報としてサーバ側状態情報ファイルに記録して登録するプログラムであり、
状態情報送信プログラムは、認証プログラムによりアクセスが許可されたクライアントコンピュータに、発信されたユーザーＩＤの状態情報を送信するプログラムであり、
状態情報受信モジュールは、サーバコンピュータから送信された状態情報を受信して各オブジェクトグループの前記現実のディスプレイへの表示を可能とするものであり、
状態情報送信プログラムは、認証プログラムにより認証される限り、前回状態情報を送信してきたクライアントコンピュータとは異なるクライアントコンピュータに対しても状態情報を送信するものであって、オペレーティングシステム終了時のディスプレイ表示状態の再現を異なるクライアントコンピュータ間において可能とするものであるという構成を有する。
また、上記課題を解決するため、請求項１０記載の発明は、前記請求項９の構成において、前記状態情報送信プログラムは、前記状態情報とともに広告オブジェクトを送信するものであり、この広告オブジェクトは、送信されたクライアントコンピュータにおいていずれかのオブジェクトグループに追加されるものであり、そのオブジェクトグループが現実のディスプレイに表示される際にディスプレイに表示されるものであるという構成を有する。
また、上記課題を解決するため、請求項１１記載の発明は、前記請求項９又は１０に記載するクライアント−サーバコンピュータ群を構成する前記サーバコンピュータである。
また、上記課題を解決するため、請求項１２記載の発明は、前記請求項１乃至５記載のコンピュータにインストールされる前記表示プログラムである。
また、上記課題を解決するため、請求項１３記載の発明は、前記請求項１乃至８いずれかに記載のコンピュータがクライアントコンピュータとしてネットワークを介してサーバコンピュータに複数接続されているクライアント−サーバコンピュータ群において、いずれかのクライアントが備える現実のディスプレイにオブジェクトを表示するディスプレイ表示方法であって、
サーバコンピュータはサーバ記憶部を有しており、
サーバ記憶部は、各クライアントコンピュータにおける前記状態情報を記録したサーバ側状態情報ファイルを記憶しており、サーバ側状態情報ファイルは、ユーザーを識別するユーザーＩＤ毎に前記状態情報を記録しており、
サーバ記憶部には、認証プログラム、状態情報登録プログラム及び状態情報送信プログラムがインストールされており、
認証プログラムは、クライアントコンピュータからユーザーＩＤを発信させてアクセスを許可するかどうか判断するプログラムであり、
前記表示プログラムは、状態情報発信モジュール及び登録情報受信モジュールを有しており、
クライアントコンピュータのオペレーティングシステムが終了する際、状態情報発信モジュールが、当該クライアントコンピュータにおける前記状態情報を発信してサーバコンピュータへの登録を要求するステップと、
状態情報登録プログラムが、認証プログラムによりアクセスが許可されたクライアントコンピュータから発信された状態情報を、発信されたユーザーＩＤの状態情報としてサーバ側状態情報ファイルに記録して登録するステップと、
状態情報送信プログラムが、認証プログラムによりアクセスが許可されたクライアントコンピュータに、発信されたユーザーＩＤの状態情報を送信するステップと、
状態情報受信モジュールが、サーバコンピュータから送信された状態情報を受信して各オブジェクトグループの前記現実のディスプレイへの表示を可能とするステップと、
状態情報送信プログラムが、認証プログラムにより認証される限り、前回状態情報を送信してきたクライアントコンピュータとは異なるクライアントコンピュータに対しても状態情報を送信するステップを備えており、ペレーティングシステム終了時のディスプレイ表示状態の再現を異なるクライアントコンピュータ間において可能とするという構成を有する。
【発明の効果】
【０００６】
以下に説明する通り、本願の請求項１の発明によれば、現実のディスプレイ及び仮想ディスプレイから成る複数のディスプレイが存在し、ユーザーが選択入力手段を操作することによりオブジェクトグループの表示が仮想ディスプレイから現実のディスプレイに切り替えられるので、一つのディスプレイにおいて複数のウインドウをオープンしてアプリケーションを立ち上げる場合に比べると、アプリケーションの切替が容易で、且つ一つのアプリケーションに対し大きなウインドウ領域を確保することができる。
また、請求項２記載の発明によれば、上記効果に加え、画面端において付加動作が行われたのを検出してディスプレイの切替が行われるので、ユーザーの意図しない切替の発生が少なくなる。
また、請求項５記載の発明によれば、上記効果に加え、横方向の列におけるディスプレイの切替の際に、縦方向の列が連動してシフトするので、切り替え後さらに縦方向に切り替える際の操作の手間が少ない。
また、請求項６記載の発明によれば、上記効果に加え、縦方向の列におけるディスプレイの切替の際に、横方向の列が連動してシフトするので、切り替え後さらに横方向に切り替える際の操作の手間が少ない。
また、請求項９記載の発明によれば、オペレーティングシステム終了時のディスプレイ表示状態の再現が異なるクライアントコンピュータ間において可能とされるので、オフィスと自宅のように、一人のユーザーが異なる場所で異なるコンピュータをする場合にも上記効果が得られることになる。
また、請求項１０記載の発明によれば、上記請求項９の効果に加え、広告オブジェクトがクライアントコンピュータのディスプレイに表示されるので、サーバコンピュータを運営するサービサーは、広告収入を得ることができる。
【発明を実施するための最良の形態】
【０００７】
次に、本願発明を実施するための最良の形態（以下、実施形態）について説明する。
本願発明の実施形態におけるディスプレイ表示切り替え技術の基本コンセプトは、仮想マルチデスクトップという考え方にある。まず、この点について、図１を使用して説明する。図１は、本願発明の実施形態の基本コンセプトとしての仮想マルチデスクトップを説明した平面概略図、図２は、図１に示す仮想マルチデスクトップの動作について説明した平面概略図である。
【０００８】
まず、デスクトップという概念について説明する。以下の説明では、デスクトップという概念は、ディスプレイに表示する情報を集まりの意味であり、Ｗｉｎｄｏｗｓ（例えばＷｉｎｄｏｗｓＸＰ）におけるものと同様である。一つのディスプレイの中に表示するアイコン、ウインドウ、各種コントロール等のオブジェクトをグループ化したものである。この中には、画面の背景やスクリーンセーバー等の各種設定が含まれる。尚、以下の説明において、オブジェクトとは、一つのディスプレイの画面（全表示領域）内に表示される対象物としての情報という程度の意味である。但し、アプリケーションの起動プログラムが埋め込まれたアイコンの場合のように、プログラムを実行するために表示される情報の場合もある。
また、本願発明は、前述したマルチウインドウ、マルチタスクの技術の改良であるから、一つのデスクトップにおいて複数のウインドウを表示することが可能であり、複数のアプリケーションを一つのデスクトップ上で同時に実行できる環境におけるものということになる。
【０００９】
図１において、コンピュータは、一つの現実のディスプレイ（以下、リアルディスプレイ）１を備える。このリアルディスプレイ１において表示されるデスクトップ２を、以下、リアルデスクトップと呼ぶ。本実施形態においては、このリアルデスクトップ２に関連して、仮想デスクトップ２０が複数設けられている。「関連して…」とは、図１に示すように、一つのリアルデスクトップ２がリアルディスプレイ１に表示されている際、当該ディスプレイ１に隣接して仮想的なディスプレイ（以下、仮想ディスプレイ）１０が配置されているとし、この仮想ディスプレイ１０に別のデスクトップ２０が表示されているものと取り扱われることである。「表示されているものと取り扱う」とは、後述するように、予めメモリに記憶しておき、ユーザーによる操作に従い切り替え可能としておくという意味である。
【００１０】
図１に示すように、リアルディスプレイ１の画面は方形である。仮想ディスプレイ１０の画面も、リアルディスプレイ１と同じ寸法形状の方形であり、リアルディスプレイ１の方形の各辺に隣接して配置されているとする。尚、図１では、各仮想ディスプレイ１０は、画面のみが描かれており、それ以外は図示が省略されている。他の図でも同様である。
この実施形態では、リアルディスプレイ１の画面の各辺に隣接して仮想ディスプレイ１０の画面が配置され、さらにもう一つの仮想ディスプレイ１０が右側の仮想ディスプレイ１０のさらに右側に隣接して配置されているとしている。従って、本実施形態は、一つのリアルデスクトップ２と五つの仮想デスクトップ２０とを有している。各ディスプレイ１，１０は、画面をそれぞれ隣接させて配置されているものと仮想される。各デスクトップ２，２０は、同じシェルプログラムで表示され、各シェルプログラムは同じ機能を持っている。
【００１１】
次に、図１に示す仮想マルチデスクトップの動作について、図２を使用して説明する。図２（１）において、リアルデスクトップ２がリアルディスプレイ１に表示されている。この際、ユーザーがいずれかの仮想ディスプレイ１０を選択する操作を行うと、後述する切替プログラムが、選択された仮想ディスプレイ１０をリアルデスクトップ２に切り替え、その仮想ディスプレイ１０上の仮想ディスプレイ２０をリアルディスプレイ１に表示する処理を実行する。いずれかの仮想ディスプレイ１０を選択させる操作は、リアルディスプレイ１に対してどの側に隣接する仮想ディスプレイ１０であるかを指定する操作である。
【００１２】
図２（１）に矢印で示すように、リアルディスプレイ１の右側に位置する仮想ディスプレイ１０上の仮想デスクトップ２０に切り替える操作をしたとすると、図２（２）に示すように、それまで右側の仮想ディスプレイ１０に表示されていたと仮想される仮想デスクトップ２０がリアルディスプレイ１に表示された状態となる。それまでリアルディスプレイ１に表示されていたリアルデスクトップ２は、リアルディスプレイ１の左側に位置する仮想デスクトップ２０に仮想的に表示される仮想デスクトップ２０となる。別の言い方として、右側に位置する仮想ディスプレイ１０がリアルディスプレイ１に切り替わり、それまでリアルディスプレイ１であったディスプレイが仮想ディスプレイ１０に切り替わると表現することもできる。このようにユーザーにとって受け止められるということである。本実施形態の仮想マルチデスクトップも、コンピュータのユーザーインターフェースの一つであるから、ユーザーの受け止め方は重要である。仮想ディスプレイ１０が存在し、仮想デスクトップ２０が表示されているように感じられ、それがリアルデスクトップ２に切り替わったように見えるようにしている。
【００１３】
そして、図２（２）において、リアルディスプレイ１の左側の仮想ディスプレイ１０を選択する操作を行うと、元のデスクトップの内容がリアルディスプレイ１に表示された状態となる。また、図２（２）の状態から、さらに右側の仮想ディスプレイ１０を選択する操作が行われると、その仮想ディスプレイ１０上の仮想デスクトップ２０がリアルデスクトップ２としてリアルディスプレイ１に表示された状態となる。
また、図２（２）の状態から、上側の仮想ディスプレイ１０を選択すると、図２（３）に示すように、上側の仮想ディスプレイ１０上の仮想デスクトップ２０がリアルデスクトップ２に切り替わりリアルディスプレイ１に表示された状態となる。
【００１４】
図２から解るように、リアルディスプレイ１及び仮想ディスプレイ１０から成るディスプレイ群のレイアウト、即ちリアルディスプレイ２及び仮想デスクトップ２０から成るデスクトップ群のレイアウトを、切り替えに伴って変化させている。これは、所望の仮想デスクトップ２０をリアルデスクトップ２に切り替える際のユーザーの操作をできるだけ楽にしようという配慮からである。
つまり、図２（２）に示すように、右側の仮想デスクトップ２０がリアルデスクトップ２に切り替わった際、上下の仮想ディスプレイ１０も連動して右側にシフトしたとし、切り替わって表示されたリアルデスクトップ２の上下に仮想デスクトップ２０が存在しているとされる。従って、図２（２）に示す状態で、上側の仮想ディスプレイ１０を選択する１回の操作で、そこでの仮想デスクトップ２０をリアルデスクトップ２に切り替えることができる。下側の仮想デスクトップ２０をリアルデスクトップ２に切り替える場合も同様である。
【００１５】
また、図２（３）に示すように、上側の仮想デスクトップ２０がリアルデスクトップ２に切り替えられた際、横方向に並ぶ仮想ディスプレイ１０群も連動して上側にシフトしたものとされる。従って、図２（３）に示す状態で、例えば左側の仮想デスクトップ２０をリアルデスクトップ２にしたい場合、左側の仮想デスクトップ２０を選択する１回の操作でこれが行える。
つまり、図２に示す実施形態では、リアルディスプレイ１及び仮想ディスプレイ１０から成るディスプレイ群のレイアウトが、横方向の一列のみと縦方向の一列のみから成るレイアウトであって、横方向においてディスプレイの切り替えが行われる場合、その切り替えに従って縦方向の列が連動してシフトし、縦方向においてディスプレイの切り替えが行われる場合、その切り替えに従って横方向の列が連動してシフトする構成であるといえる。このような構成は、縦横各一列のディスプレイ群レイアウトにおいて、その縦横の列の交差箇所に位置するディスプレイを常にリアルディスプレイ１にしようとする構成であるとも言える。交差状態は、十字状の場合もあり、Ｔ字状の場合もあり、Ｌ字状の場合もある。
尚、上記以外の例として、連動したシフトは、双方ではなく、一方だけであっても良い。つまり、横方向への切り替えの際に連動して縦方向の列がシフトするが、縦方向への切り替えの際には横方向がシフトしない構成でもよく、縦方向への切り替えの際に連動して横方向の列がシフトするが、横方向への切り替えの際には縦方向がシフトしない構成でもよい。どちらかというと、横方向への切り替えが頻繁に発生するので、横方向への切り替えの時に縦方向の列がシフトするのみの構成があり得る。
【００１６】
図２に示す例では、上記のように切り替えの際のユーザーの操作を最小限にすることを考慮したが、上記のようにディスプレイ群１，１０群のレイアウト（即ち、デスクトップ群２，２０のレイアウト）が切り替えのたびに変化すると、デスクトップ群１，１０のレイアウトがユーザーに固定的に観念されないので、その意味で使いにくくなる可能性もある。図３は、この点を考慮した例であり、ディスプレイ群１，１０のレイアウトを固定した実施形態の概略図である。
この実施形態では、図３（２）に示すように、右側の仮想デスクトップ２０がリアルデスクトップ２に切り替えられた場合でも、上下の仮想ディスプレイ１０はシフトせず、そのままの位置を保持する。従って、ユーザーが、上側の仮想ディスプレイ１０上の仮想デスクトップ２０をリアルデスクトップ２にしたい場合、図３（２）に矢印で示すように、左側の仮想デスクトップ２０をリアルデスクトップ２にする操作をした後、そこからさらに上の仮想ディスプレイ１０を選択して上側の仮想デスクトップ２０をリアルデスクトップ２にする操作を行う。
このような構成では、操作は図２に比べて手間となるが、ディスプレイ群１，１０のレイアウトは固定されているので、そのレイアウトがユーザーの頭にあれば切り換えが容易であるとも言える。図２の場合、ディスプレイ群１，１０のレイアウトをユーザーがわからなくなってしまうと、色々と切り替えを行っていくうちに所望の仮想デスクトップ２０をリアルデスクトップ２にする状態にたどりつくということが考えられる。
【００１７】
いずれにしても、各実施形態は、リアルディスプレイ１に対する「側」を指定することでデスクトップを切り替えるものである。図１では、「側」とは上下左右となっているが、斜め方向の側を指定して切り替えるようにしても良い。この実施形態が図４である。図４は、さらに別の実施形態を示した概略図である。図４の実施形態では、一つのリアルディスプレイ１の周囲に八つの仮想ディスプレイ１０が配置されているとしている。この実施形態において、斜め右上、斜め右下、斜め左上、斜め左下の仮想ディスプレイ１０を選択する１回の操作で、そこでの仮想デスクトップをリアルデスクトップに切り替えることが可能としても良い。
【００１８】
図５は、さらに別の実施形態を示した斜視概略図である。この実施形態では、左右に並んだディスプレイ群１，１０が、一つの無終端のループ状を成しているものとして与えられており、従ってデスクトップ群２，２０もこの無終端のループ状のレイアウトであるとされる。即ち、例えば左側の仮想ディスプレイ２０を次々に選択して左側の仮想デスクトップ２０をリアルデスクトップ２に切り替えていくと、一番最初にリアルデスクトップ２であった仮想デスクトップ２０がリアルデスクトップ２である状態に戻るよう構成されている。この構成は、いわゆるテレビ受像機におけるチャンネルの切り替えに類似している。テレビ受像機においてもチャンネルを次のチャンネルに次々に切り替えていくと元のチャンネルに戻るが、この実施形態でも元のリアルデスクトップ２に戻る。尚、左右に並んだデスクトップがループ状である場合の他、上下に並んだデスクトップがループ状であるよう構成しても良い。左右、上下ともループ状である構成でも良い。
【００１９】
次に、上述したような各実施形態の仮想マルチデスクトップを実現するハードウェア及びソフトウェアの構成について、具体的に説明する。
上述した仮想マルチデスクトップが実現されるコンピュータは、演算処理部と、記憶部と、ディスプレイとを有するコンピュータである。コンピュータは、典型的にはいわゆるパソコン（パーソナルコンピュータ）であるが、ワークステーションその他のコンピュータである場合もある。また、「デスクトップ」という概念を採用するものの、いわゆるデスクトップパソコンに限定されるものではなく、ノートパソコンやパームトップコンピュータ等の場合もあり得る。また、携帯電話についても、マルチウインドウ及びマルチタスクが可能であれば、本実施形態が適用される場合がある。
上述した仮想マルチデスクトップを実現する場合、ＯＳ（オペレーティングシステム）上で動作する一つのアプリケーションプログラムにより実現する場合と、ＯＳそのものの機能として実現する場合とがある。まず、前者の場合について説明する。以下の説明では、ＯＳとしてＷｉｎｄｏｗｓＸＰ（マイクロソフト社の登録商標）が採用されているものとする。
【００２０】
図６は、各実施形態の仮想マルチデスクトップをアプリケーションとして実現する際のソフトウェアアーキテクチャを示した概略図である。周知のように、Ｗｉｎｄｏｗｓでは、カーネルモードとユーザーモードに分かれており、個々のアプリケーションは、ユーザーモードで動作する。個々のアプリケーションは、ＣＰＵに対して直接指令を送ることはできず、カーネルモードで動作するエグゼキュティブの各コンポーネント等を介してＣＰＵを動かすようになっている。そして、エグゼキュティブに対しても、各アプリケーションは直接アクセスすることができず、Ｗｉｎｄｏｗｓサブシステムを介してアクセスするようになっている。Ｗｉｎｄｏｗｓサブシステムは、Ｗｉｎ３２ＡＰＩを実現するＣＲＳＳＳ．ＥＸＥや各種ＤＬＬ（ＫＥＲＮＥＬ３２．ＤＬＬ、ＵＳＥＲ３２．ＤＬＬ、ＧＤＩ３２．ＤＬＬ等）、Ｗｉｎ３２Ｋ．ｓｙｓ（カーネルモードデバイスドライバ）等が含まれる。各アプリケーションは、それぞれが有するサブシステムＤＬＬから、ＬＰＣ(Local Procedure Call)を利用してＷｉｎｄｏｗｓサブシステムにアクセスし、処理要求を伝えるようになっている。
【００２１】
本実施形態が対象とするデスクトップ環境は、Ｗｉｎｄｏｗｓにおいては、ＧＵＩ(Graphical User Interface)の一つであるシェルと、レジストリ５によって実現されるとして良い。レジストリ５は、アプリケーションの設定情報やユーザー情報等を記録したデータベースフィアルであり、ハードディスクのような記憶部（ハードウェア）に記憶されたファイル（ソフトウェア）である。尚、レジストリ５は、各請求項の発明においては、「ディスプレイにおける各オブジェクトの表示状態の情報である状態情報を記録した状態情報ファイル」に相当しており、「状態情報ファイル」の一例である。
【００２２】
シェルは、各オブジェクトの表示用のプログラム（シェルプログラム）と、対応するＡＰＩ(Application Programing Interface)とを含む。ＡＰＩの部分（ＷｉｎｄｏｗｓＸＰではＳＨＥＬＬ３２．ＤＬＬ）は、Ｗｉｎｄｏｗｓサブシステムの一部であるが、図５では、便宜上、Ｗｉｎｄｏｗｓサブシステムの上側に描かれている。
尚、「シェル」という用語は、ＯＳやアプリケーションによって全く異なった意味で使用されることがある。本実施形態の説明では、ＯＳにおいて、デスクトップを実現するユーザーモード上のソフトウェアアーキテクチャという程度の意味で使用している。
【００２３】
記憶部には、アイコンを表示するためのファイル（アイコン表示用ファイル）が記憶されている。コンピュータがブートされてＷｉｎｄｏｗｓが起動すると、シェルプログラムがレジストリ５を参照してアイコン表示用ファイルによりアイコンをディスプレイの所定の場所に表示する。アプリケーション用のアイコンがクリックされると、そのアプリケーションの実行ファイルが開かれ、メモリ領域の確保、新規ウインドウの表示等の処理が行われる。
本実施形態の仮想マルチデスクトップ環境は、アプリケーション群とＷｉｎｄｏｗｓサブシステムとの間に、通常のシェル（以下、レギュラーシェル）３に加えて追加のシェル（以下、サブシェル）３１が置かれた環境であると言って良い。本実施形態では、仮想マルチデスクトップを一つのアプリケーションとして実現するので、図５に示すように、レギュラーシェル３上で仮想マルチデスクトップ用のアプリケーションプログラム（以下、ＶＭＤアプリ）４がインストールされて動作する状態となっている。
前述した「課題を解決するための手段」の欄では、「表示プログラム」という用語が使用されているが、図６に示す実施形態では、サブシェル３１とＶＭＤアプリ４とを合わせたものが「表示プログラム」に相当している。レギュラーシェル３は、ＯＳの一部であるから「表示プログラム」には含まれない。「表示プログラム」は、ＯＳ上で仮想マルチディスプレイを実現するためのプログラムであると言える。
【００２４】
ＶＭＤアプリ４は、後述するように、コンピュータにインストールされる際、自動起動プログラム（常駐プログラム）としてインストールされるようになっている。ユーザーがＭＳｃｏｎｆｉｇ．ｅｘｅを実行するかレジストリ５を編集するかして常駐を外さない限り、ログオンのたびにＶＭＤアプリ４は自動起動される。
ＶＭＤアプリ４は、レギュラーシェル３のシェルプログラムとは別に、各デスクトップを表示するためのシェルプログラム（以下、サブシェルプログラム）を実行可能となっている。本実施形態では、サブシェル３１はレギュラーシェル３と同様の構成により各デスクトップを表示するようになっている。Ｗｉｎｄｏｗｓではデフォルトの設定では、シェルプログラムはＥｘｐｌｏｒｅｒ．ｅｘｅであるので、ＶＤＭアプリもＥｘｐｌｏｒｅｒ．ｅｘｅにより各オブジェクトを表示するようになっている。尚、レギュラーシェル３とは異なるプログラムでサブシェル３１を動作させても良い。
【００２５】
また、レジストリ５には、レギュラーシェル３における関連情報に加え、各サブシェル３１の関連情報が登録されるようになっている。レジストリ５への登録の仕方は、レギュラーシェル３の場合と同様である。但し、どのサブシェル３１における登録情報かを識別できるよう登録しておくことが必要である。各サブシェル３１において、サブシェルプログラムは、そのサブシェル３１の登録情報をレジストリ５において参照し、ＷｉｎｄｏｗｓサブシステムのＡＰＩ(Shell32.DLL)をコールし、ディスプレイ上にデスクトップを表示するようになっている。
【００２６】
本実施形態では、各サブシェル３，３１により表示される各デスクトップの内容（コンテンツ）のうち、アイコンについては、各シェル３，３１において同一のものとするようになっている。即ち、各シェル（レギュラーシェル３、サブシェル３１）について、レジストリ５におけるアプリケーションの登録情報は共通又は同一のものとなっている。あるシェルにより表示されたデスクトップ上で一つのアプリケーションがインストールされてアイコンが登録されると、そのアイコンは、他のシェルにより表示されるデスクトップでも同様に表示されるようになっている。アイコンの位置情報やプロパティ等も同様で、共通又は同一のものとなっている。但し、これらの登録情報が各シェルにおいて異なるようにしても良い。この構成は、Ｗｉｎｄｏｗｓにおいては、ログオンしたユーザーのユーザー情報に従って異なるレジストリ登録情報を参照するのと同様の構成となる。
【００２７】
本実施形態では、レジストリ５には、ＶＭＤアプリ４の終了の際（コンピュータ又はＯＳのシャットダウン時を含む）、各サブシェル３１において動作していたアプリケーションの情報が登録され、再度ログオンした際には、シャットダウン時と同じ状態で各サブシェル３１が起動するようになっている。以下、この点について、図７を使用して説明する。図７は、実施形態におけるレジストリ５への情報登録と参照について示した概略図である。
各サブシェル３１によって表示される各デスクトップには、ＶＭＤアプリ４を終了させるためのアイコン（終了用アイコン）が含まれている。いずれかのデスクトップがリアルディスプレイ１に表示されている（リアルデスクトップである）際、そのデスクトップにおいて終了用アイコンがクリックされると、ＶＭＤアプリ４が終了し、レギュラーシェル３によるレギュラーデスクトップの環境に戻る。この際、ＶＭＤアプリ４（の終了用モジュール）は、各サブシェル３１上で動作していたアプリケーションの情報をレジストリ５に記録する。
【００２８】
より具体的に説明すると、各サブシェル３１に対応してアプリケーションの動作情報を記録したレジストリキーがそれぞれ設けられている。今、ＶＭＤアプリ４は、三つのサブシェル３１を備える構成であるとし、三つのデスクトップがＶＭＤアプリ４上で表示されている（うち一つがリアルデスクトップで他の二つが仮想デスクトップ）とする。これらのデスクトップをデスクトップＡ、デスクトップＢ、デスクトップＣとすると、それらに対応して、レジストリキーＡ、レジストリキーＢ、レジストリキーＣがレジストリ５に設けられている。
【００２９】
ＶＭＤアプリ４の終了モジュールは、各デスクトップＡ，Ｂ，Ｃで動作していたアプリケーションの情報（起動情報、ウインドウ情報、アプリデータのリソース情報等）を対応したレジストリキーに保存するようプログラミングされている。例えば、デスクトップＡにおいてＭｉｃｒｏｓｏｆｔ  Ｗｏｒｄ（マイクロソフト社の登録商標）のような文書作成アプリケーションが動作し、デスクトップＢにおいてＭｉｃｒｏｓｏｆｔ  Ｅｘｃｅｌ（マイクロソフト社の登録商標）のような表計算アプリケーションが動作し、デスクトップＣでＩｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ（マイクロソフト社の登録商標）のようなブラウザが動作していたとする。この場合、レジストリキーＡには、文書作成アプリケーションの起動情報（実行ファイルの名前、実行ファイルがあるパスの情報等）、終了の際に開いていたウインドウのサイズや位置の情報、終了の際に開いてた文書ファイルのパス情報などが記録される。レジストリキーＢには、表計算アプリケーションの起動情報、終了の際に開いていたウインドウのサイズや位置の情報、終了の際に開いてた表計算ファイルのパス情報などが記録される。レジストリキーＣには、ブラウザの起動情報、終了の際に開いていたウインドウのサイズや位置の情報、終了の際に閲覧していたウェッブページのＵＲＬの情報などが記録される。
【００３０】
尚、「アプリデータ」という用語は、アプリケーションが扱っていたデータを広く意味するものとして使用されている。文書作成アプリケーションや表計算アプリケーションのようなファイルを編集するアプリケーションでは、編集され更新されたファイルがアプリデータである。また、ＰＤＦやブラウザで閲覧されるウェッブページファイル等の場合もある。「アプリデータのリソース情報」とは、そのアプリデータが存在する場所の情報（パス情報、ＵＲＬ等）やアプリデータの名前など、そのアプリデータを取得してデスクトップ上に表示するのに必要な情報のことである。
また、「モジュール」という用語は、本明細書においては、プログラムの構成要素という意味で使用している。モジュール自身もプログラムであることは変わりが無く、一つのまとまった情報処理を行うのであるが、「プログラムがプログラムを有する」といった表現の不明確さを避けるため、「モジュール」という用語を使用している。従って、ＶＭＤアプリ４の終了用モジュールとは、ＶＭＤアプリというプログラムの一部であるところの終了用のプログラムということである。
【００３１】
また、レジストリには、デスクトップ群のレイアウトに関する情報が登録される。いくつのデスクトップがどのようなレイアウトで配置されているのか、またそのうち終了時にリアルデスクトップであったのはどれか、などの情報である。これらの情報に対応したレジストリキーが設定されている。尚、これらの情報は、各ディスプレイ群の情報であるとも言える。従って、実施形態におけるレジストリは、ディスプレイレイアウト情報ファイルの一例であるとも言える。
一方、ＶＭＤアプリ４の開始用モジュールは、レジストリ５に記録された各レジストリキーを参照し、終了時と同じアプリケーションの動作状況を各デスクトップ上に再現するようになっている。以下、この点を図８及び図９を使用して説明する。図８は、ＶＭＤアプリの開始用モジュールの概略構成を示したフローチャート、図９はＶＭＤアプリにおけるメモリ空間の概略図である。
【００３２】
前述したように、ＶＭＤアプリは自動起動アプリケーションであり、ログオンが完了すると、シェルプログラムの起動の後、自動起動される。この際、ＶＭＤアプリが使うメモリ空間が確保（マッピング）される。次に、図９に示すように、確保されたメモリ空間において各サブシェルが使うメモリ空間（以下、サブメモリ空間）を割り当てる。上記のようにサブシェルが三つであって三つのデスクトップがＶＤＭアプリ上で表示されるものとすると、図９に示すように、三つのサブメモリ空間が割り当てられる。次に、ＶＭＤアプリは、各サブメモリ空間に、シェルプログラム（ここではＥｘｐｌｏｒｅｒ．ｅｘｅ）を読み込み、実行可能な状態としておく。「読み込み」とは、「読み出し、書き込む」の意味であり、ここでは、ハードディスクから読み出し、各サブメモリ空間に書き込む、ということである。そして、ＶＭＤアプリは、それぞれのサブシェル用のレジストリキーをレジストリからコピーし、割り当てられたメモリ空間に書き込んでおく。尚、ＷｉｎｄｏｗｓＸＰでは、仮想マシンマネージャがページング機能を使って仮想マシンごとに仮想的にメモリ空間を確保するので、図９に示すサブメモリ空間は、実際のメモリ空間（物理メモリ空間）を直接意味するものでなく、仮想メモリ空間としての割り当てということである。
【００３３】
そして、各レジストリキーを参照して、各アプリケーションのプログラム本体、必要なコントロール等のオブジェクト、アプリデータ等を、ハードディスクから読み込み、割り当てられた各メモリ空間に書き込み保持しておく。尚、アプリデータがウェッブページの場合、インターネット上のウェッブサーバ等の他のコンピュータから取得されてメモリ空間に書き込まれる。尚、これらのアプリケーション関連のプログラムやデータは、ＶＭＤアプリに与えられたメモリ空間内ではなく、アプリケーションを起動する際に通常与えられるアプリケーション用のメモリ空間に書き込むようにすると、ＶＭＤアプリ用のメモリ空間の消費が少なくなるので好適である。
【００３４】
ＶＭＤアプリ自体のレジストリキーには、前回終了した際にリアルデスクトップを表示していた（アクティブであった）サブシェルを特定する情報が含まれている。ＶＭＤアプリは、各メモリ空間へのプログラムやデータ等の書き込みが終了すると、レジストリキーを参照し、前回終了した際にアクティブであったサブシェルのシェルプログラムを起動させる。そして、そのサブシェルのメモリ空間に読み込んでおいたアプリケーションを起動する。この際、メモリ空間に書き込んでおいたレジストリキーを参照してウインドウをオープンし、同様にメモリ空間に書き込んでおいたアプリデータを読み込んでウインドウに表示する。これで、ＶＭＤアプリの開始用モジュールが終了した状態となる。
【００３５】
一つのリアルデスクトップ上でのアプリケーションの動作は、通常のデスクトップの場合と同様である。ユーザーは、リアルデスクトップ上で、自動起動したアプリケーションで業務を行ったり、そのアプリケーションを終了して他のアプリケーションを起動したりすることが自由に行える。そして、ユーザーは、選択入力手段を使用することで、前述したように他の仮想デスクトップをリアルデスクトップに切り替えることができる。以下、実施形態における選択入力手段について、図１０〜図１１を使用して説明する。図１０は、選択入力手段を構成するオブジェクトを示した概略図、図１１は、選択手段を構成する切替起動モジュール及び切替モジュールの概略を示したフローチャートである。
【００３６】
選択入力手段は、任意の仮想デスクトップを選択する入力をユーザーに行わせてリアルデスクトップに切り替える手段であるが、仮想デスクトップは文字通り「仮想」であり、実在しないものである。各サブシェルのメモリ空間にシェルプログラムが書き込まれ、起動可能状態（スタンバイ状態）になっているだけのものである。つまり、リアルデスクトップに切り替わった際、そのデスクトップのコンテンツがそれまで隣接したディスプレイにあたかも表示されていたかのようにユーザーが感じることが重要である。別の言い方をすれば、選択入力手段の構成自体が、仮想デスクトップが仮想デスクトップたらしめているとも言える。
【００３７】
選択入力手段の具体的構成は幾つか考えられるが、一つにはアイコンによって実現することができる。この例が図１０に示してある。この例の場合、実施形態のＶＭＤアプリは、デスクトップ切り替え用のアイコン（以下、切替用アイコン）６１の生成モジュール、切替用アイコンの更新モジュール等を含んでいる。
図１０に示すように、切替用アイコン６１は、小さな方形の図形（以下、方形部６２）を組み合わせ形状である。各方形部６２及びそのレイアウトは、各デスクトップのレイアウトに相当している。図１０の例は、図１及び図２に示す例の仮想マルチデスクトップにおける切替用アイコン６１の例である。各方形部６２のうち、一つの方形部６２は他の方形部６２とは異なる状態となっている。異なる状態とは、塗りつぶしの色が異なるとか、図１０のように網掛けがしてあるとか、又は線種が異なる（例えばそれのみ実線で他は点線）とかである。
【００３８】
この「異なる状態」を、以下、差別化状態と呼ぶ。差別化状態とされた方形部６２は、その方形に相当するデスクトップが現在リアルデスクトップとなっていることを示している。差別化状態でない状態（非差別化状態）の方形の部分は、その方形部６２に相当するデスクトップが現在仮想デスクトップであることを示している。
各方形部６２には、切り替え用のプログラム（切替モジュール）の起動させるためのプログラム（切替起動モジュール）が埋め込まれている。ある方形部６２がマウスでクリックされると、切替起動モジュールが動作する。切替起動モジュールは、その方形部６２が現在リアルデスクトップか仮想デスクトップでかを判断し、リアルデスクトップである場合にはそのままとする。仮想デスクトップである場合、そのデスクトップをリアルデスクトップに切り替えるよう切替モジュールを起動させるようになっている。
【００３９】
各デスクトップを特定する変数が与えられており、以下、これをデスクトップＩＤと呼ぶ。切替起動モジュールは、切替対象のデスクトップＩＤを引数にして切替モジュールを起動させる。例えば、図１０に示すように、中央に位置するデスクトップがリアルデスクトップになっている状態で、右側の非差別化状態の方形部６２がクリックされた場合、その右側のデスクトップのデスクトップＩＤを引数にして切替モジュールを起動させるようになっている。
切替モジュールは、現在リアルデスクトップであるデスクトップ（以下、カレントリアル）を特定する。これは、レジストリを参照しても良いし、ＶＭＤアプリが起動した際にレジストリから予め受け取っておき、ＶＭＤアプリ内の環境変数として保持しておくようにしても良い。
【００４０】
切替モジュールは、まず、カレントリアルを仮想デスクトップにする処理を行う。切替モジュールは、カレントリアルを実現していたサブシェルにおいて、アプリケーションの動作状態、ウインドウ状態等を、そのデスクトップ用のサブメモリ空間に書き込まれているレジストリキーに上書きする。また、アプリケーションが取り扱っていたアプリデータをサブメモリ空間に一時的に記憶しておく。そして、カレントリアルを実現させていたサブシェルプログラムを終了させる。これにより、カレントリアルは、仮想デスクトップに切り替わる。
次に、切替モジュールは、切替用アイコン６１の更新を行う。即ち、カレントリアルから仮想デスクトップに切り替わったデスクトップに相当する方形部６２についてはこれを非差別化状態とし、仮想デスクトップからリアルデスクトップに切り替わったデスクトップに相当する方形部６２についてはこれを差別化状態とするよう変更する。通常のデスクトップにおけるアイコンは、ＷｉｎｄｏｗｓＸＰ等では、サブシステム（Shell32.DLL)に登録されているが、切替用アイコン６１の形状や色等のデータは、ＶＭＤアプリの環境情報として登録される。即ち、ＶＭＤアプリ上に設けられた設定ファイルとして切替用アイコン６１のデータが設けられており、ＶＭＤアプリが自動的に更新する。切替用アイコン６１のデータは、ＶＭＤアプリの起動とともに、ＶＭＤアプリ用に割り当てられたメモリ空間に記憶され、切替モジュールはメモリ空間にアクセスして切替用アイコン６１を更新する。
【００４１】
次に、指定された仮想デスクトップをリアルデスクトップに切り替える処理を行う。デスクトップＩＤに従って、そのサブシェルにおけるサブシェルプログラムを起動させる。この際、そのデスクトップに割り当てられたサブメモリ空間にアクセスし、レジストリキーを参照して、アプリケーション（そのデスクトップがリアルデスクトップであった際に最後に起動していたアプリケーション）を起動し、ウインドウをオープンし、アプリデータを読み込む。最後にリアルデスクトップであった際にアプリケーションが動作していなかった場合は、ウインドウオープンやアプリデータの読み込みは行わず、単に背景（壁紙）やアイコンを表示するのみとする。また、起動したサブシェルプログラムは、ＶＭＤアプリ本体のメモリ空間にアクセスし、更新された切替用アイコン６１を取得してデスクトップ内の指定された箇所に表示する。
これで、一連の切替処理は終了する。図１０において、さらに別の非差別化状態の方形部６２がクリックされると、同様の切替処理が行われ、別のデスクトップがリアルデスクトップとなる。
【００４２】
次に、選択入力手段の別の例について説明する。この選択入力手段は、マウスポインタを利用したもので、仮想マルチデスクトップを実現するのに非常に優れたユニークなものである。
図１２は、別の例の選択入力手段について示した概略図である。この例の選択入力手段は、ハードウェアとしてのマウスと、マウスを駆動するソフトウェアとしてのマウス駆動プログラム（マウスドライバ）と、マウスポインタを表示するハードウェアとしてのディスプレイと、ソフトウェアとしての切替起動モジュールや切替モジュール等から構成されている。
【００４３】
図１２において、あるデスクトップがリアルデスクトップであるとする。この選択入力手段を使用してデスクトップを切り替える場合、図１２（１）に点線で示すように、マウスを操作してマウスポインタ６３をディスプレイ２の画面の端にもっていく。この端は、リアルデスクトップに切り替えたい仮想デスクトップが位置している側の端である。以下、この端を画面端と呼ぶ。
マウスポインタ６３がある画面端に位置すると、切替起動モジュールが実行されて切替モジュールが起動し、図１２（２）に示すように、その画面端の側に位置していた仮想デスクトップ２０がリアルデスクトップ２に切り替わり、それまでリアルデスクトップ２が仮想デスクトップ２０に切り替わるようになっている。
【００４４】
尚、図１２（１）（２）に示すように、ユーザーがマウスを操作することにより生ずるマウスポインタの移動距離要求を、切り替えられたリアルデスクトップ２において忠実に実行するようにすると好適である。つまり、マウスポインタが画面端に達すると、通常は、それ以上マウスを操作してもマウスポインタは移動せず画面端に位置するのみである。しかし、図１２（１）（２）に示すように、リアルデスクトップに切り替わった画面において、普通にマウスポインタが移動したと想定される位置（二つ分の大きさの画面があり、そこで普通にマウスポインタが移動して達したと想定される位置）に、マウスポインタを位置させておく。このようにすると、ユーザーとしては、マウスポインタの移動に関連して仮想デスクトップ２０からリアルデスクトップ２への切り替えを意識することができる。
【００４５】
切替起動モジュールは、マウスポイント６３が画面端に位置したことをイベントとして切替モジュールを起動するようになっている。図１３は、図１２に示す動作を行う選択入力手段における切替起動モジュール及び切替モジュールの概略を示したフローチャートである。また、図１４は、図１３に示す切替起動モジュールにおいて切替モジュールに渡す引数について説明した図である。
図１３に示すように、切替起動モジュールは、マウスポインタが画面端に位置したかをどうかを常時監視している。マウスポインタが画面端に位置した際、切替起動モジュールは、マウスポインタがどの側の画面端に位置しているかに応じて設定された引数を切替モジュールに渡すようになっている。
【００４６】
画面端は、厳密な意味での画面の端からある程度の幅をもった領域として設定されている（以下、画面端領域）。画面端領域を、図１４において網掛けで示す。厳密な意味での画面端は、画面の最も端に位置するピクセルの列ということになるが、そのピクセル列に画面端を限定してもよいが、操作をし易くするため、ある程度の幅を設定している。但し、あまり幅を大きくすると、デスクトップの切替を意図していないにもかかわらず切替モジュールが起動してしまうので、最小限にすべきである。尚、画面の端には、タスクバーのようなメニューバーが常駐オブジェクトとして設けられることがあるが、画面端領域はそれと重ならないように、その外側（さらに端）に設定される。
【００４７】
切替起動モジュールは、マウスポインタが画面端領域内のいずれかのピクセルに位置した際、切替モジュールを起動させる。この際、画面端領域に属する各ピクセルは、画面のどの側であるかによって区分されている。図１４に示すように、画面の右側の画面端領域のピクセル群をＲ、左側の画面端領域のピクセル群をＬ、上側の画面端領域のピクセル群をＵ、下側の画面端領域のピクセル群をＤとする。
切替起動モジュールは、右側のピクセル群のいずれかにマウスポインタが位置した際には、右側に位置する仮想デスクトップをリアルデスクトップに切り替えるよう引数を切替モジュールに渡す。また、左側のピクセル群のいずれかにマウスポインタが位置した際には、左側に位置する仮想デスクトップをリアルデスクトップに切り替えるよう引数を切替モジュールに渡す。上側、下側についても同様である。引数については、デスクトップＩＤのような絶対的な値の場合もあるし、現在のリアルデスクトップであるデスクトップに対して右側、というように相対的な値の場合もある。
【００４８】
図３に示す例の場合、デスクトップ群のレイアウトが固定されているので、あるデスクトップのどの側にどのデスクトップが存在するのかは固定されている。従って、図１４に示すＬ，Ｒ，Ｕ，Ｄに対応して各デスクトップＩＤをそのまま設定することができる。一方、図２に示す例では、デスクトップ群のレイアウトが切り替えの際に変更されるので、Ｌ，Ｒ，Ｕ，Ｄと各デスクトップＩＤの対応関係を切り替えのたびに設定し直す等の処理が必要になる。
【００４９】
切替モジュール自体は、前述したものと基本的に同様である。現在リアルデスクトップであるデスクトップを仮想デスクトップに切り替えるとともに、渡された引数で指定された仮想デスクトップをリアルデスクトップに切り替える処理を行う。
尚、相対的な値の引数が渡された場合、切替モジュールは、その引数からデスクトップＩＤを求めるサブプログラムを実行する。該当するデスクトップが無い場合（例えば一番右側のデスクトップがリアルデスクトップの場合においてさらに右側のデスクトップを指定する引数が渡された場合）は、エラーを発生させ、デスクトップの切替を行わずにプログラムを終了させる。エラーを発生させた際、「こちら側にはデスクトップの設定はありません」というようなエラー表示が画面上になされるようにしても良い。
【００５０】
上記例の選択入力手段の操作性を向上したさらに別の例の選択入力手段について、以下に説明する。
上記例では、マウスポインタ６３が画面端に位置すると自動的に切替モジュールが起動する例であった。しかしながら、この構成では、何らかの拍子でマウスポインタ６３が画面端に位置した際にデスクトップが切り替わってしまい、ユーザーが意図しないデスクトップの切替が頻発する可能性もある。この点を考慮し、マウスポインタ６３が画面端に位置しただけでは切替モジュールが起動せず、その上さらに特定の付加動作が加わった場合に切替モジュールが起動するようにする。従って、切替起動モジュールの構成が前述した例と異なっている。この例の切替起動モジュールについて、図１５を使用して説明する。図１５は、別の例の切替起動モジュール及び切替モジュールの概略を示したフローチャートである。
【００５１】
図１５に示すように、この例の切替モジュールは、マウスポインタが画面端に位置し、且つ、付加動作が行われた場合に限り、切替モジュールを起動させるようになっている。引数の設定等は、前述したのと同様である。
付加動作としては、幾つかのものが考えられる。一つは、マウスポインタが画面端においてさらに移動することである。この例が図１６に示してある。図１６は、図１５に示す別の例の切替起動モジュールにおける付加動作の一例について示した図である。
図１６に示すように、マウスポインタ６３がある画面端に位置し、さらにその画面端に沿ってある程度以上の距離（ピクセル数）を移動した際、切替モジュールが動作するよう切替起動モジュールがプログラミングされる。この距離は、あまり短いと、同様に「ユーザーの意図しない切替」が生じる可能性があるので、ある程度長い距離とすることが好ましい。逆にあまり長いと、長い距離マウスポインタを移動させないと切り替わってくれないので、煩わしくなる。絶対的な距離でいうと、２ｃｍから１０ｃｍ程度の範囲のいずれに設定し、それ以上の距離移動した際に切り替わるようにしておくと良い。尚、この例でも、マウスポインタがどの側の画面端において所定距離以上移動したかに応じて、その側に対応した引数を切替モジュールに渡す。
【００５２】
また、市販されている通常のマウスに付属したマウスドライバでは、マウスポインタが画面端に達した後も引き続き同じ向きにマウスポインタが移動する操作すると、マウスは画面端に沿って移動する。例えば図１６に示すように、マウスポインタ６３が斜め左下に向けて移動するようにマウスを操作して、マウスポインタ６３が画面端に達したとする。この場合、同じ動作を継続すると、マウスから送られる横方向の駆動要求は無効とされ、縦方向の駆動要求のみが有効となる。従って、マウスポインタ６３は縦方向の駆動要求に従って画面端に沿って下方に移動する。
このようなことから、ユーザーがマウスポインタ６３を画面端に沿って意図して移動させる操作を行わなくても、切り替えができる場合がある。即ち、画面端に向けて完全に垂直な方向に移動して画面端に達する場合を除いて、普通にマウスを操作すれば、画面端に沿ったマウスポインタ６３の動きは生じ得る。従って、これを付加動作として切替モジュールを起動させるようプログラミングすることができる。このような構成は、付加動作をユーザーが意図して行うことが不要なので、よりユーザビリティが高いと言える。
尚、図１６では、マウスポインタ６３が左側の画面端に位置し、さらにその画面端に沿って下方に移動する例が示されているが、上方に移動した場合も同様に切替モジュールが起動する。また、上側又は下側の画面端にマウスポインタ６３が位置した場合、右方向又は左方向にマウスポインタ６３が所定距離移動することで切替モジュールが起動されることになる。
【００５３】
他の付加動作の例としては、マウスポインタが画面端にある時間が所定時間（切替設定時間）以上になることが挙げられる。マウスポインタが画面端に位置した際にタイマーをスタートさせ、タイマーのカウントが所定値に達したら、切替モジュールの起動させるようにする。この間、マウスポインタがその画面端から離れたら、タイマーのカウントを中止するようにする。この場合も、切替設定時間が短いと、ユーザーが意図しない切替が生じてしまう可能性が高くなり、切替設定時間が長いと、切替までの待ち時間が長くなり、ユーザーにとって煩わしくなる。切替設定時間は、例えば０．５秒から２秒程度が好ましい。尚、この例でも、マウスポインタがどの側の画面端に位置した状態でタイマーのカウントが所定値に達したかに応じて、その側に対応した引数を切替モジュールに渡す。
【００５４】
さらの他の付加動作の例としては、マウスポインタが画面端にある状態でクリックすることが挙げられる。この場合、クリック（左クリック又は右クリック）だけで切替モジュールが動作するようにして良いし、クリックしさらに別の動作をすることで切替モジュールが動作するようにしても良い。別の動作とは、例えば、クリックするとプルダウンメニュー表示がされ、そこに「デスクトップ切替」のメニューが含まれるようにし、さらにマウスでそれをクリックすることで切替ができる構成である。この場合、マウスポインタが画面端以外の場所にあるときのプルダウンメニュー（通常のプルダウンメニュー）は、「デスクトップ切替」が含まれないようにする。即ち、マウスポインタが画面端にある場合にのみ、プルダウンメニューで「デスクトップ切替」が選択できるようにする。尚、この例でも、マウスポインタがどの側の画面端においてプルダウンメニュー表示をさせたかに応じて、その側に対応した引数を切替モジュールに渡す。
【００５５】
以上で、本実施形態における仮想マルチデスクトップを実現する各コンポーネントの説明は終了である。ユーザーがコンピュータを立ち上げてＯＳを稼働させると、ＶＭＤアプリが自動で起動し、前回シャットダウンした際のデスクトップの状況が再現される。即ち、シャットダウンした際にリアルデスクトップであったデスクトップがディスプレイ上に表示される。そして、シャットダウンした際のウインドウが自動でオープンし、シャットダウンした際に動作させていたアプリケーションがそのウインドウに表示される。並行して、各仮想デスクトップの表示用の情報が各サブメモリ空間に記憶され、表示のスタンバイ状態となる。選択入力手段がユーザーにある仮想デスクトップを選択させると、選択された仮想デスクトップがリアルデスクトップに切り替わる。尚、各デスクトップにおいては、複数のアプリケーションが起動して並行して実行されることもあり、複数のウインドウがオープンされることもある。また、一つのアプリケーションにおいて複数のウインドウがオープンされることもある。
実施形態の仮想マルチデスクトップによれば、デスクトップが複数存在し、それがユーザーの操作により切り替わるので、一つのデスクトップ内にの複数のウインドウをオープンしてアプリケーションを立ち上げる場合に比べると、アプリケーションの切替が容易で、且つ一つのアプリケーションに対し大きなウインドウ領域を確保することができる。
【００５６】
本実施形態の仮想マルチデスクトップは、従来のマルチウインドウとは本質的に異なる。従来のマルチウインドウの場合、デスクトップが一つしかない。従って、一つのアプリケーションを稼働させてウインドウ表示をさせている際、別のアプリケーションを起動させようとすると、そのウインドウをアイコン化するか、かなり小さいウインドウにし、デスクトップ上のその別のアプリケーションの起動用アイコンが見える（表示される）状態にしなければならない。従って、面倒である。一方、本実施形態では、別のアプリケーションを起動したければ、別のデスクトップに切り替えてそのデスクトップにおいて起動用アイコンをクリックすれば良い。従って、極めて使い勝手が良い。
尚、携帯電話等でも、横方向や縦方向の画面表示の切り替えが行われるようになっているが、本実施形態の仮想マルチデスクトップは、これとは本質的に異なる。複数のアプリケーションを同時に起動させ、複数のウインドウを同時オープンするという環境（デスクトップ）が複数あり、これが切り替えられるようになっているのであり、この点で全く異なる。
【００５７】
上述したような仮想マルチデスクトップの環境は、既存の環境に対し、ソフトウェアをインストールすることで実現される。このソフトウェアには、ＶＭＤアプリの他、インストール実行プログラムのファイル、マウスドライバの更新が必要な場合はその更新用のファイル等が含まれる。インストール実行プログラムは、ＶＭＤアプリを常駐プログラムとしてインストールするか、非常駐プログラムとしてインストールするかをユーザーが選択できるようにしておくことが好ましい。非常駐プログラムを選択した場合、通常のデスクトップ上には、ＶＭＤアプリを起動させるためのアイコンが自動的に設けられるようにする。
【００５８】
尚、ＶＭＤアプリには、ＶＭＤアプリの環境設定プログラムが含まれる。環境設定プログラムによる環境設定は、まずインストール実行プログラムによるインストールの際に行えるようになっている。インストールの際に行われる環境設定には、仮想マルチデスクトップの初期レイアウトについての設定が含まれる。即ち、例えば、図１、図４、図５のようなデスクトップのレイアウトのいずれかにするのかの選択である。
ＶＭＤアプリの環境設定は、ＶＭＤアプリの稼働中にも行えるようになっている。この環境設定には、デスクトップの増設やデスクトップの削除の設定が含まれる。以下、この点について図１７を使用して説明する。図１７は、ＶＭＤアプリ稼働中の環境設定について示した概略図である。
【００５９】
ＶＭＤアプリは常駐プログラムであるので、リアルデスクトップのタスクバーには、ＶＤＭアプリが常駐していることを示すアイコン（常駐アイコン）が表示されるようになっている。そして、常駐アイコンをクリックすると、「環境設定」を含むメニュー表示が行われるようになっている。
図１７の例は、図１０に示すような切替用アイコン６１において、「環境設定」のメニューが表示されるようにしたものである。常駐アイコンをクリックすると、切替用アイコン６１が表示され、そこに「環境設定」のコマンドボタン（以下、環境設定ボタン）６４が表示されるようになっている。
【００６０】
環境設定ボタン６４をクリックすると、図１７に示すように、メニューリスト６５が表示されるようになっており、そこに「デスクトップの増設」が含まれるようになている。図１７において、「デスクトップの増設」をクリック（左クリック又は右クリック）すると、現在の仮想マルチデスクトップレイアウトにおいてどこに追加するのかを選択させるウインドウ（以下、位置選択ウインドウ）６６が表示されるようになっている。図１８は、位置選択ウインドウの一例を示した概略図である。
図１８に示すように、この位置選択ウインドウ６６では、現在のデスクトップレイアウトが実線で示され、追加配置可能な位置が点線で示されている。位置選択ウインドウ６６には、ＯＫボタンが設けられている。ＯＫボタンには、選択された位置にデスクトップを追加配置するプログラム（デスクトップ追加プログラム）の起動コマンドが埋め込まれている。ユーザーは、点線で示されたいずかの領域をマウスでクリックして選択し、さらにＯＫボタンをクリックする。この結果、デスクトップ追加プログラムが起動し、選択された位置に仮想デスクトップが追加配置される。
【００６１】
デスクトップ追加プログラムは、サブメモリ空間増設モジュール、メモリ記憶モジュール、切替用アイコン６１の更新モジュール（図１０の実施形態の場合）等を含んでいる。サブメモリ空間増設モジュールは、ＶＭＤアプリ用のメモリ空間内にサブメモリ空間を増設し、そこを追加のデスクトップ用に割り当てるモジュールである。メモリ記憶モジュールは、追加されたサブメモリ空間に、シェルプログラムをサブシステムから読み込んで記憶するとともに、アイコン等の表示に必要なレジストリキーをレジストリからコピーして記憶するモジュールである。デスクトップ追加プログラムが実行されると、追加されたデスクトップをいつでもリアルデスクトップに切り替えられる状態となる。
【００６２】
尚、図１８においてＯＫボタンがクリックされた際、追加するデスクトップを直ちにリアルデスクトップにするのか、とりあえず仮想デスクトップとして追加するのかをユーザーが選択できるようにしておくと好ましい。この例について、１９を使用して説明する。図１９は、追加するデスクトップを直ちにリアルデスクトップにするのか、とりあえず仮想デスクトップとして追加するのかをユーザーに選択させるウインドウ（状態選択ウインドウ）６７の一例を示した概略図である。図１８においてＯＫボタンがクリックされた際、デスクトップ追加プログラムが実行される前に、図１９に示す状態選択ウインドウ６７が表示されるようになっている。
【００６３】
図１９に示すように、状態選択ウインドウ６７では、「直ちにリアルデスクトップ」と表示されたコマンドボタンと、「とりあえず仮想デスクトップ」と表示されたコマンドボタンとが設けられている。「直ちにリアルデスクトップ」がクリックされると、上記のようにデスクトップ追加プログラムが起動するが、デスクトップ追加プログラムは、上記各モジュールを実行した後、追加したデスクトップをリアルデスクトップに切り替える切替モジュールを実行するようになっている。切替モジュールの詳細は、前述した選択入力手段によりデスクトップの切替を行う場合と同様である。また、「とりあえず仮想デスクトップ」のコマンドボタンがクリックされた場合、デスクトップ追加プログラムは、切替モジュールを行わずにプログラムを終了する。
このように、ユーザーは、ＶＭＤアプリの起動中、デスクトップを追加したい場合には、いつでも任意の位置に追加できるようになっている。
【００６４】
上述した実施形態におけるＶＭＤアプリにおいて、ＶＭＤアプリを常駐させず、ＶＭＤ環境とするか否かをユーザーが選択できるようにしても良い。この場合、Ｗｉｎｄｏｗｓを起動してレギュラーシェル３を動作させた際、レギュラーシェル３により表示されるデスクトップ上には、ＶＭＤアプリ起動用のアイコンが設けられ、それをクリックすることにより仮想マルチデスクトップ環境に移行するよう構成される。クリックしないと、通常のデスクトップ環境のまま業務が行われる。
【００６５】
次に、上述したようなＶＭＤ環境をＯＳの機能として実現する実施形態について説明する。図２０は、ＶＭＤ環境をＯＳの機能として実現する実施形態におけるソフトウェアアーキテクチャの概略を示した図である。以下の説明でも、ＯＳとしてはＷｉｎｄｏｗｓＸＰのようなＷｉｎｄｏｗｓが想定されている。従って、以下の説明は、ＷｉｎｄｏｗｓＯＳがＶＭＤ機能を備えたものとして作り変えられる場合を想定したものである。
【００６６】
図２０に示すように、この実施形態では、サブシステムに複数のシェル７１が設けられるようになっている。複数のシェル７１は、ＯＳの初期設定（デフォルト）において所定数設けられるようにしても良いし、初期設定では一つのシェルのみであるが、ユーザーの操作により任意の数だけ追加するようにしても良い。
また、各シェル７１をコントロールするプログラムとして、サブシステムにシェルマネージャプログラム（以下、単にシェルマネージャ）７２が設けられている。各シェル７１は、シェルマネージャ７２上で動作するアーキテクチャとなっている。シェルマネージャ７２は、サブシステムではなく、カーネルモードのエグゼキュティブに設けられるようになっていても良い。シェルマネージャ７２は、主に、各シェル７１の動作をオンオフしてデスクトップの切替を行う。
【００６７】
図２１は、図２０に示す実施形態におけるレジストリ５への情報登録と参照について示した概略図である。図２０に示す各シェル７１はシェルプログラムを含んでおり、各シェルプログラムはハードディスクからメモリに読み込まれて起動可能な状態とされる。図２１に示すように、レジストリ５には、各シェル７１のそれぞれに対応してレジストリキーが設けられており、各シェル７１で表示されていたデスクトップについてレジストリ情報（レジストリキー値）がそれぞれ登録される。レジストリ５には、シェルマネージャ７２が参照するレジストリ情報を登録したレジストリキーも含まれている。シェルマネージャ７２が参照するレジストリ情報（以下、マネージャ参照情報）とは、前回シャットダウンした際にどのシェルがオンしていたかの情報などである。
【００６８】
図２０及び図２１に示す実施形態において、ＯＳが起動すると、サブシステム用にメモリ空間が確保（マッピング）される。この際、各シェルのそれぞれにメモリ空間（以下、シェル用メモリ空間）が割り当てられる。
そして、各シェル用メモリ空間には、ハードディスクからシェルプログラムがそれぞれ読み込まれて記憶される。また、各シェル用メモリ空間には、対応するシェル７１のレジストリ情報がレジストリ５から読み込まれて記憶される。また、シェルマネージャ７２用のメモリ空間も確保され、そこにはシェルマネージャがハードディスクから読み出されて記憶されるとともに、マネージャ参照情報がレジストリ５から読み出されて記憶される。
【００６９】
そして、シェルマネージャ７２が自動的に起動する。シェルマネージャ７２は、マネージャ参照情報に従い、前回シャットダウンした際にオンしていたシェル７１に動作指令を送る。これにより、そのシェル７１のシェルプログラムが起動する。シェルプログラムは、そのシェル７１に割り当てられたシェル用メモリ空間からレジストリ情報を読み込み、デスクトップをディスプレイ上に表示する。そして、ユーザーの操作によりアプリケーションが起動し、ウインドウがオープンし、アプリデータが読み出されてウインドウに表示される。これらのシェル７１によるデスクトップの表示や動作は、通常のＯＳにおけるシェルと同様である。
【００７０】
そして、ユーザーが選択入力手段により、別のデスクトップに切り替える操作を行うと、シェルマネージャ７２は、それまでリアルデスクトップを表示していたシェル７１をオフにし、選択されたデスクトップをリアルデスクトップにするよう対応するシェル７１をオフからオンに切り替える。「シェルをオフにする」とは、そのシェル７１のシェルプログラムを終了させるとともに、終了の際のそのデスクトップ上の各オブジェクトの状態の情報をそのシェル７１のシェル用メモリ空間のレジストリキーに更新して記憶することである。また、「シェルをオンにする」とは、そのシェル７１のシェル用メモリ空間に記憶されたレジストリ情報を参照しながらシェルプログラムを起動させ、デスクトップを表示することである。
【００７１】
このようにして、ユーザーの操作に従ってシェルマネージャ７２が各シェル１７を切り替え、いずれかのシェル７１によりリアルデスクトップを表示する。ユーザーは、リアルデスクトップ上でアプリケーションを使って業務を行う。そして、必要に応じ、デスクトップの増設や削除等を行う。
ＯＳがシャットダウンされる際、まず、リアルデスクトップであったデスクトップの情報が、そのシェル７１のシェル用メモリ空間に更新して記憶される。そして、各シェル用メモリ空間のレジストリ情報がレジストリ５に送られてレジストリ５に登録されているレジストリ情報（一種のマスタデータ）が更新される。その後、各シェル用メモリ空間やシェルマネージャ用メモリ空間が解放される。後の処理は、通常のシャットダウンと同様である。
【００７２】
この実施形態においても、デスクトップが複数存在し、それがユーザーの操作により切り替わるので、一つのデスクトップ内にの複数のウインドウをオープンしてアプリケーションを立ち上げる場合に比べると、アプリケーションの切替が容易で、且つ一つのアプリケーションに対し大きなウインドウ領域を確保することができる。また、一つのアプリケーションの稼働中に別のアプリケーションを起動させる際、別のデスクトップをリアルデスクトップにして起動させれば良いので、極めて使い勝手が良い。
尚、別の実施形態の構成として、複数のデスクトップのうちの一つがデフォルトのデスクトップとして設定されており、これのみがＯＳの機能として表示されるものとなっており、他はアプリケーションにより実現されるようにする場合もあり得る。
【００７３】
尚、上記各実施形態において、起動時に各シェル用メモリ空間にシェルプログラムを記憶せず、切り替え時にシェルプログラムをハードディスクから読み込むようにしても良い。即ち、ある仮想デスクトップをリアルデスクトップに切り替えるよう選択入力手段が操作された際に、ハードディスクからシェルプログラムを読み込んで起動させるようにしても良い。この場合、シェルプログラムはシェル用メモリ空間に全く記憶させない（常駐しない）ようにしても良い。このようにすると、シェルプログラムがシェル用メモリ空間の大きな領域を占めてしまうことが無いので、メモリ資源の節約の観点からは好適である。但し、ハードディスクからいちいち読み込むことになるため、切り替え時のデスクトップの立ち上げに時間がかかる欠点がある。ユーザーが選択入力手段を操作した際に短時間のうちにリアルデスクトップが切り替わって表示されるようにするには、シェル用メモリ空間に予めシェルプログラムを記憶しておくことが好適である。
【００７４】
レジストリ情報についても、同様のことが言える。起動時に各シェル用メモリ空間にレジストリ５からレジストリ情報をコピーして記憶させずに、切り替え時にレジストリ５を直接参照してデスクトップを立ち上げるようにしても良い。この場合も、メモリ資源の節約の観点では好適であるが、立ち上げが遅くなる欠点がある。逆に、レジストリ情報を予め各シェル用メモリ空間にコピーしておくと、デスクトップの切り替えが早くなり、ユーザーにとって違和感や苛立ちなどが無くなる。
【００７５】
上述した各実施形態において、ＶＭＤ環境の再現は、完全な再現でないようにする場合もある。例えば、各デスクトップのレイアウトの再現、各デスクトップ内のアイコン表示の再現、各デスクトップにおけるアプリケーションの起動の再現は行うが、アプリデータの再現は行わないようにしても良い。この場合、アプリケーションは前回の終了時と同じように立ち上がるが、アプリデータの読み込みは、ユーザーがマニュアル操作で行うようにする。また、アプリケーションの起動についても再現しないようにしても良い。
【００７６】
次に、上述したような仮想マルチデスクトップ環境（ＶＭＤ環境）を、一つのネットワークサービスとして提供する発明の実施形態について説明する。このサービスは、一人のユーザーが、ネットワーク上の異なるコンピュータで同じような業務を行おうとする際、極めて好適なものである
図２２は、ＶＭＤ環境を一つのネットワークサービスとしてサービス（以下、ＶＭＤサービス）提供する発明の実施形態の概略構成を示した図である。この発明は、ネットワークを介してＶＭＤサービスを提供するサーバコンピュータ（以下、ＶＭＤサーバ）や、ネットワークを介してＶＭＤサービスを提供する方法として実現される。
【００７７】
本実施形態では、ネットワークとしてはインターネット８１が想定されている。ＶＭＤサーバ８２は、インターネット８１を介して各クライアントコンピュータ（以下、単にクライアント）８３につながっている。各クライアント８３は、典型的にはパソコン等のコンピュータであるが、上述したようなＶＭＤアプリが実行可能なコンピュータであれば、その種類は問わない。
ＶＭＤサーバ８２は、ＶＭＤアプリ用ソフトウェアのダウンロードサービス、ＶＭＤ環境の情報をユーザーのコンピュータに代わって登録し利用させるＶＭＤプロキシサービス等を提供するものとなっている。
【００７８】
ＶＭＤサーバ８２の主要な機能の一つは、ウェブサーバである。ＶＭＤサーバ８２には、マイクロソフト社のＩＩＳ(Internet Information Service)のようなインターネットサーバプログラムがインストールされており、各種ＨＴＭＬファイル、ＸＭＬファイル等のファイル（以下、ウェッブページ用ファイル）の閲覧サービス、ファイルのダウンロードサービス等が行えるようになっている。
ＶＭＤファイルによって提供されるウェッブページには、ＶＭＤサービスを提供する事業主体（サービサー）のトップページ、ＶＭＤアプリのダウンロードサービス用のページ（以下、ダウンロードページ）、ＶＭＤプロキシサービス用のページ（以下、プロキシページ）が含まれる。トップページには、ダウンロードページやプロキシページ等へのリンクボタンが設けられている。
【００７９】
ＶＭＤサーバ８２が備えるストレージ（典型的にはハードディスク）には、閲覧サービスのためのｈｔｔｐｄプログラム、各種ウェッブページ用ファイル、ダウンロードサービスのためのｆｔｐプログラム、ダウンロードされる各種ファイル（以下、ダウンロードファイル）等が保存されている。
ダウンロードファイルに、ＶＭＤアプリ用の各種ファイルが含まれている。ダウンロードページには、ＶＭＤアプリを紹介する文章とととに、ＶＭＤアプリ用ソフトウェアのダウンロード用のコマンドボタン（以下、ダウンロードボタン）が設けられている。ＶＭＤアプリのストレージには、ＶＭＤアプリ用ソフトウェアのダウンロードプログラムが設けられており、ダウンロードボタンをクリックすると実行されるようになっている。
【００８０】
本実施形態では、ＶＭＤアプリのダウンロードは無償で行えるようになっている。ユーザーは、トップページにアクセスし、ダウンロードページに飛んでからダウンロードボタンをクリックすることで自由に自分のコンピュータにＶＭＤアプリをダウンロードできるようになっている。尚、ＶＭＤアプリのダウンロードの際、ＶＭＤサーバ８２上のインストールプログラムを直接実行してインストールするのか、インストールプログラムを自分のコンピュータのハードディスクにコピーしてから実行するのかを選択できるようになっている。このようなプログラムダウンロードは、通常のダウンロードサービスにおけるものと同様なので、詳細な説明は割愛する。
【００８１】
次に、ＶＭＤプロキシサービスについて説明する。ＶＭＤプロキシサービスは、各ユーザーがＶＭＤアプリを使用して業務を行う際、前回シャットダウンした際のＶＭＤアプリの各デスクトップの情報（以下、ＶＭＤ情報）をユーザーのコンピュータの代わりに登録するサービスである。登録された情報を利用することで、ユーザーは、インターネット８１に接続されたどのコンピュータからでも前回終了時の各デスクトップの状況を再現することができるようになっている。
【００８２】
ユーザー自身以外が登録情報を利用できるのはまずいので、ＶＭＤプロキシサービスは、無料サービスではあるが、会員制となっている。ＶＭＤサーバ８２には、会員登録のためのウェッブページ用ファイルが設けられており、トップページには会員登録のためのページへのリンクボタンが設けられている。ユーザーは、トップページからこのページに飛び、氏名等の個人情報を入力し、ユーザーＩＤとパスワードの付与を受けるようになっている。従って、ＶＭＤサーバ８２は、ユーザーＩＤ及びパスワードの発行を行うプログラムや認証を行う認証プログラム等を含んでいる。これらの構成は、通常の会員制のサイトにおけるものと同様なので詳細な説明は割愛する。
【００８３】
ＶＭＤサーバ８２は、ＶＭＤプロキシサービスのためのストレージ（記憶装置）８４を備えている。ストレージ８４は、各種プログラムやウェッブページ用ファイルが記憶されたものと同じ記憶装置でも良いが、情報量が膨大となるため、図２２に示すように、別のストレージ（以下、プロキシ用ストレージ）８４を用いても良い。プロキシ用ストレージ８４は、イントラネット８０を介してＶＭＤサーバ８２に接続されている。尚、ＶＭＤサーバ８２は勿論であるが、特にプロキシ用ストレージ８４に対して不正なアクセスが無いよう、イントラネット８０は、ファイアウォール８０１を介してインターネット８１に接続されている。
【００８４】
プロキシ用ストレージ８４には、会員登録したユーザー（以下、登録ユーザー）ごとにパスが設けられ、各パスに、各ユーザーのＶＭＤ情報が登録されるようになっている。以下、このユーザー毎のパスをユーザーパスと呼ぶ。ＶＭＤ情報としてどのような情報を登録するか、幾つかのパターンが考えられる。
第一のパターンは、前述したレジストリへの登録とほぼ同じようにするパターンである。この場合は、ＶＭＤアプリにおけるデスクトップレイアウト情報（デスクトップの数やレイアウトの情報等）や各種状態情報、即ち、前回シャットダウンした際にリアルデスクトップであったデスクトップＩＤの情報、前回シャットダウンした際に各デスクトップで動作させていたアプリケーションの状況情報（アプリケーションの名前、起動パス、アプリデータのリソース情報等）が、ＶＭＤ情報としてユーザーパスに登録される。
【００８５】
ＶＭＤ情報には、そのユーザーがアクセス権を持つコンピュータの情報が含まれる。例えば、あるユーザーが職場でパソコンを使用し、自宅でも別のパソコンを使用していたとすると、それぞれのパソコンのアクセス情報とは、ＩＰアドレスやコンピュータ名等の情報である。また、アプリケーションの情報のうち、起動パスやアプリデータにおけるパス情報は、インターネット８１上の絶対パスの形で登録される。即ち、そのユーザーＩＤを持つユーザーが前回ＶＭＤ環境を実現していたコンピュータ上のパスが登録される。
第一のパターンでは、図２２に矢印Ｘで示すように、前回ＶＭＤ環境を実現していたコンピュータにＶＭＤサーバ８２を介してアクセスし、アプリケーションプログラムやアプリデータを取得する。従って、ユーザーがアクセス権を持つインターネット８１上の複数のコンピュータのうちの少なくとも一つは、インターネット８１からのアクセス（リモートアクセス）を許可する設定であることが必要である。尚、リモートアクセスについては、当然のことながら、ユーザー自身が設定したＩＤとパスワードによって認証してから許可するようになっている。この部分の構成は、通常のネットワークＯＳにおけるものと同様である。以下、リモートアクセスを許可しているコンピュータをＲＡＣと呼ぶ。
【００８６】
第二のパターンは、ＶＭＤアプリにおけるディスクレイアウト情報や各種状態情報に加え、アプリデータそのものをＶＭＤ情報として登録するパターンである。即ち、ユーザーが前回シャットダウンした際に稼働させていたアプリケーションで扱っていたアプリデータもプロキシ用ストレージ８４に記憶される。例えばあるデスクトップにおいて文書作成アプリケーションを使用して文書作成をしており、別のデスクトップにおいてブラウザを使用してあるウェッブサイトを閲覧していた場合、その文書ファイルをプロキシ用ストレージ８４の当該ユーザーパスに記憶するとともに、そのウェッブサイトのウェッブページをキャッシュメモリに記憶するのと同様にプロキシ用ストレージ８４の当該ユーザーのパスに記憶する。
【００８７】
いずれのパターンにおいても、ＶＭＤアプリが動作しているコンピュータがクライアント８３となる。ＶＭＤサーバ８２は、クライアント８３からの要求に従い、受信したＶＭＤ情報の更新登録や、クライアント８３へのＶＭＤ情報の送信等を行う。従って、このようなＶＭＤ情報の送受信等を含む処理を行うプロキシサービスプログラムが、ＶＭＤサーバ８２にインストールされている。また、ＶＭＤアプリについても、ＶＭＤサーバ８２に対するクライアント８３として機能するよう、上述したものから改変が加えられる（ネットワーク型のＶＭＤアプリ）。
【００８８】
図２３及び図２４は、ネットワーク型のＶＭＤアプリとプロキシサービスプログラムの主要部の概略について示したフローチャートである。このうち、図２３は、ネットワーク型のＶＭＤアプリの起動時のプログラムの概略とそれに対応したプロキシサービスプログラムの概略を示し、図２４は、ネットワーク型のＶＭＤアプリの終了時のプログラムの概略とそれに対応したプロキシサービスプログラムの概略を示している。
【００８９】
まず、プロキシ用ストレージ８４への記憶情報が第一のパターンである場合の各プログラムの概略について説明する。以下の説明では、あるユーザーが使用するコンピュータがすべてＲＡＣであるとして説明する。ユーザーは、ＲＡＣである第一のクライアント８３（例えば職場のパソコン）においてＶＭＤアプリを使用してＶＭＤ環境で業務を行う。即ち、複数のデスクトップを立ち上げ、各々で異なるアプリケーションを使って業務をする。もしくは、アプリケーションは同じであるが異なるアプリデータを使って業務を行う。そして、業務を終了し、第一のクライアント８３をシャットダウンする。
【００９０】
この際、図２３に示すように、ＶＭＤアプリは、ＶＭＤサーバ８２にアクセスし、そのユーザーのユーザーパスにＶＭＤ情報の登録要求を送信するようプログラミングされる。一方、ＶＭＤサーバ８２は、ＶＭＤ情報の登録要求を受信すると、プロキシサービスプログラムを起動させる。プロキシサービスプログラムは、まず、認証プログラムをサブプログラムとして実行する。認証プログラムは、アクセスしてきた第一のクライアント８３に認証画面のページを送る。第一のクライアント８３のディスプレイに表示された認証画面においてユーザーＩＤとパスワードが正しく入力されると、認証画面の埋め込みプログラムによりユーザーＩＤとパスワードがＶＭＤサーバ８２に送信される。認証プログラムは、ユーザーＩＤとパスワードが正しいかどうか判断し、正しければ認証完了とし、認証完了の旨の戻り値をプロキシサービスプログラムに渡して終了する。
【００９１】
そして、プロキシサービスプログラムは、認証完了した旨を第一のクライアント８３に送信する。ＶＭＤアプリは、認証完了を受信すると、ＶＭＤ情報をＶＭＤサーバ８２に発信する。ＶＭＤ情報には、ＶＭＤアプリにおけるデスクトップレイアウト情報や各種状態情報が含まれる。プロキシサービスプログラムは、認証完了を送信した後、ＶＭＤ情報を受信すると、受信したＶＭＤ情報をプロキシ用ストレージ８４の該当ユーザーのユーザーパスに記憶する。これで、ＶＭＤアプリ終了時のプログラムは終了である。
【００９２】
次に、ＶＭＤアプリ起動時のプログラムについて説明する。
前述したユーザーが、ＲＡＣである第二のクライアント８３（例えば自宅のパソコン）を立ち上げる。第二のクライアント８３のハードディスクにもＶＭＤアプリが予めインストールされており、ＶＭＤアプリが自動で起動するようになっている。第二のクライアント８３においてＶＭＤアプリが起動すると、ＶＭＤアプリは、ＶＭＤサーバ８２に対し、設定情報や状況情報の送信要求を送信する。
送信要求がＶＭＤアプリから送信されると、ＶＭＤサーバ８２のプロキシサービスプログラムが起動し、同様に、認証プログラムをサブプログラムとして実行する。認証プログラムによる認証が完了し、認証プログラムから認証完了の戻り値を取得すると、プロキシサービスプログラムは、プロキシ用ストレージ８４の該当ユーザーのユーザーパスから、ＶＭＤ情報を読み出し、アクセスしてきた第二のクライアント８３に送信する。ＶＭＤアプリは、送信されたＶＭＤ情報に従って、サブシェルのアーキテクチャを構築し、前述したようなサブシェルメモリ空間の確保やレジストリ情報の記憶等を行うようプログラミングされている。
【００９３】
次に、ＶＭＤアプリは、ＶＭＤ情報に従い、前回のシャットダウン時にリアルデスクトップであったデスクトップをリアルデスクトップにする。そして、前回のシャットダウン時に稼働させていたアプリケーションをリアルデスクトップで立ち上げ、ウインドウのオープンやアプリデータの読み込み等を行って、シャットダウン時の状況を再現する。この際、ＶＭＤアプリは、必要に応じ第一のクライアント８３にアクセスする。例えば、立ち上げるアプリケーションのプログラムが第二のクライアント８３のハードディスクにインストールされていない場合、第一のクライアント８３にアクセスし、第一のクライアント８３のハードディスクからアプリケーションを読み込んで立ち上げる。また、アプリデータの読み込みが必要な場合、ＶＭＤアプリは、第一のクライアント８３にアクセスし、第一のクライアント８３のハードディスクからアプリデータを読み込む。例えば、第一のクライアント８３においてＶＭＤアプリ上で文書作成アプリケーションを使用して文書作成業務をしていた場合、更新した文書ファイルは第一のクライアント８３のハードディスクにあるが、この文書ファイルのパス情報は、ＶＭＤサーバ８２から取得したＶＭＤ情報に含まれている。従って、第二のクライアント８３で起動させたＶＭＤアプリは、第一のクライアント８３にリモートアクセスし、第一のクライアント８３から文書ファイルを取得する。また、第一のクライアント８３においてＶＭＤアプリ上でブラウザを使用し、ウェッブサイトを閲覧していた場合、ＶＭＤ情報には、そのウェブサイトのＵＲＬが含まれる。従って、第二のクライアント８３においてＶＭＤアプリを起動した際、ブラウザを自動的に起動させ、ＶＭＤ情報に従って自動的にウェッブサイトにアクセスし、ウェッブページのファイルを取得してブラウザのウインドウに表示する。
【００９４】
尚、第二のクライアント８３においてＶＭＤアプリを終了させる際、ＶＭＤアプリは、同様に、ＶＭＤサーバ８２にアクセスし、プロキシ用ストレージ８４のユーザーパスにＶＭＤ情報を更新して記録しておく。そして、再び第一のクライアント８３においてＶＭＤアプリが起動させると、今度は第一のクライアント８３が必要に応じてＶＭＤサーバ８２を介して第二のクライアント８３にアクセスし、更新ファイルを第二のクライアント８３から取得する。
上記第一のパターンの説明から解るように、第一のパターンにおいてはＲＡＣは少なくとも一つあれば足りる。上記説明で言うと、例えば第二のクライアント８３がＲＡＣではない場合、第二のクライアント８３においてＶＭＤアプリ上でアプリケーションを使用して業務を行った際、更新ファイルは、第一のクライアント８３のハードディスクの所定のパスに記憶されるようにする。
【００９５】
尚、上記ＶＭＤアプリ及びプロキシサービスプログラムにおいて、第一第二の各コンピュータにおいて、同一のＶＭＤ環境において各アプリケーションを動作させることが可能なるが、その前提として、第一第二の各コンピュータには、各アプリケーションが同じようにインストールされていることが必要である。この場合、各コンピュータへのアプリケーションのインストールは、各コンピュータにおいて通常のインストール手順を繰り返すことで行っても良いが、ＶＭＤアプリに自動インストール機能を持たせても良い。
例えば、第一のクライアント８３においてＶＭＤアプリが稼働している際、新しいアプリケーションがインストールされたとする。この場合、そのインストールの実行ファイル（inst.exe)やアプリケーションを構成するファイルやフォルダ群が存在する第一のクライアント８３のハードディスクのパス（以下、新アプリインストパス）や、そのアプリケーションの識別情報（アプリケーションの名前等）を、ＶＭＤアプリの一つのＶＭＤ情報として記憶するようにする。そのＶＭＤアプリが終了した際、新アプリインストパスをＶＭＤ情報の一つとして、ＶＭＤサーバ８２がプロキシ用ストレージ８４のユーザーパスに記憶する。一方、第二のクライアント８３がＶＭＤアプリを起動させた際、アプリケーションの識別情報に従い、第一のクライアント８３に新しくインストールされたアプリケーションが第二のクライアント８３にインストールされているかどうか判断する。インストールされていなければ、プロキシ用ストレージ８４のユーザーパスにある新アプリインストパスの情報に従い、第一のクライアント８３にリモートアクセスし、第一のクライアント８３にあるinst.exeを実行し、第二のクライアント８３にも新しいアプリケーションをインストールしておく。inst.exeやインストールに必要なファイル群、フォルダ群を第二のクライアント８３のハードディスクにコピーしてからインストールしても良い。尚、当然のことならが、ユーザーには、このような二つのコンピュータへのインストールのライセンスがアプリケーションプロバイダから与えられている。
このようにしておくと、各クライアント８３において、常に同じアプリケーション群がインストールされた状態となるので、上記のようなネットワーク型のＶＭＤ環境を実現する上で好適である。尚、inst.exeやインストールに必要なファイル群、フォルダ群を、プロキシ用ストレージ８４のユーザーパスにコピーしておく方法もある。この場合、第二のクライアント８３は、ユーザーパス上のinst.exeを実行するか、第二のクライアント８３のハードディスクにコピーした上で実行することになる。
【００９６】
次に、第二のパターンにおけるＶＭＤアプリ及びプロキシサービスプログラムについて説明する。
第二のパターンでは、ＶＭＤアプリは、終了時に、ＶＭＤ情報に加え、必要に応じてアプリデータをＶＭＤサーバ８２に送りプロキシ用ストレージ８４に記憶する。即ち、ＶＭＤアプリの終了時に、いずれかのデスクトップにおいてアプリケーションを動作させており、アプリデータを扱っていた場合、その最後の状態のアプリデータをＶＭＤアプリがＶＭＤサーバ８２に発信する。最後の状態のアプリデータとは、文書作成アプリケーションのようなファイル編集アプリケーションの場合、最後に編集された状態のファイル（更新ファイル）である。ブラウザの場合、デスクトップで最後に閲覧していたウェッブページのファイルである。これらのアプリデータが、他のＶＭＤ情報とともに発信され、プロキシ用ストレージ８４のユーザーパスに記憶される。ＶＭＤアプリ及びプロキシサービスプログラムは、この部分が第一のパターンと異なるのみで、他は同じである。
上記第二のパターンでは、アプリデータもプロキシ用ストレージ８４にあるので、ＶＭＤアプリ起動の際、他のコンピュータにリモートアクセスすることは基本的に不要である。従って、リモートアクセスを許可しない設定のコンピュータ間において、上記のようにＶＭＤ環境の再現が行える。尚、ユーザーが作成した更新ファイルをプロキシ用ストレージ８４に記憶することになるので、更新ファイルが他人に不正に取得されないよう、セキュリティには万全を期す必要がある。
【００９７】
上記説明では、第一第二の二つのクライアント８３であったが、三つ以上のクライアントでも同様である。ユーザーＩＤ及びパスワードで認証される限り、どのクライアントに対してもＶＭＤ情報が送信されるので、ユーザーは、どのクライアントにおいても同じＶＭＤ環境において業務を行うことができる。尚、当然のことであるが、ＶＭＤ環境は、前回ＶＭＤアプリを終了させたクライアントと同じクライアントにおいても同様に再現することができる。
尚、上記説明では、ユーザーＩＤとパスワードで認証を行ったが、これに限定される訳ではない。ユーザーを特定する情報としてユーザーＩＤは必要であるが、認証に必要なものとしてはパスワード以外の認証手段を用いてもよい。例えば、クライアント８３が指紋認証手段又は静脈認証手段等を備えている場合、そられの認証手段の認証結果を上記ネットワーク型ＶＭＤアプリにおける認証として採用しても良い。
【００９８】
図２５は、ネットワーク型ＶＭＤを利用して広告サービスを行う発明の実施形態の概略を示した図である。ネットワーク型ＶＭＤを利用して広告サービスを行う発明は、ＶＭＤのためのサーバであって、広告情報も併せてクライアント８３に送信するサーバとして実現される。  
図２５においても、インターネット８１にはファイアウォール８０１を介してびイントラネット８０が設けられ、イントラネット８０上にＶＭＤサーバ８２及プロキシ用ストレージ８４が設けられている。これらの構成は、図２４に示す実施形態のものとほぼ同様である。図２５に示す実施形態では、イントラネット８０上にさらに広告サーバ８４が設けられている。広告サーバ８４は、ＶＭＤサーバ８２からの要求に応じ、広告情報をＶＭＤサーバ８２に送信するものである。
【００９９】
図２６は、広告サービスが実施されているＶＭＤ環境下のリアルデスクトップの例について示した概略図である。広告情報は、オブジェクトとして（即ち、ディスプレイに表示されることが可能な情報として）送られるものであり、以下、広告オブジェクトと呼ぶ。図２６に示すように、デスクトップは、広告オブジェクト９１を含んでいる。この実施形態では、広告オブジェクト９１は、ディスプレイの画面下端付近（タスクバーの上側）に表示されるようになっている。
図２５に示すように、広告サーバ８４のハードディスクには、広告情報データベース８４１が記憶されている。広告情報データベース８４１は、図２５に概念的に示すように、多数の広告情報ファイル８４２から成る。
【０１００】
サービサーは、予め広告を募っており、広告主からの依頼に応じて広告データを作成する。イントラネット８０上には、不図示の管理用コンピュータが接続されており、管理用コンピュータにおいて広告データが入力され、広告サーバ８４の広告情報ファイル８４２に登録されるようになっている。
また、各広告情報ファイル８４２には、優先順位が与えられている。即ち、図２５に示すように、各広告情報ファイル８４２は、０〜ｎ番目のパスに記憶されている。０番目のパスに記憶された広告情報ファイル８４２が最も優先順位が高く、ｎ番目が最も低い。
【０１０１】
一方、広告オブジェクト９１は、ＶＭＤ情報の送信要求があったコンピュータにＶＭＤサーバ８２からＶＭＤ情報が送信される際、併せて送信される。広告オブジェクト９１は、ＡｃｔｉｖｅＸやＪａｖａ（登録商標）アプレットのようなプログラムをダウンロードして実行するタイプのＯＬＥ(Object Linking and Embedding）オブジェクトである。このようなＯＬＥオブジェクトは、ブラウザ上で動作するものが多いが、シェルプログラム上で動作するように構成される。
広告オブジェクト９１には、広告サーバ８４の広告情報データベース８４１にアクセスしてに、０番目のパスにある広告情報ファイル８４２を取得して表示するプログラム（以下、埋め込みアプレット）が埋め込まれている。ＶＭＤ情報がプロキシ用ストレージ８４からクライアント８３に送られてＶＭＤ環境が再現され、広告オブジェクト９１がリアルデスクトップに表示されると、埋め込みアプレットが自動的に起動し、広告サーバ８４にアクセスする。そして、広告情報データベース８４１の０番目のパスの広告情報を取得して広告オブジェクト９１として当該リアルデスクトップ上に表示するようプログラミングされている。
【０１０２】
また、広告サーバ８４には、ユーザーのデスクトップ上に表示される広告オブジェクト９１の内容（広告データ）を、順次入れ替えるための入れ替えプログラムが設けられている。入れ替えプログラムは、所定時間毎に、各広告情報の優先順位を一つ上にシフトするプログラムである。即ち、ある時間が経過すると、各広告情報は、その一つ上のパスに移動させられる。０番めのパスにあった広告情報は、ｎ番目のパスに移動する。このようにして、所定時間（以下、シフト周期）毎に、各広告情報が一つ上のパスに移動するようになっている。
一方、広告オブジェクト９１の埋め込みアプレットは、所定時間毎に起動し、広告情報データベース８４１の０番目のパスの情報を取得し直して広告オブジェクト９１を更新するようプログラミングされれている。この所定時間は、上記シフト周期と同じ時間に設定されている。従って、リアルデスクトップ上に表示された広告オブジェクト９１は、シフト周期毎に内容が入れ替わって表示されるようになっている。尚、前述したように、選択入力手段によりリアルデスクトップは別のデスクトップに切り替わるが、埋め込みアプレットの周期的自動起動のためのタイマーカウントは、リアルデスクトップの切り替えによってもリセットされない（０に戻らない）ようにしておく。
【０１０３】
上記構成によれば、ネットワーク型ＶＭＤサービスの提供に際して、広告サービスも併せて提供することができる。広告サービスの提供に際しては、サービサーは広告主から手数料を徴収することができるので、ネットワーク型ＶＭＤサービスの提供については無料とすることができる。このため、ＶＭＤ技術の普及に貢献する。
尚、広告オブジェクト９１は、ユーザーにおいて削除することができないよう構成される。多少の大きさの変更や位置の変更は許容されるようにしても良いが、アイコン化して広告情報がわかならいようにすることもできないようにする。
【０１０４】
上記説明では、広告オブジェクト９１は埋め込みアプレットにより広告情報を表示するものであったが、広告オブジェクトは広告データそのものであっても良い。この場合は、プロキシ用ストレージ８４に広告オブジェクトを全ユーザー共通のものとして登録するようにしておく。そして、クライアント８３からＶＭＤ情報の送信要求があった場合、広告オブジェクトがＶＭＤサーバ８２から送信され、ディスプレイに表示されるようにする。この場合、広告オブジェクト９１は単なるデータなので、広告内容を周期的に切り替えることはそのクライアント８３上ではできない。
但し、プロキシ用ストレージ８４上の広告オブジェクトを周期的に更新して登録するようにすれば、上述したものに近いことは行える。即ち、広告サーバ８４が周期的にプロキシ用ストレージ８４にアクセスし、広告オブジェクトを更新するようにする。広告オブジェクトの更新は、前述した広告情報ファイル８４２の内容とし、０〜ｎの順の内容で周期的に更新が行われるようにする。従って、クライアント８３からどのタイミングでＶＭＤ情報の送信要求があったかに応じて、０〜ｎのいずれかの広告情報ファイル８４２の内容が広告オブジェクトとしてクライアント８３に送信され、表示される。
【０１０５】
また、広告オブジェクトは、ＣＧＩ、JavaScript、VBScriptのようなスクリプトにより表示されるものであっても良い。この場合、スクリプトが自動実行されるようシェルプログラム等が構成されることが好ましい。また、スクリプトをコンパイルして実行する機能が広告サーバ８４に備えられる。
尚、広告オブジェクト９１において広告情報を更新取得する周期は、上記シフト周期に一致している必要はない。また、広告オブジェクト９１において広告情報が周期的に入れ替わるようにすることも必須の要素ではない。ＶＭＤサーバ８２がＶＭＤ情報をクライアント８３に送信する際、単に広告情報をリアルデスクトップ上で貼り付けられるよう広告情報を送るだけでも良い。
【０１０６】
また、前述した縦横各一列のみから成るデスクトップ群のレイアウトの場合、広告オブジェクト９１の表示は、縦の列に位置するデスクトップにおいてのみ行われるようにすると好適である。この点は、人間工学的な観点を加味したものである。即ち、デスクトップに表示される多くの情報は、ユーザーが横方向に目で追って視認する場合が多い。典型的には、文字情報は多くの場合横書きである。従って、横方向へのデスクトップの切替は、ユーザーには比較的自然なものとして感じるが、縦方向へのデスクトップの切替は特別に感じる。
このような点を考慮すると、横方向の列のデスクトップ群は、ユーザーが比較的頻繁に見るオブジェクトグループとして設定され、縦方向の列のデスクトップ群は、特別な場合に見るオブジェクトグループとして設定されるのが、ユーザビリティの高い設定である。この際、横方向のデスクトップ群において広告オブジェクトが表示されると、頻繁に広告オブジェクトが表示される結果となるから、ユーザーにとって煩わしく感じる可能性がある。また、頻繁に表示するデスクトップでは、なるべく広い表示領域を確保するため、広告オブジェクトを表示しない方が良いという考えもある。従って、縦方向の列のデスクトップを表示する場合のみ広告オブジェクトが表示されるようにすると好適である。
【０１０７】
図３の実施形態に沿って上記の点の具体例を説明する。図３において、横方向の列において左から三番目のデスクトップがデフォルトでリアルデスクトップ２であるとし、ＶＭＤアプリを起動させた場合、常にこの位置のデスクトップがリアルデスクトップ２であるとする。この場合、ユーザーは、デフォルトのリアルデスクトップ２において左又は右の仮想デスクトップ２０を選択し、リアルデスクトップに切り替え、起動させておいたアプリケーションプログラムにより業務を行う。業務を行う際、何らかの情報を得る目的や気分転換の目的でインターネットサイトにアクセスしてウェッブページを閲覧することがある。この際に、上又は下の仮想デスクトップ２０を選択し、起動させておいたブラウザによりウェッブページを閲覧する。この上又は下の仮想デスクトップ２０を選択した場合のみ広告オブジェクトが表示されるよう、前記ＶＭＤ情報が設定される。つまり、横方向の列については、広告オブジェクトの表示無しにユーザーが自由にカスタマイズすることができるようにしておき、縦方向の列においてのみ広告オブジェクトの表示が行われるようにする。尚、場合によっては、横方向の列においてのみ広告オブジェクトが表示され、縦方向では表示されないようにすることもあり得る。
【０１０８】
上記各実施形態の説明では、Ｗｉｎｄｏｗｓ系のＯＳを前提として説明したが、本願発明の考え方は、Ｕｎｉｘ（登録商標）、Ｌｉｎｕｘ、ＭａｃＯＳ等、他のＯＳにおいても適用が可能である。
尚、上記各実施形態におけるＶＭＤのコンセプトは、通信と放送が融合した将来のＩＴ環境において優れたソリューションを提供する。即ち、例えばテレビ放送のディスプレイ上への表示も、一つのアプリケーションと捉えることができる。従って、リアルデスクトップ上に一つのチャンネルを写し（一つ放送局から配信された番組を表示し）、他の仮想デスクトップにおいて他のチャンネルを写す（他の放送局から配信された番組を表示す）るような使い方が考えられる。この場合も、選択入力手段により他のチャンネルの番組を表示するよう切り替えが行われるが、特に、図５に示すように、各デスクトップがループ状に連なった構成において、選択入力手段によるチャンネル切り替えを行うようにすると、現状のテレビジョン装置の同様のイメージでユーザーはチャンネル切り替えを行うことができ、好適である。この場合、テレビ放送受信以外のアプリケーションを上側及び又は下側に配置したデスクトップで表示することが考えられる。この場合も、各デスクトップにおいては、複数のアプリケーションが並行して実行されたり、複数のウインドウがオープンされることがあり、一つのデスクトップにおいてテレビ番組の表示とテレビ番組以外の他のアプリデータの表示とが行われたりすることもある。
【０１０９】
また、上記各実施形態では、オブジェクトグループを意味するものとして「デスクトップ」という概念を採用したため、仮想マルチデスクトップというコンセプトで説明が行われた。しかしながら、「デスクトップ」という用語は本願発明においては必須のものではない。オブジェクトグループが複数設定されており、その数が、リアルディスプレイと仮想ディスプレイの合計の数に一致しており、各オブジェクトグループが各ディスプレイに対応して設けられていることが必須条件である。「対応して設けられている」とは、対応するディスプレイがリアルディスプレイになった際に表示されるものとして記憶部に記憶されているということである。
【図面の簡単な説明】
【０１１０】
【図１】本願発明の実施形態の基本コンセプトとしての仮想マルチデスクトップを説明した平面概略図である。
【図２】図１に示す仮想マルチデスクトップの動作について説明した平面概略図である。
【図３】ディスプレイ群１，１０のレイアウトを固定した実施形態の概略図である。
【図４】さらに別の実施形態を示した概略図である。
【図５】さらに別の実施形態を示した斜視概略図である。
【図６】各実施形態の仮想マルチデスクトップをアプリケーションとして実現する際のソフトウェアアーキテクチャを示した概略図である。
【図７】実施形態におけるレジストリ５への情報登録と参照について示した概略図である。
【図８】ＶＭＤアプリの開始用モジュールの概略構成を示したフローチャートである。
【図９】ＶＭＤアプリにおけるメモリ空間の概略図である。
【図１０】選択入力手段を構成するオブジェクトを示した概略図である。
【図１１】選択手段を構成する切替起動モジュール及び切替モジュールの概略を示したフローチャートである。
【図１２】別の例の選択入力手段について示した概略図である。
【図１３】図１２に示す動作を行う選択入力手段における切替起動モジュール及び切替モジュールの概略を示したフローチャートである。
【図１４】図１３に示す切替起動モジュールにおいて切替モジュールに渡す引数について説明した図である。
【図１５】別の例の切替起動モジュール及び切替モジュールの概略を示したフローチャートである。
【図１６】図１５に示す別の例の切替起動モジュールにおける付加動作の一例について示した図である。
【図１７】ＶＭＤアプリ稼働中の環境設定について示した概略図である。
【図１８】位置選択ウインドウの一例を示した概略図である。
【図１９】状態選択ウインドウ６７の一例を示した概略図である。
【図２０】ＶＭＤ環境をＯＳの機能として実現する実施形態におけるソフトウェアアーキテクチャの概略を示した図である。
【図２１】図２０に示す実施形態におけるレジストリ５への情報登録と参照について示した概略図である。
【図２２】ＶＭＤ環境を一つのネットワークサービスとして提供する発明の実施形態の概略構成を示した図である。
【図２３】ネットワーク型のＶＭＤアプリとプロキシサービスプログラムの主要部の概略について示したフローチャートである。
【図２４】ネットワーク型のＶＭＤアプリとプロキシサービスプログラムの主要部の概略について示したフローチャートである。
【図２５】ネットワーク型ＶＭＤを利用して広告サービスを行う発明の実施形態の概略を示した図である。
【図２６】広告サービスが実施されているＶＭＤ環境下のリアルデスクトップの例について示した概略図である。
【符号の説明】
【０１１１】
１  リアルディスプレイ
１０  仮想ディスプレイ
２  リアルデスクトップ
２０  仮想デスクトップ
【図５】
2007334525.tif 000003
【図１】
2007334525.tif 000004
【図２】
2007334525.tif 000005
【図３】
2007334525.tif 000006
【図４】
2007334525.tif 000007
【図６】
2007334525.tif 000008
【図７】
2007334525.tif 000009
【図８】
2007334525.tif 000010
【図９】
2007334525.tif 000011
【図１０】
2007334525.tif 000012
【図１１】
2007334525.tif 000013
【図１２】
2007334525.tif 000014
【図１３】
2007334525.tif 000015
【図１４】
2007334525.tif 000016
【図１５】
2007334525.tif 000017
【図１６】
2007334525.tif 000018
【図１７】
2007334525.tif 000019
【図１８】
2007334525.tif 000020
【図１９】
2007334525.tif 000021
【図２０】
2007334525.tif 000022
【図２１】
2007334525.tif 000023
【図２２】
2007334525.tif 000024
【図２３】
2007334525.tif 000025
【図２４】
2007334525.tif 000026
【図２５】
2007334525.tif 000027
【図２６】
2007334525.tif 000028