(57)【要約】      （修正有）【課題】同一プロセスにおいて処理対象ごとに複数のウインドウを表示し処理するアプリケーションにおいて、別のプロセスで実行するべき処理のみを判定し、処理を実行することができる情報処理装置を提供する。【解決手段】情報処理装置は、処理の依頼先となるモジュールについて、同一のプロセスから依頼される複数の処理に対して排他制御するモジュールであるか否かを判定する第１判定手段Ｓ７０５と、処理の依頼先となるモジュールについて、ユーザインターフェースを表示するモジュールであるか否かを判定する第２判定手段Ｓ７０８と、処理の依頼先となるモジュールについて、第１判定手段で排他制御するモジュールであると判定され、かつ、第２判定手段でユーザインターフェースを表示するモジュールであると判定された場合に、別のプロセスに処理を委譲して実行させる制御手段Ｓ７０９〜Ｓ７１１と、を有する。【選択図】図７
2017078992.tif 000002
【特許請求の範囲】
【請求項１】
処理の依頼先となるモジュールについて、同一のプロセスから依頼される複数の処理に対して排他制御するモジュールであるか否かを判定する第１判定手段と、
前記処理の依頼先となるモジュールについて、ユーザインターフェースを表示するモジュールであるか否かを判定する第２判定手段と、
前記処理の依頼先となるモジュールについて、前記第１判定手段で排他制御するモジュールであると判定され、かつ、前記第２判定手段でユーザインターフェースを表示するモジュールであると判定された場合に、別のプロセスに前記処理を委譲して実行させる制御手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記制御手段は、前記第１判定手段で排他制御するモジュールでないと判定され、または前記第２判定手段でユーザインターフェースを表示しないモジュールでないと判定された場合、前記同一プロセス上で前記処理を実行する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第１判定手段は、異なる処理時間を有するスレッドが実行された際に、いずれのスレッドが先に終了するかに応じて、前記モジュールが排他制御するモジュールであるか否かを判定する
ことを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記スレッドは、第１処理時間を有する第１スレッドと、前記第１処理時間よりも短い第２処理時間を有する第２スレッドを含み、
前記第１判定手段は、前記第１スレッドが実行された後に前記第２スレッドが実行され、かつ前記第１スレッドが前記第２スレッドよりも早く処理が終了した場合に、前記モジュールが排他制御するモジュールであると判定する
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記第２判定手段は、前記モジュールについてウインドウ数が増加する場合に、前記モジュールがユーザインターフェースを表示するモジュールであると判定する
ことを特徴とする請求項１〜４のいずれか１項に記載の情報処理装置。
【請求項６】
前記処理の依頼先となるモジュールにおける機能の数と該機能に関連する機能の数の合計値が所定の閾値よりも大きいか否かを判定する第３判定手段
をさらに備え、
前記制御手段は、前記処理の依頼先となるモジュールについて、前記第１判定手段で排他制御するモジュールであると判定され、かつ、前記第２判定手段でユーザインターフェースを表示するモジュールでないと判定された場合であっても、前記第３判定手段により前記合計値が前記所定の閾値よりも大きいと判定された場合、前記別プロセスに前記処理を委譲して実行させる
ことを特徴とする請求項１〜５のいずれか１項に記載の情報処理装置。
【請求項７】
前記制御手段は、前記第３判定手段により前記合計値が前記所定の閾値よりも小さいと判定された場合、前記同一プロセス上で前記処理を実行する
ことを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記機能は、印刷設定の機能である
ことを特徴とする請求項６または７に記載の情報処理装置。
【請求項９】
処理の依頼先となるモジュールについて、同一のプロセスから依頼される複数の処理に対して排他制御するモジュールであるか否かを判定する第１判定工程と、
前記処理の依頼先となるモジュールについて、ユーザインターフェースを表示するモジュールであるか否かを判定する第２判定工程と、
前記処理の依頼先となるモジュールについて、前記第１判定工程で排他制御するモジュールであると判定され、かつ、前記第２判定工程でユーザインターフェースを表示するモジュールであると判定された場合に、別のプロセスに前記処理を委譲して実行させる制御工程と、
を有することを特徴とする情報処理装置の制御方法。
【請求項１０】
請求項１〜８のいずれか１項に記載の情報処理装置の各手段としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法、及びプログラムに関し、特に１つのプロセス上で、編集対象の文書単位でウインドウを表示して編集処理などを行える文書処理アプリケーションで、相互に影響する処理を制御する情報処理装置に関する。
【背景技術】
【０００２】
従来より、文書処理アプリケーションにおいて、１つのプロセス上にて編集対象となる文書ごとにウインドウを表示し、それぞれのウインドウで独立して編集処理を実行することができる。また、特定の処理については、文書処理アプリケーションのプロセスとは別のプロセス上で実施することで並行処理などを可能とするようなことも行われている。例えば、ジョブデータを受領して印刷設定から描画データを生成する際にジョブ単位で別プロセスに処理を委譲して行う技術がある（特許文献１）。さらに、文書処理アプリケーションを構成する処理モジュールの中には、同一プロセスでの複数の処理に対して排他制御するものやＵＩの表示を行うものなどさまざまな関数が存在する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２８６８７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、同一プロセスで複数のウインドウを表示して該複数のウインドウそれぞれにおける処理を並列実行することが可能な文書処理アプリケーションにおいて、他の処理モジュールを呼び出して処理を実行させる場合がある。このとき、呼び出し先の処理モジュールが、同一プロセス内での複数の呼び出しに対して排他制御していると、１つのウインドウから呼び出された処理を実行している間、同一プロセス内の別のウインドウからの呼び出しを排他処理（禁止）する。そのため、別のウインドウで該処理モジュールを呼び出す操作をすることができない。特に、同一プロセスでの排他制御を行っている処理モジュールにおいてユーザインターフェース（例えば、ある処理の設定を行うための設定画面）を表示するような関数を呼び出す場合には、ユーザが指示を行うまでそのユーザインターフェースを表示し続ける。そして、その間、別のウインドウからの処理は禁止されるので、別のウインドウでは長時間操作不能となってしまう。
【０００５】
なお、同一プロセス内での複数の処理に対して排他制御する処理モジュールであっても、別のプロセスであれば並列処理できる場合がある。従って、ウインドウごとに別のプロセスを常に作成して処理を実行するように構成すれば、排他制御は行われずにそれぞれのウインドウでの操作が可能となる。しかしながら、そのように構成すると、処理やモジュールの数だけ別のプロセスが生成されてしまい効率的な処理が行えなくなってしまう。
【０００６】
本発明は、上記課題を鑑みて、同一プロセスにおいて処理対象ごとに複数のウインドウを表示し処理するアプリケーションにおいて、別のプロセスで実行するべき処理のみを判定し、処理を実行することができる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明の情報処理装置は、処理の依頼先となるモジュールについて、同一のプロセスから依頼される複数の処理に対して排他制御するモジュールであるか否かを判定する第１判定手段と、前記処理の依頼先となるモジュールについて、ユーザインターフェースを表示するモジュールであるか否かを判定する第２判定手段と、前記処理の依頼先となるモジュールについて、前記第１判定手段で排他制御するモジュールであると判定され、かつ、前記第２判定手段でユーザインターフェースを表示するモジュールであると判定された場合に、別のプロセスに前記処理を委譲して実行させる制御手段と、を有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、同一プロセスにおいて処理対象ごとに複数のウインドウを表示し処理するアプリケーションにおいて、別のプロセスで実行するべき処理のみを判定し、処理を実行することができる情報処理装置を提供することができる。これにより、別プロセス上で一部の処理を実行することで、不要なプロセス生成やプロセス間通信をせずに効率よくそれぞれのウインドウの操作を妨げることなく処理することができる。
【図面の簡単な説明】
【０００９】
【図１】システムの構成を示す図である。
【図２】クライアント端末のハードウェア構成を示す図である。
【図３】画像処理装置のハードウェア構成を示す図である。
【図４】文書処理アプリケーションのソフトウェア構成を示す図である。
【図５】モジュール判定リストのデータ構造の一例を示す図である。
【図６】モジュールの排他判定をする処理のフローチャートである。
【図７】処理内容をどのプロセスでするかを判定する処理のフローチャートである。
【図８】処理内容をどのプロセスでするかを判定する処理のフローチャートである。
【図９】文書処理アプリケーションのＵＩの一例を示す図である。
【図１０】機能が選択された場合に処理内容をどのプロセスでするかを判定し、実行する処理のフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための最良の形態について図面などを参照して説明する。
【００１１】
（第１実施形態）
図１は、本実施形態に係るシステム構成を示す図である。クライアント端末１０１と、ＭＦＰ（Ｍｕｌｔｉｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）１０２は、ネットワーク１１０を介して接続されている。なお、クライアント端末１０１は、本実施形態では１台であるが、複数台接続されていてもよい。ネットワーク１１０は、例えば、インターネット等のＬＡＮ、ＷＡＮ、電話回線、専用デジタル回線等のいずれかであり、また、これらの組み合わせにより実現される、いわゆる通信ネットワークである。また、ネットワーク１１０は、データの送受信が可能であればよく、有線、無線どちらであってもよい。
【００１２】
クライアント端末１０１は、様々な企業などに備えられる情報処理装置であり、例えば、デスクトップパソコン、ノートパソコン、モバイルパソコン、タブレット端末等であるが、プログラムの実行環境が内蔵されたスマートフォンであってもよい。また、クライアント端末１０１では、オフィスアプリケーションやプリンタドライバ等のプログラムを実行する環境が内蔵されている。ＭＦＰ１０２は、ネットワークに接続されておりクライアント端末１０１から送信された印刷ジョブを処理して出力する機能を有する。
【００１３】
図２は、本実施形態に係る、クライアント端末１０１を実行するコンピュータのハードウェア構成図である。ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０２は、装置全体の制御を行い、ＨＤＤ２０５に格納されているアプリケーションプログラム、ＯＳ等を実行し、ＲＡＭ２０３にプログラムの実行に必要な情報等を一時的に格納する制御を行う。Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）２０４は、記憶手段であり、内部には、基本Ｉ／Ｏプログラム等の各種データを記憶する。ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３は、一時記憶手段であり、ＣＰＵ２０２の主メモリ、ワークエリア等として機能する。ＨＤＤ（ハードディスク）２０５は、外部記憶手段の一つであり、大容量メモリとして機能し、オフィスアプリケーションやＷｅｂブラウザー等のアプリケーションプログラム、ＯＳ、関連プログラム等を格納している。
【００１４】
ディスプレイ２０６は、キーボード２０７から入力したコマンド等を表示する表示手段である。インターフェース２０８は、外部装置Ｉ／Ｆであり、プリンタ、ＵＳＢ機器、周辺機器と接続される。キーボード２０７は、指示入力手段であり、キーボードに限定することなく、例えば、マウスやタッチパネルによる入力であってもよい。システムバス２０１は、装置内におけるデータの流れを司るものである。ネットワークインターフェースカード（ＮＩＣ）２０９は、ネットワーク１１０を介して不図示の外部装置とのデータのやり取りを行う。なお、本実施形態に係るコンピュータの構成に限定されるものではなく、他のコンピュータ構成であってもよい。例えば、データやプログラムの格納先は、その特徴に応じてＲＯＭ２０４、ＲＡＭ２０３、ＨＤＤ２０５などで変更することも可能である。また、本実施形態中で特に明記しない場合は、各種処理は、ＣＰＵ２０２により実行され、処理中に生成されるデータはＲＯＭ２０４、ＲＡＭ２０３、ＨＤＤ２０５によりＲｅａｄ／Ｗｒｉｔｅされるものとする。
【００１５】
図３は、本実施形態に係るＭＦＰ１０２のハードウェア構成図である。ＭＦＰ１０２は、ＣＰＵ３０２と、ＲＡＭ３０３と、ＲＯＭ３０４と、ハードディスク（ＨＤＤ）３０５と、プリンタエンジン３０６と、操作パネル３０７と、インターフェース３０８を備えている。ＭＦＰ１０２のこれらの構成要素は、それぞれシステムバス３０１を介して互いに接続されている。ＣＰＵ３０２は、ＲＡＭ３０３をワークメモリとして、ＨＤＤ３０５に格納されたソフトウェアを実行する。操作パネル３０７は、指示入力手段であり、入力したコマンド等を表示する表示手段でもある。また、操作パネル３０７から入力されるユーザの指示に応じて、ＭＦＰ１０２の動作を設定する。また、ＣＰＵ３０２は、インターフェース３０８を介して、外部の装置から入力されるＰＤＬデータなどの印刷データに基づき画像データを生成し、画像データをプリンタエンジン３０６に供給して印刷を行う。ＲＯＭ３０４には、ＨＤＤ３０５へのデータの入出力を制御する、いわゆるＢＩＯＳ等が記憶される。
【００１６】
図４は、図１に示したクライアント端末１０１のソフトウェア構成を説明するブロック図である。文書処理アプリケーション４０１は、本実施形態に係る各種処理を実行するためのユーザインターフェースを備え、ユーザからの要求を受け付けて、各種機能の実行を管理している。委譲処理部４０８を含む委譲処理アプリケーション４１０は、文書処理アプリケーション４０１とは異なるプロセス上で動作し、文書処理アプリケーション４０１の一部の処理を行う。なお、文書処理アプリケーション４０１は、複数のモジュールにより構成されている。そして、各モジュールは、１つまたは複数の関数を備えている。
【００１７】
文書処理アプリケーション４０１は、文書処理ＵＩ部４０２と、文書作成部４０３と、文書印刷部４０４と、委譲判定部４０６と、委譲通信部４０７を含む。各コンポーネントは、単数または複数のモジュールにより構成されてよい。文書処理ＵＩ部４０２は、後述の図９で示すユーザインターフェース（ウインドウ）などの構築やユーザからの各種入力操作を受け付けて処理を行う。なお、本実施形態の本文書処理アプリケーション４０１は、１つのプロセス上にて複数のスレッドを作成することにより、編集対象の文書ごとにユーザインターフェース（ウインドウ）８０１を表示して動作する。従って、当該表示されている複数のユーザインターフェースそれぞれにおいて、ユーザによる操作が可能な状態となっている。文書作成部４０３は、文書の解析や文書の編集や印刷設定の編集など、文書の作成処理を行う。上述したように、各コンポーネントは、１つまたは複数のモジュールにより構成されているので、文書作成部４０３は、印刷設定の編集を行う印刷設定モジュールを保持している。
【００１８】
なお、上述したプロセスとは、アプリケーションの実行単位である。また、文書処理アプリケーション４０１は、１つのプロセス上でプロセスより小さい処理単位であるスレッドを複数作成し、各スレッドにてユーザインターフェース（ウインドウ）８０１を表示してユーザによる操作を受け付けるように動作する。これにより、１つのプロセス上で複数のユーザインターフェース（ウインドウ）を表示して各ユーザインターフェースでの操作を受け付けることができる。
【００１９】
文書印刷部４０４は、文書をプリンタドライバ４０５に送信する処理を実行する。プリンタドライバ４０５は、ＨＤＤ２０７にインストールされ、通信可能なＭＦＰ１０２に印刷ジョブを送信する。委譲判定部４０６は、文書処理ＵＩ部が受けた操作に対応する処理内容を行うための関数を、文書処理アプリケーション４０１のプロセス上で行うか委譲処理アプリケーション４１０のプロセス上で行うかを判定する。本実施形態において、委譲とは、文書処理アプリケーション４０１が受け付けた処理内容を行うための関数を文書処理アプリケーション４０１のプロセス上では実行せずに、委譲処理アプリケーション４１０のプロセス上で実行させることを意味する。委譲通信部４０７は、委譲処理部４０８と通信し、委譲処理アプリケーション４１０のプロセス上で実施すると判定された関数の実行を委譲処理部４０８に依頼し、当該依頼した関数の実行結果を委譲処理部４０８から受信する。委譲処理部４０８は、委譲通信部４０７から依頼された関数の実行を行う。
【００２０】
図５は、文書処理アプリケーション４０１を構成するモジュールおよびモジュール内に含まれる関数に関する情報である。モジュール判定リスト５００は、モジュール名５０１と、それに紐づくデータの排他５０２および関数リスト５０３を含む。モジュール判定リスト５００は、モジュール名５０１とそれに紐づく情報のデータリストであり、モジュール単位での排他の有無や関数の情報を保持している。モジュール名５０１では、データが紐付けされて管理される。排他５０２は、モジュールに含まれる各関数が１つのプロセス上において並行で処理されず、排他で処理されるか否かを示すデータである。ＴＲＵＥの場合には排他で実施されることを意味し、ＦＡＬＳＥの場合には排他では実施されないことを意味する。関数リスト５０３は、関数名５０４およびＵＩ表示を行うか否かを示すＵＩ表示５０５をセットで１つまたは複数保持している。なお、本モジュール判定リスト５００のデータについては本文書処理アプリケーション４０１が初期状態として保持してもよく、後述するモジュール判定処理および関数判定処理で追加されてもよい。
【００２１】
図６は、文書処理アプリケーション４０１を構成するモジュールが、１つのプロセス上で複数の関数が並行では処理されないように排他制御を行っているか否かを判定する、モジュール判定処理のフローチャートである。なお、本判定処理フローについては、任意のタイミングで実施されてよい。例えば、文書処理アプリケーション４０１が起動され、ユーザまたは外部からの入力の待機状態に遷移したときに文書処理アプリケーション４０１を構成するモジュールに対して順次判定してもよい。また、ユーザまたは外部からの入力に応じて関数が実行されるタイミングで関数の属するモジュールに対して行ってもよい。なお、本処理フローは全て委譲判定部４０６が行う。
【００２２】
まず、モジュール排他判定処理が開始されると、ステップＳ６０１で、モジュール判定リスト５００の取得を行う。次に、ステップＳ６０２で、判定対象のモジュールの名称を取得する。そして、ステップＳ６０３で、モジュール判定リスト５００を参照し、ステップＳ６０２で取得したモジュール名５０１のモジュールが判定済みか否かを判定する。既に判定済みである場合（Ｙｅｓ）、本処理フローを終了する。一方、判定済みではない場合（Ｎｏ）、ステップＳ６０４に進む。そして、ステップＳ６０４で、ステップＳ６０２で取得したモジュール名５０１の設定を行う。次に、ステップＳ６０５で、関数を実施するスレッドを２つ（例えば、スレッドＡおよびスレッドＢ）作成する。
【００２３】
次に、ステップＳ６０６で、作成したスレッドＡを実施（実行）する。そして、ステップＳ６０７で、作成したスレッドＢを実施（実行）する。このとき、ステップＳ６０６では、スレッドＡ上で関数Ａを実施し、ステップＳ６０７では、スレッドＢ上で関数Ｂを実施する。なお、このとき、実施する関数ＡおよびＢについては、判定対象のモジュールから取得しておく。さらに、本実施形態では、取得時に、より処理時間の長いものを関数Ａにし、より処理時間の短いものを関数Ｂとする。
【００２４】
次に、ステップＳ６０８で、関数ＡおよびＢのどちらが先に終了したかを判定する。関数Ａが先に終了した場合、追い越しが発生しないため１つのプロセス上で複数の関数が並行では処理されないように排他制御が行われていると判定し、ステップＳ６０９に進む。そして、ステップＳ６０９で、排他５０２をＴＲＵＥに設定する。一方関数Ｂが先に終了した場合、追い越しが発生しているため、１つのプロセス上で複数の関数が並行で処理することが可能であり、排他制御が行われていないと判定し、ステップＳ６１０に進む。そして、ステップＳ６１０で、排他５０２をＦＡＬＳＥに設定する。ステップＳ６０９またはステップＳ６１０で排他５０２の設定を行った後、本処理フローを終了する。
【００２５】
図７および図８は、ユーザからの入力を受けて文書処理を行う際に、処理内容を行うための関数を文書処理アプリケーション４０１上で実行するか、委譲処理アプリケーション４１０上で実行するかを判定し、関数を実施するフローチャートである。まず、ステップＳ７０１で、委譲判定部４０６は、モジュール判定リスト５００を取得する。次に、ステップＳ７０２で、ユーザからの入力を受けて行う文書処理を行うための依頼先となる関数の属するモジュール（以降、対象モジュールとする）のモジュール名を取得する。次に、ステップＳ７０３で、モジュール判定リスト５００のモジュール名５０１を参照し、ステップＳ７０２で取得したモジュール名の対象モジュールが判定済みか否かを判定する。既に判定済みである場合（Ｙｅｓ）、ステップＳ７０５に進み、判定済でない場合（Ｎｏ）、ステップＳ７０４に進む。
【００２６】
ステップＳ７０４で、図６に示すモジュール判定処理を実行する。次に、ステップS７０５で、委譲判定部４０６は、排他５０２を参照し、対象モジュールが排他制御を行っているか否かを判定する。排他制御を行っていない場合（Ｎｏ）、ステップＳ７１２に進み、排他制御を行っている場合（Ｙｅｓ）、ステップＳ７０６に進む。ステップＳ７１７で、文書アプリケーション４０１は、処理内容を行うための関数を文書処理アプリケーション４０１のプロセス上（同一プロセス上）で実行する。次に、ステップＳ７０６で、委譲判定部４０６は、関数リスト５０３を取得する。次に、ステップＳ７０７で、委譲判定部４０６は、ＵＩ表示するか否かの判定が実施されているか否かを判定する。判定済みの場合（Ｙｅｓ）、ステップＳ7０８に進む。未判定の場合（Ｎｏ）、図８のステップＳ７１２に進む。
【００２７】
次に、ステップＳ７０８で、委譲判定部４０６は、ＵＩ表示５０５を取得し、処理内容を行うための関数がＵＩを表示するか否かを判定する。ＵＩを表示すると判定された場合（Ｙｅｓ）、ステップＳ７０９に進み、表示しないと判定された場合（Ｎｏ）、ステップＳ７１７に進む。ステップＳ７０９で、委譲判定部４０６は、委譲通信部４０７に委譲処理アプリケーション４１０のプロセスの生成を依頼し、通知を受けた委譲通信部４０７は、委譲処理アプリケーション４１０のプロセスを生成する。なお、このとき、生成した委譲処理アプリケーション４１０のプロセスについては、処理完了後に破棄してもよいし、生存（保存）させておき、後で再利用してもよい。その場合は、本処理のステップＳ７０９をスキップする。
【００２８】
次に、ステップＳ７１０で、委譲通信部４０７は、委譲処理部４０８と通信し、委譲処理アプリケーション４１０のプロセス上で実施する処理内容を行うための関数の実行を依頼する。次に、ステップＳ７１１で、委譲処理の依頼を受けた委譲処理部４０８は、委譲処理アプリケーション４１０のプロセス上で処理内容を行うための関数を実行する。そして、処理を終了する。
【００２９】
図８のステップＳ７１２において、ステップＳ７１７の処理と同様に、文書アプリケーション４０１は、処理内容を行うための関数を文書処理アプリケーション４０１のプロセス上で実行する。次に、ステップＳ７１３で、委譲判定部４０６は、ステップＳ７１２で実行された関数により、ウインドウ数（Ｗｉｎｄｏｗ数）が増加するか否かの監視をする。次に、ステップＳ７１４で、委譲判定部４０６は、ステップＳ７１３の結果を受けて、ウインドウ数が増加したか否かを判定する。ウインドウ数が増加した場合（Ｙｅｓ）、ステップＳ７１６に進み、ウインドウ数が増加していない場合（Ｎｏ）、ステップＳ７１５に進む。ステップＳ７１５で、ＵＩ表示５０３をＦＡＬＳＥに設定する。ステップＳ７１６で、ＵＩ表示５０３をＴＲＵＥに設定する。そして、処理を終了する。
【００３０】
以上の処理により、文書処理アプリケーション４０１を構成するモジュールに含まれる関数が初めて実行される時に、関数を文書処理アプリケーション４０１のプロセス上で実行するか、委譲処理アプリケーション４１０のプロセス上で実行するかが判定される。その結果、２回目以降の関数実行時には、委譲処理アプリケーション４１０のプロセス上で実行すると判定された関数を、委譲処理アプリケーション４１０のプロセス上で実行することが可能となる。なお、本実施形態では、ステップＳ７０５の後にステップＳ７０８を実行しているが、これに限定することなく、例えば、ステップＳ７０８の処理をステップＳ７０５の前に行ってもよい。
【００３１】
図９は、文書処理アプリケーション４０１のＵＩの一例を示す図である。文書処理アプリケーション４０１のＵＩは、文書のオープン（開く）または新規作成の指示を受けた場合に、文書処理アプリケーション４０１が実行され表示される。ウインドウ８０１には、文書名８０２と、その文書の章８０３と、文書のページ８０４が表示される。また、プリンタドライバ選択８０５と、印刷ボタン８０６と、出力用紙サイズ選択８０７と、ステイプル選択８０８と、文書の本文データのサムネイル８０９と、設定ボタン８１０と、テンプレートボタン８１１が表示される。
【００３２】
プリンタドライバ選択８０５は、ＨＤＤ２０７にインストールされたプリンタドライバの一覧を選択肢として表示し、ユーザからの指示に応じて印刷するプリンタを決定する。印刷ボタン８０６は、ユーザからの指示に応じてプリンタドライバ選択８０５で指定したプリンタドライバヘ文書の本文データの印刷を処理する。出力用紙サイズ選択８０７は、プリンタドライバ選択８０５で指定したプリンタドライバから利用可能な用紙サイズの一覧を取得してリストし、ユーザからの指示に応じて出力用紙サイズを決定する。ステイプル選択８０８は、ステイプル機能を設定に使用される。サムネイル８０９は、出力用紙サイズ選択８０７で指定された出力用紙サイズを反映して表示を行う。設定ボタン８１０は、プリンタドライバ選択８０５で指定されているプリンタドライバの設定画面８５０を表示するボタンである。テンプレートボタン８１１は、印刷設定の組み合わせをまとめて設定するためのボタンであり、例えば、用紙サイズＡ４とステイプルＯＮを同時に行う組み合わせを設定するためのボタンである。さらに、印刷設定は、文書全体である文書名８０２の階層だけではなく、章８０３の階層やページ８０４の階層にも設定が可能であり、これらの組み合わせをテンプレートとして登録することもできる。
【００３３】
文書処理アプリケーション４０１にて、図６〜図８に示す処理フローを適用することについて説明する。上述したように、文書作成部４０３は、構成要素として印刷設定モジュールを有する。印刷設定モジュールは、出力用紙サイズ選択８０７による出力用紙の変更やステイプル選択８０８によるステイプル機能の変更、設定ボタン８１０によるプリンタドライバの設定画面８５０の表示など、印刷設定の変更の処理を行うための各関数を提供している。また、本実施形態では、印刷設定モジュールは、図６のモジュール判定処理により、排他を有すると判定された状態とする。
【００３４】
文書処理ＵＩ部４０２が、出力用紙の変更やステイプル機能の変更、プリンタドライバの設定画面８５０の表示の入力を受けると、ステップＳ７０２で、印刷設定変更の文書処理を行うための各関数を提供するモジュール名の印刷設定モジュールを取得する。そして、印刷設定変更の文書処理を行うための関数が初めて実行される場合には、ステップＳ７０７で未判定と判定されるため図８のステップＳ７１２に進む。出力用紙サイズ選択８０７の出力用紙の変更やステイプル選択８０８のステイプル機能の変更の場合には、関数の実行によりＵＩの表示は行われない。そのため、ステップＳ７１３およびＳ７１４では、ウインドウ数は増加しないと判定されるため、ステップＳ７１５にてＵＩ表示がＦＡＬＳＥに設定される。その結果、次回関数実行以降は、ステップＳ７０８でＵＩ表示なしと判定されるため、ステップＳ７１７により文書処理アプリケーション４０１のプロセス上で関数が実行される。
【００３５】
設定ボタン８１０のボタンが押下された場合には、関数の実行により、プリンタドライバの設定画面８５０が表示される。そのため、ステップＳ７１３およびＳ７１４ではウインドウ数が増加すると判定されるため、ステップＳ７１６にてＵＩ表示がＴＲＵＥに設定される。その結果、次回関数実行以降は、ステップＳ７０８において、ＵＩ表示ありと判定される。そして、ステップＳ７０９により、委譲処理アプリケーション４１０のプロセスの生成が行われる。次に、ステップＳ７１０で、委譲通信部４０７が、委譲処理部４０８上で印刷設定モジュールの関数の実行を依頼し、ステップＳ７１１で、委譲処理部４０８が印刷設定モジュールの関数を実行する。
【００３６】
以上、本実施形態によれば、同一プロセスにおいて処理対象ごとに複数のウインドウを表示し処理するアプリケーションにおいて、呼び出すモジュールの関数の中で別のプロセスで実行するべき処理のみを判定し、一部の処理を実行することができる。別プロセス上で一部の処理を実行することにより、不要なプロセス生成やプロセス間通信をせずに効率よくそれぞれのウインドウの操作を妨げることなく処理することが可能となる。
【００３７】
（第２実施形態）
次に、本発明の第２実施形態を実現するための最良の形態について図面を用いて説明する。なお、第１実施形態と同様の構成等についてはその説明を省略し、第１実施形態との差分のみ説明する。なお、同一の処理ステップの番号の場合は同一の処理を示す。
【００３８】
本実施形態では、図７のステップＳ７０８において、ＵＩ表示は行わないと判定された場合でも、委譲処理アプリケーションのプロセス上で関数を実行する条件を追加している。文書処理アプリケーション４０１には、図９のテンプレートボタン８１１のように複数の印刷設定をまとめて設定するような機能が存在する。このような機能を処理する場合、ＵＩを表示しなくても処理が占有されてしまい、長時間排他状態になることが考えられる。そこで、本実施形態では、印刷設定に特化して長時間排他される状態を回避する判定を行うことで、複数のウインドウがそれぞれ停止することなく動作することができる。
【００３９】
図１０は、図7のステップＳ７０８においてＵＩ表示を行わないと判定された場合に、処理が開始される印刷設定の排他判定処理を示すフローチャートである。図９の出力用紙サイズ選択８０７やステイプル選択８０８による設定の変更や、テンプレートボタン８１１のボタンが押下されることで図７の関数判定処理が開始され、さらにＵＩ表示を行わないと判定された場合に本処理が開始される。
【００４０】
まず、ステップＳ９０１で、委譲判定部４０６は、ユーザからの入力に対応する設定対象の機能群を取得する。本実施形態において、この機能とは、設定対象および設定値を意味する。例えば、出力用紙サイズ選択８０７では、出力用紙サイズおよびＡ４といった内容となる。出力用紙サイズ選択８０７やステイプル選択８０８で選択される機能では、取得される機能数が単数になり、テンプレートボタン８１１で選択される機能では、機能数が単数または複数となる。
【００４１】
次に、ステップＳ９０２で、委譲判定部４０６は、ステップＳ９０１で取得した機能群の中から１つの機能を取得する。次に、ステップＳ９０３で、委譲判定部４０６は、ステップＳ９０２で取得した機能に関連する機能を取得する。関連する機能とは、取得した機能を行うことで併せて設定が必要となる機能のことである。例えば、出力用紙サイズ選択８０７でステイプルが不可能な用紙に変更した場合に、ステイプル選択８０８による設定ＯＮである場合に、ＯＦＦに変更するなどが考えられる。
【００４２】
そして、ステップＳ９０４で、委譲判定部４０６は、ステップＳ９０１で取得した全機能の関連機能が取得完了したか否かを判定する。取得が完了している場合（Ｙｅｓ）、ステップＳ９０５に進み、取得が完了していない場合（Ｎｏ）、ステップＳ９０２に戻って処理を行う。次に、ステップＳ９０５で、委譲判定部４０６は、ステップＳ９０１で取得した機能群の機能数と、ステップＳ９０３で取得した関連機能の機能数を合計する。次に、ステップＳ９０６で、ステップＳ９０５で合計した数値と、任意（所定）の閾値とを比較し、合計値が閾値よりも大きい場合（Ｙｅｓ）、ステップＳ７０９に進み、合計値が閾値よりも小さい場合（Ｎｏ）、ステップＳ７１７に進む。なお、任意の閾値については、プログラムが初期状態として保持してもよく、システム環境などに応じて動的に決定してもよい。
【００４３】
以上のように、本処理フローを適用することで、出力用紙サイズ選択８０７やステイプル選択８０８で選択される単独の機能でかつＵＩを表示しないような場合には、文書処理アプリケーション４０１のプロセス上で関数が実行される。一方、テンプレートボタン８１１で選択される、ＵＩは表示しないが複数の機能を設定するような場合には、委譲処理アプリケーション４１０のプロセス上で関数が実行されることとなり、排他状態になるのを防ぐことが可能となる。
【００４４】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００４５】
また、本発明の好ましい実施形態について説明したが、本発明は、これらの実施形態に限定されず、その要旨の範囲内で種々の変形および変更が可能である。
【図１】
2017078992.tif 000003
【図２】
2017078992.tif 000004
【図３】
2017078992.tif 000005
【図４】
2017078992.tif 000006
【図５】
2017078992.tif 000007
【図６】
2017078992.tif 000008
【図７】
2017078992.tif 000009
【図８】
2017078992.tif 000010
【図９】
2017078992.tif 000011
【図１０】
2017078992.tif 000012