(58)【調査した分野】(Int.Cl.,DB名)
自装置におけるドライバの設定時またはドライバの設定変更時に、前記自装置を識別する情報と、前記自装置上のドライバに含まれ、当該ドライバにより制御される他の機器の固有の情報と、を対応づけて前記他の機器の記憶部に記憶させる記憶制御部と、
クラウドシステム上に仮想的に構築される仮想的な機器が前記ドライバを実行する際に、前記記憶部から前記他の機器の固有の情報を抽出し、前記仮想的な機器上のドライバに設定する設定部と、
を備える情報処理装置。
前記記憶制御部は、前記自装置における前記ドライバの設定時またはドライバの設定変更時に、前記ドライバの一部に前記自装置を識別する情報を組み入れて、前記記憶部に記憶させることを特徴とする請求項1に記載の情報処理装置。
前記記憶制御部は、前記自装置のGUID(Globally Unique Identifier)およびUUID(Universally Unique Identifier)のいずれか一方と、プリンタドライバのDEVMODE構造体の拡張部と、を対応づけて前記記憶部に記憶させることを特徴とする請求項1または2に記載の情報処理装置。
【発明を実施するための形態】
【0012】
まず、実施形態の説明の前に前提として、印刷処理の流れとプリンタドライバに設定される情報の例について説明する。以下の例ではWindows(登録商標)オペレーティングシステム(OS)を用いた印刷処理について説明する。
【0013】
(印刷処理の流れの一例)
図13は、Windowsアプリケーションインタフェース(API)を用いた印刷処理の流れの一例について説明するための図である。情報処理装置をプリンタに接続して印刷処理を実行する場合、まず情報処理装置にプリンタドライバをインストールする。ドライバとは、プリンタやディスプレイ等の周辺機器を制御してアプリケーションソフトウェアに対して抽象化したインタフェースを提供するためのソフトウェアである。プリンタドライバに含まれる情報によってプリンタの印刷処理設定が制御される。たとえば、プリンタドライバは、印刷可能な用紙サイズ、印刷処理時の解像度、用紙の両面に印刷する機能の有無等の各種設定情報を含む。
【0014】
図13を参照し、Windows上でアプリケーションから印刷処理を行う場合を説明する。アプリケーションは、WindowsAPIを用いてWindowsOSに問い合わせをする(
図13、(1))。問合せを受けたWindowsOSは、プリンタドライバに対して、印刷処理のための各種設定を問い合わせる。WindowsOSは、グラフィックデータインタフェース(GDI)を経由しプリンタドライバとのインタフェース(DDI(Device Driver Interface)とも呼ぶ。)を利用して問い合わせを行う(
図13、(2))。プリンタドライバは、プリンタで利用可能な設定情報をWindowsOSに通知する(
図13、(3))。WindowsOSは、プリンタドライバから得た設定情報を、WindowsAPIの復帰値としてアプリケーションに提供する(
図13、(4))。この一連の処理を通じてアプリケーションは、印刷に必要な情報を取得する(
図13、(5))。そして、アプリケーションは取得した情報に基づき、ユーザの指示入力に応じて、用紙サイズ等を選択する設定処理を行う。Windowsの場合通常、印刷処理の設定内容はDEVMODE構造体(後述)と呼ばれるプリンタドライバ情報に格納される。印刷処理の設定は、ユーザがプリンタドライバのユーザインタフェースを表示させて実行することも可能である。
【0015】
図14は、WindowsAPIを用いた印刷実行時の処理の流れの一例について説明するための図である。まず、アプリケーションから印刷指示がWindowsAPIを介してWindowsOSに送られる(
図14、(1))。WindowsOSは、印刷指示に従い、GDIを経由してDDIを利用してプリンタドライバに印刷処理の実行を要求する(
図14、(2))。WindowsOSはこのとき、アプリケーションが変更したDEVMODE構造体すなわち印刷設定にかかる情報をプリンタドライバに渡す(
図14、(3))。プリンタドライバは、アプリケーションから提供されるDEVMODE構造体に基づき、印刷に係る情報をプリンタが処理可能な言語に変換し、スプールデータを作成する(
図14、(4))。スプールデータはWindowsOSの「スプーラ」と呼ばれる印刷制御部に保持される(
図14、(5)「スプールファイル」)。スプーラは、プリンタドライバが作成したスプールデータをWindowsOSのポートモニタに送る(
図14、(6))。ポートモニタは、スプーラから受信したスプールデータをプリンタに送信する(
図14、(7))。プリンタは、受信したスプールデータに基づき印刷処理を実行する(
図14、(8))。
【0016】
このように、WindowsOSがプリンタに印刷処理の実行を指示するとき、WindowsOSは印刷のためのデータをプリンタドライバのDEVMODE構造体に記述される情報に基づいてスプールデータに変換する。したがって、印刷処理の実行時には、OSが動作する装置がプリンタドライバのDEVMODE構造体を有している。また、ユーザが印刷に関する設定を行ったり設定を変更したりする場合には、DEVMODE構造体の形でプリンタドライバに情報が渡される。
【0017】
(プリンタドライバの情報構成)
プリンタドライバはプリンタごとに作成されるが、インストールされる情報処理装置のOSによる処理が可能なように、OSの規格によって構成が決定されている。また、プリンタメーカごとに任意に設定を拡張し独自の機能を実現できるよう、OSの規格外の構成が含まれる。以下、OSの規格によって決定されている部分を基本部、OSの規格外の部分を拡張部と呼ぶ。
【0018】
PCとプリンタとを接続してプリンタドライバをインストールして印刷処理を実行する場合、プリンタドライバに一度設定情報を格納すると基本的に、以後は設定情報が保持され同じ設定で印刷処理が実行される。しかし、仮想環境で印刷処理を実行した場合、物理装置に設定されているプリンタドライバの情報が仮想環境に引き継がれないことがある。これは、プリンタドライバ拡張部がOSの規格外であり、仮想OSが自動的に物理装置からプリンタドライバの拡張部を引き継ぐことができないためである。このため、ユーザは、仮想環境でプリンタを利用する場合、拡張部に該当する設定をいちいちやり直すことになる。以下に、WindowsOSについて公開されているプリンタドライバの設定を格納するデータ構造であるDEVMODE構造体を例として設定情報について説明する。
【0019】
(DEVMODE構造体の構成)
図15は、DEVMODE構造体の基本部について説明するための図である。DEVMODE構造体は、Microsoft(登録商標)社が提供している、プリンタおよびディスプレイを制御するためのデータ構造である。DEVMODE構造体は、基本部と拡張部とを含む。
【0020】
基本部は、印刷処理に最低限必要な基本的情報を設定するためのデータ構造である。たとえば基本部は、用紙の向きを指定する情報(dmOrientation)や用紙のサイズを指定する情報(dmPaperSize)等を含む。なお、DEVMODE構造体は、プリンタだけでなくディスプレイを制御するためのデータ構造でもあるため、プリンタの制御に関係しない情報も含む。たとえば、dmDisplayFixedOutputは固定解像度のディスプレイのみに適用される情報である。また、dmDisplayFlagsやdmDisplayFrequencyはディスプレイドライバが使用する情報であり、プリンタドライバは使用しない。
【0021】
拡張部は、各プリンタ固有の情報を定義するデータ構造である。拡張部は、プリンタドライバのユーザインタフェース等を用いてプリンタ装置固有機能の利用設定を行うために利用される。拡張部は、プリンタドライバ開発者が自由に構造を設計することができる。通常、拡張部の構造は公開されない。
【0022】
拡張部は、
図15に示す基本部のうち、矢印Xで示す部分(WORD dmDriverExtra)に記述される。拡張部は、個々のプリンタ特有の設定条件等を記述する。
図16は、DEVMODE構造体の拡張部について説明するための図である。
図16は、一般的なプリンタドライバにおけるDEVMODE構造体の定義例である。まず、基本部のdmDriverExtraに、拡張部のデータサイズが定義される(
図16、(A))。その後に、拡張部の本体が続く(
図16、(B))。
【0023】
このように、プリンタドライバが印刷処理を実行させるために用いるDEVMODE構造体には、いずれのプリンタにも共通する情報を定義する部分(基本部)と、プリンタ固有の情報を定義する部分(拡張部)とが含まれる。拡張部のサイズは基本部で定義されるが、拡張部本体は基本部に定義されない。このため、プリンタドライバ設計者でなければ、拡張部の構造を知ることは出来ない。
【0024】
(仮想デスクトップ環境での情報の引継)
図17は、仮想環境において処理を実行する場合の一例について説明するための図である。仮想デスクトップ環境で仮想プリンタを利用する場合、仮想デスクトップ環境によってはクライアントと仮想プリンタ間のインタフェースを共有として定義する。このため、仮想デスクトップは、クライアントのプリンタドライバの設定を仮想プリンタに引き継ごうとする。このとき、仮想デスクトップは、プリンタドライバのDEVMODE構造体をクライアントから仮想デスクトップにコピーしようとする。
【0025】
DEVMODE構造体のうち、基本部の情報は公開されているため、仮想デスクトップは基本部を取得することができる。しかし、拡張部の情報は公開されていないため、仮想デスクトップは、拡張部が格納されるメモリ空間の位置を示すメモリアドレスを取得することができない。このため、仮想デスクトップは拡張部を取得することができない。
【0026】
このように、仮想デスクトップ環境では、仮想プリンタに対してDEVMODE構造体の基本部に設定されている情報のみが共有される。そして、拡張部の情報は仮想デスクトップ環境に引き継がれない。
【0027】
一般にプリンタドライバは、拡張部が参照できない場合ドライバモジュール内の初期値を参照して印刷処理を実行する。このため、ユーザが仮想デスクトップ環境にログインして印刷処理を行う場合、拡張部に記述される機能を使用するためには、ログインするごとに拡張部の設定をやり直さなければならない。このためには、ログインごとに、ユーザはプリンタドライバのユーザインタフェースを起動して設定をやり直すことになる。
【0028】
(第1の実施形態)
以下、図面を参照して、実施形態にかかる情報処理装置、情報処理方法および情報処理プログラムを説明する。実施形態において同一の機能を有する構成には同一の符号を付し、重複する説明は省略する。なお、以下の実施形態で説明する情報処理装置、情報処理方法および情報処理プログラムは、一例を示すに過ぎず、実施形態を限定するものではない。また、以下の各実施形態は、矛盾しない範囲内で適宜組みあわせてもよい。
【0029】
図1は、実施形態にかかる情報処理装置1の構成を例示するブロック図である。
図1に示す情報処理装置1は、仮想環境上に配置される仮想サーバ2およびプリンタ3A,3B,3Cと、接続される。なお、
図1には3つのプリンタを示すが、ネットワーク上に配置されるプリンタの数は特に限定されない。また、情報処理装置も任意の数をネットワーク上に配置することができる。
【0030】
情報処理装置1は、たとえば、パーソナルコンピュータ(PC)、タブレットコンピュータ、スマートフォン等、任意の情報処理装置である。また、情報処理装置1は、プリンタと接続して印刷処理を実行させる機能を備える。
【0031】
仮想サーバ2は、仮想ネットワーク上に配置され、仮想的に構築されるサーバである。仮想サーバ2は、情報処理装置1からの要求に応じて情報処理装置1に対応する仮想PCを仮想環境上に構築する。仮想サーバ2はまた、情報処理装置1からの要求に応じて情報処理装置1に対応する仮想デスクトップを提供する。仮想サーバ2はまた、情報処理装置1からの要求に応じて情報処理装置1にプリンタ3A,3B,3Cのいずれかを割り当てる(プリンタマッピング)。また、仮想サーバ2は、情報処理装置1からの要求に応じてプリンタ3A,3B,3Cに印刷処理を実行させる。なお、仮想サーバ2が、情報処理装置1に対応する仮想PCを構築してプリンタ3A,3B,3Cを割り当てると、仮想PCの仮想OSは、情報処理装置1からプリンタドライバを取得する。このとき、上記のように、仮想OSは、構造が公開されている部分(プリンタドライバの基本部)しか取得できない。
【0032】
仮想サーバ2はたとえば、仮想マシンモニタとしてXenを利用して構築してもよい。仮想サーバ2はたとえば、Citrix Xen Serverであってよい。また、仮想サーバ2は、Citrix Xen AppやCitrix Xen Desktop等を用いてデスクトップ仮想化およびアプリケーション仮想化を実現してもよい。また、仮想サーバ2は、プリンタマッピングにCitrix Xen App等を使用してもよい。
【0033】
プリンタ3A,3B,3Cは、印刷機能を有する任意の印刷装置である。プリンタ3A,3B,3Cは、情報処理装置1が仮想環境にログインしたときに、仮想サーバ2によって情報処理装置1に割り当てられる。実施形態においては、情報処理装置1にはプリンタ3A,3B,3Cのうちいずれか1つが割り当てられるものとする。ただし、仮想サーバ2は、一つの情報処理装置に対して複数のプリンタを割り当てたり、複数の情報処理装置に対して一つのプリンタを割り当てたりしてもよい。情報処理装置1が仮想環境からログアウトした後、再度ログインした場合、仮想サーバ2は、再度情報処理装置1にプリンタ3A,3B,3Cのいずれかを割り当てる。プリンタ3A,3B,3Cは各々、情報処理装置1から送信される情報を格納するための記憶部50A,50B,50Cを有する。
【0034】
(情報処理装置1の構成の一例)
情報処理装置1は、記憶部10と、制御部20と、通信部30と、入出力部40と、を有する。
【0035】
記憶部10は、情報処理装置1における処理に用いられる情報および情報処理装置1における処理によって生成される情報を記憶する。記憶部10には、半導体メモリ素子等を採用できる。たとえば、半導体メモリ素子としては、VRAM(Video Random Access Memory)、RAM(Random Access Memory)、ROM(Read Only Memory)やフラッシュメモリ(flash memory)などが挙げられる。
【0036】
記憶部10は、ドライバ記憶部11を有する。ドライバ記憶部11は、基本部記憶部11Aと拡張部記憶部11Bとを有する。ドライバ記憶部11は、情報処理装置1にネットワークを介して接続され情報処理装置1の指示に応じて印刷処理を実行するプリンタを制御するためのプリンタドライバを記憶する。ドライバ記憶部11が記憶するプリンタドライバは、基本部と拡張部とを含む。実施形態におけるプリンタドライバは、たとえばDEVMODE構造体によって処理内容が設定されるプリンタドライバである。
【0037】
制御部20は、情報処理装置1の動作および機能を制御する。制御部20にはたとえば、各種の集積回路や電子回路を採用できる。また、制御部20に含まれる機能部の一部を別の集積回路や電子回路とすることもできる。たとえば、集積回路としては、ASIC(Application Specific Integrated Circuit)が挙げられる。また、電子回路としては、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などが挙げられる。
【0038】
制御部20は、第1の検知部21と、記憶制御部22と、第2の検知部23と、設定部24と、印刷指示部25と、を有する。
【0039】
第1の検知部21は、ドライバ記憶部11に記憶されるプリンタドライバの設定の変更を検知する。第1の検知部21はまた、プリンタドライバのインストールを検知する。たとえば、第1の検知部21は、新規にプリンタドライバがドライバ記憶部11に記憶されたことを検知する。
【0040】
記憶制御部22は、第1の検知部21がプリンタドライバの設定の変更および新規にプリンタドライバが記憶されたことを検知した場合に、変更後または新規のプリンタドライバの拡張部をプリンタに送信する。記憶制御部22はたとえば、拡張部を、当該プリンタドライバに対応する、仮想環境上で情報処理装置1に割当てられるプリンタに送信する。記憶制御部22はたとえば、プリンタドライバとプリンタとの間の専用APIを用いて拡張部をプリンタに送信する。記憶制御部22は、情報処理装置1が仮想環境にログインしていない状態のときに拡張部をプリンタに送信することができる。
【0041】
記憶制御部22が送信するプリンタドライバの拡張部は、当該プリンタドライバに対応する、情報処理装置1と接続ポートで接続されているプリンタの記憶部に記憶される。記憶制御部22はまた、拡張部に対応付けて情報処理装置1を一意に識別する情報たとえば装置ID(Identifier)を送信する。たとえば、記憶制御部22は、情報処理装置1のUUID(Universally Unique Identifier)、GUID(Globally Unique Identifier)等を送信する。プリンタは、記憶制御部22から受信する情報処理装置1を一意に識別する情報と、拡張部とを対応づけて記憶部に記憶する。
【0042】
図2は、プリンタ3A,3B,3Cの記憶部50A,50B,50Cに記憶される情報の構成の一例を示す図である。プリンタ3A,3B,3Cは、各々記憶部50A,50B,50Cに、自装置がマッピングされる情報処理装置を一意に特定する情報と、当該情報処理装置が使用するプリンタドライバの拡張部と、を対応付けて記憶する。
図2の例では、「装置ID」と「拡張部」とが対応付けて記憶される。「装置ID」は、情報処理装置を一意に特定する情報である。
図2の例では、「装置ID」はGUIDである。また、「拡張部」はプリンタドライバの拡張部を示す。
図2の例では、「装置ID、3F2504E0-4F89-11D3-9A0C-0305E82C3301」と「拡張部、DEVMODE拡張部A」とが対応付けて記憶されている。
【0043】
第2の検知部23は、情報処理装置1が仮想環境にログインしたことを検知する。
【0044】
設定部24は、第2の検知部23が仮想環境へのログインを検知した場合に、仮想環境上に構築される仮想PCに対して、マッピングされているプリンタから拡張部を取得して自装置に設定するよう指示する。仮想PCは、拡張部の取得設定が完了すると設定部24に通知するように構成してもよい。
【0045】
印刷指示部25は、第2の検知部23がログインを検知し、設定部24の指示に応じて仮想PCに拡張部が設定された後、仮想PCに対して印刷処理の実行を指示する。仮想PCは、設定済みのプリンタドライバの基本部および拡張部に基づき、プリンタに送信するプリンタデータ(スプールデータ)を生成する。仮想PCが生成したプリンタデータはマッピングされているプリンタに送信され印刷処理が実行される。
【0046】
通信部30は、情報処理装置1と外部装置との間の通信を実現する。通信部30はたとえば、ポート、スイッチ、ルータ等を含む。
【0047】
入出力部40は、情報処理装置1への情報の入力および情報処理装置1からの情報の出力を実現する。入出力部40はたとえば、キーボード、マウス、タッチパネル、マイクロフォン等を含む。入出力部40はまた、ディスプレイ、スピーカ等を含む。
【0048】
(印刷処理の流れの一例)
図3は、実施形態にかかる情報処理装置による印刷処理の大まかな流れの一例を示す図である。
図3の例では、情報処理装置1はプリンタ3Aにマッピングされるものとする。
【0049】
まず、情報処理装置1は、自装置上に設定されたプリンタドライバの拡張部と自装置を一意に識別する装置IDとをプリンタに送信する(
図3、(1))。プリンタ3Aは受信した拡張部と装置IDとを対応づけて記憶部50Aに格納する(
図3、(2))。
【0050】
次に、情報処理装置1は、仮想環境にログインする(
図3、(3))。すると、情報処理装置1に対応する仮想PCが構築され、情報処理装置1に対してプリンタ3Aが割り当てられる(
図3、(4))。仮想PCが構築される際、適宜情報処理装置1内の情報が仮想PCにより取得される。このとき、仮想PCは、情報処理装置1内のプリンタドライバのうち基本部を取得する(
図3、(5))。仮想PCは、プリンタドライバの拡張部については取得できない。この時点で仮想PC上に記憶されるプリンタドライバは、情報処理装置1に設定されている基本部と、初期状態の拡張部と、を含む状態となる。
【0051】
次に、仮想PCは、プリンタ3Aの記憶部50Aから、情報処理装置1の装置IDに対応付けて記憶される拡張部を取得する(
図3、(6))。仮想PCは、取得した拡張部をプリンタドライバに設定する(
図3、(7))。この時点で、仮想PC上のプリンタドライバに含まれる情報と、情報処理装置1上のプリンタドライバに含まれる情報とが一致する(
図3、(8))。この後、ユーザが仮想PC上で印刷処理の実行を指示すると、情報処理装置1上で印刷処理を実行するのと同様の設定内容に基づき、プリンタ3Aにおける印刷処理が実行される(
図3、(9))。
【0052】
このように仮想環境上でユーザが処理を実行する場合に、クライアント(情報処理装置1)と周辺機器(プリンタ3A)のそれぞれから仮想PCが情報を取得して処理を実行することで、実環境上と同様の処理を仮想環境で実現することができる。この構成によれば、仮想環境ログイン後にプリンタドライバの情報が仮想PCに完全には引き継がれていないことにユーザが気づかず、不所望の設定による印刷処理を実行することを防止できる。また、情報処理装置1からプリンタ3Aに自動的に拡張部と装置IDとが送信されるため、ユーザが実環境においてプリンタの設定を変更するごとに仮想環境においても設定を変更する手間をなくすことができる。また、プリンタ3Aは拡張部と装置IDとを対応付けて記憶するため、複数の情報処理装置が同じプリンタ3Aを使用するときでも、プリンタ3Aはそれぞれのユーザに対応した設定での処理を実現することができる。
【0053】
(拡張部格納処理の流れの一例)
図4は、実施形態にかかる情報処理装置1による拡張部格納処理を説明するための概略図である。
図5Aは、実施形態にかかる情報処理装置1によるインストール時の拡張部格納処理の流れの一例を示すフローチャートである。
図5Bは、実施形態にかかる情報処理装置1による設定変更時の拡張部格納処理の流れの一例を示すフローチャートである。
図4、
図5A、
図5Bの処理は、
図3の(1)の処理に対応する。
【0054】
図4に示すように、情報処理装置1は、ネットワークを介して、仮想環境およびプリンタに接続される。まず、ユーザが情報処理装置1においてプリンタドライバのインストールを実行する。情報処理装置1の第1の検知部21は、プリンタドライバがインストールされたことを検知する。第1の検知部21がインストールを検知すると、記憶制御部22は、情報処理装置1の装置IDと、インストールされたプリンタドライバの拡張部とを、当該プリンタドライバに対応するプリンタに送信する。拡張部を受信したプリンタは、記憶部に拡張部と情報処理装置1の装置IDとを対応付けて記憶する。
【0055】
情報処理装置1が装置IDをプリンタに送信する手法としては、たとえば、拡張部の中に装置IDを記述することができる。
【0056】
図5Aの例では、情報処理装置1はまず、プリンタドライバをインストールする(
図5A、ステップS51)。そして、情報処理装置1は、自装置の装置IDを、プリンタドライバ中、印刷処理に影響しない箇所に格納する(
図5A、ステップS52)。たとえば、情報処理装置1において第1の検知部21がインストールを検知すると、記憶制御部22は自動的にDEVMODE構造体の「dmDisplayFrequency」に装置IDを格納する。そして、記憶制御部22は、装置IDが格納されたDEVMODE構造体をプリンタに送信する(
図5A、ステップS53)。たとえば、記憶制御部22は、装置IDが格納されたDEVMODE構造体を接続ポートを介してプリンタに送信する。
【0057】
図5Bの例では、情報処理装置1の第1の検知部21は、プリンタドライバの設定の変更有無を検知する(ステップS61)。第1の検知部21はたとえば、プリンタドライバの設定画面上で所定の操作が行われた場合にプリンタドライバの設定の変更があったことを検知する。たとえば、第1の検知部21は、プリンタドライバの設定画面上で「更新」ボタンまたは「OK」ボタンがクリックされたときに、プリンタドライバの設定の変更を検知する。第1の検知部21が設定の変更を検知した場合(ステップS62、Yes)、記憶制御部22は、自装置の装置IDと変更後の拡張部とを接続ポート経由でプリンタに送信する(ステップS63)。第1の検知部21が設定の変更を検知していない場合(ステップS62、No)、情報処理装置1はステップS61に戻って処理を繰り返す。
【0058】
なお、プリンタドライバ中に装置IDを格納する場合、DEVMODE構造体であれば、dmDisplayFrequencyの他、ディスプレイドライバのみが使用する部分に格納することができる。たとえば、dmPelsHeightやdmDisplayFlags等を使用できる。
【0059】
(印刷実行時の処理の流れの一例)
図6は、実施形態にかかる情報処理装置1による印刷実行時の処理の流れを説明するための概略図である。
図7は、実施形態にかかる情報処理装置1による印刷実行時の処理の流れの一例を示すフローチャートである。
【0060】
図6に示すように、情報処理装置1の記憶部10にはプリンタドライバ(DEVMODE構造体)の基本部および拡張部の双方が記憶されている。他方、情報処理装置1からプリンタドライバの拡張部を受信したプリンタ3Aの記憶部50Aには拡張部が記憶されている。情報処理装置1が仮想環境にログインしていない状態の間に、拡張部格納処理(
図4、
図5A、
図5B)により、情報処理装置1とプリンタ3Aとの間で拡張部が共有される状態となる。
【0061】
次に、
図7に示すように、情報処理装置1が仮想環境にログインする(ステップS701)。すると、仮想環境上に情報処理装置1が利用する仮想PCが構築され、情報処理装置1に対してプリンタがマッピングされる(ステップS702)。仮想環境上に仮想PCが構築されると、仮想PCは情報処理装置1から基本部を取得する。この時点で、仮想PCのプリンタドライバに設定される基本部(たとえばDEVMODE std;)は、情報処理装置1のプリンタドライバに設定される基本部と同一となる。しかし、仮想PCは情報処理装置1から拡張部を取得できないため、仮想PCに設定される拡張部(たとえばEXTDEVMODE prv;)は、プリンタドライバの構築時の状態すなわち初期状態のままである。
【0062】
次に、仮想PCのプリンタドライバは、プリンタ3Aに対して拡張部の提供をAPIを介して要求する(ステップS703)。このとき、プリンタドライバからプリンタ3Aに対して情報処理装置1の装置IDが通知される。プリンタ3Aは、受信した装置IDに対応づけて記憶部50Aに記憶されている拡張部をプリンタドライバに対してAPIの復帰値として送信する(ステップS704)。仮想PCのプリンタドライバは、受信した拡張部を既に取得している基本部とともにプリンタドライバの構造体として設定する(ステップS705)。この時点で、仮想PCのプリンタドライバに設定される基本部および拡張部とは、情報処理装置1のプリンタドライバに設定される基本部および拡張部と一致する(
図6参照)。
【0063】
仮想PCは以後、ユーザによる印刷指示入力があると、当該指示に応じて印刷対象である情報をプリンタドライバの基本部および拡張部の設定に基づき、印刷データに変換する(ステップS706)。そして、仮想PCは、印刷データをプリンタ3Aに送信する(ステップS707)。印刷データはプリンタ3Aが処理可能なデータに変換されているため、プリンタ3Aは受信した印刷データに基づき印刷処理を実行する(ステップS708)。これによって印刷処理が終了する。
【0064】
なお、プリンタから仮想PCへの拡張部のコピーのタイミングは特に限定されない。情報処理装置1が仮想環境にログインしプリンタマッピングが実行された時点で実行してもよい。また、仮想PC上で印刷指示が入力された時点で実行してもよい。ただし、印刷処理を迅速に実行する観点からは、プリンタマッピング時に実行するのが好ましい。
【0065】
また、仮想PCは基本部の設定に基づく印刷対象データの変換のみを実行して得られたデータをプリンタ3Aに送信し、拡張部に基づくデータの変換はプリンタ3Aが実行するように構成することも可能である。
【0066】
(実施形態の効果)
上記のように、実施形態にかかる情報処理装置は、記憶制御部と、設定部と、を備える。記憶制御部は、第1の機器(たとえば情報処理装置1)におけるドライバの設定時またはドライバの設定変更時に、第1の機器を識別する情報を第2の機器の記憶部(たとえば記憶部50A)に記憶させる。記憶制御部はまた、第1の機器上のドライバに含まれ、当該ドライバにより制御される第2の機器(たとえばプリンタ3A)の固有の情報を、第1の機器を識別する情報と対応づけて第2の機器の記憶部に記憶させる。設定部は、クラウドシステム上に仮想的に構築される第3の機器(たとえば仮想PC)がドライバを実行する際に、記憶部(たとえば記憶部50A)から第2の機器(たとえばプリンタ3A)の固有の情報を抽出する。そして、設定部は抽出した固有の情報を、第3の機器上のドライバに設定する。このように、実施形態にかかる情報処理装置によれば、仮想PCを用いて印刷処理を実行する場合でも、プリンタ側に自動的にドライバの拡張部が送信される。また、拡張部は、当該ドライバの設定を実行した情報処理装置を識別する情報と対応づけてプリンタに記憶される。このため、ユーザは、プリンタドライバの設定をやり直すことなく、それまでの印刷設定を引き継いだ処理を実行することができる。また、ユーザは、複数のプリンタを利用する場合であっても、それぞれのプリンタの固有の情報(拡張部)を予め記憶させることができるため、印刷処理を中断することなく実行できる。また、ユーザは、仮想的に構築された装置を用いて周辺機器の処理を制御する場合でも、実環境で実行した処理と同様の設定で容易に処理を実行することができる。
【0067】
また、実施形態にかかる情報処理装置において、記憶制御部は、第1の機器におけるドライバの設定時またはドライバの設定変更時に、ドライバの一部に第1の機器を識別する情報を組み入れて、記憶部に記憶させる。このため、情報処理装置は、第1の機器を識別する情報を効率的に記憶部に記憶させることができる。
【0068】
また、実施形態にかかる情報処理装置において、記憶制御部は、第1の機器のGUID(Globally Unique Identifier)と、プリンタドライバのDEVMODE構造体の拡張部と、を対応づけて記憶部に記憶させる。または、記憶制御部は、第1の機器のUUID(Universally Unique Identifier)と、プリンタドライバのDEVMODE構造体の拡張部と、を対応づけて記憶部に記憶させる。
【0069】
また、実施形態にかかる情報処理方法において、コンピュータは、第1の機器におけるドライバの設定時またはドライバの設定変更時に、第1の機器を識別する情報を第2の機器の記憶部に記憶させる。また、コンピュータは、第1の機器上のドライバに含まれ、当該ドライバにより制御される第2の機器の固有の情報を、第1の機器を識別する情報と対応づけて第2の機器の記憶部に記憶させる。さらに、コンピュータは、クラウドシステム上に仮想的に構築される第3の機器がドライバを実行する際に、記憶部から第2の機器の固有の情報を抽出し、第3の機器上のドライバに設定する。
【0070】
また、実施形態にかかる情報処理プログラムは、コンピュータに、第1の機器におけるドライバの設定時またはドライバの設定変更時に、第1の機器を識別する情報を第2の機器の記憶部に記憶させる。また、情報処理プログラムは、コンピュータに、第1の機器上のドライバに含まれ、当該ドライバにより制御される第2の機器の固有の情報を、第1の機器を識別する情報と対応づけて第2の機器の記憶部に記憶させる。さらに、情報処理プログラムは、コンピュータに、クラウドシステム上に仮想的に構築される第3の機器がドライバを実行する際に、記憶部から第2の機器の固有の情報を抽出させ、第3の機器上のドライバに設定させる。
【0071】
このように実施形態にかかる情報処理装置、情報処理方法および情報処理プログラムは、第1の機器上のドライバの設定情報のうち、当該ドライバにより制御される第2の機器の固有の情報を記憶部に記憶させる。また、情報処理装置、情報処理方法および情報処理プログラムは、固有の情報に対応づけて第1の機器の識別情報を記憶させる。このため、情報処理装置、情報処理方法および情報処理プログラムは、第1の機器において設定、更新された情報を自動的に記憶部に反映することができる。このため、情報処理装置、情報処理方法および情報処理プログラムは、ユーザが事前にプリンタの機能を把握して仮想環境上にプリンタの設定情報を記憶させる必要をなくすことができる。
【0072】
また、実施形態によれば、第1の機器を識別する情報と、第2の機器の固有の情報とを対応付けて第2の機器の記憶部に記憶させることで、第2の機器にマッピングされた第1の機器のドライバの設定情報を容易に抽出することができる。このため、ユーザが自分で第2の機器に対応するドライバを選択したり、仮想環境下で設定情報を更新したりする必要をなくすことができる。このため、実施形態にかかる情報処理装置、情報処理方法および情報処理プログラムは、設定項目の漏れや設定ミスの可能性を減じることができる。また、実施形態にかかる情報処理装置、情報処理方法および情報処理プログラムは、設定ミスによる印刷ミスの発生を防止し、生産性の低下を抑制することができる。また、情報処理装置、情報処理方法および情報処理プログラムは、印刷ミスによる無駄な用紙の消費を防止し、省エネにも寄与することができる。
【0073】
(変形例1)
上記実施形態においては、仮想環境においてクライアントである情報処理装置1が印刷に関する設定を行い、印刷設定の内容を含むプリンタドライバの拡張部をプリンタに送信するよう構成した。しかし、これに限らず、たとえば、情報処理装置1に対して許可する印刷設定の内容を予め決定し、プリンタに設定しておき、情報処理装置1による印刷内容を制御することも可能である。たとえば、複数のクライアントが仮想環境を利用して印刷処理を実行する場合に、クライアントのグループ毎に異なる印刷設定を許可する等の制御が可能である。以下、変形例1としてかかる場合について説明する。
【0074】
図8は、変形例1にかかる情報処理システム100の概略を示す図である。変形例1の情報処理システム100は、情報処理装置1Aと、仮想サーバ2Aと、周辺機器P1〜Pnを備える。
【0075】
情報処理装置1Aは、仮想環境にログインして仮想サーバ2Aにより提供されるクラウドサービスを利用する。情報処理装置1Aはたとえば、クラウドサービスを利用することで、周辺機器P1〜Pnを使用して印刷処理等を実行する。
【0076】
情報処理装置1Aは、たとえば、パーソナルコンピュータ(PC)、タブレットコンピュータ、スマートフォン等、任意の情報処理装置であってよい。また、情報処理装置1Aは、プリンタと接続して印刷処理を実行させる機能を備える。情報処理装置1Aは、周辺機器を制御するためのデバイスドライバを記憶する。
【0077】
仮想サーバ2Aは、クラウドサービスを情報処理装置1Aに提供する。仮想サーバ2Aは、情報処理装置1Aから送信される要求に応じて、仮想環境上に仮想PCを構築する。仮想PCは、情報処理装置1Aのユーザが情報処理装置1Aを介して利用する。
【0078】
周辺機器P1〜Pnは、情報処理装置1Aの周辺機器の機能を実現する装置である。周辺機器P1〜Pnはたとえば、プリンタ、ディスプレイ等である。周辺機器P1〜Pnは、仮想サーバ2Aにより制御され、情報処理装置1Aが仮想環境にログインすると、仮想サーバ2Aにより情報処理装置1Aに割り当てられる。情報処理装置1Aに割り当てられた周辺機器P1〜Pnは、仮想PCから送信される指示に基づき処理を実行する。
【0079】
変形例1にかかる周辺機器P1〜Pnは、デバイスドライバにより制御される。デバイスドライバは、基本部と拡張部とを有する。基本部は、上記実施形態と同様、OSによって決定される構成が公開されている部分である。拡張部は、上記実施形態と同様、ドライバのうち、周辺機器の各メーカが独自の機能に応じて作成する部分である。
【0080】
(対応テーブルの構造の一例)
図9は、変形例1にかかる情報処理システム100の仮想サーバ2Aに格納される対応テーブルに記憶される情報の構造の一例を示す図である。対応テーブルは、情報処理装置が属するグループを特定する情報と、当該グループに属する情報処理装置各々の情報と、を対応づけて記憶する。また、当該グループに割り当てられる周辺機器を特定する情報と、当該周辺機器の処理に関する設定情報を記憶する。
【0081】
たとえば、周辺機器がプリンタの場合を考える。また、企業の1部署に属する社員が情報処理装置からクラウドサービスを利用してプリンタを使用する。このとき、部署に属する社員を1つのグループAに属するものとする。そして、グループAにプリンタP1,P2,P3が割り当てられるものとする。このとき、部署においては特定の設定でなければ書類を印刷できないようにする必要があるとする。この場合に、当該設定をデバイスドライバの拡張部に記述しておく。そして、グループIDと、社員が使用する情報処理装置各々を特定する装置IDと、プリンタP1,P2,P3各々を特定する情報と、デバイスドライバの拡張部と、を対応づけて仮想サーバ2Aの対応テーブルに格納する。
【0082】
図9の例では、「グループID」と、「クライアントID」と、「プリンタID」と、「拡張部」と、が対応付けて記憶される。グループIDは、グループを一意に特定する識別情報である。クライアントIDは、ユーザが使用する情報処理装置を一意に特定する識別情報である。プリンタIDは、プリンタを一意に特定する識別情報である。「拡張部」はプリンタのドライバに設定される、機種依存性の情報部である。たとえば、「グループID、GR001」に対応づけて、クライアントID「CL028」、「CL029」…「CL100」が記憶される。また、「グループID、GR001」に対応付けて、プリンタID「PR001」、「PR002」…「PR010」が記憶される。また、「グループID、GR001」に対応付けて、拡張部「DEVMODE拡張部001」が記憶される。これは、グループID「GR001」で特定されるグループには、クライアントID「CL028」、「CL029」…「CL100」で特定される情報処理装置のユーザが属することを示す。また、グループID「GR001」で特定されるグループには、プリンタID「PR001」、「PR002」…「PR010」で特定されるプリンタが割り当てられることを示す。また、プリンタID「PR001」、「PR002」…「PR010」で特定されるプリンタを制御するためのデバイスドライバの拡張部は「DEVMODE拡張部001」で特定されることを示す。
【0083】
このように変形例1では、予めクラウドサービスを利用するグループに対して割り当てるプリンタと、当該プリンタが実行する処理の設定内容を記憶しておく。このように構成すると、グループに属するユーザ全体に対して、プリンタの設定を固定にすることができる。このため、情報処理システム100は、クラウドサービスを利用するユーザによる周辺機器の設定をグループごとに管理することができる。
【0084】
図10は、変形例1にかかる情報処理システム100における処理の流れの一例を説明するための図である。情報処理システム100が備える仮想サーバ2Aは予め、
図9の対応テーブルに基づき、周辺機器P1〜P4それぞれに拡張部を送信し記憶させる(
図10の(1)〜(4))。この処理によって周辺機器P1〜P4は各々、対応するデバイスドライバの拡張部を記憶する。
【0085】
情報処理装置1Aは、周辺機器Pを制御するためのデバイスドライバを記憶する。デバイスドライバは基本部および拡張部を含む。情報処理装置1Aはクラウドサービスを利用しない状態で、周辺機器Pをデバイスドライバによって制御し処理を実行させる(
図10、(5))。たとえば、情報処理装置1Aはプリンタドライバ(基本部と拡張部1)を用いてプリンタである周辺機器Pに印刷処理を実行させる。
【0086】
次に、情報処理装置1Aが仮想環境にログインし、仮想サーバ2Aが情報処理装置1
Aに対応する仮想PCを構築する(
図10、(6))。このとき、仮想PCは、情報処理装置1からデバイスドライバの基本部を取得し記憶する。また、仮想PCはマッピングされた周辺機器P1からデバイスドライバの拡張部(拡張部2)を取得する(
図10、(7))。これにより、仮想PCには、情報処理装置1Aが記憶する基本部と、周辺機器P1が記憶する拡張部2と、が記憶される状態になる。この後、仮想PCは周辺機器P1を用いた処理を、記憶した基本部および拡張部2に基づき実行する。
【0087】
このように構成すると、情報処理装置1Aは、直接接続された周辺機器Pを使用した処理のための拡張部1を保持しつつ、仮想環境上に配置される周辺機器P1〜Pnの機能を利用した処理を実行することができる。このため、情報処理システム100は、ユーザによる設定変更の手間をなくし、かつ、複数ユーザによる処理の一元的管理を実現することができる。また、デバイスドライバを用いて制御される周辺機器であって、デバイスドライバに複数装置に共通の部分と、装置固有の部分とが含まれる周辺機器を制御する場合に、容易にデバイスドライバの情報を仮想環境に反映させることができる。
【0088】
(仮想環境の構成の一例)
図11は、実施形態にかかる情報処理方法を仮想環境上で実現するための構成の一例を説明するための図である。
図11に示すクライアント1B、サーバ2B、プリンタPx,Py,Pzはそれぞれ、
図1の情報処理装置1、仮想サーバ2、プリンタ3A,3B,3Cに対応する。
【0089】
クライアント1Bは、ハードウェア上にオペレーションシステム(OS)がインストールされ、OS上にアプリケーションおよびユーザ層が構築される。サーバ2Bは、ハードウェア上にハイパーバイザが構築され、ハイパーバイザ上で仮想マシン(VM)が動作する。プリンタドライバ等のデバイスドライバは、クライアント1BのOS層に配置され、クライアント1Bに割り当てられたVMのゲストOSが動作する空間にデバイスドライバの情報がコピーされる。クライアント1BのOS層に配置されたデバイスドライバはまた、プリンタの任意の記憶部に送信され記憶される。
図11の例は、ハードウェア上で直接ハイパーバイザが動作する仮想マシンである。しかし、これに限らず、他のOS上でハイパーバイザが動作する構成を採用してもよい。
【0090】
(情報処理プログラム)
情報処理装置1で行われる各種処理機能は、CPU(またはMPU、MCU(Micro Controller Unit)等のマイクロ・コンピュータ)上で、その全部または任意の一部を実行するようにしてもよい。また、各種処理機能は、CPU(またはMPU、MCU等のマイクロ・コンピュータ)で解析実行されるプログラム上、またはワイヤードロジックによるハードウェア上で、その全部または任意の一部を実行するようにしてもよい。また、機能ブロックの一部を別のコンピュータで実現してもよい。
【0091】
ところで、上記の実施形態で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータ(ハードウエア)の一例を説明する。
図12は、実施形態にかかる情報処理装置1000のハードウェア構成の一例を示すブロック図である。
【0092】
図12に示すように、情報処理装置1000は、各種演算処理を実行するCPU101と、データ入力を受け付ける入力装置102と、モニタ103と、スピーカ104とを有する。また、情報処理装置1は、記憶媒体からプログラム等を読み取る媒体読取装置105と、各種装置と接続するためのインタフェース装置106と、有線または無線により外部機器と通信接続するための通信装置107とを有する。また、情報処理装置1000は、各種情報を一時記憶するRAM108と、ハードディスク装置109とを有する。また、情報処理装置1内の各部(101〜109)は、バス110に接続される。
【0093】
ハードディスク装置109には、上記の実施形態で説明した各種の処理を実行するためのプログラム111が記憶される。また、ハードディスク装置109には、プログラム111が参照する各種データ112が記憶される。入力装置102は、たとえば、情報処理装置1の操作者から操作情報の入力を受け付ける。モニタ103は、たとえば、操作者が操作する各種画面を表示する。インタフェース装置106は、たとえば印刷装置等が接続される。通信装置107は、LAN(Local Area Network)等の通信ネットワークと接続され、通信ネットワークを介した外部機器との間で各種情報をやりとりする。
【0094】
CPU101は、ハードディスク装置109に記憶されたプログラム111を読み出して、RAM108に展開して実行することで、各種の処理を行う。なお、プログラム111は、ハードディスク装置109に記憶されていなくてもよい。たとえば、情報処理装置1000が読み取り可能な記憶媒体に記憶されたプログラム111を、情報処理装置1000が読み出して実行するようにしてもよい。情報処理装置1が読み取り可能な記憶媒体は、たとえば、CD−ROMやDVDディスク、USB(Universal Serial Bus)メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、LAN等に接続された装置にこのプログラムを記憶させておき、情報処理装置1がこれらからプログラムを読み出して実行するようにしてもよい。