(57)【要約】【課題】複数の実行環境を提供可能なＯＳ上で動作するプログラムに関して、プログラムの開発に要する手間をなくし、実行時における操作者の負担もなくす。【解決手段】一の実行環境である第１環境制御部１１の制御下で動作する第１アプリケーション実行部１２と、第１環境制御部１１の制御下で動作し、第１アプリケーション実行部１２から呼び出されて特定の機能を提供する第１拡張機能実行部１３と、他の一の実行環境である第２環境制御部２１の制御下で動作する第２アプリケーション実行部２２と、第２環境制御部２１の制御下で動作し、第２アプリケーション実行部２２から呼び出されると、第１拡張機能実行部１３を起動し、第１拡張機能実行部１３により実行された処理の結果を取得して第２アプリケーション実行部２２に返す第２拡張機能実行部２３と、を備える。【選択図】図３
2019028622.tif 000002
【特許請求の範囲】
【請求項１】
一の実行環境で動作し、一のアプリケーション・プログラムを実行する第１アプリケーション実行部と、
前記一の実行環境で動作し、前記第１アプリケーション実行部から呼び出されて特定の機能を提供する第１機能実行部と、
前記一の実行環境とは異なる他の一の実行環境で動作し、前記一のアプリケーション・プログラムとは異なる他のアプリケーション・プログラムを実行する第２アプリケーション実行部と、
前記他の一の実行環境で動作し、前記第２アプリケーション実行部から呼び出されると、前記第１機能実行部を起動し、当該第１機能実行部により実行された処理の結果を取得して当該第２アプリケーション実行部に返す第２機能実行部と、
を備えることを特徴とする、情報処理装置。
【請求項２】
前記第２機能実行部は、前記第１機能実行部の処理に用いられる情報をパラメータとして当該第１機能実行部を起動することにより、当該情報を当該第１機能実行部に渡し、
前記第１機能実行部は、処理結果の情報をパラメータとして前記第２機能実行部を起動することにより、当該処理結果の情報を当該第２機能実行部に渡すことを特徴とする、請求項１に記載の情報処理装置。
【請求項３】
前記第２機能実行部は、オペレーティング・システムにより制御されるプロセス間通信により、前記第１機能実行部から取得した情報を前記第２アプリケーション実行部に送ることを特徴とする、請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記第１機能実行部により起動された前記第２機能実行部は、前記第２アプリケーション実行部により呼び出された第２機能実行部とは別プロセスであり、当該第１機能実行部から取得したパラメータから当該第１機能実行部の処理結果を抽出し、当該第２アプリケーション実行部により呼び出された第２機能実行部へ中継することを特徴とする、請求項２に記載の情報処理装置。
【請求項５】
前記第１機能実行部は、特定の設定内容に関する設定画面を表示装置に表示し、当該設定画面に対して行われた操作を受け付ける機能を有し、
前記第２機能実行部は、前記第２アプリケーション実行部に関する設定画面の表示および操作者の設定操作の受け付けを、起動した前記第１機能実行部に実行させることを特徴とする、請求項１に記載の情報処理装置。
【請求項６】
前記第２機能実行部により起動された前記第１機能実行部は、受け付けた操作の情報をパラメータとして第２機能実行部を起動することにより、当該操作の情報を当該第２機能実行部に渡すことを特徴とする、請求項５に記載の情報処理装置。
【請求項７】
一のドライバ・プログラムに基づいて画像形成装置の動作を制御すると共に、設定画面を表示し、当該設定画面上での操作による設定を受け付けて、当該画像形成装置に対する制御に反映させる第１の制御手段と、
前記一のドライバ・プログラムとは異なる他のドライバ・プログラムに基づいて前記画像形成装置の動作を制御すると共に、前記第１の制御手段に前記設定画面を表示させ、当該設定画面上での操作による設定情報を当該第１の制御手段から取得し、当該設定情報に基づく設定を当該画像形成装置に対する制御に反映させる第２の制御手段と、
を備えることを特徴とする、情報処理装置。
【請求項８】
前記第２の制御手段は、前記第１の制御手段により前記設定画面を表示させるために用いられる情報をパラメータとして当該第１の制御手段における特定のモジュールを起動することにより、当該情報を当該第１の制御手段に渡し、
前記第１の制御手段は、前記設定情報をパラメータとして前記第２の制御手段における特定のモジュールを起動することにより、当該設定情報を当該第２の制御手段に渡すことを特徴とする、請求項７に記載の情報処理装置。
【請求項９】
プログラムのプロセスを実行する複数の実行部の間で情報を受け渡す方法であって、
第１の実行部が、第１プロトコルを用いて第２の実行部を起動するステップと、
前記第２の実行部が、第２プロトコルを用いて第３の実行部を起動し、処理結果の情報を当該第３の実行部に渡すステップと、
前記第３の実行部が、前記第１の実行部との間で実行可能なプロセス間通信により、前記第２の実行部から取得した当該第２の実行部による前記処理結果の情報を当該第１の実行部に送るステップと、
を含むことを特徴とする、方法。
【請求項１０】
前記第２の実行部が前記処理結果の情報を前記第３の実行部に渡すステップでは、当該第２の実行部が当該第３の実行部を起動する際のパラメータとして、当該処理結果の情報を当該第３の実行部に渡し、
前記第３の実行部が前記処理結果の情報を前記第１の実行部に送るステップでは、オペレーティング・システムにより制御されるプロセス間通信により、当該処理結果の情報を当該第１の実行部に送ることを特徴とする、請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および方法に関する。
【背景技術】
【０００２】
複数の実行環境を提供可能なＯＳ（Operating System）上で動作するプログラムに関して、同一の機能を各実行環境で実現するためには、各実行環境でそれぞれ実行されるプログラムを個別に用意する必要があった。また、一の実行環境での操作時に、他の実行環境で動作するプログラムにより提供される機能を使用したい場合、実行環境の切り替えを要していた。
【０００３】
特許文献１には、第１の環境において第２の環境で動作するソフトウェアを起動する起動手段を有し、このソフトウェアが起動されることにより第１の環境から第２の環境に変更される情報処理装置が開示されている。また、特許文献２には、第１のＵＩ環境および第２のＵＩ環境を提供するＯＳと画像形成装置を制御するための制御プログラムとを実行する制御部を備え、第１のＵＩ環境における要求の実行に応じて第２のＵＩ環境において処理が行われる際に、第１のＵＩ環境において第２のＵＩ環境への切り替えを促す通知画面表示を行う情報処理装置が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５９１１３０９号公報
【特許文献２】特許第５２３０８２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記のように、実行環境を切り替えて所望の機能を使用する場合、実行環境が切り替わる前後で実行環境に依存する操作性が変化するため、操作者にとって負担であった。
【０００６】
これに対し、複数の実行環境を提供可能なＯＳ上で動作するプログラムに関して、同一の機能を提供するプログラムを各実行環境でそれぞれ用意すると、プログラムの開発に要する手間の増大を招く。さらに、異なる実行環境で機能を提供するため、ユーザ・インターフェース（ＵＩ）が異なることとなり、操作者に負担を課すこととなる。
【０００７】
本発明は、複数の実行環境を提供可能なＯＳ上で動作するプログラムに関して、開発に際し異なる実行環境で同一の機能を提供する手間をなくし、実行環境が切り替わる前後で実行環境に依存する操作性の変化によって生じる操作者の負担をなくすことを目的とする。
【課題を解決するための手段】
【０００８】
請求項１に係る本発明は、
一の実行環境で動作し、一のアプリケーション・プログラムを実行する第１アプリケーション実行部と、
前記一の実行環境で動作し、前記第１アプリケーション実行部から呼び出されて特定の機能を提供する第１機能実行部と、
前記一の実行環境とは異なる他の一の実行環境で動作し、前記一のアプリケーション・プログラムとは異なる他のアプリケーション・プログラムを実行する第２アプリケーション実行部と、
前記他の一の実行環境で動作し、前記第２アプリケーション実行部から呼び出されると、前記第１機能実行部を起動し、当該第１機能実行部により実行された処理の結果を取得して当該第２アプリケーション実行部に返す第２機能実行部と、
を備えることを特徴とする、情報処理装置である。
請求項２に係る本発明は、
前記第２機能実行部は、前記第１機能実行部の処理に用いられる情報をパラメータとして当該第１機能実行部を起動することにより、当該情報を当該第１機能実行部に渡し、
前記第１機能実行部は、処理結果の情報をパラメータとして前記第２機能実行部を起動することにより、当該処理結果の情報を当該第２機能実行部に渡すことを特徴とする、請求項１に記載の情報処理装置である。
請求項３に係る本発明は、
前記第２機能実行部は、オペレーティング・システムにより制御されるプロセス間通信により、前記第１機能実行部から取得した情報を前記第２アプリケーション実行部に送ることを特徴とする、請求項１または請求項２に記載の情報処理装置である。
請求項４に係る本発明は、
前記第１機能実行部により起動された前記第２機能実行部は、前記第２アプリケーション実行部により呼び出された第２機能実行部とは別プロセスであり、当該第１機能実行部から取得したパラメータから当該第１機能実行部の処理結果を抽出し、当該第２アプリケーション実行部により呼び出された第２機能実行部へ中継することを特徴とする、請求項２に記載の情報処理装置である。
請求項５に係る本発明は、
前記第１機能実行部は、特定の設定内容に関する設定画面を表示装置に表示し、当該設定画面に対して行われた操作を受け付ける機能を有し、
前記第２機能実行部は、前記第２アプリケーション実行部に関する設定画面の表示および操作者の設定操作の受け付けを、起動した前記第１機能実行部に実行させることを特徴とする、請求項１に記載の情報処理装置である。
請求項６に係る本発明は、
前記第２機能実行部により起動された前記第１機能実行部は、受け付けた操作の情報をパラメータとして第２機能実行部を起動することにより、当該操作の情報を当該第２機能実行部に渡すことを特徴とする、請求項５に記載の情報処理装置である。
請求項７に係る本発明は、
一のドライバ・プログラムに基づいて画像形成装置の動作を制御すると共に、設定画面を表示し、当該設定画面上での操作による設定を受け付けて、当該画像形成装置に対する制御に反映させる第１の制御手段と、
前記一のドライバ・プログラムとは異なる他のドライバ・プログラムに基づいて前記画像形成装置の動作を制御すると共に、前記第１の制御手段に前記設定画面を表示させ、当該設定画面上での操作による設定情報を当該第１の制御手段から取得し、当該設定情報に基づく設定を当該画像形成装置に対する制御に反映させる第２の制御手段と、
を備えることを特徴とする、情報処理装置である。
請求項８に係る本発明は、
前記第２の制御手段は、前記第１の制御手段により前記設定画面を表示させるために用いられる情報をパラメータとして当該第１の制御手段における特定のモジュールを起動することにより、当該情報を当該第１の制御手段に渡し、
前記第１の制御手段は、前記設定情報をパラメータとして前記第２の制御手段における特定のモジュールを起動することにより、当該設定情報を当該第２の制御手段に渡すことを特徴とする、請求項７に記載の情報処理装置である。
請求項９に係る本発明は、
プログラムのプロセスを実行する複数の実行部の間で情報を受け渡す方法であって、
第１の実行部が、第１プロトコルを用いて第２の実行部を起動するステップと、
前記第２の実行部が、第２プロトコルを用いて第３の実行部を起動し、処理結果の情報を当該第３の実行部に渡すステップと、
前記第３の実行部が、前記第１の実行部との間で実行可能なプロセス間通信により、前記第２の実行部から取得した当該第２の実行部による前記処理結果の情報を当該第１の実行部に送るステップと、
を含むことを特徴とする、方法である。
請求項１０に係る本発明は、
前記第２の実行部が前記処理結果の情報を前記第３の実行部に渡すステップでは、当該第２の実行部が当該第３の実行部を起動する際のパラメータとして、当該処理結果の情報を当該第３の実行部に渡し、
前記第３の実行部が前記処理結果の情報を前記第１の実行部に送るステップでは、オペレーティング・システムにより制御されるプロセス間通信により、当該処理結果の情報を当該第１の実行部に送ることを特徴とする、請求項９に記載の方法である。
【発明の効果】
【０００９】
請求項１の発明によれば、複数の実行環境を提供可能なＯＳ上で動作するプログラムに関して、異なる実行環境の機能実行部ごとに個別に同一の機能を用意したり、実行環境を切り替えたりする構成と比較して、開発に際し異なる実行環境で同一の機能を提供する手間をなくし、実行環境が切り替わる前後で実行環境に依存する操作性の変化によって生じる操作者の負担をなくすことができる。
請求項２の発明によれば、異なる実行環境で動作するプロセス間での通信が制限されている場合であっても、相手の機能実行部へ情報を伝達し、機能を利用することができるため、異なる実行環境の機能実行部ごとに個別に同一の機能を用意したり、実行環境を切り替えたりする構成と比較して、開発に際し異なる実行環境で同一の機能を提供する手間をなくし、実行環境が切り替わる前後で実行環境に依存する操作性の変化によって生じる操作者の負担をなくすことができる。
請求項３の発明によれば、全てのプロセス間での情報伝達に起動時のパラメータの受け渡しを用いる構成と比較して、プロセス間通信が制限されていないプロセス間では、起動時のパラメータを用いるよりも自由度の高い情報伝達を行うことができる。
請求項４の発明によれば、中継用の機能実行部を介在させない構成と比較して、既に起動している機能実行部に対しても起動時のパラメータの受け渡しによる情報の伝達を行うことができる。
請求項５の発明によれば、設定画面を表示する機能を異なる実行環境の機能実行部ごとに個別に用意したり、実行環境を切り替えたりする構成と比較して、開発に際し異なる実行環境で同一の機能を提供する手間をなくし、実行環境が切り替わる前後で実行環境に依存する操作性の変化によって生じる操作者の負担をなくすことができる。
請求項６の発明によれば、操作者の設定操作を受け付ける機能を異なる実行環境の機能実行部ごとに個別に用意したり、実行環境を切り替えたりする構成と比較して、開発に際し異なる実行環境で同一の機能を提供する手間をなくし、実行環境が切り替わる前後で実行環境に依存する操作性の変化によって生じる操作者の負担をなくすことができる。
請求項７の発明によれば、複数の制御手段の各々において個別に同一の機能を用意する構成と比較して、開発に際し異なる実行環境で同一の機能を提供する手間をなくし、実行環境が切り替わる前後で実行環境に依存する操作性の変化によって生じる操作者の負担をなくすことができる。
請求項８の発明によれば、制御手段の間での通信が制限されている場合であっても、相手の制御手段へ情報を伝達することができるため、制御手段ごとに個別に同一の機能を用意する構成と比較して、開発に際し異なる実行環境で同一の機能を提供する手間をなくし、実行環境が切り替わる前後で実行環境に依存する操作性の変化によって生じる操作者の負担をなくすことができる。
請求項９の発明によれば、実行部ごとに個別に同一の機能を用意する構成と比較して、開発に際し異なる実行環境で同一の機能を提供する手間をなくし、実行環境が切り替わる前後で実行環境に依存する操作性の変化によって生じる操作者の負担をなくすことができる。
請求項１０の発明によれば、実行部の間で通信が制限されている場合であっても、相手の実行部へ情報を伝達することができるため、実行部ごとに個別に同一の機能を用意する構成と比較して、開発に際し異なる実行環境で同一の機能を提供する手間をなくし、実行環境が切り替わる前後で実行環境に依存する操作性の変化によって生じる操作者の負担をなくすことができる。
【図面の簡単な説明】
【００１０】
【図１】情報処理装置のハードウェア構成例を示す図である。
【図２】情報処理装置におけるソフトウェア構成例を示す図である。
【図３】情報処理装置の機能構成例を示す図である。
【図４】本実施形態の情報処理装置を適用する第１実装例を示す図である。
【図５】第１実装例において、第２アプリケーション実行部からドライバ設定を行う場合の情報処理装置の動作を示すフローチャートである。
【図６】本実施形態の情報処理装置を適用する第２実装例を示す図である。
【図７】第２実装例において、第２アプリケーション実行部からドライバ設定を行う場合の情報処理装置の動作を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
＜情報処理装置の構成＞
図１は、情報処理装置のハードウェア構成例を示す図である。情報処理装置１０は、コンピュータ装置であり、例えばパーソナル・コンピュータにより実現される。情報処理装置１０は、演算手段であるＣＰＵ（Central Processing Unit）２０１と、記憶手段である主記憶装置（メイン・メモリ）２０２および外部記憶装置２０３を備える。ＣＰＵ２０１は、外部記憶装置２０３に格納されたプログラムを主記憶装置２０２に読み込んで実行する。主記憶装置２０２としては、例えばＲＡＭ（Random Access Memory）が用いられる。外部記憶装置２０３としては、例えば磁気ディスク装置やＳＳＤ（Solid State Drive）等が用いられる。また、情報処理装置１０は、表示装置（ディスプレイ）２１０に表示出力を行うための表示機構２０４と、情報処理装置１０の操作者による入力操作が行われる入力デバイス２０５とを備える。入力デバイス２０５としては、例えばキーボードやマウス等が用いられる。また、情報処理装置１０は、ネットワークに接続するためのネットワーク・インターフェイス２０６を備える。
【００１２】
図２は、情報処理装置１０におけるソフトウェア構成例を示す図である。情報処理装置１０のソフトウェアは、ＯＳ１００と、ＯＳ１００上で動作するアプリケーション・ソフトウェア１１０、１２０とを備える。ＯＳ１００は、ＣＰＵ２０１や主記憶装置２０２等のハードウェアを管理すると共に実行環境を提供する基本ソフトウェアである。図２に示すように、本実施形態のＯＳ１００は、実行環境として、第１環境１００ａおよび第２環境１００ｂを提供する。なお、図示の例では、２種類の実行環境が提供されているが、ＯＳ１００は３種類以上の実行環境を提供するものであっても良い。
【００１３】
アプリケーション・ソフトウェア１１０、１２０は、具体的な情報処理を実行するソフトウェア（アプリケーション・プログラム）である。本実施形態では、ＯＳ１００が提供する実行環境に応じて、第１環境１００ａで動作するアプリケーション・ソフトウェア１１０と、第２環境１００ｂで動作するアプリケーション・ソフトウェア１２０とがある。なお、図２に示す例では、第１環境１００ａおよび第２環境１００ｂの各々に対して一つのアプリケーション・ソフトウェア１１０、１２０が記載されているが、これは、ソフトウェア間の関係を示しているに過ぎない。通常は、ＯＳ１００が提供する各環境において、それぞれ複数のアプリケーション・ソフトウェア１１０、１２０が動作し得る。
【００１４】
ここで、ＯＳ１００が提供する複数の実行環境について、さらに説明する。複数の実行環境を提供するＯＳ１００の一例として、マイクロソフト社のＷｉｎｄｏｗｓ（登録商標）１０を想定する。Ｗｉｎｄｏｗｓ１０には、デスクトップ型やノート型のパーソナル・コンピュータで使用するようにデザインされたデスクトップ・モードと呼ばれる実行環境と、タブレット端末で使用するようにデザインされたタブレット・モードと呼ばれる実行環境とがある。デスクトップ・モードでは、デスクトップ・アプリと呼ばれる、デスクトップ・モード用のアプリケーション・ソフトウェアが動作し、タブレット・モードでは、ストア・アプリと呼ばれる、タブレット・モード用のアプリケーション・ソフトウェアが動作する。
【００１５】
Ｗｉｎｄｏｗｓ１０で動作するアプリケーション・ソフトウェアのうち、タブレット・モードで動作するストア・アプリは、他のアプリケーション・ソフトウェア（ストア・アプリおよびデスクトップ・アプリ）との間のプロセス間通信が厳しく制限されている。具体的には、独自プロトコルを用いて他のアプリケーション・ソフトウェアを起動することと、起動に伴ってパラメータを相手のアプリケーション・ソフトウェアに渡すことのみが許されている。アプリケーション・ソフトウェアを起動する独自プロトコルは、予めプロトコル名が定められ、対象のアプリケーション・ソフトウェアとＯＳとの間で予め定められた方法で関連付けられる。これにより、独自プロトコルを呼び出すと、呼び出されたプロトコルに関連付けられたアプリケーション・ソフトウェアが起動されるようになる。なお、プロトコル名は、情報処理装置１０において使用される他のアプリケーション・ソフトウェアで用いられるプロトコルのプロトコル名として利用されていない名称である必要がある。
【００１６】
以下では、図２に示したＯＳ１００の第１環境１００ａで動作するアプリケーション・ソフトウェア１１０が、プロセス間通信に関して、上記のストア・アプリと同様の制限を課されている場合を例として説明する。すなわち、アプリケーション・ソフトウェア１１０は、他のアプリケーション・ソフトウェア１１０や第２環境１００ｂで動作するアプリケーション・ソフトウェア１２０に対し、独自プログラムにより、起動することと、起動の際にパラメータを相手のアプリケーション・ソフトウェア１１０、１２０に渡すことのみが可能である。なお、図２を参照した上記の説明では、ＯＳ１００は３種類以上の実行環境を提供しても良いとしたが、ここでは簡単のため２種類の実行環境を提供する場合を例として説明する。
【００１７】
＜情報処理装置の機能構成＞
図３は、情報処理装置１０の機能構成例を示す図である。情報処理装置１０は、第１環境制御部１１、第１アプリケーション実行部１２、第１拡張機能実行部１３、第２環境制御部２１、第２アプリケーション実行部２２、第２拡張機能実行部２３を備える。第１環境制御部１１、第１アプリケーション実行部１２および第１拡張機能実行部１３は、第１の制御手段の一例である。第２環境制御部２１、第２アプリケーション実行部２２および第２拡張機能実行部２３は、第２の制御手段の一例である。以下、２種類の実行環境を区別せずに説明する場合は、単に環境制御部１１、２１、アプリケーション実行部１２、２２、拡張機能実行部１３、２３と記載する。
【００１８】
第１環境制御部１１は、図２に示した第１環境１００ａにおける動作を制御する制御手段である。第１環境制御部１１は、ＣＰＵ２０１がＯＳ１００を実行することにより実現され、第１環境１００ａでのプロセスの管理及び制御を行う。したがって、第１環境制御部１１の制御下でアプリケーション・ソフトウェア１１０が実行される。
【００１９】
第１アプリケーション実行部１２は、第１環境１００ａで動作するプロセスの実行手段である。第１アプリケーション実行部１２は、ＣＰＵ２０１により実現され、第１環境制御部１１により制御される第１環境１００ａにおいて、アプリケーション・ソフトウェア１１０を実行する。第１アプリケーション実行部１２は、アプリケーション・ソフトウェア１１０のプロセスの実行において、他のアプリケーション・ソフトウェア１１０を起動し、第１拡張機能実行部１３を呼び出す。
【００２０】
第１拡張機能実行部１３は、第１アプリケーション実行部１２により実行されるプロセスに関連する拡張機能を提供するプロセス実行手段である。第１拡張機能実行部１３は、ＣＰＵ２０１により実現され、第１環境制御部１１により制御される第１環境１００ａにおいて、第１アプリケーション実行部１２により実行されるアプリケーション・ソフトウェア１１０とは別のアプリケーション・ソフトウェア１１０を実行する。第１拡張機能実行部１３は、第１アプリケーション実行部１２から呼び出されて特定の機能（拡張機能）を提供する。また、詳しくは後述するが、第１拡張機能実行部１３は、第２環境１００ｂで動作する第２拡張機能実行部２３からも呼び出すことができる。第１拡張機能実行部１３が提供する機能としては種々の機能が考えられるが、一例として、他のプロセスとの間で情報のやり取りを行うための機能を提供するようにしても良い。対象となる他のプロセスは、第１環境１００ａで実行される他のプロセスであっても良いし、第２環境１００ｂで実行される他のプロセスであっても良い。
【００２１】
第２環境制御部２１は、図２に示した第２環境１００ｂにおける動作を制御する制御手段である。第２環境制御部２１は、ＣＰＵ２０１がＯＳ１００を実行することにより実現され、第２環境１００ｂでのプロセスの管理及び制御を行う。したがって、第２環境制御部２１の制御下でアプリケーション・ソフトウェア１２０が実行される。
【００２２】
第２アプリケーション実行部２２は、第２環境１００ｂで動作するプロセスの実行手段である。第２アプリケーション実行部２２は、ＣＰＵ２０１により実現され、第２環境制御部２１により制御される第２環境１００ｂにおいて、アプリケーション・ソフトウェア１２０を実行する。第２アプリケーション実行部２２は、アプリケーション・ソフトウェア１２０のプロセスの実行において、他のアプリケーション・ソフトウェア１２０を起動し、第２拡張機能実行部２３を呼び出す。
【００２３】
第２拡張機能実行部２３は、第２アプリケーション実行部２２により実行されるプロセスに関連する拡張機能を提供するプロセス実行手段である。第２拡張機能実行部２３は、ＣＰＵ２０１により実現され、第２環境制御部２１により制御される第２環境１００ｂにおいて、第２アプリケーション実行部２２により実行されるアプリケーション・ソフトウェア１２０とは別のアプリケーション・ソフトウェア１２０を実行する。第２拡張機能実行部２３は、第２アプリケーション実行部２２から呼び出されて特定の機能（拡張機能）を提供する。また、詳しくは後述するが、第２拡張機能実行部２３は、第１環境１００ａで動作する第１拡張機能実行部１３からも呼び出すことができる。第２拡張機能実行部２３が提供する機能としては種々の機能が考えられるが、一例として、第１環境１００ａで実行される他のプロセスとの間で情報のやり取りを行うための機能を提供するようにしても良い。なお、第２環境１００ｂで実行される他のプロセスとの間の情報のやり取りに関しては、第１環境１００ａにおけるプロセス間通信のような制限が課されていないので、各アプリケーション・ソフトウェア１２０のプロセス間で直接行えば良く、第２拡張機能実行部２３により提供される機能を用いる必要はない。
【００２４】
上述したように、第１環境１００ａで実行されるアプリケーション・ソフトウェア１１０は、プロセス間通信に対して制限が課されており、独自プロトコルによる他のアプリケーション・ソフトウェア１１０、１２０の起動および起動時のパラメータを渡すことのみが可能である。したがって、第１アプリケーション実行部１２および第１拡張機能実行部１３により実行されるプロセス（以下、第１環境プロセス）間での情報のやり取りは、相手のアプリケーション・ソフトウェア１１０を独自プロトコルにより起動してパラメータを渡すことにより行われる。同様に、第１環境プロセスと第２アプリケーション実行部２２および第２拡張機能実行部２３により実行されるプロセス（以下、第２環境プロセス）との間の情報のやり取りも、相手のアプリケーション・ソフトウェア１１０、１２０を独自プロトコルにより起動してパラメータを渡すことにより行われる。
【００２５】
＜適用例＞
次に、上述した情報処理装置１０の具体的な適用例を説明する。ここでは、アプリケーション実行部１２、２２により実行されるアプリケーション・ソフトウェア１１０、１２０において外部装置を操作する場合を例として説明する。具体的には、外部装置として画像形成装置を想定し、アプリケーション実行部１２、２２から画像形成装置に対して印刷出力等の操作を行うことを考える。
【００２６】
適用例の構成について、さらに説明する。ＯＳ１００として、上述したＷｉｎｄｏｗｓ１０を想定する。Ｗｉｎｄｏｗｓ１０では、画像形成装置（プリンタ）を操作するためのドライバであるＶ４プリンタドライバに関して、ベンダーが独自の機能やルックアンドフィールを実現するための拡張ＵＩを用意することができる。ここで、ドライバは、デスクトップ・アプリ（例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄ（商標））およびストア・アプリ（例えばＭｉｃｒｏｓｏｆｔ  Ｅｄｇｅ（商標））の双方から使用される。そのため、デスクトップ・アプリで使用される拡張ＵＩとストア・アプリで使用される拡張ＵＩとを用意する必要があった。しかし、これらの拡張ＵＩを個別のプログラム・モジュール（以下、拡張モジュール）として用意すると、各拡張モジュールに対して、それぞれ拡張ＵＩの表示機能を実装しなければならず、開発コストの増大を招く。また、各拡張モジュールの挙動に違いがある場合（例えば、ＵＩ自体のルックアンドフィールが大きく違う場合や、あるいは大まかには同様のＵＩだがエラーメッセージの表示方法等の詳細が違う場合等）、操作者にとっては使いにくいものとなる。
【００２７】
そこで、本適用例では、第１環境１００ａの拡張モジュールと第２環境１００ｂの拡張モジュールの一方のみに拡張ＵＩの表示機能を実装し、他方の拡張モジュールは、表示機能が実装された拡張モジュールにより表示される拡張ＵＩを利用する構成とする。具体例としては、第１環境１００ａの拡張モジュール（以下、第１環境拡張モジュール）に拡張ＵＩの表示機能を実装し、第２環境１００ｂの拡張モジュール（以下、第２環境拡張モジュール）は、第１環境拡張モジュールの表示機能を利用して拡張ＵＩを表示させる。
【００２８】
本適用例を図３の機能構成に適用して説明すると、第１アプリケーション実行部１２は、ストア・アプリ（アプリケーション・ソフトウェア１１０）に基づき第１環境プロセスを実行する。また、第１拡張機能実行部１３は、ドライバの第１環境拡張モジュールに基づき第１環境プロセスを実行する。第１環境拡張モジュールには、拡張ＵＩの表示機能が実装されている。そのため、第１拡張機能実行部１３は、図２に示した表示機構２０４を操作して表示装置２１０に拡張ＵＩの画面（以下、ＵＩ画面）を表示させる。ここで、ＵＩ画面とは、ドライバの設定情報を提示し、操作者による設定変更操作を受け付ける設定画面である。ＵＩ画面で操作者による操作が行われると、操作の結果（第１拡張機能実行部１３による処理の結果）は、ドライバの設定に反映される。また、ＯＳ１００で予め定められた方法により、第１拡張機能実行部１３から第１アプリケーション実行部１２へ情報を受け渡しても良い。
【００２９】
一方、第２アプリケーション実行部２２は、デスクトップ・アプリ（アプリケーション・ソフトウェア１２０）に基づき第２環境プロセスを実行する。また、第２拡張機能実行部２３は、ドライバの第２環境拡張モジュールに基づき第２環境プロセスを実行する。ここで、第２環境拡張モジュールは、拡張ＵＩの表示機能が実装されておらず、第１環境拡張モジュールの表示機能を用いてＵＩ画面を表示するように設計されている。そのため、第２拡張機能実行部２３は、第１拡張機能実行部１３を呼び出し、第１環境拡張モジュールの表示機能に基づき、表示装置２１０にＵＩ画面を表示させる。ＵＩ画面上での操作者による操作が終了すると、第１拡張機能実行部１３は、第２拡張機能実行部２３を呼び出し、操作の結果（第１拡張機能実行部１３による処理の結果）を第２拡張機能実行部２３に渡す。第２拡張機能実行部２３は、第１拡張機能実行部１３から受け取った処理結果を、ドライバの設定に反映させる。また、ＯＳ１００で予め定められた方法により、第２拡張機能実行部２３から第２アプリケーション実行部２２へ情報を受け渡しても良い。
【００３０】
以上のように、第２アプリケーション実行部２２においてドライバを使用する場合は、第２拡張機能実行部２３から第１拡張機能実行部１３が呼び出され、第１拡張機能実行部１３の表示機能を用いてＵＩ画面が表示され、操作者の操作を受け付ける。したがって、操作者は、第１環境１００ａと第２環境１００ｂのいずれであっても、同じＵＩ画面でドライバ設定の操作を行うことができる。なお、第１拡張機能実行部１３は、上述したように、第１アプリケーション実行部１２により呼び出された場合と、第２拡張機能実行部２３により呼び出された場合とで、動作（処理結果の扱い）が異なる。
【００３１】
＜第１実装例＞
図４は、本実施形態の情報処理装置１０を上記の適用例に適用する場合の具体的な実装例を示す図であり、第１実装例を示す図である。図４を参照して、第２アプリケーション実行部２２が、画像形成装置（図示せず）を操作するためのドライバ設定を行う際の動作を説明する。
【００３２】
図４に示す実装例では、第１環境１００ａにおいて、第１アプリケーション実行部１２と、第１拡張機能実行部１３とが動作する。第１拡張機能実行部１３は、第１環境拡張モジュールであるドライバ・モジュール（ドライバ・プログラム）を実行する。第１拡張機能実行部１３により提供される機能には、ＵＩ画面を表示する拡張ＵＩ表示機能１３１が含まれる。
【００３３】
また、図４に示す実装例では、第２環境１００ｂにおいて、第２アプリケーション実行部２２と、二つの第２拡張機能実行部２３ａ、２３ｂとが動作する。第２拡張機能実行部２３ａは、第２環境拡張モジュールであるドライバ・モジュールを実行する。第２拡張機能実行部２３ｂは、第２環境拡張モジュールである中継モジュールを実行する。第２拡張機能実行部２３ｂにより実行される中継モジュールは、第２拡張機能実行部２３ａと第１拡張機能実行部１３との間の情報の伝達を中継する第２環境拡張モジュールである。したがって、第２拡張機能実行部２３ｂは、第１拡張機能実行部１３の処理結果を中継して第２拡張機能実行部２３ａに伝達する中継手段である。なお、中継モジュールは、ＵＩを持たないアプリケーション・ソフトウェア１２０（デスクトップ・アプリ）であり、第２拡張機能実行部２３ａにより実行されるプロセスとは別のプロセスである。
【００３４】
図５は、図４に示す第１実装例において、第２アプリケーション実行部２２からドライバ設定を行う場合の情報処理装置１０の動作を示すフローチャートである。まず、第２アプリケーション実行部２２において、操作者の操作によりＵＩ画面の表示が指示されると（Ｓ５０１）、第２アプリケーション実行部２２は、ドライバ・モジュールを起動し、第２拡張機能実行部２３ａを呼び出す（Ｓ５０２）。第２拡張機能実行部２３ａは、独自プロトコルを用いて第１環境１００ａのドライバ・モジュールを起動し、第１拡張機能実行部１３を呼び出す（Ｓ５０３）。このとき、第２拡張機能実行部２３ａから第１拡張機能実行部１３へ、パラメータとして、ドライバ設定の初期値と、呼び出し元ＩＤとが渡される。呼び出し元ＩＤとは、第１拡張機能実行部１３を呼び出したプロセス（第２拡張機能実行部２３ａにより実行されたプロセス）の識別情報である。この呼び出し元ＩＤは、例えばテキスト化して独自プロトコルのパラメータとして付加される。ドライバ設定の初期値は、例えばＢａｓｅ６４エンコードでテキスト化し、独自プロトコルのパラメータとして付加される。すなわち、Ｓ５０３は、第１の実行部としての第２拡張機能実行部２３ａが、独自プロトコルである第１プロトコルを用いて、第２の実行部としての第１拡張機能実行部１３を起動するステップである。
【００３５】
呼び出された第１拡張機能実行部１３は、第２拡張機能実行部２３ａから受け取ったパラメータに含まれるドライバ設定の初期値を復元し、この初期値を用いて、拡張ＵＩ表示機能１３１により表示装置２１０にＵＩ画面を表示させる（Ｓ５０４）。操作者は、表示装置２１０に表示されたＵＩ画面で操作を行い、所望のドライバ設定を入力することができる。また、操作者は、予め定められた操作（例えば、ＵＩ画面に表示された「終了」ボタンを選択する等の操作）により、設定操作を終了することができる。
【００３６】
設定操作を終了する操作が行われると（Ｓ５０５）、第１拡張機能実行部１３は、ＵＩ画面の表示を消す。そして、第１拡張機能実行部１３は、独自プロトコルを用いて第２環境１００ｂの中継モジュールを起動し、中継用の第２拡張機能実行部２３ｂを呼び出す（Ｓ５０６）。このとき、第１拡張機能実行部１３から第２拡張機能実行部２３ｂへ、パラメータとして、設定内容（ＵＩ画面で操作された内容を含む設定値）と、Ｓ５０３の呼び出しにパラメータとして付加された呼び出し元ＩＤとが渡される。設定内容は、例えばＢａｓｅ６４エンコードでテキスト化し、独自プロトコルのパラメータとして付加される。すなわち、Ｓ５０６は、第２の実行部としての第１拡張機能実行部１３が、独自プロトコルである第２プロトコルを用いて、第３の実行部としての第２拡張機能実行部２３ｂを起動し、処理結果の情報を第３の実行部に渡すステップである。
【００３７】
呼び出された中継用の第２拡張機能実行部２３ｂは、第１拡張機能実行部１３から受け取ったパラメータに含まれる設定内容と呼び出し元ＩＤとを復元する（Ｓ５０７）。そして、中継用の第２拡張機能実行部２３ｂは、呼び出し元ＩＤにより特定される第２拡張機能実行部２３ａに、設定内容の情報を送信する（Ｓ５０８）。この第２拡張機能実行部２３ａと第２拡張機能実行部２３ｂとの間の情報のやり取りは、ＯＳ１００により制御され第２環境１００ｂで用いられる通常のプロセス間通信により行われる。すなわち、Ｓ５０８は、第３の実行部としての第２拡張機能実行部２３ｂが、第１の実行部としての第２拡張機能実行部２３ａとの間で実行可能なプロセス間通信により、第２の実行部としての第１拡張機能実行部１３による処理結果の情報を、第１の実行部としての第２拡張機能実行部２３ａに送るステップである。以上の後、第２拡張機能実行部２３ａは、ＯＳ１００により制御され第２環境１００ｂで用いられる通常のプロセス間通信により、設定内容の情報を第２アプリケーション実行部２２に返す（Ｓ５０９）。
【００３８】
＜第２実装例＞
図６は、本実施形態の情報処理装置１０を上記の適用例に適用する場合の具体的な実装例を示す図であり、第２実装例を示す図である。図６を参照して、第２アプリケーション実行部２２が、画像形成装置（図示せず）を操作するためのドライバ設定を行う際の動作を説明する。
【００３９】
図６に示す実装例では、第１環境１００ａにおいて、第１アプリケーション実行部１２と、第１拡張機能実行部１３とが動作する。第１拡張機能実行部１３は、第１環境拡張モジュールであるドライバ・モジュールを実行する。第１拡張機能実行部１３により提供される機能には、ＵＩ画面を表示する拡張ＵＩ表示機能１３１が含まれる。
【００４０】
また、図６に示す実装例では、第２環境１００ｂにおいて、第２アプリケーション実行部２２と、第２拡張機能実行部２３とが動作する。第２実装例では、図４および図５を参照して説明した第１実装例と異なり、一つの第２拡張機能実行部２３が設けられる。第２拡張機能実行部２３は、第２アプリケーション実行部２２により呼び出される一方で、第１拡張機能実行部１３からも呼び出される。後述するように、第２アプリケーション実行部２２により呼び出された第２拡張機能実行部２３と第１拡張機能実行部１３から呼び出された第１拡張機能実行部１３からとは別プロセスであるので、図６においては、二つの第２拡張機能実行部２３が図示されている。第２拡張機能実行部２３は、第２アプリケーション実行部２２により呼び出されたか、第１拡張機能実行部１３から呼び出されたかに応じて、動作が異なる。第２拡張機能実行部２３の具体的な動作については後述する。
【００４１】
図７は、図６に示す第２実装例において、第２アプリケーション実行部２２からドライバ設定を行う場合の情報処理装置１０の動作を示すフローチャートである。図７に示す動作において、Ｓ７０５で第１拡張機能実行部１３が設定操作を終了する操作を受け付けるまでの動作は、図５に示したＳ５０５までの動作と同様である。
【００４２】
設定操作を終了する操作が行われると（Ｓ７０５）、第１拡張機能実行部１３は、ＵＩ画面の表示を消す。そして、第１拡張機能実行部１３は、独自プロトコルを用いて第２環境１００ｂのドライバ・モジュールを起動し、第２拡張機能実行部２３を呼び出す（Ｓ７０６）。このとき、第１拡張機能実行部１３から第２拡張機能実行部２３へ、パラメータとして、設定内容（ＵＩ画面で操作された内容を含む設定値）と、Ｓ７０３の呼び出しにパラメータとして付加された呼び出し元ＩＤとが渡される。また、このとき起動されるドライバ・モジュールは、Ｓ７０２で起動されたドライバ・モジュールと同じアプリケーション・ソフトウェア１２０（デスクトップ・アプリ）であるが、Ｓ７０２で呼び出された第２拡張機能実行部２３で実行されるプロセスとは別プロセスである。
【００４３】
呼び出された第２拡張機能実行部２３は、第１拡張機能実行部１３から受け取ったパラメータに含まれる設定内容と呼び出し元ＩＤとを復元する（Ｓ７０７）。そして、呼び出し元ＩＤにより特定される第２拡張機能実行部２３（Ｓ７０２で呼び出された第２拡張機能実行部２３）に、設定内容の情報を送信する（Ｓ７０８）。この第２拡張機能実行部２３どうしの間の情報のやり取りは、ＯＳ１００により制御され第２環境１００ｂで用いられる通常のプロセス間通信により行われる。この後、Ｓ７０２で呼び出された第２拡張機能実行部２３は、ＯＳ１００により制御され第２環境１００ｂで用いられる通常のプロセス間通信により、設定内容の情報を第２アプリケーション実行部２２に返す（Ｓ７０９）。
【００４４】
上記のように、第２実装例において、Ｓ７０６で呼び出された第２拡張機能実行部２３の動作は、Ｓ７０２で呼び出された第２拡張機能実行部２３とは異なる動作となる。そして、Ｓ７０６で呼び出された第２拡張機能実行部２３は、第１実装例における第２拡張機能実行部２３ｂと同じ役割を果たす。言い換えれば、第２実装例は、第１実装例における中継モジュールを第２環境１００ｂのドライバ・モジュールに置き換えたものであり、第１拡張機能実行部１３により呼び出された第２拡張機能実行部２３が、中継用の第２拡張機能実行部２３となる。
【００４５】
＜複数のプロセスから第１拡張機能実行部が起動された場合の動作＞
上記第１実装例および第２実装例のいずれにおいても、第２環境１００ｂの複数のプロセスから第１拡張機能実行部１３が呼び出された場合に対応することができる。複数のプロセスにおいてドライバ設定を行うために、第２拡張機能実行部２３が呼び出された場合を考える。この場合、各々の第２拡張機能実行部２３からそれぞれ第１拡張機能実行部１３が呼び出される。ただし、第１拡張機能実行部１３の動作は、ＵＩ画面による操作者の操作の受け付けが含まれるので、複数の第１拡張機能実行部１３による動作を並列に行うのではなく、排他制御を行いながら個々の第２拡張機能実行部２３からの呼び出しに対する第１拡張機能実行部１３の動作を順次行うようにしても良い。
【００４６】
第２拡張機能実行部２３は、第１拡張機能実行部１３を呼び出す際に、呼び出し元ＩＤをパラメータとして与えている。この呼び出し元ＩＤは、第１拡張機能実行部１３を呼び出したプロセスごとに異なる。したがって、第１拡張機能実行部１３から返された設定内容の情報は、呼び出し元ＩＤにより個別に特定される第２拡張機能実行部２３へ返される。
【００４７】
以上、本発明の実施形態について説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の技術思想の範囲から逸脱しない様々な変更や構成の代替は、本発明に含まれる。例えば、上記の適用例および実装例において、画像形成装置のドライバ・モジュールに拡張機能実行部１３、２３を適用した例を説明したが、かかる例には限定されない。本実施形態は、ＯＳ１００により制御される通常のプロセス間通信が制限されており、一つのプロセス実行手段が他のプロセス実行手段を起動すると共にパラメータを与える形で情報を受け渡すことが可能な種々の構成に対して適用し得る。
【符号の説明】
【００４８】
１０…情報処理装置、１１…第１環境制御部、１２…第１アプリケーション実行部、１３…第１拡張機能実行部、２１…第２環境制御部、２２…第２アプリケーション実行部、２３…第２拡張機能実行部、１００…ＯＳ（Operating System）、１００ａ…第１環境、１００ｂ…第２環境、１１０、１２０…アプリケーション・ソフトウェア、１３１…拡張ＵＩ表示機能、２０１…ＣＰＵ（Central Processing Unit）、２０２…主記憶装置、２０３…外部記憶装置、２０４…表示機構、２０５…入力デバイス、２０６…ネットワーク・インターフェイス、２１０…表示装置
【図１】
2019028622.tif 000003
【図２】
2019028622.tif 000004
【図３】
2019028622.tif 000005
【図４】
2019028622.tif 000006
【図５】
2019028622.tif 000007
【図６】
2019028622.tif 000008
【図７】
2019028622.tif 000009