(57)【要約】【課題】  オブジェクト指向を導入してソフトウェアを開発する際の効率性を向上させること。【解決手段】  ソフトウェアを開発するためのソフトウェア開発装置であって、オブジェクトの状態モデルの継承によってオブジェクトの機能拡張を表現するような状態遷移図の編集操作を行うための編集画面を提供する編集画面提供手段と、前記編集画面で編集された前記状態遷移図からフレームワークをカスタマイズするためのソフトウェアを生成するソフトウェア生成手段とを備えることを特徴とするソフトウェア開発装置。【選択図】  図２１
2005250974.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアを開発するためのソフトウェア開発装置であって、
オブジェクトの状態モデルの継承によりオブジェクトの機能拡張を表現するような状態遷移図の編集操作を行うための編集画面を提供する編集画面提供手段と、前記編集画面で編集された前記状態遷移図からフレームワークをカスタマイズするためのソフトウェアを生成するソフトウェア生成手段とを備えることを特徴とするソフトウェア開発装置。
【請求項２】
前記ソフトウェア生成手段は、前記状態遷移図からＪａｖａ（登録商標）で記述された前記ソフトウェアを生成することを特徴とする請求項１に記載のソフトウェア開発装置。
【請求項３】
前記ソフトウェア生成手段は、前記状態遷移図からＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）で記述された前記ソフトウェアを生成することを特徴とする請求項１に記載のソフトウェア開発装置。
【請求項４】
前記ソフトウェア生成手段は、ＸＭＩ（ＸＭＬ  Ｍｅｔａｄａｔａ  Ｉｎｔｅｒｃｈａｎｇｅ）に基づき、前記状態遷移図からＸＭＬで記述された前記ソフトウェアを生成することを特徴とする請求項３に記載のソフトウェア開発装置。
【請求項５】
前記編集画面では、オブジェクトの状態を編集操作の対象とする編集操作が可能であることを特徴とする請求項１乃至４のいずれか１項に記載のソフトウェア開発装置。
【請求項６】
前記編集画面では、オブジェクトの状態遷移時の入場処理，退場処理，イベント処理，又はアクション処理を編集操作の対象とする編集操作が可能であることを特徴とする請求項１乃至５のいずれか１項に記載のソフトウェア開発装置。
【請求項７】
前記ソフトウェアは、画像形成装置用のソフトウェアであり、画像形成装置内のフレームワークをカスタマイズするためのソフトウェアであることを特徴とする請求項１乃至６のいずれか１項に記載のソフトウェア開発装置。
【請求項８】
前記ソフトウェアは、電気機器用のソフトウェアであり、電気機器内のフレームワークをカスタマイズするためのソフトウェアであることを特徴とする請求項１乃至６のいずれか１項に記載のソフトウェア開発装置。
【請求項９】
ソフトウェアを開発するためのソフトウェア開発方法であって、
オブジェクトの状態モデルの継承によりオブジェクトの機能拡張を表現するような状態遷移図の編集操作を行うための編集画面を提供する編集画面提供段階と、前記編集画面で編集された前記状態遷移図からフレームワークをカスタマイズするためのソフトウェアを生成するソフトウェア生成段階とを備えることを特徴とするソフトウェア開発方法。
【請求項１０】
前記ソフトウェア生成段階で、前記状態遷移図からＪａｖａ（登録商標）で記述された前記ソフトウェアを生成することを特徴とする請求項９に記載のソフトウェア開発方法。
【請求項１１】
前記ソフトウェア生成段階で、前記状態遷移図からＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）で記述された前記ソフトウェアを生成することを特徴とする請求項９に記載のソフトウェア開発方法。
【請求項１２】
前記ソフトウェア生成段階で、ＸＭＩ（ＸＭＬ  Ｍｅｔａｄａｔａ  Ｉｎｔｅｒｃｈａｎｇｅ）に基づき、前記状態遷移図からＸＭＬで記述された前記ソフトウェアを生成することを特徴とする請求項１１に記載のソフトウェア開発方法。
【請求項１３】
前記編集画面では、オブジェクトの状態を編集操作の対象とする編集操作が可能であることを特徴とする請求項９乃至１２のいずれか１項に記載のソフトウェア開発方法。
【請求項１４】
前記編集画面では、オブジェクトの状態遷移時の入場処理，退場処理，イベント処理，又はアクション処理を編集操作の対象とする編集操作が可能であることを特徴とする請求項９乃至１３のいずれか１項に記載のソフトウェア開発方法。
【請求項１５】
前記ソフトウェアは、画像形成装置用のソフトウェアであり、画像形成装置内のフレームワークをカスタマイズするためのソフトウェアであることを特徴とする請求項９乃至１４のいずれか１項に記載のソフトウェア開発方法。
【請求項１６】
前記ソフトウェアは、電気機器用のソフトウェアであり、電気機器内のフレームワークをカスタマイズするためのソフトウェアであることを特徴とする請求項９乃至１４のいずれか１項に記載のソフトウェア開発方法。
【請求項１７】
請求項９乃至１６のいずれか１項に記載のソフトウェア開発方法をコンピュータに実行させるソフトウェア開発用プログラム。
【請求項１８】
請求項９乃至１６のいずれか１項に記載のソフトウェア開発方法をコンピュータに実行させるソフトウェア開発用プログラムが記録された記録媒体。
【請求項１９】
請求項１乃至８のいずれか１項に記載のソフトウェア開発装置又は請求項９乃至１６のいずれか１項に記載のソフトウェア開発方法により開発されたソフトウェア。
【請求項２０】
請求項１乃至８のいずれか１項に記載のソフトウェア開発装置又は請求項９乃至１６のいずれか１項に記載のソフトウェア開発方法により開発されたソフトウェアが記録された記録媒体。
【請求項２１】
請求項１乃至８のいずれか１項に記載のソフトウェア開発装置又は請求項９乃至１６のいずれか１項に記載のソフトウェア開発方法により開発されたソフトウェアが実装された画像形成装置。
【請求項２２】
請求項１乃至８のいずれか１項に記載のソフトウェア開発装置又は請求項９乃至１６のいずれか１項に記載のソフトウェア開発方法により開発されたソフトウェアが実装された電気機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＰＣ（パーソナルコンピュータ）等のソフトウェア開発装置と、ＰＣ（パーソナルコンピュータ）等によって実行されるソフトウェア開発方法と、アプリケーションプログラム等のソフトウェア開発用プログラムと、アプリケーションプログラム等のソフトウェアと、ＣＤ−ＲＯＭ等の記録媒体と、コピー／プリンタ／スキャナ／ファクシミリ／複合機／融合機等の画像形成装置と、画像形成装置等の電気機器とに関する。
【背景技術】
【０００２】
オブジェクト指向を導入してソフトウェアを開発する場合、オブジェクト指向のモデリング言語であるＵＭＬ（Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）を利用することが多い。ＵＭＬの例としては、状態遷移図（Ｓｔａｔｅ  Ｃｈａｒｔ  Ｄｉａｇｒａｍ）が挙げられる。オブジェクト指向を導入してソフトウェアを開発する場合には更に、ＰＣの画面上でＵＭＬの編集操作を行うためのＵＭＬドローイングツールを利用することも多い。ＵＭＬドローイングツールは例えば、フリーソフトウェアとして入手可能であろう。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
オブジェクト指向を導入してソフトウェアを開発する場合、オブジェクトの状態モデルを理解するために状態遷移図を利用することが多い。状態モデルが複雑になればなるほど状態モデルの理解は困難になるのだが、それでも開発者は状態モデルを努力して理解しなければならない。しかし例えば、メーカーがある電気機器を開発してベンダーがその電気機器の機能拡張用のソフトウェアを開発するような場合、電気機器の部分的な機能拡張用のソフトウェアを開発するに過ぎないベンダーにまで状態モデルの全体的な理解を強いるのは酷であると言えよう。この例からも理解されるように、オブジェクト指向を導入してソフトウェアを開発する際の効率性には問題もあるのである。
【０００４】
したがって、本発明は、オブジェクト指向を導入してソフトウェアを開発する際の効率性を向上させることを課題とする。
【課題を解決するための手段】
【０００５】
請求項１記載の発明（ソフトウェア開発装置）は、ソフトウェアを開発するためのソフトウェア開発装置であって、オブジェクトの状態モデルの継承によりオブジェクトの機能拡張を表現するような状態遷移図の編集操作を行うための編集画面を提供する編集画面提供手段と、前記編集画面で編集された前記状態遷移図からフレームワークをカスタマイズするためのソフトウェアを生成するソフトウェア生成手段とを備える。
【０００６】
請求項２記載の発明（ソフトウェア開発装置）は、請求項１記載の発明（ソフトウェア開発装置）に関して、前記ソフトウェア生成手段は、前記状態遷移図からＪａｖａ（登録商標）で記述された前記ソフトウェアを生成する。
【０００７】
請求項３記載の発明（ソフトウェア開発装置）は、請求項１記載の発明（ソフトウェア開発装置）に関して、前記ソフトウェア生成手段は、前記状態遷移図からＸＭＬで記述された前記ソフトウェアを生成する。
【０００８】
請求項４記載の発明（ソフトウェア開発装置）は、請求項３記載の発明（ソフトウェア開発装置）に関して、前記ソフトウェア生成手段は、ＸＭＩに基づき、前記状態遷移図からＸＭＬで記述された前記ソフトウェアを生成する。
【０００９】
請求項５記載の発明（ソフトウェア開発装置）は、請求項１乃至４いずれか１項記載の発明（ソフトウェア開発装置）に関して、前記編集画面では、オブジェクトの状態を編集操作の対象とする編集操作が可能である。
【００１０】
請求項６記載の発明（ソフトウェア開発装置）は、請求項１乃至５いずれか１項記載の発明（ソフトウェア開発装置）に関して、前記編集画面では、オブジェクトの状態遷移時の入場処理，退場処理，イベント処理，又はアクション処理を編集操作の対象とする編集操作が可能である。
【００１１】
請求項７記載の発明（ソフトウェア開発装置）は、請求項１乃至６いずれか１項記載の発明（ソフトウェア開発装置）に関して、前記ソフトウェアは、画像形成装置用のソフトウェアであり、且つ、画像形成装置内のフレームワークをカスタマイズするためのソフトウェアである。
【００１２】
請求項８記載の発明（ソフトウェア開発装置）は、請求項１乃至６いずれか１項記載の発明（ソフトウェア開発装置）に関して、前記ソフトウェアは、電気機器用のソフトウェアであり、且つ、電気機器内のフレームワークをカスタマイズするためのソフトウェアである。
【００１３】
請求項９記載の発明（ソフトウェア開発方法）は、ソフトウェアを開発するためのソフトウェア開発方法であって、オブジェクトの状態モデルの継承によりオブジェクトの機能拡張を表現するような状態遷移図の編集操作を行うための編集画面を提供する編集画面提供段階と、前記編集画面で編集された前記状態遷移図からフレームワークをカスタマイズするためのソフトウェアを生成するソフトウェア生成段階とを備える。
【００１４】
請求項１０記載の発明（ソフトウェア開発方法）は、請求項９記載の発明（ソフトウェア開発方法）に関して、前記ソフトウェア生成段階で、前記状態遷移図からＪａｖａ（登録商標）で記述された前記ソフトウェアを生成する。
【００１５】
請求項１１記載の発明（ソフトウェア開発方法）は、請求項９記載の発明（ソフトウェア開発方法）に関して、前記ソフトウェア生成段階で、前記状態遷移図からＸＭＬで記述された前記ソフトウェアを生成する。
【００１６】
請求項１２記載の発明（ソフトウェア開発方法）は、請求項１１記載の発明（ソフトウェア開発方法）に関して、前記ソフトウェア生成段階で、ＸＭＩに基づき、前記状態遷移図からＸＭＬで記述された前記ソフトウェアを生成する。
【００１７】
請求項１３記載の発明（ソフトウェア開発方法）は、請求項９乃至１２いずれか１項記載の発明（ソフトウェア開発方法）に関して、前記編集画面では、オブジェクトの状態を編集操作の対象とする編集操作が可能である。
【００１８】
請求項１４記載の発明（ソフトウェア開発方法）は、請求項９乃至１３いずれか１項記載の発明（ソフトウェア開発方法）に関して、前記編集画面では、オブジェクトの状態遷移時の入場処理，退場処理，イベント処理，又はアクション処理を編集操作の対象とする編集操作が可能である。
【００１９】
請求項１５記載の発明（ソフトウェア開発方法）は、請求項９乃至１４いずれか１項記載の発明（ソフトウェア開発方法）に関して、前記ソフトウェアは、画像形成装置用のソフトウェアであり、且つ、画像形成装置内のフレームワークをカスタマイズするためのソフトウェアである。
【００２０】
請求項１６記載の発明（ソフトウェア開発方法）は、請求項９乃至１４いずれか１項記載の発明（ソフトウェア開発方法）に関して、前記ソフトウェアは、電気機器用のソフトウェアであり、且つ、電気機器内のフレームワークをカスタマイズするためのソフトウェアである。
【００２１】
請求項１７記載の発明（ソフトウェア開発用プログラム）は、請求項９乃至１６のいずれか１項に記載のソフトウェア開発方法をコンピュータに実行させるソフトウェア開発用プログラムである。
【００２２】
請求項１８記載の発明（記録媒体）は、請求項９乃至１６のいずれか１項に記載のソフトウェア開発方法をコンピュータに実行させるソフトウェア開発用プログラムが記録された記録媒体である。
【００２３】
請求項１９記載の発明（ソフトウェア）は、請求項１乃至８のいずれか１項に記載のソフトウェア開発装置又は請求項９乃至１６のいずれか１項に記載のソフトウェア開発方法により開発されたソフトウェアである。
【００２４】
請求項２０記載の発明（記録媒体）は、請求項１乃至８のいずれか１項に記載のソフトウェア開発装置又は請求項９乃至１６のいずれか１項に記載のソフトウェア開発方法により開発されたソフトウェアが記録された記録媒体である。
【００２５】
請求項２１記載の発明（画像形成装置）は、請求項１乃至８のいずれか１項に記載のソフトウェア開発装置又は請求項９乃至１６のいずれか１項に記載のソフトウェア開発方法により開発されたソフトウェアが実装された画像形成装置である。
【００２６】
請求項２２記載の発明（電気機器）は、請求項１乃至８のいずれか１項に記載のソフトウェア開発装置又は請求項９乃至１６のいずれか１項に記載のソフトウェア開発方法により開発されたソフトウェアが実装された電気機器である。
【００２７】
請求項１記載の発明（ソフトウェア開発装置）によれば、オブジェクトの状態モデルの継承によりオブジェクトの機能拡張を表現するような「状態遷移図」からフレームワークをカスタマイズするための「ソフトウェア」が生成されるため、オブジェクト指向を導入してソフトウェアを開発する際の効率性が向上される。開発者は、単にフレームワークをカスタマイズするためのソフトウェアを開発すればよいうえ、オブジェクトの状態モデルの継承によりオブジェクトの機能拡張を表現するという簡単な編集操作でこれを実現することができるからである。これによって、開発時間の短縮，開発労力の軽減，論理矛盾の回避（論理矛盾が発生しないように継承規則を設定する等）等が実現可能になる。
【００２８】
請求項９記載の発明（ソフトウェア開発方法）によれば、オブジェクトの状態モデルの継承によりオブジェクトの機能拡張を表現するような「状態遷移図」からフレームワークをカスタマイズするための「ソフトウェア」が生成されるため、オブジェクト指向を導入してソフトウェアを開発する際の効率性が向上される。開発者は、単にフレームワークをカスタマイズするためのソフトウェアを開発すればよいうえ、オブジェクトの状態モデルの継承によりオブジェクトの機能拡張を表現するという簡単な編集操作でこれを実現することができるからである。これによって、開発時間の短縮，開発労力の軽減，論理矛盾の回避（論理矛盾が発生しないように継承規則を設定する等）等が実現可能になる。
【発明の効果】
【００２９】
このように、本発明は、オブジェクト指向を導入してソフトウェアを開発する際の効率性を向上させることを可能にする。
【発明を実施するための最良の形態】
【００３０】
図１は、本発明の実施例に該当するＰＣ１０１を表す。図１のＰＣ１０１は、ＰＣ本体１１１と、ディスプレイ１１２と、キーボード１１３と、マウス１１４等により構成されている。ＰＣ本体１１１には、図２のように、ＣＰＵ１２１と、ＲＯＭ１２２と、ＲＡＭ１２３と、ＨＤＤ１２４と、ＭＯＤＥＭ１２５と、ＮＩＣ１２６等が存在する。ＨＤＤ１２４には、図３のように、ＯＳ（オペレーティングシステム）１３１と、ＳＤＫ（ソフトウェア開発キット）１３２等がインストールされている。
【００３１】
ＳＤＫ１３２は、電気機器用のソフトウェアを開発するためのアプリケーションプログラムであり、電気機器（ソフトウェア）の状態遷移図の編集操作を行うための編集画面を提供する機能（編集画面提供機能）や、電気機器（ソフトウェア）の状態遷移図から電気機器用のソフトウェアを生成する機能（ソフトウェア生成機能）等を備えている。ＳＤＫ１３２は例えば、当該ＳＤＫ１３２のダウンロードや当該ＳＤＫ１３２が記録されたＣＤ−ＲＯＭにより、電気機器のメーカーから電気機器のベンダーに提供されることになる。ＳＤＫ１３２により開発されたソフトウェアは例えば、当該ソフトウェアのダウンロードや当該ソフトウェアが記録されたＣＤ−ＲＯＭにより、電気機器にインストール（実装）されることになる。電気機器の例としては、コピー／プリンタ／スキャナ／ファクシミリ／複合機／融合機等の画像形成装置が挙げられる。
【００３２】
ＳＤＫ１３２は、状態遷移図から所定言語で記述されたソフトウェアを自動生成する。所定言語の例としては、Ｊａｖａ（登録商標）言語やＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）が挙げられる。前者の特徴としては、オブジェクト指向言語である点などが挙げられる。後者の特徴としては、理解が容易な言語である点などが挙げられる。ＳＤＫ１３２は、後者の場合にはＵＭＬドローイングツールと同様にして、ＸＭＩ（ＸＭＬ  Ｍｅｔａｄａｔａ  Ｉｎｔｅｒｃｈａｎｇｅ）に基づいて、状態遷移図からＸＭＬで記述されたソフトウェアを自動生成する。
【００３３】
ＳＤＫ１３２の詳細について説明する。ＳＤＫ１３２によって生成されるソフトウェアは、上記の電気機器内のフレームワークをカスタマイズするためのソフトウェアである。上記の編集画面では、オブジェクトの状態モデルの継承によってオブジェクトの機能拡張を表現するような状態遷移図の編集操作を行うことができる。そして、上記の編集画面で編集された状態遷移図から、上記の電気機器内のフレームワークをカスタマイズするためのソフトウェアが生成されるのである。なお、上記の電気機器内には、当該電気機器用のソフトウェアのフレームワークやクラスライブラリを実装させておく。電気機器用のソフトウェアのフレームワークとは、電気機器用のソフトウェアの雛形となる半完成のソフトウェアであり、電気機器用のソフトウェアのクラスライブラリとは、電気機器用のソフトウェアの部品となるクラスのライブラリである。図４のように、フレームワークの役割はソフトウェアの上位層を提供することであり、クラスライブラリの役割はソフトウェアの下位層を提供することである。
【００３４】
ＳＤＫ１３２の詳細について補足しておく。フレームワークは、状態の振る舞いを登録することで状態遷移図を忠実に再現することができる状態遷移クラスを使用して実装する。オブジェクトの振る舞いは、有限状態マシン（ＦＳＭ）を使用してモデリングする。オブジェクトの状態モデルの継承規則は、親を子が否定することがないように、以下の９項目のように設定する。１）親から子に状態と遷移を追加可。２）親で定義された状態と遷移を子で削除不可。３）親で定義された状態の入場処理と退場処理を子で追加可。４）親で定義された遷移の遷移先を子で変更可。５）アクションとアクティビティを追加可。６）アクションとアクティビティを削除可。７）アクションとアクティビティをサブクラスで特化可。８）サブ状態はスーパー状態を変更不可。９）継承状態に直交するコンポネントを追加可。
【００３５】
ＳＤＫ１３２の詳細について具体例を交えて説明する。具体例としては、図５のようなＣＤプレイヤの操作パネル２０１を取り上げる。ＣＤプレイヤの操作パネル２０１には、停止ボタン２１１と再生ボタン２１２が存在する。停止ボタン２１１は、ＣＤの停止操作を行うためのボタンである。再生ボタン２１２は、ＣＤの再生操作を行うためのボタンである。
【００３６】
図６は、ＣＤプレイヤ（Ｐｌａｙｅｒ１）の状態遷移図である。図６の状態遷移図は、ＣＤプレイヤの状態遷移図の雛形として上記の編集画面に表示される状態遷移図であり、ＣＤプレイヤの標準的機能を表現した状態遷移図である。図６の状態遷移図のデータファイルが、ＳＤＫ１３２の管理下に置かれているものとする。Ｓｔｏｐ状態２２１は、ＣＤプレイヤが停止中の状態である。Ｐｌａｙ状態２２２は、ＣＤプレイヤが再生中の状態である。
【００３７】
Ｐｌａｙｅｒ１の機能は次の通りである。Ｐｌａｙｅｒ１がＳｔｏｐ状態２２１にある際にＰｌａｙｅｒ１の再生ボタン２１２が押下（イベント）されると、Ｐｌａｙｅｒ１の状態がＳｔｏｐ状態２２１からＰｌａｙ状態２２２に遷移して、ＣＤの再生が開始（アクション）される。Ｐｌａｙｅｒ１がＰｌａｙ状態２２２にある際にＰｌａｙｅｒ１の停止ボタン２１１が押下（イベント）されると、Ｐｌａｙｅｒ１の状態がＰｌａｙ状態２２２からＳｔｏｐ状態２２１に遷移して、ＣＤの再生が停止（アクション）する。
【００３８】
図７は、ＣＤプレイヤ（Ｐｌａｙｅｒ１）用のソフトウェアに係るクラスである。図７Ａは、ＣＤプレイヤ操作クラスである。ＣＤプレイヤを操作するためのクラスである。図７Ｂは、ボタンメッセージクラスである。ボタン押下イベントを格納するためのクラスである。図７Ｃは、ボタン検証クラスである。ボタン押下イベントが状態遷移を引き起こすか否かを検証するためのクラスである。図７Ｄは、ＣＤプレイヤ操作アクションクラスである。状態遷移時のアクションを定義するためのクラスである。図７Ｅは、再生クラスである。ＣＤを再生するためのクラスである。
【００３９】
以上説明した内容（Ｐｌａｙｅｒ１）は、ＣＤプレイヤ内のフレームワーク（図７）とこれに対応する状態遷移図（図６）に関する。以下説明する内容（Ｐｌａｙｅｒ２，３，４，５）は、ＣＤプレイヤ内のフレームワークをカスタマイズするためのソフトウェアとこれに対応する状態遷移図に関する。当該状態遷移図から当該ソフトウェアが生成されるのである。
【００４０】
図８は、ＣＤプレイヤ（Ｐｌａｙｅｒ２）の状態遷移図である。図８の状態遷移図は、図６の状態遷移図を元に上記の編集画面で編集された状態遷移図であり、図６のＣＤプレイヤ（Ｐｌａｙｅｒ１）の状態モデルの継承によって図６のＣＤプレイヤ（Ｐｌａｙｅｒ１）の機能拡張を表現した状態遷移図である。
【００４１】
Ｐｌａｙｅｒ１からＰｌａｙｅｒ２への機能拡張は次の通りである。Ｐｌａｙｅｒ２がＳｔｏｐ状態２２１にある際にＰｌａｙｅｒ２の再生ボタン２１２が押下（イベント）されると、Ｐｌａｙｅｒ２の状態がＳｔｏｐ状態２２１からＰｌａｙ状態２２２に遷移し、Ｐｌａｙｅｒ２の再生ボタン２１２・停止ボタン２１１がそれぞれ点灯・消灯（アクション）する。Ｐｌａｙｅｒ２がＰｌａｙ状態２２２にある際にＰｌａｙｅｒ２の停止ボタン２１１が押下（イベント）されると、Ｐｌａｙｅｒ２の状態がＰｌａｙ状態２２２からＳｔｏｐ状態２２１に遷移して、Ｐｌａｙｅｒ２の停止ボタン２１１・再生ボタン２１２がそれぞれ点灯・消灯（アクション）する。
【００４２】
Ｐｌａｙｅｒ１からＰｌａｙｅｒ２への機能拡張は、Ｐｌａｙｅｒ１からＰｌａｙｅｒ２への状態モデルの継承によって、状態遷移図で次のようにして表現することができる。１）Ｓｔｏｐ状態２２１の入力処理で停止ボタン２１１を点灯する点灯処理を追加する。２）Ｓｔｏｐ状態２２１の退場処理で停止ボタン２１１を消灯する消灯処理を追加する。３）Ｐｌａｙ状態２２２の入力処理で再生ボタン２１２を点灯する点灯処理を追加する。４）Ｐｌａｙ状態２２２の退場処理で再生ボタン２１２を消灯する消灯処理を追加する。
【００４３】
図９は、ＣＤプレイヤ（Ｐｌａｙｅｒ２）用のソフトウェアに係るクラスである。図９Ａは、ライト操作クラスである。ライトを操作するためのクラスである。図９Ｂは、ライト付きＣＤプレイヤ操作クラスである。ライト付きＣＤプレイヤを操作するためのクラスである。図９Ｃは、Ｓｔｏｐ状態処理クラスである。Ｓｔｏｐ状態の入力処理や退場処理に関するクラスである。図９Ｄは、Ｐｌａｙ状態処理クラスである。Ｐｌａｙ状態の入力処理や退場処理に関するクラスである。図９Ｅは、ライト付き再生クラスである。ＣＤを再生するためのクラスである。
【００４４】
図１０は、ＣＤプレイヤ（Ｐｌａｙｅｒ３）の状態遷移図である。図１０の状態遷移図は、図６の状態遷移図を元に上記の編集画面で編集された状態遷移図であり、図６のＣＤプレイヤ（Ｐｌａｙｅｒ１）の状態モデルの継承によって図６のＣＤプレイヤ（Ｐｌａｙｅｒ１）の機能拡張を表現した状態遷移図である。Ｄｏｕｂｌｅ  Ｓｐｅｅｄ状態２２４は、ＣＤプレイヤが倍速再生中の状態である。
【００４５】
Ｐｌａｙｅｒ１からＰｌａｙｅｒ３への機能拡張は次の通りである。Ｐｌａｙｅｒ３がＰｌａｙ状態２２２にある際にＰｌａｙｅｒ３の再生ボタン２１２が押下（イベント）されると、Ｐｌａｙｅｒ３の状態がＰｌａｙ状態２２２からＤｏｕｂｌｅ  Ｓｐｅｅｄ状態２２４に遷移し、ＣＤの倍速再生が開始（アクション）される。Ｐｌａｙｅｒ３がＤｏｕｂｌｅ  Ｓｐｅｅｄ状態２２４にある際にＰｌａｙｅｒ３の再生ボタン２１２が押下（イベント）されると、Ｐｌａｙｅｒ３の状態がＤｏｕｂｌｅ  Ｓｐｅｅｄ状態２２４からＰｌａｙ状態２２２に遷移し、ＣＤの常速再生が開始（アクション）される。Ｐｌａｙｅｒ３がＤｏｕｂｌｅ  Ｓｐｅｅｄ状態２２４にある際にＰｌａｙｅｒ３の停止ボタン２１１が押下（イベント）されると、Ｐｌａｙｅｒ３の状態がＤｏｕｂｌｅ  Ｓｐｅｅｄ状態２２４からＳｔｏｐ状態２２１に遷移し、ＣＤの再生が停止（アクション）する。
【００４６】
図１１は、ＣＤプレイヤ（Ｐｌａｙｅｒ３）用のソフトウェアに係るクラスである。図１１Ａは、倍速再生機能付きＣＤプレイヤ操作クラスである。倍速再生機能付きＣＤプレイヤを操作するためのクラスである。図１１Ｂは、倍速再生アクションクラスである。倍速再生に係るアクションを実行するためのクラスである。図１１Ｃは、倍速再生機能付き再生クラスである。ＣＤを再生するためのクラスである。
【００４７】
図１２は、ＣＤプレイヤ（Ｐｌａｙｅｒ４）の状態遷移図である。図１２の状態遷移図は、図６の状態遷移図を元に上記の編集画面で編集された状態遷移図であり、図６のＣＤプレイヤ（Ｐｌａｙｅｒ１）の状態モデルの継承によって図６のＣＤプレイヤ（Ｐｌａｙｅｒ１）の機能拡張を表現した状態遷移図である。Ｎｏｒｍａｌ  Ｓｐｅｅｄ状態２２３は、ＣＤプレイヤが常速再生中の状態である。Ｄｏｕｂｌｅ  Ｓｐｅｅｄ状態２２４は、ＣＤプレイヤが倍速再生中の状態である。Ｎｏｒｍａｌ  Ｓｐｅｅｄ状態２２３とＤｏｕｂｌｅ  Ｓｐｅｅｄ状態２２４とは、Ｐｌａｙ状態２２２をスーパー状態とするサブ状態である。
【００４８】
Ｐｌａｙｅｒ１からＰｌａｙｅｒ４への機能拡張は次の通りである。Ｐｌａｙｅｒ４がＳｔｏｐ状態２２１にある際にＰｌａｙｅｒ４の再生ボタン２１２が押下（イベント）されると、Ｐｌａｙｅｒ４の状態がＳｔｏｐ状態２２１からＰｌａｙ状態２２２内のＮｏｒｍａｌ  Ｓｐｅｅｄ状態２２３に遷移し、ＣＤの常速再生が開始（アクション）される。Ｐｌａｙｅｒ４がＰｌａｙ状態２２２内のＮｏｒｍａｌ  Ｓｐｅｅｄ状態２２３にある際にＰｌａｙｅｒ４の再生ボタン２１２が押下（イベント）されると、Ｐｌａｙｅｒ４の状態がＰｌａｙ状態２２２内のＮｏｒｍａｌ  Ｓｐｅｅｄ状態２２３からＰｌａｙ状態２２２内のＤｏｕｂｌｅ  Ｓｐｅｅｄ状態２２４に遷移して、ＣＤの倍速再生が開始（アクション）される。Ｐｌａｙｅｒ４がＰｌａｙ状態２２２内のＤｏｕｂｌｅ  Ｓｐｅｅｄ状態２２４にある際にＰｌａｙｅｒ４の再生ボタン２１２が押下（イベント）されると、Ｐｌａｙｅｒ４の状態がＰｌａｙ状態２２２内のＤｏｕｂｌｅ  Ｓｐｅｅｄ状態２２４からＰｌａｙ状態２２２内のＮｏｒｍａｌ  Ｓｐｅｅｄ状態２２３に遷移し、ＣＤの常速再生が開始（アクション）される。Ｐｌａｙｅｒ４がＰｌａｙ状態２２２内のＮｏｒｍａｌ  Ｓｐｅｅｄ状態２２３又はＤｏｕｂｌｅ  Ｓｐｅｅｄ状態２２４にある際にＰｌａｙｅｒ４の停止ボタン２１１が押下（イベント）されると、Ｐｌａｙｅｒ４の状態がＰｌａｙ状態２２２内のＮｏｒｍａｌ  Ｓｐｅｅｄ状態２２３又はＤｏｕｂｌｅ  Ｓｐｅｅｄ状態２２４からＳｔｏｐ状態２２１に遷移して、ＣＤの再生が停止（アクション）する。
【００４９】
Ｐｌａｙｅｒ１からＰｌａｙｅｒ３への機能拡張とＰｌａｙｅｒ１からＰｌａｙｅｒ４への機能拡張とは、実体面で同一であるが形式面で相違する。すなわち、Ｐｌａｙｅｒ１からＰｌａｙｅｒ３への機能拡張は、既存の状態とは別個の状態の追加により表現されているが、Ｐｌａｙｅｒ１からＰｌａｙｅｒ４への機能拡張は、既存の状態をスーパー状態とするサブ状態の追加により表現されている。
【００５０】
図１３は、ＣＤプレイヤ（Ｐｌａｙｅｒ４）用のソフトウェアに係るクラスである。図１３Ａは、再生速度調整クラスである。再生速度を調整するためのクラスである。図１３Ｂは、再生速度調整機能付き再生クラスである。ＣＤを再生するためのクラスである。
【００５１】
図１４は、ＣＤプレイヤ（Ｐｌａｙｅｒ５）の状態遷移図である。図１４の状態遷移図は、図１２の状態遷移図を元に上記の編集画面で編集された状態遷移図であり、図１２のＣＤプレイヤ（Ｐｌａｙｅｒ４）の状態モデルの継承により図１２のＣＤプレイヤ（Ｐｌａｙｅｒ４）の機能拡張を表現した状態遷移図である。Ｖｏｌｕｍｅ状態２２５内のＨｉｇｈ状態２２６は、ＣＤプレイヤが音量「大」で再生中の状態である。Ｖｏｌｕｍｅ状態２２５内のＬｏｗ状態２２７は、ＣＤプレイヤが音量「小」で再生中の状態である。Ｖｏｌｕｍｅ状態２２５は、Ｐｌａｙ状態２２２をスーパー状態とするサブ状態である。Ｈｉｇｈ状態２２６とＬｏｗ状態２２７とは、Ｖｏｌｕｍｅ状態２２５をスーパー状態とするサブ状態である。
【００５２】
Ｐｌａｙｅｒ４からＰｌａｙｅｒ５への機能拡張は次の通りである。Ｐｌａｙｅｒ５がＰｌａｙ状態２２２にある際にＰｌａｙｅｒ５の「音量Ｕｐボタン」が押下（イベント）されると、Ｐｌａｙｅｒ５のＶｏｌｕｍｅ状態２２５がＨｉｇｈ状態２２６になり、ＣＤが音量「大」で再生（アクション）されることになる。Ｐｌａｙｅｒ５がＰｌａｙ状態２２２にある際にＰｌａｙｅｒ５の「音量Ｄｏｗｎボタン」が押下（イベント）されると、Ｐｌａｙｅｒ５のＶｏｌｕｍｅ状態２２５がＬｏｗ状態２２７になり、ＣＤが音量「小」で再生（アクション）されることになる。
【００５３】
図１５は、ＣＤプレイヤ（Ｐｌａｙｅｒ５）用のソフトウェアに係るクラスである。図１５Ａは、再生音量調整機能付きＣＤプレイヤ操作クラスである。再生音量調整機能付きＣＤプレイヤを操作するためのクラスである。図１５Ｂは、再生音量調整アクションクラスである。再生音量調整に係るアクションを実行するためのクラスである。図１５Ｃは、再生音量調整クラスである。再生音量を調整するためのクラスである。図１５Ｄは、再生音量調整機能付き再生クラスである。ＣＤを再生するためのクラスである。
【００５４】
なお、ＣＤプレイヤ用のソフトウェアとして、図５−図１５ではＪａｖａ（登録商標）言語で記述されたソフトウェアについて説明してきたが、ＣＤプレイヤ用のソフトウェアは、図１６−図２０のようにＸＭＬで記述されたソフトウェアであってもよい。図１６−図２０は、ＸＭＩに基づいて生成されたＣＤプレイヤ用のソフトウェアのソースコードである。
【００５５】
以上、電気機器の具体例として「ＣＤプレイヤ」を取り上げたが、以下、電気機器の他の具体例として「スキャナ装置」を取り上げる。図２１は、ＣＤプレイヤの状態モデルの継承関係を表し、図２２は、スキャナ装置の状態モデルの継承関係を表す。図２１の内容は、図５−図１５で説明した内容そのものであり、図２２の内容は、図５−図１５で説明した内容を転用したものとなっている。
【００５６】
図２３は、ＣＤプレイヤの操作パネルとスキャナ装置の操作パネルの対応関係を表す。ＣＤプレイヤの「停止ボタン」はスキャナ装置の「キャンセルボタン」に対応する。ＣＤプレイヤの「再生ボタン」はスキャナ装置の「スキャンボタン」に対応する。
【００５７】
キャンセルボタンは、スキャン処理のキャンセル操作を行うためのボタンである。スキャンボタンは、スキャン処理の開始操作を行うためのボタンである。
【００５８】
図２４は、ＣＤプレイヤの状態モデルとスキャナ装置の状態モデルの対応関係を表す。ＣＤプレイヤの「Ｓｔｏｐ状態２２１」はスキャナ装置の「Ｉｄｌｅ状態２３１」に対応する。ＣＤプレイヤの「Ｐｌａｙ状態２２２」はスキャナ装置の「Ｓｃａｎ状態２３２」に対応する。ＣＤプレイヤの「Ｎｏｒｍａｌ  Ｓｐｅｅｄ状態２２３」は、スキャナ装置の「Ｓｉｎｇｌｅ状態２３３」に対応する。ＣＤプレイヤの「Ｄｏｕｂｌｅ  Ｓｐｅｅｄ状態２２４」は、スキャナ装置の「Ｄｕｐｌｅｘ状態２３４」に対応する。ＣＤプレイヤの「Ｖｏｌｕｍｅ状態２２５」は、スキャナ装置の「Ｃｏｍｂｉｎｅ状態２３５」に対応する。ＣＤプレイヤの「Ｈｉｇｈ状態２２６」はスキャナ装置の「１ｉｎ１状態２３６」に対応する。ＣＤプレイヤの「Ｌｏｗ状態２２７」はスキャナ装置の「２ｉｎ１状態２３７」に対応する。
【００５９】
Ｉｄｌｅ状態２３１は、スキャナ装置がアイドル中の状態である。Ｓｃａｎ状態２３２は、スキャナ装置がスキャン中の状態である。Ｓｉｎｇｌｅ状態２３３は、スキャナ装置が片面スキャン中の状態である。Ｄｕｐｌｅｘ状態２３４は、スキャナ装置が両面スキャン中の状態である。Ｃｏｍｂｉｎｅ状態２３５内の１ｉｎ１状態２３６は、スキャナ装置が「１ｉｎ１（１原稿を１頁に）集約」でスキャン中の状態である。Ｃｏｍｂｉｎｅ状態２３５内の２ｉｎ１状態２３７は、スキャナ装置が「２ｉｎ１（２原稿を１頁に）集約」でスキャン中の状態である。
【００６０】
Ｓｃａｎｎｅｒ１の機能は以下の通りである。Ｓｃａｎｎｅｒ１がＩｄｌｅ状態２３１にある際にＳｃａｎｎｅｒ１のスキャンボタンが押下（イベント）されると、Ｓｃａｎｎｅｒ１の状態がＩｄｌｅ状態２３１からＳｃａｎ状態２３２に遷移して、スキャン処理が開始（アクション）される。Ｓｃａｎｎｅｒ１がＳｃａｎ状態２３２にある際にＳｃａｎｎｅｒ１のキャンセルボタンが押下（イベント）されると、Ｓｃａｎｎｅｒ１の状態がＳｃａｎ状態２３２からＩｄｌｅ状態２３１に遷移して、スキャン処理がキャンセル（アクション）される。
【００６１】
Ｓｃａｎｎｅｒ１からＳｃａｎｎｅｒ４への機能拡張は以下の通りである。Ｓｃａｎｎｅｒ４がＩｄｌｅ状態２３１にある際にＳｃａｎｎｅｒ４のスキャンボタンが押下（イベント）されると、Ｓｃａｎｎｅｒ４の状態がＩｄｌｅ状態２３１からＳｃａｎ状態２３２内のＳｉｎｇｌｅ状態２３３に遷移し、片面スキャン処理が開始（アクション）される。Ｓｃａｎｎｅｒ４がＳｃａｎ状態２３２内のＳｉｎｇｌｅ状態２３３にある際にＳｃａｎｎｅｒ４のスキャンボタンが押下（イベント）されると、Ｓｃａｎｎｅｒ４の状態がＳｃａｎ状態２３２内のＳｉｎｇｌｅ状態２３３からＳｃａｎ状態２３２内のＤｕｐｌｅｘ状態２３４に遷移して、両面スキャン処理が開始（アクション）される。Ｓｃａｎｎｅｒ４がＳｃａｎ状態２３２内のＤｕｐｌｅｘ状態２３４にある際にＳｃａｎｎｅｒ４のＳｃａｎボタンが押下（イベント）されると、Ｓｃａｎｎｅｒ４の状態がＳｃａｎ状態２３２内のＤｕｐｌｅｘ状態２３４からＳｃａｎ状態２３２内のＳｉｎｇｌｅ状態２３３に遷移し、片面スキャン処理が開始（アクション）される。Ｓｃａｎｎｅｒ４がＳｃａｎ状態２３２内のＳｉｎｇｌｅ状態２３３又はＤｕｐｌｅｘ状態２３４にある際にＳｃａｎｎｅｒ４のキャンセルボタンが押下（イベント）されると、Ｓｃａｎｎｅｒ４の状態がＳｃａｎ状態２３２内のＳｉｎｇｌｅ状態２３３又はＤｕｐｌｅｘ状態２３４からＩｄｌｅ状態２３１に遷移して、スキャン処理がキャンセル（アクション）される。
【００６２】
Ｓｃａｎｎｅｒ４からＳｃａｎｎｅｒ５への機能拡張は以下の通りである。Ｓｃａｎｎｅｒ５がＳｃａｎ状態２３２にある際にＳｃａｎｎｅｒ５のテンキー「１」が押下（イベント）されると、Ｓｃａｎｎｅｒ５のＣｏｍｂｉｎｅ状態２３５が１ｉｎ１状態２３６になり、スキャン処理が「１ｉｎ１」で実行（アクション）されることになる。Ｓｃａｎｎｅｒ５がＳｃａｎ状態２３２にある際にＳｃａｎｎｅｒ５のテンキー「２」が押下（イベント）されると、Ｓｃａｎｎｅｒ５のＣｏｍｂｉｎｅ状態２３５が２ｉｎ１状態２３７になり、スキャン処理が「２ｉｎ１」で実行（アクション）されることになる。
【００６３】
以上、電気機器の具体例として「スキャナ装置」を挙げたが、電気機器の他の具体例としては「コピー機」を挙げることができる。図２１−図２４で説明した内容に付き、原稿から読み取った画像を蓄積するか印刷するかの違いである。
【００６４】
（融合機）
以下、ＳＤＫ１３２によって開発されたソフトウェアが実装された電気機器の具体例として「融合機」を取り上げる。
【００６５】
図２５は、本発明の実施例に該当する融合機３０１を表す。図２５の融合機３０１は、種々のハードウェア３１１と、種々のソフトウェア３１２と、融合機起動部３１３により構成される。図２５の融合機３０１は、コピーやプリンタやスキャナやファクシミリとして機能することができる。
【００６６】
融合機３０１のハードウェア３１１としては、撮像部３２１と、印刷部３２２と、その他のハードウェア３２３が存在する。
【００６７】
撮像部３２１は、原稿から画像（画像データ）を読み取るためのハードウェアであり、コピーやスキャナやファクシミリとして機能する際に使用される。撮像部３２１は、白黒画像用の物でもカラー画像用の物でもよい。撮像部３２１は、原稿に関する機構として、原稿セット部等を備える。
【００６８】
印刷部３２２は、画像（画像データ）を印刷用紙等の印刷媒体に印刷するためのハードウェアであり、コピーやプリンタやファクシミリとして機能する際に使用される。印刷部３２２は、白黒画像用の物でもカラー画像用の物でもよい。印刷部３２２は、ここでは電子写真方式を採用しており、感光体、帯電機、露光機、現像機、転写機、定着機等を備える。印刷部３２２は、印刷用紙等に関する機構として、給紙部、排紙部、印刷用紙等搬送機構等を備える。
【００６９】
その他のハードウェア３２３については、図２６において説明する。
【００７０】
融合機３０１のソフトウェア３１２としては、種々のアプリケーション３３１と、種々のプラットフォーム３３２が存在する。これらのプログラムは、ＵＮＩＸ（登録商標）等のＯＳ（オペレーティングシステム）によりプロセス単位で並列的に実行される。
【００７１】
アプリケーション３３１は、コピーやプリンタやスキャナやファクシミリ等の機能に固有な情報処理を実行するためのソフトウェアである。アプリケーション３３１としては、コピー用のアプリケーションであるコピーアプリ３４１と、プリンタ用のアプリケーションであるプリンタアプリ３４２と、スキャナ用のアプリケーションであるスキャナアプリ３４３と、ファクシミリ用のアプリケーションであるファクシミリアプリ３４４と、ネットワークファイル用のアプリケーションであるネットワークファイルアプリ３４５が存在する。ネットワークファイルアプリ３４５は、ＨＴＭＬ文書等の閲覧用のＷｅｂブラウザや、ＨＴＭＬ文書等の配信用のＷｅｂサーバソフトにより構成される。
【００７２】
アプリケーション３３１は、専用のＳＤＫ（ソフトウェア開発キット）を使用して開発することができる。ＳＤＫを使用して開発したアプリケーション３３１をＳＤＫアプリと呼ぶ。専用のＳＤＫとしては、Ｃ言語でアプリケーション３３１を開発するための「ＣＳＤＫ」や、Ｊａｖａ（登録商標）言語等でアプリケーション３３１を開発するための「ＪＳＤＫ」が提供される。ＣＳＤＫを使用して開発したアプリケーション３３１を「ＣＳＤＫアプリ」と呼び、ＪＳＤＫを使用して開発したアプリケーション３３１を「ＪＳＤＫアプリ」と呼ぶ。図２５の融合機３０１にも、ＣＳＤＫアプリ３４６と、ＪＳＤＫアプリ３４７が存在する。図２５の融合機３０１にはさらに、Ｊａｖａ（登録商標）言語等で記述されたＪＳＤＫアプリ３４７とＣ言語で記述されたその他のソフトウェア３１２との仲介を行うソフトウェア３１２として、ＪＳＤＫプラットフォーム３４８が存在する。
【００７３】
プラットフォーム３３２は、アプリケーション３３１からの処理要求に関する情報処理を実行するためのソフトウェアである。アプリケーション３３１からの処理要求の受信には、予め定義されている関数により処理要求を受信するアプリケーションプログラムインタフェース（ＡＰＩ）３３３を利用して、要求内容の実施には、エンジンインタフェース３３４を利用する。プラットフォーム３３２としては、種々のコントロールサービス３５１と、システムリソースマネージャ３５２と、種々のハンドラ３５３が存在する。
【００７４】
コントロールサービス３５１は、アプリケーション３３１からの処理要求を解釈して、解釈結果に応じてハードウェア３１１の獲得要求を発生させる。コントロールサービス３５１としては、ネットワークコントロールサービス（ＮＣＳ）３６１と、ファクシミリコントロールサービス（ＦＣＳ）３６２と、デリバリコントロールサービス（ＤＣＳ）３６３と、エンジンコントロールサービス（ＥＣＳ）３６４と、メモリコントロールサービス（ＭＣＳ）３６５と、オペレーションパネルコントロールサービス（ＯＣＳ）３６６と、サーティフィケーションコントロールサービス（ＣＣＳ）３６７と、ユーザディレクトリコントロールサービス（ＵＣＳ）３６８と、システムコントロールサービス（ＳＣＳ）３６９が存在する。
【００７５】
ＮＣＳ３６１のプロセスは、ネットワーク等を介してデータ通信を行うための仲介を行う。ＦＣＳ３６２のプロセスは、ファクシミリとして画像データ通信・画像データ読取・画像データ印刷等を行うためのＡＰＩを提供する。ＤＣＳ３６３のプロセスは、融合機３０１に蓄積された文書データの配信に関する制御を行う。ＥＣＳ３６４のプロセスは、撮像部３２１や印刷部３２２等のエンジン部に関する制御を行う。ＭＣＳ３６５のプロセスは、画像データ記憶・画像データ処理等のメモリやハードディスクドライブに関する制御を行う。ＯＣＳ３６６のプロセスは、オペレーションパネルに関する制御を行う。ＣＣＳ３６７のプロセスは、認証処理や課金処理に関する制御を行う。ＵＣＳ３６８のプロセスは、ユーザ情報の管理に関する制御を行う。ＳＣＳ３６９のプロセスは、システムの管理に関する制御を行う。
【００７６】
システムリソースマネージャ（ＳＲＭ）３５２は、ハードウェア３１１の獲得要求を調停して、調停結果に応じて要求内容を実施するための制御を行う。詳細に言うと、ＳＲＭ３５２のプロセスは、獲得要求に係るハードウェア３１１が利用可能か否か（他の獲得要求と競合しないか否か）を判定して、利用可能である場合にはその旨をコントロールサービス３５１の各プロセスに通知する。さらに、獲得要求に係るハードウェア３１１の利用スケジュールを作成して、作成結果に応じて要求内容を実施するための制御を行う。
【００７７】
ハンドラ３５３は、調停結果に応じてハードウェア３１１を管理する。ハンドラ３５３としては、ファクシミリコントロールユニットハンドラ（ＦＣＵＨ）３７１と、イメージメモリハンドラ（ＩＭＨ）３７２が存在する。ＦＣＵＨ３７１は、ファクシミリコントロールユニットを管理する。ＩＭＨ３７２は、各プロセスにメモリを割り振り、各プロセスに割り振ったメモリを管理する。
【００７８】
アプリケーション３３１とプラットフォーム３３２の仲介を行うソフトウェア３１２として、仮想アプリケーションサービス（ＶＡＳ）３３５が存在する。ＶＡＳ３３５は、アプリケーション３３１をクライアントとするサーバプロセスとして動作すると共に、プラットフォーム３３２をサーバとするクライアントプロセスとして動作する。ＶＡＳ３３５は、アプリケーション３３１から見てプラットフォーム３３２を隠蔽するラッピング機能を備え、プラットフォーム３３２のバージョンアップに伴うバージョン差を吸収する役割等を担う。
【００７９】
融合機起動部３１３は、融合機３０１の電源投入時に最初に実行される。これにより、ＵＮＩＸ（登録商標）等のＯＳが起動され、アプリケーション３３１やプラットフォーム３３２が起動される。これらのプログラムは、ハードディスクドライブやメモリカードに蓄積されており、ハードディスクドライブやメモリカードから再生されて、メモリに起動されることになる。
【００８０】
図２６は、図２５の融合機３０１に係るハードウェア構成図である。融合機３０１のハードウェア３１１としては、コントローラ４０１と、オペレーションパネル４０２と、ファクシミリコントロールユニット（ＦＣＵ）４０３と、撮像部３２１と、印刷部３２２が存在する。撮像部３２１と印刷部３２２を除く各構成要素が、図２５の「その他のハードウェア３２３」に該当する。
【００８１】
コントローラ４０１は、ＣＰＵ４１１と、ＡＳＩＣ４１２と、ＮＢ（ノースブリッジ）４２１と、ＳＢ（サウスブリッジ）４２２と、ＭＥＭ−Ｐ（システムメモリ）４３１と、ＭＥＭ−Ｃ（ローカルメモリ）４３２と、ＨＤＤ（ハードディスクドライブ）４３３と、メモリカードスロット４３４と、ＮＩＣ（ネットワークインタフェースコントローラ）４４１と、ＵＳＢデバイス４４２と、ＩＥＥＥ１３９４デバイス４４３と、セントロニクスデバイス４４４により構成される。
【００８２】
ＣＰＵ４１１は、種々の情報処理を実行するためのＩＣであり、アプリケーション３３１やプラットフォーム３３２をＵＮＩＸ（登録商標）等のＯＳによりプロセス単位で並列的に実行する。ＡＳＩＣ４１２は、画像処理用のＩＣである。ＮＢ４２１は、ＣＰＵ４１１とＡＳＩＣ４１２を接続するためのブリッジである。ＳＢ４２２は、ＮＢ４２１と周辺機器等を接続するためのブリッジである。ＡＳＩＣ４１２とＮＢ４２１は、ＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）を介して接続されている。
【００８３】
ＭＥＭ−Ｐ４３１は、ＮＢ４２１に接続されたメモリである。ＭＥＭ−Ｃ４３２は、ＡＳＩＣ４１２に接続されたメモリである。ＨＤＤ４３３は、ＡＳＩＣ４１２に接続されたストレージであり、画像データ蓄積・文書データ蓄積・プログラム蓄積・フォントデータ蓄積・フォームデータ蓄積等を行うために使用される。メモリカードスロット４３４は、ＳＢ４２２に接続されたスロットであり、メモリカード４３５をセット（挿入）するために使用される。
【００８４】
ＮＩＣ４４１は、ネットワーク等を介してＭＡＣアドレス等を使用したデータ通信を行うためのコントローラである。ＵＳＢデバイス４４２は、ＵＳＢ規格に準拠したシリアルポートを提供するためのデバイスである。ＩＥＥＥ１３９４デバイス４４３は、ＩＥＥＥ１３９４規格に準拠したシリアルポートを提供するためのデバイスである。セントロニクスデバイス４４４は、セントロニクス仕様に準拠したパラレルポートを提供するためのデバイスである。ＮＩＣ４４１と、ＵＳＢデバイス４４２と、ＩＥＥＥ１３９４デバイス４４３と、セントロニクスデバイス４４４は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｅｃｔ）バスを介してＮＢ４２１とＳＢ４２２に接続されている。
【００８５】
オペレーションパネル４０２は、オペレータが融合機３０１に入力を行うためのハードウェア（操作部）であると共に、オペレータが融合機３０１から出力を得るためのハードウェア（表示部）である。オペレーションパネル４０２は、ＡＳＩＣ４１２に接続されている。ＦＣＵ４０３と、撮像部３２１と、印刷部３２２は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｅｃｔ）バスを介してＡＳＩＣ４１２に接続されている。
【００８６】
図２７は、図２５の融合機３０１に係る外観図である。図２７には、撮像部３２１の位置と、印刷部３２２の位置と、オペレーションパネル４０２の位置が図示されている。図２７にはまた、原稿をセットするための原稿セット部５０１と、印刷用紙等の給紙先となる給紙部５０２と、印刷用紙等の排紙先となる排紙部５０３が図示されている。原稿セット部５０１は、撮像部３２１の構成要素であり、給紙部５０２と排紙部５０３は、印刷部３２２の構成要素である。
【００８７】
オペレーションパネル４０２は、図２８のように、タッチパネル５１１と、テンキー５１２と、スタートボタン５１３と、リセットボタン５１４と、機能キー５１５と、初期設定ボタン５１６により構成される。
【００８８】
タッチパネル５１１は、タッチ操作で入力を行うためのハードウェア（タッチ操作部）であると共に、画面表示で出力を得るためのハードウェア（画面表示部）である。テンキー５１２は、キー操作で数字入力を行うためのハードウェアである。スタートボタン５１３は、ボタン操作でスタート操作を行うためのハードウェアである。リセットボタン５１４は、ボタン操作でリセット操作を行うためのハードウェアである。機能キー５１５は、キー操作でＣＳＤＫ３４６による操作画面やＪＳＤＫ３４７による操作画面を表示させるためのハードウェアである。初期設定ボタン５１６は、ボタン操作で初期設定画面を表示させるためのハードウェアである。
【００８９】
融合機３０１は、原稿セット部５０１に原稿がセットされている場合、スタートボタン５１３が押されることで、撮像部３２１によりその原稿から画像を読み取る。融合機３０１は、コピーとして機能する場合、印刷部３２２によりその画像を印刷用紙等に印刷することになり、ファクシミリとして機能する場合、ＦＣＵ４０３やＮＩＣ４４１によりその画像を電話回線やネットワーク等を介して他の機器に送信することになる。印刷用紙等の給紙先は給紙部５０２であり、印刷用紙等の排紙先は排紙部５０３である。
【００９０】
原稿セット部５０１は、ＡＤＦ（自動原稿搬送装置）５２１と、フラットベッド５２２と、フラットベッドカバー５２３により構成される。給紙部５０２は、４個の給紙トレイと１個の手差しトレイにより構成される。排紙部５０３は、１個の排紙トレイにより構成される。
【００９１】
ＡＤＦ５２１には、複数枚の原稿を重ねてセットすることができる。融合機３０１は、ＡＤＦ５２１に原稿がセットされている場合、スタートボタン５１３が押されることで、撮像部３２１によりその原稿から画像を読み取る。詳細に言うと、ＡＤＦ５２１に複数枚の原稿が重ねてセットされている場合、スタートボタン５１３が押されることで、ＡＤＦ５２１が、図２７の矢印のような経路で複数枚の原稿を１枚ずつ搬送し、撮像部３２１が、図２７の矢印のような経路で１枚ずつ搬送される原稿から画像を読み取る。
【００９２】
フラットベッド５２２には、原稿を下向きにセットする。融合機３０１は、フラットベッド５２２に原稿がセットされている場合、スタートボタン５１３が押されることで、撮像部３２１によりその原稿から画像を読み取る。詳細に言うと、フラットベッド５２２に原稿が下向きにセットされている場合、スタートボタン５１３が押されることで、撮像部３２１が、透明なフラットベッド５２２を介して対面する原稿から画像を読み取る。
【００９３】
図２９は、図２５のＪＳＤＫアプリ３４７とＪＳＤＫプラットフォーム３４８について説明するための図である。図２５の融合機３０１には、図２９のように、ＪＳＤＫアプリ３４７と、ＪＳＤＫプラットフォーム３４８と、融合機フレームワーク６０１と、融合機クラスライブラリ６０２が存在する。ＪＳＤＫがＳＤＫ１３２に相当し、ＪＳＤＫアプリ３４７がＳＤＫ１３２によって開発されたソフトウェアに相当する。
【００９４】
融合機フレームワーク６０１は、ロジックフレームワーク６１１と、ユーザインタフェースフレームワーク６１２等により構成される。ロジックフレームワーク６１１は、融合機３０１のロジック関連のフレームワークである。ユーザインタフェースフレームワーク６１２は、融合機３０１のユーザインタフェース関連のフレームワークである。ロジックフレームワーク６１１が融合機３０１の状態遷移を規定して、ユーザインタフェースフレームワーク６１２がこれに応じた融合機３０１の画面遷移を規定する。ユーザインタフェースフレームワーク６１２によって規定される画面の例として、融合機３０１のオぺレーションパネル４０２に表示される融合機３０１の操作パネルの例（図３０）を挙げておくことにする。
【００９５】
融合機クラスライブラリ６０２は、コピー関連のクラスであるコピークラス６２１と、プリンタ関連のクラスであるプリンタクラス６２２と、スキャナ関連のクラスであるスキャナクラス６２３と、ファクシミリ関連のクラスであるファクシミリクラス６２４と、ネットワーク関連のクラスであるネットクラス６２５と、オペレーションパネル関連のクラスであるパネルクラス６２６等により構成される。各クラスはロジック部分とパーツ部分に分離されている。
【００９６】
ＪＳＤＫアプリ１４７の状態遷移情報と画面遷移情報はロジックフレームワーク６１１に登録（Ｓ１・Ｓ２）され、ＪＳＤＫアプリ１４７の画面データはユーザインタフェースフレームワーク６１２に登録（Ｓ３）される。ＵＩ生成時においては、ロジックフレームワーク６１１のＵＩ情報管理部６１３からユーザインタフェースフレームワーク６１２のＵＩ生成部６１４に、ＪＳＤＫアプリ１４７の画面遷移情報が提供（Ｓ４）される。イベント発生時においては、ユーザインタフェースフレームワーク６１２のイベント通知部６１６からロジックフレームワーク６１１のイベント情報管理部６１５に、イベント発生が通知（Ｓ５）される。
【図面の簡単な説明】
【００９７】
【図１】ＰＣを表す。
【図２】ＰＣ本体を表す。
【図３】ＨＤＤを表す。
【図４】ソフトウェアの構造を概念的に表す概念図である。
【図５】ＣＤプレイヤの操作パネルを表す。
【図６】ＣＤプレイヤ（Ｐｌａｙｅｒ１）の状態遷移図である。
【図７】ＣＤプレイヤ（Ｐｌａｙｅｒ１）用のソフトウェアに係るクラスである。
【図８】ＣＤプレイヤ（Ｐｌａｙｅｒ２）の状態遷移図である。
【図９】ＣＤプレイヤ（Ｐｌａｙｅｒ２）用のソフトウェアに係るクラスである。
【図１０】ＣＤプレイヤ（Ｐｌａｙｅｒ３）の状態遷移図である。
【図１１】ＣＤプレイヤ（Ｐｌａｙｅｒ３）用のソフトウェアに係るクラスである。
【図１２】ＣＤプレイヤ（Ｐｌａｙｅｒ４）の状態遷移図である。
【図１３】ＣＤプレイヤ（Ｐｌａｙｅｒ４）用のソフトウェアに係るクラスである。
【図１４】ＣＤプレイヤ（Ｐｌａｙｅｒ５）の状態遷移図である。
【図１５】ＣＤプレイヤ（Ｐｌａｙｅｒ５）用のソフトウェアに係るクラスである。
【図１６】ＣＤプレイヤ用のソフトウェアのソースコード（１／５）である。
【図１７】ＣＤプレイヤ用のソフトウェアのソースコード（２／５）である。
【図１８】ＣＤプレイヤ用のソフトウェアのソースコード（３／５）である。
【図１９】ＣＤプレイヤ用のソフトウェアのソースコード（４／５）である。
【図２０】ＣＤプレイヤ用のソフトウェアのソースコード（５／５）である。
【図２１】ＣＤプレイヤの状態モデルの継承関係を表す。
【図２２】スキャナ装置の状態モデルの継承関係を表す。
【図２３】ＣＤプレイヤの操作パネルとスキャナ装置の操作パネルの対応関係を表す。
【図２４】ＣＤプレイヤの状態モデルとスキャナ装置の状態モデルの対応関係を表す。
【図２５】融合機を表す。
【図２６】融合機に係るハードウェア構成図である。
【図２７】融合機に係る外観図である。
【図２８】融合機のオペレーションパネルを表す。
【図２９】図２５のＪＳＤＫアプリとＪＳＤＫプラットフォームについて説明するための図である。
【図３０】融合機のオぺレーションパネルに表示される融合機の操作パネルの例を表す。
【符号の説明】
【００９８】
１０１  ＰＣ
１１１  ＰＣ本体
１１２  ディスプレイ
１１３  キーボード
１１４  マウス
１２１  ＣＰＵ
１２２  ＲＯＭ
１２３  ＲＡＭ
１２４  ＨＤＤ
１２５  ＭＯＤＥＭ
１２６  ＮＩＣ
１３１  ＯＳ
１３２  ＳＤＫ
２０１  操作パネル
２１１  停止ボタン
２１２  再生ボタン
２２１  Ｓｔｏｐ状態
２２２  Ｐｌａｙ状態
２２３  Ｎｏｒｍａｌ  Ｓｐｅｅｄ状態
２２４  Ｄｏｕｂｌｅ  Ｓｐｅｅｄ状態
２２５  Ｖｏｌｕｍｅ状態
２２６  Ｈｉｇｈ状態
２２７  Ｌｏｗ状態
２３１  Ｉｄｌｅ状態
２３２  Ｓｃａｎ状態
２３３  Ｓｉｎｇｌｅ状態
２３４  Ｄｕｐｌｅｘ状態
２３５  Ｃｏｍｂｉｎｅ状態
２３６  １ｉｎ１状態
２３７  ２ｉｎ１状態
３０１  融合機
３１１  ハードウェア
３１２  ソフトウェア
３１３  融合機起動部
３２１  撮像部
３２２  印刷部
３２３  その他のハードウェア
３３１  アプリケーション
３３２  プラットフォーム
３３３  アプリケーションプログラムインタフェース
３３４  エンジンインタフェース
３３５  仮想アプリケーションサービス
３４１  コピーアプリ
３４２  プリンタアプリ
３４３  スキャナアプリ
３４４  ファクシミリアプリ
３４５  ネットワークファイルアプリ
３４６  ＣＳＤＫアプリ
３４７  ＪＳＤＫアプリ
３４８  ＪＳＤＫプラットフォーム
３５１  コントロールサービス
３５２  システムリソースマネージャ
３５３  ハンドラ
３６１  ネットワークコントロールサービス
３６２  ファクシミリコントロールサービス
３６３  デリバリコントロールサービス
３６４  エンジンコントロールサービス
３６５  メモリコントロールサービス
３６６  オペレーションパネルコントロールサービス
３６７  サーティフィケーションコントロールサービス
３６８  ユーザディレクトリコントロールサービス
３６９  システムコントロールサービス
３７１  ファクシミリコントロールユニットハンドラ
３７２  イメージメモリハンドラ
４０１  コントローラ
４０２  オペレーションパネル
４０３  ファクシミリコントロールユニット
４１１  ＣＰＵ
４１２  ＡＳＩＣ
４２１  ＮＢ
４２２  ＳＢ
４３１  ＭＥＭ−Ｐ
４３２  ＭＥＭ−Ｃ
４３３  ＨＤＤ
４３４  メモリカードスロット
４３５  メモリカード
４４１  ＮＩＣ
４４２  ＵＳＢデバイス
４４３  ＩＥＥＥ１３９４デバイス
４４４  セントロニクスデバイス
５０１  原稿セット部
５０２  給紙部
５０３  排紙部
５１１  タッチパネル
５１２  テンキー
５１３  スタートボタン
５１４  リセットボタン
５１５  機能キー
５１６  初期設定ボタン
５２１  ＡＤＦ
５２２  フラットベッド
５２３  フラットベッドカバー
６０１  融合機フレームワーク
６０２  融合機クラスライブラリ
６１１  ロジックフレームワーク
６１２  ユーザインタフェースフレームワーク
６１３  ＵＩ情報管理部
６１４  ＵＩ生成部
６１５  イベント情報管理部
６１６  イベント通知部
６２１  コピークラス
６２２  プリンタクラス
６２３  スキャナクラス
６２４  ファクシミリクラス
６２５  ネットクラス
６２６  パネルクラス
【図１】
2005250974.tif 000003
【図２】
2005250974.tif 000004
【図３】
2005250974.tif 000005
【図４】
2005250974.tif 000006
【図５】
2005250974.tif 000007
【図６】
2005250974.tif 000008
【図７】
2005250974.tif 000009
【図８】
2005250974.tif 000010
【図９】
2005250974.tif 000011
【図１０】
2005250974.tif 000012
【図１１】
2005250974.tif 000013
【図１２】
2005250974.tif 000014
【図１３】
2005250974.tif 000015
【図１４】
2005250974.tif 000016
【図１５】
2005250974.tif 000017
【図１６】
2005250974.tif 000018
【図１７】
2005250974.tif 000019
【図１８】
2005250974.tif 000020
【図１９】
2005250974.tif 000021
【図２０】
2005250974.tif 000022
【図２１】
2005250974.tif 000023
【図２２】
2005250974.tif 000024
【図２３】
2005250974.tif 000025
【図２４】
2005250974.tif 000026
【図２５】
2005250974.tif 000027
【図２６】
2005250974.tif 000028
【図２７】
2005250974.tif 000029
【図２８】
2005250974.tif 000030
【図２９】
2005250974.tif 000031
【図３０】
2005250974.tif 000032