(57)【特許請求の範囲】
【請求項１】
第１のディスプレイと第１の入力デバイスとを備え第１のアプリケーション・プログラムの実行が可能な第１のコンピュータと、第２のディスプレイと第２の入力デバイスとを備え前記第１のアプリケーション・プログラムと同一性のある第２のアプリケーション・プログラムの実行が可能な第２のコンピュータで構成されたコンピュータ・システムの制御方法であって、
前記第１のコンピュータと前記第２のコンピュータをデータ交換が可能なように接続するステップと、
前記第２のコンピュータが前記第２の入力デバイスが生成した第２の入力情報で前記第２のアプリケーション・プログラムを実行するステップと、
前記第２のコンピュータが前記第２の入力情報を前記第１のコンピュータに送るステップと、
前記第１のコンピュータが前記第２の入力情報に基づいて前記第１のアプリケーション・プログラムを実行するステップと、
前記第１のコンピュータが前記第１のアプリケーション・プログラムが作成した画像データを前記第１のディスプレイに表示しないで展開する仮想ディスプレイをメイン・メモリに作成するステップと
を有する制御方法。
【請求項２】
前記第１のコンピュータが前記第１のディスプレイ内のウインドウに前記仮想ディスプレイの画像データを表示するステップを有する請求項１に記載の制御方法。
【請求項３】
前記第１のコンピュータが前記第１の入力デバイスが生成した第１の入力情報で前記第１のアプリケーション・プログラムを実行するステップと、
前記第１のコンピュータが前記第１の入力情報を前記第２のコンピュータに送るステップと、
前記第２のコンピュータが受け取った前記第１の入力情報に基づいて前記第２のアプリケーション・プログラムを実行するステップと
を有する請求項１または請求項２に記載の制御方法。
【請求項４】
前記第１のディスプレイに表示されているアプリケーション・ウインドウを前記仮想ディスプレイの中に移動させるステップと、
前記移動させるステップに応答して、前記第１のコンピュータが前記移動したアプリケーション・ウインドウのアプリケーション情報を前記第２のコンピュータに送るステップと、
前記第２のコンピュータが前記受け取ったアプリケーション情報に含まれる識別子で特定されるアプリケーション・プログラムと同一性のあるアプリケーション・プログラムを起動するステップと
を有する請求項１から請求項３のいずれかに記載の制御方法。
【請求項５】
第１のディスプレイとハードウェア・キーボートとを備え第１のアプリケーション・プログラムの実行が可能な第１のコンピュータと、タッチ入力が可能な第２のディスプレイを備え前記第１のアプリケーション・プログラムと同一性のある第２のアプリケーション・プログラムの実行が可能な第２のコンピュータで構成されたコンピュータ・システムの制御方法であって、
前記第１のコンピュータと前記第２のコンピュータをデータ交換が可能なように接続するステップと、
前記接続するステップに応答して前記第２のコンピュータが接続時に動作している前記第２のアプリケーション・プログラムを連携動作の対象に選択するステップと、
前記第１のアプリケーション・プログラムと前記第２のアプリケーション・プログラムが接続前までそれぞれ作成していたファイルを同期するステップと、
前記第２のコンピュータが前記第２のディスプレイから入力された第２の入力情報で前記第２のアプリケーション・プログラムを実行するステップと、
前記第２のコンピュータが前記第２の入力情報を前記第１のコンピュータに送るステップと、
前記第１のコンピュータが前記第２の入力情報に基づいて前記第１のアプリケーション・プログラムを実行するステップと、
を有する制御方法。
【請求項６】
前記選択するステップを接続時に前記第２のコンピュータで動作しているすべてのアプリケーション・プログラムについて実行し、
前記同期するステップを前記選択したすべてのアプリケーション・プログラムと該すべてのアプリケーション・プログラムと同一性があり前記第１のコンピュータで実行されるアプリケーション・プログラムについて実行する請求項５に記載の方法。
【請求項７】
前記接続するステップに応答して、前記第２のコンピュータが前記第１のコンピュータに実行中の前記第２のアプリケーション・プログラムの識別子およびファイルの識別子を含むアプリケーション情報を送るステップと、
前記アプリケーション情報に基づいて前記第１のコンピュータが前記第１のアプリケーション・プログラムを起動するステップと
を有する請求項５または請求項６に記載の制御方法。
【請求項８】
前記同期するステップが、前記第１のアプリケーション・プログラムおよび前記第２のアプリケーション・プログラムがそれぞれ接続時に実行しているファイルをそれぞれの不揮発性記憶装置に保存して同期するステップを有する請求項５から請求項７のいずれかに記載の制御方法。
【請求項９】
前記第１のコンピュータが前記第１の入力デバイスが生成した第１の入力情報で前記第１のアプリケーション・プログラムを実行するステップと、
前記第１のコンピュータが前記第１の入力情報を前記第２のコンピュータに送るステップと、
前記第２のコンピュータが受け取った前記第１の入力情報に基づいて前記第２のアプリケーション・プログラムを実行するステップと
を有する請求項５から請求項８のいずれかに記載の制御方法。
【請求項１０】
第１のディスプレイとハードウェア・キーボートとを備え第１のアプリケーション・プログラムの実行が可能な第１のコンピュータと、タッチ入力が可能な第２のディスプレイを備え前記第１のアプリケーション・プログラムと同一性のある第２のアプリケーション・プログラムの実行が可能な第２のコンピュータで構成されたコンピュータ・システムの制御方法であって、
前記第１のコンピュータと前記第２のコンピュータをデータ交換が可能なように接続するステップと、
前記接続するステップに応答して、前記第２のコンピュータが前記第１のコンピュータに実行中の前記第２のアプリケーション・プログラムの識別子、ファイルの識別子および前記第２のアプリケーション・プログラムが作成したアプリケーション・ウインドウの表示状態を示しメイン・メモリにだけ存在する状態情報を含むアプリケーション情報を送るステップと、
前記アプリケーション情報に基づいて前記第１のコンピュータが前記第１のアプリケーション・プログラムを起動するステップと、
前記第１のコンピュータが前記状態情報を起動した前記第１のアプリケーション・プログラムに設定するステップと、
前記第２のコンピュータが前記第２のディスプレイから入力された第２の入力情報で前記第２のアプリケーション・プログラムを実行するステップと、
前記第２のコンピュータが前記第２の入力情報を前記第１のコンピュータに送るステップと、
前記第１のコンピュータが前記第２の入力情報に基づいて前記第１のアプリケーション・プログラムを実行するステップと
を有する制御方法。
【請求項１１】
前記第１のコンピュータが前記第１の入力デバイスが生成した第１の入力情報で前記第１のアプリケーション・プログラムを実行するステップと、
前記第１のコンピュータが前記第１の入力情報を前記第２のコンピュータに送るステップと、
前記第２のコンピュータが受け取った前記第１の入力情報に基づいて前記第２のアプリケーション・プログラムを実行するステップと
を有する請求項１０に記載の制御方法。
【請求項１２】
第１のディスプレイと第１の入力デバイスとを備え第１のアプリケーション・プログラムの実行が可能な第１のコンピュータと、第２のディスプレイと第２の入力デバイスとを備え前記第１のアプリケーション・プログラムと同一性のある第２のアプリケーション・プログラムの実行が可能な第２のコンピュータで構成されたコンピュータ・システムの制御方法であって、
前記第１のコンピュータと前記第２のコンピュータをデータ交換が可能なように接続するステップと、
前記第２のコンピュータが前記第２の入力デバイスが生成した第２の入力情報で前記第２のアプリケーション・プログラムを実行するステップと、
前記第２のコンピュータが前記第２の入力情報を前記第１のコンピュータに送るステップと、
前記第１のコンピュータが前記第２の入力情報に基づいて前記第１のアプリケーション・プログラムを実行するステップと、
前記第１のコンピュータが前記第１のアプリケーション・プログラムが作成した画像データを展開するために、前記第２のディスプレイの総画素数に一致する総画素数の仮想ディスプレイをメイン・メモリに作成するステップと、
を有する制御方法。
【請求項１３】
第１のディスプレイと第１の入力デバイスとを備え第１のアプリケーション・プログラムの実行が可能な第１のコンピュータと、第２のディスプレイと第２の入力デバイスとを備え前記第１のアプリケーション・プログラムと同一性のある第２のアプリケーション・プログラムの実行が可能な第２のコンピュータで構成されたコンピュータ・システムの制御方法であって、
前記第１のコンピュータと前記第２のコンピュータをデータ交換が可能なように接続するステップと、
前記第２のコンピュータが前記第２の入力デバイスが生成した第２の入力情報で前記第２のアプリケーション・プログラムを実行するステップと、
前記第２のコンピュータが前記第２の入力情報を前記第１のコンピュータに送るステップと、
前記第１のコンピュータが前記第２の入力情報に基づいて前記第１のアプリケーション・プログラムを実行するステップと、
前記第１のコンピュータが前記第１のアプリケーション・プログラムが作成した画像データを展開する仮想ディスプレイをメイン・メモリに作成するステップと、
前記第１のディスプレイに表示されているアプリケーション・ウインドウを前記仮想ディスプレイの中に移動させるステップと、
前記移動させるステップに応答して、前記第１のコンピュータが前記移動したアプリケーション・ウインドウのアプリケーション情報を前記第２のコンピュータに送るステップと、
前記第２のコンピュータが前記受け取ったアプリケーション情報に含まれる識別子で特定されるアプリケーション・プログラムと同一性のあるアプリケーション・プログラムを起動するステップと
を有する制御方法。
【請求項１４】
第２のディスプレイと第２の入力デバイスとを備え第２のアプリケーション・プログラムの実行が可能な第２のコンピュータとデータの交換が可能で、第１のディスプレイと第１の入力デバイスとを備え前記第２のアプリケーション・プログラムと同一性がある第１のアプリケーション・プログラムの実行が可能な第１のコンピュータに、
前記第２のコンピュータにおける前記第２のアプリケーション・プログラムの実行に応答して前記第１のアプリケーション・プログラムを起動するステップと、
前記第２のコンピュータから前記第２の入力デバイスが生成した前記第２のアプリケーション・プログラムに対する入力情報を受け取るステップと、
前記入力情報に基づいて前記第１のアプリケーション・プログラムを実行するステップと、
前記第１のアプリケーション・プログラムが作成した画像データを前記第１のディスプレイに表示しないで展開する仮想ディスプレイをメイン・メモリに作成するステップと
を有する処理を実行させるコンピュータ・プログラム。
【請求項１５】
第１のディスプレイとハードウェア・キーボートとを備え第１のアプリケーション・プログラムの実行が可能な第１のコンピュータとデータの交換が可能で、タッチ入力が可能な第２のディスプレイを備え前記第１のアプリケーション・プログラムと同一性のある第２のアプリケーション・プログラムの実行が可能な第２のコンピュータに、
前記第１のコンピュータと接続したことに応答して、接続時に動作している前記第２のアプリケーション・プログラムを連携動作の対象に選択するステップと、
前記第１のアプリケーション・プログラムと前記第２のアプリケーション・プログラムが接続前までそれぞれ作成していたファイルを同期するステップと、
前記第２のディスプレイから入力された第２の入力情報で前記第２のアプリケーション・プログラムを実行するステップと、
前記第１のコンピュータが前記第２の入力情報に基づいて前記第１のアプリケーション・プログラムを実行するために前記第２の入力情報を前記第１のコンピュータに送るステップと、
を有する処理を実行させるコンピュータ・プログラム。
【請求項１６】
請求項１４または請求項１５に記載されたコンピュータ・プログラムを格納した記憶媒体を有するコンピュータ。
【請求項１７】
第２のアプリケーション・プログラムの実行が可能なコンパニオン・コンピュータとデータの交換が可能で、前記第２のアプリケーション・プログラムと同一性のある第１のアプリケーション・プログラムの実行が可能なコンピュータであって、
ディスプレイと、
入力デバイスと、
前記コンパニオン・コンピュータとデータを交換するためのインターフェースと、
前記インターフェースを通じて前記コンパニオン・コンピュータが前記第２のアプリケーション・プログラムを実行するために生成した入力情報を受け取り、前記入力情報に基づいて前記第１のアプリケーション・プログラムを実行する第１の制御部と、
前記第１のアプリケーション・プログラムが作成した画像データを前記第１のディスプレイに表示しないで展開する仮想ディスプレイをメイン・メモリに作成する第２の制御部と
を有するコンピュータ。
【請求項１８】
第１のディスプレイとハードウェア・キーボートとを備え第１のアプリケーション・プログラムの実行が可能なコンパニオン・コンピュータとデータの交換が可能で、前記第１のアプリケーション・プログラムと同一性のある第２のアプリケーション・プログラムの実行が可能なコンピュータであって、
タッチ入力が可能なディスプレイと、
前記コンパニオン・コンピュータと接続したことに応答して、接続時に動作している前記第２のアプリケーション・プログラムを連携動作の対象に選択する第１の制御部と、
前記第１のアプリケーション・プログラムと前記第２のアプリケーション・プログラムが接続前までそれぞれ作成していたファイルを同期する第２の制御部と、
前記ディスプレイから入力された第２の入力情報で前記第２のアプリケーション・プログラムを実行する第３の制御部と、
前記コンパニオン・コンピュータが前記第２の入力情報に基づいて前記第１のアプリケーション・プログラムを実行するために前記第２の入力情報を前記コンパニオン・コンピュータに送る第４の制御部と
を有するコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコンピュータを連携動作させて同一内容のファイルを処理する技術に関し、さらには各コンピュータの入出力機能を相互補完しながら同一内容のファイルを処理する技術に関する。
【背景技術】
【０００２】
コンピュータの種類には、単体ではマウスやキーボードのようはハードウエアの入力デバイスを備えておらず、ディスプレイに指や電子ペンで入力するピュアタブレット型コンピュータ（以下、タブレットＰＣという。）がある。タブレットＰＣは、たとえばマイクロソフト社ではスレートＰＣと呼び、アップル社では商品名としてｉＰａｄ（登録商標）と呼んでいる。また、電話機能を備え入出力方法がタブレットＰＣに似た構造でタブレットＰＣより小型のスマートフォンといわれるコンピュータも普及している。
【０００３】
近年、ユーザがデスクトップ型パーソナル・コンピュータ（以下、デスクトップＰＣという。）またはノートブック型パーソナル・コンピュータ（以下、ノートＰＣという。）に加えて、タブレットＰＣまたはスマートフォンを保有することが一般的になりつつある。ユーザは、これらのコンピュータをその特徴によって使い分ける。たとえばユーザは、携帯性を重視する場合はスマートフォンを利用し、文書ファイルや画像などのコンテンツを閲覧するときにはタブレットＰＣを利用する。
【０００４】
またユーザはキーボードからの入力が多い場合にはノートＰＣを利用し、負荷の大きなプログラムを実行したり、拡大した画面表示が必要な場合はデスクトップＰＣを利用したりする。外出先では同時に複数のコンピュータを利用することは困難であるが、家庭やオフィスではこれらの複数のコンピュータが身近に存在する。ノートＰＣとデスクトップＰＣのグループとタブレットＰＣおよびスマートフォンのグループを比較したときには、前者のグループはキーボードおよびマウスを利用できるのでタブレットＰＣやスマートフォンに多量の入力作業をする場合にノートＰＣまたはデスクトップＰＣから入力ができれば都合がよい。
【０００５】
また、後者のグループは携帯に便利なため、プレゼンテーションの際にノートＰＣがプロジェクタに表示している画面を、スマートフォンを利用して遠隔から操作できれば都合がよい。また、後者のグループはマルチタッチや電子ペンで入力ができるため、アプリケーションによってはそのような入力を利用してノートＰＣでの処理ができれば都合がよい場合がある。したがって、ノートＰＣとタブレットＰＣまたはスマートフォンを接続して、相互に一方から他方を操作できると都合がよい。複数のコンピュータの間で入出力を共有する方法としてマイクロソフト社が提供するリモート・デスクトップという技術がある。リモート・デスクトップでは、ネットワークを介して別のコンピュータの画面を自分のコンピュータ上にそのまま表示して、自分のコンピュータを操作するようにリモートマシンを操作することができる。
【０００６】
また、タブレットＰＣのようにビデオ・ポートのないコンピュータをセカンダリ・ディスプレイとして利用してネットワークで接続されたプライマリ・ディスプレイのデスクトップを拡張するＭａｘｉＶｉｓｔａ（登録商標）という技術がある。マルチモニタ環境を実現するセカンダリ・ディスプレイに対する操作は、プライマリ・ディスプレイからだけ行われる。同様の技術には、ｉＰａｄ（登録商法）をセカンダリ・ディスプレイとして利用するｉＤｉｓｐｌａｙおよびＡｉｒ  Ｄｉｘｐｌａｙがある。
【０００７】
また、Ｗｉｎｄｏｗｓ（登録商標）には、複数のコンピュータ間で同じファイルを使用する場合にブリーフケースというフォルダに保管しておき、コンピュータをネットワーク経由または直接接続することでブリーフケースに保管されたファイルを比較して最新の状態に更新したり、ファイルの削除を反映したりする技術がある。さらにまた、ＭｏｂｉｌｅＭｅ（登録商標）またはＷｉｎｄｏｗｓ  Ｌｉｖｅ  Ｍｅｓｈといったようなネットワーク上のサーバに保管したファイルを複数のコンピュータ間で共有するソフトウエアも多数存在する。
【０００８】
特許文献１は、電子装置間でデータ同期を行う方法を開示する。特許文献２は、利用者が異なる場所で異なるコンピュータを使用しても、同じコンピュータ作業環境で仕事ができるようにする技術を開示する。利用者がコンピュータ環境携帯装置を異なるコンピュータに接続すると、コンピュータ環境ソフトウウエアが自動的にインストールされ、当該コンピュータの作業環境を変換することができる。ここに作業環境としては、電子メールの設定、ウェブブラウザのブックマーク、履歴、クッキー、デスクトップ、ショートカット、または作業関係のドキュメントおよびファイルなどの個人設定が例示されている。
【０００９】
特許文献３は、第１のデバイスと第２のデバイスの間でソフトウエア・プログラムを同期させる技術を開示する。同文献には、スクリーンサイズ、計算能力、オペレーティング・システム、無線アプリケーションパートユーザプロファイル作業部会による無線アプリケーションパートのバージョンなど、ユーザに依存しないようなデバイスの機能を同期させることや、電子カレンダー入力、アドレス帳入力、または電子メールのようなユーザデータを、複数デバイス間で同期させることが記載されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００５−３２２２５０号公報
【特許文献２】特開２００６−１４６９１２号公報
【特許文献３】特表２００８−５１０２０７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
これまでのネットワーク経由または直接接続でコンピュータの入出力を共有する技術では、コンテンツはいずれかのコンピュータでしか作成または処理されておらず、接続が解除されたときには、それまでの作業結果は１つのコンピュータにしか残らない。また、データの同期は、ディスク・ドライブに保存されたファイルの単位でしか行われず、メイン・メモリに展開された作業中のデータの同期は行われていない。さらに、複数のコンピュータでネットワーク上のファイルを共有する技術は、一方のコンピュータで他方のコンピュータのファイルを操作するものではない。
【００１２】
複数のコンピュータを接続して一方のコンピュータから他方のコンピュータのプログラムを実行するこれまでの方法は、一方のコンピュータは他方のコンピュータの入出力デバイスとして利用する範囲に留まっていた。しかし、複数のコンピュータを接続中および接続解除後にそれぞれ対等な関係で存在させておきたい場合がある。たとえば、ノートＰＣとタブレットＰＣを接続したときには、特徴があるそれぞれの入出力デバイスを相互補完するように利用しながら連携動作でファイルを処理する。そして、接続を解除したときにはそれまでに処理したファイルをノートＰＣおよびタブレットＰＣのいずれでも引き継いでそれぞれが単独で処理を進め、再接続したときにはいずれか一方の最新のファイルに基づいて再度連携した処理をすることができれば、コンピュータの利用効率と利便性を一層高めることができる。
【００１３】
そこで本発明の目的は、同一内容のコンテンツを複数のコンピュータにおいてそれぞれ同時に処理するコンピュータ・システムの制御方法を提供することにある。さらに本発明の目的は、いずれのコンピュータからの操作でもそれぞれのコンピュータで同一性のあるアプリケーションを同じように実行することができるコンピュータ・システムの制御方法を提供することにある。
【００１４】
さらに本発明の目的は、コンピュータの接続が解除された後において、接続解除前のコンテンツを継続しながらいずれのコンピュータでも単独動作で同一性のあるアプリケーションを実行することができるコンピュータ・システムの制御方法を提供することにある。さらに本発明の目的は、複数のコンピュータの入力デバイスの特徴を相互補完して操作することができるコンピュータ・システムの制御方法を提供することにある。さらに本発明の目的は、そのような制御方法を実現するコンピュータ・プログラムおよびコンピュータを提供することにある。
【課題を解決するための手段】
【００１５】
本発明は、複数のコンピュータにおいてそれぞれ同一性のあるプログラムの連携動作を可能にする制御方法を提供する。第１のコンピュータは、第１のディスプレイと第１の入力デバイスとを備え第１のアプリケーション・プログラムの実行が可能である。第２のコンピュータは、第２のディスプレイと第２の入力デバイスとを備え第１のアプリケーション・プログラムと同一性のある第２のアプリケーション・プログラムの実行が可能である。
【００１６】
第１のコンピュータと第２のコンピュータを、データ交換が可能なように接続する。接続前に第１のアプリケーション・プログラムと第２のアプリケーション・プログラムがそれぞれのコンピュータで実行されていてもよい。接続後に第２のコンピュータが第２の入力デバイスで生成した第２の入力情報で第２のアプリケーション・プログラムを実行する。第２のコンピュータは、第２のアプリケーション・プログラムを実行した第２の入力情報を第１のコンピュータに送る。第１のコンピュータは受け取った第２の入力情報に基づいて第１のアプリケーション・プログラムを実行する。
【００１７】
第１のアプリケーション・プログラムと第２のアプリケーション・プログラムには同一性があるため、第２の入力デバイスが生成した入力情報は、第２のコンピュータにおける第２のアプリケーション・プログラムを実行する入力情報になると同時に、第１のコンピュータにおける第１のアプリケーション・プログラムを実行する入力情報にもなる。第１のアプリケーション・プログラムが作成した画像データは、第１のディスプレイに表示しても表示しなくてもよい。
【００１８】
接続されている間は、２つのアプリケーション・プログラムはコマンド・ベースでリアルタイムに連携または同期して動作する。２つのアプリケーション・プログラムの実行状態は、それぞれのコンピュータのメイン・メモリに展開されるため、たとえ接続を解除してもいずれのコンピュータでも切断前の状態を引き継いで作業をすることができる。よって、接続中と切断後において第１のコンピュータと第２のコンピュータにシームレスな連携動作を実現することができる。
【００１９】
接続時に第２のコンピュータでは、第２のアプリケーション・プログラムが起動されている場合がある。この場合は接続に応答して、第２のコンピュータが第１のコンピュータに第２のアプリケーション・プログラムの識別子およびファイルの識別子を含むアプリケーション情報を送ることができる。第１のコンピュータでは、受け取ったアプリケーション情報に基づいて、第１のアプリケーション・プログラムを起動することができる。その結果、第１のコンピュータでは、第２のコンピュータで第２のアプリケーション・プログラムが実行していた作業を第１のアプリケーション・プログラムが同一内容のファイルを自らのディスク・ドライブから読み出して実行し、接続前と接続後においてシームレスな連携動作を実現することができる。
【００２０】
このときのアプリケーション情報に、第２のアプリケーション・プログラムが作成したアプリケーション・ウインドウの表示状態を示す状態情報を含むようにして、第１のコンピュータが状態情報を起動した前記第１のアプリケーション・プログラムに設定するようにすれば、接続直前の第２のディスプレイに表示されていたアプリケーション・ウインドウの画像と同じ内容の画像を、接続後に第１のディスプレイに表示することができる。第１のコンピュータは第１のアプリケーション・プログラムが作成した画像データを展開する仮想ディスプレイをメイン・メモリ上に作成することができる。仮想ディスプレイの総画素数は第２のディスプレイの総画素数に一致させることが望ましい。
【００２１】
仮想ディスプレイを作成することで、第１のコンピュータでは第１のディスプレイに物理的な画像を表示しないでも第１のアプリケーション・プログラムが作成した画像データを仮想ディスプレイに展開しながら第１のアプリケーション・プログラムを実行することができる。また、第１のコンピュータが仮想ディスプレイ表示ウインドウを第１のディスプレイに作成し、仮想ディスプレイの画像データを表示することができる。
【００２２】
仮想ディスプレイと第２のディスプレイの総画素数を一致させると、ＧＵＩを利用して入力する際に、第１の入力デバイスが仮想ディスプレイを指示する座標または第２の入力デバイスが第２のディスプレイを指示する座標を容易に対応させることができる。したがって、コマンド・ベースの連携動作の制御を簡単に行うことができる。さらに第２のコンピュータのデスクトップ上で実行している全てのアプリケーションを第１のコンピュータの仮想ディスプレイ上で実行させることで、仮想ディスプレイに第２のディスプレイのデスクトップを再現させることができる。このとき、連携動作によって、第２のディスプレイはあたかも第１のコンピュータの拡張ディスプレイであるかのようにふるまう。
【００２３】
その結果、ユーザは、仮想ディスプレイ表示ウインドウまたは第２のディスプレイをみながら第１の入力デバイスで入力操作をしながら、第１のアプリケーション・プログラムと第２のアプリケーション・プログラムを連携動作させることができる。第１のコンピュータにおいては、第１のディスプレイに表示されているアプリケーション・ウインドウをドラッグして仮想ディスプレイの中に移動させることができる。仮想ディスプレイ表示ウインドウを表示しない場合は、仮想ディスプレイに移動したアプリケーション・ウインドウは、第１のディスプレイから消える。
【００２４】
第１のコンピュータは、アプリケーション・ウインドウが仮想ディスプレイの中に移動したときに、連携動作の対象になったと認定して、移動したアプリケーション・ウインドウのアプリケーション情報を第２のコンピュータに送ることができる。そして、第２のコンピュータでは、受け取ったアプリケーション情報に対応するアプリケーション・プログラムを起動することができる。したがって、第１のコンピュータで通常動作しているアプリケーション・プログラムを連携動作させることができる。
【００２５】
第１のコンピュータは第１の入力デバイスで生成した第１の入力情報で第１のアプリケーション・プログラムを実行し、第１の入力情報を第２のコンピュータに送信することができる。第２のコンピュータでは、受け取った第１の入力情報に基づいて第２のアプリケーション・プログラムを実行することができる。その結果、第１の入力デバイスが生成した入力情報が、第１のコンピュータにおける第１のアプリケーション・プログラムを実行する入力情報になると同時に、第２のコンピュータにおける第２のアプリケーション・プログラムを実行する入力情報にもなる。
【００２６】
２つのコンピュータを接続したときに、第１のアプリケーション・プログラムが作成して第１のコンピュータが保存している第１のファイルと第２のアプリケーション・プログラムが作成して第２のコンピュータが保存している第２のファイルを同期することができる。そして、第１のアプリケーション・プログラムを実行する際に、第１のコンピュータが第１のアプリケーション・プログラムを実行して同期されたファイルを読み取ることができる。
【００２７】
あるいは第２のアプリケーション・プログラムを実行する際に、第２のコンピュータが第２のアプリケーション・プログラムを実行して同期されたファイルを読み取ることができる。よって、２つのコンピュータが切断されて単独状態で動作するときに、それまで連携動作して同一性が維持されていたファイルをそれぞれ更新しても、再接続時には最新のファイルに対して第１のアプリケーション・プログラムと第２のアプリケーション・プログラムが連携動作をすることができる。このようにして、接続前と接続後においてシームレスな連携動作を実現することができる。
【００２８】
本発明では、連携動作中に、第１のアプリケーション・プログラムと第２のアプリケーション・プログラムを第１の入力デバイスまたは第２の入力デバイスのいずれかが生成した入力情報で同時に実行することができるため、入力デバイスの特徴を相互補完して作業性を高めることができる。本発明は、第１のコンピュータがノートブック型パーソナル・コンピュータまたはデスクトップ型パーソナル・コンピュータで第２のコンピュータがタブレット型コンピュータまたはスマートフォンの場合に適用すると入力デバイスを相互補完的に利用できて効果的である。
【発明の効果】
【００２９】
本発明により、同一内容のコンテンツを複数のコンピュータにおいてそれぞれ同時に処理するコンピュータ・システムの制御方法を提供することができた。さらに本発明により、いずれのコンピュータからの操作でもそれぞれのコンピュータで同一性のあるアプリケーションを同じように実行することができるコンピュータ・システムの制御方法を提供することができた。
【００３０】
さらに本発明により、コンピュータの接続が解除された後において、接続解除前のコンテンツを継続しながらいずれのコンピュータでも単独動作で同一性のあるアプリケーションを実行することができるコンピュータ・システムの制御方法を提供することができた。さらに本発明により、複数のコンピュータの入力デバイスの特徴を相互補完して操作することができるコンピュータ・システムの制御方法を提供することができた。さらに本発明により、そのような制御方法を実現するコンピュータ・プログラムおよびコンピュータを提供することができた。
【図面の簡単な説明】
【００３１】
【図１】ノートＰＣ１０とタブレットＰＣ１００がネットワークで接続されている様子を示す図である。
【図２】ノートＰＣ１０およびタブレットＰＣ１００の主要なハードウエアの構成を示す機能ブロック図である。
【図３】ノートＰＣ１０に実装される主要なソフトウエアの構成を示す機能ブロック図である。
【図４】タブレットＰＣ１００に実装される主要なソフトウエアの構成を示す機能ブロック図である。
【図５】ノートＰＣ１０とタブレットＰＣ１００を接続したときのアプリケーションの連携動作の手順を示すフローチャートである。
【図６】ＬＣＤ１９のデスクトップ画面と仮想ディスプレイ５７の関係を示す図である。
【発明を実施するための形態】
【００３２】
［ハードウエアの構成］
図１は、ノートＰＣ１０とタブレットＰＣ１００がネットワークを経由して接続されている様子を示す。図２は、ノートＰＣ１０およびタブレットＰＣ１００の主要なハードウエアの構成を示す機能ブロック図である。図２（Ａ）に示したノートＰＣ１０では、バス２３にＣＰＵ１１の他に、メイン・メモリ１３、入力デバイス１５、ハードディスク・ドライブ（ＨＤＤ）１７、液晶ディスプレイ（ＬＣＤ）１９、ネットワーク・インターフェース・カード（ＮＩＣ）２１などが図示しないコントローラを経由して接続されている。図３に示すソフトウエアはＨＤＤ１７に格納され、メイン・メモリ１３にロードされてＣＰＵ１１により実行される。入力デバイス１５は、キーボードおよびマウスで構成されており、ユーザがアプリケーションを操作したりデータを入力したりするために使用される。
【００３３】
図２（Ｂ）に示したタブレットＰＣ１００ではノートＰＣ１０と同様に、バス１１３にＣＰＵ１０１の他に、メイン・メモリ１０３、入力デバイス１０５、ソリッド・ステート・ドライブ（ＳＳＤ）１０７、ＬＣＤ１０９、ＮＩＣ１１１などが図示しないコントローラを経由して接続されている。図４に示すソフトウエアはＳＳＤ１０７に格納され、メイン・メモリ１０３にロードされてＣＰＵ１０１により実行される。
【００３４】
タブレットＰＣ１００は、表示部を回転させてノートＰＣとタブレットＰＣのいずれかとして使用できるようにしたいわゆるコンバーチブル型とは違い、本体にはハードウエアで構成されたキーボードおよびマウスを備えず、入力デバイス１０５はタッチ・スクリーンおよびデジタイザまたはいずれかで構成されたピュアタブレット型といわれる種類に属する。なお、タブレットＰＣ１００はスマートフォンといわれる範疇のコンピュータであってもよい。また、ＬＣＤ１０９には、ソフトウエア・キーボードを表示することができる。
【００３５】
ＮＩＣ２１とＮＩＣ１１１は、ＬＡＮのインターフェースで構成することができる。ただし、本発明におけるＮＩＣ２１およびＮＩＣ１１１は、ノートＰＣ１０とタブレットＰＣ１００の間で双方向にアプリケーション情報および入力情報を転送するために利用するものであり、ブルートゥースに代表されるＰＡＮやＵＳＢなどの外部周辺装置とのインターフェースに置き換えることもできる。また、インターフェースの媒体は有線、無線または光のいずれでもよい。ノートＰＣ１０およびタブレットＰＣ１００のハードウエアの構成は周知であるため詳しい説明は省略する。
【００３６】
［ソフトウエアの構成］
図３はノートＰＣ１０に実装される主要なソフトウエアの構成を示す機能ブロック図である。図４はタブレットＰＣ１００に実装される主要なソフトウエアの構成を示す機能ブロック図である。文書アプリケーション５１、１５１は、ＯＳ５５、１５５のサービスを利用して文書を作成するための汎用的なプログラムである。文書アプリケーション５１、１５１は、ＬＣＤ１９、１０９のＧＵＩ（Graphical User Interface）を通じて入力デバイス１５、１０５が生成した入力情報に基づいて対話型処理を行うプログラムである。文書アプリケーション５１、１５１は、ノートＰＣ１０とタブレットＰＣ１００においてそれぞれ連携動作または同期動作をすることができる。
【００３７】
アプリケーションの連携動作とは、複数のコンピュータでそれぞれ実行されているアプリケーションがいずれかのコンピュータからの操作イベントを共通の操作イベントとして受け取り、各アプリケーションが同一内容のコンテンツを作成、編集、または閲覧している状態をいう。たとえば、アプリケーションが文書作成用のアプリケーションまたはプレゼンテーション用のアプリケーションの場合は、それぞれがいずれかのコンピュータが生成した操作イベントに同期して動作し、ノートＰＣ１０とタブレットＰＣ１００においてそれぞれ同一内容のファイルを作成、編集または表示しているような状態をいう。
【００３８】
また、アプリケーションがＷｅｂブラウザの場合は、いずれかのＷｅｂブラウザに対する操作に同期して動作して、ノートＰＣ１０とタブレットＰＣ１００においてそれぞれ同一のＵＲＬにアクセスして同一のコンテンツを閲覧しているような状態をいう。連携動作をしている間は各アプリケーションが処理しているコンテンツは各コンピュータのメイン・メモリに記憶されており、連携動作が解除されたときには各コンピュータのメイン・メモリに残る。また、各コンピュータが処理したコンテンツは、各コンピュータに保存することができる。
【００３９】
したがって、文書アプリケーション５１と文書アプリケーション１５１は機能およびバージョンが完全に同一であることが望ましいが、一定の同一性があれば本発明の適用が可能である。アプリケーション５１、１５１は、実用上の支障がない範囲で同一のコマンドをサポートし、アプリケーション・ウインドウの形状が実用上の支障がない範囲で類似し、かつ当該同一の操作コマンドに対する応答の差が実用上の支障がない範囲に収まる場合に同一性があるといえる。
【００４０】
したがって、アプリケーション・ウインドウのメニューバーやツールバーの言語だけが相違するような場合には同一性があるといえる。ただしアプリケーション５１、１５１に同一性があるためには、それぞれで作成したファイルは互換性がある必要がある。入力変換ドライバ６７、１６７の負担を軽くするために、ＯＳ５５とＯＳ１５５も完全に同一であることが望ましいが、一定の範囲で機能に同一性があれば本発明の適用が可能である。なお、本発明はタブレットＰＣ１００で動作している複数のアプリケーションを、ノートＰＣ１０で動作するそれぞれ同一性のある各アプリケーションと連携して動作させることもできる。
【００４１】
同期アプリケーション５２、１５２は、ノートＰＣ１０とタブレットＰＣ１００が接続されたときに連携動作の対象となる文書アプリケーション５１、１５１がそれぞれ作成した対応するファイルを同期させるプログラムである。連携動作の対象となるアプリケーションは、接続時にタブレットＰＣ１００で動作しているアプリケーションとそれと同一性のあるノートＰＣ１０に実装されたアプリケーションとすることができる。
【００４２】
さらに連携動作の対象となるアプリケーションは、接続後にタブレットＰＣ１００で実行されたアプリケーションとそれと同一性のあるノートＰＣ１０に実装されたアプリケーションとすることができる。さらに、連携動作の対象となるアプリケーションは、接続後にノートＰＣ１０で連携動作の対象として特定されたアプリケーションとそれと同一性のあるタブレットＰＣ１００に実装されたアプリケーションとすることができる。同期アプリケーション５２、１５２は、連携動作の対象となるアプリケーションがそれぞれ作成してＨＤＤ１７とＳＳＤ１０７に保存した同一名称のファイルを同期させて、いずれか一方の新しい更新日時のファイルで他方の古い更新日時のファイルを上書きする。
【００４３】
ウインドウ・アプリケーション５３は、ＯＳ５５のサービスを利用してＬＣＤ１９のデスクトップ画面に、仮想ディスプレイ５７の内容を表示する仮想ディスプレイ表示ウインドウ７１（図６参照）を作成するプログラムである。仮想ディスプレイ表示ウインドウ７１は、アプリケーション・ウインドウの１つで、ＬＣＤ１９のデスクトップ画面上でドラッグして移動したりサイズを変更したりすることができる。
【００４４】
連携制御ドライバ５６は、ノートＰＣ１０とタブレットＰＣ１００が接続されてＮＩＣドライバ６９からタブレットＰＣ１００で動作している文書アプリケーション１５１のアプリケーション情報を受け取ったときに、文書アプリケーション１５１と同一性のあるノートＰＣ１０の文書アプリケーション５１を連携動作の対象として選択する。アプリケーション情報は、文書アプリケーション１５１の名称、文書アプリケーション１５１がＳＳＤ１０７から読み出して現在編集しているファイルの名称、および文書アプリケーション１５１の状態情報を含む。
【００４５】
状態情報は、デスクトップ上の順序を含むアプリケーション・ウインドウの表示位置、大きさ、表示しているページ情報などのアプリケーション・ウインドウの表示状態を示す情報である。状態情報はメイン・メモリにだけ存在し、メイン・メモリの電源が喪失したときにコンピュータから消失する情報を含む。文書アプリケーション５１、１５１が連携動作をしている間は、ノートＰＣ１０とタブレットＰＣ１００における対応する状態情報は同じ内容になる。連携制御ドライバ５６は、ノートＰＣ１０で実行されているアプリケーションが、図６で説明する仮想ディスプレイ５７の中に入ったときに当該アプリケーションを連携対象として指定する。
【００４６】
連携制御ドライバ５６は、接続前にノートＰＣ１０で実行されていたアプリケーションを連携対象として特定したときに、当該アプリケーションのアプリケーション情報をタブレットＰＣ１００に送る。連携制御ドライバ５６は、ノートＰＣ１０で連携動作をしないで通常動作をしていたアプリケーションのアプリケーション・ウインドウがドラッグにより仮想ディスプレイ５７の中に移動したときに、当該アプリケーションを連携動作の対象として特定することができる。連携制御ドライバ５６は、入力デバイス１５から仮想ディスプレイ領域内で入力操作があったときに、当該入力情報をＯＳ５５に送るのと同時にタブレットＰＣ１００にも送る。
【００４７】
連携制御ドライバ５６により、ＯＳ５５および文書アプリケーション５１に修正を加えないでも、ノートＰＣ１０において通常動作のアプリケーションと連携動作のアプリケーションを共存させて実行することができる。なお本実施の形態では、タブレットＰＣ１００では、同時に実行されるアプリケーションをすべて連携動作の対象にするので連携制御ドライバは存在しない。ただし、タブレットＰＣ１００でも連携制御ドライバを実装して、連携動作のアプリケーションと通常動作のアプリケーションを併存させてもよい。
【００４８】
仮想ディスプレイ・ドライバ５９は、連携動作をしている文書アプリケーション５１が作成した描画命令から、メイン・メモリ１３に画像データを作成するプログラムである。この画像データを記憶するメイン・メモリ１３に確保された記憶領域を仮想ディスプレイ５７という。ＯＳ５５は、ＧＵＩを利用して操作するアプリケーションに対して論理的な表示領域を提供できない場合は当該アプリケーションを実行できない。ＯＳ５５は、文書アプリケーション５１の描画命令を処理する内部関数を実行した結果を仮想ディスプレイ・ドライバ５９に送り、成功すると文書アプリケーション５１に戻り値を返す。
【００４９】
仮想ディスプレイ５７はそれ自体では物理的な表示を行わずビットマップ形式の画像データを記憶するだけである。このように文書アプリケーション５１は、ＬＣＤ１９に物理的な表示をしないでも仮想ディスプレイ５７を利用してＯＳ５５に画像を表示していると認識させながら動作をすることができる。
【００５０】
図６は、ＬＣＤ１９のデスクトップ画面と仮想ディスプレイ５７の関係を示す図である。仮想ディスプレイ５７が保有する画像データは、ＬＣＤ１９のデスクトップ画面２０に隣接してその外側に位置するようにメイン・メモリ１３上に記憶されている。仮想ディスプレイ５７は、外見上はＬＣＤ１９のデスクトップ画面２０を拡張するデュアル・ディスプレイに相当するが、物理的な表示はしない。ただし、仮想ディスプレイ表示ウインドウ７１を利用することで仮想ディスプレイ５７の画像データをデスクトップ画面２０上に表示することができる。
【００５１】
仮想ディスプレイ５７は、ＬＣＤ１０９のデスクトップ画面と縦横の総画素数および色彩階調が同じになるように作成するとＧＵＩを利用して連携動作のための入力操作をする際にユーザに違和感を生じさせない。ウインドウ・アプリケーション５３は、仮想ディスプレイ５７の画像データを仮想ディスプレイ表示ウインドウ７１に取り込むことによりデスクトップ画面２０上で表示する。仮想ディスプレイ表示ウインドウ７１は、ＬＣＤ１０９のデスクトップ画面をノートＰＣ１０のデスクトップ画面２０上にリアルタイムで再現することができる。
【００５２】
そして、入力デバイス１５で指示した仮想ディスプレイ５７における座標はＬＣＤ１０９の座標と１対１に対応するため、入力デバイス１５が指示するときに生成した入力情報をタブレットＰＣ１００に送れば、タブレットＰＣ１００ではそれを対応する座標への指示とすることができる。仮想ディスプレイ５７は、ＬＣＤ１０９の画面の表示方向を変化させたときにそれに応じて同様に変化する。仮想ディスプレイ５７に表示されるアプリケーション・ウインドウの表示位置および表示内容はＬＣＤ１０９の表示位置および表示内容と連動して同じように変化する。仮想ディスプレイ表示ウインドウ７１も仮想ディスプレイ５７の変化に応じてそのサイズを変更してもよい。
【００５３】
図６（Ａ）は、ＬＣＤ１９のデスクトップ画面２０に通常動作をしているアプリケーションが作成したアプリケーション・ウインドウ７３が表示され、デスクトップ画面２０に隣接する位置に仮想ディスプレイ５７が作成されている様子を示している。図６（Ｂ）は、仮想ディスプレイ５７に連携動作をしている文書アプリケーション５１が作成したアプリケーション・ウインドウ７７が作成されている。このとき、ウインドウ・アプリケーション５３が作成した仮想ディスプレイ表示ウインドウ７１には、アプリケーション・ウインドウ７７に対応する画像イメージ７５が表示されている。
【００５４】
図６（Ｃ）は、デスクトップ画面２０に表示されていたアプリケーション・ウインドウ７３が入力デバイス１５でドラッグされてＬＣＤ１９の右端に移動し、その一部がデスクトップ画面２０から消えている様子を示している。仮想ディスプレイ・ドライバ５９は、アプリケーション・ウインドウ７３の一部が仮想ディスプレイ５７の中に入ったことを検出したときに、アプリケーション・ウインドウ７３を作成したアプリケーションが、連携動作の対象になったことを連携制御ドライバ５６に通知する。
【００５５】
通知を受け取った連携制御ドライバ５６は、当該アプリケーションを連携動作の対象としてタブレットＰＣ１００に通知する。タブレットＰＣ１００は、当該アプリケーションと同一性のあるアプリケーションを起動し、仮想ディスプレイ５７内でのアプリケーション・ウインドウ７３と対応するＬＣＤ１０９上の位置にウインドウを開く。図６（Ｄ）は、アプリケーション・ウインドウ７３の全体が仮想ディスプレイ５７の中に移動して、画像イメージ８１としてメイン・メモリ１３に記憶されている様子を示している。
【００５６】
ディスプレイ・ドライバ６１、１６１は、ＬＣＤ１９、１０９に接続されたビデオ・カード（図示せず。）の設定および制御とビデオ・カードとＯＳ５５、１５５との間でのデータ転送を制御するプログラムである。入力ドライバ６３、１６３は、入力デバイス１５、１０５に接続されたコントローラ（図示せず。）の設定および制御とコントローラとＯＳ５５、１５５との間のデータ転送を制御するプログラムである。入力変換ドライバ６７は、ＮＩＣドライバ６９から受け取ったタブレットＰＣ１００における文書アプリケーション１５１に対する入力情報をノートＰＣ１０における文書アプリケーション５１に対する入力情報に変換するプログラムである。
【００５７】
入力変換ドライバ６７は、たとえば、タブレットＰＣ１００において入力デバイス１０５が生成した、ＳＳＤ１０７に保存されている文書アプリケーション１５１を起動する入力情報を、ノートＰＣ１０においてＨＤＤ１７に保存されている文書アプリケーション５１を起動する入力情報に変換する。入力変換ドライバ６７は入力デバイス１０５が生成した、文書アプリケーション１５１がＳＳＤ１０７からファイルを読み出す入力情報または編集中のファイルをＳＳＤ１０７に保存する入力情報を、文書アプリケーション５１がＨＤＤ１７から読み出す入力情報またはＨＤＤ１７に保存する入力情報に変換する。
【００５８】
入力変換ドライバ１６７は、ＮＩＣドライバ１６９から受け取ったノートＰＣ１０において入力デバイス１５が生成した文書アプリケーション５１に対する入力情報をタブレットＰＣ１００における文書アプリケーション１５３に対する入力情報に変換するプログラムである。ＮＩＣドライバ６９、１６９は、ＮＩＣ２１、１１１の設定および制御とＮＩＣ２１、１１１とＯＳ５５、１５５との間のデータ転送を制御するプログラムである。
【００５９】
［連携動作の手順］
つぎに、ノートＰＣ１０とタブレットＰＣ１００を接続してアプリケーションが連携動作をする手順を、図５のフローチャートに基づいて説明する。ブロック２０１から２２５まではノートＰＣ１０における手順を示し、ブロック３０１からブロック３２３まではタブレットＰＣ１００における手順を示す。ブロック２０１、３０１では、ノートＰＣ１０とタブレットＰＣ１００がシームレスな連携動作をするための準備をする。
【００６０】
シームレスな連携動作とは、両者が接続されたときにそれぞれにおいて同一性のあるアプリケーションが操作コマンド・ベースで同期して実行されることを意味する。具体的には、両者が接続されたときは、それぞれにおいて同一性のあるアプリケーションを実行して一方のアプリケーションに対する入力イベントが他方のアプリケーションに対する入力イベントとしても使用され、他方のアプリケーションに対する入力イベントが一方のアプリケーションに対する入力イベントとしても使用されることを意味する。
【００６１】
さらにシームレスな連携動作とは、接続時にいずれか一方に保存されている最新のファイルに対して双方のアプリケーションを実行できることを意味する。さらにシームレスな連携動作とは、両者の接続が解除されたときに解除前のコンテンツおよびアプリケーションの実行状態を引き継いで、それぞれのコンピュータの単独動作で同一性のあるアプリケーションを実行できることを意味する。
【００６２】
ＨＤＤ１７には、ノートＰＣ１０が文書アプリケーション５１を実行して作成したファイルが保存されている。ＳＳＤ１０７には、タブレットＰＣ１００が文書アプリケーション１５１を実行して作成したファイルが保存されている。ＨＤＤ１７のファイルとＳＳＤ１７のファイルは、更新日時が必ずしも一致しない。ブロック２０３では、ノートＰＣ１０においてユーザが文書アプリケーション５１を実行してＨＤＤ１７から読み出したファイルの編集を行っている。ファイルは、以前にノートＰＣ１０とタブレットＰＣ１００を接続して文書アプリケーション５１、１５１が連携動作をしている間に作成したものでもよいし、通常動作だけで作成したものでもよい。
【００６３】
ノートＰＣ１０が単独で動作して文書アプリケーション５１を実行しているときは、文書アプリケーション５１は連携動作をしておらず、そのアプリケーション・ウインドウは、図６（Ａ）のアプリケーション・ウインドウ７３のようにデスクトップ画面２０に表示される。この時点では、ノートＰＣ１０では、仮想ディスプレイ５７は作成されておらず仮想ディスプレイ表示ウインドウ７１も表示されていない。
【００６４】
ブロック３０３では、タブレットＰＣ１００においてユーザが、入力デバイス１０５を操作して文書アプリケーション１５１を実行し、ＳＳＤ１０７から読み出したファイルの編集または新規のファイルの作成を行っている。メイン・メモリ１０３には、文書アプリケーション１５１のプログラム、文書アプリケーション１５１が作成しているファイルおよび文書アプリケーション１５１のアプリケーション情報が記憶されている。ブロック２０５、３０５では、ネットワークを通じてＮＩＣ２１とＮＩＣ１１１が接続される。
【００６５】
ノートＰＣ１０への接続を検知したＮＩＣドライバ１６９は同期アプリケーション１５２に接続を通知する。ブロック２０７、３０７では、同期アプリケーション１５２がイニシエータとなって同期アプリケーション５２との間で連携動作の対象となるアプリケーションが作成したファイルを同期する。前述のように現在タブレットＰＣ１００で実行されているアプリケーションとノートＰＣ１０に実装された同一性のあるアプリケーションは、連携動作の対象となる。ノートＰＣ１０に実装されたアプリケーションは接続の直前には実行されていなくてもよい。同期アプリケーション１５２は、現在タブレットＰＣ１００で実行されているすべてのアプリケーションが作成または編集しているファイルを一旦ＳＳＤ１０７に保存する。
【００６６】
同期アプリケーション１５２は、タブレットＰＣ１００で現在動作している文書アプリケーション１５１の名称、当該アプリケーションが作成してＳＳＤ１０７に保存したすべてのファイルの名称および当該ファイルの更新日時を含む更新リストＡをノートＰＣ１０に送る。更新リストＡを受け取った同期アプリケーション５２は、現在文書アプリケーション５１が作成または編集しているファイルが更新リストＡのファイル名称と同じであれば、文書アプリケーション５１に指示して一旦当該ファイルをＨＤＤ１７に保存させる。
【００６７】
つづいて、同期アプリケーション５２はＨＤＤ１７に保存されているファイルと更新リストＡのファイルを比較し、更新リストＡの方が新しいファイルの名称および更新リストＡに記述されているがＨＤＤ１７に保存されていないファイルの名称を記述した更新リストＢをタブレットＰＣ１００に送ってそれらのファイルを送信するように要求する。さらに、同期アプリケーション５２は、更新リストＡに含まれる名称のファイルより新しいファイルおよび更新リストにないファイルをＨＤＤ１７から読み出してタブレットＰＣ１００に送る。
【００６８】
同期アプリケーション１５２は、ノートＰＣ１０から受け取ったファイルがＳＳＤ１０７に保存されているファイルより新しいことを確認して、ＳＳＤ１０７のファイルを更新する。さらに、同期アプリケーション１５２は更新リストＢに記述されたファイルをノートＰＣ１０に送る。ファイルを受け取った同期アプリケーション５２は受け取ったファイルでＨＤＤ１７のファイルを更新する。その結果、ＨＤＤ１７とＳＳＤ１０７では、タブレットＰＣ１００で現在動作しているすべてのアプリケーションが作成したファイルが同期され、双方が最新のファイルを保存する状態となる。
【００６９】
この同期処理の中で、文書アプリケーション５１、１５１を設定する設定情報を格納するレジストリまたはＩＮＩファイルを併せて同期させてもよい。この場合は文書アプリケーション５１の設定を優先させて、文書アプリケーション５１の設定情報で文書アプリケーション１５１の設定情報を上書きすることができる。なお、同期対象とするファイルは、ＳＳＤ１０７に保存されているすべてのファイルであってもよいし、現在タブレットＰＣ１００で動作しているアプリケーションが作成または編集しているファイルだけであってもよい。また、同期対象とするファイルは、ノートＰＣ１０に存在するファイルを基準にして決定してもよい。
【００７０】
ブロック３０９では、タブレットＰＣ１００の転送アプリケーション１５３が連携動作の対象となる実行中のアプリケーションのアプリケーション情報とＬＣＤ１０９の画像情報をノートＰＣ１０に転送する。画像情報は、ＬＣＤ１０９の総画素数および色彩階調などの表示するコンテンツとは無関係なディスプレイの基本的な情報を含む。総画素数は、ＬＣＤ１０９の縦と横のそれぞれの最大画素数である。
ブロック２０９では、アプリケーション情報を受け取った連携制御ドライバ５６は、文書アプリケーション１５１のアプリケーション情報に基づいて同一性のある文書アプリケーション５１を連携動作の対象として選択する。連携制御ドライバ５６は、ＬＣＤ１０９の画像情報を仮想ディスプレイ・ドライバ５９に送り、総画素数がＬＣＤ１０９に一致する仮想ディスプレイ５７を作成する。
【００７１】
つづいてブロック２１１で連携制御ドライバ５６は、文書アプリケーション５１を起動してアプリケーション情報に含まれているファイル名のファイルをＨＤＤ１７から読み出し、アプリケーション・ウインドウ７７を仮想ディスプレイ５７上のＬＣＤ１０９に対応する位置に作成する。連携制御ドライバ５６は、文書アプリケーション１５１のアプリケーション情報に含まれる状態情報をメイン・メモリ１３に確保された文書アプリケーション５１の作業領域に書き込んで文書アプリケーション５１と文書アプリケーション１５１のアプリケーション・ウインドウを同じ表示状態にする。
【００７２】
このとき、それまで通常動作をしていた文書アプリケーション５１が編集しているファイルと、これから連携動作する文書アプリケーション５１が同一名称のファイルを処理することになる場合は、連携制御ドライバ５６は重複して同一ファイルが読み取られることを防止するために、ＬＣＤ１９にプロンプトを表示してユーザに現在読み出しているファイルを終了するように要求することができる。タブレットＰＣ１００のデスクトップ上で動作している全てのアプリケーションについて上記の操作を繰り返すことで、仮想ディスプレイ５７には実質的にタブレットＰＣ１００のデスクトップ画面が再現される。
【００７３】
なお、アプリケーションの起動とは、メイン・メモリ１３、１０３に確保された所定の領域にＨＤＤ１７またはＳＤＤ１０７からアプリケーションをロードすることをいう。ただし、アプリケーションは当該コンピュータに保存されている必要はなく、実行時に他のコンピュータからロードすることでもよい。アプリケーションの実行とはメイン・メモリ１３、１０３にロードされたアプリケーションが所定のファイルに対して、入力デバイス１５、１０５から受け取った入力情報に基づく処理をすることをいう。
【００７４】
したがって本明細書においては、ローカル・コンピュータからリモート・コンピュータに入力情報を送り、リモート・コンピュータのＣＰＵとメイン・メモリで実行するアプリケーションに指示し、当該アプリケーションが作成した画像データをローカル・コンピュータに表示するような実行形態は、ローカル・コンピュータによるアプリケーションの実行とはいわない。
【００７５】
文書アプリケーション５１が同時に複数のプロセスで起動できる場合は、連携制御ドライバ５６はＨＤＤ１７からアプリケーション情報に含まれるファイルを読み出す。この場合は、ノートＰＣ１０が単独動作のときに実行されていた文書アプリケーション５１は、連携動作の対象以外のファイルをＨＤＤ１７から読み出して編集したり新たなファイルを作成したりすることができる。文書アプリケーション５１が同時に１つしか実行できない場合は、それまで動作していた文書アプリケーション５１を閉じる必要がある。
【００７６】
仮想ディスプレイ５７とＬＣＤ１０９は総画素数が一致するため、入力デバイス１５が所定のコンテンツを対象にして仮想ディスプレイ５７を指示した座標は、ＬＣＤ１０５の対応するコンテンツの座標に対応する。連携制御ドライバ５６は、仮想ディスプレイ５７が生成されたことをウインドウ・アプリケーション５３に通知する。ウインドウ・アプリケーション５３は、デスクトップ画面２０上に仮想ディスプレイ５７の画像データを表示するために仮想ディスプレイ表示ウインドウ７１を表示する。
【００７７】
ブロック２１３では、キーボードまたはマウスなどの入力デバイス１５から文書アプリケーション５１に対して入力情報が入力される。入力情報は、文書アプリケーション５１に対する入力データおよび文書アプリケーション５１の操作または設定のコマンドで構成される。ＬＣＤ１０９と仮想ディスプレイでは、連携動作をしている間にそれぞれのデスクトップ画面においてフォアグラウンドのアプリケーション・ウインドウが一致するように制御される。
【００７８】
文書アプリケーション５１がフォアグラウンドのときに、入力デバイス１５から入力された入力情報は、ＯＳ５５が文書アプリケーション５１に送る。文書アプリケーション５１は入力情報に基づいて実行を進め、描画命令を生成してＯＳ５５に送る。ＯＳ５５は、受け取った描画命令を内部関数で処理した結果を座標位置に応じてディスプレイ・ドライバ６１または仮想ディスプレイ・ドライバ５９に送る。すなわち、文書アプリケーション５１は、通常動作と同じように入力情報に基づいて動作して描画命令をＯＳ５５に送るだけでよく、本発明を適用するために文書アプリケーション５１およびＯＳ５５を修正する必要はない。
【００７９】
仮想ディスプレイ・ドライバ５９は受け取った描画命令に基づいて画像データを生成し、仮想ディスプレイ５７の画像データを更新する。ウインドウ・アプリケーション５３は、常に更新された仮想ディスプレイ５７の画像データを仮想ディスプレイ表示ウインドウ７１の中に表示する。ブロック２１５では、連携制御ドライバ５６はブロック２１３で入力デバイス１５から仮想ディスプレイ内の座標に対して入力された入力情報を、ＬＣＤ１０９上の対応する座標に変換してタブレットＰＣ１００に送る。
【００８０】
タブレットＰＣ１００においては、ブロック３１１でノートＰＣ１０から受け取った入力情報を入力変換ドライバ１６７が、文書アプリケーション１５１に対する入力情報に変換してＯＳ１５５に渡し、ＯＳ１５５は文書アプリケーション１５１に渡す。文書アプリケーション１５１は、ノートＰＣ１０において、文書アプリケーション５１に対して行われた入力情報に基づいて動作する。
【００８１】
ブロック３１３では、ＬＣＤ１０９をＧＵＩとしてタッチ・スクリーンまたはデジタイザなどの入力デバイス１０５から文書アプリケーション１５１に対して入力情報が入力される。ＯＳ１５５は、ＬＣＤ１０９の中に表示されたフォアグラウンドのアプリケーション・ウインドウに対して入力情報を送る。文書アプリケーション１５１は、入力情報を実行して、ＬＣＤ１０９に表示されたアプリケーション・ウインドウを更新する。ブロック３１５では、入力ドライバ１６３はブロック３１３で生成された入力情報をノートＰＣ１０に送る。
【００８２】
ブロック２１７では、タブレットＰＣ１００から受け取った入力情報を入力変換ドライバ６７が、文書アプリケーション５１に対する入力情報に変換して連携制御ドライバ５６に送る。連携制御ドライバ５６は変換された入力情報をＯＳ５５に送る、ＯＳ５５はフォアグラウンドの文書アプリケーション５１に送る。文書アプリケーション５１は、タブレットＰＣ１００において文書アプリケーション１５１に対して行われた入力情報に基づいて動作し、ブロック２１１と同様にして仮想ディスプレイ５７および仮想ディスプレイ表示ウインドウ７１を更新する。
【００８３】
ブロック３１７では、タブレットＰＣ１００において新たなアプリケーションが起動される。つづいて必要な場合には、新たに起動したアプリケーションに関するブロック３０７で説明したファイルの同期が行われ、ブロック３０９で説明したノートＰＣ１０に対するアプリケーション情報の送信が行われる。ノートＰＣ１０においては、ブロック２０９、２１１で説明したのと同様の手順で、同一性のある新たなアプリケーションを起動し、仮想ディスプレイ５７の画像データおよび仮想ディスプレイ表示ウインドウ７１の表示を更新する。新たに起動されたアプリケーションには、アプリケーション情報に含まれている状態情報が設定される。
【００８４】
ブロック２１９では、図６（Ｃ）、（Ｄ）に示したように、通常動作している他のアプリケーションによりノートＰＣ１０のデスクトップ画面２０上に表示されているアプリケーション・ウインドウ７３が、仮想ディスプレイ５７の領域にドラッグされる。連携制御ドライバ５６は、移動するアプリケーション・ウインドウの一部が仮想ディスプレイ５７の領域まで移動したときに、仮想ディスプレイ・ドライバ５９から通知を受けて当該アプリケーションを連携動作の対象と特定する。
【００８５】
さらに、連携制御ドライバ５６は、新たに連携動作の対象として特定したアプリケーションのアプリケーション情報をタブレットＰＣ１００に送る。タブレットＰＣ１００では、ブロック２０９でノートＰＣ１０が文書アプリケーション５１を実行したようにアプリケーション情報に含まれる名称のアプリケーションと同一性のある新たなアプリケーションが実行される。新たに実行されたアプリケーションには、アプリケーション情報に含まれている状態情報が設定される。
【００８６】
以後、ノートＰＣとタブレットＰＣ１００では、一方の入力デバイスからの入力情報で、双方の同一性のあるアプリケーションを同時に操作することで双方のアプリケーションが連携して動作する。アプリケーションが連携動作をしている間は、ＬＣＤ１０９の画面の表示方向と仮想ディスプレイの表示方向は一致する。ＯＳ１５５は、ＬＣＤ１０９の本体が縦方向から横方向に姿勢を変えてデスクトップ画面の方向を変えると連携制御ドライバ５６に通知する。
【００８７】
連携制御ドライバ５６は仮想ディスプレイ５７がこの方向に対応するようにＯＳ５５および仮想ディスプレイ・ドライバ５９に通知し、解像度を変化させる。また、ＬＣＤ１０９と仮想ディスプレイ５７上で各アプリケーションのウインドウ位置がずれている場合にはこれをＬＣＤ１０９上での位置に合わせる。ウインドウ・アプリケーション５３もこの変化に連動して仮想ディスプレイ表示ウインドウ７１のサイズを変化させてもよい。
【００８８】
ブロック２２１、３１９では、ノートＰＣ１０とタブレットＰＣ１００の接続が解除される。接続を解除するに当たっては、連携動作の対象となっているアプリケーションに対する特別な操作をする必要はない。ブロック２２３では、ＮＩＣドライバ６９からネットワーク接続が解除されたことの通知を受けた連携制御ドライバ５６は、連携動作をしていた文書アプリケーション５１の登録を消去し、仮想ディスプレイ・ドライバ５９とウインドウ・アプリケーション５３に通知する。
【００８９】
通知を受けた仮想ディスプレイ・ドライバ５９は、仮想ディスプレイ５７をメイン・メモリ１３から解放する。また、通知を受けたウインドウ・アプリケーション５３は、タブレット・ウインドウ７１を閉じる。切断した時点では文書アプリケーション５１１５１のプログラム、作業中のファイルおよびアプリケーションの状態情報はメイン・メモリ１３、１０３に残っている。このとき作業中のファイルおよび状態情報は同一性が維持されている。
【００９０】
単独動作に以降したノートＰＣ１０においては、連携動作の対象から解放された文書アプリケーション５１は通常動作をする。文書アプリケーション５１が作成した描画命令は、ディスプレイ・ドライバ６１に送られてアプリケーション・ウインドウがデスクトップ画面の上に表示される。ブロック３２１においてもタブレットＰＣ１００は同様に通常動作をする。タブレットＰＣ１００では、切断の前後でＬＣＤ１０９の画像に変化はない。ブロック２２５では文書アプリケーション５１が通常動作で作成したファイルがＨＤＤ１７に保存され、ブロック３２３では文書アプリケーション１５１が通常動作で作成したファイルがＳＳＤ１０７に保存される。図５のフローチャートは、連携動作をするための典型的な手順を示したものであり、実行の順序はここに示したものに限定されるものではない。
【００９１】
連携動作の対象となるアプリケーションが、ファイルを作成しないＷｅｂブラウザまたは音楽や映像をストリーミングで再生するアプリケーションの場合は、実行中にＵＲＬを交換して連携動作をさせることができる。また、ノートＰＣ１０では、仮想ディスプレイ表示ウインドウ７１を表示する例を説明したが、仮想ディスプレイ５７の画像とＬＣＤ１０９の画像は同一内容なので、仮想ディスプレイ表示ウインドウ７１は必ずしも表示する必要はない。
【００９２】
この場合、ユーザはＬＣＤ１０９をみながらアプリケーションを実行することができる。ただし、ＬＣＤ１９にＬＣＤ１０９の画像データを一切表示しない場合であっても、ＯＳ５５に描画命令を実行してＬＣＤ１９に画像を表示していると認識させながら文書アプリケーション５１を実行する必要があるので、メイン・メモリ１３に仮想ディスプレイ５７を作成するなどして、ＯＳ５５に画像命令を処理していることを認識させる必要がある。
【００９３】
仮想ディスプレイ５７は、ＬＣＤ１０９のデスクトップ画面と同一の画面を表示することができるので、ＬＣＤ１０９に表示されている複数のアプリケーションの連携動作には都合がよい。しかし、単一のアプリケーションを連携動作させるだけであれば、仮想ディスプレイ５７を利用しないで、実際のアプリケーション・ウインドウをＬＣＤ１９に表示させて行うことも可能である。たとえば、連携動作の対象となるアプリケーション・ウインドウのサイズおよび表示方向を、ノートＰＣ１０とタブレットＰＣ１００において完全に同期させることで連携動作のための操作をし易くすることができる。
【００９４】
また、ノートＰＣ１０とタブレットＰＣ１００を、クレードルを使用したりしてディスプレイ・ポート（DisplayPort）などのインターフェースで直接接続することができるような場合は、仮想ディスプレイ５９の画像データをネットワークではなくディスプレイ・ポートを利用してＬＣＤ１０９に送ることもできる。この場合、タブレットＰＣ１００では、ノートＰＣ１０に接続されたときにＬＣＤ１０９とビデオ・カードとの接続を、ディスプレイ・ポートに切り換えることになる。また、連携動作するアプリケーションは、３台以上のコンピュータにおいてそれぞれ実行されていてもよい。
【００９５】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
【符号の説明】
【００９６】
２０…デスクトップ画面
５７…仮想ディスプレイ
７１…タブレット・ウインドウ
７３、７５…アプリケーション・ウインドウ
７７、８１…仮想ディスプレイ内の画像イメージ
【図１】
0005345998.tif 000002
【図２】
0005345998.tif 000003
【図３】
0005345998.tif 000004
【図４】
0005345998.tif 000005
【図５】
0005345998.tif 000006
【図６】
0005345998.tif 000007