(57)【特許請求の範囲】
【請求項１】
複数のアプリケーションが動作する情報処理装置であって、
前記情報処理装置の起動時に、前記アプリケーションを起動する場合、該起動を指示したタスクとは別のアプリケーション毎のタスクから、該アプリケーションの開始処理を行う開始手段と、
該アプリケーションの開始処理が、所定の時間内に完了するか否かを監視する監視手段と、
該アプリケーションの開始処理が所定の時間内に完了しなかった場合、該アプリケーションの開始処理を中断する中断手段と、を有し、
前記開始手段は、前記中断手段により前記アプリケーションの開始処理が中断された場合には、他のアプリケーションの開始処理に移行することを特徴とする情報処理装置。
【請求項２】
前記開始手段は、前記情報処理装置の起動時とは異なるタイミングで、前記アプリケーションを起動する場合、該アプリケーションの起動を指示したタスクから、該アプリケーションの開始処理を行うことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
アプリケーションを追加するインストール手段と、
該開始処理が開始されたアプリケーションが、前記インストール手段により追加されたアプリケーションに該当するか否かを判断する判断手段と、を有し、
前記中断手段は、前記判断手段により、該開始処理が開始されたアプリケーションが前記インストール手段により追加されたアプリケーションに該当すると判断された場合、該アプリケーションの開始処理を中断しないことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記判断手段により、該開始処理が開始されたアプリケーションが前記インストール手段により追加されたアプリケーションに該当すると判断された場合、該アプリケーションを外部から取得する取得手段を有することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記取得手段は、該アプリケーションの開始処理が所定の時間内に完了しなかった回数が一定の回数を超えた場合に、該アプリケーションを外部から取得することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記所定の時間は、前記情報処理装置の機種に応じた時間、前記情報処理装置のオペレーティングシステムに応じた時間、前記情報処理装置の装置仕様に応じた時間、又は、前記アプリケーション毎の前記アプリケーションに応じた時間であることを特徴とする請求項１乃至５のいずれか１項の記載の情報処理装置。
【請求項７】
前記アプリケーションの開始処理が開始してから完了するまでの時間を、アプリケーション毎に計測する計測手段を有し、
前記所定の時間は、前記計測手段により計測されたアプリケーション毎の時間であることを特徴とする請求項１乃至５のいずれか１項の記載の情報処理装置。
【請求項８】
前記中断手段により開始処理が中断されたアプリケーションの情報を、前記情報処理装置の利用者に対して警告する警告手段を有することを特徴とする請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
前記情報処理装置は、画像処理装置であることを特徴とする請求項１乃至８のいずれか１項に記載の情報処理装置。
【請求項１０】
複数のアプリケーションが動作する情報処理装置の制御方法であって、
前記情報処理装置の起動時に、前記アプリケーションを起動する場合、該起動を指示したタスクとは別のアプリケーション毎のタスクから、該アプリケーションの開始処理を行う開始ステップと、
該アプリケーションの開始処理が、所定の時間内に完了するか否かを監視する監視ステップと、
該アプリケーションの開始処理が所定の時間内に完了しなかった場合、該アプリケーションの開始処理を中断する中断ステップと、
前記中断ステップで前記アプリケーションの開始処理が中断された場合には、他のアプリケーションの開始処理に移行するステップと、
を有することを特徴とする情報処理装置の制御方法。
【請求項１１】
コンピュータを、請求項１乃至９のいずれか１項に記載の手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のアプリケーションが動作する情報処理装置における、アプリケーションの起動を管理する技術に関する。
【背景技術】
【０００２】
画像形成装置上では、複数のアプリケーション（以下、アプリと表記する）が動作し、アプリ間での連携動作によって新たな価値が生み出されている。画像形成装置では、画像形成装置を起動する際に、所定のアプリの開始処理を呼び出し、アプリが提供する機能を利用可能な状態にすることが一般的に行われている。
しかし、特定のアプリの開始処理が正常に終了せず、例えば他の処理を待ち合わせたまま停止するようなことがあると、開始処理を完了できない特定のアプリ以外のアプリが提供する機能まで、利用できなくなるといった課題があった。
【０００３】
この課題に関連する従来の技術として、特許文献１に記載のデッドロック検出装置がある。特許文献１では、複数のタスクが互いに占有している資源によるデッドロックを検出する装置が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−３３７７９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、上記特許文献１の技術では、利用する資源を実行時に識別するための仕組みをアプリ側に予め備えておく必要があり、アプリ開発上の手間が増加するといった課題や、この仕組みを備えていないアプリに対しては適用できないといった課題があった。
また、上記特許文献１の技術では、資源に関するデッドロックしか検出できず、例えばバグやプログラムファイルの破損等によってアプリの開始処理が完了しないような状況では、有効ではないといった課題があった。
【０００６】
本発明は、上記の問題点を解決するためになされたものである。本発明の目的は、一部のアプリケーションが開始処理を完了できない状況にあっても、装置としては起動処理を継続でき、他のアプリケーションの機能を利用可能にする仕組みを提供することである。
【課題を解決するための手段】
【０００７】
本発明は、複数のアプリケーションが動作する情報処理装置であって、前記情報処理装置の起動時に、前記アプリケーションを起動する場合、該起動を指示したタスクとは別のアプリケーション毎のタスクから、該アプリケーションの開始処理を行う開始手段と、該アプリケーションの開始処理が、所定の時間内に完了するか否かを監視する監視手段と、該アプリケーションの開始処理が所定の時間内に完了しなかった場合、該アプリケーションの開始処理を中断する中断手段と、を有し、前記開始手段は、前記中断手段により前記アプリケーションの開始処理が中断された場合には、他のアプリケーションの開始処理に移行することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、一部のアプリケーションが開始処理を完了できない状況にあっても、装置としては起動処理を継続でき、他のアプリケーションの機能を利用可能にすることができる。
【図面の簡単な説明】
【０００９】
【図１】本実施例の画像形成装置のハードウェア構成図
【図２】本実施例の画像形成装置のソフトウェア構成図
【図３】アプリリストを例示する図
【図４】警告画面を例示する図
【図５】実施例１の画像形成装置の起動処理を説明するフローチャート
【図６】実施例１のアプリの開始処理を説明するフローチャート
【図７】アプリの開始処理を中断する処理を説明するためのフローチャート
【図８】警告表示処理を説明するためのフローチャート
【図９】実施例２のアプリの開始処理を説明するフローチャート
【図１０】実施例４のアプリの開始処理を説明するフローチャート
【図１１】実施例５の画像形成装置の起動処理を説明するフローチャート
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための形態について図面を用いて説明する。
まず、用語の定義を行う。
ユーザとは、本実施例の画像形成装置を利用する人とする。
サービスマンとは、ユーザの要望を受けて本実施例の画像形成装置を修理、メンテナンスする人とする。
利用者とは、上記ユーザとサービスマンを含めた総称とする。
アプリとは、アプリケーションの略称であり、本実施例の画像形成装置で動作するソフトウェアであって、何らかの機能を直接、間接的に利用者に提供するものである。本実施例の画像形成装置が保持、または後付けされるハードウェアの動作を制御するソフトウェアも含む。
アプリの開始処理とは、利用者がアプリの提供する機能を利用できる状態にするための処理とする。例えば、アプリの動作環境を切り替える設定値を読みこんだり、連携動作するサーバとの通信テストを行ったりすることが考えられる。開始処理の具体的な内容は、アプリの性質に依存するものであり、さまざまな処理が有り得る。
アプリを開始するとは、上述のアプリの開始処理を呼び出すこととする。
アプリタイプとは、アプリの分類を示す情報とする。アプリタイプの種類は、「システム」、「一般」、「ログイン」の３種類とするが、より詳細な分類であってもよい。なお、アプリタイプ「システム」のアプリとは、画像形成装置のファームウェアとして予め用意されたアプリが該当する。
タスクとは、オペレーティングシステム（ＯＳ）の配下で動作するプログラムの単位とする。プロセスやスレッドなどがタスクに該当する。
【実施例１】
【００１１】
図１は、本発明の一実施例を示す画像形成装置１００のハードウェア構成を例示する図である。
画像形成装置１００は、複合機（ＭＦＰ）に代表される、プリント、スキャン、ファクシミリし等の画像を形成する機能を有する画像処理装置である。ＣＰＵ１０１は、不揮発性メモリ１０２や補助記憶装置１０４に格納されるプログラムを読み出して実行し、様々な処理の制御を行う。
【００１２】
不揮発性メモリ１０２は、ＲＯＭから構成され、機器の起動処理において初期段階に必要なプログラムやデータが格納されている。揮発性メモリ１０３は、ＲＡＭから構成され、プログラム、データの一時的な格納場所として利用される。
【００１３】
補助記憶装置１０４は、ハードディスクやＲＡＭドライブ等の大容量記憶装置から構成され、大容量データの保管、プログラムの実行コードの保持、画像形成装置１００の設定値の保持を行う。前記揮発性メモリ１０３と比較して、長時間保持する必要があるデータを記憶する。補助記憶装置１０４は不揮発性の記憶装置であるため、画像形成装置１００の電源が切られてもデータを記憶し続けることができる。
【００１４】
ディスプレイ１０５は、利用者に情報を伝えるための表示装置である。
入力装置１０６は、利用者の選択指示を受け付け、内部バス１１０を介してプログラムに伝達するための装置である。
内部バス１１０は、各ハードウェア装置を前記画像形成装置１００内で通信可能な状態に接続する通信バスである。
【００１５】
なお、図示しないが、画像形成装置１００には、ネットワークを介して外部装置と通信可能なネットワークインタフェース、外部メモリ等を接続可能な外部インタフェース等を有する構成であってもよい。
【００１６】
図２は、画像形成装置１００のソフトウェア構成を例示する図である。
図２に示す各ソフトウェアは、画像形成装置１００においてＣＰＵ１０１が実行可能な状態で、不揮発性メモリ１０２もしくは補助記憶装置１０４に保存され、ＣＰＵ１０１にて実行されることで、その機能が実現される。また、これらのソフトウェアの実行時に使用される各種情報は、画像形成装置１００において、揮発性メモリ１０３もしくは補助記憶装置１０４に保持され、ソフトウェア間でやりとりが行われる。
【００１７】
以下に各ソフトウェア部を説明する。
アプリリスト記憶部２０１は、画像形成装置１００で動作するアプリの一覧情報をアプリリストとして記憶する。アプリリストは、２種類存在する。１つは、画像形成装置１００のファームウェアとして予め用意されたアプリのリストである。該リストを、ここでは初期アプリリストと呼ぶ。初期アプリリストの例を、図３（ａ）を用いて説明する。
【００１８】
図３（ａ）は、初期アプリリストを例示する図である。
「アプリ」の列には、アプリの名称が記憶されている。図３（ａ）に示す例では、４種類のアプリ（ｃｏｐｙ、ｂｏｘ、ｓｅｎｄ＿ａ、ｓｅｎｄ＿ｂ）が存在している。なお、「アプリ」の列には、アプリの名称の代わりに、アプリの識別子であってもよいし、利用者に見せる文字列であってもよい。
【００１９】
「開始優先度」の列には、画像形成装置１００が起動する際に、後述するアプリ開始部２０４がアプリを開始する際の優先度が記憶されている。ここでは、優先度が、数字で表現され、優先度の値が小さいアプリほどより早く開始される。図３（ａ）の例では、「ｃｏｐｙ」、「ｂｏｘ」、「ｓｅｎｄ＿ａ」、「ｓｅｎｄ＿ｂ」の順に開始されることになる。
【００２０】
「起動時に開始するか」の列には、画像形成装置１００が起動する際に、アプリを開始するか否かを示す情報が記憶されている。「起動時に開始するか」の値が「する」であれば、後述するアプリ開始部２０４が、画像形成装置１００が起動する際に、アプリを開始する。一方、「起動時に開始するか」の値が「しない」であれば、後述するアプリ開始部２０４が、画像形成装置１００が起動する際に、アプリを開始しない。図３（ａ）の例では、「ｓｅｎｄ＿ｂ」のアプリだけは、画像形成装置１００が起動する際に、開始されない。
【００２１】
以下、図２の説明に戻る。
アプリリスト記憶部２０１が記憶するもう１つのアプリリストは、初期アプリに加えて、後述するインストール部２０８によって後からインストールされたアプリも含んだリストである。該リストを、ここではフルアプリリストと呼ぶ。フルアプリリストの例を、図３（ｂ）を用いて説明する。
【００２２】
図３（ｂ）は、フルアプリリストを例示する図である。
図３（ｂ）に示すように、フルアプリリストに用意された列は図３（ａ）と同等である。フルアプリリストでは、図３（ａ）に記憶されていた、４つのアプリに加えて、「Ａｐｐ１」、「Ａｐｐ２」というアプリが記憶されている。
【００２３】
本実施例では、フルアプリリストと初期アプリリストとを別々に記憶する形態を説明した。これは、初期アプリリストは、画像形成装置１００のファームウェアと一緒に扱われるため、上書き保存できない記憶領域に保存される場合があるためである。さらに、初期アプリリストは、ファームウェアの更新と共に上書き更新される可能性があるためである。しかし、他の形態でもよい。例えば、フルアプリリストだけを記憶する構成であってもよい。また、その場合に、後述するインストール部２０８によって後からインストールされたアプリと初期アプリとを区別可能にするための識別子を保持する構成であってもよい。アプリリスト記憶部２０１は、アプリリストを、例えば補助記憶装置１０４に記憶するものとするが、初期アプリリストについては不揮発性メモリ１０２に記憶するようにしてもよい。
【００２４】
アプリ状態記憶部２０２は、アプリの状態を記憶する（例えば揮発性メモリ１０３に記憶する）。アプリの状態とは、「停止中」、「開始中」、「動作中」を含むものとするが、この一部だけであってもよいし、よりさまざまな状態を含むものでもよい。
【００２５】
「停止中」の状態とは、アプリの機能を利用できない状態を示す。「開始中」の状態とは、アプリが開始処理を実行中であることを示し、開始処理が終わっていないためアプリの機能を利用できない状態を示す。「動作中」の状態とは、アプリが開始処理を完了し、アプリの機能を利用できる状態を示す。
【００２６】
起動制御部２０３は、画像形成装置１００の起動処理を行い、その中で、各アプリの開始処理を呼び出す。具体的には、起動制御部２０３は、アプリリスト記憶部２０１が保持するフルアプリリストを参照し、「開始優先度」に従って順番に後述するアプリ開始部２０４にアプリの開始処理を依頼する。また、起動制御部２０３は、画像形成装置１００の起動処理が終わるまでの間、画像形成装置１００が起動処理中であることを判別可能な情報を記憶する（例えば揮発性メモリ１０３に記憶する）。
【００２７】
アプリ開始部２０４は、アプリの開始処理を呼び出す。画像形成装置１００の起動時であるかを判定し、起動時であればアプリの開始処理を呼び出す専用のスレッドを生成し、生成したスレッドからアプリの開始処理を呼び出す。一方、画像形成装置１００の起動時でない場合は、アプリ開始部２０４は、アプリの開始処理を要求している要求元のスレッドからアプリの開始処理を呼び出す。この場合は、起動制御部２０３以外のスレッドからアプリの開始処理が要求されていることになる。この場合、別のスレッドがないため、開始処理の終了を監視することはできず、処理の中断を依頼することもできない。この場合、画像形成装置１００の起動時のように、画像形成装置１００の機能全体が利用できなくなるようなこともなく、スレッド資源も節約できる。さらに、アプリ開始部２０４は、アプリの開始処理の進捗状況によって、アプリの状態を前述のアプリ状態記憶部２０２に記憶させる。
【００２８】
アプリ監視部２０５は、アプリ開始部２０４によって開始処理を呼び出されたアプリが、開始処理を所定の時間内に完了したか否かを監視する。所定の時間が経過してもアプリの開始処理が完了しない場合、アプリ監視部２０５は、該アプリの開始処理の中断を依頼する。また、アプリ監視部２０５は、後述する警告表示に備えて、所定の時間が経過しても開始処理が完了しなかったアプリを記憶する（例えば揮発性メモリ１０３に記憶する）。
【００２９】
なお、アプリの開始処理を中断する際は、アプリの開始処理が中途半端に進んでしまっている点を考慮する必要があるため、アプリ監視部２０５は、アプリが登録した機能を検索し、削除する。ここでいう機能とは、例えばアプリが提供する画面を、表示する画面を管理するフレームワークに登録することなどが該当する。この場合は、アプリ監視部２０５は、該登録された画面を登録解除することになる。また別の例としては、他のアプリに対して提供する機能を利用可能なように、連携機能を管理するフレームワークに登録することなどが該当する。この場合は、アプリ監視部２０５は、該登録された機能を登録解除することになる。
【００３０】
起動チェック部２０６は、アプリが期待通り開始されたかをチェックする。具体的には、前記アプリ監視部２０５が記憶した、所定の時間が経過しても開始処理が完了しなかったアプリが存在したか否かをチェックする。さらに、フルアプリリストに記憶された全てのアプリの「起動時に開始するか」の情報と、前記アプリ状態記憶部２０２が保持する現在のアプリの状態とを比較し、違いがないかをチェックする。これによって、後述する警告部２０７で警告すべきであるかをチェックする。
【００３１】
警告部２０７は、前記ディスプレイに警告メッセージを表示する。警告する内容は、前記起動チェック部２０６によってチェックされた内容である。
図４（ａ）、図４（ｂ）は、アプリの開始処理に問題があった場合に表示される警告画面を例示する図である。
【００３２】
警告画面４０１（ａ）は、ユーザ向けの警告画面の例である。
警告画面４０１（ａ）に示すように、警告メッセージ４１０ａには、停止中アプリの存在を説明するメッセージと、サービスマンへの問い合わせを促すナビゲーションメッセージが含まれる。この例では、４１１ａのように、Ｓｅｎｄアプリに何らかの問題が発生し、「停止中」であることが警告されている。このメッセージにより、ユーザはＳｅｎｄアプリが利用できないことに気づくことが可能となる。
【００３３】
また、警告画面４０１（ｂ）に示すように、警告画面４０１ｂは、サービスマン向けの警告画面の例である。警告メッセージ４１０ｂには、開始処理が間に合わなかったアプリが存在すること（４３０ｂ）、実際に「停止中」のアプリが存在すること（４１１ｂ）が警告されている。この例では、４３０ｂ及び４１１ｂのように、Ｓｅｎｄアプリに何らかの問題が発生し、「停止中」であることが警告されている。また、４１１ｂのように、現在は「動作中」であるものの、Ｂｏｘアプリも所定の時間内に開始処理を終えることができなかったことを示しており、何らかの問題がある可能性が警告されている。サービスマンは、この警告によって、ファームウェア更新や補助記憶装置１０４の交換などの対処方法を講じることができる。
【００３４】
以下、図２の説明に戻る。
インストール部２０８は、前記画像形成装置１００に新たなアプリを追加する。新たなアプリは、不図示の外部記憶装置や、不図示のネットワーク装置を経由して取得され、展開され追加される。
【００３５】
図５は、実施例１の画像形成装置の起動処理の流れを説明するためのフローチャートである。図５及び後述する図６〜図１１に示すフローチャートに対応する処理は、図２に示したソフトウェアにより実現されるものである。即ち、これらのフローチャートに対応する処理は、画像形成装置１００のＣＰＵ１０１が、不揮発性メモリ１０２もしくは補助記憶装置１０４に記憶されたプログラムを実行することで実現されるものである。
【００３６】
Ｓ５０１において、起動制御部２０３は、画像形成装置の起動指示を検知すると、Ｓ５０２に処理を進める。
Ｓ５０２において、起動制御部２０３は、画像形成装置の起動処理中であることを揮発性メモリ１０３に記憶する。
【００３７】
次に、Ｓ５０３において、起動制御部２０３は、アプリリスト記憶部２０１からフルアプリリスト（例えば図３（ｂ））を取得し、未処理のアプリを１つ選択する処理を行う。この際、起動制御部２０３は、開始優先度が高い順にアプリを選択する。そして、未処理のアプリが選択できたと判定した場合（Ｓ５０３でＹｅｓの場合）、起動制御部２０３は、Ｓ５０４に処理を進める。
【００３８】
Ｓ５０４において、起動制御部２０３は、上記Ｓ５０３で選択したアプリが起動時に開始するアプリであるか否を判定する。なお、起動時に開始するアプリであるかは、前述のフルアプリリストにある、「起動時に開始するか」の情報に基づいて判断する。
そして、起動時に開始するアプリでないと判定した場合（Ｓ５０４でＮｏの場合）、起動制御部２０３は、そのままＳ５０３に処理を移行し、次のアプリに処理を移す。
【００３９】
一方、起動時に開始するアプリであると判定した場合（Ｓ５０４でＹｅｓの場合）、起動制御部２０３は、起動制御部２０３は、アプリ開始部２０４に、アプリの開始を指示する。該指示を受けると、アプリ開始部２０４は、アプリの開始を行う（Ｓ５０５）。なお、Ｓ５０５の処理の詳細は図６を用いて後に説明する。そして、起動制御部２０３は、Ｓ５０３に処理を移行し、次のアプリに処理を移す。
【００４０】
そして、上記Ｓ５０３において、未処理のアプリが存在しないため、未処理のアプリを選択できなかったと判定した場合（Ｓ５０３でＮｏの場合）、起動制御部２０３は、その旨を起動チェック部２０６に通知し、Ｓ５０６に処理を進める。該通知を受けると、起動チェック部２０６は、警告表示処理を行う（Ｓ５０６）。なお、Ｓ５０６の処理の詳細は図８を用いて後に説明する。
次に、Ｓ５０７において、起動制御部２０３は、画像形成装置１００の起動処理が完了したことを揮発性メモリ１０３に記憶し、本フローチャートの処理を終了する。
【００４１】
図６は、実施例１における図５のＳ５０４に示したアプリの開始処理の流れを説明するためのフローチャートである。
Ｓ６０１において、アプリ開始部２０４は、これから開始処理を呼び出すアプリのステータスを「開始中」に更新する。
【００４２】
次に、Ｓ６０２において、アプリ開始部２０４は、画像形成装置の起動中の処理かを判定する。そして、画像形成装置の起動中であると判定した場合（Ｓ６０２でＹｅｓの場合）、アプリ開始部２０４は、Ｓ６０４に処理を進める。
【００４３】
Ｓ６０４において、アプリ開始部２０４は、アプリの開始処理を呼び出すスレッドを生成する。
次に、Ｓ６０５において、アプリ開始部２０４は、上記Ｓ６０４で生成したスレッドの処理を開始する。スレッドの処理を開始すると、開始されたスレッドのコンテキストでアプリの開始処理が実行される。
【００４４】
Ｓ６０６において、アプリ監視部２０５が、上記Ｓ６０５で開始されたスレッドで呼び出されたアプリの開始処理が完了したか、又は、所定の時間が経過したかを検知する。なお、アプリ監視部２０５は、上記いずれかを検知するまで待ち続ける。そして、上記いずれかを検知すると、アプリ監視部２０５は、Ｓ６０７に処理を進める。
【００４５】
Ｓ６０７において、アプリ監視部２０５は、上記アプリの開始処理を呼び出しているスレッド（上記Ｓ６０５で開始したスレッド）に対して、アプリの開始処理が終了したか否かを問い合わせて判定する。そして、アプリの開始処理が終了していないと判定した場合（Ｓ６０７でＮｏの場合）、アプリ監視部２０５は、Ｓ６０８に処理を進める。
【００４６】
Ｓ６０８において、アプリ監視部２０５は、上記Ｓ６０５で開始したスレッドに対して処理の中断を指示する。処理の中断を指示されたスレッドの処理については、図７で詳細を説明する。
次に、Ｓ６０９において、アプリ監視部２０５は、アプリの開始処理が所定の時間内に終わらなかったアプリの情報（起動が間に合わなかったアプリの情報）を、例えば揮発性メモリ１０３に記憶し、本フローチャートの処理を終了する。
【００４７】
また、上記Ｓ６０２において、アプリ開始部２０４が、画像形成装置の起動中でないと判定した場合（Ｓ６０２でＮｏの場合）、Ｓ６１０に処理を進める。
Ｓ６１０において、アプリ開始部２０４は、現在のスレッドから直接アプリの開始処理を呼び出し、Ｓ６１１に処理を進める。
Ｓ６１１において、アプリ開始部２０４は、アプリのステータスを「動作中」に設定し、本アプリの開始処理を終了する。
【００４８】
また、上記Ｓ６０７において、アプリの開始処理が終了していると判定した場合（Ｓ６０７でＹｅｓの場合）、アプリ監視部２０５は、アプリ開始部２０４によって開始処理を呼び出されたアプリが開始処理を所定の時間内に完了した旨をアプリ開始部２０４に通知する。この通知を受けると、アプリ開始部２０４は、アプリのステータスを「動作中」に設定し（Ｓ６１１）、本アプリの開始処理を終了する。
【００４９】
図７は、アプリの開始処理を中断する処理の流れを説明するためのフローチャートである。即ち、図６のＳ６０８に示した処理の中断を指示されたスレッドの処理について説明する。
【００５０】
Ｓ７０１において、アプリ開始部２０４は、スレッドに対して処理の中断が指示されたことを検知すると、Ｓ７０２に処理を進める。
Ｓ７０２において、アプリ開始部２０４は、上記Ｓ７０１でアプリが開始処理の中断の指示を検知するまでに登録してしまった機能を削除する。
【００５１】
次に、Ｓ７０３において、アプリ開始部２０４は、アプリのステータスを「停止中」に設定する。
次に、Ｓ７０４において、アプリ開始部２０４が、アプリ開始スレッドの処理を終了し、本フローチャートの処理を終了する。
【００５２】
図８は、警告表示処理の流れを説明するためのフローチャートである。即ち、図５のＳ５０６に示した表示処理について説明する。
Ｓ８０１において、起動チェック部２０６は、画像形成装置１００の起動中に、所定の時間内に開始処理が完了しなかったアプリがあるか（図６のＳ６０９で起動が間に合わなかったアプリの情報が記憶されているか）否かを判定する。そして、所定の時間内に開始処理が完了しなかったアプリがないと判定した場合（Ｓ８０１でＮｏの場合）、起動チェック部２０６は、警告表示は不要なため、本フローチャートの処理を終了する。
【００５３】
一方、上記Ｓ８０１において、所定の時間内に開始処理が完了しなかったアプリがあると判定した場合（Ｓ８０１でＹｅｓの場合）、起動チェック部２０６は、Ｓ８０２に処理を進める。
Ｓ８０２において、起動チェック部２０６は、所定の時間内に開始処理が完了しなかったアプリの情報を、警告メッセージの間に合わなかったアプリの情報として、例えば揮発性メモリ１０３に追加する。
【００５４】
Ｓ８０３において、起動チェック部２０６は、フルアプリリスト（例えば図３（ｂ））から未処理のアプリを１つ選択する。そして、未処理のアプリが存在し選択できたと判定した場合（Ｓ８０３でＹｅｓの場合）、起動チェック部２０６は、Ｓ８０４に処理を進める。
【００５５】
Ｓ８０４において、起動チェック部２０６は、上記Ｓ８０３で選択されたアプリが起動時に開始するアプリであるか否かを判定する。そして、起動時に開始するアプリでないと判定した場合（Ｓ８０４でＮｏの場合）、起動チェック部２０６は、Ｓ８０３に処理を進め、次のアプリに処理を移す。
【００５６】
一方、起動時に開始するアプリであると判定した場合（Ｓ８０４でＹｅｓの場合）、起動チェック部２０６は、Ｓ８０５に処理を進める。
Ｓ８０５において、起動チェック部２０６は、上記Ｓ８０３で選択されたアプリのステータスが「動作中」であるか否かを判定する。そして、上記選択されたアプリのステータスが「動作中」であると判定した場合（Ｓ８０５でＹｅｓの場合）、起動チェック部２０６は、Ｓ８０３に処理を移行し、次のアプリに処理を移す。
【００５７】
一方、上記選択されたアプリのステータスが「動作中」でないと判定した場合（Ｓ８０３でＮｏの場合）、起動チェック部２０６は、Ｓ８０６に処理を進める。
Ｓ８０６において、起動チェック部２０６は、上記選択されたアプリの情報を、警告メッセージの停止中アプリの情報として揮発性メモリ１０３に追加し、Ｓ８０３に処理を移行し、次のアプリに処理を移す。
【００５８】
そして、上記Ｓ８０３において、未処理のアプリが存在せず選択できなかったと判定した場合（Ｓ８０３でＮｏの場合）、起動チェック部２０６は、Ｓ８０７に処理を進める。
【００５９】
Ｓ８０７において、起動チェック部２０６は、警告部２０７に、警告表示を指示する。この指示を受けた警告部２０７は、ディスプレイ１０５に警告画面を表示し、起動チェック部２０６により上記Ｓ８０２及びＳ８０６で追加された警告メッセージの表示を行う。
すなわち、警告部２０７は、上記Ｓ８０７において、上記Ｓ８０２で警告メッセージに追加された、所定の時間内に開始処理が完了しなかったアプリの情報を、図４（ｂ）の４３０ｂのように、起動が間に合わなかったアプリとして表示する。また、警告部２０７は、上記Ｓ８０６で警告メッセージに追加された、停止中アプリの情報を、図４（ｂ）の４１１ｂのように停止中アプリとして表示する。これにより、画像形成装置１００の利用者に対して、一部のアプリを使用できないといった警告通知を行うことができる。
そして、起動チェック部２０６は、Ｓ８０７の処理の後、本フローチャートの処理を終了する。
【００６０】
以上示したように、実施例１によれば、画像形成装置の起動時のみ別スレッドからアプリの開始処理を呼び出すアプリ開始部２０４を備え、アプリ開始処理の完了または一定時間の経過を監視することにより、画像形成装置の起動処理が途中で止まることを防止することができる。
【実施例２】
【００６１】
上述の実施例１では、所定時間内に開始処理が完了しなかったアプリの開始処理を中断する構成について説明した。なお、アプリタイプが「システム」のアプリ（例えば初期アプリリストに記載されたアプリ）は、画像形成装置１００のファームウェアとして予め用意されたアプリであるため、アプリの開始処理時間が予め想定できる。よって、このようなアプリでは、所定時間内に開始処理が完了しなかった場合、開始処理の中断を指示しても問題ない。一方、アプリタイプが「システム」以外のアプリは、特定の条件でアプリの開始処理に時間がかかってしまう場合があり、アプリの開始処理時間を予め想定することができない。一例を挙げると、アプリの開始処理に、サーバとの通信が含まれ、該通信で時間がかかってしまう場合がある。このため、アプリタイプが「システム」以外のアプリでは、不用意に開始処理の中断を指示すると悪影響を及ぼす可能性がある。
【００６２】
実施例２では、所定時間内に開始処理が完了しなかったアプリが、「システム」のアプリタイプのように、アプリの開始処理時間が予め想定できるアプリに対してのみ開始処理の中断を指示するように構成する。これにより、「ログイン」や「一般」のアプリタイプのように、アプリの開始処理時間が予め想定できないアプリに対しては、不用意に開始処理の中断を指示して悪影響を及ぼすことがないようにすることができる。以下、詳細に説明する。
【００６３】
図９は、実施例２の画像形成装置の起動処理を説明するためのフローチャートである。なお、図６と同一のステップには同一のステップ番号を付してあり説明は省略する。
【００６４】
実施例２では、アプリ監視部２０５が、アプリの開始処理が終了していないと判定した場合（Ｓ６０７でＮｏの場合）、Ｓ９０１に処理を進める。
Ｓ９０１において、アプリ監視部２０５は、上記Ｓ６０７で開始処理が終了していないと判定されたアプリのアプリタイプを確認する。例えば、アプリ監視部２０５は、初期アプリリストに記載されたアプリのアプリタイプを「システム」と判断し、初期アプリリストに記載されていないアプリのアプリタイプを「システム」以外と判断する。
【００６５】
そして、該アプリのアプリタイプが「システム」であると判定した場合（Ｓ９０１でＹｅｓの場合）、アプリ監視部２０５は、Ｓ６０８に処理を進める。
一方、該アプリのアプリタイプが「システム」でないと判定した場合（Ｓ９０１でＮｏの場合）、アプリ監視部２０５は、そのままＳ６０９に処理を進める。
【００６６】
以上示したように、図９のＳ９０１のステップを備えることで、「システム」のアプリタイプのように、アプリの開始処理時間が予め想定できるアプリに対してのみ、開始処理の中断を指示することができる。逆に、「ログイン」や「一般」のアプリタイプのように、アプリの開始処理が予め想定できないアプリに対しては、不用意に開始処理の中断を指示して悪影響を及ぼすことがないようにできる。
【００６７】
なお、上記説明では、「システム」のアプリタイプを判別して、アプリの開始処理の中断を指示するか否かを説明したが、他のルールであってもよい。例えば、「ログイン」アプリタイプの開始処理時間が予め想定できるアプリタイプなのであれば、「システム」か「ログイン」のアプリタイプであることを判定する構成でよい。ここで説明していないアプリタイプであっても構わない。例えば、アプリの開始処理時間が予め想定できるアプリであるか判定し、アプリの開始処理時間が予め想定できるアプリについてはアプリの開始処理の中断を指示する制御を行う構成であれば、どのような構成であってもよい。
【実施例３】
【００６８】
上述の実施例１、２では、アプリ監視部２０５において、図６のＳ６０６において一定時間の経過を検知する構成を説明した。しかし、動作環境による性能の変動が大きいため、固定の時間を決めることが困難な場合がある。
そこで、実施例３では、アプリ監視部２０５において、動作する装置の環境に応じて待ち時間を切り替える仕組みを更に備えるように構成する。
【００６９】
具体的には、画像形成装置１００の機種、例えばハイエンド機種、ミドルレンジ機種、ローエンド機種それぞれに対して待ち時間を保持し、実行環境に応じて使い分ける構成とする。
もしくは、画像形成装置１００のオペレーティングシステム（ＯＳ）を基準に、待ち時間を切り替える構成であってもよい。例えば、シミュレータ等を想定したＯＳと、画像形成装置を想定したＯＳと、それぞれに対する待ち時間を保持し、実行環境のＯＳに応じて使い分ける構成であってもよい。なお、本発明は、画像形成装置にのみ適用可能なものではなく、装置の起動時にアプリを起動する各種の情報処理装置に適用可能である。
【００７０】
もしくは、装置仕様、例えば装置が備えるＣＰＵの周波数やコア数を基準に、待ち時価を切り替える構成であってもよい。例えば、３ＧＨｚの２Ｃｏｒｅ構成のＣＰＵに対する基準値を保持し、実行環境のＣＰＵが２ＧＨｚの２Ｃｏｒｅ構成であれば、基準値の１．５倍の時間待つ構成であってもよい。
【００７１】
さらに、アプリによっても図６のＳ６０６の待ち時間を変える方が良いのは、明らかである。そこで、アプリ監視部２０５が、各アプリが保持する待ち時間を参照し、図６のＳ６０６では、その時間だけ開始処理が終わるのを待つ構成をとる。これにより、各アプリそれぞれに適切な時間だけ開始処理の完了を待つことができる。なお、各アプリの待ち時間は、フルアプリリスト等に記憶されるものとする。
【００７２】
なお、上述した動作環境によって待ち時間を変える構成と、アプリによって待ち時間を変える構成は、双方を同時に実現することも容易である。
実施例１や実施例２で説明した構成に加えて、以上のような仕組みをアプリ監視部２０５が備えることにより、実行環境やアプリに応じた、より適切な待ち時間を設定することができる。これにより、アプリの開始処理が正常に動作している途中に誤って中断を指示してしまうといった事態の発生を抑えることができる。
【実施例４】
【００７３】
上述した実施例３では、アプリの開始処理の待ち時間が机上計算による値となるため、図６又は図９のＳ６０６の待ち時間について、マージンを大きく取らざるを得ない。マージンを大きく取り過ぎると、アプリが開始に失敗した場合の画像形成装置の起動時間がその分だけ長くなってしまい、その分だけ利用者を待たせることになってしまう。
そこで、実施例４では、前記アプリ開始部２０４が、アプリを開始するのにかかった時間を計測して記憶し、以後は実際にかかった時間を基準に開始処理が終わるのを待つ仕組みを備えるものとする。
【００７４】
図１０は、実施例４の画像形成装置の起動処理を説明するためのフローチャートである。なお、図６と同一のステップには同一のステップ番号を付してあり、説明は省略する。
実施例４では、アプリ開始部２０４が、画像形成装置の起動中であると判定した場合（Ｓ６０２でＹｅｓの場合）、Ｓ１００１に処理を進める。
【００７５】
Ｓ１００１において、アプリ開始部２０４は、開始処理を呼び出すアプリのアプリタイプを確認する。
そして、該アプリのアプリタイプが「システム」でないと判定した場合（Ｓ１００１でＮｏの場合）、アプリ開始部２０４は、Ｓ６１０に処理を進める。
一方、該アプリのアプリタイプが「システム」であると判定した場合（Ｓ１００１でＹｅｓの場合）、アプリ開始部２０４は、Ｓ６０４に処理を進める。
【００７６】
また、実施例４では、Ｓ６０５でスレッドが開始されると、アプリ監視部２０５は、該開始されたスレッドで呼び出されたアプリの開始処理が開始されてから完了するまでにかかった時間の計測を開始し、Ｓ１００２の処理を実行する。
【００７７】
Ｓ１００２において、アプリ監視部２０５は、Ｓ６０５で開始されたスレッドで呼び出されたアプリの開始処理にかかった時間が補助記憶装置１０４に記憶されているかを判定する。そして、該アプリの開始処理にかかった時間が記憶されていないと判定した場合（Ｓ１００２でＮｏの場合）、アプリ監視部２０５は、Ｓ６０６に処理を進める。
【００７８】
一方、該アプリの開始処理にかかった時間が記憶されていると判定した場合（Ｓ１００２でＹｅｓの場合）、アプリ監視部２０５は、Ｓ１００３に処理を進める。
Ｓ１００３において、アプリ監視部２０５は、Ｓ６０５で開始されたスレッドで呼び出されたアプリの開始処理が完了したか、又は、該記憶されたアプリの開始処理にかかった時間が経過したかを検知する。ここでは、記憶されたアプリの開始処理にかかった時間をそのまま用いる構成を説明したが、これを基準に多少のマージンを持たせる構成であってもよい。なお、アプリ監視部２０５は、上記いずれかを検知するまで待ち続ける。そして、上記いずれかを検知すると、アプリ監視部２０５は、Ｓ６０７に処理を進める。
【００７９】
また、実施例４では、Ｓ６０７において、アプリ監視部２０５が、アプリの開始処理が終了していると判定した場合（Ｓ６０７でＹｅｓの場合）、Ｓ１００４に処理を進める。
Ｓ１００４において、アプリ監視部２０５は、上記Ｓ６０７で終了したと判定したアプリの開始処理にかかった時間の計測結果を補助記憶装置１０４に記憶する。ここで記憶した時間が、上述したＳ１００２やＳ１００３のステップで参照、利用される。ここでは、開始処理にかかった時間をそのまま記憶しているが、この時点で多少のマージンを持たせる構成であってもよい。また、前回記憶された時間と今回計測された時間との平均値等のような、記憶された時間の履歴の統計値を記憶するようにしてもよい。
【００８０】
さらに、アプリ監視部２０５は、Ｓ１００４の処理の後、アプリ開始部２０４によって開始処理を呼び出されたアプリが開始処理を上記記憶されている時間内に完了した旨をアプリ開始部２０４に通知する。この通知を受けると、アプリ開始部２０４は、アプリのステータスを「動作中」に設定し（Ｓ６１１）、本アプリの開始処理を終了する。
【００８１】
以上の仕組みにより、実際にアプリの開始処理にかかった時間を計測した上で、その時間だけアプリの開始処理を待つことができ、より適切な待ち時間を設定することができる。これにより、利用者を無駄に待たせるといった事態の発生を抑えつつ、アプリの開始処理が正常に動作している途中に誤って中断処理を指示するといった事態の発生も抑えることができる。
【実施例５】
【００８２】
上述の実施例１〜４では、アプリの開始処理が終了しない場合であっても画像形成装置の起動処理を完了できる構成について説明した。しかし、アプリの開始処理が終了しないという状況そのものを変えるには、サービスマンが対応する必要があった。そのため、サービスマンが対応するまでは、装置の起動の度に警告画面が表示される状況であった。そこで、実施例５では、ある程度自動で状況を改善可能な構成について説明する。
【００８３】
図１１は、実施例５の画像形成装置の起動処理を説明するためのフローチャートである。なお、図５と同一のステップには同一のステップ番号を付してあり、説明は省略する。
実施例５では、Ｓ５０６の警告表示処理の後、起動制御部２０３が、Ｓ１１０１の処理を実行する。
【００８４】
Ｓ１１０１において、起動制御部２０３は、開始処理が所定の時間内に完了しなかった回数が一定の回数を超えたアプリがあるか否かを判定する。なお、開始処理が所定の時間内に完了しなかった回数は、アプリ毎に、補助記憶装置１０４に記憶されているものとする。
【００８５】
そして、該当するアプリがないと判定した場合（Ｓ１１０１でＮｏの場合）、起動制御部２０３は、Ｓ５０７に処理を進める。
一方、該当するアプリがあると判定した場合（Ｓ１１０１でＹｅｓの場合）、起動制御部２０３は、Ｓ１００２に処理を進める。
【００８６】
Ｓ１１０２において、起動制御部２０３は、該当するアプリのアプリタイプを判定する。そして、該当するアプリのアプリタイプが「システム」でないと判定した場合（Ｓ１１０２でＮｏの場合）、アプリ監視部２０５は、Ｓ１１０３に処理を進める。アプリタイプ「システム」以外のアプリは、画像形成装置１００のファームウェアとして予め用意されたアプリではない。このため、アプリ監視部２０５は、「システム」以外のアプリの展開前のアプリデータ（例えばオリジナルのプログラム等を含むＪＡＲファイル）が画像形成装置１００内（例えば不揮発性メモリ１０２）に存在しないため、外部から取得する必要があると判断する。
【００８７】
Ｓ１１０３において、アプリ監視部２０５は、インストール部２０８に、該当するアプリ（例えばオリジナルのプログラム等を含むＪＡＲファイル）を外部から取得するように指示する。該指示に応じて、インストール部２０８は、該当するアプリを外部から取得する。例えば、不図示の外部記憶装置（例えばＵＳＢメモリ）や、不図示のネットワーク装置を経由してベンダーのサーバ等から取得する。該取得したアプリは、インストールに備えて、例えば補助記憶装置１０４の所定の場所に記憶される。上記Ｓ１１０３で取得指示した後、アプリ監視部２０５は、Ｓ１１０４に処理を進める。
【００８８】
Ｓ１１０４において、起動制御部２０３は、該当するアプリ（例えばオリジナルのプログラム等を含むＪＡＲファイル）を次回起動時に再展開することを示す情報を、例えば補助記憶装置１０４に記憶する。同時に、起動制御部２０３は、該当するアプリの、開始処理が所定の時間内に完了しなかった回数をリセットする。ここで、次回起動時に再展開することを示す情報が記憶されたアプリ（例えば、補助記憶装置１０４の所定の場所に記憶されるオリジナルのプログラム等を含むＪＡＲファイル）は、次回画像形成装置の起動処理が実行される際に、Ｓ５０３より前のタイミングで、前記インストール部２０８によって再展開される。
【００８９】
一方、上記Ｓ１１０２において、該当するアプリのアプリタイプが「システム」であると判定した場合（Ｓ１１０２でＹｅｓの場合）、アプリ監視部２０５は、Ｓ１１０４に処理を進める。アプリ監視部２０５は、アプリタイプ「システム」のアプリは画像形成装置１００のファームウェアとして予め用意されたアプリであるため、展開前のアプリデータ（オリジナルのプログラムファイル等）が画像形成装置１００内（例えば不揮発性メモリ１０２）に存在すると判断し、そのままＳ１１０４に処理を進める。
【００９０】
なお、上記説明では、開始処理が所定の時間内に完了しなかったアプリ自身を再展開する例を説明したが、実際には別のアプリが要因で、開始処理が所定の時間内に完了しなかった可能性も高い。そのため、起動時に開始する全てのアプリを再展開するように構成してもよい。
以上示したような仕組みを画像形成装置１００に備えることで、所定の時間内に開始処理を完了しないアプリの状態を、ある程度自動で状況を改善することができる。
【００９１】
以上示したように、本発明の各実施例に示したように、画像形成装置の起動処理中であれば、アプリケーションの開始処理を別のタスク（アプリケーション毎のタスク）から呼び出して一定時間監視し、開始処理が完了しない場合には次のアプリの開始処理に移行する構成を有する。この構成により、装置の起動時に、一部のアプリが開始処理を完了できない状況にあっても、他のアプリの開始処理を呼び出し、他のアプリの機能を利用可能とする構成を有する。この構成により、画像形成装置において、何らかの理由で起動中に行われるアプリの開始処理が終了しないケースにおいても、画像形成装置全体としては起動処理を継続でき、他のアプリの開始処理を呼び出すことができる。よって、一部のアプリが停止状態であっても、他のアプリの機能を活用することができる。また、画像形成装置の利用者に対して異常を通知することも可能となる。
【００９２】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
また、上記各実施例を組み合わせた構成も全て本発明に含まれるものである。
【００９３】
（その他の実施例）
本発明は、上述の実施例の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。
本発明は上記実施例に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施例の有機的な組合せを含む）が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施例及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【００９４】
２０３    起動制御部
２０４    アプリ開始部
２０５    アプリ監視部
２０６    起動チェック部
２０７    警告部
【図１】
0006465719.tif 000002
【図２】
0006465719.tif 000003
【図３】
0006465719.tif 000004
【図４】
0006465719.tif 000005
【図５】
0006465719.tif 000006
【図６】
0006465719.tif 000007
【図７】
0006465719.tif 000008
【図８】
0006465719.tif 000009
【図９】
0006465719.tif 000010
【図１０】
0006465719.tif 000011
【図１１】
0006465719.tif 000012