(57)【要約】【課題】  アプリケーションを、状態定義の異なるシステムで動作させる。【解決手段】  アプリケーション５１は、アプリケーション状態管理モジュール５２の定義する内部状態遷移を行うための機能をアプリケーション状態管理モジュール５２に対して実行時に登録する。アプリケーション状態管理モジュール５２は、アプリケーションの内部状態を変更することができ、セットによらない可搬性を確保するために、アプリケーションの状態を遷移させるか否かの判断機構を保有しない。システム状態管理モジュール５３は、アプリケーションの状態を遷移させるか否かの判断機構を有するモジュールである。そして、マイクロコンピュータ間通信機能や、アプリ状態遷移要求の変換機構を実装した接続モジュール５４が、アプリケーション管理モジュール５２とシステム状態管理モジュール５３の間の仲介者として実装される。本発明は、情報処理装置に適用できる。【選択図】図２
2007052691.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションを実行することが可能な情報処理装置において、
前記アプリケーションが動作するシステムに依存した状態遷移を管理するシステム状態遷移管理手段と、
前記アプリケーションの状態遷移を原始的な要素で定義して管理するアプリケーション状態遷移管理手段と、
前記システム状態遷移管理手段と前記アプリケーション状態遷移管理手段とのそれぞれが認識可能な命令の関係を示す情報を保有し、これを基に、前記システム状態遷移管理手段と前記アプリケーション状態遷移管理手段との前記命令の授受を実行する命令授受手段と
を備える情報処理装置。
【請求項２】
前記アプリケーション状態遷移管理手段は、複数のアプリケーション状態遷移命令を保持し、保持された命令をＦＩＦＯで実行するための命令保持手段を備える
請求項１に記載の情報処理装置。
【請求項３】
前記命令保持手段に保持される前記アプリケーション状態遷移命令には、この命令は完了待ちをする必要があるのか否かを示す情報が含まれている
請求項２に記載の情報処理装置。
【請求項４】
前記アプリケーション状態遷移管理手段は、複数のアプリケーションの状態遷移を管理することができ、
前記命令保持手段に保持される前記アプリケーション状態遷移命令には、命令の要求元、この命令によって状態遷移されるアプリケーション、および、この命令により遷移させられる状態を示す情報が含まれている
請求項２に記載の情報処理装置。
【請求項５】
前記命令授受手段は、前記システム状態遷移管理手段と前記アプリケーション状態遷移管理手段とのそれぞれが認識可能な命令の関係を示す情報として、前記システム状態遷移管理手段と前記アプリケーション状態遷移管理手段とのそれぞれが認識可能な命令の対応表を保有する
請求項１に記載の情報処理装置。
【請求項６】
アプリケーションを実行することが可能な情報処理装置の情報処理方法において、
前記アプリケーションの状態遷移を原始的な要素で定義して管理する第１のモジュールが、状態遷移の指令を取得して第２のモジュールに供給し、
前記第２のモジュールが、取得された前記状態遷移の指令を、前記アプリケーションが動作するシステムに依存した状態遷移を管理する第３のモジュールが認識可能な命令に変換し、
変換された前記命令を受けた前記第３のモジュールが、前記状態遷移の指令を基に前記システムの状態を遷移するか否かを判断し、
前記第２のモジュールが、前記第３のモジュールにおける判断結果を、前記第１のモジュールが認識可能な通知に変換して前記第１のモジュールに通知する
ステップを含む情報処理方法。
【請求項７】
コンピュータが実行可能なプログラムであって、
前記プログラムは、第１のモジュール、第２のモジュール、および、第３のモジュールを含み、
前記アプリケーションの状態遷移を原始的な要素で定義して管理する前記第１のモジュールが、状態遷移の指令を取得して前記第２のモジュールに供給し、
前記第２のモジュールが、取得された前記状態遷移の指令を、前記アプリケーションが動作するシステムに依存した状態遷移を管理する前記第３のモジュールが認識可能な命令に変換し、
変換された前記命令を受けた前記第３のモジュールが、前記状態遷移の指令を基に前記システムの状態を遷移するか否かを判断し、
前記第２のモジュールが、前記第３のモジュールにおける判断結果を、前記第１のモジュールが認識可能な通知に変換して前記第１のモジュールに通知する
ステップをコンピュータに実行させるプログラム。
【請求項８】
請求項７に記載のプログラムが記録されている記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および情報処理方法、記録媒体、並びに、プログラムに関し、特に、アプリケーションプログラムを状態定義の異なる複数のシステム上で動作させる場合に用いて好適な情報処理装置および情報処理方法、記録媒体、並びに、プログラムに関する。
【背景技術】
【０００２】
例えば、異なるOS（オペレーティングシステム）間で、異なるタスクのプライオリティの差異を吸収することで、タスクのプライオリティに関して、アプリケーションに手を加えずに移植することができる技術が存在する（例えば、特許文献１）。
【０００３】
【特許文献１】特開２００２−２７８７７７号公報
【０００４】
また、GUI（グラフィックユーザインタフェース）の抽象定義とアプリケーションを組とし、移植先におけるGUI定義の利用モジュールを設けることでGUIに関して可搬性を実現する技術が存在する（例えば、特許文献２）
【０００５】
【特許文献２】特開２００１−２５４２２７号公報
【０００６】
また、ソフトウェアの移植の際に、ソフトウェアのコードを変換することにより移植を可能にする技術や、部分的なコード変更だけで移植を可能にする技術が存在する（例えば、特許文献３、特許文献４）。
【０００７】
【特許文献３】特開２００４−２８０７９４号公報
【特許文献４】特開２０００−１３２３８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
アプリケーションプログラムをさまざまなシステムにおいて利用する場合、すなわち、アプリケーションプログラムの可搬性を高める場合、アプリケーションプログラムの状態定義をどのように定めるかが重要である。
【０００９】
すなわち、アプリケーションプログラムの状態定義の仕方は、アプリケーションプログラムが動作するシステムによってさまざまに異なる。あるアプリケーションプログラムをアプリケーションプログラムの状態定義の異なる複数のシステム上で動作させるためには、アプリケーションプログラムにおける状態遷移用のインタフェース、および、インタフェース呼び出し時の動作を、それぞれのシステムに合わせて変更する必要がある。
【００１０】
しかしながら、アプリケーションは内部状態を有するものであり、上述した特許文献１に記載されるように、タスクプライオリティに関する可搬性を向上させるだけでは、アプリケーションプログラムの可搬性を高めたとは言えない。また、この技術では、異なるアプリケーション状態管理機構上に、そのままアプリケーションプログラムを移植することはできない。
【００１１】
また、アプリケーションプログラムの動作においては、GUIを表示するタイミングやGUIを生成する情報を取得可能なタイミングなど、複数の内部状態が存在するため、内部状態の管理機構が異なるシステム上でアプリケーションを動作させる際には、上述した特許文献２に記載の技術のように、GUI定義のみを移植するだけでは、GUIの表示に関する処理を異なるシステム上で起動されるアプリケーションプログラムに完全に移植することはできない。
【００１２】
また、そもそも、コードを変換した結果生成されるソフトウェアや、部分的にコードが変更されたソフトウェアは、必然的に移植元のソフトウェアとコードが異なるものになるので、引用文献３に記載の技術では、生成したソフトウェアに対する再テスト等の検証が必要となり、元のソフトウェア全体をそのまま移植できたとは言えない。
【００１３】
本発明はこのような状況に鑑みてなされたものであり、アプリケーションプログラムを状態定義の異なる複数のシステム上で動作させることができるようにするものである。
【課題を解決するための手段】
【００１４】
本発明の一側面の情報処理装置は、アプリケーションを実行することが可能な情報処理装置であって、前記アプリケーションが動作するシステムに依存した状態遷移を管理するシステム状態遷移管理手段と、前記アプリケーションの状態遷移を原始的な要素で定義して管理するアプリケーション状態遷移管理手段と、前記システム状態遷移管理手段と前記アプリケーション状態遷移管理手段とのそれぞれが認識可能な命令の関係を示す情報を保有し、これを基に、前記システム状態遷移管理手段と前記アプリケーション状態遷移管理手段との前記命令の授受を実行する命令授受手段とを備える。
【００１５】
前記アプリケーション状態遷移管理手段には、複数のアプリケーション状態遷移命令を保持し、保持された命令をＦＩＦＯで実行するための命令保持手段を備えさせるようにすることができる。
【００１６】
前記命令保持手段に保持される前記アプリケーション状態遷移命令には、この命令は完了待ちをする必要があるのか否かを示す情報が含まれているものとすることができる。
【００１７】
前記アプリケーション状態遷移管理手段には、複数のアプリケーションの状態遷移を管理させるようにすることができ、前記命令保持手段に保持される前記アプリケーション状態遷移命令には、命令の要求元、この命令によって状態遷移されるアプリケーション、および、この命令により遷移させられる状態を示す情報が含まれているものとすることができる。
【００１８】
前記命令授受手段には、前記システム状態遷移管理手段と前記アプリケーション状態遷移管理手段とのそれぞれが認識可能な命令の関係を示す情報として、前記システム状態遷移管理手段と前記アプリケーション状態遷移管理手段とのそれぞれが認識可能な命令の対応表を保有させるようにすることができる。
【００１９】
本発明の一側面の情報処理方法は、アプリケーションを実行することが可能な情報処理装置の情報処理方法であって、前記アプリケーションの状態遷移を原始的な要素で定義して管理する第１のモジュールが、状態遷移の指令を取得して第２のモジュールに供給し、前記第２のモジュールが、取得された前記状態遷移の指令を、前記アプリケーションが動作するシステムに依存した状態遷移を管理する第３のモジュールが認識可能な命令に変換し、変換された前記命令を受けた前記第３のモジュールが、前記状態遷移の指令を基に前記システムの状態を遷移するか否かを判断し、前記第２のモジュールが、前記第３のモジュールにおける判断結果を、前記第１のモジュールが認識可能な通知に変換して前記第１のモジュールに通知するステップを含む。
【００２０】
本発明の一側面のプログラムは、コンピュータが実行可能なプログラムであって、前記プログラムは、第１のモジュール、第２のモジュール、および、第３のモジュールを含み、前記アプリケーションの状態遷移を原始的な要素で定義して管理する前記第１のモジュールが、状態遷移の指令を取得して前記第２のモジュールに供給し、前記第２のモジュールが、取得された前記状態遷移の指令を、前記アプリケーションが動作するシステムに依存した状態遷移を管理する前記第３のモジュールが認識可能な命令に変換し、変換された前記命令を受けた前記第３のモジュールが、前記状態遷移の指令を基に前記システムの状態を遷移するか否かを判断し、前記第２のモジュールが、前記第３のモジュールにおける判断結果を、前記第１のモジュールが認識可能な通知に変換して前記第１のモジュールに通知するステップをコンピュータに実行させる。
【００２１】
本発明の一側面においては、前記アプリケーションが動作するシステムに依存した状態遷移が管理され、前記アプリケーションの状態遷移が原始的な要素で定義されて管理され、システムとアプリケーションとのそれぞれが認識可能な命令の関係を示す情報が保有されて、これを基に、システムとアプリケーションとで命令が授受される。
【発明の効果】
【００２２】
以上のように、本発明の一側面によれば、アプリケーションプログラムを実行することができ、特に、アプリケーションプログラムを状態定義の異なる複数のシステム上で動作させることができる。
【発明を実施するための最良の形態】
【００２３】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、発明の詳細な説明に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、発明の詳細な説明に記載されていることを確認するためのものである。従って、発明の詳細な説明中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００２４】
本発明の一側面の情報処理装置は、アプリケーションを実行することが可能な情報処理装置（例えば、図１の情報処理装置１）であって、前記アプリケーションが動作するシステムに依存した状態遷移を管理するシステム状態遷移管理手段（例えば、システム状態管理モジュール５３）と、前記アプリケーションの状態遷移を原始的な要素で定義して管理するアプリケーション状態遷移管理手段（例えば、アプリケーション管理モジュール５２）と、前記システム状態遷移管理手段と前記アプリケーション状態遷移管理手段とのそれぞれが認識可能な命令の関係を示す情報を保有し、これを基に、前記システム状態遷移管理手段と前記アプリケーション状態遷移管理手段との前記命令の授受を実行する命令授受手段（例えば、接続モジュール５４）とを備える。
【００２５】
前記アプリケーション状態遷移管理手段は、複数のアプリケーション状態遷移命令を保持し、保持された命令をＦＩＦＯで実行するための命令保持手段（例えば、図８のアプリ状態遷移命令Queue）を備えることができる。
【００２６】
前記命令授受手段は、前記システム状態遷移管理手段と前記アプリケーション状態遷移管理手段とのそれぞれが認識可能な命令の関係を示す情報として、前記システム状態遷移管理手段と前記アプリケーション状態遷移管理手段とのそれぞれが認識可能な命令の対応表（例えば、図５乃至図７に示される対応表）を保有することができる。
【００２７】
本発明の一側面の情報処理方法は、アプリケーションを実行することが可能な情報処理装置（例えば、図１の情報処理装置１）の情報処理方法であって、前記アプリケーションの状態遷移を原始的な要素で定義して管理する第１のモジュール（例えば、アプリケーション管理モジュール５２）が、状態遷移の指令を取得して第２のモジュール（例えば、接続モジュール５４）に供給し（例えば、図９のステップＳ１の処理）、前記第２のモジュールが、取得された前記状態遷移の指令を、前記アプリケーションが動作するシステムに依存した状態遷移を管理する第３のモジュール（例えば、システム状態管理モジュール５３）が認識可能な命令に変換し（例えば、図９のステップＳ２の処理）、変換された前記命令を受けた前記第３のモジュールが、前記状態遷移の指令を基に前記システムの状態を遷移するか否かを判断し（例えば、図９のステップＳ５の処理）、前記第２のモジュールが、前記第３のモジュールにおける判断結果を、前記第１のモジュールが認識可能な通知に変換して前記第１のモジュールに通知する（例えば、図９のステップＳ７の処理）ステップを含む。
【００２８】
本発明の一側面のプログラムは、コンピュータが実行可能なプログラムであって、前記プログラムは、第１のモジュール、第２のモジュール、および、第３のモジュールを含み、前記アプリケーションの状態遷移を原始的な要素で定義して管理する前記第１のモジュール（例えば、アプリケーション管理モジュール５２）が、状態遷移の指令を取得して前記第２のモジュール（例えば、接続モジュール５４）に供給し（例えば、図９のステップＳ１の処理）、前記第２のモジュールが、取得された前記状態遷移の指令を、前記アプリケーションが動作するシステムに依存した状態遷移を管理する前記第３のモジュール（例えば、システム状態管理モジュール５３）が認識可能な命令に変換し（例えば、図９のステップＳ２の処理）、変換された前記命令を受けた前記第３のモジュールが、前記状態遷移の指令を基に前記システムの状態を遷移するか否かを判断し（例えば、図９のステップＳ５の処理）、前記第２のモジュールが、前記第３のモジュールにおける判断結果を、前記第１のモジュールが認識可能な通知に変換して前記第１のモジュールに通知する（例えば、図９のステップＳ７の処理）ステップをコンピュータに実行させる。
【００２９】
以下、図を参照して、本発明の実施の形態について説明する。
【００３０】
図１は、本発明を適用した情報処理装置１の構成例を示すブロック図である。
【００３１】
CPU(Central Processing Unit)１１は、ROM(Read Only Memory)１２に記憶されているプログラム、または、記憶部１８からRAM(Random Access Memory)１３にロードされたプログラムに従って各種の処理を実行する。RAM１３にはまた、CPU１１が各種の処理を実行する上において必要なデータなどが適宜記憶される。
【００３２】
CPU１１、ROM１２、およびRAM１３は、バス１４を介して相互に接続される。このバス１４にはまた、入出力インタフェース１５も接続される。
【００３３】
入出力インタフェース１５には、キーボード、マウス、または、図示せぬリモートコントローラからの赤外線を受光する受光部などよりなる入力部１６、LCD(Liquid Crystal Display)などよりなる出力部１７、ハードディスクなどより構成される記憶部１８、ネットワークを介しての通信処理を行う通信部１９が接続されている。
【００３４】
入出力インタフェース１５にはまた、必要に応じてドライブ２０が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどよりなるリムーバブルメディア２１が適宜装着され、それから読み出されたコンピュータプログラムが、必要に応じて記憶部１８にインストールされる。
【００３５】
このような情報処理装置１のＣＰＵ１１においては、ROM１２に記憶されているプログラム、または、記憶部１８からRAM１３にロードされたプログラムが実行される。
【００３６】
ＣＰＵ１１において実行されるアプリケーションプログラム（以下、アプリケーションとも称される）の状態定義の方法を、アプリケーションが動作するシステム（または、装置）によって異なるものにしてしまった場合、あるアプリケーションをアプリケーション状態定義の異なる複数のシステム上で動作させるためには、アプリケーションにおける状態遷移用のインタフェースおよびインタフェース呼び出し時の動作を各システムに合わせて変更して設計しなければならなくなる。
【００３７】
しかしながら、アプリケーションの状態の変更の可否を判断することができるモジュールは、アプリケーションが動作するシステム内のセットに依存する。
【００３８】
そこで、アプリケーションが可搬性を有するためには、アプリケーションをセット依存としないで、アプリケーション状態変更判断を司るモジュールと連携して動作させることができるようにならなければならない。
【００３９】
図２は、本発明を適用したシステムのモジュール構成図（ソフトウェアスタック）である。
【００４０】
アプリケーション５１−１乃至アプリケーション５１−ｎは、アプリケーション状態管理モジュール５２の定義する内部状態遷移を行うための機能、すなわち、関数を、アプリケーション状態管理モジュール５２に対して実行時に登録する。アプリケーション状態管理モジュール５２は、この登録されている機能を用いてアプリケーションの内部状態を変更することができる。
【００４１】
アプリケーションが可搬性を有するために、アプリケーションの状態は、原始的な要素に分解されて、定義される。そして、ＣＰＵ１１において実行されるアプリケーションは、この定義に従った状態遷移を行うようになされている。
【００４２】
アプリケーション状態管理モジュール５２が定義する、アプリケーションの内部状態遷移について、図３を用いて説明する。図３においては、二重線で囲まれた状態が、アプリケーションの定常状態として定義されている状態であり、定常状態と定常状態との間に存在する、一重線で囲まれた状態が、状態遷移中の状態を示すものである。
【００４３】
アプリケーションの状態は、アンロード状態７１、ロード状態７２、イニシャライズ状態７３、休止状態７４、および、アクティブ状態７５の５つの状態に分解されて定義されている。ロード状態７２、イニシャライズ状態７３、休止状態７４、および、アクティブ状態７５を含む第１の状態においては、アプリケーションは、メモリ上に展開されている。イニシャライズ状態７３、休止状態７４、および、アクティブ状態７５を含む第２の状態においては、アプリケーションは、ほかのアプリケーションやほかのモジュールにより利用可能な状態（例えば、バックグラウンドで利用されることができる状態）である。休止状態７４、および、アクティブ状態７５を含む第３の状態においては、アプリケーションに対応するＧＵＩはユーザにより見ることができる状態である。アクティブ状態７５のみが含まれる第４の状態のアプリケーションのみが、キーイベント等の操作入力を受けることができる状態である。
【００４４】
それぞれの状態と、可能な処理などの関係の具体的な例を図４に示す。
【００４５】
アンロード状態７１、ロード状態７２、イニシャライズ状態７３、休止状態７４、および、アクティブ状態７５の５つの状態において、ＧＵＩは、アンロード状態７１、ロード状態７２、および、イニシャライズ状態７３では表示されておらず、休止状態７４、および、アクティブ状態７５においては、その処理状態によって、表示されている場合と非表示である場合がある(例えば、バックグラウンド処理中では、ＧＵＩが表示されていない場合もある)。
【００４６】
また、親アプリケーションが存在する可能性があるのは、休止状態７４のみであるが、休止状態７４であっても、親アプリケーションが存在しない場合もある。操作関数が読み出し可能な状態は、アクティブ状態７５のみである。
【００４７】
そして、ＧＵＩが表示可能なのは、休止状態７４、および、アクティブ状態７５である。ただし、休止状態７４、および、アクティブ状態７５においては、ＧＵＩが表示可能な状態であるが、必ず表示されているとは限らない。例えば、休止状態７４、および、アクティブ状態７５において、バックグラウンド処理中や、他に親アプリケーションが存在している場合などは、ＧＵＩが表示されない場合もある。
【００４８】
そして、アンロード状態７１、ロード状態７２、イニシャライズ状態７３、休止状態７４、および、アクティブ状態７５の５つの状態において、アンロード状態７１、および、ロード状態７２においては、他のモジュールとの連携処理は不可能であるが、イニシャライズ状態７３、休止状態７４、および、アクティブ状態７５においては、他のモジュールとの連携処理が可能である。
【００４９】
また、アップデート関数の読み出し、レジスタの利用は、ロード状態７２、イニシャライズ状態７３、休止状態７４、および、アクティブ状態７５で可能であるが、アンロード状態７１においては不可である。また、アンロード状態７１においてのみ、アプリケーションは、メモリ内に展開されていない状態である。
【００５０】
このように、システムのさまざまな状態が、アンロード状態７１、ロード状態７２、イニシャライズ状態７３、休止状態７４、および、アクティブ状態７５の５つの状態に分解されて定義されている。この状態定義に基づいて設計されたアプリケーションプログラムは、アプリケーション状態管理モジュール５２とともに、機種やシステムに依存しない。
【００５１】
以下、それぞれの状態の遷移の詳細について説明する。
【００５２】
メモリにアプリケーションが展開されていないアンロード状態７１において、ロード命令が発生されると、アプリケーションの状態は、ロード中の状態８１を介して、メモリにアプリケーションが展開されているロード状態７２に遷移する。ロード状態７２において、イニシャライズ命令が発生されると、アプリケーションの状態は、イニシャライズ処理中の状態８２を介して、イニシャライズ状態７３に遷移する。
【００５３】
イニシャライズ状態７３において、ＧＵＩイニシャライズ命令が発生されると、アプリケーションの状態は、ＧＵＩのイニシャライズ処理中の状態８３を介して、休止状態７４（ＧＵＩはイニシャライズ済み）に遷移する。休止状態７４では、このアプリケーションの処理が行われていないが、アプリケーションに対応するＧＵＩが表示可能な状態である。この状態は、例えば、複数のアプリケーションを同時に実行可能なシステム（マルチタスクシステム）において、複数のアプリケーションに対応するウィンドウが表示されている状態の中で、現在使用されていないアプリケーション（アクティブになっていないウィンドウに対応するアプリケーション）に対応するものである。
【００５４】
休止状態７４において、起動命令が発生されると、アプリケーションの状態は、アクティベート中の状態８４を介して、アクティブ状態７５に遷移する。この状態遷移は、具体的には、例えば、複数のアプリケーションを同時に実行可能なシステム（マルチタスクシステム）において、複数のアプリケーションに対応するウィンドウが表示されている状態の中で、現在使用されていないアプリケーションのアクティブになっていないウィンドウがクリックされ、対応するウィンドウがアクティブ状態７５に遷移された場合に対応する。アクティブ状態７５とは、キーイベントなどの操作入力を受けて、操作入力に対応する処置が実行される状態である。
【００５５】
アクティブ状態７５において、休止命令が発生されると、アプリケーションの状態は、インアクティベート中の状態９１を介して、休止状態７４に遷移する。この状態遷移は、具体的には、例えば、複数のアプリケーションを同時に実行可能なシステム（マルチタスクシステム）において、複数のアプリケーションに対応するウィンドウが表示されている状態の中で、現在使用されていない他のアプリケーションのアクティブになっていないウィンドウがクリックされ、選択されたウィンドウに対応するアプリケーションがアクティブ状態７５に遷移され、代わって、自分自身が休止状態７４に遷移された（対応するウィンドウはアクティブ状態７５からアクティブではない状態に変更された）場合に対応する。
【００５６】
そして、休止状態７４において、ターミネート命令が発生されると、アプリケーションの状態は、ターミネーティング状態９２を介して、イニシャライズ状態７３に遷移する。イニシャライズ状態７３において、終了命令が発生されると、アプリケーションの状態は、ファイナライジング状態９３を介して、ロード状態７２に遷移される。ロード状態７２において、アンロード命令が発生されると、アプリケーションの状態は、アンロード中の状態９４を介して、アンロード状態７１に遷移する。
【００５７】
図３に示されるアプリケーション５１−１乃至アプリケーション５１−ｎの状態の変更は、例えば、他のアプリケーションの実行状態や、ハードウェアの状態などを含む、セット全体の状態から判断された上で実行されるが、セット全体の状態判断は、セットによって異なる、すなわち、セット依存である。アプリケーションの状態を遷移させるか否かの判断機構をアプリケーション状態管理モジュール５２が有する場合、アプリケーション状態管理モジュール５２はセットごとに用意しなければならなくなる。換言すれば、アプリケーション状態管理モジュール５２は、状態判断機能を有さないことにより、セットによらない可搬性を確保することができる。
【００５８】
したがって、アプリケーション状態管理モジュール５２は、セットによらない可搬性を確保するために、アプリケーションの状態を遷移させるか否かの判断機構を保有しない。
【００５９】
システム状態管理モジュール５３は、アプリケーションの状態を遷移させるか否かの判断機構を有するモジュールである。すなわち、システム状態管理モジュール５３は、セット依存のモジュールである。アプリケーション管理モジュール５２は、アプリ状態変更の要求を受けると、自分自身ではその要求を解釈せず、その判断を、システム状態管理モジュール５３に委譲する。
【００６０】
アプリケーション管理モジュール５２とシステム状態管理モジュール５３が、例えば、それぞれ異なるマイクロコンピュータ上で動作する場合や、または、システム状態管理モジュール５３のアプリ状態定義がアプリケーション管理モジュール５２のアプリ状態定義と異なる場合などにおいては、マイクロコンピュータ間通信機能や、アプリ状態遷移要求の変換機構を実装した接続モジュール５４が、アプリケーション管理モジュール５２とシステム状態管理モジュール５３の間の仲介者として実装される。
【００６１】
接続モジュール５４は、アプリケーション管理モジュール５２からアプリ状態遷移要求を受け取るための機能（関数）、および、アプリケーション管理モジュール５２からアプリ状態遷移完了通知を受け取るための機能（関数）の登録を受ける。また、接続モジュール５４は、アプリケーション管理モジュール５２に対してアプリ状態遷移命令を行うために、システム状態管理モジュール５３とアプリケーション管理モジュール５２とのそれぞれが認識可能な命令（関数）の関係を示す情報を保有しており、これを基に、アプリケーション管理モジュール５２とシステム状態管理モジュール５３との命令の授受を仲介する。
【００６２】
図５乃至図７に、システム状態管理モジュール５３とアプリケーション管理モジュール５２とのそれぞれが認識可能な命令（関数）の関係を示す情報の一例として、命令（関数）の対応表を示す。
【００６３】
例えば、あるシステムＡに対応した接続モジュール５４が有する対応表の例を図５に示す。
【００６４】
システムＡにおけるセットアップ命令は、アプリケーション管理モジュール５２が管理している状態遷移において、アンロード状態７１からイニシャライズ状態７３に状態を遷移させる命令であり、アプリケーション管理モジュール５２が認識可能な命令の、ロード命令＋イニシャライズ命令に変換可能である。また、システムＡにおける起動命令は、アプリケーション管理モジュール５２が管理している状態遷移において、イニシャライズ状態７３からアクティブ状態７５に状態を遷移させる命令であり、アプリケーション管理モジュール５２が認識可能な命令の、ＧＵＩイニシャライズ命令＋起動命令に対応するものである。
【００６５】
また、システムＡにおける停止命令は、アプリケーション管理モジュール５２が管理している状態遷移において、アクティブ状態７５からイニシャライズ状態７３に状態を遷移させる命令であり、アプリケーション管理モジュール５２が認識可能な命令の、休止命令＋ターミネイト命令に対応するものである。そして、システムＡにおける終了命令は、アプリケーション管理モジュール５２が管理している状態遷移において、イニシャライズ状態７３からアンロード状態７１に状態を遷移させるものであり、アプリケーション管理モジュール５２が認識可能な命令の、終了命令＋アンロード命令に変換可能である。
【００６６】
このように、接続モジュール５４は、システムＡにおける命令が、アプリケーション管理モジュール５２が管理している状態遷移において、複数の状態を遷移させるものである場合であっても、供給された命令を、それぞれが認識可能な命令に変換して、アプリケーション管理モジュール５２とシステム状態管理モジュール５３との命令の授受を仲介することができる。
【００６７】
また、システムＡとは異なるシステムＢに対応した接続モジュール５４が有する対応表の例を図６に示す。
【００６８】
システムＢにおけるセットアップ命令、起動命令、停止命令、終了命令は、アプリケーション管理モジュール５２が認識可能な命令と図５を用いて説明したシステムＡにおける場合と同様の対応関係を有しているが、これに加えて、システムＢにおいては、アプリケーション管理モジュール５２が管理している状態遷移において、アクティブ状態７５から休止状態７４へ状態を遷移させる休止命令、および、休止状態７４からアクティブ状態７５へ状態を遷移させる起動命令が存在する。
【００６９】
すなわち、接続モジュール５４は、アプリケーション管理モジュール５２とシステム状態管理モジュール５３との命令が１対１に対応しているものと、１対１に対応していないものが混在する場合であっても、供給された命令を、それぞれが認識可能な命令に変換して、アプリケーション管理モジュール５２とシステム状態管理モジュール５３との命令の授受を仲介することができる。
【００７０】
また、システムＡおよびシステムＢとは異なるシステムＣに対応した接続モジュール５４が有する対応表の例を図７に示す。
【００７１】
システムＣにおけるロード命令は、アプリケーション管理モジュール５２が認識可能なロード命令であり、アプリケーション管理モジュール５２が管理している状態遷移において、アンロード状態７１からロード状態７２に状態を遷移するものである。そして、システムＣにおける起動命令は、アプリケーション管理モジュール５２が管理している状態遷移において、ロード状態７２からアクティブ状態７５に状態を遷移させる命令であり、アプリケーション管理モジュール５２が認識可能な命令の、イニシャライズ命令＋ＧＵＩイニシャライズ命令＋起動命令に対応するものである。
【００７２】
そして、システムＣにおける終了命令は、アプリケーション管理モジュール５２が管理している状態遷移において、アクティブ状態７５からアンロード状態７１に一度に状態を遷移させる命令であり、アプリケーション管理モジュール５２が認識可能な命令の、休止命令＋ターミネイト命令＋終了命令＋アンロード命令に対応するものである。
【００７３】
このように、接続モジュール５４は、アプリケーション管理モジュール５２とシステム状態管理モジュール５３との命令がどのように対応している場合であっても、アプリケーション状態管理モジュール５２の定義する内部状態に基づいて、それらの対応関係を登録し、供給された命令を、それぞれが認識可能な命令に変換して、アプリケーション管理モジュール５２とシステム状態管理モジュール５３との命令の授受を仲介することができる。
【００７４】
すなわち、アプリケーション管理モジュール５２は、アプリケーション５１−１乃至アプリケーション５１−ｎが、図３の状態遷移図におけるいずれの状態であるのかを管理しており、アプリケーション５１−１乃至アプリケーション５１−ｎのうちのいずれかの状態遷移要求を受けた場合、システム状態管理モジュール５３にその処理を委譲するために、接続モジュール５４にアプリ状態遷移要求を供給する。接続モジュール５４は、その要求内容を、図５乃至図７を用いて説明した対応表を用いて変換し、システム状態管理モジュール５３へ供給する。システム状態管理モジュール５３は、アプリ状態遷移要求の供給を受け、他のアプリケーションの状態や他のモジュール、ハードウェアの状態に基づいて、要求に対して取るべき動作内容、すなわち、状態遷移の可否を決定する。
【００７５】
そして、システム状態管理モジュール５３は、アプリ状態の変更をすると判断した場合、その状態遷移命令を接続モジュール５４に対して供給する。接続モジュール５４は、システム状態管理モジュール５３から受け取った命令を、図５乃至図７を用いて説明したような変換表などを用いることなどにより、アプリケーション管理モジュール５２が認識可能な形式の命令、すなわち、図３におけるロード命令、ＧＵＩイニシャライズ命令、起動命令、休止命令、ターミネイト命令、終了命令、アンロード命令に変換し、アプリケーション管理モジュール５２に供給する。そして、アプリケーション管理モジュール５２は、アプリ状態遷移命令を受け取ると、アプリケーション５１−１乃至アプリケーション５１−ｎにより登録済みのアプリ状態遷移用機能を呼び出す。すなわち、アプリ状態は、図３に示される遷移中（一重線で囲まれた状態）となる。そして、アプリケーション管理モジュール５２は、アプリケーション５１−１乃至アプリケーション５１−ｎから、アプリ状態遷移の完了通知、すなわち、図３におけるＡＣＫの供給を受け、状態の遷移が完了する。
【００７６】
このようにして、アプリケーション５１−１乃至アプリケーション５１−ｎとモジュールアプリケーション管理モジュール５２は、セット依存にすることなく実装することが可能となる。すなわち、モジュール接続モジュール５４を変更することにより、アプリケーションとアプリケーション管理モジュール５２を複数のシステム上にそのまま移植することが可能となる。すなわち、所定の状態定義に従った状態遷移を管理するセットに依存しないモジュールであるアプリケーション管理モジュール５２と、セットに依存しないモジュールとセットに依存するモジュールとの差異を吸収するモジュールである接続モジュール５４とを用いることにより、共通の実装のアプリケーションを、アプリケーション状態定義の異なる複数システム上で動作させることができる。
【００７７】
また、アプリケーション管理モジュール５２により定義される所定の状態遷移に基づいて設計されているアプリケーションプログラムであれば、異なる装置または異なるセットにおいても、対応する接続モジュール５４が用いられることにより、正常動作が保障され、より高い移植性を実現することができる。また、アプリケーション管理モジュール５２により定義される所定の状態遷移に基づいて設計されているアプリケーションプログラムであれば、異なるシステムで実行される場合であっても、同一の表示形式でＧＵＩを表示させることが可能となる。
【００７８】
上述したアプリケーションの状態遷移における動作には、他のモジュールによって中断されてはならない処理が含まれることがある。このためアプリケーション状態遷移の完了を保証する必要がある。また、アプリケーション状態遷移は１つの原始的な状態遷移のみでなく、複数の状態遷移から構成されることがある。このためアプリケーション状態遷移のトリガーが引かれた際に、複数の状態遷移命令を発行できることが必要である。さらに、複数のアプリケーション状態遷移命令が発行された場合、それらの状態遷移命令には、互いに相殺し合う命令が同時に存在しうるが、この全てを実行してしまっては、冗長な処理が発生することになり、処理時間がかかってしまう。
【００７９】
そこで、複数のアプリケーション状態遷移命令を保持するための機構を設け、アプリケーション状態遷移の完了通知を受けて、保持している命令のうち、次に実行するべき処理を逐次実行していくことで、アプリケーション状態遷移のイベントが発生した際に複数のアプリケーション状態遷移命令を受け付け、かつ、個々の命令の完了を保証して、アプリケーション状態遷移を逐次実行することを可能にする。また、保持されている命令を逐次実行する際に、保持している命令の内容を検証し、相殺し合う命令が含まれていた場合、それらを破棄することとし、複数スタックされるアプリケーション状態の遷移命令の実行を全て完了するまでの時間を短縮することができるようにする。
【００８０】
すなわち、図８に示されるように、アプリケーション状態遷移の完了保証と逐次実行を行うためのアプリ状態遷移命令の保持機構として、ＦＩＦＯ（First in First out）のアプリ状態遷移命令Queueを設けるものとする。
【００８１】
そして、図８のようにアプリ状態遷移命令を発生順にアプリ状態遷移命令Queueに保持し、先優先で（発生した時間が早い命令を優先として）命令が実行されるものとする。Queuingする命令オブジェクトは、どのモジュールからの要求であるのか、どのアプリケーションがこの命令によって状態遷移されるのか、また、どの状態に遷移させられるのか、この命令は完了待ちをする必要があるのか、また、遷移する際に必要となるデータおよびそのサイズなどの情報などから構成されるものとする。
【００８２】
Queuingする命令オブジェクトに、この命令は完了待ちをする必要があるのか否かを示す情報が含まれるようにすることにより、先優先で処理を進める際に、処理完了待ちが必要であるとされた命令を処理している場合、その完了が遷移中のアプリケーションから通知されるまで次の処理は実行されない。これにより、アプリケーションは自身の状態遷移処理の完了を保証することができる。
【００８３】
例えば、あるアプリケーション５１−１がアクティブ状態７５である際に、ロード状態７２の他のアプリケーション５１−２をアクティブ状態７５とする命令が実行されると判断され、その結果、アプリケーション５１−１を休止状態７４、アプリケーション５１−２をアクティブ状態７５に遷移させると判断された場合、アプリケーション状態管理モジュール５２のアプリ状態命令保持用のQueueには、アプリケーション５１−１の休止命令、アプリケーション５１−２のイニシャライズ命令、GUIイニシャライズ命令、および、起動命令の４つの命令がQueuingされる。
【００８４】
このように命令をQueuingする際に、例えば、短い間隔でユーザ操作が繰り返された場合などにより、同一のアプリに対して背反する命令が詰まれることがある。例えば、ユーザが操作入力を誤ってしまった場合など、短い時間内に、アプリケーション５１−１とアプリケーション５１−２とに対して交互にアクティブ状態７５への遷移が指令されてしまったときなどである。
【００８５】
ユーザは、迅速に最後の操作入力の通りの状態になることを期待するが、Queuingされた処理を全て実行しないと最後の操作入力により指令された状態遷移が実行されないようになされている場合、最終状態に到達するのに大きな時間が必要となってしまう。
【００８６】
そこで、アプリケーション状態管理モジュール５２のアプリ状態命令保持用のQueueに、同一のアプリケーションの起動命令と休止命令が存在していたり、GUIイニシャライズ命令とターミネイト命令が存在していたり、イニシャライズ命令と終了命令が存在していたり、ロード命令とアンロード命令が存在している場合、これらの相反する命令をアプリ状態命令保持用のQueueから削除するものとする。
【００８７】
これにより、Queue内の冗長な処理を間引くことが可能となり、最終状態への到達ステップを削減することが可能となる。また、このようにして、FIFOのスタックを用いたQueuing処理を行うことは、複数のマイクロコンピュータをまたぐ非同期な命令通知を授受する場合に好適である。
【００８８】
このように、本発明では、必要に応じてアプリケーション状態遷移の完了を待ちつつ、状態遷移命令を逐次実行していくことが可能であるため、アプリケーション間のタスクプライオリティの差異がアプリケーション状態遷移に影響をおよぼすことはなく、かつ、アプリケーションの、異なるアプリケーション状態管理機構上への移植も可能である。
【００８９】
次に、図９のフローチャートを参照して、本発明を適用した情報処理処置において実行される処理について説明する。
【００９０】
ステップＳ１において、アプリケーション状態管理モジュール５２は、セット内のいずれかのモジュール（例えば、アプリケーション５１−１乃至アプリケーション５１−ｎのいずれか）から、状態を遷移させるための指令を受けたか否かを判断する。ステップＳ１において、状態を遷移させるための指令を受けていないと判断された場合、処理は、後述するステップＳ９に進む。
【００９１】
ステップＳ１において、状態を遷移させるための指令を受けたと判断された場合、ステップＳ２において、アプリケーション状態管理モジュール５２は、状態を遷移させるための指令を接続モジュール５４に供給する。
【００９２】
ステップＳ３において、接続モジュール５４は、状態遷移のための要求内容をシステム状態管理モジュール５３が認識可能なように変換して、システム状態管理モジュール５３に供給する。
【００９３】
ステップＳ４において、システム状態管理モジュール５３は、接続モジュール５４によって認識可能なように変換されたアプリケーションの状態遷移のための要求を取得し、アプリケーションの動作内容を決定する。すなわち、システム状態管理モジュール５３は、現在のシステムの状態や、他のアプリケーションからの要求などを基に、アプリケーションの状態遷移の可否を決定する。
【００９４】
ステップＳ５において、システム状態管理モジュール５３は、アプリケーションの状態の変更を行うか否かを判断する。ステップＳ５において、アプリケーションの状態の変更を行わないと判断された場合、処理は、後述するステップＳ９に進む。
【００９５】
ステップＳ５において、アプリケーションの状態の変更を行うと判断された場合、ステップＳ６において、システム状態管理モジュール５３は、アプリケーションの状態の変更の指令を、接続モジュール５４に供給する。
【００９６】
ステップＳ７において、接続モジュール５４は、状態を変更する指令を、アプリケーション状態管理モジュール５２が認識可能な命令に変換し、アプリケーション状態管理モジュール５２に供給する
【００９７】
ステップＳ８において、アプリケーション状態管理モジュール５２は、図８を用いて説明したアプリ状態遷移命令キューに、変換された状態遷移命令をキューする。
【００９８】
ステップＳ１において、状態を遷移させるための指令を受けていないと判断された場合、ステップＳ５において、アプリケーションの状態の変更を行わないと判断された場合、または、ステップＳ８の処理の終了後、ステップＳ９において、アプリケーション状態管理モジュール５２は、削除可能な命令がキューの中に存在しているか否かを判断する。
【００９９】
ステップＳ９において、例えば、同一のアプリケーションに対する起動命令と休止命令など、削除可能な命令がキューの中に存在していると判断された場合、ステップＳ１０において、アプリケーション状態管理モジュール５２は、削除可能な命令をキューの中から削除する。
【０１００】
ステップＳ９において、削除可能な命令がキューの中に存在していないと判断された場合、または、ステップＳ１０の処理の終了後、ステップＳ１１において、アプリケーション状態管理モジュール５２は、アプリ状態遷移命令キューに、命令が残っているか否かを判断する。
【０１０１】
ステップＳ１１において、アプリ状態遷移命令キューに、命令が残っていると判断された場合、ステップＳ１２において、アプリケーション状態管理モジュール５２は、アプリ状態遷移命令キューの中で、一番先にキューされた命令を実行し、処理は、ステップＳ１に戻り、それ以降の処理が繰り返される。
【０１０２】
ステップＳ１１において、アプリ状態遷移命令キューに、命令が残っていないと判断された場合、処理が終了される。
【０１０３】
このようにして、アプリケーションの状態遷移をアプリケーション管理モジュール５２が管理し、システム状態管理モジュール５３との命令等の授受のための仲介を、接続モジュール５４が行うことにより、システムに依存しないアプリケーションを実行することができる。
【０１０４】
このように、本発明を適用することにより、アプリケーション５１−１乃至アプリケーション５１−ｎとアプリケーション管理モジュール５２に手を加えることなく、アプリ状態定義の異なるシステム（異なるシステム状態管理モジュール５３が含まれるシステム、換言すれば、異なるシステム状態管理モジュール５３により制御されるハードウェア）上へ移植することが可能となる。
【０１０５】
また、本発明を適用することにより、アプリケーションの状態遷移はアプリケーション管理モジュール５２が管理するが、状態遷移の可否を決定するのは、システム状態管理モジュール５３であるので、複数のアプリケーションにおいて、アプリケーション状態遷移を行う際にも、複数のアプリケーションにおいて、状態遷移の処理の衝突を回避することができる。
【０１０６】
さらに、本発明を適用することにより、複数のアプリケーション状態遷移命令を保持するための機構が設けられ、アプリケーション状態遷移の完了通知を受けて、保持している次命令の処理が逐次実行されるので、アプリケーション状態遷移のイベントが発生した際に複数のアプリケーション状態遷移命令を受け付け、かつ、個々の命令の完了を保証して、アプリケーション状態遷移を逐次実行することが可能となる。また、複数のアプリケーション状態遷移命令を保持するための機構を設けることにより、保持している命令の内容を検証し、相殺し合う命令が含まれていた場合、それらを破棄する、換言すれば、冗長な処理を間引くことができるので、複数スタックされるアプリケーション状態の遷移を完了するまでの時間を短縮することができる。
【０１０７】
また、本発明は、アプリケーション管理モジュール５２とシステム状態管理モジュール５３とが異なるマイクロコンピュータにそれぞれ実装され、それぞれの命令が非同期で伝達される場合にも対応することが可能である。
【０１０８】
以上、説明したように、アプリケーションの状態を原始的な要素に分解し、定義して、アプリケーションをこの定義に従って実装するものとする。そして、アプリケーションとアプリケーションが動作するシステムに依存した状態遷移を司るモジュール（ここでは、システム状態管理モジュール５３）との間に、アプリケーションの状態遷移を上述した原始的な要素で定義して管理するモジュール（ここでは、アプリケーション管理モジュール５２）、および、システムに依存した状態遷移を司るモジュールとアプリケーションの状態遷移を定義して管理するモジュールとのアプリケーション状態定義の差異を吸収するモジュール（ここでは、接続モジュール５４）を挟むことにより、アプリケーションプログラムは、システムによらない可搬性を有することができる。
【０１０９】
また、アプリケーションの状態遷移を上述した原始的な要素で定義して管理するモジュール（ここでは、アプリケーション管理モジュール５２）に複数のアプリケーション状態遷移命令を保持するための機構を設け、アプリケーション状態遷移の完了通知を受けて、保持している次命令の処理を逐次実行していくことにより、アプリケーション状態遷移のイベントが発生した際に、複数のアプリケーション状態遷移命令を受け付け、かつ、個々の命令の完了を保証しつつアプリケーション状態遷移を逐次実行することが可能となる。また、複数のアプリケーション状態遷移命令を保持するための機構に保持されている命令を逐次実行する際に、保持している命令の内容を検証して相殺し合う命令を破棄するようにすることにより、アプリケーション状態遷移完了までの時間を短縮することが可能となる。
【０１１０】
上述した一連の処理は、ソフトウェアにより実行することもできる。そのソフトウェアは、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
【０１１１】
この記録媒体は、図１に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM（Compact Disk-Read Only Memory），DVD（Digital Versatile Disk）を含む）、光磁気ディスク（ＭＤ(Mini-Disk)（商標）を含む）、もしくは半導体メモリなどよりなるリムーバブルメディア２１などにより構成される。
【０１１２】
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０１１３】
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【０１１４】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０１１５】
【図１】本発明を適用した情報処理装置の構成を示すブロック図である。
【図２】本発明を適用した情報処理装置において実行される処理を制御するソフトウェアスタックについて説明するための図である。
【図３】アプリケーション状態管理モジュールにおいて管理される状態遷移を示す図である。
【図４】それぞれの状態と、アプリケーションの可能な処理などの関係を示す図である。
【図５】システム状態管理モジュールとアプリケーション管理モジュールとのそれぞれが認識可能な命令（関数）の関係を示す図である。
【図６】システム状態管理モジュールとアプリケーション管理モジュールとのそれぞれが認識可能な命令（関数）の関係を示す図である。
【図７】システム状態管理モジュールとアプリケーション管理モジュールとのそれぞれが認識可能な命令（関数）の関係を示す図である。
【図８】アプリ状態遷移命令の保持機構について説明するための図である。
【図９】本発明を適用した情報処理装置の処理を示すフローチャートである。
【符号の説明】
【０１１６】
１  情報処理装置，  １１  ＣＰＵ，  ５１  アプリケーション，  ５２  アプリケーション状態管理モジュール，  ５３  システム状態管理モジュール，  ５４  接続モジュール
【図１】
2007052691.tif 000003
【図２】
2007052691.tif 000004
【図３】
2007052691.tif 000005
【図４】
2007052691.tif 000006
【図５】
2007052691.tif 000007
【図６】
2007052691.tif 000008
【図７】
2007052691.tif 000009
【図８】
2007052691.tif 000010
【図９】
2007052691.tif 000011