(57)【要約】【課題】  開発者が、画像形成装置のアプリケーションの動作を確認するにあたり、シミュレータを用いるのが一般的である。しかし、開発者は、シミュレータで保証されない機能の動作確認をシミュレータで実行してはじめて、画像形成装置との動作差分に気づく。これゆえ、開発者は動作確認を画像形成装置上でやり直すという手戻りを要する。【解決手段】  統合開発環境システム上で、アプリケーションを開発している時に、画像形成装置とシミュレータ間で動作差分のある機能を随時指摘する。なお、アプリケーションが複数の画像形成装置での動作を想定している場合、対応するシミュレータの動作差分についても指摘する。また、アプリケーションの動作確認直前に、該当するシミュレータに限定した動作差分情報を指摘する。【選択図】  図４
2013145502.tif 000002
【特許請求の範囲】
【請求項１】
画像処理ユニットを利用したサービスを提供するアプリケーションのソースファイルを編集可能な情報処理装置であって、
画像形成装置ごとに用意された、アプリケーションをテスト動作させるためのシミュレータと、
ソースファイルを編集するためのソースファイル編集画面を介して前記アプリケーションに対応するソースファイルにアプリケーションプログラミングインターフェース（以後、ＡＰＩと称する）が加えられた場合、前記シミュレータごとに設定された前記ＡＰＩに対するサポートレベルを読み込む読み込み手段と、
前記読み込み手段により読み込まれた各シミュレータのＡＰＩに対するサポートレベルを基に、前記ＡＰＩに対する画像形成装置とシミュレータとの動作差分が認識できるように前記ソースファイル編集画面を表示する表示制御手段と、を有する情報処理装置。
【請求項２】
前記ソースファイル編集画面にサポートレベルマークを表示するサポートレベルの指定と、前記アプリケーションをテスト動作させるシミュレータの指定とを受け付ける受け付け手段と、
前記読み込み手段により読み込まれた各シミュレータのＡＰＩに対するサポートレベルから前記受け付け手段により受け付けられたシミュレータのＡＰＩに対するサポートレベルを特定する特定手段と、を有し、
前記表示制御手段は、特定された前記サポートレベルが前記受け付け手段により受け付けられたサポートレベルの指定に含まれる場合に、特定された前記サポートに対応するサポートレベルマークを表示することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記受け付け手段により受け付けられたシミュレータの指定が複数存在し、前記特定手段により特定されたサポートレベルが複数存在する場合であって、
前記表示制御手段は、前記特定手段により特定された複数のサポートレベルが、前記受け付け手段により受け付けられた複数のシミュレータの指定に含まれる場合、前記特定手段により特定された複数のサポートレベルに対応する夫々のサポートレベルマークを同時に表示することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記シミュレータの中からユーザにより指定されたシミュレータを起動する起動手段と、
前記表示制御手段は、前記起動手段により起動対象のシミュレータが起動される前に、前記ＡＰＩに対する前記画像形成装置と前記シミュレータとに動作差分が存在することを認識させる注意事項確認画面を表示することを特徴とする請求項１乃至３の何れか１項に記載の情報処理装置。
【請求項５】
前記アプリケーションを動作させる仮想マシンを搭載した画像形成装置に含まれる当該仮想マシンの仕様バージョンを取得する取得手段を有し、
前記シミュレータの中からユーザにより指定されたシミュレータに対応する画像形成装置であって、当該画像形成装置に搭載された仮想マシンの仕様バージョンを前記取得手段により取得された際、取得された前記仕様バージョンによる分岐制御を考慮し、前記アプリケーションに対応するソースファイルに含まれるＡＰＩが実行されないことが確認された場合は、前記注意事項確認画面に前記ＡＰＩに対する前記画像形成装置と前記シミュレータとに動作差分が存在することを表示しないように制御することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記サポートレベルとは、シミュレータが画像形成装置と同じ動作をすることを表すフルサポート、および固定的な状態遷移に基づいて動作することを表すシミュレーションサポート、およびＡＰＩの内の一部の処理を除いて動作することを表す一部サポート、およびシミュレータでは動作しないことを表す非サポートを含むことを特徴とする請求項１乃至５の何れか１項に記載の情報処理装置。
【請求項７】
画像処理ユニットを利用したサービスを提供するアプリケーションのソースファイルを編集可能な情報処理装置を制御する制御方法であって、
画像形成装置ごとに用意されたシミュレータは、アプリケーションをテスト動作させ、
読み込み手段は、ソースファイルを編集するためのソースファイル編集画面を介して前記アプリケーションに対応するソースファイルにアプリケーションプログラミングインターフェース（以後、ＡＰＩと称する）が加えられた場合、前記シミュレータごとに設定された前記ＡＰＩに対するサポートレベルを読み込み、
表示制御手段は、前記読み込み手段により読み込まれた各シミュレータのＡＰＩに対するサポートレベルを基に、前記ＡＰＩに対する画像形成装置とシミュレータとの動作差分が認識できるように前記ソースファイル編集画面を表示することを特徴とする情報処理装置を制御する制御方法。
【請求項８】
請求項７に記載の制御方法を情報処理装置に実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションのソースファイルを編集可能な情報処理装置、制御方法、およびそのプログラムに関する。
【背景技術】
【０００２】
従来技術として、画像形成装置のリアルタイムＯＳ上にさらに別の組み込みシステム向けの実行環境（例えばＪａｖａ（登録商標）など）を構築し、画像形成装置の制御を行うことのできるアプリケーションを外部からダウンロードして追加できるアプリケーション・プラットフォームを搭載することが知られている。このようなアプリケーション・プラットフォーム上でアプリケーションを開発する際、動作確認には、テスト工数や開発費削減の観点からＰＣ上で動作するシミュレータを使用することが一般的である。また、画像形成装置のような機器ごとに異なる特有の機能を持つ組込み機器においては、その組込み機器に対応したシミュレータを用いる必要がある。一方で、アプリケーションが機器に特化した機能を利用するにあたって、アプリケーションの実行中に利用できる機能を動的に判別して制御する技術が特許文献１に開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１０９４１６
【発明の概要】
【発明が解決しようとする課題】
【０００４】
デバイスに特化した機能をアプリケーションが実装している場合、シミュレータではサポートできない場合がある。例えば、ハードウェアに依存した機能（温度センサーに基づいて発生するイベントや原稿を検知した時のイベントなど）は、ＰＣ上で動作するシミュレータでの再現は困難である。
【０００５】
その他の課題として次の様な課題が考えられる。一般的に、アプリケーション提供者は、販売機会を増やすために１つのアプリケーションを複数のデバイスで動作するように作りこむ。この時、開発者は、画像形成装置に対応したシミュレータを用いて動作確認を行う。しかしながら、シミュレータの精度は、対応する画像形成装置ごとにばらつきがある。例えば、従来サポートしていなかった機能でも、開発者の要望や重要度に応じて、新しい画像形成装置向けのシミュレータでは利用できるようになることがある。このため、新しい画像形成装置向けのシミュレータ上では、アプリケーションが正しく動作する一方で、古い画像形成装置向けのシミュレータ上では、正しく動作しないことがある。
【０００６】
しかし、動作しなかった原因が、アプリケーションの実装ミスなのか、シミュレータの精度の違いによるものなのかの判別も難しい。つまり、開発者は、機器に特化した機能の動作確認を、実際の画像形成装置で実施すべきなのか、シミュレータで実施しても問題がないのかを実施前に把握する必要がある。
【０００７】
本願発明は、上述した課題の内、少なくとも１つを解決する開発環境を備えた情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一実施形に係る情報処理装置は、画像処理ユニットを利用したサービスを提供するアプリケーションのソースファイルを編集可能な情報処理装置であって、画像形成装置ごとに用意された、アプリケーションをテスト動作させるためのシミュレータと、ソースファイルを編集するためのソースファイル編集画面を介して前記アプリケーションに対応するソースファイルにアプリケーションプログラミングインターフェース（以後、ＡＰＩと称する）が加えられた場合、前記シミュレータごとに設定された前記ＡＰＩに対するサポートレベルを読み込む読み込み手段と、前記読み込み手段により読み込まれた各シミュレータのＡＰＩに対するサポートレベルを基に、前記ＡＰＩに対する画像形成装置とシミュレータとの動作差分が認識できるように前記ソースファイル編集画面を表示することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、開発者は、アプリケーションの開発中に、該当する機能がシミュレータで動作可能かどうかを判別できるようになる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係る画像形成装置の内部構成の一例を表すブロック図である
【図２】画像形成装置のＨＤＤ１０４および開発用ＰＣ３００のＨＤＤ３０４に記憶されたソフトウェア構造図である
【図３】画像形成装置とネットワークで接続された開発用ＰＣ３００のハードウェア構成を表す図である
【図４】統合開発環境システム４００に関わるソフトウェア構成を表す図である
【図５】統合開発環境システム４００の操作画面を表す図である
【図６】マニフェストファイル６０１の構成要素を表す図である
【図７】動作差分情報テーブル４０８の構成要素を表す図である
【図８】ＡＰＩ利用状況情報テーブル４０９の構成要素を表す図である
【図９】動作差分情報指摘設定に関する図である
【図１０】ソースファイル４１８の変更時に関わる図である
【図１１】表示制御テーブル１１００に関わる図である
【図１２】ソースファイル４１８の変更時のソースファイル編集画面５０１およびＡＰＩ動作差分情報プロパティ画面５０５に関わる図である
【図１３】シミュレータの起動時に関わる図である
【図１４】シミュレータの起動前に表示される注意事項確認画面１４００および注意事項確認画面１４０１を表す図である
【発明を実施するための形態】
【００１１】
以下、図面を参照して本発明の実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また実施の形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
【００１２】
図１は、本発明の実施形態に係る画像形成装置の内部構成の一例を表すブロック図である。図１に表す画像形成装置は、基本的な構成として、画像形成装置内の各部を制御するコントローラユニット１００と、操作部１１２と、画像処理ユニットであるスキャナ部１２３とプリンタ部１２５と、を備える。操作部１１２は、例えば、数字を入力するためのテンキーや処理の実行を行うためのスタートキーなどのハードキーや液晶タッチパネルで構成され、ユーザが画像形成装置を操作するためのユーザインターフェースを提供する。操作部１１２のタッチパネルに表示される各設定項目を表すアイコンやボタン（もしくはハードキー）をタッチ（押下）することで、画像形成装置に設定や情報の入力を行うことが可能である。
【００１３】
スキャナ部１２３は、原稿等の画像を画像データとして読み取る。プリンタ部１２５は、記録用紙を搬送し、その記録用紙に画像データを可視画像として印刷する。コントローラユニット１００は、バス１２２を介してスキャナ部１２３に接続され、またバス１２４を介してプリンタ部１２５に接続される。また、コントローラユニット１００は、ＬＡＮ１１３やＷＡＮ（公衆回線）１１４やＷＩＲＥＬＥＳＳ（無線）１１５を介して他の機器に接続して、画像情報やデバイス情報の入出力制御を行う。
【００１４】
ＣＰＵ１０１は、システム全体を制御するコントローラである。ＲＡＭ１０２は、ＣＰＵ１０１が動作するためのシステムワークメモリであり、画像データを一時記憶するための画像メモリでもある。ＲＯＭ１０３はブートＲＯＭである。ＲＯＭ１０３には、システムのブートプログラムが格納されている。ＨＤＤ１０４は、ハードディスクドライブであり、システムソフトウェアや画像データ、後述する通信部１１１が有するすべての無線通信に関する情報（無線通信の仕様）を格納する。
【００１５】
画像形成装置は、使用したい機能を実装したアプリケーション（以下、「アプリ」と呼ぶ。）をインストールすることで画像処理ユニットを利用した機能を増やすことができる。アプリのインストールにより、画像形成装置上で各種機能を動かすためのアプリプログラムがＲＡＭ１０２やＨＤＤ１０４に記憶される。
【００１６】
操作部Ｉ／Ｆ１０６は、ユーザインターフェース（ＵＩ）である操作部１１２との間のインターフェース部であり、操作部１１２に表示すべきデータを操作部１１２に対して出力する。また、操作部１１２からユーザが入力した情報を、ＣＰＵ１０１に伝える役割を行う。Ｎｅｔｗｏｒｋ部１０９は、ＬＡＮ１１３に接続され、情報の入出力を行う。モデム１１０は、ＷＡＮ１１４に接続され、情報の入出力を行う。
【００１７】
通信部１１１は、不図示のアンテナを介してＷＩＲＥＬＥＳＳ１１５に接続され、情報の入出力を行う。また、通信部１１１は、複数種類の無線通信を行うことが可能である。上記各デバイスがシステムバス１０７上に配置される。イメージバスＩ／Ｆ１０５は、システムバス１０７と、画像データを高速で転送する画像バス１０８とを接続し、データ構造を変換するバスブリッジである。画像バス１０８は、ＰＣＩバスまたはＩＥＥＥ１３９４等で規定されるバスである。画像バス１０８上に配置される各デバイスにおいて、ＲＩＰ（ラスターイメージプロセッサ）１１６は、ＰＤＬコードをビットマップイメージに展開する。デバイスＩ／Ｆ部１１７は、スキャナ部１２３またはプリンタ部１２５をコントローラユニット１００に接続し、画像データの同期系／非同期系の変換を行う。
【００１８】
スキャナ画像処理部１１８は、入力画像データに対して補正、加工、または編集を行う。プリンタ画像処理部１１９は、プリント出力画像データに対して、プリンタ部１２５に合った補正、解像度変換等を行う。画像回転部１２０は、画像データの回転を行う。画像処理部１２１は、画像データに対する、ＪＰＥＧ、ＪＢＩＧ、ＭＭＲ、ＭＨ等の圧縮伸張処理や、ＰＤＦ、ＴＩＦＦ、ＯＣＲ、暗号化等のフォーマット変換処理を行う。
【００１９】
図２（Ａ）および図２（Ｂ）は本発明の画像形成装置および対応するシミュレータのソフトウェア構造図の一例である。画像形成装置のソフトウェアは、ＨＤＤ１０４に、シミュレータのソフトウェアは、後述する開発用ＰＣ３００のＨＤＤ３０４に格納されている。また、画像形成装置とシミュレータで同じ符号を有するものは、完全に同一もしくは機能的に同一であることを表す。よって、アプリケーションをテスト動作させるためのシミュレータは画像形成装置ごとに用意されている。
【００２０】
ＯＳ２０１には一般的はリアルタイムＯＳが使用されるが、昨今ではＬｉｎｕｘ（登録商標）等の汎用ＯＳが使用されることもある。Ｎａｔｉｖｅライブラリ２０２は、イメージバスＩ／Ｆ１０５を介して行われ画像形成処理や暗号化処理などの画像形成装置特有の機能を提供する。
【００２１】
２０３は、Ｊａｖａ（登録商標）に代表される仮想マシンであり、アプリの実行環境を提供するものである。仮想マシン２０３を搭載した装置は、ＯＳとは別に他のアプリケーションの実行環境を備えていると言える。アプリフレームワーク２０４は、アプリのライフサイクルを管理する機能を提供するものである。システムサービス２０５は、画像形成装置に事前に登録されているアプリであり、他のアプリに機能を提供するものや、単独で機能するものがある。他のアプリに機能を提供するものとして、例えば、エラー発生時の処理を代替するエラーリカバリーサービス（ＥＲＳ２０６）や操作部１１２を制御するアプレットビュワーサービス（ＡＶＳ２０７）などがある。また、単独で機能するものとして、ＰＣからブラウザを使用してアクセスされ、所定のアプリ・ファイルを受信するサービスマネジメントサービス（ＳＭＳ２０８）などがある。アプリＡ２０９，アプリＢ２１０は、ＳＭＳ２０８によってインストールされたアプリであり、画像形成装置上で様々な機能を提供するものである。換言すれば、アプリＡ２０９、アプリＢは画像処理ユニットを利用したサービスを提供するアプリケーションと言える。アプリＡ２０９，アプリＢ２１０はＡＶＳ２０６を実行時に参照し、操作部１１２を介してユーザとやり取りを行うことが可能である。また、アプリＡ２０９、アプリＢ２１０は、アプリケーションプログラミングインターフェースであるＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）２１１を介して、画像形成装置が提供するシステムライブラリ２１２を参照できる。システムライブラリ２１２には、例えば、プリント処理やコピー処理やスキャン処理といったジョブ制御ライブラリ２１３が含まれる。アプリＡ２０９、アプリＢ２１０は、ジョブ制御系ライブラリ２１３を利用することで画像形成装置が持つＮｅｔｗｏｒｋ部１０９を介して、ＰＣなどからデータを受信し、プリンタ部１２５を使って印刷することも可能である。実際には、システムライブラリ２１２は、ＪＮＩ（Ｊａｖａ  Ｎａｔｉｖｅ  Ｉｎｔｅｒｆａｃｅ）と呼ばれるＪａｖａ（登録商標）で記述されたプログラムと、他の言語で書かれた、実際のＣＰＵ上で動作するコードとを連携するインターフェースを介して、Ｎａｔｉｖｅライブラリ２０２を利用する。これにより、システムライブラリ２１２は、画像形成装置の機能をアプリに提供している。一方、シミュレータ上で動作するダミーライブラリ２２０は、Ｎａｔｉｖｅライブラリ２０２を疑似的に再現する機能を持つ。例えば、画像形成装置では、プリントジョブが投入されると、画像形成装置の状態が、準備中、実行待ち、実行中といったように遷移することで、正常に画像形成が行われる。この状態遷移は、実際のところ、プリンタ部１２５やスキャナ部１２３の状態（印刷可能であるのか、用紙はあるのか、など）に基づいて決定される。しかし、シミュレータには、プリンタ部１２５やスキャナ部１２３といったハードウェア資源がないため、画像形成装置の状態遷移を本物と同じように再現できない。そこで、ダミーライブラリ２２０は、このような画像形成装置の状態遷移を、時間が経過することで変化させるように表現し、画像形���装置特有の機能のうち代表的な処理を模倣している。一方で、異常系の処理や、ハードウェアに依存した機能、重要度の低い機能などはサポートしない、もしくは、サポートしていても再現度が低いものもある。このような、再現度のことを、「サポートレベル」と呼ぶことにする。換言すると、ＡＰＩ２１１の動作は、画像形成装置とシミュレータで異なる場合があり、各ＡＰＩでサポートレベルに違いがある。画像形成装置とシミュレータとの差異が少なければ少ないほどサポートレベルが高く、多ければサポートレベルが低いことになる。
【００２２】
図３は、画像形成装置とネットワークで接続された情報処理装置である開発用ＰＣ３００のハードウェア構成を表す図である。画像形成装置用アプリの開発を行う場合、通常、開発用ＰＣ３００にて統合開発環境を動作させてプログラム作成・テスト・デバッグなどを行う。また、アプリのテストを行う場合は、開発ＰＣ３００から画像形成装置にＮｅｔｗｏｒｋ部１０９経由でアプリをインストールして画像形成装置上でアプリを動作させてテストを行う。
【００２３】
ＣＰＵ３０１は本装置上の各処理をつかさどる中央演算装置である。ＲＯＭ３０２は本装置の各処理に関わるプログラムやデータを記憶する。ＲＡＭ３０３は、本装置の各処理に関わる一時的なデータを記憶する。ＨＤＤ３０４は、本装置の各処理に関わるプログラムやデータ、および一時的なデータ、本発明に関わるプログラムモジュールが格納される。入力装置３０５は、本装置への指示入力を受け付けるキーボードやポインティングデバイスである。表示部３０６は、本装置の動作状況や、本装置上で動作する各プログラムが出力する情報を表示する。ネットワークＩ／Ｆ３０７は、ネットワーク経由でＬＡＮおよびインタネットに接続し、外部と情報交換を行う。ＵＳＢＨ  Ｉ／Ｆ３０８はＵＳＢホストインターフェースであり、さまざまなＵＳＢデバイスを接続する。それら要素がシステムバス３０９により結び付き、データをやりとりしている。
【００２４】
図４は本発明の統合開発システムの一例である統合開発環境システム４００のソフトウェア構成図である。統合開発環境システム４００を実現するためのソフトウェアは、開発用ＰＣ３００のＨＤＤ３０４に保存されており、そのソフトウェアがＲＡＭ３０３にロードされＣＰＵ３０１により実行されることで統合開発環境システム４００は実現する。ユーザは、統合開発環境システム４００を利用することでアプリケーションのソースファイルを編集可能になる。
【００２５】
統合開発環境システム４００は、統合開発基盤４０１と、統合開発基盤４０１に利用される内部ツールＡ４０２並びに外部ツールＢ４０４と連携する内部ツールＢ４０３と、これら内部ツールと同様の位置づけで組込みアプリ開発支援ツール４０５と、を有する。
【００２６】
統合開発環境システム４００は、例えば、Ｅｃｌｉｐｓｅ（Ｅｃｌｉｐｓｅは登録商標）が利用できるが、これに限定されない。なお、ここで、Ｅｃｌｉｐｓｅとは、オープンソースの統合ソフトウェア開発環境であり、ソフトウェア開発の共通プラットフォームである。Ｅｃｌｉｐｓｅは、プラグインとして登録・提供されている内部ツールと、Ｗｉｎｄｏｗｓ（登録商標）、ＵＮＩＸ（登録商標）などが提供するデバッガやコンパイラといったＥｃｌｉｐｓｅ内には存在しない外部ツールとの２種類のツールを利用することで様々な機能を提供する。
【００２７】
統合開発基盤４０１は、開発しているアプリの管理や各ツールを連携させるためのインターフェースなどを含んでいる。外部ツールの例としては、Ｊａｖａ（登録商標）のコンパイルやデバッグを行うために用いられるＪＤＫ（Ｊａｖａ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｋｉｔ）がある。内部ツールは、統合開発基盤４０１が提供するインターフェースを介して、外部ツールの機能を利用することもできる。なお、本実施形態においては、開発者によって統合開発環境システム４００に外部ツールとしてＪＤＫが既に設定済みであり、内部ツールから統合開発基盤４０１を介して利用できる。なお、図４で示している統合開発環境システム４００が持つ内部ツールや外部ツールの構成などは、１つの例にすぎず、これに限定されない。ここで、組込みアプリ開発支援ツール４０５は、例えば、画像形成装置のような組込み機器で動作可能なアプリの開発やテスト支援の機能を有する。動作差分解析手段４０６は、開発中のアプリが参照しているＡＰＩ２１１のうちシミュレータでのサポートレベルを判別し、画像形成装置との動作差分を指摘する機能を有する。マニフェストファイル参照手段４０７は、統合開発基盤４０１を介してアプリが持つ設定ファイルであるマニフェストファイルをＲＡＭ３０３に読み込む。そして、組込みアプリ開発支援ツール４０５内の他の構成要素から参照できるようにする。動作差分情報テーブル４０８は、ＡＰＩ２１１のシミュレータごとのサポートレベルに関する情報を保持している。ＡＰＩ利用状況情報テーブル４０９は、アプリが利用しているＡＰＩ２１１の一覧を保持している。エディター更新手段４１０は、アプリが利用しているＡＰＩ２１１のシミュレータでのサポートレベルに関する情報を操作部３０６に表示する。シミュレータランチャー起動手段４１１は、画像形成装置に対応するシミュレータを選択的に起動するものである。ＡＰＩ利用状況表示手段４１２は、シミュレータ起動前に、サポートレベルに応じた動作確認対象アプリが利用しているＡＰＩ２１１の一覧を表示部３０６に表示する。差分情報指摘設定手段４１３は、アプリが利用しているＡＰＩ２１１を、動作差分解析手段４０６が解析する際に、参照する差分情報指摘設定ファイル４１６を生成する。
【００２８】
ワークスペース４１４は、統合開発環境システム４００が参照するものであり、プロジェクトと呼ばれる単位でアプリを管理する領域である。また、ワークスペース４１４には複数のプロジェクトが格納されても構わない。ここで、プロジェクトは、マニフェストファイル４１７、ソースファイル４１８、クラスファイル、ＪＡＲファイルなどから構成される。ここで、マニフェストファイル４１７とは、アプリの持つ各種情報が記載されたファイルであり、詳細については後述する。一方、組込みアプリ開発支援ツール４０５を利用して、アプリを開発すると、差分情報指摘設定ファイル４１６がプロジェクトに生成される。差分情報指摘設定ファイル４１６は、動作差分解析手段４０６が指摘対象とする画像形成装置の種類や、指摘するサポートレベルが格納されている。
【００２９】
図５は、表示部３０６に表示される統合開発環境システム４００の操作画面の一例である。ソースファイル編集画面５０１では、プロジェクト内のソースファイル４１８が表示される。この際、統合開発環境システム４００の設定によって、行番号や、警告マークやエラーマークなどを合わせて表示することもできる。なお、本実施例では、サポートレベルに関する情報をサポートレベルマーク１２００として表示するが、詳細については後述する。プロジェクト・エクスプローラ５０２には、開発中のアプリの一覧がプロジェクトの単位で表示されている。また、入力装置３０５を介してプロジェクト・エクスプローラ５０２内の開発対象プロジェクトを選択するとプロパティウィンドウが表示され、差分情報指摘設定ボタン５０３およびシミュレータランチャー起動ボタン５０４が表示される。差分情報指摘設定ボタン５０３は、入力装置３０５から選択の通知を受け付けると差分情報指摘設定手段４１３を内部的に呼び出し、表示部３０６に差分情報指摘設定画面９００を表示する。シミュレータランチャー起動ボタン５０４は、選択されるとシミュレータランチャー起動手段４１１を内部的に呼び出す。ＡＰＩ動作差分情報プロパティ画面５０５は、アプリが利用しているＡＰＩ２１１のサポートレベルを表示する領域であり、詳細は後述する。
【００３０】
図６は、マニフェストファイル４１７の構成要素を表す。各要素は、属性と属性値が対になって列挙されたものである。アプリの情報を表すアプリ名６０２は、アプリの名称を記入する要素である。デバイス仕様ＩＤ（ＤＩＤ）６０３は、機種ごとに割り当てられている識別子を記入するための要素である。ＤＩＤ６０３には、アプリが動作対象とするＤＩＤを、列挙する。なお、画像形成装置のＤＩＤが、ＤＩＤ６０３に含まれているときに限り、アプリのインストールが可能である。仕様バージョン６０４は、アプリが利用可能な画像形成装置ごとに定義されている機能に割り当てられた番号である。例えば、ＳＳＬ機能であれば５、画像変換処理機能であれば１０、といったものである。開発者は、アプリが使用する上述した機能の番号を仕様バージョンとして列挙する。なお、マニフェストファイル４１７が持つ属性情報は上述した要素に限定されない。
【００３１】
図７は、動作差分情報テーブル４０８の構造を表している。動作差分情報テーブル４０８は、ＡＰＩ２１１の一覧と、シミュレータごとのサポートレベルを格納しているものである。なお、サポートレベルは、４段階に分かれており、フルサポート、シミュレーションサポート、一部サポート、非サポートと表現する。フルサポートは、画像形成装置と完全に同じ動作をすることを表す。シミュレーションサポートは、固定的な状態遷移に基づいて動作することを表す。即ち、画像形成ユニット等のハードウェア資源の状態に応じた状態遷移ではなく、時間経過に応じた状態遷移に基づく動作である。よって、疑似的な動作のため、画像形成装置でシミュレーションした場合と齟齬が発生する可能性はある。一部サポートは、一部の処理を除いて動作することを表す。例えば、画像形成装置の状態に基づいて様々なイベントを受け付けるＡＰＩの場合、シミュレータでは、発生しないイベント（用紙トレイのオープンや原稿検知など）はサポートできない。非サポートは、シミュレータでは動作しないことを表す。ここでは、便宜上、フルサポートを◎、シミュレーションサポートを○、一部サポートを△、非サポートを×と表す。図７では、ｃｏｐｙ  ＡＰＩはシミュレータＡでは、一部サポート、シミュレータＢでは、シミュレーションサポート、シミュレータＣ、シミュレータＺでは一部サポートであることを表す。なお、シミュレータＡやシミュレータＢは、それぞれ、画像形成装置Ａ、画像形成装置Ｂに対応するシミュレータを指す。以後、シミュレータに応じて取得したサポートレベルのことを動作差分情報と呼ぶことにする。
【００３２】
図８は、ＡＰＩ利用状況情報テーブル４０９の構造を表している。ＡＰＩ利用状況情報テーブル４０９は、アプリごとに、アプリが使用しているＡＰＩ２１１に関する情報の一覧をアプリ−ＡＰＩ対応詳細情報８００として格納している。図８では、アプリ１が、ｃｏｐｙ  ＡＰＩをＡｐｐ１Ｃｌａｓｓ１．ｊａｖａ（登録商標）ファイルの１２３行目で利用しており、ｇｅｔＣｏｐｙＤｅｖｉｃｅというアプリが定義したＡＰＩから呼び出していることを表している。
【００３３】
図９（Ａ）は、差分情報指摘設定ボタン５０３の選択通知に基づいて統合開発環境システム４００が表示部３０６に表示する動作差分情報指摘設定画面９００である。動作差分情報指摘設定画面９００では、動作差分解析手段４０６がシミュレータとの動作差分を指摘する際に、どのサポートレベルのＡＰＩを指摘するかを、指摘レベル設定９０１で行える。ここでは、指摘レベル設定９０１が、非サポート・一部のみサポートのものとなっている。このため、アプリが利用しているシミュレーションサポートおよびフルサポートとなっているＡＰＩについては、指摘対象外となる。また、動作差分解析手段４０６は、標準では、動作差分情報テーブル４０８からアプリのマニフェストファイル４１７のＤＩＤ６０３に基づいた画像形成装置の情報を取得してサポートレベルに応じた指摘を行う。一方、動作差分情報指摘設定画面９００では、対象画像形成装置設定９０２で指摘対象となる画像形成装置を選択できる。これにより、開発者が意図して新しい画像形成装置向けにアプリを実装しているときに、古い画像形成装置向けの指摘を抑制できるようになる。ここでは、指定されたシミュレータが複数存在する。具体的には、画像形成装置Ａ、画像形成装置Ｂ、画像形成装置Ｃが選択指定されており、画像形成装置Ｄの動作差分に関しては指摘対象外となる。また、動作差分解析手段４０６には、後述するようにアプリを動作させるシミュレータが決定した時点で、仕様バージョンが確定し、アプリの実行スコープが決定されることを利用して、指摘の精度を向上させる、動的解析機能９０３がある。ただし、動的解析機能９０３は、アプリの規模によっては処理に時間がかかり、開発者を待たせる可能性がある。このため、動作差分情報指摘設定画面９００では動的解析機能の有効・無効を設定できる。これらの指摘設定情報が、図９（Ｂ）に示すような構造で差分情報指摘設定ファイル４１６に格納される。
【００３４】
図１０は、ソースファイル編集画面５０１にて、ソースファイル４１８の変更が発生した時の処理を表すフローチャートである。なお、組込みアプリ開発支援ツール４０５は、統合開発環境システム４００の起動時に、初期化が開始される。その際、組込みアプリ開発支援ツール４０５は、統合開発基盤４０１に対してソースファイル４１８の変更時にその変更情報を通知するように要求してある。
【００３５】
ステップ１００１では、動作差分解析手段４０６は、統合開発基盤４０１から変更のあったソースファイル４１８の属するプロジェクト４１５に関する情報を取得する。ステップ１００２では、動作差分解析手段４０６は、取得したプロジェクト情報から差分情報指摘設定ファイル４１６をＲＡＭ３０３に読み込む。このとき、ＲＡＭ３０３には、指摘レベル設定９０１、対象画像形成装置設定９０２と動的解析機能９０３に関する設定情報が読み込まれる。ステップ１００３では、動作差分解析手段４０６は、ＲＡＭ３０３に読み込まれた対象画像形成装置設定９０２の情報を元に、動作差分情報テーブル４０８から、ＡＰＩ２１１に関する動作差分情報を取得し、ＲＡＭ３０３に読み込む。ステップ１００４では、動作差分解析手段４０６は、統合開発基盤４０１から取得したソースファイル４１８の変更情報に、ＲＡＭ３０３に読み込んだ動作差分情報に存在するＡＰＩ２１１が含まれているかを確認する。ＡＰＩ２１１が含まれていなければ、ソースファイル編集画面５０１を更新する必要がないため処理を終了する。ＡＰＩ２１１が含まれている場合は、ステップ１００５に処理を移す。ステップ１００５では、動作差分解析手段４０６は、ＡＰＩ利用状況情報テーブル４０９に、該当するＡＰＩ２１１に関する諸情報を登録し、ＨＤＤ３０４にＡＰＩ利用状況情報テーブル４０９の内容を書き込む。なお、登録するＡＰＩ２１１に関する諸情報として、本実施例では、ＡＰＩ名称、ファイル名称、ＡＰＩの呼び出し行番号、ＡＰＩ２１１の呼び出し元ＡＰＩを挙げているが、これらに限定されるわけではないことに注意されたい。
【００３６】
ステップ１００６では、動作差分解析手段４０６は、ＲＡＭ３０３に読み込まれた指摘レベル設定９０１と動作差分情報から図１１に示す表示制御テーブル１１００を生成する。表示制御テーブル１１００は、シミュレータごとのサポートレベルと、ソースファイル編集画面５０１にサポートレベルマーク１２００を表示するか、しないかを表す表示可否情報１１０１を格納したものである。図１１の表示制御テーブル１１００の生成について説明する。動作差分解析手段４０６は、ＲＡＭ３０３に読み込まれた各シミュレータのＡＰＩに対するサポートレベルから、動作差分情報指摘設定画面９００を介して指定されたシミュレータのＡＰＩに対するサポートレベルを特定する。図１１では、ＡＰＩ２１１に含まれるｉｍａｇｉｎｇＴｏＣｏｍｐｒｅｓｓｅｄＰＤＦという、スキャンした画像を圧縮率の高いＰＤＦ（Ｐｏｒｔａｂｌｅ  Ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）ファイルに変換するＡＰＩが、ソースファイル４１８に追記されたときの制御状態を示している。なお、この例では、指摘レベル設定９０１には、非サポートおよび一部のみサポートが、対象画像形成装置設定９０２には、シミュレータＡ、シミュレータＢ、シミュレータＣが設定されている。ここで、シミュレータＡでは、ｉｍａｇｉｎｇＴｏＣｏｍｐｒｅｓｓｅｄＰＤＦが非サポートであり、指摘レベル設定９０１の範囲内であるため、本ＡＰＩについては、サポートレベルマーク１２００として表示する、という判断になる。同様に、シミュレータＣでは、ｉｍａｇｉｎｇＴｏＣｏｍｐｒｅｓｓｅｄＰＤＦが一部サポートであり、指摘レベル設定９０１の範囲内であるため、本ＡＰＩについては、サポートレベルマーク１２００として表示する、という判断になる。一方で、シミュレータＢでは、ｉｍａｇｉｎｇＴｏＣｏｍｐｒｅｓｓｅｄＰＤＦがシミュレーションサポートであり、指摘レベル設定９０１の範囲外であるため、本ＡＰＩについては、サポートレベルマーク１２００として表示しない、という判断になる。ステップ１００７では、動作差分解析手段４０６は、表示制御テーブル１１００の情報をエディター更新手段４１０に通知する。ステップ１００８では、エディター更新手段４１０は、表示可否情報１１０１が「表示」となっている対象シミュレータのうち、サポートレベルが全て同一であるかを確認する。このとき、サポートレベルが全て同一である場合、ステップ１００９に処理を進める。逆に、例えば、図１１では、シミュレータＡおよびシミュレータＣが表示対象となっているが、サポートレベルはそれぞれ異なっている。このような場合は、ステップ１０１０に処理を進めることになる。ステップ１００９では、エディター更新手段４１０は、サポートレベル情報をアイコン情報に変換し、統合開発基盤４０１にソースファイル編集画面５０１にサポートレベルマーク１２００を表示するように要求する。ステップ１０１０では、エディター更新手段４１０は、最も低いサポートレベル情報をアイコン情報に変換し、付加情報をつけて、ソースファイル編集画面５０１にサポートレベルマークを表示するように要求する。
【００３７】
図１２、ソースファイル編集画面５０１およびＡＰＩ動作差分情報プロパティ画面５０５を表しており、アプリがＡＰＩ２１１を利用している箇所を抜粋したものである。この例では、ｉｍａｇｉｎｇＴｏＰＤＦ、ｉｍａｇｉｎｇＴｏＣｏｍｐｒｅｓｓｅｄＰＤＦ、ｉｍａｇｉｎｇＴｏＣｏｍｐｒｅｓｓｅｄＳｅａｒｃｈａｂｌｅＰＤＦがＡＰＩ２１１に該当する。なお、指摘レベル設定９０１は、非サポート、一部のみサポート、対象画像形成装置設定９０２は、画像形成装置Ａ、画像形成装置Ｂ、画像形成装置Ｙが有効になっている。ここで、ｉｍａｇｉｎｇＴｏＰＤＦに対して、サポートレベルマーク１２００の表示がないのは、本ＡＰＩがシミュレーションサポートあるためである。一方で、ｉｍａｇｉｎｇＴｏＣｏｍｐｒｅｓｓｅｄＰＤＦは、シミュレータＡおよびシミュレータＣでは、指摘レベル設定９０１に該当するサポートレベルとなっており、サポートレベルマーク１２００が横に表示されている。即ち、シミュレータＡおよびシミュレータＣは、特定されたシミュレータであり、特定されたサポートレベルが動作差分情報指摘設定画面９００を介して指定されたシミュレータのＡＰＩに対するサポートレベルに含まれる場合にサポートレベルマークが表示される。加えて、シミュレータＡおよびシミュレータＣでは、サポートレベルが異なっているためサポートレベルマークに付加情報として「！」が記されている。これにより、ソースファイルの該当箇所は画像形成装置ごとにサポートレベルが異なることが認識できる。表示として「！」を表示したが、夫々のサポートレベルに対応するサポートレベルマークを同時に表示しても良い。
【００３８】
また、ｉｍａｇｉｎｇＴｏＣｏｍｐｒｅｓｓｅｄＳｅａｒｃｈａｂｌｅＰＤＦは、シミュレータＡおよびシミュレータＣでは非サポートであるため、サポートレベルマーク１２００が表示されている。この時、シミュレータＡおよびシミュレータＣのサポートレベルは同一であるため、非サポートを示すマークのみ表示される。ＡＰＩ動作差分情報プロパティ画面５０５には、このような、ＡＰＩごとのサポートレベルに関する情報が表示される。なお、ソースファイル編集画面５０１にて選択中の行（図１２では、ｉｍａｇｉｎｇＴｏＣｏｍｐｒｅｓｓｅｄＰＤＦ（ｓｔｒｅａｍ）；）に関する情報は、反転して表示される。なお、実施例１ではサポートレベルマークを表示する形態としたが必ずしもこのような表示である必要はない。例えば、ＡＰＩに該当する部分をサポートレベルに応じて色を変更して表示する形態であっても良い。このように、ＡＰＩに対する画像形成装置とシミュレータとの動作差分が認識でるように表示することができれば、どのような表示形態であっても良い。
【００３９】
図１３（Ａ）は、シミュレータランチャー起動ボタン５０４の選択通知に基づいてシミュレータランチャー起動手段４１１が操作部３０６に出力されている状況を表している。選択されたシミュレータが起動対象のシミュレータとなる。
【００４０】
図１３（Ｂ）は、シミュレータランチャー起動手段４１１からシミュレータを起動するときに、注意事項確認画面１４００および注意事項確認画面１４０１を操作部３０６に出力するまでのフローチャートである。ステップ１３００では、シミュレータランチャー起動手段４１１は、選択された画像形成装置名をＡＰＩ利用状況表示手段４１２に通知する。ステップ１３０１では、ＡＰＩ利用状況表示手段４１２は、動作差分解析手段４０６に、選択された画像形成装置に対応したＡＰＩの利用状況を生成するように要求する。ステップ１３０２では、動作差分解析手段４０６は、動作差分情報テーブル４０８から選択された画像形成装置に対応するシミュレータに関する動作差分情報を取得しＲＡＭ３０３に読み込む。ステップ１３０３では、動作差分解析手段４０６は、差分情報指摘設定ファイル４１６をＲＡＭ３０３に読み込み、動的解析機能９０３が無効であるかを確認する。無効の場合、ステップ１３０４へ、有効の場合、ステップ１３０８へ処理をすすめる。ステップ１３０４では、動作差分解析手段４０６は、統合開発基盤４０１に対して、プロジェクト・エクスプローラ５０２で選択中のプロジェクト４１５に関する情報を取得する。そして、動作差分解析手段４０６は、ＡＰＩ利用状況情報テーブル４０９から、取得したアプリのプロジェクト４１５の情報を元に対応するアプリ−ＡＰＩ対応詳細情報８００を取得する。ステップ１３０５では、動作差分解析手段４０６は、アプリに対応するアプリ−ＡＰＩ対応詳細情報８００から取得したＡＰＩと動作差分情報を照らし合わせてフルサポート以外のアプリ−ＡＰＩ対応詳細情報８００を抽出する。そして、動作差分解析手段４０６は、抽出した情報をＡＰＩ利用状況表示手段４１２に返す。ステップ１３０６では、ＡＰＩ利用状況表示手段４１２は、動作差分解析手段４０６から受け取った結果を、表示するように統合開発基盤４０１に要求する。その結果、図１４（Ａ）の注意事項確認画面１４００が表示される。注意事項確認画面１４００には、起動するシミュレータ（図１４（Ａ）では、シミュレータＡ）上でフルサポートではないＡＰＩに関する諸情報が表示されている。一方、ステップＸ１３０８では、動的解析機能９０３が有効であるため、動作差分解析手段４０６は、選択中のプロジェクトの全てのソースに対して、仕様バージョン６０４による分岐制御を考慮して、アプリ−ＡＰＩ対応詳細情報８００を生成しなおす。具体的には、画像形成装置Ａで定義されている仕様バージョン６０４が１０のみの場合、図１２のソースファイル４１８上では、以下の制御文によるスコープ内の処理しか画像形成装置Ａ上では実行されることがない。
【００４１】
ｉｆ（Ｓｙｓｔｅｍ．ｇｅｔＰｒｏｐｅｒｔｙ（“ＳｐｅｃＩＤ”）．  ｉｎｄｅｘＯｆ（“１０”））  ｛
ｉｍａｇｉｎｇＴｏＰＤＦ（ｓｔｒｅａｍ）；
｝
なお、Ｓｙｓｔｅｍ．ｇｅｔＰｒｏｐｅｒｔｙ（“ＳｐｅｃＩＤ”）は、画像形成装置で定義されている仕様バージョン６０４を取得するための記述である。そして、Ｓｙｓｔｅｍ．ｇｅｔＰｒｏｐｅｒｔｙ（“ＳｐｅｃＩＤ”）．ｉｎｄｅｘＯｆ（“１０”）は、取得した仕様バージョン６０４に１０が含まれているかどうかの真偽値を返すものである。この動的解析機能９０３により、ｉｍａｇｉｎｇＴｏＣｏｍｐｒｅｓｓｅｄＰＤＦ、ｉｍａｇｉｎｇＴｏＣｏｍｐｒｅｓｓｅｄＳｅａｒｃｈａｂｌｅＰＤＦは、同一ソースファイル４１８上に存在するものの、画像形成装置Ａ上では処理されないため、図１４（Ｂ）の注意事項確認画面１４０１上では、指摘されなくなる。
【００４２】
以上により、画像形成装置のアプリ開発者は、統合開発環境システム４００に登録された組込みアプリ開発支援ツール４０５を使うことで、開発中のアプリが利用しているＡＰＩ２１１が動作確認対象としているシミュレータで利用可能かを実行前に判断できる。例えば、開発者が、画像形成装置Ａで動作するアプリがシミュレータＡでは利用できないＡＰＩ２１１をソースファイル編集画面５０１で追記した場合、サポートレベルマーク１２００として表示される。このため、開発者は、該当箇所に関する動作確認はシミュレータでも十分なのか、実際の画像形成装置で行うべきなのかを容易に判断できる。これにより、画像形成装置上での動作確認作業を削減できる。また、アプリが複数の画像形成装置上で動作することを想定している場合に、組込みアプリ開発支援ツール４０５は、シミュレータごとのサポートレベルの差異がわかるように表示する。このため、例えば、同一の動作確認をシミュレータＡおよびシミュレータＢで実施するときに、シミュレータＡでは動いたから、シミュレータＢでも動くという開発者の思い込みによる誤った動作確認作業を未然に防げるようになる。また、シミュレータ起動前に、シミュレータ上で動作を保証しないＡＰＩに関する情報を注意事項確認画面１４００として表示する。これにより、開発者は、実際に動作確認作業をする直前に、シミュレータでのサポートレベルに応じてアプリが利用しているＡＰＩ２１１に関する情報を確認できる。また、動的解析機能９０３を有効にすると、アプリが仕様バージョンによるＡＰＩ２１１の利用を分岐制御している場合、動作確認を実施するシミュレータに基づいてソースファイル４１８上の指摘するスコープを制限できる。これにより、注意事項確認画面１４０１での不要な指摘を削減できるため、開発者の視認性が向上する。
【符号の説明】
【００４３】
４０６  動作差分解析手段
４０８  動作差分情報テーブル
４０９  ＡＰＩ利用状況情報テーブル
４１０  エディター更新手段
４１２  ＡＰＩ利用状況表示手段
【図１】
2013145502.tif 000003
【図２】
2013145502.tif 000004
【図３】
2013145502.tif 000005
【図４】
2013145502.tif 000006
【図５】
2013145502.tif 000007
【図６】
2013145502.tif 000008
【図７】
2013145502.tif 000009
【図８】
2013145502.tif 000010
【図９】
2013145502.tif 000011
【図１０】
2013145502.tif 000012
【図１１】
2013145502.tif 000013
【図１２】
2013145502.tif 000014
【図１３】
2013145502.tif 000015
【図１４】
2013145502.tif 000016