(57)【要約】【課題】ソフトウェアシステムの一部を、ネットワークを介した装置、特にインターネット上のサーバ装置またはクラウドサービスに移行することを容易にする。【解決手段】画像処理装置２０のコンポーネントフレームワーク１２１は、コンポーネントフレームワーク１２１上で動作しているコンポーネント同士が通信する際にはコンポーネント内通信を適用し、一方、コンポーネントフレームワーク１２１上で動作しているコンポーネントがコンポーネントフレームワーク１１１上で動作しているコンポーネントと通信する際にはコンポーネント間通信を適用する。コンポーネント間通信においては、コンポーネントフレームワーク１２１は、自コンポーネントフレームワーク上で動作しているコンポーネントが他のコンポーネントフレームワーク上で動作しているコンポーネントとの間で行う通信にＷｅｂＳｏｃｋｅｔコネクションを介して中継する。【選択図】図４
2014186473.tif 000002
【特許請求の範囲】
【請求項１】
記憶手段にフレームワークプログラムと複数のコンポーネントプログラムとを記憶し、通信手段を備えるコンピュータに、
前記フレームワークプログラムに従い、前記複数のコンポーネントプログラムの各々に従う処理において利用されるプログラムを提供する第１のソフトウェアフレームワークを構築する処理と、
前記通信手段により通信する他のコンピュータにおいて構築されている第２のソフトウェアフレームワークを認識する処理と、
前記第１のソフトウェアフレームワークに、前記第２のソフトウェアフレームワークとの間のコネクションを開設させる処理と、
前記複数のコンポーネントプログラムの各々に従い、前記第１のソフトウェアフレームワークの上で動作するソフトウェアコンポーネントを構築する処理と、
前記第１のソフトウェアフレームワークの上で動作している一のソフトウェアコンポーネントに対し、前記一のソフトウェアコンポーネントが他のソフトウェアコンポーネントとの間で予め定められた規則に従う通信を行うためのインターフェースを提供する処理と、
前記他のソフトウェアコンポーネントが前記第２のソフトウェアフレームワークの上で動作している場合、前記第１のソフトウェアフレームワークに、前記一のソフトウェアコンポーネントが前記インターフェースを介して前記他のソフトウェアコンポーネントとの間で行う通信を、前記コネクションを介して中継させる処理と
を実行させるためのプログラム。
【請求項２】
前記コンピュータと前記他のコンピュータとの双方に、同じ共通ソフトウェアコンポーネントが存在する場合、前記第１のソフトウェアフレームワークは、前記共通ソフトウェアコンポーネントを前記他のコンピュータで動作させると選択する処理
を更に実行させるための請求項１に記載のプログラム。
【請求項３】
前記コンピュータと前記他のコンピュータとの双方に、同じ共通ソフトウェアコンポーネントが存在し、かつ、該共通ソフトウェアコンポーネントが前記コンピュータのリソースに依存するものである場合、前記第１のソフトウェアフレームワークは、前記共通ソフトウェアコンポーネントを前記コンピュータで動作させると選択する処理
を更に実行させるための請求項１に記載のプログラム。
【請求項４】
ソフトウェアコンポーネントに関する情報を取得する処理と、
前記取得された情報に基づいて、当該情報に対応するソフトウェアコンポーネントを前記コンピュータで動作させるか前記他のコンピュータで動作させるかを選択する処理と、
前記取得された情報に対応するソフトウェアコンポーネントを前記他のコンピュータで動作させると選択された場合であって、前記他のコンピュータに当該ソフトウェアコンポーネントがインストールされていない場合に、当該ソフトウェアコンポーネントを動作させるために必要な情報を前記他のコンピュータへ送信する処理と
を更に実行させるための請求項１に記載のプログラム。
【請求項５】
ソフトウェアコンポーネントに関する情報を取得する処理と、
前記取得された情報に基づいて、当該情報に対応するソフトウェアコンポーネントを前記コンピュータで動作させるか前記他のコンピュータで動作させるかを選択する処理と、
前記取得された情報に対応するソフトウェアコンポーネントを前記コンピュータで動作させると選択された場合であって、前記コンピュータに当該ソフトウェアコンポーネントがインストールされてない場合に、当該ソフトウェアコンポーネントの送信を要求する要求データを前記他のコンピュータ又は予め定められたコンピュータへ送信する処理と、
前記要求データに対する応答として送信されてくる、ソフトウェアコンポーネントを動作させるために必要な情報を受信し、当該ソフトウェアコンポーネントのインストール処理を実行する処理と
を更に実行させるための請求項１に記載のプログラム。
【請求項６】
フレームワークプログラムと複数のコンポーネントプログラムとを記憶する記憶手段と、
通信手段と、
前記フレームワークプログラムに従い、前記複数のコンポーネントプログラムの各々に従う処理において利用されるプログラムを提供する第１のソフトウェアフレームワークを構築する処理と、
前記通信手段により通信する他のコンピュータにおいて構築されている第２のソフトウェアフレームワークを認識する処理と、
前記第１のソフトウェアフレームワークに、前記第２のソフトウェアフレームワークとの間のコネクションを開設させる処理と、
前記複数のコンポーネントプログラムの各々に従い、前記第１のソフトウェアフレームワークの上で動作するソフトウェアコンポーネントを構築する処理と、
前記第１のソフトウェアフレームワークの上で動作している一のソフトウェアコンポーネントに対し、前記一のソフトウェアコンポーネントが他のソフトウェアコンポーネントとの間で予め定められた規則に従う通信を行うためのインターフェースを提供する処理と、
前記他のソフトウェアコンポーネントが前記第２のソフトウェアフレームワークの上で動作している場合、前記第１のソフトウェアフレームワークに、前記一のソフトウェアコンポーネントが前記インターフェースを介して前記他のソフトウェアコンポーネントとの間で行う通信を、前記コネクションを介して中継させる処理と
を実行するデータ処理手段と
を備える装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム及び装置に関する。
【背景技術】
【０００２】
これまでに、ソフトウェアで分散処理を実現する種々の技術が知られている。特許文献１には、トランスポート層及びネットワーク層を持つ物理的ネットワークに接続されたホストコンピューター中に常駐し、分散計算環境内にあるクライアント・プロセス及びサーバ・プロセス間の通信路を管理する方法として、クライアント・プロセスが遠隔プロシージャ呼び出し（ＲＰＣ：Ｒｅｍｏｔｅ  Ｐｒｏｃｅｄｕｒｅ  Ｃａｌｌ）を行い、ＲＰＣで指定されたサーバ・プロセスがサーバ上に存在するかを検査し、通信路を設定しリモート手続きを呼び出すことが記載されている。特許文献２には、モジュール同士が連携し管理機能を実現するネットワーク管理システムで、モジュール起動時にプログラムインターフェース情報をリポジトリに登録し、モジュールの呼び出しをオペレーションの名称を基にモジュールを探索し、分散配置されたモジュール同士は基盤を介して透過的に通信することが記載されている。特許文献３には、クライアントがＲＰＣを用いてサーバ装置からのサービスを要求するシステムにおいて、サーバ処理がホストコンピューター内にあれば内部処理通信パスを設定することが記載されている。このように、従来は、ローカルなネットワーク内の装置間での分散処理する方法が検討されてきた。
一方、近年、インターネット上のサーバ装置、特にサーバ装置群で稼働する仮想マシン上でシステムを可能することが行われるようになった。いわゆるクラウドサービスを利用した方法で、事業所等のサイト内で稼働していた処理をクラウドで稼働することが行われるようになった。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平０９−１６０８５６号公報
【特許文献２】特開平１０−３０８７３６号公報
【特許文献３】特開平０８−１１５２８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、ソフトウェアシステムの一部を、ネットワークを介した装置、特にインターネット上のサーバ装置またはクラウドサービスに移行することを容易にする仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００５】
請求項１に係る発明は、記憶手段にフレームワークプログラムと複数のコンポーネントプログラムとを記憶し、通信手段を備えるコンピュータに、前記フレームワークプログラムに従い、前記複数のコンポーネントプログラムの各々に従う処理において利用されるプログラムを提供する第１のソフトウェアフレームワークを構築する処理と、前記通信手段により通信する他のコンピュータにおいて構築されている第２のソフトウェアフレームワークを認識する処理と、前記第１のソフトウェアフレームワークに、前記第２のソフトウェアフレームワークとの間のコネクションを開設させる処理と、前記複数のコンポーネントプログラムの各々に従い、前記第１のソフトウェアフレームワークの上で動作するソフトウェアコンポーネントを構築する処理と、前記第１のソフトウェアフレームワークの上で動作している一のソフトウェアコンポーネントに対し、前記一のソフトウェアコンポーネントが他のソフトウェアコンポーネントとの間で予め定められた規則に従う通信を行うためのインターフェースを提供する処理と、前記他のソフトウェアコンポーネントが前記第２のソフトウェアフレームワークの上で動作している場合、前記第１のソフトウェアフレームワークに、前記一のソフトウェアコンポーネントが前記インターフェースを介して前記他のソフトウェアコンポーネントとの間で行う通信を、前記コネクションを介して中継させる処理とを実行させるためのプログラムを提供する。
【０００６】
請求項２に係る発明は、請求項１に記載のプログラムにおいて、前記コンピュータと前記他のコンピュータとの双方に、同じ共通ソフトウェアコンポーネントが存在する場合、前記第１のソフトウェアフレームワークは、前記共通ソフトウェアコンポーネントを前記他のコンピュータで動作させると選択する処理を更に実行させる。
請求項３に係る発明は、請求項１に記載のプログラムにおいて、前記コンピュータと前記他のコンピュータとの双方に、同じ共通ソフトウェアコンポーネントが存在し、かつ、該共通ソフトウェアコンポーネントが前記コンピュータのリソースに依存するものである場合、前記第１のソフトウェアフレームワークは、前記共通ソフトウェアコンポーネントを前記コンピュータで動作させると選択する処理を更に実行させる。
【０００７】
請求項４に係る発明は、請求項１に記載のプログラムにおいて、ソフトウェアコンポーネントに関する情報を取得する処理と、前記取得された情報に基づいて、当該情報に対応するソフトウェアコンポーネントを前記コンピュータで動作させるか前記他のコンピュータで動作させるかを選択する処理と、前記取得された情報に対応するソフトウェアコンポーネントを前記他のコンピュータで動作させると選択された場合であって、前記他のコンピュータに当該ソフトウェアコンポーネントがインストールされていない場合に、当該ソフトウェアコンポーネントを動作させるために必要な情報を前記他のコンピュータへ送信する処理とを更に実行させる。
請求項５に係る発明は、請求項１に記載のプログラムにおいて、前記取得された情報に対応するソフトウェアコンポーネントを前記コンピュータで動作させると選択された場合であって、前記コンピュータに当該ソフトウェアコンポーネントがインストールされてない場合に、当該ソフトウェアコンポーネントの送信を要求する要求データを前記他のコンピュータ又は予め定められたコンピュータへ送信する処理と、前記要求データに対する応答として送信されてくる、ソフトウェアコンポーネントを動作させるために必要な情報を受信し、当該ソフトウェアコンポーネントのインストール処理を実行する処理とを更に実行させる。
【０００８】
請求項６に係る発明は、フレームワークプログラムと複数のコンポーネントプログラムとを記憶する記憶手段と、通信手段と、前記フレームワークプログラムに従い、前記複数のコンポーネントプログラムの各々に従う処理において利用されるプログラムを提供する第１のソフトウェアフレームワークを構築する処理と、前記通信手段により通信する他のコンピュータにおいて構築されている第２のソフトウェアフレームワークを認識する処理と、前記第１のソフトウェアフレームワークに、前記第２のソフトウェアフレームワークとの間のコネクションを開設させる処理と、前記複数のコンポーネントプログラムの各々に従い、前記第１のソフトウェアフレームワークの上で動作するソフトウェアコンポーネントを構築する処理と、前記第１のソフトウェアフレームワークの上で動作している一のソフトウェアコンポーネントに対し、前記一のソフトウェアコンポーネントが他のソフトウェアコンポーネントとの間で予め定められた規則に従う通信を行うためのインターフェースを提供する処理と、前記他のソフトウェアコンポーネントが前記第２のソフトウェアフレームワークの上で動作している場合、前記第１のソフトウェアフレームワークに、前記一のソフトウェアコンポーネントが前記インターフェースを介して前記他のソフトウェアコンポーネントとの間で行う通信を、前記コネクションを介して中継させる処理とを実行するデータ処理手段とを備える装置を提供する。
【発明の効果】
【０００９】
請求項１に記載の発明によれば、ソフトウェアシステムの一部を、ネットワークを介した装置、特にインターネット上のサーバ装置またはクラウドサービスに移行することが容易になる。
請求項２に記載の発明によれば、ソフトウェアシステムの一部を自コンピュータと異なる他のコンピュータで動作させることができる。
請求項３に記載の発明によれば、コンピュータのリソースに依存するソフトウェアコンポーネントをコンピュータで動作させることができる。
請求項４に記載の発明によれば、ソフトウェアシステムの一部を、ネットワークを介した装置、特にインターネット上のサーバ装置またはクラウドサービスに移行することができる。
請求項５に記載の発明によれば、ソフトウェアシステムの一部を、他のコンピュータから自コンピュータへ移行することができる。
請求項６に記載の発明によれば、ソフトウェアシステムの一部を、ネットワークを介した装置、特にインターネット上のサーバ装置またはクラウドサービスに移行することが容易になる。
【図面の簡単な説明】
【００１０】
【図１】通信システムの全体構成を示すブロック図である。
【図２】クラウドサービス提供装置のハードウェア構成を示すブロック図である。
【図３】画像処理装置のハードウェア構成を示すブロック図である。
【図４】クラウドサービス提供装置と画像処理装置の機能構成を示すブロック図である。
【図５】ＷｅｂＳｏｃｋｅｔプロトコルによる通信を説明するための図である。
【図６】パケットのデータ構造の一例を示す図である。
【図７】ＨＴＴＰヘッダの内容の一例を示す図である。
【図８】コンポーネントフレームワークが実行する起動処理の流れを示すフローチャートである。
【図９】コンポーネントフレームワークが実行する起動処理の流れを示すフローチャートである。
【図１０】コンポーネントフレームワークが実行する処理の流れを示すフローチャートである。
【図１１】通信システムの全体構成を示すブロック図である。
【図１２】通信システムの機能構成を示すブロック図である。
【図１３】通信システムの機能構成を示すブロック図である。
【図１４】通信システムの全体構成を示すブロック図である。
【図１５】従来の通信システムの機能構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１１】
１．第１実施形態
１−１．構成
図１は、本発明の実施形態に係る通信システム１の全体構成を示すブロック図である。通信システム１は、クラウドサービス提供装置１０と、画像処理装置２０とを備える。クラウドサービス提供装置１０は、いわゆるクラウドサービスを提供する装置である。ネットワーク３０は、ＬＡＮ（Local Area Network）やＷＡＮ（Wide Area Network）等のネットワークであり、クラウドサービス提供装置１０と画像処理装置２０とを接続する通信回線である。画像処理装置２０は、例えば電子写真方式の画像形成装置である。画像処理装置２０は、クラウドサービス提供装置１０から画像データを受信し、受信した画像データが示す画像を用紙などの媒体上に形成することによって、画像データを出力する。
【００１２】
１−２．クラウドサービス提供装置の構成
図２は、クラウドサービス提供装置１０のハードウェア構成の一例を示す図である。図において、制御部１１（データ処理手段の一例）は、ＣＰＵ（Central Processing Unit）等の演算装置と、ＲＯＭ（Read Only Memory）及びＲＡＭ（Random Access Memory）などの主記憶装置とを備えている。演算装置は、ＲＡＭをワークエリアとして用いてＲＯＭや記憶部１３に記憶されたプログラムを実行することによって、クラウドサービス提供装置１０の各部の動作を制御する。通信部１２は、ネットワーク３０を介して他の機器との間で通信をするためのインターフェースである。記憶部１３は、例えばハードディスク等の記憶デバイスであり、制御部１１が用いるデータやプログラムを記憶している。記憶部１３には、定義ファイル１４と、フレームワークプログラム１５と、コンポーネントプログラム１６とが記憶されている。定義ファイル１４は、クラウドサービス提供装置１０にインストールされているソフトウェアコンポーネント（以下、単に「コンポーネント」という）を示す情報や、インストールされているコンポーネントが使用する情報等、インストールされているコンポーネントに関連する情報を含む。フレームワークプログラム１５は、コンポーネントを稼働させるソフトウェアフレームワークのプログラムであり、コンポーネントプログラム１６はコンポーネントのプログラムである。
【００１３】
図３は、画像処理装置２０のハードウェア構成の一例を示す図である。図において、制御部２１（データ処理手段の一例）は、ＣＰＵなどの演算装置と、ＲＯＭ及びＲＡＭなどの主記憶装置とを備えている。ＲＯＭには、演算装置によって実行されるプログラムが記憶されている。演算装置は、ＲＡＭをワークエリアとして用いてＲＯＭや記憶部２７に記憶されたプログラムを実行することによって、画像処理装置２０の各部の動作を制御する。通信部２２は、ネットワーク３０を介して他の機器との間で通信をするためのインターフェースである。操作部２３は、各種のキーやタッチセンサなどの操作子を備え、利用者の操作に応じた操作信号を制御部２１に供給する。制御部２１は、この操作信号に応じた処理を行う。表示部２４は、液晶パネルや液晶駆動回路を備え、制御部２１による制御の下で画像を表示する。画像形成部２５は、電子写真方式で画像を形成する。画像読取部２６は、原稿の画像を光学的に読み取る。記憶部２７は、例えばハードディスク等の記憶デバイスであり、制御部２１が用いるデータやプログラムを記憶している。記憶部２７には、定義ファイル２７１と、フレームワークプログラム２７２と、コンポーネントプログラム２７３とが記憶されている。定義ファイル２７１は、画像処理装置２０にインストールされているコンポーネントを示す情報や、インストールされているコンポーネントが使用する情報等、インストールされているコンポーネントに関連する情報を含む。フレームワークプログラム２７２は、コンポーネントを稼働させるソフトウェアフレームワークのプログラムであり、コンポーネントプログラム２７３はコンポーネントのプログラムである。
【００１４】
図４は、クラウドサービス提供装置１０と画像処理装置２０の機能構成の一例を示す図である。クラウドサービス提供装置１０の制御部１１は、記憶部１３に記憶されているフレームワークプログラム１５に従ってコンポーネントフレームワーク１１１を構築し、各種コンポーネントプログラムを必要に応じて読み込み、読み込んだコンポーネントプログラムに従って、コンポーネントフレームワーク１１１により提供される各種機能を利用しつつ、各種コンポーネント（画像処理部１１２、等）を構築する。また、画像処理装置２０の制御部２１は、記憶部２７に記憶されているフレームワークプログラム２７２に従ってコンポーネントフレームワーク１２１を構築し、各種コンポーネントプログラムを必要に応じて読み込み、読み込んだコンポーネントプログラムに従って、コンポーネントフレームワーク１２１により提供される各種機能を利用しつつ、各種コンポーネント（読取制御部１２２、プリント制御部１２３、等）を構築する。以下、コンポーネントフレームワーク１１１、１２１や各コンポーネント（画像処理部１１２、読取制御部１２２、プリント制御部１２３、等）を動作の主体として説明するが、実際には制御部１１、２１がフレームワークプログラム１５、２７２やコンポーネントプログラム１５、２７３を読み出して実行することによって以下の動作が行われる。
【００１５】
コンポーネントフレームワーク１１１、１２１は、コンポーネントを稼働させるソフトウェアフレームワークであり、コンポーネントが利用するプログラムを提供する。この実施形態では、コンポーネントは、コンポーネントフレームワーク１１１、１２１に認識され実行されるソフトウェアのモジュールの単位である。コンポーネントフレームワーク１１１、１２１は、データの遣り取りを行うコンポーネントが自装置内に格納されているコンポーネント同士であるか否かによって通信の手法を切り替える。
【００１６】
コンポーネントフレームワーク１１１、１２１は、通信部１２、２２により通信する他のコンピュータにおいて構築されているソフトウェアフレームワークを認識する。また、コンポーネントフレームワーク１１１、１２１は、両者の間でコネクションを開設し、自コンポーネントフレームワーク上で動作している一のソフトウェアコンポーネントに対し、この一のソフトウェアコンポーネントが他のソフトウェアコンポーネントとの間で予め定められた規則に従う通信を行うためのインターフェースを提供する。また、コンポーネントフレームワーク１１１、１２１は、他のソフトウェアコンポーネントが他のコンポーネントフレームワークの上で動作している場合、自コンポーネントフレームワーク上で動作しているコンポーネントが上記インターフェースを介して他のコンポーネントとの間で行う通信を、開設したコネクションを介して中継させる。
【００１７】
以下の説明では、説明の便宜上、一のコンポーネントフレームワーク上で動作するコンポーネント同士で行う通信を「フレームワーク内通信」と呼び、一のコンポーネントフレームワーク上で動作するコンポーネントが他のコンポーネントフレームワーク上で動作するコンポーネントとデータの授受を行う場合の通信を「フレームワーク間通信」と呼ぶ。
【００１８】
フレームワーク間通信とフレームワーク内通信は、異なる通信プロトコルが適用される。フレームワーク間通信には、コネクションを維持する通信方式が適用される。また、この通信にはファイアウォールを透過可能な通信が適用される。具体的には例えば、ＴＣＰ／ＩＰのポート８０（ＨＴＴＰ）や４４３（ＳＳＬ）を用いてもよい。一方、フレームワーク内通信には、ネットワーク透過でない通信が適用される。例えば、Ｕｎｉｘ（登録商標）ドメインのソケット通信、名前付きパイプ、メッセージキューなどのプロセス間通信が適用される。なお、双方の通信共に、上位プロトコルは同一のプロトコルが適用される。この実施形態ではＣＯＲＢＡを用いてデータの授受が行われる。
【００１９】
コンポーネントフレームワーク１１１、１２１としては、例えば、ＯＳＧｉ、Ｓｔｒｕｔｓ、Ｓｅａｓａｒ、ＪＢｏｓｓなどが用いられてもよい。また、この実施形態では、コンポーネントフレームワーク１１１とコンポーネントフレームワーク１２１との通信はＷｅｂＳｏｃｋｅｔプロトコルが用いられる。ＷｅｂＳｏｃｋｅｔプロトコルは、コネクションを維持し、ファイアウォール透過なプロトコルである。この実施形態では、画像処理装置２０側のコンポーネントフレームワーク１２１がクライアント、クラウドサービス提供装置１０側のコンポーネントフレームワーク１１１がサーバとなるように機能する。
【００２０】
ここで、ＷｅｂＳｏｃｋｔプロトコルによるデータ通信について、図５乃至図７を参照しつつ説明する。図５は、ＷｅｂＳｏｃｋｅｔプロトコルによる通信を説明するための図であり、図６は、コンポーネントフレームワーク１１１、１２１間で遣り取りされるパケットのデータ構造の一例を示す図である。図７は、ＨＴＴＰヘッダの内容の一例を示す図である。コンポーネントフレームワーク１１１、１２１は、起動のタイミングでコネクションを開設し、開設したコネクションを維持する。図５において、まず、コンポーネントフレームワーク１１１、１２１は、ＴＣＰコネクションを開設する（ステップＳ１、Ｓ２）。ＴＣＰコネクションで用いられる制御パケットは図６の（ａ）に例示するデータ構造である。次いで、コンポーネントフレームワーク１２１がＨＴＴＰのＵＰＧＲＡＤＥリクエストを送信し（ステップＳ３）、コンポーネントフレームワーク１１１がＨＴＴＰレスポンスを送信することによって（ステップＳ４）、ＷｅｂＳｏｃｋｅｔのコネクションが開設される。ＨＴＴＰリクエスト及びＨＴＴＰレスポンスは図６の（ｂ）に例示するデータ構造であり、ＷｅｂＳｏｃｋｅｔにアップグレードされることにより、図６の（ｃ）に例示されるデータ構造となる。ＵＰＧＲＡＤＥリクエストのヘッダの一例を図７の（ａ）に示し、ＵＰＧＲＡＤＥレスポンスのヘッダの一例を図７の（ｂ）に示す。
【００２１】
このようにＨＴＴＰのＵＰＧＲＡＤＥリクエストによりＨＴＴＰからＷｅｂＳｏｃｋｅｔに変更され、変更後はＷｅｂＳｏｃｋｅｔヘッダを用いて通信が行われる。ＷｅｂＳｏｃｋｅｔプロトコルはコネクションを維持するプロトコルであるため、コネクション開設のオーバーヘッドが低減される。また、この実施形態では、ＨＴＴＰヘッダより軽量なＷｅｂＳｏｃｋｅｔを用いるためヘッダのオーバーヘッドがＨＴＴＰよりも少ない。
【００２２】
コネクションが開設されると、コンポーネントフレームワーク１２１とコンポーネントフレームワーク１１１とは、開設されたコネクションを用いてデータの授受を行う（図５のステップＳ５、Ｓ６）。ＷｅｂＳｏｃｋｅｔのデータ部には、種々のアプリケーションプロトコルに従ったデータを格納可能である。この実施形態では、コンポーネントフレームワーク１１１、１２１内で使用するＣＯＲＢＡプロトコルに従ったデータ形式のデータを遣り取りする。なお、図５のステップＳ５とＳ６に示したＷｅｂＳｏｃｋｅｔデータのリクエストとレスポンスの送信方向は逆方向であってもよい。すなわち、コンポーネントフレームワーク１１１がリクエストを送信し、コンポーネントフレームワーク１２１がレスポンスを送信してもよい。また、コンポーネントフレームワーク１１１とコンポーネントフレームワーク１２１とは独自に定めた認証方式で認証するようにしてもよい。
【００２３】
図４の説明に戻る。画像処理部１１２、読取制御部１２２、プリント制御部１２３は、コンポーネントフレームワーク１１１、１２１上で動作するコンポーネントの一例である。読取制御部１２２は、画像読取部２６を制御し、画像読取部２６に画像を読み取らせる機能を有する。読取制御部１２２は、インターフェース部１２２１を有する。インターフェース部１２２１は、プリント制御部１２３との間でデータを遣り取りするためのインターフェースを提供する。プリント制御部１２３は、画像形成部２７に画像データを供給し、画像形成部２７に画像を形成させる機能を有する。プリント制御部１２３は、インターフェース部１２３１、１２３２を有する。インターフェース部１２３１は、読取制御部１２２との間でデータを遣り取りするためのインターフェースを提供する。インターフェース部１２３２は、画像処理部１１２との間でデータを遣り取りするためのインターフェースを提供する。画像処理部１１２は、例えば文字認識処理やデータ形式の変換処理といった、画像データに対する各種の画像処理を行う。画像処理部１１２は、インターフェース部１１２１を有している。インターフェース部１１２１は、プリント制御部１２３との間でデータを遣り取りするためのインターフェースを提供する。
【００２４】
コンポーネントのインターフェースはＩＤＬ等のインターフェース定義言語で定義されている。なお、インターフェース定義言語は必ずしも必要ではない。各コンポーネントが予め定められた規約に従って実装されるようにしても良い。また、Ｊａｖａ（登録商標）のインターフェースのように、インターフェースがプログラムとして提供されてもよい。コンポーネントは、コンポーネントフレームワーク１１１、１２１が提供するＣＯＲＢＡ等の通信プロトコルを用いて通信する。各コンポーネントは、通信相手のコンポーネントが、同じコンポーネントフレームワーク上で動作しているコンポーネントであるか、他の装置のコンポーネントフレームワーク上で動作しているコンポーネントであるかを意識せずに通信する。
【００２５】
１−３．動作
次に、この実施形態の動作について説明する。まず、画像処理装置２０のコンポーネントフレームワーク１２１が行う動作について説明する。図８は、コンポーネントフレームワーク１２１の起動処理を示すフローチャートである。以下の説明では、説明の便宜上、画像処理装置２０を「ローカル」と呼び、クラウドサービス提供装置１０を「リモート」と呼ぶ。まず、コンポーネントフレームワーク１２１は、装置で実行する機能に関連する（必要な）コンポーネントの情報を得るとともに、リモートのアドレスを参照する。
【００２６】
図８において、コンポーネントフレームワーク１２１は、画像処理装置２０とクラウドサービス提供装置１０のコンポーネントフレームワークで稼働しているコンポーネントを識別する。具体的には、まず、ステップＳ１０１において、コンポーネントフレームワーク１２１は定義ファイル２７１を参照し、コンポーネントフレームワーク１２１で稼働するコンポーネントを識別する。また、ステップＳ１０２において、コンポーネントフレームワーク１２１は、定義ファイルに定義されているコンポーネントのうち、クラウドサービス提供装置１０で稼働しているコンポーネントをクラウドサービス提供装置１０のコンポーネントフレームワーク１１１に問い合わせる。コンポーネントフレームワーク１２１は、リモート側で実行する可能性のある処理、またはその処理に用いるコンポーネントの一覧を送信し、その中で実際にコンポーネントフレームワーク１１１で稼働しているコンポーネントを問い合わせるようにしてもよい。また、コンポーネントフレームワーク１２１は、ローカルの装置の種別、コンポーネントフレームワークのバージョン、ローカル側のコンポーネントの一覧およびそのバージョン、ローカルで提供する機能等を送信し、リモート側からそれに適合するコンポーネントの一覧の応答を得るようにしても良い。
【００２７】
このとき、コンポーネントフレームワーク１２１は、画像処理装置２０とクラウドサービス提供装置１０の両方に同一のコンポーネントが存在する場合に、クラウドサービス提供装置１０側のコンポーネントを利用すると選択してもよい。また、ローカルとリモートの両方に同一のコンポーネントが存在する場合にどちらのコンポーネントを利用するかの選択の手法はこれに限らず、例えば、コンポーネントフレームワーク１２１が、ローカルのリソースに依存するコンポーネントについてはローカルのコンポーネントを使用すると選択してもよい。
【００２８】
ステップＳ１０３において、コンポーネントフレームワーク１２１は、定義ファイル２７１に定義されたコンポーネントのうち、リモートに存在しないコンポーネントをローカルで起動する。なお、コンポーネントフレームワーク１２１は、定義ファイル２７１を参照するのに代えて、リポジトリ（ファイル、ディレクトリ）に格納されたコンポーネントを検索し起動してもよい。
【００２９】
ステップＳ１０４において、コンポーネントフレームワーク１２１は、リモートで稼働しているコンポーネントフレームワーク１１１とコネクションを確立し、ＷｅｂＳｏｃｋｅｔに移行する。このとき、コンポーネントフレームワーク１２１は、コンポーネントに対してＷｅｂＳｏｃｋｅｔ用のＵＲＩを割り当てる。ステップＳ１０５において、リモートで稼働しているコンポーネントを示す情報を定義ファイル２７１に記憶しておく。コンポーネントを示す情報としては、ＵＲＬやＵＵＩＤ等が用いられる。また、コネクションの識別キー等の情報であってもよい。
【００３０】
次いで、クラウドサービス提供装置１０のコンポーネントフレームワーク１１１が行う処理について、図９を参照しつつ説明する。図９は、コンポーネントフレームワーク１１１の処理の流れを示すフローチャートである。ステップＳ２０１において、コンポーネントフレームワーク１１１は、定義ファイル１４を参照し起動するコンポーネントを決定する。なお、コンポーネントフレームワーク１１１は、定義ファイル１４を参照せず、リポジトリ（ディレクトリ、フォルダ等）に格納されているプログラムを起動するようにしても良く、また、起動用のプログラム、スクリプトファイルに従って起動するようにしても良い。次いで、ステップＳ２０２において、コンポーネントフレームワーク１１１は、決定したコンポーネントを起動する。ここまでが、リモート側の初期処理である。
【００３１】
ステップＳ２０３において、コンポーネントフレームワーク１１１は、ローカルからの要求（ＴＣＰ／ＩＰコネクションの確立と、後続するＨＴＴＰ要求）を受け付ける。ステップＳ２０４において、コンポーネントフレームワーク１１１は、ステップＳ２０３で受け付けた要求がコンポーネントの問い合わせであるかを判定する。コンポーネントの問い合わせである場合は、コンポーネントフレームワーク１１１は、ステップＳ２０５において、ローカルからの問い合わせに対し、起動しているコンポーネントを示す情報を応答する。ここで、コンポーネントフレームワーク１１１は、ローカルからの問い合わせパラメータ（Ｓ１０２）に応じて、適切なコンポーネントを選択して応答するようにしても良い。
【００３２】
一方、ステップＳ２０３で受け付けた要求がコネクション確立要求であった場合、即ち、ＨＴＴＰ要求の内容がコネクション開設要求である（ＵＰＧＲＡＤＥ情報が含まれる。さらに、特定のＵＲＬであることを判断しても良い）場合（ステップＳ２０４；ＮＯ、ステップＳ２０６；ＹＥＳ）、コンポーネントフレームワーク１１１は、ステップＳ２０７において、コネクション開設を受け付け、ＵＰＧＲＡＤＥに応じる。ステップＳ２０８において、コンポーネントフレームワーク１１１は、要求元、即ちローカル側で稼働しているコンポーネントを示す情報を取得し、を定義ファイル１４に記憶する。コンポーネントを示す情報としては、ＵＲＬやＵＵＩＤ等が用いられる。また、コネクションの識別キー等の情報であってもよい。なお、コンポーネントフレームワーク１１１がステップＳ２０８を実行しない構成であってもよい。
【００３３】
次いで、コネクション確立後にコンポーネントフレームワーク１１１、１２１が行う処理の流れについて説明する。コンポーネントフレームワーク１２１は、コンポーネントからのデータをＷｅｂＳｏｃｋｅｔのフレームに変換して転送する。また、コンポーネントフレームワーク１２１は、リモートから受信したＷｅｂＳｏｃｋｅｔフレームをデコードし、コンポーネント間通信メッセージとしてコンポーネントに配送する。
【００３４】
図１０は、コンポーネントフレームワーク１１１、１２１がコネクション確立後にコンポーネントから要求を受け付けた場合の処理の流れを示すフローチャートである。なお、以下の説明では、コンポーネントフレームワーク１２１の動作について説明するが、コンポーネントフレームワーク１１１とコンポーネントフレームワーク１２１はいずれも図１０に示す同様の処理を実行する。コンポーネントフレームワーク１２１は、図１０のステップＳ３０１において、コンポーネントからの要求を受け付ける。ステップＳ３０２、Ｓ３０４において、コンポーネントフレームワーク１２１は、要求先がローカル宛（自コンポーネントフレームワーク１２１上で動作しているコンポーネント宛）であるかリモート宛（コネクションを確立した相手側コンポーネント宛）であるかを判断する。この判断は、図８のステップＳ１０５（コンポーネントフレームワーク１１１の場合は図９のステップＳ２０８）で定義ファイル２７１（又は定義ファイル１４）に記憶した情報を参照することにより行われる。なお、定義ファイル２７１、１４に記憶された情報を参照するのに代えて、自コンポーネントフレームワーク上で動作しているコンポーネントか否かを判断し、自コンポーネントフレームワーク上で動作していないコンポーネントである場合は、リモートと判断するようにしても良い。
【００３５】
ステップＳ３０３において、コンポーネントフレームワーク１２１は、ローカル(自コンポーネントフレームワーク内のコンポーネント)宛と判断された場合、フレームワーク内通信を適用する。これは、通常のコンポーネントフレームワーク内通信である。例えば、ＵＮＩＸドメインのソケット通信、パイプやメッセージキューなどのプロセス間通信を用いて通信する。
【００３６】
一方、リモート(他のコンポーネントフレームワークのコンポーネント)宛と判断された場合、コンポーネントフレームワーク１２１は、ステップＳ３０５において、フレームワーク間通信を適用する。この通信は、図８のステップＳ１０４及び図９のステップＳ２０７で確立したコネクションを用いて行われる。なお、ステップＳ３０３とステップＳ３０５のいずれの場合も、通信で使用する上位プロトコルは同一のものを使用する。例えば、自コンポーネントフレームワーク内ではＵＮＩＸドメインソケット通信を用い、コンポーネントフレームワーク間ではＷｅｂＳｏｃｋｅｔ通信を用いる場合、ＵＮＩＸドメインソケット通信に流されるプロトコルも、ＷｅｂＳｏｃｋｅｔのデータ内に流されるプロトコルもＣＯＲＢＡを用いる。コンポーネントから受け付けた要求がローカルのコンポーネント宛でもリモートのコンポーネント宛でもない場合には、コンポーネントフレームワーク１２１は、ステップＳ３０６においてエラー処理を行う。なお、コネクションが切断されていた場合、コンポーネントフレームワーク１２１は、その状態を検知した時点で、ステップＳ１０４の処理を再度実行しコネクションを再開設してからコンポーネントフレームワーク間通信を行うようにしても良い。
【００３７】
図１５は従来のシステムの構成の一例を示す図である。このシステムでは、あるコンポーネント（画像処理サービス１２５）の機能を、クラウド上のサーバ装置１０Ｂにマイグレーションする場合、ＷｅｂサービスのＷＳＤＬを用いて生成したスタブ１２４２を使用し、コンポーネントフレームワーク１２１Ｂのスケルトン１２４１で受け付けた要求を、生成したスタブ１２４２を用いて要求する、といった、変換およびリダイレクトを行うコンポーネント（リダイレクタ１２４）を作成している。この変換はコンポーネントが提供するサービス毎に異なるので、利用する機能毎、コンポーネント毎にリダイレクタを作成している。
【００３８】
この実施形態では、コンポーネントはコンポーネントフレームワークを経由してデータの授受を行うため、コンポーネントをクラウド上にマイグレーションする場合であってもリダイレクタを作成する必要がない。
また、この実施形態では、クラウドサービス提供装置１０を利用することで、図１５のシステムの構成と比べてＣＰＵ時間やメモリを要する処理に要する時間が短縮される。
また、本実施形態では、コンポーネントフレームワーク間のリモート通信にＷｅｂＳｏｃｋｅｔプロトコルを適用する。ＷｅｂＳｏｃｋｅｔプロトコルはコネクションを維持し、コネクション維持中はＨＴＴＰヘッダを省略するため、ＷｅｂＳｏｃｋｅｔプロトコルを適用しない場合と比べてデータ量が削減される。
【００３９】
２．第２実施形態
２−１．構成
次いで、本発明の第２の実施形態について説明する。この実施形態では、コンポーネントを配置する配置機構を利用し、コンポーネントをコンポーネントフレームワーク１１１とコンポーネントフレームワーク１２１との一方又は両方で稼働させる。図１１は、この実施形態に係る通信システム１Ａの全体構成を示すブロック図である。通信システム１Ａが上述した第１の実施形態に係る通信システム１と異なる点は、通信システム１Ａがコンポーネント配置装置６０を有している点である。なお、この実施形態において、上述した第１の実施形態と同様の構成要素については同じ符号を付してその説明を省略する。
【００４０】
コンポーネント配置装置６０は、制御部６１と、通信部６２と、記憶部６３とを備える。制御部６１はＣＰＵ等の演算装置とＲＯＭ及びＲＡＭなどの主記憶装置とを備えている。演算装置は、ＲＡＭをワークエリアとして用いてＲＯＭや記憶部６３に記憶されているプログラムを実行することによって、コンポーネント配置装置６０の各部の動作を制御する。通信部６２は、ネットワーク３０を介して他の機器との間で通信をするためのインターフェースである。記憶部６３は、例えばハードディスク等の記憶デバイスであり、制御部６１が用いるデータやプログラムを記憶している。記憶部６３は、コンポーネントリポジトリ６４を有する。コンポーネントリポジトリ６４には、コンポーネントをインストールするために必要なデータが格納されている。また、記憶部６３には、後述する配置機構１６１（図１２参照）の機能を実現するためのプログラム（図示略）が記憶されている。
【００４１】
図１２は通信システム１Ａに係る機能構成の一例を示す図である。コンポーネント配置装置６０の制御部６１は、記憶部６３に記憶されたプログラムを読み出して実行することにより、配置機構１６１の機能を実現する。配置機構１６１は、取得手段１６２と、選択手段１６３と、送信手段１６４とを備える。取得手段１６２は、コンポーネントに関する情報を取得する。この情報は、例えば、画像処理装置２０の利用者が操作部２３を用いて自身が利用したい機能を選択し、制御部２１が操作部２３から出力される情報に応じて選択された機能に対応する情報として送信するものであってもよい。また、例えば、コンポーネントレポジトリ６４に格納されたコンポーネントのリストが記憶部６３に予め記憶されており、記憶されたリストを取得手段１６２が取得するものであってもよい。
【００４２】
選択手段１６３は、取得手段１６２によって取得された情報に基づいて、取得された情報に対応するコンポーネントを、画像処理装置２０及びクラウドサービス提供装置１０の少なくともいずれか一方の装置で動作させるかを選択する。この選択の手法は、例えば、ローカルのリソースに依存するコンポーネントはローカルで動作させると選択してもよい。具体的には、例えば、入出力装置と関連するコンポーネントや、ユーザー操作を扱うコンポーネント、ローカルのデータと関連するコンポーネント、オンプレミスのシステム、ディレクトリサーバ、認証サーバ等と連携するコンポーネントについては、ローカルで動作させると選択してもよい。また、コンポーネントが提供するサービスや機能に関し、そのサービスや機能の利用範囲（事業者／イントラ内／グローバル、等）を示す属性に基づいて選択を行ってもよい。
【００４３】
送信手段１６４は、選択手段１６４によって画像処理装置２０上で動作させると選択されたコンポーネントのインストールに必要なデータを画像処理装置２０へ送信する。また、送信手段１６４は、選択手段１６４によってクラウドサービス提供装置１０上で動作させると選択されたコンポーネントのインストールに必要なデータをクラウドサービス提供装置１０へ送信する。このとき、送信手段１６４は、送信先の装置に既にそのコンポーネントがインストールされている場合には、インストールに必要なデータを送信しない。配置機構１６１は、例えば、Ｍａｖｅｎ等のソフトウェアである。配置機構１６１は、画像処理装置２０やクラウドサービス提供装置１０にインストールされたコンポーネントを更新する更新機能を備えていてもよい。
【００４４】
２−２．動作
次いで、この実施形態の動作の一例について説明する。配置機構１６１は、予め定められた条件が満たされたタイミングにおいて、以下に示すコンポーネントの配置処理を実行する。配置のタイミングとしては、例えば、画像処理装置２０の起動のタイミングで行ってもよく、また、画像処理装置２０の停止時、画像処理装置２０がスリープモードに移行する前、画像処理装置２０が予め定められた時間利用されていない場合、等、予め定められたタイミングでもよい。画像処理装置２０が予め定められた条件が満たされたタイミングでコンポーネント配置装置６０に対してデータを送信し、コンポーネント配置装置６０がそのデータを受信することによって配置機構１６１が配置処理を開始する。画像処理２０が予め定められた時間利用されていない場合に配置変更を行う場合は、配置機構１６１は、変更処理中に利用を検知した場合は、切り替えを中止するようにしてもよい。
【００４５】
配置機構１６１は、予め定められた条件が満たされたタイミングにおいて、コンポーネントに関する情報を取得し、取得した情報に対応するコンポーネントを画像処理装置２０で動作させるかクラウドサービス提供装置１０で動作させるかを選択する。配置機構１６１は、画像処理装置２０上で動作させると選択したコンポーネントについては、そのコンポーネントのインストールに必要なデータを画像処理装置２０へ送信する。また、配置機構１６１は、クラウドサービス提供装置１０上で動作させると選択したコンポーネントについては、そのコンポーネントのインストールに必要なデータをクラウドサービス提供装置１０へ送信する。
【００４６】
また、配置機構１６１は、コンポーネントの配置の変更に合わせてデータを移動してもよい。例えば、クラウドサービス提供装置１０で動作させると選択したコンポーネントが画像処理装置２０にインストールされている場合には、配置機構１６１は、ローカル側のコンポーネントが扱うデータ（コンポーネントの外部から参照できないデータ、等）をリモート側に移動し、移動が完了した時点でリモートのコンポーネントを利用するようにしてもよい。この場合、配置機構１６１は、移動が完了した時点でリモートのコンポーネントに接続を切り替え、ローカルのコンポーネントとデータは使用しないようにしてもよい。切り替えのタイミングとしては、例えば、シャットダウン、ブート、アイドル時などであってもよく、また、例えば、夜間の時間帯等、予め定められた時間帯に切り替えるようにしてもよい。なお、ローカルのコンポーネントとデータは削除せずに維持し、リモートのコンポーネントと接続できない場合に利用してもよい。その場合、ローカル側に保持しているデータは、予め定められたタイミングでリモート側のデータと同期しておく。
【００４７】
このようにして、画像処理装置２０は、配置機構に登録されているコンポーネントを予め定められた条件が満たされたタイミングで検索し、利用可能なものや定義ファイルに記載されているものを自装置に配置（ダウンロード）する。
【００４８】
また、配置機構１６１は、画像処理装置２０にインストールされたコンポーネントのバージョンとクラウドサービス提供装置１０にインストールされたコンポーネントのバージョンとが整合しない場合、画像処理装置２０及びクラウドサービス提供装置１０の少なくともいずれか一方にバージョンの不整合を是正するためのアダプタコンポーネントを配置し、アダプタコンポーネント経由で通信を行わせるようにしてもよい。
【００４９】
３．変形例
上述した実施形態は、本発明の一例であり、以下のように変形してもよい。また、以下の変形例は、互いに組み合わせてもよい。
【００５０】
（１）上述の各実施形態では、画像処理装置２０とクラウドサービス提供装置１０とで処理を分担する通信システムについて説明したが、本発明に係る通信システムは上述した実施形態で示したものに限定されない。例えば、図１３に示すように複数の画像処理装置２０Ａ、２０Ｂと、クラウドサービス提供装置１０Ａとがインターネット４０を介して通信する分散処理システムであってもよい。また、ファイアウォール５０を越える場合にフレームワーク間通信を適用するようにしても良い。例えば、イントラネット内通信では、コンポーネントフレームワーク１２１Ａ、１２１Ｂ、１１１Ａで予め決められたポート番号（８０以外）を、宛先ポートとして用いて通信する一方、インターネットを介する場合は、宛先ポートとして「８０」を使用するようにしてもよい。
また、イントラネット、インターネットの判断は、相手のＩＰアドレスなどで判断してもよい。また、通常のフレームワーク間通信がエラーになるかをプローブ処理で確認したのち適用するようにしてもよい。
【００５１】
（２）上述の第２の実施形態では、クラウドサービス提供装置１０とコンポーネント配置装置６０とを別体の装置として設ける場合について説明したが、クラウドサービス提供装置１０とコンポーネント配置装置６０とが一体として構成されていてもよい。すなわち、クラウドサービス提供装置１０が配置機構を備える構成であってもよい。この場合、クラウドサービス提供装置１０の制御部１１（取得手段、選択手段、送信手段、要求データ送信手段、インストール実行手段の一例）は、ソフトウェアコンポーネントに関する情報を取得し、取得した情報に基づいて、その情報に対応するソフトウェアコンポーネントをクラウドサービス提供装置１０で動作させるか画像処理装置２０で動作させるかを選択する。制御部１１は、コンポーネントを画像処理装置２０で動作させると選択した場合であって、画像処理装置２０にそのコンポーネントがインストールされていない場合には、インストールに必要な情報を画像処理装置２０へ送信する。また、制御部１１は、コンポーネントを自装置で動作させると選択した場合であって、自装置にそのコンポーネントがインストールされていない場合に、インストールに必要なデータを要求する旨を示すデータを画像処理装置２０へ送信し、その応答として送信されてくる、コンポーネントのインストールに必要なデータを受信し、インストール処理を実行する。
【００５２】
また、画像処理装置２０とコンポーネント配置装置６０とが一体として構成されていてもよい。すなわち、画像処理装置２０が配置機構を備える構成であってもよい。この場合、画像処理装置２０の制御部２１（取得手段、選択手段、送信手段、要求データ送信手段、インストール実行手段の一例）は、上述の制御部１１と同様の処理を行ってコンポーネントの配置処理を行う。
【００５３】
（３）上述の各実施形態では、コンポーネントフレームワーク間の通信にＷｅｂＳｏｃｋｅｔプロトコルを適用したが、フレームワーク間の通信で用いられる通信プロトコルはこれに限らず、他の通信プロトコルであってもよい。例えば、ＨＴＴＰのＫｅｅｐ−Ａｌｉｖｅヘッダを用いることによってコネクションを維持するようにしてもよい。なお、コンポーネントフレームワーク間の通信には、ファイアウォールを透過可能な通信を適用することが好ましい。具体的には、例えば、ＴＣＰ／ＩＰのポート８０（ＨＴＴＰ）や４４３（ＳＳＬ）を用いてもよい。
【００５４】
（４）上述の各実施形態では、コンポーネントフレームワークとして、ＯＳＧｉ等を例示したが、コンポーネントフレームワークはこれに限定されない。例えばソフトウェアプラットフォームであっても良い。その場合、アプリケーションがコンポーネントに相当する。
【００５５】
（５）上述の第１の実施形態において、画像処理装置２０とクラウドサービス提供装置１０の両方に同一のコンポーネントが存在する場合に、コンポーネントフレームワーク１２１が、どちらのコンポーネントを使用するかを動的に変更してもよい。この場合は、ローカルとリモートの両方に同一のコンポーネントを配置しておき、コンポーネントフレームワーク１２１は、どちらのコンポーネントを利用する方が有利かをその都度判断する。この判断は、例えば、時間帯や通信のトラフィック状況、クラウドサービス提供装置１０の処理負荷の状況等に従って判断してもよい。
【００５６】
また、コンポーネントフレームワーク１１１、１２１が判断を行うのに代えて、判断を行う独立したコンポーネントを設け、コンポーネントフレームワークはそのコンポーネントに判断を要求し、その応答に応じて、送信先を切り替えるようにしてもよい。この場合、コンポーネントフレームワーク１１１、１２１は、相手側のコンポーネントフレームワークとのコネクションを動的に開設しても良い。
【００５７】
また、ローカルとリモートとのいずれを用いるかを選択する他の手法として、コンポーネントフレームワーク１２１が機能やサービスの利用範囲に応じて分担を変更するようにしてもよい。具体的には、例えば、コンポーネントが提供する機能やサービスが共用である場合、コンポーネントフレームワーク１２１がリモートのコンポーネントを利用すると選択してもよい。また、例えば、契約等により、サイト内のサーバ上／クラウド上の機能を共用することなどの設定がなされている場合に、その設定内容に従ってコンポーネントフレームワーク１２１が選択を行ってもよい。
また、電子文書格納機能において、電子文書を共有するか否か、共有範囲がサイト内であるか否か、サイト間で共用するか否か、といった条件に従ってコンポーネントフレームワーク１２１が選択を行ってもよい。
【００５８】
（６）上述の第２の実施形態では、コンポーネントフレームワーク１１１、１２１のバージョンが整合していない場合にアダプタソフトウェアを利用する構成としたが、これに限らず、バージョンが整合していない場合にリモート側のコンポーネントは使用しないように制御してもよい。また、リモート側のコンポーネントフレームワーク１１１のバージョンに応じて、異なるフレームワーク間通信（例えば異なるバージョンのＷｅｂＳｏｃｋｅｔプロトコル）を適用してもよい。
【００５９】
（７）通信システム１の構成は、上述した実施形態で説明した構成に限定されない。例えば、通信システム１を構成する各装置の数は、実施形態とは異なる数であってもよい。例えば、上述の実施形態では、通信システム１が１台の画像処理装置２０を備える例を示したが、画像処理装置２０の数は１に限らず、複数であってもよい。また、上述の実施形態では、ひとつのクラウドサービスを１台のクラウドサービス提供装置が提供したが、これに限らず、ひとつのクラウドサービスが複数のサーバ装置によって提供されてもよい。
【００６０】
また、図１４に示すように、画像処理装置２０ａがローカル装置２０ｂを介してクラウドサービス提供装置１０と接続される構成であってもよい。
【００６１】
（８）上述した実施形態で説明した画像処理装置２０は、クラウドサービス提供装置１０からサービスの提供を受けるクライアント装置の一例である。このクライアント装置は、例えばパーソナルコンピュータ、タブレットＰＣ（Personal Computer）、携帯電話機等の他の装置であってもよい。
【００６２】
（９）クラウドサービス提供装置１０又は画像処理装置２０において実行されるプログラムは、インターネットなどの通信回線を介してダウンロードされてもよい。また、このプログラムは、磁気記録媒体（磁気テープ、磁気ディスクなど）、光記録媒体（光ディスクなど）、光磁気記録媒体、半導体メモリなどの、コンピュータが読取可能な記録媒体に記録した状態で提供されてもよい。
【符号の説明】
【００６３】
１…通信システム、１０…クラウドサービス提供装置、１１，２１…制御部、１２，２２…通信部、１３，２３…記憶部、１４，２７１…定義ファイル、１５…フレームワークプログラム、１６…コンポーネントプログラム、２０…画像処理装置、２４…表示部、２５…画像形成部、２６…画像読取部、２７…記憶部、３０…ネットワーク、１１１，１２１…コンポーネントフレームワーク、１１２…画像処理部、１２２…読取制御部、１２３…プリント制御部、２７２…フレームワークプログラム、２７３…コンポーネントプログラム。
【図１】
2014186473.tif 000003
【図２】
2014186473.tif 000004
【図３】
2014186473.tif 000005
【図４】
2014186473.tif 000006
【図５】
2014186473.tif 000007
【図６】
2014186473.tif 000008
【図７】
2014186473.tif 000009
【図８】
2014186473.tif 000010
【図９】
2014186473.tif 000011
【図１０】
2014186473.tif 000012
【図１１】
2014186473.tif 000013
【図１２】
2014186473.tif 000014
【図１３】
2014186473.tif 000015
【図１４】
2014186473.tif 000016
【図１５】
2014186473.tif 000017