(57)【特許請求の範囲】
【請求項１】
画像形成装置のアプリケーションから呼び出されるインタフェースを有する第一のプログラムを有する外部装置とネットワークを介して接続される情報処理装置であって、
前記第一のプログラムが前記画像形成装置に実行させる処理をエミュレートするエミュレート手段を有し、
前記エミュレート手段は、
前記外部装置が有する前記第一のプログラムにおいて実装済みのインタフェースを示す情報を受信する受信手段と、
アプリケーションによるインタフェースの呼び出しに応じ、前記受信手段によって受信された情報に基づいて当該インタフェースが前記外部装置において実装済みであるか否かを判定する判定手段と、
実装済みであると判定された場合、前記インタフェースの実行要求を前記外部装置に送信する外部呼び出し手段と、
実装済みでないと判定された場合、前記アプリケーションによって呼び出された前記インタフェースのエミュレーションを実行する実行手段とを有する情報処理装置。
【請求項２】
前記受信手段は、前記情報の受信後、所定のタイミングで新たな前記情報を受信する請求項１記載の情報処理装置。
【請求項３】
前記エミュレート手段は、前記外部呼び出し手段による前記実行要求に対する前記外部装置からの応答が受信されない場合、前記アプリケーションによって呼び出された前記インタフェースのエミュレーションを実行する請求項１又は２記載の情報処理装置。
【請求項４】
前記外部呼び出し手段による前記インタフェースの実行要求の送信に応じ、前記外部装置において生成される表示データを該外部装置より取得し、表示装置に表示させる表示データ取得手段を有する請求項１乃至３いずれか一項記載の情報処理装置。
【請求項５】
請求項１乃至４いずれか一項記載の外部装置であって、
記憶手段に記憶された前記情報を前記情報処理装置に送信する送信手段と、
前記インタフェースの実行要求の受信に応じ、当該外部装置が有する前記第一のプログラムが備える当該インタフェースを呼び出し、当該インタフェースによる処理結果を含む応答を前記情報処理装置に返信するインタフェース呼び出し手段とを有する外部装置。
【請求項６】
画像形成装置のアプリケーションから呼び出されるインタフェースを有する第一のプログラムを有する外部装置と、該外部装置にネットワークを介して接続される情報処理装置とを有する情報処理システムであって、
前記情報処理装置は、
前記第一のプログラムが前記画像形成装置に実行させる処理をエミュレートするエミュレート手段を有し、
前記エミュレート手段は、
前記外部装置が有する前記第一のプログラムにおいて実装済みのインタフェースを示す情報を受信する受信手段と、
アプリケーションによるインタフェースの呼び出しに応じ、前記受信手段に受信された情報に基づいて当該インタフェースが前記外部装置において実装済みであるか否かを判定する判定手段と、
実装済みであると判定された場合、前記インタフェースの実行要求を前記外部装置に送信する外部呼び出し手段と、
実装済みでないと判定された場合、前記アプリケーションによって呼び出された前記インタフェースのエミュレーションを実行する実行手段とを有する情報処理システム。
【請求項７】
前記受信手段は、前記情報の受信後、所定のタイミングで新たな前記情報を受信する請求項６記載の情報処理システム。
【請求項８】
前記エミュレート手段は、前記外部呼び出し手段による前記実行要求に対する前記外部装置からの応答が受信されない場合、前記アプリケーションによって呼び出された前記インタフェースのエミュレーションを実行する請求項６又は７記載の情報処理システム。
【請求項９】
前記外部呼び出し手段による前記インタフェースの実行要求の送信に応じ、前記外部装置において生成される表示データを該外部装置より取得し、表示装置に表示させる表示データ取得手段を有する請求項６乃至８いずれか一項記載の情報処理システム。
【請求項１０】
前記外部装置は、
記憶手段に記憶された前記情報を前記情報処理装置に送信する送信手段と、
前記インタフェースの実行要求の受信に応じ、当該外部装置が有する前記第一のプログラムが備える当該インタフェースを呼び出し、当該インタフェースによる処理結果を含む応答を前記情報処理装置に返信するインタフェース呼び出し手段とを有する請求項６乃至９いずれか一項記載の情報処理システム。
【請求項１１】
画像形成装置のアプリケーションのから呼び出されるインタフェースを有する第一のプログラムを有する外部装置とネットワークを介して接続され、前記第一のプログラムが前記画像形成装置に実行させる処理をエミュレートするエミュレート手段を有する情報処理装置における情報処理方法であって、
前記エミュレート手段が、
前記外部装置が有する前記第一のプログラムにおいて実装済みのインタフェースを示す情報を受信する受信手順と、
アプリケーションによるインタフェースの呼び出しに応じ、前記受信手順において受信された情報に基づいて当該インタフェースが前記外部装置において実装済みであるか否かを判定する判定手順と、
実装済みであると判定された場合、前記インタフェースの実行要求を前記外部装置に送信する外部呼び出し手順と、
実装済みでないと判定された場合、前記アプリケーションによって呼び出された前記インタフェースのエミュレーションを実行する実行手順とを実行する情報処理方法。
【請求項１２】
前記受信手順は、前記情報の受信後、所定のタイミングで新たな前記情報を受信する請求項１１記載の情報処理方法。
【請求項１３】
前記エミュレート手段は、前記外部呼び出し手順における前記実行要求に対する前記外部装置からの応答が受信されない場合、前記アプリケーションによって呼び出された前記インタフェースのエミュレーションを実行する請求項１１又は１２記載の情報処理方法。
【請求項１４】
前記情報処理装置が、
前記外部呼び出し手順における前記インタフェースの実行要求の送信に応じ、前記外部装置において生成される表示データを該外部装置より取得し、表示装置に表示させる表示データ取得手順を実行する請求項１１乃至１３いずれか一項記載の情報処理方法。
【請求項１５】
請求項１乃至４いずれか一項記載の外部装置が実行する情報処理方法であって、
記憶手段に記憶された前記情報を前記情報処理装置に送信する送信手順と、
前記インタフェースの実行要求の受信に応じ、当該外部装置が有する前記第一のプログラムが備える当該インタフェースを呼び出し、当該インタフェースによる処理結果を含む応答を前記情報処理装置に返信するインタフェース呼び出し手順とを有する情報処理方法。
【請求項１６】
画像形成装置のアプリケーションから呼び出されるインタフェースを有する第一のプログラムを有する外部装置とネットワークを介して接続される情報処理装置を、
前記第一のプログラムが前記画像形成装置に実行させる処理をエミュレートするエミュレート手段として機能させ、
前記エミュレート手段は、
前記外部装置が有する前記第一のプログラムにおいて実装済みのインタフェースを示す情報を受信する受信手段と、
アプリケーションによるインタフェースの呼び出しに応じ、前記受信手段によって受信され情報に基づいて当該インタフェースが前記外部装置において実装済みであるか否かを判定する判定手段と、
実装済みであると判定された場合、前記インタフェースの実行要求を前記外部装置に送信する外部呼び出し手段と、
実装済みでないと判定された場合、前記アプリケーションによって呼び出された前記インタフェースのエミュレーションを実行する実行手段とを有する第二のプログラム。
【請求項１７】
前記受信手段は、前記情報の受信後、所定のタイミングで新たな前記情報を受信する請求項１６記載の第二のプログラム。
【請求項１８】
前記エミュレート手段は、前記外部呼び出し手段による前記実行要求に対する前記外部装置からの応答が受信されない場合、前記アプリケーションによって呼び出された前記インタフェースのエミュレーションを実行する請求項１６又は１７記載の第二のプログラム。
【請求項１９】
前記情報処理装置を、
前記外部呼び出し手段による前記インタフェースの実行要求の送信に応じ、前記外部装置において生成される表示データを該外部装置より取得し、表示装置に表示させる表示データ取得手段として機能させる請求項１６乃至１８いずれか一項記載の第二のプログラム。
【請求項２０】
請求項１乃至４いずれか一項記載の外部装置を、
記憶手段に記憶された前記情報を前記情報処理装置に送信する送信手段と、
前記インタフェースの実行要求の受信に応じ、当該外部装置が有する前記第一のプログラムが備える当該インタフェースを呼び出し、当該インタフェースによる処理結果を含む応答を前記情報処理装置に返信するインタフェース呼び出し手段として機能させるための第二のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、外部装置、情報処理システム、情報処理方法、及びプログラムに関し、特に画像形成装置のアプリケーションプラットフォームをエミュレートする情報処理装置、外部装置、情報処理システム、情報処理方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、特に複合機又は融合機と呼ばれる画像形成装置の中には、ＡＰＩ（Application Program Interface）が外部に公開されたアプリケーションプラットフォームを備えたものが存在する。斯かるアプリケーションプラットフォーム上では、サードベンダ等によって多数のアプリケーションが開発され、市場において提供されている。ユーザは、自らの業務等に適したアプリケーションを購入し、画像形成装置にインストールすることで、業務等の効率化を図ることができる。
【０００３】
斯かるアプリケーションプラットフォームについても、一般的な他のソフトウェアプログラムと同様に機能強化等に伴ってバージョンアップが行われる。また、根本的にソフトウェアアーキテクチャが見直され、全く新しいアプリケーションプラットフォームが開発される場合もある。
【０００４】
バージョンアップされた又はアーキテクチャが刷新されたアプリケーションプラットフォーム（以下、いずれについても「新バージョンプラットフォーム」という。）がリリースされる場合、そのタイミング（リリースされるタイミング）において新バージョンプラットフォーム上で動作するアプリケーションが市場において提供可能な状態であることが好ましい。そのためには新バージョンプラットフォームの開発と並行して、新バージョンプラットフォーム上における既存のアプリケーションのテスト（動作検証）や、新たなアプリケーションの開発等がサードベンダ等によって行われる必要がある。
【０００５】
そこで、従来、サードベンダ等には、ＰＣ（Personal Computer）上で動作する新バージョンプラットフォームのエミュレータが提供されていた。サードベンダ等は、当該エミュレータを利用して、アプリケーションのテスト又は開発等を行っていた。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、エミュレータは表面的に新バージョンプラットフォームとして振る舞うものであるに過ぎず、ＡＰＩの呼び出しに応じて実行される処理は、いわゆるダミーである。したがって、エミュレータ上におけるアプリケーションのテスト又は開発は、当該アプリケーションの動作を高い精度で保証できるものではなかった。
【０００７】
また、エミュレータを用いたテストは、新バージョンプラットフォームのテストには何ら寄与するものではなく、効率が悪いという問題もあった。すなわち、開発途中の新バージョンプラットフォーム上でアプリケーションのテストを行うことができれば、アプリケーション及び新バージョンプラットフォームの双方のテストを一度に行うことができ、非常に効率的である。
【０００８】
但し、サードベンダに対する新バージョンプラットフォームの提供は、画像形成装置のメーカーにとってはソフトウェア資産の流出の懸念があり、受け入れ難いものがある。特に、新バージョンプラットフォームがＪａｖａ（登録商標）言語によって実装されている場合、そのバイトコードの解読は容易である。
【０００９】
本発明は、上記の点に鑑みてなされたものであって、画像形成装置のアプリケーションプラットフォームとその上で動作するアプリケーションとの開発作業を適切に効率化することのできる情報処理装置、外部装置、情報処理システム、情報処理方法、及びプログラムの提供を目的とする。
【課題を解決するための手段】
【００１０】
そこで上記課題を解決するため、本発明は、画像形成装置のアプリケーションから呼び出されるインタフェースを有する第一のプログラムを有する外部装置とネットワークを介して接続される情報処理装置であって、前記第一のプログラムが前記画像形成装置に実行させる処理をエミュレートするエミュレート手段を有し、前記エミュレート手段は、前記外部装置が有する前記第一のプログラムにおいて実装済みのインタフェースを示す情報を受信する受信手段と、アプリケーションによるインタフェースの呼び出しに応じ、前記受信手段によって受信された情報に基づいて当該インタフェースが前記外部装置において実装済みであるか否かを判定する判定手段と、実装済みであると判定された場合、前記インタフェースの実行要求を前記外部装置に送信する外部呼び出し手段と、実装済みでないと判定された場合、前記アプリケーションによって呼び出された前記インタフェースのエミュレーションを実行する実行手段とを有する。
【００１１】
このような情報処理装置によれば、画像形成装置のアプリケーションプラットフォームとその上で動作するアプリケーションとの開発作業を適切に効率化することができる。
【発明の効果】
【００１２】
本発明によれば、画像形成装置のアプリケーションプラットフォームとその上で動作するアプリケーションとの開発作業を適切に効率化することができる。
【図面の簡単な説明】
【００１３】
【図１】第一の実施の形態における情報処理システムの構成例を示す図である。
【図２】本発明の実施の形態におけるアプリ開発装置のハードウェア構成例を示す図である。
【図３】プラットフォームエミュレータ起動時の処理手順を説明するためのフローチャートである。
【図４】実装情報の例を示す図である。
【図５】第一の実施の形態においてスキャンエミュレータのＡＰＩの呼び出しに応じて実行される処理の処理手順を説明するためのシーケンス図である。
【図６】第二の実施の形態における情報処理システムの構成例を示す図である。
【図７】第二の実施の形態においてパネルエミュレータのＡＰＩの呼び出しに応じて実行される処理の処理手順を説明するためのシーケンス図である。
【図８】第三の実施の形態における情報処理システムの構成例を示す図である。
【発明を実施するための形態】
【００１４】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、第一の実施の形態における情報処理システムの構成例を示す図である。同図において、プラットフォーム開発装置２０とアプリ開発装置１０とはインターネット又はＬＡＮ（Local Area Network）等のネットワークを介して接続されている。
【００１５】
プラットフォーム開発装置２０は、画像形成装置のアプリケーションプラットフォーム（アプリケーションの開発及び実行環境を実現するプログラム）の開発に利用されているＰＣ（Personal Computer）等のコンピュータである。当該アプリケーションプラットフォーム２２のＡＰＩ（Application Program Interface）は、外部に公開され、サードベンダによる当該ＡＰＩを利用したアプリケーション１１の開発が可能とされている。同図において、プラットフォーム開発装置２０は、シミュレータ２１、アプリケーションプラットフォーム２２、実装情報送信部２３、内部呼び出し部２４、実装情報記憶部２５、及び内部呼び出し情報記憶部２６等を有する。
【００１６】
シミュレータ２１は、上位のソフトウェアプログラム（本実施の形態ではアプリケーションプラットフォーム２２）に対して、プラットフォーム開発装置２０が画像形成装置（複合機）であるかのように見せかけるためのプログラムである。例えば、シミュレータ２１は、画像形成装置に固有の各種のハードウェア資源（操作パネル、スキャナ、プリンタ等）を制御するためのデバイスドライバと同様のインタフェースを上位のソフトウェアに対して提供する。シミュレータ２１は、当該インタフェースの呼び出しに応じ、本来のデバイスドライバを表面的に模倣した処理を実行する。
【００１７】
アプリケーションプラットフォーム２２は、開発中のアプリケーションプラットフォームである。同図において、アプリケーションプラットフォーム２２は、スキャンサービス２２１、プリントサービス２２２、ファクスサービス２２３、コピーサービス２２４、及びパネルサービス２２５等を含む。スキャンサービス２２１は、スキャンの実行に関するＡＰＩ（インタフェース）を提供するプログラムモジュールである。プリントサービス２２２は、印刷の実行に関するＡＰＩを提供するプログラムモジュールである。コピーサービス２２４は、コピーの実行に関するＡＰＩを提供するプログラムモジュールである。パネルサービス２２５は、操作パネルの制御に関するＡＰＩを提供するプログラムモジュールである。
【００１８】
実装情報送信部２３は、実装情報記憶部２５に記録されている実装情報をアプリ開発装置１０に転送する。実装情報とは、アプリケーションプラットフォーム２２において実装済みのＡＰＩの一覧を情報である。すなわち、アプリケーションプラットフォーム２２は開発中であるため、実装されているＡＰＩは、日々刻々と変化する。その変化に応じて実装情報記憶部２５内の実装情報は更新される。実装情報記憶部２５は、プラットフォーム開発装置２０が有する不揮発性の記憶媒体において実装情報を記憶する記憶領域（例えば、ファイル）である。
【００１９】
内部呼び出し部２４は、アプリ開発装置１０から転送されるＡＰＩの呼び出し要求に応じ、当該呼び出し要求に指定されたＡＰＩ（アプリケーションプラットフォーム２２のＡＰＩ）を、内部呼び出し情報記憶部２６に記録された内部呼び出し情報に基づいて呼び出す。内部呼び出し部２４は、呼び出したＡＰＩによる処理結果（戻り値等）を示す情報をアプリ開発装置１０に返信する。なお、内部呼び出し情報は、ＡＰＩごとに、ＡＰＩの識別情報（例えば、メソッド名）と、アプリケーションプラットフォーム２２におけるアドレス情報との対応情報を含む情報である。内部呼び出し情報記憶部２６は、プラットフォーム開発装置２０が有する不揮発性の記憶媒体において内部呼び出し情報を記憶する記憶領域（例えば、ファイル）である。
【００２０】
アプリ開発装置１０は、アプリケーションプラットフォーム２２上で（アプリケーションプラットフォーム２２を利用して）動作するアプリケーション１１の開発に利用されているＰＣ（Personal Computer）等のコンピュータである。同図において、アプリ開発装置１０は、アプリケーション１１及びプラットフォームエミュレータ１２等を有する。
【００２１】
アプリケーション１１は、開発対象のアプリケーション１１である。同図では、アプリ１１ａ及びアプリ１１ｂが例示されている。
【００２２】
プラットフォームエミュレータ１２は、アプリケーションプラットフォーム２２のエミュレータである。すなわち、プラットフォームエミュレータ１２は、アプリケーションプラットフォーム２２と同様のＡＰＩを備え、アプリケーション１１による当該ＡＰＩの呼び出しに応じ、当該ＡＰＩの本来の動作をエミュレートする（模倣する）。なお、プラットフォームエミュレータ１２が有するＡＰＩの種類（品揃え）と、アプリケーションプラットフォーム２２が有するＡＰＩの種類とは完全に一致しなくてもよい。例えば、プラットフォームエミュレータ１２は、アプリケーションプラットフォーム２２にはまだ実装されていないＡＰＩを備えていてもよい。
【００２３】
同図において、プラットフォームエミュレータ１２は、スキャンエミュレータ１２１、プリントエミュレータ１２２、ファクスエミュレータ１２３、コピーエミュレータ１２４、パネルエミュレータ１２５、実装情報取得部１２６、判定部１２７、外部呼び出し部１２８、及び実装情報保持部１２９等を有する。
【００２４】
スキャンエミュレータ１２１、プリントエミュレータ１２２、ファクスエミュレータ１２３、コピーエミュレータ１２４、パネルエミュレータ１２５は、それぞれ、スキャンサービス２２１、プリントサービス２２２、ファクスサービス２２３、コピーサービス２２４、パネルサービス２２５のエミュレータである。すなわち、これら各エミュレータは、アプリケーション１１から直接利用される（呼び出される）。
【００２５】
実装情報取得部１２６は、プラットフォーム開発装置２０の実装情報送信部２３より転送される実装情報を受信し、受信された実装情報を実装情報保持部１２９に記録する。実装情報保持部１２９は、アプリ開発装置１０が有する記憶装置において実装情報を記憶するための記憶領域である。
【００２６】
判定部１２７は、アプリケーション１１より呼び出されたＡＰＩが、アプリケーションプラットフォーム２２において既に実装済みであるか否かを実装情報に基づいて判定する。
【００２７】
外部呼び出し部１２８は、プリケーションより呼び出されたＡＰＩがアプリケーションプラットフォーム２２において実装済みであることが判定部１２７によって判定された場合に、当該ＡＰＩの呼び出し要求（当該ＡＰＩの実行要求）をプラットフォーム開発装置２０の内部呼び出し部２４に送信する。なお、当該呼び出し要求には、ＡＰＩの識別情報（例えば、メソッド名）が指定される。
【００２８】
図２は、本発明の実施の形態におけるアプリ開発装置のハードウェア構成例を示す図である。図２のアプリ開発装置１０は、それぞれバスBで相互に接続されているドライブ装置１００と、補助記憶装置１０２と、メモリ装置１０３と、ＣＰＵ１０４と、インタフェース装置１０５と、表示装置１０６と、入力装置１０７とを有する。
【００２９】
アプリ開発装置１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記録した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００３０】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従ってアプリ開発装置１０に係る機能を実現する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。表示装置１０６はプログラムによるＧＵＩ（Graphical User Interface）等を表示する。入力装置１０７はキーボード及びマウス等で構成され、様々な操作指示を入力させるために用いられる。
【００３１】
なお、プラットフォーム開発装置２０のハードウェア構成についても図２に示されるものと同様でよい。但し、実機（実際の画像形成装置）をプラットフォーム開発装置２０として用いてもよい。この場合のプラットフォーム開発装置２０においては、シミュレータ２１は不要である。
【００３２】
以下、図１の情報処理システムの処理手順について説明する。図３は、プラットフォームエミュレータ起動時の処理手順を説明するためのフローチャートである。
【００３３】
アプリ開発装置１０において、プラットフォームエミュレータ１２が起動されると、実装情報取得部１２６は、リモート呼び出し機能が有効であるか否かを判定する（Ｓ１０１）。リモート呼び出し機能とは、アプリケーションプラットフォーム２２のＡＰＩを遠隔呼び出しする機能をいう。リモート呼び出し機能が有効又は無効であるかは、所定の設定ファイルに記録された設定情報に基づいて判定される。すなわち、ユーザは、当該設定ファイルを編集することで、リモート呼び出し機能の有効又は無効を切り替えることができる。
【００３４】
リモート呼び出し機能は有効とすることが設定されている場合（Ｓ１０１でＹｅｓ）、実装情報取得部１２６は、実装情報の取得要求をプラットフォーム開発装置２０の実装情報送信部２３に送信する（Ｓ１０２）。当該取得要求の送信先の識別情報（例えば、ＩＰアドレス又はＵＲＬ（Uniform Resource Locator）等）は、予め所定の設定ファイル（補助記憶装置１０２の所定の記憶場所）に記録しておけばよい。当該取得要求を受信した実装情報送信部２３は、実装情報保持部１２９に記録されている実装情報を実装情報取得部１２６に返信する。実装情報取得部１２６は、返信された実装情報を受信し、実装情報記憶部２５に記録する（Ｓ１０３）。
【００３５】
図４は、実装情報の例を示す図である。同図において、（Ａ）が実装情報の具体例を示す。同図では、実装情報がＸＭＬ（eXtensible Markup Language）形式によって記述された例が示されている。但し、実装情報の形式は、ＸＭＬ形式に限定されない。ＣＳＶ（Comma Separated Values）形式や他の形式によって記述されてもよい。
【００３６】
同図の実装情報は、アプリケーションプラットフォーム２２において既に実装されているサービス（スキャンサービス２２１、プリントサービス２２２等）ごとに＜Ｉｎｔｅｒｆａｃｅ＞タグで囲まれたＩｎｔｅｒｆａｃｅ要素を含む。Ｉｎｔａｆａｃｅ要素は、ｎａｍｅ属性を含む。ｎａｍｅ属性の値によって対応するサービスが識別される。例えば、Ｉｎｔａｆａｃｅ要素ｅ１のｎａｍｅ属性の値は、「ｓｃａｎ」である。したがって、Ｉｎｔａｆａｃｅ要素は、スキャンサービス２２１の実装内容（実装状況）を示すことが分かる。
【００３７】
各Ｉｎｔｅｒｆａｃｅ要素は、対応するサービスにおいて既に実装されているメソッドごとにＭｅｔｈｏｄ要素を子要素として含む。Ｍｅｔｈｏｄ要素は、ｎａｍｅ属性、ｐａｒａｍｓ属性、及びｒｅｔｕｒｎ属性等を有する。ｎａｍｅ属性の値はメソッド名を示す。ｐａｒａｍ属性の値は、引数のデータ型を示す。ｒｅｔｕｒｎ属性の値は、戻り値のデータ型を示す。
【００３８】
なお、図中（Ｂ）は、Ｉｎｔｅｒｆａｃｅ要素ｅ１の定義内容をプログラミング言語によって示している。（Ｂ）に示されるように、Ｉｎｔａｆａｃｅ要素ｅ１には、ｓｃａｎインタフェース（スキャンサービス２２１のＡＰＩ）としては、ｂｂｂメソッド、ｃｃｃメソッド、ｄｄｄメソッド、ｅｅｅメソッド、及びｆｆｆメソッドが実装済みであることが記述されている。「実装済み」であるとは、メソッド内の処理手順が少なくともテスト可能な程度に定義されていることをいう。空のメソッドについては実装済みであるとはいわない。
【００３９】
なお、リモート呼び出し機能は無効とすることが設定されている場合（Ｓ１０１でＮｏ）、実装情報の取得は実行されない。
【００４０】
実装情報取得部１２６は、プラットフォームエミュレータ１２の起動後においても、所定のタイミングで（例えば、定期的に、又はユーザからの指示入力に応じて）図３の処理を実行する。したがって、プラットフォーム開発装置２０におけるアプリケーションプラットフォーム２２の開発の進行に応じ、実装情報保持部１２９に保持されている実装情報は更新される。但し、例えば、実装情報記憶部２５において実装情報が更新された場合等において、実装情報送信部２３から能動的に実装情報が配信されてもよい。
【００４１】
続いて、プラットフォームエミュレータ１２のＡＰＩが呼び出された際の処理手順について説明する。ここでは、スキャンエミュレータ１２２が呼び出された場合について説明する。図５は、第一の実施の形態においてスキャンエミュレータのＡＰＩの呼び出しに応じて実行される処理の処理手順を説明するためのシーケンス図である。
【００４２】
例えば、アプリ１１ａのテストにおいて、アプリ１１ａがスキャンエミュレータ１２１のｂｂｂメソッドを呼び出したとする（Ｓ２０１）。スキャンエミュレータ１２１のｂｂｂメソッドは、呼び出しに応じ、判定部１２７に対してスキャンサービス２２１のｂｂｂメソッド（ｓｃａｎ．ｂｂｂ（））の実装の有無を問い合わせる（Ｓ２０２）。判定部１２７は、実装情報保持部１２９に保持されている実装情報を参照して、スキャンサービス２２１のｂｂｂメソッドの実装の有無（ｂｂｂメソッドがアプリケーションプラットフォーム２２において実装済みであるか否か）を判定する（Ｓ２０３）。具体的には、ｎａｍｅ属性の値が「ｂｂｂ」であるＭｅｔｈｏｄ要素がｎａｍｅ属性の値が「ｓｃａｎ」であるＩｎｔｅｒｆａｃｅ要素の子要素として実装情報に含まれているか否かを判定する。含まれていれば、実装済みであると判定し、含まれていなければ実装済みでないと判定する。判定部１２７は、判定結果をスキャンエミュレータ１２１に返却する（Ｓ２０４）。
【００４３】
判定部１２７からの判定結果が実装済みであることを示す場合、スキャンエミュレータ１２１のｂｂｂメソッドは、外部呼び出し部１２８に対して、スキャンサービス２２１のｂｂｂメソッドの呼び出しを要求する（Ｓ２０５）。外部呼び出し部１２８は、予め設定され、補助記憶装置１０２に記録されている呼び出し先の識別情報（ＩＰアドレス又はＵＲＬ）に基づいて、サービス名（インタフェース名）及びメソッド名を指定して、メソッドの呼び出し要求をプラットフォーム開発装置２０の内部呼び出し部２４に送信する（Ｓ２０６）。
【００４４】
内部呼び出し部２４は、受信された呼び出し要求に指定されているサービス名対応するスキャンサービス２２１に対して、当該呼び出し要求に指定されているメソッド名に対応するｂｂｂメソッドの呼び出しを実行する（Ｓ２０７）。なお、内部呼び出し部２４は、スキャンサービス２２１のｂｂｂメソッドのアドレス情報を内部呼び出し情報記憶部２６に記憶されている内部呼び出し情報に基づいて判定する。なお、メソッドの動的な呼び出し（動的なリンク）については、公知の技術を利用すればよい。利用する技術によっては、内部呼び出し情報記憶部２６は、必ずしも開発者が直接編集したり、記述したりするものではなく、内部呼び出し部２４内に隠蔽又は内蔵されうる。
【００４５】
スキャンサービス２２１のｂｂｂメソッドは、呼び出しに応じ、実装されている処理を実行し（Ｓ２０８）、その戻り値（処理結果）を内部呼び出し部２４に返却する（Ｓ２０９）。内部呼び出し部２４は、当該戻り値を含む応答を外部呼び出し部１２８に返信する（Ｓ２１０）。外部呼び出し部１２８は、受信された応答に含まれている戻り値をスキャンエミュレータ１２１に返却する（Ｓ２１１）。スキャンエミュレータ１２１のｂｂｂメソッドは、当該戻り値をアプリ１１ａに返却する（Ｓ２１２）。
【００４６】
一方、判定部１２７からの判定結果が実装済みでないことを示す場合、スキャンエミュレータ１２１のｂｂｂメソッドは、自らに実装されている処理手順を実行して、スキャンサービス２２１をエミュレートする（Ｓ２２１）。続いて、スキャンエミュレータ１２１のｂｂｂメソッドは、エミュレートの結果の戻り値をアプリ１１ａに返却する（Ｓ２２２）。
【００４７】
なお、スキャンエミュレータ１２１のｂｂｂメソッドは、外部呼び出し部１２８を介したｂｂｂメソッドの遠隔呼び出しに対する応答がプラットフォーム開発装置２０より受信されない場合（応答待ちがタイムアウトした場合）においても、ステップＳ２２１及びＳ２２２を実行する。このような場合としては、例えば、ネットワーク障害が発生している場合、プラットフォーム開発装置２０が起動していない場合、又はプラットフォーム開発装置２０においてアプリケーションプラットフォーム２２が正常に動作していない場合等が挙げられる。
【００４８】
上述したように、第一の実施の形態によれば、アプリケーション１１の動作確認に際し、アプリケーションプラットフォーム２２を利用させることができる。したがって、アプリケーション１１の開発者及びアプリケーションプラットフォーム２２の開発者の双方は、効率的に開発又はテスト作業を行うことができる。すなわち、アプリケーション１１の開発者は、実際のアプリケーションプラットフォーム２２上におけるアプリケーション１１の動作確認を行うことができる。また、アプリケーションプラットフォーム２２の開発者は、アプリケーション１１の動作確認に伴って、アプリケーションプラットフォーム２２の動作確認を行うことができる。
【００４９】
また、本実施の形態によれば、アプリケーションプラットフォーム２２の実体をアプリケーション１１の開発者に提供する必要はない。したがって、アプリケーションプラットフォーム２２の提供者にとって、ソフトウェア資産の流出を防止することができる。
【００５０】
また、本実施の形態によれば、ＡＰＩごとに、実装済みであるか否かを判定し、実装済みである場合は、アプリケーションプラットフォーム２２が遠隔的に利用され、実装済みでない場合はエミュレーションが実行される。したがって、アプリケーションプラットフォーム２２の開発作業とアプリケーション１１の開発作業とを円滑に並行させることができる。
【００５１】
次に、第二の実施の形態について説明する。第二の実施の形態では、パネルエミュレータ１２５の呼び出しに応じ、アプリ開発装置１０の表示装置１０６に表示部品又は表示画面（以下、「表示部品」で統一する。）を表示させるための仕組みについて説明する。パネルエミュレータ１２５に関して、単純に図５の処理が実行された場合（スキャンエミュレータ１２１とパネルエミュレータ１２５とを置き換え、スキャンサービス２２１とパネルサーバス２２５とを置き換えて図５の処理が実行された場合）、パネルエミュレータ１２５に対する表示命令（メソッドの呼び出し）に基づく表示は、プラットフォーム開発装置２０側で実現されてしまう。パネルエミュレータ１２５への表示命令は、パネルサービス２２５へ伝達されるところ、パネルサービス２２５は、ローカルな装置の表示装置（画像形成装置の操作パネル）への表示を行うことを責務とするからである。
【００５２】
斯かる課題を解決するため、第二の実施の形態の情報処理システムは、図６に示されるような構成を有する。
【００５３】
図６は、第二の実施の形態における情報処理システムの構成例を示す図である。図６中、図１と同一部分には同一符号を付し、その説明は省略する。
【００５４】
同図において、プラットフォーム開発装置２０ａのシミュレータ２１ａは、表示制御部２１１、表示データ変換部２１２、及び表示データ提供部２１３等を含む。
【００５５】
表示制御部２１１は、パネルサービス２２５によって生成される表示部品を示すデータ（表示データ）に基づいて、ローカルな画像形成装置の操作パネルへ当該表示部品を表示させるための制御を行うプログラムモジュールのシミュレータである。
【００５６】
表示データ変換部２１２は、パネルサービス２２５によって生成される表示データを、ネットワークを介して流通可能なデータ形式に変換する。本実施の形態では、ネットワークを介して流通可能なデータ形式として、ＨＴＭＬ（HyperText Markup Language）形式を採用する。但し、ＪＰＥＧ（Joint Photographic Experts Group）、ＢＩＴＭＡＰ、ＰＤＦ（Portable Document Format）等、ＨＴＭＬ形式以外のデータ形式が採用されてもよい。
【００５７】
表示データ提供部２１３は、表示データ変換部２１２によって生成されたＨＴＭＬデータをネットワークを介してアクセス可能とする。具体的には、表示データ提供部２１３は、Ｗｅｂサーバとしての機能を有し、当該ＨＴＭＬデータを所定のＵＲＬ（Uniform Resource Locator）に対応させて管理する。表示データ提供部２１３は、当該所定のＵＲＬに対するＧＥＴリクエストに応じ、当該ＨＴＭＬデータを含むＨＴＴＰレスポンスを返信する。
【００５８】
一方、アプリ開発装置１０ａのプラットフォームエミュレータ１２ａは、ブラウザ部１３１を含む。ブラウザ部１３１は、表示データ変換部２１２によって生成されるＨＴＭＬデータを、プラットフォーム開発装置２０ａより取得し、表示装置１０６に表示させる。
【００５９】
以下、第二の実施の形態の情報処理システムにおける処理手順について説明する。図７は、第二の実施の形態においてパネルエミュレータのＡＰＩの呼び出しに応じて実行される処理の処理手順を説明するためのシーケンス図である。
【００６０】
例えば、アプリ１１ａのテストにおいて、アプリ１１ａがパネルエミュレータ１２５のｐｐｐメソッドを呼び出したとする（Ｓ３０１）。ｐｐｐメソッドは、或る表示部品の表示命令に相当することとする。
【００６１】
以降、ステップＳ３０２からＳ３０７については、図５のステップＳ２０２からＳ２０７より自明であるため、その説明は省略する。また、ｐｐｐメソッドが実装済みでない場合の処理手順は、図５のステップＳ２２１及びＳ２２２より自明である。したがって、第二の実施の形態では、ｐｐｐメソッドが実装済みである場合についてのみ説明する。
【００６２】
パネルサービス２２５のｐｐｐメソッドは、呼び出しに応じ、ｐｐｐメソッドに対応した表示部品の表示データを生成する（Ｓ３０８）。続いて、ｐｐｐメソッドは、当該表示データを含む表示命令を表示制御部２１１に入力する（Ｓ３０９）。当該表示命令に応じ、表示制御部２１１は、当該表示データに基づいて、プラットフォーム開発装置２０の表示装置に表示部品を表示させる（Ｓ３１０）。続いて、表示制御部２１１は、ｐｐｐメソッドに対して応答を行う（Ｓ３１１）。
【００６３】
続いて、ｐｐｐメソッドは、生成された表示データを含む表示命令を表示データ変換部２１２に入力する（Ｓ３１２）。当該表示命令に応じ、表示データ変換部２１２は、当該表示データをＨＴＭＬデータに変換する（Ｓ３１３）。続いて、表示データ変換部２１２は、変換処理によって生成されたＨＴＭＬデータを表示データ提供部２１３に入力する（３１４）。表示データ提供部２１３は、入力されたＨＴＭＬデータを所定のＵＲＬに関連付けて、プラットフォーム開発装置２０の記憶装置に保存する。
【００６４】
続いて、表示制御部２１１は、ステップＳ３１２における表示命令に対する応答をｐｐｐメソッドに対して行う（Ｓ３１５）。以降、ステップＳ３１６からＳ３１９については、図５のステップＳ２０９からＳ２１２より自明であるため、その説明は省略する。
【００６５】
一方、アプリ開発装置１０のブラウザ部１３１は、上記所定のＵＲＬに対して定期的にＨＴＭＬデータの取得要求（ＧＥＴリクエスト）を送信している（Ｓ３２１）。すなわち、ブラウザ部１３１は、所定のＵＲＬに対してポーリングを行っている。当該所定のＵＲＬは、例えば、予め補助記憶装置１０２に記録されている。
【００６６】
ブラウザ部１３１より送信される取得要求は、表示データ提供部２１３によって受信される。表示データ提供部２１３は、当該所定のＵＲＬに関連付けられているＨＴＭＬデータが存在しない場合は、ＨＴＭＬデータは無いことを示す応答（ＨＴＴＰレスポンス）を返信する。当該所定のＵＲＬに関連付けられているＨＴＭＬデータが存在する場合、表示データ提供部２１３は、当該ＨＴＭＬデータを含む応答を返信する（Ｓ３２２）。なお、表示データ提供部２１３は、返信済みのＨＴＭＬデータを記憶装置より削除する。
【００６７】
ブラウザ部１３１は、ＨＴＭＬデータを含む応答を受信すると、当該ＨＴＭＬデータに基づいて表示部品を表示装置１０６に表示させる（Ｓ３２３）。
【００６８】
なお、ブラウザ部１３１による所定のＵＲＬに対するポーリングの期間は、パネルエミュレータ１２５のメソッドが呼ばれた後に限定されてもよい。例えば、ステップＳ３０３において、判定部１２７は、実装の有無の問い合わせ対象となったメソッドがパネルサービス２２５に関するメソッドである場合、その旨を示すデータ（例えばファイル）を補助記憶装置１０２に生成する。一方、ブラウザ部１３１は、当該データの生成を待機する。例えば、ブラウザ部１３１は、当該データが生成されたことを検知するためのポーリングを行っている。ブラウザ部１３１は、当該データが生成されたことを検知すると、当該データを削除し、所定のＵＲＬに対するポーリングを開始する。ポーリングの結果、ＨＴＭＬデータが取得されると、ブラウザ部１３１は、所定のＵＲＬに対するポーリングを終了させる。所定のＵＲＬに対するポーリングの期間が限定されることにより、ネットワークを介した通信量の増加を抑制することができる。
【００６９】
また、ブラウザ部１３１は、プラットフォームエミュレータ１２ａに組み込まれた専用のブラウザでなくてもよい。例えば、汎用的なＷｅｂブラウザ（以下、単に「Ｗｅｂブラウザ」という。）がブラウザ部１３１の代わりに用いられてもよい。Ｗｅｂブラウザには、所定のＵＲＬに対してポーリングを実行する機能は予め実装されていない。したがって、Ｗｅｂブラウザを用いる場合、まず、所定のＵＲＬに対に対するポーリングを実行するスクリプトプログラムが埋め込まれたＷｅｂページ（ＨＴＭＬデータ）を、例えば、表示データ提供部２１３より予めＷｅｂブラウザにダウンロードしておく。当該ＷｅｂページがＷｅｂブラウザにダウンロードされ、当該スクリプトプログラムが実行されることにより、ブラウザ部１３１と同様の機能が実現される。
【００７０】
また、プラットフォーム開発装置２０側における表示の要否について、設定を可能としてもよい。例えば、当該表示の要否を示す情報をプラットフォーム開発装置２０の記憶装置に記録しておく。パネルサービス２２５は、当該情報が、表示が不要であることを示す場合、図７のステップＳ３０９における表示命令は行わない。
【００７１】
同様に、アプリ開発装置１０側における表示の要否についても設定を可能としてもよい。例えば、当該表示の要否を示す情報をアプリ開発装置１０の補助記憶装置１０２に記録しておく。ブラウザ部１３１は、当該情報が、表示が不要であることを示す場合、所定のＵＲＬに対するポーリングは行わない。なお、ブラウザ部１３１の代わりにＷｅｂブラウザを利用する場合、Ｗｅｂブラウザを起動しなければよい。又は、起動したとしても、所定のＵＲＬに対に対するポーリングを実行するスクリプトプログラムが埋め込まれたＷｅｂページをダウンロードしなければよい。
【００７２】
上述したように、第二の実施の形態によれば、パネルエミュレータ１２５のＡＰＩを利用した表示命令に基づいて、アプリ開発装置１０側に表示部品を表示させることができる。したがって、ＧＵＩ（Graphical User Interface）に関する確認もアプリ開発装置１０において行うことができる。
【００７３】
次に、第三の実施の形態について説明する。図８は、第三の実施の形態における情報処理システムの構成例を示す図である。図８中、図６と同一部分には同一符号を付し、その説明は省略する。
【００７４】
同図では、実装情報送信部２３、内部呼び出し部２４、実装情報記憶部２５、及び内部呼び出し情報記憶部２６等が、プラットフォーム開発装置２０ｂと別のコンピュータである仲介装置３０に実装されている。
【００７５】
同図に示される形態は、プラットフォーム開発装置２０ｂが画像形成装置である場合に好適である。すなわち、仲介装置３０に実装された各部は、ユーザ先に出荷される画像形成装置には含まれない部分である。当該部分を画像形成装置の外部に出すことにより、出荷時と同様の構成によって、プラットフォーム等の開発を行うことができる。
【００７６】
なお、第三の実施の形態における処理手順については、図５又は図７より自明であるため、その説明は省略する。
【００７７】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００７８】
１０、１０ａ    アプリ開発装置
１１          アプリケーション
１１ａ        アプリ
１１ｂ        アプリ
１２          プラットフォームエミュレータ
２０、２０ａ、２０ｂ    プラットフォーム開発装置
２１          シミュレータ
２２          アプリケーションプラットフォーム
２３          実装情報送信部
２４          内部呼び出し部
２５          実装情報記憶部
２６          内部呼び出し情報記憶部
３０          仲介装置
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１０６        表示装置
１０７        入力装置
１２１        スキャンエミュレータ
１２２        プリントエミュレータ
１２３        ファクスエミュレータ
１２４        コピーエミュレータ
１２５        パネルエミュレータ
１２６        実装情報取得部
１２７        判定部
１２８        外部呼び出し部
１２９        実装情報保持部
１３１        ブラウザ部
２１１        表示制御部
２１２        表示データ変換部
２１３        表示データ提供部
２２１        スキャンサービス
２２２        プリントサービス
２２３        ファクスサービス
２２４        コピーサービス
２２５        パネルサービス
Ｂ            バス
【先行技術文献】
【特許文献】
【００７９】
【特許文献１】特開２００４−２５２５８５号公報
【図１】
0005630556.tif 000002
【図２】
0005630556.tif 000003
【図３】
0005630556.tif 000004
【図４】
0005630556.tif 000005
【図５】
0005630556.tif 000006
【図６】
0005630556.tif 000007
【図７】
0005630556.tif 000008
【図８】
0005630556.tif 000009