(57)【特許請求の範囲】
【請求項１】
第一の言語で記述された第一のプログラムを実行する第一の環境および第二の言語で記述された第二のプログラムを実行する第二の環境を備える画像形成装置であって、
インストールする対象のプログラムである対象プログラムが前記第二の言語で記述されている場合に、当該対象プログラムに示される特定の機能が前記第一の環境においてサポートされていれば、当該対象プログラムを前記第一の言語に変換することによって他言語対象プログラムを生成する、変換手段と、
前記第一のプログラムを記憶する第一の記憶手段と、
前記第二のプログラムを記憶する第二の記憶手段と、
を有し、
前記第二の記憶手段は、前記対象プログラムを前記第二のプログラムとして記憶し、
前記変換手段は、前記対象プログラムが実行される際に、前記他言語対象プログラムを生成し、さらに、前記第二の環境が削除される際に、前記第二の記憶手段に記憶されている前記第二のプログラムを前記第一の言語に変換し、前記第一の記憶手段に記憶させる、
ことを特徴とする画像形成装置。
【請求項２】
第一の言語で記述された第一のプログラムを実行する第一の環境および第二の言語で記述された第二のプログラムを実行する第二の環境を備える画像形成装置であって、
インストールする対象のプログラムである対象プログラムが前記第二の言語で記述されている場合に、当該対象プログラムに示される特定の機能が前記第一の環境においてサポートされており、かつ、当該特定の機能が前記第二の環境に用意されているＡＰＩ（Application Program Interface）によって定義され当該画像形成装置において所定の頻度または回数以上、使用されていれば、当該対象プログラムを前記第一の言語に変換することによって他言語対象プログラムを生成する、変換手段、
を有することを特徴とする画像形成装置。
【請求項３】
第一の言語で記述された第一のプログラムを実行する第一の環境および第二の言語で記述された第二のプログラムを実行する第二の環境を備える画像形成装置であって、
インストールする対象のプログラムである対象プログラムが前記第二の言語で記述されている場合に、当該対象プログラムに示される特定の機能が前記第一の環境においてサポートされていれば、当該対象プログラムを前記第一の言語に変換することによって他言語対象プログラムを生成する、変換手段と、
前記対象プログラムが前記第一の言語で記述されている場合に、当該対象プログラムに示される第二の特定の機能が前記第一の環境においてサポートされていなければ、当該対象プログラムを前記第二の言語に変換することによって第二の他言語対象プログラムを生成する、第二の変換手段と、
を有することを特徴とする画像形成装置。
【請求項４】
第一の言語で記述されかつウェブブラウザ側で実行される第一のプログラムを実行する第一の環境および第二の言語で記述されかつウェブサーバ側で実行される第二のプログラムを実行する第二の環境を備える画像形成装置であって、
インストールする対象のプログラムである対象プログラムが前記第二の言語で記述されている場合に、当該対象プログラムに示される特定の機能が前記第一の環境においてサポートされていれば、当該対象プログラムを前記第一の言語に変換することによって他言語対象プログラムを生成する、変換手段、
を有することを特徴とする画像形成装置。
【請求項５】
前記第一のプログラムを記憶する第一の記憶手段、
を有し、
前記変換手段は、前記対象プログラムをインストールする際に、前記他言語対象プログラムを生成し、
前記第一の記憶手段は、前記他言語対象プログラムを前記第一のプログラムとして記憶する、
請求項２ないし請求項４のいずれかに記載の画像形成装置。
【請求項６】
前記第二のプログラムを記憶する第二の記憶手段、
を有し、
前記第二の記憶手段は、前記対象プログラムを前記第二のプログラムとして記憶し、
前記変換手段は、前記対象プログラムが実行される際に、前記他言語対象プログラムを生成する、
請求項２ないし請求項４のいずれかに記載の画像形成装置。
【請求項７】
前記第一のプログラムを記憶する第一の記憶手段、
を有し、
前記変換手段は、さらに、前記第二の環境が削除される際に、前記第二の記憶手段に記憶されている前記第二のプログラムを前記第一の言語に変換し、前記第一の記憶手段に記憶させる、
請求項６に記載の画像形成装置。
【請求項８】
前記特定の機能は、前記第二の環境に用意されているＡＰＩ（Application Program Interface）によって定義されている機能である、
請求項１、請求項３、または請求項４に記載の画像形成装置。
【請求項９】
前記特定の機能は、当該画像形成装置の仕様に対応している機能である、
請求項８に記載の画像形成装置。
【請求項１０】
前記特定の機能は、当該画像形成装置において所定の頻度または回数以上、使用されている機能である、
請求項８に記載の画像形成装置。
【請求項１１】
前記対象プログラムが前記第一の言語で記述されている場合に、当該対象プログラムに示される第二の特定の機能が前記第一の環境においてサポートされていなければ、当該対象プログラムを前記第二の言語に変換することによって第二の他言語対象プログラムを生成する、第二の変換手段、
を有する、
請求項４に記載の画像形成装置。
【請求項１２】
第一の言語で記述された第一のプログラムを実行する第一の環境および第二の言語で記述された第二のプログラムを実行する第二の環境を備える画像形成装置へプログラムを提供するプログラム提供装置であって、
インストールする対象のプログラムである対象プログラムが前記第二の言語で記述されている場合に、当該対象プログラムに示される特定の機能が前記第一の環境においてサポートされており、かつ、当該特定の機能が前記第二の環境に用意されているＡＰＩ（Application Program Interface）によって定義され当該画像形成装置において所定の頻度または回数以上、使用されていれば、当該対象プログラムを前記第一の言語に変換することによって他言語対象プログラムを生成する、変換手段と、
前記他言語対象プログラムを前記画像形成装置へ送信する、送信手段と、
を有することを特徴とするプログラム提供装置。
【請求項１３】
第一の言語で記述されかつウェブブラウザ側で実行される第一のプログラムを実行する第一の環境および第二の言語で記述されかつウェブサーバ側で実行される第二のプログラムを実行する第二の環境を備える画像形成装置へプログラムを提供するプログラム提供装置であって、
インストールする対象のプログラムである対象プログラムが前記第二の言語で記述されている場合に、当該対象プログラムに示される特定の機能が前記第一の環境においてサポートされていれば、当該対象プログラムを前記第一の言語に変換することによって他言語対象プログラムを生成する、変換手段と、
前記他言語対象プログラムを前記画像形成装置へ送信する、送信手段と、
を有することを特徴とするプログラム提供装置。
【請求項１４】
第一の言語で記述された第一のプログラムを実行する第一の環境および第二の言語で記述された第二のプログラムを実行する第二の環境を備える画像形成装置へプログラムを提供するプログラム提供方法であって、
インストールする対象のプログラムである対象プログラムが前記第二の言語で記述されている場合に、当該対象プログラムに示される特定の機能が前記第一の環境においてサポートされており、かつ、当該特定の機能が前記第二の環境に用意されているＡＰＩ（Application Program Interface）によって定義され当該画像形成装置において所定の頻度または回数以上、使用されていれば、当該対象プログラムを前記第一の言語に変換することによって他言語対象プログラムを生成し、
前記他言語対象プログラムを前記画像形成装置において実行する、
ことを特徴とするプログラム提供方法。
【請求項１５】
第一の言語で記述されかつウェブブラウザ側で実行される第一のプログラムを実行する第一の環境および第二の言語で記述されかつウェブサーバ側で実行される第二のプログラムを実行する第二の環境を備える画像形成装置へプログラムを提供するプログラム提供方法であって、
インストールする対象のプログラムである対象プログラムが前記第二の言語で記述されている場合に、当該対象プログラムに示される特定の機能が前記第一の環境においてサポートされていれば、当該対象プログラムを前記第一の言語に変換することによって他言語対象プログラムを生成し、
前記他言語対象プログラムを前記画像形成装置において実行する、
ことを特徴とするプログラム提供方法。
【請求項１６】
第一の言語で記述された第一のプログラムを実行する第一の環境および第二の言語で記述された第二のプログラムを実行する第二の環境、前記第一のプログラムを記憶する第一の記憶手段、および前記第二のプログラムを記憶する第二の記憶手段を備える画像形成装置において実行されるインストール用プログラムであって、
当該画像形成装置に、
インストールする対象のプログラムである対象プログラムが前記第二の言語で記述されている場合に、当該対象プログラムに示される特定の機能が前記第一の環境においてサポートされていれば、当該対象プログラムが実行される際に当該対象プログラムを前記第一の言語に変換することによって他言語対象プログラムを生成する処理を実行させ、
前記対象プログラムを前記第二のプログラムとして前記第二の記憶手段に記憶させる処理を実行させ、
前記第二の環境が削除される際に、前記第二の記憶手段に記憶されている前記第二のプログラムを前記第一の言語に変換して前記第一の記憶手段に記憶させる処理を実行させる、
ことを特徴とするインストール用プログラム。
【請求項１７】
第一の言語で記述された第一のプログラムを実行する第一の環境および第二の言語で記述された第二のプログラムを実行する第二の環境を備える画像形成装置において実行されるインストール用プログラムであって、
当該画像形成装置に、
インストールする対象のプログラムである対象プログラムが前記第二の言語で記述されている場合に、当該対象プログラムに示される特定の機能が前記第一の環境においてサポートされており、かつ、当該特定の機能が前記第二の環境に用意されているＡＰＩ（Application Program Interface）によって定義され当該画像形成装置において所定の頻度または回数以上、使用されていれば、当該対象プログラムを前記第一の言語に変換することによって他言語対象プログラムを生成する処理を実行させる、
ことを特徴とするインストール用プログラム。
【請求項１８】
第一の言語で記述された第一のプログラムを実行する第一の環境および第二の言語で記述された第二のプログラムを実行する第二の環境を備える画像形成装置において実行されるインストール用プログラムであって、
当該画像形成装置に、
インストールする対象のプログラムである対象プログラムが前記第二の言語で記述されている場合に、当該対象プログラムに示される特定の機能が前記第一の環境においてサポートされていれば、当該対象プログラムを前記第一の言語に変換することによって他言語対象プログラムを生成する処理を実行させ、
前記対象プログラムが前記第一の言語で記述されている場合に、当該対象プログラムに示される第二の特定の機能が前記第一の環境においてサポートされていなければ、当該対象プログラムを前記第二の言語に変換することによって第二の他言語対象プログラムを生成する処理を実行させる、
ことを特徴とするインストール用プログラム。
【請求項１９】
第一の言語で記述されかつウェブブラウザ側で実行される第一のプログラムを実行する第一の環境および第二の言語で記述されかつウェブサーバ側で実行される第二のプログラムを実行する第二の環境を備える画像形成装置において実行されるインストール用プログラムであって、
当該画像形成装置に、
インストールする対象のプログラムである対象プログラムが前記第二の言語で記述されている場合に、当該対象プログラムに示される特定の機能が前記第一の環境においてサポートされていれば、当該対象プログラムを前記第一の言語に変換することによって他言語対象プログラムを生成する処理を実行させる、
ことを特徴とするインストール用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置におけるプログラムの適用の技術に関する。
【背景技術】
【０００２】
近年、コピー、スキャン、ファックス、ドキュメント管理など様々な機能が備わった画像形成装置が普及している。このような画像形成装置は、「複合機」または「ＭＦＰ（Multi Function Peripherals）」と呼ばれることもある。
【０００３】
また、画像形成装置にウェブブラウザが備えられるようになった。ウェブブラウザでウェブサーバへアクセスし、いわゆるウェブアプリケーションをウェブサーバに実行させることによって、様々なサービスを受けることができるようになった。
【０００４】
ウェブブラウザでウェブアプリケーションを実行させることもできる。ウェブブラウザで実行されるウェブアプリケーションの言語として、ＪａｖａＳｃｒｉｐｔ（登録商標）が普及している。ただし、ウェブアプリケーションを実行するには、ウェブブラウザと連携するエンジン（例えばＪａｖａＳｃｒｉｐｔＣｏｒｅ）が画像形成装置に備わっていなければならない。
【０００５】
さらに、「ＩＷＳ（Internal Web Server）」というウェブサーバを画像形成装置に設ける技術が、実現されている。これにより、画像形成装置の拡張性を従来よりも容易に向上させることができる。ウェブサーバで実行されるウェブアプリケーションの言語として、Ｐｙｔｈｏｎが普及している。
【０００６】
画像形成装置は、実行用のエンジンおよびウェブサーバの両方を備える場合は、いずれかに対応する言語で記述されたウェブアプリケーションを実行することができる。
【０００７】
しかし、実行用のエンジンおよびウェブサーバのうち実行用のエンジンが備わっていなければ、ウェブサーバに対応する言語で記述されたウェブアプリケーションしか実行することができない。
【０００８】
ところで、次のような、動作環境に依存することなく機能を実現するための方法が、提案されている。
【０００９】
機器管理装置は、所定のデータ伝送路を介して接続される１又は複数の機器を管理する装置であって、機器管理機能において管理対象機器及び／又は外部サーバとの通信を含むデータ処理を行う１又は複数のソフトウェア部品で構成されるデータ処理手段と、所定のプログラミング言語により定義された命令セットをプラットフォームで実行可能なコードに変換するコード変換手段と、を有し、データ処理手段は、１又は複数のソフトウェア部品に定義された命令セットが、コード変換手段により前記コードに変換され、プラットフォーム上で実行されることで動作する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１２−２１８３５２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ところで、従来、ウェブアプリケーションは、ウェブサーバに対応する言語によって開発されていた。
【００１２】
ところが、徐々に、ウェブブラウザと連携するエンジンに対応する言語によって開発されることが多くなった。ウェブサーバに対応する言語よりもエンジンに対応する言語のほうが、パフォーマンスが優れているからである。
【００１３】
しかし、古い画像形成装置には、ウェブブラウザと連携するエンジンが備わっていないことがある。
【００１４】
よって、従来、ウェブアプリケーションを２つの言語それぞれで開発しなければならない。
【００１５】
または、ウェブサーバに対応する言語で開発しなければならない。しかし、この場合は、ウェブブラウザと連携するエンジンを備える画像形成装置のパフォーマンスを十分に活用することが、できない。
【００１６】
本発明は、このような問題点に鑑み、ウェブブラウザに対応する言語で記述されたアプリケーションを画像形成装置において従来よりも有効的に使用できるようにすることを、目的とする。
【課題を解決するための手段】
【００１７】
本発明の一形態に係る画像形成装置は、第一の言語で記述された第一のプログラムを実行する第一の環境および第二の言語で記述された第二のプログラムを実行する第二の環境を備える画像形成装置であって、インストールする対象のプログラムである対象プログラムが前記第二の言語で記述されている場合に、当該対象プログラムに示される特定の機能が前記第一の環境においてサポートされていれば、当該対象プログラムを前記第一の言語に変換することによって他言語対象プログラムを生成する、変換手段と、前記第一のプログラムを記憶する第一の記憶手段と、前記第二のプログラムを記憶する第二の記憶手段と、を有し、
前記第二の記憶手段は、前記対象プログラムを前記第二のプログラムとして記憶し、
前記変換手段は、前記対象プログラムが実行される際に、前記他言語対象プログラムを生成し、さらに、前記第二の環境が削除される際に、前記第二の記憶手段に記憶されている前記第二のプログラムを前記第一の言語に変換し、前記第一の記憶手段に記憶させる
【００１８】
本発明の他の一形態に係る画像形成装置は、第一の言語で記述された第一のプログラムを実行する第一の環境および第二の言語で記述された第二のプログラムを実行する第二の環境を備える画像形成装置であって、インストールする対象のプログラムである対象プログラムが前記第二の言語で記述されている場合に、当該対象プログラムに示される特定の機能が前記第一の環境においてサポートされており、かつ、当該特定の機能が前記第二の環境に用意されているＡＰＩ（Application Program Interface）によって定義され当該画像形成装置において所定の頻度または回数以上、使用されていれば、当該対象プログラムを前記第一の言語に変換することによって他言語対象プログラムを生成する、変換手段、を有する。
【００１９】
本発明の他の一形態に係る画像形成装置は、第一の言語で記述された第一のプログラムを実行する第一の環境および第二の言語で記述された第二のプログラムを実行する第二の環境を備える画像形成装置であって、インストールする対象のプログラムである対象プログラムが前記第二の言語で記述されている場合に、当該対象プログラムに示される特定の機能が前記第一の環境においてサポートされていれば、当該対象プログラムを前記第一の言語に変換することによって他言語対象プログラムを生成する、変換手段と、前記対象プログラムが前記第一の言語で記述されている場合に、当該対象プログラムに示される第二の特定の機能が前記第一の環境においてサポートされていなければ、当該対象プログラムを前記第二の言語に変換することによって第二の他言語対象プログラムを生成する、第二の変換手段と、を有する。
【００２０】
本発明の一形態に係るプログラム提供装置は、第一の言語で記述された第一のプログラムを実行する第一の環境および第二の言語で記述された第二のプログラムを実行する第二の環境を備える画像形成装置へプログラムを提供するプログラム提供装置であって、インストールする対象のプログラムである対象プログラムが前記第二の言語で記述されている場合に、当該対象プログラムに示される特定の機能が前記第一の環境においてサポートされており、かつ、当該特定の機能が前記第二の環境に用意されているＡＰＩ（Application Program Interface）によって定義され当該画像形成装置において所定の頻度または回数以上、使用されていれば、当該対象プログラムを前記第一の言語に変換することによって他言語対象プログラムを生成する、変換手段と、前記他言語対象プログラムを前記画像形成装置へ送信する、送信手段と、を有する。
【発明の効果】
【００２１】
本発明によると、ウェブブラウザに対応する言語で記述されたアプリケーションを画像形成装置において従来よりも有効的に使用することができる。
【図面の簡単な説明】
【００２２】
【図１】画像処理システムの全体的な構成の例を示す図である。
【図２】画像形成装置のハードウェア構成の例を示す図である。
【図３】画像形成装置のプラットフォームの例を示す図である。
【図４】サーバ装置のハードウェア構成の例を示す図である。
【図５】画像形成装置の機能的構成の例を示す図である。
【図６】オブジェクト対応テーブルおよび対応関係データの例を示す図である。
【図７】第一の変換処理の流れの例を説明するフローチャートである。
【図８】ウェブアプリケーションのソースコードおよび変換の可否の例を示す図である。
【図９】第二の変換処理の流れの例を説明するフローチャートである。
【図１０】インストール制御プログラムによる全体的な処理の流れの例を説明するフローチャートである。
【図１１】サーバ装置の機能的構成の例を示す図である。
【図１２】ＪａｖａＳｃｒｉｐｔ版のウェブアプリケーションおよび対応バージョンの例を示す図である。
【図１３】アプリケーション提供プログラムによる全体的な処理の流れの例を説明するフローチャートである。
【発明を実施するための形態】
【００２３】
図１は、画像処理システム１００の全体的な構成の例を示す図である。図２は、画像形成装置１のハードウェア構成の例を示す図である。図３は、画像形成装置１のプラットフォームの例を示す図である。図４は、サーバ装置２１のハードウェア構成の例を示す図である。
【００２４】
画像処理システム１００は、図１に示すように、複数台の画像形成装置１、サーバ装置２１、端末装置２４、および通信回線２９などによって構成される。
【００２５】
各画像形成装置１、サーバ装置２１、および端末装置２４は、通信回線２９を介して通信することができる。通信回線２９として、インターネット、ＬＡＮ（Local Area Network）、公衆回線、または専用線などが用いられる。
【００２６】
画像形成装置１は、コピー、ＰＣプリント、ファックス、スキャナ、およびボックスなどのサービスを提供する。一般に、「複合機」または「ＭＦＰ（Multi Function Peripherals）」などと呼ばれることがある。
【００２７】
ＰＣプリントサービスは、パーソナルコンピュータまたはスマートフォンなどの端末装置から受信した画像データに基づいて画像を用紙に印刷するサービスである。「ネットワークプリンティング」または「ネットワークプリント」などと呼ばれることもある。
【００２８】
ボックスサービスは、ユーザごとに「ボックス」または「パーソナルボックス」などと呼ばれる記憶領域を与えておき、各ユーザが自分の記憶領域によって画像データなどを保存し管理するためのサービスである。ボックスは、パーソナルコンピュータにおける「フォルダ」または「ディレクトリ」に相当する。
【００２９】
以下、各画像形成装置１を「画像形成装置１Ａ」、「画像形成装置１Ｂ」、「画像形成装置１Ｃ」、…と区別して記載することがある。
【００３０】
画像形成装置１は、図２に示すように、ＣＰＵ（Central Processing Unit）１０ａ、ＲＡＭ（Random Access Memory）１０ｂ、ＶＲＡＭ（Video RAM）１０ｃ、ＲＯＭ（Read Only Memory）１０ｄ、補助記憶装置１０ｅ、タッチパネルディスプレイ１０ｆ、操作キーパネル１０ｇ、ＮＩＣ（Network Interface Card）１０ｈ、モデム１０ｉ、スキャンユニット１０ｊ、およびプリントユニット１０ｋなどによって構成される。
【００３１】
タッチパネルディスプレイ１０ｆは、ユーザに対するメッセージを示す画面、ユーザがコマンドまたは情報を入力するための画面、およびＣＰＵ１０ａが実行した処理の結果を示す画面などを表示する。また、タッチパネルディスプレイ１０ｆは、タッチされた位置を示す信号をＣＰＵ１０ａへ送る。
【００３２】
ＶＲＡＭ１０ｃは、タッチパネルディスプレイ１０ｆに表示させる画面のデータを記憶するために用いられる。
【００３３】
操作キーパネル１０ｇは、いわゆるハードウェアキーボードであって、テンキー、スタートキー、ストップキー、およびファンクションキーなどによって構成される。
【００３４】
ＮＩＣ１０ｈは、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）などのプロトコルによってサーバ装置２１との通信を行う。
【００３５】
モデム１０ｉは、ファクシミリ端末との間でＧ３などのプロトコルで画像データをやり取りする。
【００３６】
スキャンユニット１０ｊは、プラテンガラスの上にセットされたシートに記されている画像を読み取って画像データを生成する。
【００３７】
プリントユニット１０ｋは、スキャンユニット１０ｊによって読み取られた画像のほか、ＮＩＣ１０ｈまたはモデム１０ｉによって他の装置から受信した画像を用紙に印刷する。
【００３８】
ＲＯＭ１０ｄまたは補助記憶装置１０ｅには、図３に示すように、ＭＦＰシステム１０１が記憶されている。ＭＦＰシステム１０１は、オペレーティングシステムおよびファームウェアなどによって構成され、画像形成装置１の全体的な管理または基本的な処理を行ったりユーザインタフェースを提供したりする。
【００３９】
また、ＲＯＭ１０ｄまたは補助記憶装置１０ｅには、共通アプリケーションインタフェース（Common Application Program Interface）１０２を実現するためのプログラムまたはデータが用意されている。
【００４０】
共通アプリケーションインタフェース１０２は、アプリケーションが画像形成装置１の汎用的な機能を呼び出すための規約である。
【００４１】
さらに、補助記憶装置１０ｅには、コピーアプリケーション４０１、スキャンアプリケーション４０２、およびボックスアプリケーション４０３のほか、ブラウザアプリケーション４０４などが記憶されている。これらのアプリケーションは、共通アプリケーションインタフェース１０２の機能が用いられて記述されている。以下、これらのアプリケーションを「ネイティブアプリケーション４０」と記載する。
【００４２】
コピーアプリケーション４０１、スキャンアプリケーション４０２、およびボックスアプリケーション４０３は、それぞれ、上述のコピー、スキャン、およびボックスの各サービスを提供するためのアプリケーションである。
【００４３】
ブラウザアプリケーション４０４は、ウェブブラウザである。なお、一部の画像形成装置１には、ＪａｖａＳｃｒｉｐｔで記述されたプログラムを実行するためのインタプリタとしてＪａｖａＳｃｒｉｐｔＣｏｒｅが備わっている。しかし、残りの画像形成装置１には、ＪａｖａＳｃｒｉｐｔＣｏｒｅが備わっていない。ＪａｖａＳｃｒｉｐｔＣｏｒｅが備わっていなければ、ＪａｖａＳｃｒｉｐｔで記述されたプログラムを実行することができない。
【００４４】
以下、ＪａｖａＳｃｒｉｐｔＣｏｒｅが、画像形成装置１Ａに備わっており、画像形成装置１Ｂに備わっていない場合を例に説明する。ＪａｖａＳｃｒｉｐｔＣｏｒｅは、ブラウザアプリケーション４０４の一部分として備わっていてもよいし、ＭＦＰシステム１０１のファームウェアの一部分として備わっていてもよい。
【００４５】
また、ＪａｖａＳｃｒｉｐｔＣｏｒｅごとに、ＪａｖａＳｃｒｉｐｔの、対応しているバージョンが異なることがある。
【００４６】
ネイティブアプリケーション４０は、画像形成装置１の製造の際に固定的に画像形成装置１にインストールされており、次に説明するウェブアプリケーション４７よりもフレキシブル性が低い。
【００４７】
また、補助記憶装置１０ｅには、ウェブサーバシステム１０５が記憶されている。ウェブサーバシステム１０５は、ＩＷＳ（Internal Web Server）用のソフトウェアであって、ＩＷＳコア（IWS Core）１５１、パイソンエンジン（Python Engine）１５２、およびウェブサーバ（Web Server）１５３などのプログラムによって構成される。
【００４８】
ＩＷＳコア１５１は、ウェブサーバシステム１０５の全体的な処理を制御する。パイソンエンジン１５２は、Ｐｙｔｈｏｎによって記述されたスクリプト（プログラム）を実行する。ウェブサーバ１５３は、ウェブページをブラウザアプリケーション４０４へ提供する。
【００４９】
さらに、補助記憶装置１０ｅには、ウェブメニューアプリケーション４７１、簡易コピーアプリケーション４７２、および翻訳アプリケーション４７３などが記憶されている。
【００５０】
これらのアプリケーションは、ウェブサーバシステム１０５またはブラウザアプリケーション４０４によって実行される。
【００５１】
以下、ウェブサーバシステム１０５またはブラウザアプリケーション４０４によって実行されるアプリケーションを「ウェブアプリケーション４７」と記載する。
【００５２】
ウェブメニューアプリケーション４７１は、ウェブアプリケーション４７の選択ボタンからなるメニュー画面を表示し、ユーザが選択したウェブアプリケーション４７を起動するアプリケーションである。
【００５３】
コピーアプリケーション４７２は、用紙に記されている画像を読み取って別の用紙に印刷（複写）するためのアプリケーションである。したがって、コピーアプリケーション４０１と基本的に同様の役割を有する。ただし、画面がコピーアプリケーション４０１のものよりも簡素化されている。
【００５４】
翻訳アプリケーション４７３は、ある言語のテキストを他の言語のテキストに翻訳するアプリケーションである。
【００５５】
ウェブアプリケーション４７は、ＰｙｔｈｏｎまたはＪａｖａＳｃｒｉｐｔによって記述される。したがって、ネイティブアプリケーション４０よりもフレキシブル性が高い。
【００５６】
一般に、ＰｙｔｈｏｎにもＪａｖａＳｃｒｉｐｔにも、それぞれ独自のＡＰＩ（Application Program Interface）が用意されている。さらに、ＰｙｔｈｏｎのＡＰＩには、複数のオブジェクト（例えば、モジュール）が用意されている。また、ＪａｖａＳｃｒｉｐｔには、複数のオブジェクトが用意されている。以下、ＰｙｔｈｏｎのＡＰＩに用意されているオブジェクトを「Ｐｙｔｈｏｎオブジェクト」と記載し、ＪａｖａＳｃｒｉｐｔのＡＰＩに用意されているオブジェクトを「ＪａｖａＳｃｒｉｐｔオブジェクト」と記載する。
【００５７】
ウェブサーバシステム１０５にも同様に、ＰｙｔｈｏｎのＡＰＩが備わっている。さらに、ＪａｖａＳｃｒｉｐｔＣｏｒｅを有す画像形成装置１には、ＪａｖａＳｃｒｉｐｔのＡＰＩが備わっている。
【００５８】
補助記憶装置１０ｅとして、ハードディスクまたはＳＳＤ（Solid State Drive）などが用いられる。
【００５９】
図３〜図４に示した要素の一部または全部を、組込みソフトウェアによって実現してもよいし、ＦＰＧＡ（Field Programmable Gate Array）またはＡＳＩＣ（Application Specific Integrated Circuit）などによって実現してもよい。
【００６０】
図１に戻って、サーバ装置２１は、アプリケーションを画像形成装置１へ提供する装置である。
【００６１】
サーバ装置２１は、図４に示すように、ＣＰＵ２１ａ、ＲＡＭ２１ｂ、ＲＯＭ２１ｃ、大容量記憶装置２１ｄ、およびＮＩＣ２１ｅなどによって構成される。
【００６２】
ＮＩＣ２１ｅは、ＴＣＰ／ＩＰなどのプロトコルによって画像形成装置１との通信を行う。
【００６３】
ＲＯＭ２１ｃまたは大容量記憶装置２１ｄには、アプリケーション提供プログラム２１Ｐが記憶されている。アプリケーション提供プログラム２１Ｐは、ＲＡＭ２１ｂにロードされ、ＣＰＵ２１ａによって実行される。大容量記憶装置２１ｄとして、ハードディスクまたはＳＳＤなどが用いられる。アプリケーション提供プログラム２１Ｐについては、後述する。
【００６４】
ところで、上述の通り、画像処理システム１００には、ＪａｖａＳｃｒｉｐｔで記述されたアプリケーションを実行することができる画像形成装置１もあれば、実行することができない画像形成装置１もある。
【００６５】
ＭＦＰシステム１０１には、インストール制御プログラム１０３が備わっている。インストール制御プログラム１０３は、ウェブアプリケーション４７を新たに画像形成装置１自身にインストールするためのプログラムである。
【００６６】
インストール制御プログラム１０３によると、新たなウェブアプリケーション４７を、画像形成装置１自身の特性（ＪａｖａＳｃｒｉｐｔＣｏｒｅの有無など）に応じて適宜、書き換えて、画像形成装置１自身にインストールすることができる。以下、この仕組みについて、説明する。
【００６７】
図５は、画像形成装置１の機能的構成の例を示す図である。図６は、オブジェクト対応テーブル６１および対応関係データ６１Ａの例を示す図である。図７は、第一の変換処理の流れの例を説明するフローチャートである。図８は、ウェブアプリケーション４７Ｘのソースコードおよび変換の可否の例を示す図である。図９は、第二の変換処理の流れの例を説明するフローチャートである。
【００６８】
インストール制御プログラム１０３によると、図５に示すオブジェクト対応テーブル記憶部１３１、言語判別部１３２、第一の変換処理部１３３、第一のファイル書込部１３４、第二の変換処理部１３５、第二のファイル書込部１３６、および通常インストール処理部１３７などが実現される。
【００６９】
オブジェクト対応テーブル記憶部１３１には、オブジェクト対応テーブル６１が記憶されている。オブジェクト対応テーブル６１には、図６のように、Ｐｙｔｈｏｎオブジェクトごとに、対応関係データ６１Ａが格納されている。
【００７０】
対応関係データ６１Ａには、Ｐｙｔｈｏｎオブジェクトのオブジェクト名、それに対応するＪａｖａＳｃｒｉｐｔオブジェクトのオブジェクト名、およびＪａｖａＳｃｒｉｐｔのバージョンごとの、そのＪａｖａＳｃｒｉｐｔオブジェクトのサポートの可否が示されている。「○」がそのＪａｖａＳｃｒｉｐｔオブジェクトをサポートしていることを意味し、「×」がそのＪａｖａＳｃｒｉｐｔオブジェクトをサポートしていないことを意味する。Ｐｙｔｈｏｎオブジェクトがモジュールである場合は、モジュール名が示される。ＪａｖａＳｃｒｉｐｔオブジェクトについても、同様である。
【００７１】
例えば、対応関係データ６１Ａ８には、「Ｃｏｐｙ．ａｄｄＷａｔｅｒＭａｒｋ」というオブジェクト名の、透かしを追加するＰｙｔｈｏｎオブジェクトのオブジェクトが、「Ｃｏｐｙ．ａｄｄＷａｔｅｒＭａｒｋ」というオブジェクト名のＪａｖａＳｃｒｉｐｔオブジェクトに対応しており、このＪａｖａＳｃｒｉｐｔオブジェクトがＪａｖａＳｃｒｉｐｔのバージョン「１．０」では対応されていないがバージョン「２．０」、「２．１」、および「３．０」では対応されていることが、示されている。
【００７２】
ウェブアプリケーション４７は、言語判別部１３２ないし通常インストール処理部１３７によって画像形成装置１へインストールされる。以下、ウェブアプリケーション４７として新たなウェブアプリケーション４７Ｘがインストールされる際の処理を例に、言語判別部１３２ないし通常インストール処理部１３７の処理について説明する。
【００７３】
言語判別部１３２は、ウェブアプリケーション４７ＸがＰｙｔｈｏｎおよびＪａｖａＳｃｒｉｐｔのいずれの言語で記述されているのかを判別する。例えば、ウェブアプリケーション４７ＸにＰｙｔｈｏｎ独自のコードが記述されていれば、Ｐｙｔｈｏｎで記述されていると判別する。ＪａｖａＳｃｒｉｐｔ独自のコードが記述されていれば、ＪａｖａＳｃｒｉｐｔで記述されていると判別する。
【００７４】
第一の変換処理部１３３は、ウェブアプリケーション４７ＸがＰｙｔｈｏｎによって記述されており、かつ、画像形成装置１自身のブラウザアプリケーション４０４がＪａｖａＳｃｒｉｐｔに対応している場合に、ウェブアプリケーション４７ＸをＪａｖａＳｃｒｉｐｔに変換する処理を実行する。この処理は、図７に示す手順で実行される。
【００７５】
第一の変換処理部１３３は、ウェブアプリケーション４７Ｘに記述されるＰｙｔｈｏｎオブジェクトに対応するＪａｖａＳｃｒｉｐｔオブジェクトがあるか否かをチェックし、さらに、そのＪａｖａＳｃｒｉｐｔオブジェクトが画像形成装置１自身のＪａｖａＳｃｒｉｐｔＣｏｒｅのバージョンでサポートされているか否かをチェックする（図７の＃７０１）。
【００７６】
なお、ウェブアプリケーション４７ＸにＰｙｔｈｏｎオブジェクトが複数記述されている場合は、第一の変換処理部１３３は、それぞれのＰｙｔｈｏｎオブジェクトについて、ステップ＃７０１のチェックを行う。
【００７７】
第一の変換処理部１３３は、ウェブアプリケーション４７Ｘに記述されるＰｙｔｈｏｎオブジェクトのすべてに、対応するＪａｖａＳｃｒｉｐｔオブジェクトがあり、かつ、これらのＪａｖａＳｃｒｉｐｔオブジェクトのすべてが画像形成装置１自身のＪａｖａＳｃｒｉｐｔＣｏｒｅのバージョンでサポートされている場合は（＃７０２でＹｅｓ）、オブジェクト対応テーブル６１（図６参照）に基づいて、これらのＰｙｔｈｏｎオブジェクトのそれぞれを、対応するＪａｖａＳｃｒｉｐｔオブジェクトに置き換える（＃７０３）。
【００７８】
例えば、ウェブアプリケーション４７Ｘに「ｍｆｐ．ｊｏｂ．Ｃｏｐｙ」というオブジェクト名のＰｙｔｈｏｎオブジェクトが含まれており、ＪａｖａＳｃｒｉｐｔＣｏｒｅが対応しているＪａｖａＳｃｒｉｐｔのバージョンが「２．０」以降である場合は、第一の変換処理部１３３は、対応関係データ６１Ａ７に基づいて、このＰｙｔｈｏｎオブジェクトを「ｋｍ＿ｍｆｐ．ｃｏｐｙ」というオブジェクトのＪａｖａＳｃｒｉｐｔオブジェクトに置き換える。
【００７９】
さらに、第一の変換処理部１３３は、ＰｙｔｈｏｎおよびＪａｖａＳｃｒｉｐｔそれぞれの文法に基づいて、Ｐｙｔｈｏｎオブジェクト以外の要素のコード（例えば、機種などに依存しないコード）を、その要素に対応する、ＪａｖａＳｃｒｉｐｔの要素のコードに置き換える（＃７０４）。
【００８０】
例えば、第一の変換処理部１３３は、変数の定義、変数への値の代入、演算、およびコマンドなどのコードについて、置換を行う。また、全体を＜Ｓｃｒｏｐｔ＞タグで囲む。
【００８１】
そのほか、第一の変換処理部１３３は、規則に基づいて、ファイル名およびその拡張子を適宜、変更する。
【００８２】
このようにして、ウェブアプリケーション４７Ｘは、ＰｙｔｈｏｎからＪａｖａＳｃｒｉｐｔに変換される。以下、第一の変換処理部１３３によって変換されたウェブアプリケーション４７Ｘを「ウェブアプリケーション４７Ｙ」と記載する。
【００８３】
一方、ウェブアプリケーション４７Ｘに記述されるＰｙｔｈｏｎオブジェクトのうちの少なくとも１つに、対応するＪａｖａＳｃｒｉｐｔオブジェクトがなく、または、これらのＰｙｔｈｏｎオブジェクトそれぞれに対応するＪａｖａＳｃｒｉｐｔのうちの少なくとも１つが画像形成装置１自身のＪａｖａＳｃｒｉｐｔＣｏｒｅのバージョンでサポートされていない場合は（＃７０２でＮｏ）、第一の変換処理部１３３は、ウェブアプリケーション４７ＸをＪａｖａＳｃｒｉｐｔに変換する処理を中止する（＃７０５）。
【００８４】
図５に戻って、第一のファイル書込部１３４は、ウェブアプリケーション４７Ｙが第一の変換処理部１３３によって得られたら、ウェブアプリケーション４７Ｙを補助記憶装置１０ｅの所定のフォルダ７０Ｊへ保存させる。具体的には、ウェブアプリケーション４７Ｙを構成する１つまたは複数のファイルをそれぞれのフォルダ７０Ｊへ書き込む。さらに、ウェブアプリケーション４７Ｘにおいて用いられるＰｙｔｈｏｎオブジェクトに対応するＪａｖａＳｃｒｉｐｔオブジェクトのファイルが未だ画像形成装置１自身にインストールされていなければ、そのファイルを所定の保存場所へ保存させる。つまり、必要なＪａｖａＳｃｒｉｐｔオブジェクトをインポートする。所定の保存場所は、フォルダ７０Ｊであってもよいし、他のフォルダであってもよい。
【００８５】
例えば、ウェブアプリケーション４７Ｘに図８（Ａ）のようなコードが含まれている場合は、第一の変換処理部１３３は、点線で囲む３つのＰｙｔｈｏｎオブジェクトの、ＪａｖａＳｃｒｉｐｔオブジェクトへの置換を試みる。
【００８６】
ＪａｖａＳｃｒｉｐｔＣｏｒｅが対応しているバージョンが「３．０」であれば、図８（Ｂ）に示す通り、３つのＰｙｔｈｏｎオブジェクトのすべてに、対応するＪａｖａＳｃｒｉｐｔオブジェクトがある。よって、第一の変換処理部１３３は、置換を実行する。
【００８７】
一方、バージョンが「３．０」以外であれば、３つのＰｙｔｈｏｎオブジェクトのうちの少なくとも１つに、対応するＪａｖａＳｃｒｉｐｔオブジェクトがない。よって、第一の変換処理部１３３は、置換を行わず、ＪａｖａＳｃｒｉｐｔへの変換を中止する。
【００８８】
さらに、第一の変換処理部１３３は、「ｐｒｉｎｔ」コマンドをＪａｖａＳｃｒｉｐｔｎのコマンドへ置き換えたり、変数の定義をＪａｖａＳｃｒｉｐｔに合わせて変換したりする。
【００８９】
また、第一のファイル書込部１３４は、ウェブアプリケーション４７Ｙが第一の変換処理部１３３によって得られると、ウェブアプリケーション４７Ｙを構成する１つまたは複数のファイルをそれぞれのフォルダ７０Ｊへ書き込む。さらに、必要なファイルをインポートする。図８（Ａ）の例の場合は、「ｉｍｐｏｒｔ」で指定される２つのライブラリそれぞれに対応するＪａｖａＳｃｒｉｐｔのライブラリを有していなければ、それらをインポートする。
【００９０】
または、ウェブアプリケーション４７ＸがＪａｖａＳｃｒｉｐｔによって記述されているが、画像形成装置１自身のブラウザアプリケーション４０４がＪａｖａＳｃｒｉｐｔに対応していない場合に、第二の変換処理部１３５は、ウェブアプリケーション４７ＸをＰｙｔｈｏｎに変換する処理を実行する。この処理は、図９に示す手順で実行される。
【００９１】
第二の変換処理部１３５は、ウェブアプリケーション４７Ｘに記述されているＪａｖａＳｃｒｉｐｔオブジェクトのそれぞれを、対応するＰｙｔｈｏｎオブジェクトに置き換える（＃７１１）。
【００９２】
さらに、第二の変換処理部１３５は、ＰｙｔｈｏｎおよびＪａｖａＳｃｒｉｐｔそれぞれの文法に基づいて、ＪａｖａＳｃｒｉｐｔオブジェクト以外の要素のコード（例えば、機種などに依存しないコード）を、その要素に対応する、Ｐｙｔｈｏｎの要素のコードに置き換える（＃７１２）。そのほか、規則に基づいて、ファイル名およびその拡張子を適宜、変更する。
【００９３】
このようにして、ウェブアプリケーション４７Ｘは、ＪａｖａＳｃｒｉｐｔからＰｙｔｈｏｎに変換される。以下、第二の変換処理部１３５によって変換されたウェブアプリケーション４７Ｘを「ウェブアプリケーション４７Ｚ」と記載する。
【００９４】
第二のファイル書込部１３６は、ウェブアプリケーション４７Ｚが第二の変換処理部１３５によって得られたら、ウェブアプリケーション４７Ｚを所定のフォルダ７０Ｐへ保存させる。具体的には、ウェブアプリケーション４７Ｚを構成する１つまたは複数のファイルをそれぞれのフォルダ７０Ｐへ書き込む。さらに、ウェブアプリケーション４７Ｚにおいて用いられるＪａｖａＳｃｒｉｐｔオブジェクトに対応するＰｙｔｈｏｎオブジェクトのファイルが未だ画像形成装置１自身にインストールされていなければ、そのファイルを所定の保存場所へ保存させる。つまり、必要なＰｙｔｈｏｎオブジェクトをインポートする。所定の保存場所は、フォルダ７０Ｐであってもよいし、他のフォルダであってもよい。
【００９５】
通常インストール処理部１３７は、ウェブアプリケーション４７ＸがＰｙｔｈｏｎによって記述されており、画像形成装置１自身のブラウザアプリケーション４０４がＪａｖａＳｃｒｉｐｔに対応していない場合に、ウェブアプリケーション４７Ｘを、言語の変換を行うことなく通常通りにインストールする。これにより、ウェブアプリケーション４７Ｘのファイルがフォルダ７０Ｐなどに記憶される。第一の変換処理部１３３がウェブアプリケーション４７ＸをＪａｖａＳｃｒｉｐｔに変換する処理を中止した場合も同様に、通常通りにインストールする。
【００９６】
ウェブアプリケーション４７ＸがＪａｖａＳｃｒｉｐｔによって記述されており、画像形成装置１自身のブラウザアプリケーション４０４がＪａｖａＳｃｒｉｐｔに対応している場合も、通常インストール処理部１３７は、ウェブアプリケーション４７Ｘを、言語の変換を行うことなく通常通りにインストールする。これにより、ウェブアプリケーション４７Ｘのファイルがフォルダ７０Ｊなどに記憶される。
【００９７】
なお、この場合において、ＪａｖａＳｃｒｉｐｔＣｏｒｅのバージョンに対応していないＪａｖａＳｃｒｉｐｔオブジェクトがウェブアプリケーション４７Ｘに含まれている場合は、第二の変換処理部１３５および第二のファイル書込部１３６によってＰｙｔｈｏｎへの変換を行ってインストールしてもよい。
【００９８】
以上の仕組みによると、ウェブアプリケーション４７ＸがＰｙｔｈｏｎで記述されたものである場合は、画像形成装置１Ａには、画像形成装置１ＡのＪａｖａＳｃｒｉｐｔＣｏｒｅのバージョンに応じて適宜、ウェブアプリケーション４７ＸがＪａｖａＳｃｒｉｐｔに変換されてインストールされる。画像形成装置１Ｂには、変換されることなくウェブアプリケーション４７Ｘがインストールされる。
【００９９】
または、ウェブアプリケーション４７ＸがＪａｖａＳｃｒｉｐｔで記述されたものである場合は、画像形成装置１Ａには、基本的に変換されることなくウェブアプリケーション４７Ｘがインストールされる。画像形成装置１Ｂには、ウェブアプリケーション４７ＸがＰｙｔｈｏｎに変換されてインストールされる。
【０１００】
図１０は、インストール制御プログラム１０３による全体的な処理の流れの例を説明するフローチャートである。
【０１０１】
次に、画像形成装置１の全体的な処理の流れを、図１０のフローチャートを参照しながら説明する。
【０１０２】
画像形成装置１は、インストール制御プログラム１０３に基づいて、図１０に示す手順でウェブアプリケーション４７Ｘをインストールする処理を実行する。
【０１０３】
画像形成装置１は、ウェブアプリケーション４７Ｘの言語をチェックする（図１０の＃８１１）。さらに、画像形成装置１自身がＪａｖａＳｃｒｉｐｔＣｏｒｅを備えているか否かをチェックする（＃８１２）。
【０１０４】
ウェブアプリケーション４７ＸがＰｙｔｈｏｎで記述されており（＃８１３でＹｅｓ）、かつ、ＪａｖａＳｃｒｉｐｔＣｏｒｅが画像形成装置１自身に備わっている場合は（＃８１４でＹｅｓ）、画像形成装置１は、ウェブアプリケーション４７ＸをＪａｖａＳｃｒｉｐｔに変換する（＃８１５）。変換の手順は、前に図７で説明した通りである。
【０１０５】
変換に成功した場合は（＃８１６でＹｅｓ）、画像形成装置１は、変換によって得られたウェブアプリケーション４７Ｙおよび必要なファイルを保存する（＃８１７）。
【０１０６】
または、ウェブアプリケーション４７ＸがＰｙｔｈｏｎで記述されているが（＃８１３でＹｅｓ）、ＪａｖａＳｃｒｉｐｔＣｏｒｅが画像形成装置１自身に備わっていない場合は（＃８１４でＮｏ）、画像形成装置１は、ウェブアプリケーション４７Ｘを、ＪａｖａＳｃｒｉｐｔに変換することなくインストールする（＃８１８）。つまり、通常通りにインストールする。
【０１０７】
変換に成功しなかった場合も（＃８１６でＮｏ）、画像形成装置１は、ウェブアプリケーション４７Ｘを通常通りにインストールする（＃８１８）。
【０１０８】
または、ウェブアプリケーション４７ＸがＪａｖａＳｃｒｉｐｔで記述されているが（＃８１３でＮｏ）、ＪａｖａＳｃｒｉｐｔＣｏｒｅが画像形成装置１自身に備わっていない場合は（＃８１９でＮｏ）、画像形成装置１は、ウェブアプリケーション４７ＸをＰｙｔｈｏｎに変換する（＃８２０）。変換の手順は、前に図９で説明した通りである。
【０１０９】
そして、画像形成装置１は、変換によって得られたウェブアプリケーション４７Ｚおよび必要なファイルを保存する（＃８２１）。
【０１１０】
または、ウェブアプリケーション４７ＸがＪａｖａＳｃｒｉｐｔで記述されており（＃８１３でＮｏ）、ＪａｖａＳｃｒｉｐｔＣｏｒｅが画像形成装置１自身に備わっている場合は（＃８１９でＹｅｓ）、画像形成装置１は、ウェブアプリケーション４７Ｘを、Ｐｙｔｈｏｎに変換することなくインストールする（＃８２２）。つまり、通常通りにインストールする。
【０１１１】
図１１は、サーバ装置２１の機能的構成の例を示す図である。図１２は、ＪａｖａＳｃｒｉｐｔ版のウェブアプリケーション４７および対応バージョンの例を示す図である。
【０１１２】
上述の例によると、ウェブアプリケーション４７Ｘは、インストール先すなわち画像形成装置１において、必要に応じて変換される。
【０１１３】
しかし、サーバ装置２１がウェブアプリケーション４７Ｘを提供する場合は、ウェブアプリケーション４７Ｘをサーバ装置２１が変換してもよい。以下、サーバ装置２１が変換する場合について、説明する。
【０１１４】
アプリケーション提供プログラム２１Ｐによると、図１１に示すオブジェクト対応テーブル記憶部２０１、言語判別部２０２、属性問合部２０３、第一の変換処理部２０４、第一のファイル送信部２０５、第二の変換処理部２０６、第二のファイル送信部２０７、アプリケーション記憶部２０８、および第三のファイル送信部２０９などが実現される。
【０１１５】
以下、サーバ装置２１がウェブアプリケーション４７としてウェブアプリケーション４７Ｘを画像形成装置１Ａへ提供する場合を例に、図１１に示す各部について説明する。
【０１１６】
オブジェクト対応テーブル記憶部２０１には、オブジェクト対応テーブル記憶部１３１（図５参照）と同様に、オブジェクト対応テーブル６１（図６参照）が記憶されている。
【０１１７】
言語判別部２０２は、言語判別部１３２と同様に、ウェブアプリケーション４７ＸがＰｙｔｈｏｎおよびＪａｖａＳｃｒｉｐｔのいずれの言語で記述されているのかを判別する。
【０１１８】
属性問合部２０３は、ＪａｖａＳｃｒｉｐｔに画像形成装置１Ａのブラウザアプリケーション４０４が対応しているか否かを、画像形成装置１Ａへ問い合わせる。対応している場合は、さらに、ＪａｖａＳｃｒｉｐｔの対応しているバージョンを画像形成装置１Ａへ問い合わせる。
【０１１９】
画像形成装置１Ａは、属性問合部２０３からの問合せに応じて、ＪａｖａＳｃｒｉｐｔの対応の可否およびバージョンを回答する。
【０１２０】
ウェブアプリケーション４７ＸがＰｙｔｈｏｎによって記述されており、かつ、画像形成装置１Ａのブラウザアプリケーション４０４がＪａｖａＳｃｒｉｐｔに対応している場合に、第一の変換処理部２０４および第一のファイル送信部２０５は、次の処理を行う。
【０１２１】
第一の変換処理部２０４は、第一の変換処理部１３３と同様に、ウェブアプリケーション４７ＸをＪａｖａＳｃｒｉｐｔに変換することによってウェブアプリケーション４７Ｙを生成する。
【０１２２】
そして、第一のファイル送信部２０５は、ウェブアプリケーション４７Ｙおよびそれを実行するのに必要なファイル（例えば、ライブラリ）を、画像形成装置１Ａへ送信する。なお、必要なファイルは、画像形成装置１Ａが他のサーバからダウンロードするようにしてもよい。後述する、ウェブアプリケーション４７Ｚとともに提供すべき必要なファイルについても、同様である。
【０１２３】
または、ウェブアプリケーション４７ＸがＪａｖａＳｃｒｉｐｔによって記述されているが、画像形成装置１Ａのブラウザアプリケーション４０４がＪａｖａＳｃｒｉｐｔに対応していない場合に、第二の変換処理部２０６および第二のファイル送信部２０７は、次の処理を行う。
【０１２４】
第二の変換処理部２０６は、第二の変換処理部１３５と同様に、ウェブアプリケーション４７ＸをＰｙｔｈｏｎに変換することによって、ウェブアプリケーション４７Ｚを生成する。
【０１２５】
そして、第二のファイル送信部２０７は、ウェブアプリケーション４７Ｚおよびそれを実行するのに必要なファイルを画像形成装置１Ａへ送信する。
【０１２６】
ウェブアプリケーション４７Ｙは、第一の変換処理部２０４によって生成されると、元のアプリケーションすなわちウェブアプリケーション４７Ｘの識別子および対応バージョンに対応付けられてアプリケーション記憶部２０８に記憶される。
【０１２７】
「対応バージョン」は、ウェブアプリケーション４７Ｙを実行することができるＪａｖａＳｃｒｉｐｔのバージョンである。具体的には、ウェブアプリケーション４７Ｙに含まれるすべてのＪａｖａＳｃｒｉｐｔオブジェクトに対応しているバージョンであって、オブジェクト対応テーブル６１に基づいて特定することができる。
【０１２８】
例えば、ウェブアプリケーション４７Ｙに含まれるＪａｖａＳｃｒｉｐｔオブジェクトが、図８（Ｂ）に示した３つのＰｙｔｈｏｎオブジェクトそれぞれに対応するものである場合は、対応バージョンが「３．０」であると特定される。
【０１２９】
また、ウェブアプリケーション４７Ｚは、第二の変換処理部２０６によって生成されると、元のアプリケーションすなわちウェブアプリケーション４７Ｘの識別子に対応付けられてアプリケーション記憶部２０８に記憶される。
【０１３０】
第三のファイル送信部２０９は、ウェブアプリケーション４７ＸがＰｙｔｈｏｎによって記述されており、画像形成装置１Ａのブラウザアプリケーション４０４がＪａｖａＳｃｒｉｐｔに対応していない場合に、ウェブアプリケーション４７Ｘを、言語の変換を行うことなく画像形成装置１Ａへ送信する。第一の変換処理部２０４がウェブアプリケーション４７ＸをＪａｖａＳｃｒｉｐｔに変換する処理を中止した場合も同様に送信する。
【０１３１】
ウェブアプリケーション４７Ｘ以外のウェブアプリケーション４７も同様に、適宜、ＪａｖａＳｃｒｉｐｔまたはＰｙｔｈｏｎに変換されて、画像形成装置１へ提供される。
【０１３２】
これにより、アプリケーション記憶部２０８には、図１２のように、ウェブアプリケーション４７ごとに、ＪａｖａＳｃｒｉｐｔ版のものとＰｙｔｈｏｎ版のものとが記憶される。
【０１３３】
ところで、サーバ装置２１は、ある画像形成装置１（例えば、画像形成装置１Ａ）へウェブアプリケーション４７Ｘを提供した後、他の画像形成装置１へウェブアプリケーション４７Ｘを提供することがある。以下、サーバ装置２１の各部の処理を、画像形成装置１Ｃへウェブアプリケーション４７Ｘを提供する場合を例に説明する。
【０１３４】
言語判別部２０２および属性問合部２０３は、上述の通りの処理を行う。ただし、問合せ先は、画像形成装置１Ｃである。
【０１３５】
ウェブアプリケーション４７ＸがＰｙｔｈｏｎによって記述されている場合は、次の（条件Ａ１）〜（条件Ａ３）を満たすか否かに応じて、次のように処理が行われる。
（条件Ａ１）  画像形成装置１Ｃのブラウザアプリケーション４０４がＪａｖａＳｃｒｉｐｔに対応している
（条件Ａ２）  ウェブアプリケーション４７Ｙがアプリケーション記憶部２０８に記憶されている
（条件Ａ３）  そのブラウザアプリケーション４０４のＪａｖａＳｃｒｉｐｔが対応しているバージョンが、ウェブアプリケーション４７Ｙの対応バージョンに含まれる
（条件Ａ１）〜（条件Ａ３）をすべて満たす場合は、第一の変換処理部２０４による処理がスキップされる。
【０１３６】
そして、第一のファイル送信部２０５は、アプリケーション記憶部２０８からウェブアプリケーション４７Ｙを読み出し、ウェブアプリケーション４７Ｙおよびそれを実行するのに必要なファイルを画像形成装置１Ｃへ送信する。
【０１３７】
（条件Ａ１）および（条件Ａ３）を満たすが（条件Ａ２）を満たさない場合は、第一の変換処理部２０４は、ウェブアプリケーション４７ＸをＪａｖａＳｃｒｉｐｔに変換することによってウェブアプリケーション４７Ｙを生成する。
【０１３８】
そして、第一のファイル送信部２０５は、ウェブアプリケーション４７Ｙおよびそれを実行するのに必要なファイルを画像形成装置１Ｃへ送信する。
【０１３９】
さらに、アプリケーション記憶部２０８に、ウェブアプリケーション４７Ｙがウェブアプリケーション４７Ｘの識別子および対応バージョンに対応付けられて記憶される。
【０１４０】
（条件Ａ１）および（条件Ａ３）のうち少なくとも一方を満たさない場合は、ウェブアプリケーション４７Ｘが、変換されることなく第三のファイル送信部２０９によって画像形成装置１Ｃへ送信される。
【０１４１】
ウェブアプリケーション４７ＸがＪａｖａＳｃｒｉｐｔによって記述されている場合は、次の（条件Ｂ１）〜（条件Ｂ３）を満たすか否かに応じて、次のように処理が行われる。
（条件Ｂ１）  画像形成装置１Ｃのブラウザアプリケーション４０４がＪａｖａＳｃｒｉｐｔに対応している
（条件Ｂ２）  ウェブアプリケーション４７Ｚがアプリケーション記憶部２０８に記憶されている
（条件Ｂ３）  ウェブアプリケーション４７Ｘに含まれるすべてのＪａｖａＳｃｒｉｐｔオブジェクトがそのブラウザアプリケーション４０４に対応している
（条件Ｂ１）および（条件Ｂ３）のうち少なくとも一方が満たされず、かつ、（条件Ｂ２）が満たされない場合は、上述の通り、第二の変換処理部２０６および第二のファイル送信部２０７によって、ウェブアプリケーション４７Ｚが生成され、ウェブアプリケーション４７Ｚおよびそれを実行するのに必要なファイルが画像形成装置１Ｃへ送信される。
【０１４２】
さらに、ウェブアプリケーション４７Ｚがウェブアプリケーション４７Ｘの識別子と対応付けられてアプリケーション記憶部２０８に記憶される。
【０１４３】
または、（条件Ｂ１）および（条件Ｂ３）のうち少なくとも一方が満たされないが、（条件Ｂ２）が満たされる場合は、第二の変換処理部２０６による処理がスキップされる。
【０１４４】
そして、第二のファイル送信部２０７は、ウェブアプリケーション４７Ｚをアプリケーション記憶部２０８から読み出し、ウェブアプリケーション４７Ｚおよびそれを実行するのに必要なファイルを画像形成装置１Ｃへ送信する。
【０１４５】
または、（条件Ｂ１）および（条件Ｂ３）が満たされる場合は、ウェブアプリケーション４７Ｘが、変換されることなく第三のファイル送信部２０９によって画像形成装置１Ｃへ送信される。
【０１４６】
図１３は、アプリケーション提供プログラム２１Ｐによる全体的な処理の流れの例を説明するフローチャートである。
【０１４７】
次に、サーバ装置２１の全体的な処理の流れを、図１３のフローチャートを参照しながら説明する。
【０１４８】
サーバ装置２１は、アプリケーション提供プログラム２１Ｐに基づいて、図１３に示す手順でウェブアプリケーション４７を画像形成装置１へ提供する処理を実行する。以下、画像形成装置１Ｃへウェブアプリケーション４７Ｘを提供する場合を例に、説明する。
【０１４９】
サーバ装置２１は、ウェブアプリケーション４７Ｘの言語をチェックする（図１３の＃８３１）。さらに、ＪａｖａＳｃｒｉｐｔＣｏｒｅを備えているか否かおよび対応しているバージョンを画像形成装置１Ｃへ問い合わせる（＃８３２）。
【０１５０】
ウェブアプリケーション４７ＸがＰｙｔｈｏｎで記述されており（＃８３３でＹｅｓ）、かつ、ＪａｖａＳｃｒｉｐｔＣｏｒｅが画像形成装置１Ｃに備わっている場合は（＃８３４でＹｅｓ）、サーバ装置２１は、次のように処理を行う。
【０１５１】
ＪａｖａＳｃｒｉｐｔに変換されたウェブアプリケーション４７Ｘ（つまり、ウェブアプリケーション４７Ｙ）をアプリケーション記憶部２０８によって既に記憶しており（＃８３５でＹｅｓ）、かつ、回答されたバージョンがウェブアプリケーション４７Ｙの対応バージョンに含まれる場合は（＃８３６でＹｅｓ）、サーバ装置２１は、ウェブアプリケーション４７Ｙを読み出して、必要なファイルとともに画像形成装置１Ｃへ送信する（＃８３７）。
【０１５２】
または、ウェブアプリケーション４７Ｙを記憶しているが（＃８３５でＹｅｓ）、回答されたバージョンがウェブアプリケーション４７Ｙの対応バージョンに含まれない場合は（＃８３６でＮｏ）、サーバ装置２１は、ウェブアプリケーション４７Ｘを変換せず（つまり、Ｐｙｔｈｏｎのまま）、必要なファイルとともに画像形成装置１Ｃへ送信する（＃８４２）。
【０１５３】
または、ウェブアプリケーション４７Ｙを記憶していない場合は（＃８３５でＮｏ）、サーバ装置２１は、ＪａｖａＳｃｒｉｐｔへ変換する処理を行う（＃８３８）。この処理の手順は、前に図７で説明した通りである。
【０１５４】
変換に成功すれば（＃８３９でＹｅｓ）、サーバ装置２１は、変換されたウェブアプリケーション４７Ｘ（つまり、ウェブアプリケーション４７Ｙ）を画像形成装置１Ｃへ必要なファイルとともに画像形成装置１Ｃへ送信し（＃８４０）、アプリケーション記憶部２０８によって記憶する（＃８４１）。
【０１５５】
変換に失敗すれば（＃８３９でＮｏ）、サーバ装置２１は、ウェブアプリケーション４７Ｘを変換せず、必要なファイルとともに画像形成装置１Ｃへ送信する（＃８４２）。
【０１５６】
ウェブアプリケーション４７ＸがＰｙｔｈｏｎで記述されているが（＃８３３でＹｅｓ）、ＪａｖａＳｃｒｉｐｔＣｏｒｅが画像形成装置１Ｃに備わっていない場合も（＃８３４でＮｏ）、サーバ装置２１は、ウェブアプリケーション４７Ｘを変換せず、必要なファイルとともに画像形成装置１Ｃへ送信する（＃８４２）。
【０１５７】
一方、ウェブアプリケーション４７ＸがＪａｖａＳｃｒｉｐｔで記述されている場合は（＃８３３でＮｏ）、サーバ装置２１は、次のように処理を行う。
【０１５８】
ＪａｖａＳｃｒｉｐｔＣｏｒｅが画像形成装置１Ｃに備わっている場合は（＃８４３でＹｅｓ）、サーバ装置２１は、ウェブアプリケーション４７Ｘを変換せず（つまり、ＪａｖａＳｃｒｉｐｔのまま）、必要なファイルとともに画像形成装置１Ｃへ送信する（＃８４４）。
【０１５９】
または、ＪａｖａＳｃｒｉｐｔＣｏｒｅが画像形成装置１Ｃに備わっていない場合は（＃８４３でＮｏ）、サーバ装置２１は、Ｐｙｔｈｏｎに変換されたウェブアプリケーション４７Ｘ（つまり、ウェブアプリケーション４７Ｚ）をアプリケーション記憶部２０８によって既に記憶していれば（＃８４５でＹｅｓ）、ウェブアプリケーション４７Ｚを読み出して、必要なファイルとともに画像形成装置１Ｃへ送信する（＃８４６）。
【０１６０】
記憶していなければ（＃８４５でＮｏ）、サーバ装置２１は、ウェブアプリケーション４７ＸをＰｙｔｈｏｎへ変換する処理を行う（＃８４７）。この処理の手順は、前に図１０で説明した通りである。
【０１６１】
そして、サーバ装置２１は、変換されたウェブアプリケーション４７Ｘ（つまり、ウェブアプリケーション４７Ｚ）を画像形成装置１Ｃへ必要なファイルとともに画像形成装置１Ｃへ送信し（＃８４８）、アプリケーション記憶部２０８によって記憶する（＃８４９）。
【０１６２】
なお、画像形成装置１ＣのＪａｖａＳｃｒｉｐｔＣｏｒｅのバージョンに対応していないＪａｖａＳｃｒｉｐｔオブジェクトがウェブアプリケーション４７Ｙに含まれている場合も、ステップ＃８４４へ進まずに、ステップ＃８４５へ進んでもよい。
【０１６３】
本実施形態によると、ＪａｖａＳｃｒｉｐｔに対応する画像形成装置１および対応しない画像形成装置１が混在する環境において、ＪａｖａＳｃｒｉｐｔで記述されたウェブアプリケーション４７を、従来よりも有効的に使用できるようにすることができる。
【０１６４】
本実施形態では、画像形成装置１は、ウェブアプリケーション４７を、インストールの際に適宜、ＪａｖａＳｃｒｉｐｔまたはＰｙｔｈｏｎに変換したが、一旦、変換することなくインストールしてもよい。そして、ウェブアプリケーション４７を使用する際に変換してもよい。
【０１６５】
ただし、この場合において、その後、ＪａｖａＳｃｒｉｐｔＣｏｒｅが画像形成装置１から削除されたら、画像形成装置１は、ＪａｖａＳｃｒｉｐｔで記述されたインストール済のウェブアプリケーション４７をＰｙｔｈｏｎへ変換してフォルダ７０Ｐなどへインストールし直す。同様に、パイソンエンジン１５２が削除されたら、Ｐｙｔｈｏｎで記述されたインストール済のウェブアプリケーション４７をＪａｖａＳｃｒｉｐｔへ変換してフォルダ７０Ｊなどへインストールし直す。
【０１６６】
本実施形態では、画像形成装置１およびサーバ装置２１は、ウェブアプリケーション４７に含まれる１つまたは複数のＰｙｔｈｏｎオブジェクトそれぞれに対応するＪａｖａＳｃｒｉｐｔオブジェクトのすべてが、画像形成装置１のＪａｖａＳｃｒｉｐｔＣｏｒｅにおいてサポートされているか否かをチェックした。そして、サポートされていないものが１つもなければ、ＪａｖａＳｃｒｉｐｔへ変換した。
【０１６７】
しかし、仕様上、画像形成装置１がサポートしていないＰｙｔｈｏｎオブジェクトに対応するＪａｖａＳｃｒｉｐｔオブジェクトについては、チェックの対象から除外してもよい。つまり、ウェブアプリケーション４７に含まれる１つまたは複数のＰｙｔｈｏｎオブジェクトのうちの画像形成装置１がサポートしているものに対応するＪａｖａＳｃｒｉｐｔオブジェクトのすべてが、画像形成装置１のＪａｖａＳｃｒｉｐｔＣｏｒｅにおいてサポートされているか否かをチェックすればよい。
【０１６８】
例えば、画像形成装置１がカラー印刷をサポートしていない場合は、Ｐｙｔｈｏｎオブジェクトの１つとしてカラー印刷に関するオブジェクトがウェブアプリケーション４７に含まれていても、これ以外のＰｙｔｈｏｎオブジェクトについて、対応するＪａｖａＳｃｒｉｐｔオブジェクトのサポートの可否をチェックすればよい。
【０１６９】
または、これまでに使用された頻度が所定の値未満であるＰｙｔｈｏｎオブジェクトに対応するＪａｖａＳｃｒｉｐｔオブジェクトを、チェックの対象から除外してもよい。または、これまでに使用された回数が所定の回数未満であるＰｙｔｈｏｎオブジェクトに対応するＪａｖａＳｃｒｉｐｔオブジェクトを、チェックの対象から除外してもよい。
【０１７０】
本実施形態では、Ｐｙｔｈｏｎがすべての画像形成装置１において対応している場合を例に説明したが、一部の画像形成装置１において対応していない場合は、次のように処理が行われる。
【０１７１】
Ｐｙｔｈｏｎに対応していない画像形成装置１において、第二の変換処理部１３５および第二のファイル書込部１３６（図５参照）は、機能しない。ウェブアプリケーション４７ＸがＪａｖａＳｃｒｉｐｔで記述されている場合は、変換が行われることなく、通常インストール処理部１３７によってウェブアプリケーション４７Ｘが画像形成装置１にインストールされる。
【０１７２】
ウェブアプリケーション４７ＸがＰｙｔｈｏｎで記述されている場合は、その画像形成装置１のＪａｖａＳｃｒｉｐｔＣｏｒｅが対応しているバージョンに関わらず、ＪａｖａＳｃｒｉｐｔへの変換を行ってインストールする。
【０１７３】
また、サーバ装置２１において、Ｐｙｔｈｏｎに対応していない画像形成装置１へウェブアプリケーション４７Ｘを提供する場合は、第二の変換処理部２０６および第二のファイル送信部２０７（図１１参照）は、機能しない。ウェブアプリケーション４７ＸがＪａｖａＳｃｒｉｐｔで記述されている場合は、変換が行われることなく、その画像形成装置１へウェブアプリケーション４７Ｘが提供される。
【０１７４】
ウェブアプリケーション４７ＸがＰｙｔｈｏｎで記述されている場合は、その画像形成装置１のＪａｖａＳｃｒｉｐｔＣｏｒｅが対応しているバージョンに関わらず、ＪａｖａＳｃｒｉｐｔへの変換を行ってウェブアプリケーション４７Ｘを提供する。または、既に記憶している、変換済のウェブアプリケーション４７Ｘ（ウェブアプリケーション４７Ｙ）を提供する。
【０１７５】
本実施形態では、ウェブサーバシステム１０５で実行されるプログラムの言語（サーバ側の言語）としてＰｙｔｈｏｎを例に挙げ、ブラウザアプリケーション４０４で実行されるプログラムの言語（クライアント側の言語）としてＪａｖａＳｃｒｉｐｔを挙げたが、これらの言語は、他の言語であってもよい。
【０１７６】
例えば、サーバ側の言語として、Ｐｅｒｌ、ＰＨＰ（Hypertext Preprocessor）、Ｒｕｂｙ、またはＪａｖａＳｅｒｖｌｅｔなどが用いられる場合にも、本発明を適用することができる。また、クライアント側の言語として、ＡｃｔｉｏｎＳｃｒｉｐｔまたはＪＳｃｒｉｐｔなどが用いられる場合にも、本発明を適用することができる。
【０１７７】
その他、画像処理システム１００、画像形成装置１の全体または各部の構成、処理の内容、処理の順序などは、本発明の趣旨に沿って適宜変更することができる。
【符号の説明】
【０１７８】
１  画像形成装置
１０５  ウェブサーバシステム（第二の環境）
１３３  第一の変換処理部（変換手段）
１３５  第二の変換処理部（第二の変換手段）
２１  サーバ装置（プログラム提供装置）
２０４  第一の変換処理部（変換手段）
２０５  第一のファイル送信部（送信手段）
４０４  ブラウザアプリケーション（第一の環境）
４７Ｘ  ウェブアプリケーション（対象プログラム）
４７Ｙ  ウェブアプリケーション（他言語対象プログラム）
４７Ｚ  ウェブアプリケーション（第二の他言語対象プログラム）
７０Ｊ  フォルダ（記憶手段）
７０Ｐ  フォルダ（第二の記憶手段）
【図１】
0006801238.tif 000002
【図２】
0006801238.tif 000003
【図３】
0006801238.tif 000004
【図４】
0006801238.tif 000005
【図５】
0006801238.tif 000006
【図６】
0006801238.tif 000007
【図７】
0006801238.tif 000008
【図８】
0006801238.tif 000009
【図９】
0006801238.tif 000010
【図１０】
0006801238.tif 000011
【図１１】
0006801238.tif 000012
【図１２】
0006801238.tif 000013
【図１３】
0006801238.tif 000014