(57)【要約】【課題】システムの起動時間を守りつつ、なるべく速い段階で全機能が使用できるアプリケーションを起動することができるようにする。【解決手段】シンプル版アプリケーションの起動シーケンス中にチェックポイントを設けておき、起動時からチェックポイントまでの時間が、ある定められた時間を越えた場合は、デラックス版のアプリケーションの起動を一時停止して、ＣＰＵ１０１の負荷をさげる。そして、シンプル版アプリケーションが起動したという通知を受けた後に、デラックス版アプリケーションの起動を再開することで、システムの起動時間を守りつつ、なるべく速い段階で全機能が使用できるアプリケーションを起動する起動方法を提供する。【選択図】図１
2007323181.tif 000002
【特許請求の範囲】
【請求項１】
起動時間が定められていて、高速に起動するが機能が限られるＡアプリケーションと、機能が豊富であるが起動に時間がかかるＢアプリケーションとを同時に起動する起動方法であって、
前記Ａアプリケーション内にチェックポイントが設定されている場合に起動からの時間を計測する時間計測工程と、
前記Ｂアプリケーションの起動が完了したことを検知するＢアプリケーション起動完了検知工程と、
前記Ｂアプリケーション起動完了検知工程により前記Ｂアプリケーションの起動が完了したことを検知した場合は処理を終え、前記Ｂアプリケーションの起動の完了を検知してない場合は前記時間計測工程によりある時間に達したかどうかを判定する時間判定工程と、
前記時間判定工程で前記ある時間に達していない場合は前記ある時間に達するまで前記Ｂアプリケーション起動完了検知工程による処理を繰り返し、前記ある時間に達していた場合は前記Ａアプリケーションのチェックポイントを通過したかどうかを判定するチェックポイント判定工程と、
前記チェックポイント判定工程により、前記チェックポイントを通過済みと判定された場合は、Ｂアプリケーション起動完了検知工程からの処理を続け、前記チェックポイント判定工程により、前記チェックポイントを通過していないと判定された場合は前記Ｂアプリケーションを一時停止させる起動一時停止工程と、
前記Ａアプリケーションの起動が完了したことを検知するＡアプリケーション起動完了検知工程と、
前記Ａアプリケーション起動完了検知工程により、前記Ａアプリケーションの起動が完了したことを検知した場合は、一時停止していたＢアプリケーションの起動を再開させる起動再開工程とを有し、
前記Ｂアプリケーション起動完了検知工程により、前記Ｂアプリケーションの起動が完了したことを検知しない場合は検知するまで処理を繰り返し、前記Ｂアプリケーションの起動の完了を検知した場合は、前記Ａアプリケーションの起動を停止させ、前記ＡアプリケーションとＢアプリケーションの入れ替え処理を行うことを特徴とする起動方法。
【請求項２】
システムに複数のアプリケーションが起動される場合は、一時停止するアプリケーション及び再開されるアプリケーションは前記Ｂアプリケーションだけでなく、前記Ａアプリケーションに関連しないアプリケーション全てが対象となることを特徴とする請求項１に記載の起動方法。
【請求項３】
起動時間が定められていて、アプリケーション内で機能が分割されていて、最初に起動するが機能が限られる機能群Ａと、機能が豊富であるが時間がかかる機能群Ｂとが係わる起動方法であって、
前記機能群Ａの中にチェックポイントが設定されており、前記アプリケーションの起動と同時に、前記機能群Ａ及び機能群Ｂともに別スレッドとして起動される場合に起動からの時間を計測する時間計測工程と、
前記機能群Ｂの処理が完了したことを検知する機能群Ｂ処理完了検知工程と、
前記機能群Ｂ処理完了検知工程により、前記機能群Ｂの処理が完了したことを検知した場合は、処理を終え、前記機能群Ｂの処理の完了を検知してない場合は、前記時間計測工程により前記ある時間に達したかどうかを判定する時間判定工程と、
前記時間判定工程において前記ある時間に達していない場合は、前記ある時間に達するまで前記機能群Ｂ処理完了検知工程による処理を繰り返し、前記ある時間に達していた場合は、前記機能群Ａのチェックポイントを通過したかどうかを判定するチェックポイント判定工程と、
前記チェックポイント判定工程により、前記チェックポイントを通過済みと判定された場合は処理を終え、前記チェックポイント判定工程により、チェックポイントを通過していないと判定された場合は、前記機能群Ｂの処理を一時停止させる処理一時停止工程と、
前記機能群Ａの処理が完了したことを検知する機能群Ａ処理完了検知工程と、
前記機能群Ａ処理完了検知工程により、前記機能群Ａの処理が完了したことを検知しない場合は検知するまで処理を繰り返し、前記機能群Ａの処理の完了を検知した場合は一時停止していた機能群Ｂの処理を再開させる処理再開工程とを有することを特徴とする起動方法。
【請求項４】
起動時間が定められていて、高速に起動するが機能が限られるＡアプリケーションと、機能が豊富であるが起動に時間がかかるＢアプリケーションとを同時に起動する起動装置であって、
前記Ａアプリケーション内にチェックポイントが設定されている場合に起動からの時間を計測する時間計測手段と、
前記Ｂアプリケーションの起動が完了したことを検知するＢアプリケーション起動完了検知手段と、
前記Ｂアプリケーション起動完了検知手段により、前記Ｂアプリケーションの起動が完了したことを検知した場合は、処理を終え、前記Ｂアプリケーションの起動の完了を検知してない場合は、前記時間計測手段によりある時間に達したかどうかを判定する時間判定手段と、
前記時間判定手段で前記ある時間に達していない場合は、前記ある時間に達するまでＢアプリケーション起動完了検知手段による処理を繰り返し前記ある時間に達していた場合は、前記Ａアプリケーションのチェックポイントを通過したかどうかを判定するチェックポイント判定手段と、
前記チェックポイント判定手段により、前記チェックポイントを通過済みと判定された場合は、Ｂアプリケーション起動完了検知手段からの処理を続け、前記チェックポイント判定手段により、前記チェックポイントを通過していないと判定された場合は前記Ｂアプリケーションを一時停止させる起動一時停止手段と、
前記Ａアプリケーションの起動が完了したことを検知するＡアプリケーション起動完了検知手段と、
前記Ａアプリケーション起動完了検知手段により、前記Ａアプリケーションの起動が完了したことを検知した場合は、一時停止していたＢアプリケーションの起動を再開させる起動再開手段とを有し、
前記Ｂアプリケーション起動完了検知手段により、前記Ｂアプリケーションの起動が完了したことを検知しない場合は検知するまで処理を繰り返し、前記Ｂアプリケーションの起動の完了を検知した場合は、前記Ａアプリケーションの起動を停止させ、前記Ａアプリケーション及びＢアプリケーションの入れ替え処理を行うことを特徴とする起動装置。
【請求項５】
システムに複数のアプリケーションが起動される場合は、一時停止するアプリケーション及び再開されるアプリケーションは前記Ｂアプリケーションだけでなく、前記Ａアプリケーションに関連しないアプリケーション全てが対象となることを特徴とする請求項４に記載の起動装置。
【請求項６】
起動時間が定められていて、アプリケーション内で機能が分割されていて、最初に起動するが機能が限られる機能群Ａと、機能が豊富であるが時間がかかる機能群Ｂがある起動装置であって、
前記機能群Ａの中にチェックポイントが設定されており、前記アプリケーションの起動と同時に、前記機能群Ａ及び機能群Ｂともに別スレッドとして起動される場合に起動からの時間を計測する時間計測手段と、
前記機能群Ｂの処理が完了したことを検知する機能群Ｂ処理完了検知手段と、
前記機能群Ｂ処理完了検知手段により、前記機能群Ｂの処理が完了したことを検知した場合は処理を終え、前記機能群Ｂの処理の完了を検知してない場合は、前記時間計測手段によりある時間に達したかどうかを判定する時間判定手段と、
前記時間判定手段で前記ある時間に達していない場合は、前記ある時間に達するまで機能群Ｂ処理完了検知手段を繰り返し、前記ある時間に達していた場合は、前記機能群Ａのチェックポイントを通過したかどうかを判定するチェックポイント判定手段と、
前記チェックポイント判定手段により、前記チェックポイントを通過済みと判定された場合は処理を終え、前記チェックポイント判定手段により、前記チェックポイントを通過していないと判定された場合は、前記機能群Ｂの処理を一時停止させる処理一時停止手段と、
前記機能群Ａの処理が完了したことを検知する機能群Ａ処理完了検知手段と、
前記処理完了検知手段により、前記機能群Ａの処理が完了したことを検知しない場合は検知するまで処理を繰り返し、前記機能群Ａの処理の完了を検知した場合は一時停止していた機能群Ｂの処理を再開させる処理再開手段とを有することを特徴とする起動装置。
【請求項７】
請求項１または２に記載の方法の各工程をコンピュータにて実施させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は起動方法、起動装置及びコンピュータプログラムに関し、特に、アプリケーションの起動に用いて好適な技術に関する。
【背景技術】
【０００２】
従来、システムが、ある定められた時間内に起動しなければならない場合に、特定のアプリケーションのみを起動時間内に起動して、その他のアプリケーションは遅れて起動していた。
【０００３】
同様の処理を行う２つのアプリケーションがあり、１つは、起動が速いが実行できる機能が少ないＡアプリケーションと、もう１つは、起動は遅いが機能が豊富なＢアプリケーションがある。この場合に、速いＡアプリケーションを起動しておき、遅れて起動される機能が豊富なＢアプリケーションをシステムを動作させながら入れ替えることで決められた時間内に必要最低限の処理ができる状態にまで起動できる。そしてなおかつ、しばらくたつと全機能が使えるアプリケーションを提供していた。
【０００４】
アプリケーションをシステムを動作させながら入れ替える方法としては、特許文献１では、特定時刻の計時や、チェックポイントの実行通過、およびチェックポイントまでの処理結果照合の終了などをきっかけとしてプログラム入れ替え方法が示されている。
【０００５】
【特許文献１】特開平５−１８９３９２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、起動の速いアプリケーションを起動した後に、起動の遅い機能の豊富なアプリケーションを起動すると、ある機能が使えるようになるまでの時間がかかってしまうことになるという問題があった。
【０００７】
また、同時に複数のアプリケーションを並列起動する場合では、システムの性能が悪い場合や、起動時の環境要因のためにシステムの初期化処理に思わぬ時間がかかってしまった場合には、ＣＰＵパワーが複数のアプリケーションの起動にそれぞれに使われる。このため、起動の速いアプリケーションですら、ある定められた時間内に起動しない場合があるという問題があった。
【０００８】
また、マシンの性能によっては、起動の遅いアプリケーションでも起動時間が守れる場合があり、その場合は最初から機能の豊富なアプリケーションが起動してほしいという要求がある。
【０００９】
本発明は前述の問題点に鑑み、システムの起動時間を守りつつ、なるべく速い段階で全機能が使用できるアプリケーションを起動することができるようにすることを目的としている。
【課題を解決するための手段】
【００１０】
前記目的を達成するために、起動時間が定められていて、高速に起動するが機能が限られるＡアプリケーションと、機能が豊富であるが起動に時間がかかるＢアプリケーションとを同時に起動する起動方法であって、前記Ａアプリケーション内にチェックポイントが設定されている場合に起動からの時間を計測する時間計測工程と、前記Ｂアプリケーションの起動が完了したことを検知するＢアプリケーション起動完了検知工程と、前記Ｂアプリケーション起動完了検知工程により前記Ｂアプリケーションの起動が完了したことを検知した場合は処理を終え、前記Ｂアプリケーションの起動の完了を検知してない場合は前記時間計測工程によりある時間に達したかどうかを判定する時間判定工程と、前記時間判定工程で前記ある時間に達していない場合は前記ある時間に達するまで前記Ｂアプリケーション起動完了検知工程による処理を繰り返し、前記ある時間に達していた場合は前記Ａアプリケーションのチェックポイントを通過したかどうかを判定するチェックポイント判定工程と、前記チェックポイント判定工程により、前記チェックポイントを通過済みと判定された場合は、Ｂアプリケーション起動完了検知工程からの処理を続け、前記チェックポイント判定工程により、前記チェックポイントを通過していないと判定された場合は前記Ｂアプリケーションを一時停止させる起動一時停止工程と、前記Ａアプリケーションの起動が完了したことを検知するＡアプリケーション起動完了検知工程と、前記Ａアプリケーション起動完了検知工程により、前記Ａアプリケーションの起動が完了したことを検知した場合は一時停止していたＢアプリケーションの起動を再開させる起動再開工程とを有し、前記Ｂアプリケーション起動完了検知工程により、前記Ｂアプリケーションの起動が完了したことを検知しない場合は検知するまで処理を繰り返し、前記Ｂアプリケーションの起動の完了を検知した場合は、前記Ａアプリケーションの起動を停止させ、前記ＡアプリケーションとＢアプリケーションの入れ替え処理を行うことを特徴とする起動方法等、を提供する。
【発明の効果】
【００１１】
本発明によれば、起動優先の最低限の機能を持ったシンプル版アプリケーションの起動シーケンス中にチェックポイントを設けておき、起動時からチェックポイントまでの時間がある定められた時間を越えた場合は、デラックス版のアプリケーションの起動を一時停止してＣＰＵの負荷をさげる。そして、シンプル版のアプリケーションが起動したという通知を受けた後に豊富な機能を持ったデラックス版のアプリケーションの起動を再開することで、いろいろな外因があってシステムの初期化などが遅れても、必要最低限の機能が使用できる状態で定められた時間内に起動することができる。
【００１２】
また、その後の、全ての、もしくは豊富な機能を使えるようになるまでの時間が短いシステムを提供することができる効果がある。
【００１３】
また、同じアプリケーション内においても、起動優先の最低限の機能を持ったシンプルな機能群と、豊富な機能を持ったデラックスな機能群に分けておき、シンプルな機能群内にチェックポイントを設けておくことで、起動時からチェックポイントまでの時間が、ある定められた時間を越えた場合は、デラックスな機能群の起動を一時停止して、ＣＰＵの負荷をさげる。そして、シンプルな機能群が起動したという通知を受けた後に、デラックスな機能群の起動を再開することで、いろいろな外因があってシステムの初期化などが遅れても必要最低限の機能が使用できる状態で定められた時間内に起動することができる。
また、その後の、全ての、もしくは豊富な機能を使えるようになるまでの時間が短いアプリケーションの起動を行うシステムを提供することができる効果がある。
【発明を実施するための最良の形態】
【００１４】
（第１の実施形態）
本実施形態の装置の構成について、図１のブロック図を参照して説明する。図１において、１０１はコンピュータ装置１００全体を制御するCentral Processing Unit（ＣＰＵ）である。
【００１５】
１０２は変更を必要としないプログラムやパラメータを格納するRead Only Memory（ＲＯＭ）である。１０３は外部記憶装置１０４などから供給されるプログラムやデータを一時記憶するRandom Access Memory（ＲＡＭ）である。
【００１６】
１０４はコンピュータ装置１００に固定して設置されたハードディスクやメモリカード、あるいはコンピュータ装置１００から着脱可能なフレキシブルディスク（ＦＤ）やCompact Disk（ＣＤ）等の光ディスク、磁気や光カード、ＩＣカード、メモリカードなどを含む外部記憶装置である。
【００１７】
１０５はユーザの操作を受け、データを入力するポインティングデバイスやキーボード、タッチパネルなどの入力デバイスとの入力インターフェイスである。１０６はコンピュータ装置１００の保持するデータや供給されたデータを表示するためのモニタや液晶パネルとの出力インターフェイスである。
【００１８】
１０７はネットワーク回線に接続するためのネットワークインターフェイスである。１０８は、プリンタ１０９やＦＡＸ１１０やスキャナ１１１などの外部機器との外部入出力インターフェイスである。この外部入出力インターフェイス１０８を通して外部機器にコマンドを送ったり、画像の入出力を行ったりする。１１２は１０１〜１０８の各ユニットを通信可能に接続するシステムバスである。
【００１９】
さらに、コンピュータ装置１００、スキャナ１１１、ＦＡＸ１１０及びプリンタ１０９とを合わせて一つのシステムを見ると、Multi Function Printer（ＭＦＰ）（デジタル複合機）１１３とみることができる。この場合、ＦＡＸ１１０は含まれていなくてもよい。
【００２０】
図２は、本実施形態におけるシステムの構成図を示す図である。
一番下の２０１は、ハードウェア部分となりその構成は図１に示す構成となっている。２０２は、基本ソフトであるOperating System（ＯＳ）である。２０３はドライバプログラムであり、ＯＳを通して、アプリケーションからの要求によりハードウェア部分２０１の制御を行うプログラムである。２０４はＪＡＶＡ（登録商標）実行環境であり、ＪＡＶＡ（登録商標）アプリケーション２０６を実行する仮想マシンである。
【００２１】
２０５は、ネイティブアプリケーションであり、ＯＳ２０２とドライバプログラム２０３との機能を用いてプログラムされており、通常ＪＡＶＡ（登録商標）アプリケーション２０６より高速に動作する。このネイティブアプリケーション２０５を本実施形態では、高速起動に重点をおいて実行できる機能が少ない（システムに必要最低限の機能を持った）アプリケーションとし、シンプル版アプリケーションと呼ぶ。
【００２２】
２０６はＪＡＶＡ（登録商標）アプリケーションであり、ＪＡＶＡ（登録商標）実行環境２０４の仮想マシン上で動作するプログラムである。このＪＡＶＡ（登録商標）アプリケーション２０６では、起動は遅いが機能豊富なアプリケーションが開発されることとし、本実施形態では、デラックス版アプリケーションと呼ぶ。
【００２３】
本実施形態を図３のフローチャートを用いて説明する。
シンプル版アプリケーションをＡアプリケーションとし、デラックス版アプリケーションをＢアプリケーションとして、システムの起動（ＯＳ２０２の起動も含まれる）が行われる。
【００２４】
また、デバイスの初期化（ドライバプログラム２０３によってデバイスの初期化が行われる）などが行われた時点で、ＡアプリケーションとＢアプリケーションが同時に起動されるとする。ただし、Ｂアプリケーションの起動には、ＪＡＶＡ（登録商標）実行環境２０４の起動も含まれており、実際にはＪＡＶＡ（登録商標）実行環境２０４が起動された後にＢアプリケーションが起動される。
【００２５】
先ず、ステップＳ１００でＢアプリケーションの起動が完了したかどうかを判定する。この判定の結果、すでに、Ｂアプリケーションの起動が完了していれば、ステップＳ１０７に移り、Ａアプリケーションを停止して（Ａアプリケーションが起動中であっても）、処理を終える。
【００２６】
一方、ステップＳ１００の判定の結果、Ｂアプリケーションの起動がまだ完了していなければ、ステップＳ１０１に移る。ステップＳ１０１では、起動してからの時間がＴ１に達したかどうかを調べる。この結果、Ｔ１にまだ達していなければステップＳ１００に戻る。Ｔ１に達していれば、処理ステップＳ１０２に移る。
【００２７】
ステップＳ１０２では、Ａアプリケーションのチェックポイント通過フラグがオンかどうかを調べる。この結果、チェックポイント通過フラグがオンであれば、ステップＳ１０６に移り、オフであればステップＳ１０３に移る。
【００２８】
ステップＳ１０３では、ＣＰＵパワーをＡアプリケーションの起動に集中させるために、Ｂアプリケーションの起動を一時停止させる。次にステップＳ１０４に移り、Ａアプリケーションの起動が完了した、もしくは完了通知を受けたかどうかを判定する。この判定の結果、Ａアプリケーションの起動が完了していた、もしくは完了通知を受けた場合は、ステップＳ１０５に移る。一方、ステップＳ１０４の判定の結果、完了していない、もしくは完了通知を受けていない場合は、完了するまで、ステップＳ１０４を繰り返す。
【００２９】
ステップＳ１０５では、Ａアプリケーションの起動が完了しているため、一時停止していたＢアプリケーションの起動を再開させる。次に、ステップＳ１０６に移り、Ｂアプリケーションが起動を完了した、もしくは完了通知を受けたかどうかを判定する。この判定の結果、Ｂアプリケーションの起動が完了していた場合は、ステップＳ１０７に移る。一方、ステップＳ１０６の判定の結果、完了していない場合は、完了するまで、ステップＳ１０６を繰り返す。ステップＳ１０７では、Ａアプリケーションを停止させることで、Ｂアプリケーションと入れ替える処理を行い、処理を終える。
【００３０】
Ａアプリケーションにおけるチェックポイント通過に関する処理を図４のフローチャートを用いて説明する。
先ず、初期状態の設定ということで、ステップＳ２００において、チェックポイント通過フラグをオフに設定する。次にステップＳ２０１に移り、チェックポイントに達したかどうかを判定する。この判定の結果、チェックポイントに達していれば次のステップＳ２０２に移り、達していなければ、ステップＳ２０１の処理を繰り返す。
【００３１】
ステップＳ２０２では、チェックポイントを通過したため、チェックポイント通過フラグをオンにする。次にステップＳ２０３に移り起動が完了したかどうかを判定する。この判定の結果、起動が完了していなければ、完了するまで、ステップＳ２０３を繰り返す。一方、ステップＳ２０３の判定の結果、起動が完了した場合はステップＳ２０４に移り、起動完了をシステムに通知して、処理を終える。
【００３２】
なお、チェックポイント通過フラグは、図１のＲＡＭ１０３または外部記憶装置１０４に格納される。図３のフローチャートのステップＳ１０２では、このチェックポイント通過フラグを読み出してオンかオフかを判定することで処理を行う。
【００３３】
（第２の実施形態）
本実施形態では、第１の実施形態と同様に、シンプル版アプリケーションをＡアプリケーションとし、デラックス版アプリケーションをＢアプリケーションとする。そして、システムの起動が行われ、デバイスの初期化などが行われた時点で、ＡアプリケーションとＢアプリケーションが同時に起動されるとする。
【００３４】
ただし、Ｂアプリケーションの起動には、ＪＡＶＡ（登録商標）実行環境２０４の起動も含まれており、実際にはＪＡＶＡ（登録商標）実行環境２０４が起動された後にＢアプリケーションが起動される。また、機能構成は第１の実施形態と同様であるため、説明は省略する。
【００３５】
図５のように、システムが起動されると、システム初期化が行われ、システム初期化終了時点で、ＡアプリケーションとＢアプリケーションを同時に起動する。
チェックポイント通過をチェックする時間をＴ１として、システムが起動していなければならない時間をＴ２とする。
【００３６】
Ａアプリケーションは、Ｔ１よりも前にチェックポイントを通過する場合を考える。チェックポイントを通過した場合は、Ａアプリケーションは通過済みフラグをメモリ内またはハードディスクなどに記録しておく（図４のステップＳ２００およびステップＳ２０１でYesの場合のステップＳ２０２の処理）。
【００３７】
システムはＴ１に達した時点（図３のステップＳ１００でNoの場合でステップＳ１０１でYesの場合）で、Ａアプリケーションに対してチェックポイントを通過したかどうかを問い合わせる（図３のステップＳ１０２の処理）。
【００３８】
Ａアプリケーションは、記録しておいた通過済みフラグの値（この例では、通過したという情報）をシステムに返す（図３のステップＳ１０２のYesの場合）。
Ｔ１以前にチェックポイントをＡアプリケーションは通過しているため、Ｂアプリケーションを停止することなく、Ａアプリケーションもそのまま起動を続ける。
【００３９】
続いてシステムは、Ｂアプリケーションの起動完了の通知を受けた場合（図３のステップＳ１０６のYesの場合）、Ａアプリケーションを停止することでＡアプリケーションとＢのアプリケーションを入れ替える（図３のステップＳ１０７の処理）。このアプリケーションの入れ替え処理は、Ａアプリケーションがユーザによって操作されている、もしくは、処理中の場合は、それらが終わるまで入れ替えを待つのがよい。
【００４０】
また、入れ替え時に状態を引き継ぐのが望ましい（例えばコピーアプリケーションならば、指定されたコピー部数の値を引き継ぐなど）。さらに、ＡアプリケーションとＢアプリケーションの作り方として、入れ替えたときに大きく見た目が変わらないように（見た目のスムーズな入れ替えができるように）、なるべく見た目を同じにそろえるとよい。
【００４１】
例えば、シンプル版のＡアプリケーションにおいては使用できない機能へのボタンをディスエイブル（使用不可）にしておく。そして、Ｂアプリケーションでは同じ位置のボタンがイネーブル（使用可能）になっていれば、入れ替わった時点で、あたかも同じアプリケーションのそのボタンだけがイネーブルに変化しただけのように見せるのが望ましい。なお、図１１（ａ）はＡアプリケーションの画面例で、「両面Copy」ボタンと「ソータ使用」ボタンが使用不可になっている。図１１（ｂ）はＢアプリケーションの画面例で、「両面Copy」ボタンと「ソータ使用」ボタンが使用可能になっている。ユーザからは、図１１（ａ）から図１１（ｂ）になるだけでアプリケーションが入れ替わったという印象があまりない。
【００４２】
次に、図６の場合を考えてみる。図６のように、システムが起動されると、システム初期化が行われ、システム初期化終了時点で、ＡアプリケーションとＢアプリケーションを同時に起動する。しかし、ハードウェアの初期化やネットワークのサーバからの返答が遅かったなどの何らかの原因でシステムの初期化処理に時間がかかった場合を想定する。チェックポイント通過をチェックする時間をＴ１として、システムが起動していなければならない時間をＴ２とする。
【００４３】
Ａアプリケーションは、Ｔ１よりも後にチェックポイントを通過する場合を考える。システムはＴ１に達した時点で（図３のステップＳ１００でNoの場合でステップＳ１０１でYesの場合）、Ａアプリケーションに対してチェックポイントを通過したかどうかを問い合わせる（図３のステップＳ１０２の処理）。
【００４４】
Ａアプリケーションは、チェックポイントをまだ通過していなく、通過済みフラグの値には通過したという情報が記録されていないため、チェックポイントを未通過という情報をシステムに返す（図３のステップＳ１０２でNoの場合）。システムはこの時点でＢアプリケーションを一時停止する（図３のステップＳ１０３の処理）。
【００４５】
これによりＣＰＵ負荷が下がりＡアプリケーションにＣＰＵパワーが注がれすばやく起動することができるようになる。システムはＡアプリケーションの起動完了通知を受け取った時点で（図３のステップＳ１０４のYesの場合）、Ｂアプリケーションの起動を再開させる（図３のステップＳ１０５の処理）。
【００４６】
続いて、システムは、Ｂアプリケーションの起動完了の通知を受けた場合（図３のステップＳ１０６のYesの場合）、Ａアプリケーションを停止することでＡアプリケーションとＢのアプリケーションを入れ替える（図３のステップＳ１０７の処理）。
【００４７】
次に、図７の場合を考えてみる。図７のように、システムが起動されると、システム初期化が行われ、システム初期化終了時点で、ＡアプリケーションとＢアプリケーションを同時に起動する。チェックポイント通過をチェックする時間をＴ１として、システムが起動していなければならない時間をＴ２とする。Ｂアプリケーションの起動完了が、Ｔ１よりも前であった場合は、システムは、Ａアプリケーションを停止させる（図３のステップＳ１００でYesの場合で、ステップＳ１０７の処理）。
【００４８】
次に、図８の場合を考えてみる。図８のように、システムが起動されると、システム初期化が行われ、システム初期化終了時点で、ＡアプリケーションとＢアプリケーションを同時に起動する。チェックポイント通過をチェックする時間をＴ１として、システムが起動していなければならない時間をＴ２とする。
【００４９】
Ａアプリケーションは、Ｔ１よりも前にチェックポイントを通過する場合を考える。チェックポイントを通過した場合は、Ａアプリケーションは通過済みフラグをメモリ内またはハードディスクなどに記録しておく（図４のステップＳ２００およびステップＳ２０１でYesの場合のステップＳ２０２の処理）。
【００５０】
システムはＴ１に達した時点（図３のステップＳ１００でNoの場合でステップＳ１０１でYesの場合）で、Ａアプリケーションに対してチェックポイントを通過したかどうかを問い合わせる（図３のステップＳ１０２の処理）。
【００５１】
Ａアプリケーションは、記録しておいた通過済みフラグの値（この例では、通過したという情報）をシステムに返す（図３のステップＳ１０２のYesの場合）。Ｔ１以前にチェックポイントをＡアプリケーションは通過しているため、Ｂアプリケーションを停止することなく、Ａアプリケーションもそのまま起動を続ける。
【００５２】
続いて、Ｂアプリケーションの起動がＴ２時間に達する前（図３のステップＳ１０６のYesの場合）であった場合、システムは、Ａアプリケーションを停止する（図３のステップＳ１０７の処理）。
【００５３】
次に、図９の場合を考えてみる。図９のように、システムが起動されると、システム初期化が行われ、システム初期化終了時点で、ＡアプリケーションとＢアプリケーションを同時に起動する。しかし、ハードウェアの初期化やネットワークのサーバからの返答が遅かったなどの何らかの原因でシステムの初期化処理に時間がかかった場合を想定する。
チェックポイント通過をチェックする時間をＴ１として、システムが起動していなければならない時間をＴ２とする。
【００５４】
Ａアプリケーションは、Ｔ１よりも後にチェックポイントを通過する場合を考える。システムはＴ１に達した時点で（図３のステップＳ１００でNoの場合でステップＳ１０１でYesの場合）、Ａアプリケーションに対してチェックポイントを通過したかどうかを問い合わせる（図３のステップＳ１０２の処理）。
【００５５】
Ａアプリケーションは、チェックポイントをまだ通過していなく、通過済みフラグの値には通過したという情報が記録されていないため、チェックポイントを未通過という情報をシステムに返す（図３のステップＳ１０２でNoの場合）。
【００５６】
システムはこの時点でＢアプリケーションを一時停止する（図３のステップＳ１０３の処理）。これによりＣＰＵ負荷が下がりＡアプリケーションにＣＰＵパワーが注がれ、すばやく起動することができるようになる。
【００５７】
システムはＡアプリケーションの起動完了通知を受け取った時点で（図３のステップＳ１０４のYesの場合）、Ｂアプリケーションの起動を再開させる（図３のステップＳ１０５の処理）。続いて、Ｂアプリケーションの起動完了通知を受けた場合（図３のステップＳ１０６のYesの場合）、システムは、Ａアプリケーションを停止することでＢアプリケーションと入れ替える（図３のステップＳ１０７の処理）。
【００５８】
図１のコンピュータ装置１００、スキャナ１１１及びプリンタ１０９を合わせたシステムとしてMulti Function Printer（ＭＦＰ）（デジタル複合機）１１３上のアプリケーションを考える。
【００５９】
ＭＦＰ１１３上で動作するコピーのためのアプリケーションをＣ言語で書かれたものと、ＪＡＶＡ（登録商標）で書かれたものとで考えると、起動はＣ言語版（シンプル版）のコピーアプリケーションの方が速い。しかし、機能的に見ると、エラー表示などで、紙がジャム（紙詰まり）を起こした場合の処理はＪＡＶＡ（登録商標）版（デラックス版）の方がイメージ（例えばイメージ例は図１０）やアニメーションなどで表示され、豊富である。シンプル版でもエラーメッセージは出るだろうが、例えば単なる文字で、「紙が詰まりました」と出るだけであり、どこで詰まっているかがわかりにくい。
【００６０】
また、シンプル版コピーアプリケーションの画面を図１１（ａ）とすると、シンプル版コピーアプリケーションはコピー部数の指定ができコピーのスタートとストップができるのみである。「両面Copy」ボタンと、「ソータ使用」ボタンは用意されているが、グレイアウトされており使用不可状態を示している。ところが、図１１（ｂ）に示すデラックス版コピーアプリケーションの画面をでは、「両面Copy」ボタンと、「ソータ使用」ボタンが使用できるようになっている。それぞれのボタンを押すと、もうすこし詳細な設定画面が出て豊富な機能を使用できるようになっている。
【００６１】
ここで、システムが利用できるまでの起動時間をなるべくはやめたい要求のために、シンプル版のコピーアプリケーションを起動しておく。そして、後で、デラックス版コピーアプリケーションが起動された場合に、コピーアプリケーションをデラックス版に置き換えることを考える。
【００６２】
ここで、順番にシンプル版アプリケーションが起動した後に、デラックス版を起動すると、デラックス版の起動がとても後になってしまい、ユーザとしてはできればデラックス版を早いうちに利用できたほうがよいため、並列に起動するのがよいと思われる。
【００６３】
しかし、このときに、システムの性能や、動作環境（例えばネットワークの負荷などの外因によっていつもと同様には起動できないなど）によっては、起動時に、シンプル版とデラックス版のコピーアプリケーションを同時に起動するとＣＰＵ１０１の負荷がかかり、シンプル版ですら起動が遅くなってしまう場合がある。
【００６４】
そこで、シンプル版アプリケーションの起動シーケンス中にチェックポイントを設けておき、起動時からチェックポイントまでの時間が、ある定められた時間を越えた場合は、デラックス版のアプリケーションの起動を一時停止して、ＣＰＵ１０１の負荷をさげる。そして、シンプル版のアプリケーションが起動したという通知を受けた後に、豊富な機能を持ったデラックス版のアプリケーションの起動を再開する。
【００６５】
また、システムの性能や、動作環境によっては、デラックス版アプリケーションが決められた起動時間内に起動することもあるため、その場合は、シンプル版の起動は停止させ、はじめからデラックス版が使用できるようにする。
【００６６】
ここで、Ａアプリケーション内に設定するチェックポイントの設定方法の一例を示す。まず、Ａアプリケーション内の起動シーケンス内のいくつかの場所に起動からの時間を表示するプログラムを挿入する。そして、Ａアプリケーションのみでシステムを起動する。起動完了までの時間を計測する（ＥＴ１とする）。そして、前記時間表示プログラムの挿入により、いくつかの時間を表示している部分の中から、起動完了までの時間のおよそ半分の地点の時間を表示している部分を仮にチェックポイントとして設定する（この時の仮チェックポイントの時間をＣＰＴ１とする）。そして、仮チェックポイントの部分のみ時間を表示するように他の時間表示プログラムの挿入した部分をはずす。
【００６７】
次に、ＡアプリケーションとＢアプリケーションをシステム起動と同時に起動する。Ａアプリケーションの起動完了時間を計測し（ＥＴ２とする）、仮チェックポイントの起動からの時間も計測する（ＣＰＴ２とする）。システムが起動しなければならない時間をＴ２とすると、チェックポイント通過をシステムがチェックする時間Ｔ１は、以下の式で求められる。αは安全を見た数秒のマージンの時間である。
Ｔ１＝Ｔ２−（ＥＴ１＋α）
【００６８】
もしこのＴ１が０以下になってしまう場合は、そもそもＡアプリケーション単独でも起動時間Ｔ２を守れないということなので、ＥＴ１がＴ２−α以下になるようにアプリケーションの高速化を行う必要がある。
【００６９】
ここで、ＡアプリケーションとＢアプリケーションを同時に起動した場合のＡアプリケーションの仮チェックポイント通過時間ＣＰＴ２がＴ１以上の値となっている（Ｔ１≦ＣＰＴ２）場合は、Ａアプリケーションの仮チェックポイントの位置を前の方（処理の最初の方で、ＣＰＴ１が短くなる場所）に持っていく。そして、ＣＰＴ２＜Ｔ１となるまで調整を行う。
【００７０】
このＣＰＴ２＜Ｔ１となった地点を仮ではなく正式なチェックポイントとして設定する。このチェックポイントの場所であれば、システムが正常に起動した場合、必ず図５か図８の状態となり、システムの初期化などに時間がかかった場合は図６か図９となるほどよいチェックポイントが設定されたことになる。なお、本実施形態は一例を示したもので、本発明では、このチェックポイント設定方式に限定されるものではない。
【００７１】
（第３の実施形態）
第１の実施形態において、もし、Ｂアプリケーションの他にも、Ａアプリケーションに関連しないアプリケーションが起動されていた場合は、図３のステップＳ１０３において、Ｂアプリケーションとともにそれらのアプリケーションの一時停止を行う。そして、同様に、図３のステップＳ１０５において、ＢアプリケーションとともにＡアプリケーションに関連しないアプリケーションの起動も再開する。
【００７２】
（第４の実施形態）
第１〜第３の実施形態では、アプリケーション間で起動調整を行っていたが、本実施形態ではアプリケーション内での処理の起動方法について説明する。以下、ＪＡＶＡ（登録商標）の記述方法に従ってプログラム例を示す。メソッドという言葉は、Ｃ言語などにおける関数のようなものである。//はコメント行を表す。なお、２段階起動を行うことができるように、start１、start２という２つのメソッドに分ける。
public void start１（）{
// 起動時間優先の処理を記述
}
public void start２（）{
// 機能を豊富にする処理を記述
}
【００７３】
上記のように、start１には、起動時間優先の機能処理群を記述しておき、start２には、機能を豊富にするような機能処理群を記述しておく。そして、機動時間優先の機能処理群を記述するstart１の方には、機能処理群の間にチェックポイントを設定しておく。チェックポイントFlgをブーリアンのtrueかfalseを持つ変数とし、setチェックポイントは与えられた引数のブーリアンをチェックポイントFlgに設定するメソッドとしgetチェックポイントはチェックポイントFlgの値を返すメソッドとする。
boolean チェックポイントFlg = false;
public void setチェックポイント（boolean Ｂ）{
チェックポイントFlg = Ｂ;
}
public boolean getチェックポイント（）{
return チェックポイントFlg;
}
【００７４】
すると、start１は以下のようにsetチェックポイント（true）によってチェックポイントが設定される。
public void start１（）{
//……… 前半処理記述 ………
setチェックポイント（true）;
//……… 後半処理記述 ………
}
【００７５】
本実施形態をフローチャート図１２を用いて説明する。シンプルな機能を実現する機能処理群をstart１に記述して、豊富な機能を実現する機能処理群をstart２として、アプリケーションの起動とともに、start１とstart２が同時に呼ばれるとする。
【００７６】
先ず、ステップＳ３００でstart２の処理が完了したかどうかを判定する。この判定の結果、すでに、start２の処理が完了していれば、処理を終える。一方、ステップＳ３００の判定の結果、start２の起動がまだ完了していなければ、ステップＳ３０１に移る。ステップＳ３０１では、起動してからの時間がＴ１に達したかどうかを調べ、Ｔ１にまだ達していなければステップＳ３００に戻る。Ｔ１に達していれば、ステップＳ３０２に移る。
【００７７】
ステップＳ３０２では、start１のチェックポイント通過フラグがオンかどうかを調べ（getチェックポイント（）の返り値がtrueかどうか）、チェックポイント通過フラグがオンであれば、処理を終える。オフであればステップＳ３０３に移る。ステップＳ３０３では、ＣＰＵパワーをstart１の処理に集中させるために、start２の処理を一時停止させる。
【００７８】
次にステップＳ３０４に移り、start１処理が完了した、もしくは完了通知を受けたかどうかを判定する。この判定の結果、start１処理が完了していた、もしくは完了通知を受けた場合は、ステップＳ３０５に移る。一方、ステップＳ３０４の判定の結果、完了していない、もしくは完了通知を受けていない場合は、完了するまで、ステップＳ３０４を繰り返す。ステップＳ３０５では、start２の処理が完了しているため、一時停止していたstart２の処理を再開させ、処理を終える。
【００７９】
例えば、図１１（ａ）に示すようなコピーアプリケーションを考える。start１の処理群には、コピー部数をテンキーボタンにより設定でき、Copyスタートボタンでコピーを開始し、Copyストップボタンでコピーを途中でキャンセルすることができるコピーするための最低限の処理が入る。なお、「両面Copy」や「ソータ使用」ボタンはグレイアウトしてあり、使用できない状態を表している。
【００８０】
図１１（ｂ）の黒く使用できる状態のボタンに示すように、両面Copyやソータ使用時のソータの設定などのデバイスが持つ機能をフルに使えるような機能はstart２の処理群に入っているとする。なお、このボタンが黒く使用できる状態になるのは、start２の処理の起動が完了した時点である。
【００８１】
システムの機種によっては両面Copyができなかったり、ソータがついていなかったりするため、デバイスにその機能があるかを問い合わせる処理が必要になる。その問い合わせに時間がかかる場合にはstart２の起動を待っていると、システムが起動しなければならない時間を守れない場合がある。このため、本実施形態のチェックポイントを利用した方式をとると、システムの起動時間は守られ、なおかつなるべく短い時間でしばらくするとデバイスに適合した機能が使用できるようなアプリケーションを起動することができるシステムが構築できる。
【００８２】
本実施形態では、start１に起動時間優先の必要最低限の機能を提供する処理を記述しておき、start２では、機能を豊富にするような処理を記述するという使い方をする。これにより、システムの起動時間は守られ、なおかつなるべく短い時間でしばらくするとフル機能が使用できるようなアプリケーションを起動することができるシステムが構築できる。
【００８３】
（本発明に係る他の実施形態）
第１〜第３の実施形態では、機能が豊富なデラックス版アプリケーションを、また、第４の実施形態のアプリケーションを、ＪＡＶＡ（登録商標）アプリケーション２０６としていたが、特にＪＡＶＡ（登録商標）アプリケーション２０６でなくてもよい。シンプル版ネイティブアプリケーションを高速起動優先で機能を絞って、デラックス版アプリケーションは機能優先で例えばデバイスの能力を問い合わせて最適な機能を提供するために、起動が遅くなってしまうといったネイティブアプリケーション２０５でもよい。このため、ＪＡＶＡ（登録商標）アプリケーション２０６に限定されるものではない。
【００８４】
前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ（またはＣＰＵまたはＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、本発明の目的は達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することとなり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００８５】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤなどを用いることができる。
【００８６】
図１のコンピュータ装置１００が読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現される。また、それだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００８７】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【００８８】
【図１】本発明の第１の実施形態におけるシステムの構成を示すブロック図である。
【図２】本発明の第１の実施形態におけるソフトウェア階層を示す図である。
【図３】本発明の第１の実施形態におけるアプリケーション処理の一例を示すフローチャートである。
【図４】本発明の第１の実施形態におけるチェックポイント設定手順の一例を示すフローチャートである。
【図５】本発明の第２の実施形態において、システム起動からアプリケーション起動完了までの処理の概要の一例を示す図である。
【図６】本発明の第２の実施形態において、システム起動からアプリケーション起動完了までの処理の概要の他の一例を示す図である。
【図７】本発明の第２の実施形態において、システム起動からアプリケーション起動完了までの処理の概要のその他の一例を示す図である。
【図８】本発明の第２の実施形態において、システム起動からアプリケーション起動完了までの処理の概要のその他の一例を示す図である。
【図９】本発明の第２の実施形態において、システム起動からアプリケーション起動完了までの処理の概要のその他の一例を示す図である。
【図１０】本発明の第２の実施形態において、ジャム（紙詰まり）のダイアログの一例を示す図である。
【図１１】本発明の第２の実施形態におけるアプリケーション及び機能群の起動画面の一例を示す図である。
【図１２】本発明の第４の実施形態におけるstart処理の一例を示すフローチャートである。
【符号の説明】
【００８９】
１００  コンピュータ装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  外部記憶装置
１０５  入力インターフェイス
１０６  出力インターフェイス
１０７  ネットワークインターフェイス
１０８  外部入出力インターフェイス
１０９  プリンタ
１１０  ＦＡＸ
１１１  スキャナ
１１２  システムバス
１１３  ＭＦＰ
【図１】
2007323181.tif 000003
【図２】
2007323181.tif 000004
【図３】
2007323181.tif 000005
【図４】
2007323181.tif 000006
【図５】
2007323181.tif 000007
【図６】
2007323181.tif 000008
【図７】
2007323181.tif 000009
【図８】
2007323181.tif 000010
【図９】
2007323181.tif 000011
【図１０】
2007323181.tif 000012
【図１１】
2007323181.tif 000013
【図１２】
2007323181.tif 000014