(57)【要約】 【課題】ローカルアプリケーションをＷｅｂブラウザから操作するためには、所定のプロトコルの規格に応じた修正を加え、Ｗｅｂブラウザ対応アプリケーションとして作り直す必要があった。【解決手段】Ｗｅｂブラウザを有する画像処理装置とその制御方法であって、画像処理装置の機能を実行するアプリケーションを有し、Ｗｅｂブラウザから制御要求を受けると、対応するアプリケーションの少なくともクラス名と関数名を制御要求として転送し、その転送された制御要求に含まれるアプリケーションのクラスをロードして実行関数を呼び出すことにより前記対応するアプリケーションを実行する。【選択図】  図３
2015222872.tif 000002
【特許請求の範囲】
【請求項１】
Ｗｅｂブラウザを有する画像処理装置であって、
前記画像処理装置の機能を実行するアプリケーションと、
前記Ｗｅｂブラウザから制御要求を受けると、対応するアプリケーションの少なくともクラス名と関数名を制御要求として転送する要求転送手段と、
前記要求転送手段により転送された前記制御要求に含まれるアプリケーションのクラスをロードして実行関数を呼び出すことにより前記対応するアプリケーションを実行する制御手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記Ｗｅｂブラウザは、ネットワークを介して接続された外部装置からＨＴＭＬデータを取得して操作画面を表示し、前記操作画面を介したユーザの操作に応じて、前記ＨＴＭＬデータに含まれるスクリプトを実行して前記制御要求を生成することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記要求転送手段は、前記Ｗｅｂブラウザで実行された前記スクリプトに対応付けられたコールバック関数の引数を前記制御手段に転送することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記制御手段は、更に前記アプリケーションの実行結果を前記要求転送手段に転送することを特徴とする請求項１乃至３のいずれか１項に記載の画像処理装置。
【請求項５】
前記制御手段は、前記対応するアプリケーションの制御ＡＰＩの関数を実行することを特徴とする請求項１乃至４のいずれか１項に記載の画像処理装置。
【請求項６】
前記制御手段は、前記制御要求に含まれるアプリケーションのクラスの制御ＡＰＩの関数名が存在するかどうかを判定し、存在するときは当該制御ＡＰＩの関数の引数を用いて前記対応するアプリケーションの制御ＡＰＩの関数を実行し、存在しないときは前記要求転送手段にエラーを返すことを特徴とする請求項１乃至５のいずれか１項に記載の画像処理装置。
【請求項７】
前記要求転送手段は、前記アプリケーションの実行結果を基にスクリプトを生成して前記Ｗｅｂブラウザに送信することを特徴とする請求項４に記載の画像処理装置。
【請求項８】
前記制御要求は、アプリケーションのアプリケーション名、バージョン情報の少なくともいずれかを含み、当該アプリケーションのアプリケーション名、バージョン情報の少なくともいずれかに基づいて、実行可能なアプリケーションが存在するか判定する判定手段を更に有することを特徴とする請求項１乃至７のいずれか１項に記載の画像処理装置。
【請求項９】
前記スクリプトは、JavaScriptであることを特徴とする請求項２，３，７のいずれか１項に記載の画像処理装置。
【請求項１０】
Ｗｅｂブラウザを有し、機能を実行するアプリケーションを具備する画像処理装置を制御する制御方法であって、
前記Ｗｅｂブラウザから制御要求を受けると、対応するアプリケーションの少なくともクラス名と関数名を制御要求として転送する要求転送工程と、
前記要求転送工程で転送された前記制御要求に含まれるアプリケーションのクラスをロードして実行関数を呼び出すことにより前記対応するアプリケーションを実行する制御工程と、
を有することを特徴とする画像処理装置の制御方法。
【請求項１１】
コンピュータを、請求項１乃至９のいずれか１項に記載の画像処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置とその制御方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、スキャナやプリンタ、ファクシミリ、通信装置などの各装置の機能を１つの筐体内に収納した画像処理装置が知られている。このような画像処理装置は、スキャナやプリンタなどの各種処理をアプリケーション単位で動作させるアプリケーションプラットフォーム環境を有し、操作部の表示にはＷｅｂブラウザが用いられている。そしてユーザは、Ｗｅｂブラウザにより表示される画面を操作することで、アプリケーションプラットフォーム上で起動するアプリケーションを介した画像処理装置の各種機能を利用することができる。
【０００３】
Ｗｅｂブラウザに表示される操作画面から画像処理装置の各種機能、アプリケーションを利用する形態として、例えば特許文献１に記載された方法がある。特許文献１によると、まずＷｅｂブラウザは、ネットワーク上の外部装置から受信した画面情報に基づいて、操作画面を画像処理装置の操作部に表示する。そしてユーザが、その操作画面を操作すると、Ｗｅｂブラウザは、ユーザの操作内容をネットワークを介して外部装置へ送信する。またＷｅｂブラウザは、送信した内容に対する応答としてＳＯＡＰ（Simple Object Access Protocol）の通信プロトコルに従った要求を受信する。これによりＷｅｂブラウザは、その受信した要求をＷｅｂサービスプロバイダアプリケーションへ転送して、Ｗｅｂサービスプロバイダで提供される画像処理装置の機能を利用する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１０５０７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら従来の技術では、Ｗｅｂブラウザから操作できる画像処理装置のアプリケーションは、所定のプロトコルに対応しているＷｅｂブラウザ対応アプリケーションのみであった。一般的に、画像処理装置の操作画面から操作できるローカルアプリケーションは、Ｗｅｂブラウザからの操作に対応していない。そのため、ローカルアプリケーションをＷｅｂブラウザから操作するためには、所定のプロトコルの規格に応じた修正を加え、Ｗｅｂブラウザ対応アプリケーションとして作り直す必要があった。
【０００６】
本発明の目的は、上記従来技術の問題点を解決することにある。
【０００７】
本発明の特徴は、アプリケーションをＷｅｂブラウザから操作可能にするためのアプリケーションの修正を不要にして、Ｗｅｂブラウザ対応に要するプログラムの開発工数を削減することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために本発明の一態様に係る画像処理装置は以下のような構成を備える。即ち、
Ｗｅｂブラウザを有する画像処理装置であって、
前記画像処理装置の機能を実行するアプリケーションと、
前記Ｗｅｂブラウザから制御要求を受けると、対応するアプリケーションの少なくともクラス名と関数名を制御要求として転送する要求転送手段と、
前記要求転送手段により転送された前記制御要求に含まれるアプリケーションのクラスをロードして実行関数を呼び出すことにより前記対応するアプリケーションを実行する制御手段と、を有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、アプリケーションをＷｅｂブラウザから利用するためのアプリケーションの修正作業が不要になるためプログラムの開発工数を削減できるという効果がある。
【００１０】
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
【図面の簡単な説明】
【００１１】
添付図面は明細書に含まれ、その一部を構成し、本発明の実施の形態を示し、その記述と共に本発明の原理を説明するために用いられる。
【図１】本発明の実施形態１に係る情報処理システム全体の構成例を示す図。
【図２】実施形態１に係る外部装置と画像処理装置のハードウェア構成例を示すブロック図。
【図３】実施形態１に係る外部装置と画像処理装置のソフトウェア構成を説明する機能ブロック図。
【図４】実施形態１に係る画像処理装置の表示部に表示されるメインメニュー画面例を示す図。
【図５】実施形態１に係る画像処理装置における処理手順を説明するシーケンス図。
【図６】実施形態１に係る画像処理装置の表示部に表示されるＷｅｂアプリケーションの操作画面の一例を示す図。
【図７】実施形態１に係る画像処理装置が、図５のＳ６０３で外部装置から受信するＨＴＭＬデータの一例を示す図。
【図８】実施形態１に係る画像処理装置のJavaScript（登録商標）ライブラリの一例を示す図。
【図９】、
【図１０】本発明の実施形態１に係る画像処理装置の要求転送部の応答処理を実行するプログラムの一例を示す図。
【図１１】、
【図１２】、
【図１３】、
【図１４】本発明の実施形態１に係る画像処理装置の要求処理部アプリケーションの応答処理を実行するプログラムの一例を示す図。
【図１５】本発明の実施形態２に係る外部装置と画像処理装置のソフトウェア構成例を示す機能ブロック図。
【図１６】実施形態２に係る画像処理装置の処理手順を示すシーケンス図。
【図１７】実施形態２に係る画像処理装置のJavaScriptライブラリの一例を示す図。
【図１８】本発明の実施形態２に係る判定部を実現するプログラムの一例を示す図。
【図１９】実施形態２に係る画像形成装置で表示されるエラー画面例を示す図。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１３】
図１は、本発明の実施形態１に係る情報処理システム全体の構成例を示す図である。
【００１４】
このシステムでは、ネットワーク１０２を介して、画像処理装置１００と外部装置１０１とが接続されている。画像処理装置１００は、画像形成機能、画像読取機能、画像送信機能などの各種画像処理機能と、ネットワークを介してＨＴＴＰ（Hyper Text Transfer Protocol）通信を行うＷｅｂブラウザ機能とを有する装置である。画像処理装置１００は、プリンタ、コピー、ＦＡＸ及びスキャナ機や、それら複数の機能を一台の筺体で実現するＭＦＰ（Multi Functional Peripheral）であってもよい。外部装置１０１は、Ｗｅｂサーバ機能、及び、画像処理装置１００に画面情報としてＧＵＩ（Graphical User Interface）を提供する機能を備えたＷｅｂアプリケーションが実装されたコンピュータ（ＰＣ）等の情報処理装置である。
【００１５】
図２は、実施形態１に係る外部装置１０１と画像処理装置１００のハードウェア構成例を示すブロック図である。
【００１６】
画像処理装置１００は、外部装置１０１等とネットワーク通信を行うネットワークＩ／Ｆ２０１、ユーザ操作を受け付ける入力部２０２（キーボードなど）、操作画面を表示する表示部２０３を有する。
【００１７】
更に、画像処理装置１００は、装置全体を制御するＣＰＵ２０４、ＣＰＵ２０４のワークエリアを提供するＲＡＭ２０５、原稿を読み取る読取部２０６、画像データを印刷する印刷部２０７、各種制御プログラムなどを記録する記憶部２０８を有する。画像処理装置１００のこれら各部はメインバス２００を介してＣＰＵ２０４と接続されており、相互にデータの送受信が可能となっている。尚、図２では、入力部２０２と表示部２０３が別々のユニットとして記載しているが、これらユニットが一体となった操作部であってもよい。
【００１８】
外部装置１０１は、画像処理装置１００とネットワーク通信を行うネットワークＩ／Ｆ３０１、装置全体を制御するＣＰＵ３０２、ＣＰＵ３０２のワークエリアを提供するＲＡＭ３０３、各種制御プログラム等を記録する記憶部３０４を含んでいる。外部装置１０１のこれら各部はメインバス３００を介して接続されており、相互にデータの送受信が可能となっている。
【００１９】
図３は、実施形態１に係る外部装置１０１と画像処理装置１００のソフトウェア構成を説明する機能ブロック図である。
【００２０】
はじめに、外部装置１０１が備えるソフトウェアについて説明する。
【００２１】
外部装置１０１は、Ｗｅｂアプリケーション４００を有する。Ｗｅｂアプリケーション４００は記憶部３０４に記憶されており、ネットワークＩ／Ｆ３０１を介して画像処理装置１００に送信される。
【００２２】
Ｗｅｂアプリケーション４００は、画像処理装置１００の表示部２０３に、Ｗｅｂブラウザ４１０を介して画像処理装置１００を操作する操作画面を表示する機能を備える。また、Ｗｅｂアプリケーション４００は、操作画面を介したユーザの操作に従って、画像処理装置１００の動作を制御する機能を備える。Ｗｅｂアプリケーション４００は、上述の機能を実現するため、マークアップ言語で記述されたデータとしてＨＴＭＬ（Hypertext Markup Language）と、スクリプト言語で記述されたデータとを有する。尚、スクリプト言語には、後述する画像処理装置１００の機能を制御するための、所定のJavaScriptライブラリが含まれる。Ｗｅｂアプリケーション４００は、所定のJavaScriptライブラリを有していれば、実現構成に制限はない。
【００２３】
次に画像形成装置１００が備えるソフトウェアについて説明する。
【００２４】
画像処理装置１００は、Ｗｅｂブラウザ４１０、要求転送部４２０、及びアプリケーションプラットフォーム４３０を有する。これら各部の機能は、画像処理装置１００の記憶部２０８に記憶されており、ＣＰＵ２０４が、そのプログラムを実行することで実現される。Ｗｅｂブラウザ４１０は、通信部４１１、解析部４１２、画面表示部４１３、スクリプト実行部４１４を有する。通信部４１１は、ネットワークＩ／Ｆ２０１を介したＨＴＴＰ通信により、外部装置１０１から提供されるＷｅｂアプリケーションを取得する。解析部４１２は、取得したＷｅｂアプリケーション４００を構成するＨＴＭＬデータを解析する。画面表示部４１３は、解析部４１２によって解析されたデータを用いて画面を表示させる。スクリプト実行部４１４は、取得したＷｅｂアプリケーション４００を構成するスクリプトで定義された制御を実行し、画面表示部４１３の画面遷移などの制御を行う。また、スクリプト実行部４１４は、取得したＷｅｂアプリケーション４００を構成するスクリプトに実装された、後述する所定のJavaScript関数を実行する。また、スクリプト実行部４１４は、要求転送部４２０から取得したJavaScriptコードを実行し、画面表示部４１３の画面遷移などの制御を行う。
【００２５】
要求転送部４２０は、Ｗｅｂブラウザ４１０とアプリケーションプラットフォーム４３０間の制御要求、及び、JavaScriptコードの送受信を制御する。要求転送部４２０は、転送部４２１、及び、スクリプト生成部４２２を有する。転送部４２１は、後述する所定のJavaScript関数の呼び出しに対応する制御用の関数としてコールバック関数を備える。スクリプト実行部４１４で所定のJavaScript関数が実行されると、転送部４２１の、そのJavaScriptに対応付けられたコールバック関数が呼び出される。これにより転送部４２１は、制御要求としてスクリプト実行部４１４から送信されるコールバック関数の引数を、アプリケーションプラットフォーム４３０へ転送する。尚、この引数には、画像処理装置１００のアプリケーション実行するために必要なパラメータが指定されている。また転送部４２１は、アプリケーションプラットフォーム４３０から、画像処理装置１００の機能に対する制御要求の実行結果を受信し、その実行結果をスクリプト生成部４２２に転送する。スクリプト生成部４２２は、転送部４２１から画像処理装置１００の機能に対する制御要求の実行結果を受け取り、スクリプト実行部４１４で実行可能なJavaScriptコードを生成し、それを転送部４２１へ送信する。転送部４２１は、スクリプト生成部４２２から受け取ったJavaScriptコードをスクリプト実行部４１４へ送信する。
【００２６】
アプリケーションプラットフォーム４３０は、制御ＡＰＩ（Application Program Interface）を介して画像処理装置１００を制御するアプリケーションを実行可能な実行基盤である。実施形態では、アプリケーションプラットフォーム４３０は、Ｊａｖａ（登録商標）アプリケーションを実行可能なＪａｖａ仮想マシンである。
【００２７】
アプリケーションプラットフォーム４３０は、制御ＡＰＩを用いて画像処理装置１００のハードウェア資源（読取部２０６、印刷部２０７等）を使用するアプリケーションとして、制御対象アプリケーション４４０を備える。制御対象アプリケーション４４０は、例えば、コピーアプリケーション、スキャンアプリケーションである。また、アプリケーションプラットフォーム４３０は、Ｗｅｂブラウザ４１０からの制御要求に従って制御対象アプリケーション４４０を実行する機能を備えた要求通信部アプリケーション４３１を備える。要求通信部アプリケーション４３１は、解析部４３２と通信部４３３とを有する。通信部４３３は、転送部４２１から送信される、制御対象アプリケーション４４０に対する制御要求を受信する。また通信部４３３は、解析部４３２から送信される制御対象アプリケーション４４０における画像処理装置１００の機能の実行結果を転送部４２１へ送信する。解析部４３２は、通信部４３３から受信した制御要求を解釈し、指定された制御対象アプリケーション４４０のクラスをロードし、制御実行関数を呼び出すことで画像処理装置１００の動作を制御する。尚、アプリケーションプラットフォーム４３０は、後述する要求通信部アプリケーション４３１の解析部４３２が備えている「アプリケーション実行中にロードするクラスや実行関数を動的に変更可能な仕組み」を有するものであれば、その構成に制限はない。
【００２８】
図４は、本実施形態１に係る画像処理装置１００の表示部２０３に表示されるメインメニュー画面例を示す図である。
【００２９】
このメインメニュー画面は、画像処理装置１００の電源がオンされると最初に表示される画面であり、図３に示す制御対象アプリケーション４４０を介した画像処理装置１００の機能を提供するためのアプリケーション起動ボタン５０１，５０２を備える。
【００３０】
アプリケーション起動ボタン５０１は、制御対象アプリケーション４４０を直接起動するボタンである。例として、制御対象アプリケーション４４０のコピーアプリケーションを実行するコピーボタン５０３が押下されたときの動作を説明する。ユーザによりコピーボタン５０３が押下されると、画像処理装置１００のＣＰＵ２０４は、制御対象アプリケーション４４０のコピーアプリケーションを起動する。このときユーザは、表示部２０３に表示されたコピーアプリケーションの操作画面を介して、コピーアプリケーションの実行を指示する。
【００３１】
アプリケーション起動ボタン５０２は、Ｗｅｂブラウザ４１０の画面表示に切り替えるボタンである。本実施形態では、このメインメニュー画面には、Ｗｅｂブラウザ４１０を起動するボタン５０４と、Ｗｅｂブラウザ４１０を起動し、予めユーザがＣＰＵ２０４に記憶させたＵＲＬアドレスにアクセスするショートカットボタン５０５を有する。
【００３２】
ここでは具体例として、制御対象アプリケーション４４０のコピーアプリケーションをＷｅｂブラウザ４１０から実行するショートカットボタンであるコピーＷｅｂアプリケーションボタン５０６が押下されたときの動作を説明する。コピーＷｅｂアプリケーションボタン５０６は、後述する処理手順でコピー機能を実行するための操作を行うアプリケーションのＵＲＬがＣＰＵ２０４に記憶されたボタンである。ユーザによりコピーＷｅｂアプリケーションボタン５０６が押下されると、ＣＰＵ２０４は、そのボタンに対応付けて記憶されたＵＲＬアドレスから、コピーＷｅｂアプリケーションを取得してＷｅｂブラウザ４１０により表示する。次にユーザは、表示部２０３に表示されたＷｅｂアプリケーションの表示画面を介して操作を行ってコピーアプリケーションの実行を指示する。ＣＰＵ２０４は、実行のための制御要求を受け付けると、要求転送部４２０、要求通信部アプリケーション４３１を介して、コピーアプリケーションを実行する。尚、これ以降の処理手順は、ユーザがコピーＷｅｂアプリケーションボタン５０６を押下し、制御対象アプリケーション４４０のコピーアプリケーションをＷｅｂブラウザ４１０を介して操作するものとする。
【００３３】
図５は、本実施形態１に係る画像処理装置１００における処理手順を説明するシーケンス図である。以下、このシーケンス図を参照して、実施形態１に係る画像処理装置１００の動作を説明する。また、各処理を構成する構成データ（図７から図１４）を参照して、画像処理装置１００で実施される処理の詳細を説明する。尚、この図５の各ステップＳは画像処理装置１００が備えるＣＰＵ２０４が、記憶部２０８に記録されたプログラムをＲＡＭ２０５上に読み出して実行することで実行される。また実施形態１では、制御対象アプリケーション４４０は、画像処理装置１００が備えるコピー機能を実行する制御ＡＰＩを利用し作成されたアプリケーションであるものとする。また、Ｗｅｂアプリケーション４００は、制御対象アプリケーション４４０を介して、画像形成装置１００のコピー機能を実行するための操作を行うアプリケーションとする。また図５において、前述の図３のソフトウェア構成と共通する部分は同じ記号で示し、それらの説明を省略する。まず図５のＳ６０２からＳ６０５までの一連の処理の流れを説明する。
【００３４】
ユーザ６００がＳ６０１で、入力部２０２から、Ｗｅｂアプリケーション４００を起動するボタン（不図示）を押下すると、ＣＰＵ２０４はＳ６０２で、記憶部２０８に記憶されているＷｅｂブラウザ４１０を起動するプログラムを実行する。こうしてＷｅｂブラウザ４１０を起動した後、ＣＰＵ２０４は、記憶部２０８に記憶されたＷｅｂアプリケーション４００の記憶場所を示すＵＲＬに基づき、HTTP Requestを通信部４１１からネットワークＩ／Ｆ２０１を介して外部装置１０１に送信する。
【００３５】
これにより外部装置１０１のＣＰＵ３０２は、ネットワークＩ／Ｆ３０１を介して、HTTP Requestを受け取る。そしてＳ６０３でＣＰＵ３０２は、記憶部３０４からＷｅｂアプリケーション４００を構成するデータ（HTML，JavaScriptなど）を、HTTP Responseに含めてネットワークＩ／Ｆ３０１を介し画像処理装置１００へ送信する。
【００３６】
これにより画像処理装置１００のＣＰＵ２０４はＳ６０４で、ネットワークＩ／Ｆ２０１を介して通信部４１１が受信したデータを解析部４１２で解析する。そしてＳ６０５でＣＰＵ２０４は、画面表示部４１３を通じて表示部２０３に操作画面を表示する。
【００３７】
図６は、図５のＳ６０４，Ｓ６０５においてＣＰＵ２０４により解析され、画面表示部４１３を通じて表示部２０３に表示されるＷｅｂアプリケーション４００の操作画面の一例を示す図である。
【００３８】
実施形態１では、画像処理装置１００が備えるコピー機能を、制御対象アプリケーション４４０の一つであるコピーアプリケーションを介して実行するための操作画面となっている。同図に示されるように、操作画面６６０は、印刷枚数、原稿サイズなどの設定ボタン６６１と、制御対象アプリケーション４４０の機能実行を開始するための実行ボタン６６２とを備える。以上が図５のＳ６０２からＳ６０５までの一連の処理の流れの説明である。
【００３９】
尚、本実施形態１では、Ｗｅｂブラウザ４１０を起動する際、予めＷｅｂアプリケーション４００を記憶する外部装置１０１のＵＲＬを記憶部２０８に記憶しているが、本発明はこれに限られたものではない。例えば、ユーザ６００が入力部２０２の起動ボタンを押下すると、ＣＰＵ２０４が記憶部２０８からＷｅｂブラウザ４１０を起動する。その後、ＣＰＵ２０４が、ユーザ６００が入力部２０２により指定したＷｅｂアプリケーション４００を記憶する外部装置１０１のＵＲＬに基づくHTTP RequestをネットワークＩ／Ｆ２０１を介して通信部４１１から送信する形式でもよい。
【００４０】
次に、図５のＳ６１０，Ｓ６１１，Ｓ６２０，Ｓ６２１の処理の流れを説明する。
【００４１】
ユーザ６００がＳ６１０で、入力部２０２で操作画面６６０の設定ボタン６６１を押下する。これによりＣＰＵ２０４は、設定ボタン６６１の操作に対応する、画面遷移などの制御を動的に行うスクリプト部（図７の記述７０２ｂ）をスクリプト実行部４１４を介して実行する。そしてＳ６１１でＣＰＵ２０４は、画面表示部４１３を動的に遷移させながら制御対象アプリケーション４４０に対する制御要求を作成する。
【００４２】
次に、ユーザ６００がＳ６２０で、入力部２０２で操作画面６６０の実行ボタン６６２を押下する。これによりＣＰＵ２０４は、実行ボタン６６２に対応する、制御対象アプリケーション４４０を実行させるためのスクリプト部（記述７０２ｃ）をスクリプト実行部４１４を介して実行する。そしてスクリプト部（記述７０２ｃ）の実行により、ＣＰＵ２０４はＳ６２１で、前述のＳ６１０，Ｓ６１１を通じて作成した制御要求を、要求転送部４２０の転送部４２１に送信する。
【００４３】
図５のＳ６１０，Ｓ６１１，Ｓ６２０，Ｓ６２１で実行する、操作画面の遷移や、制御対象アプリケーション４４０の機能実行の開始などを行う、スクリプトデータの一例を図７及び図８に示す。
【００４４】
図７は、図５のＳ６０３で外部装置１０１から受信するＨＴＭＬデータの一例を示す図である。このＨＴＭＬデータは、操作画面６６０の画面形式定義部（記述７０３）を備える。また、このＨＴＭＬデータは、画面遷移などの制御を動的に行うスクリプト部（記述７０２）と、制御対象アプリケーション４４０を実行するためのクラス、関数を実装したJavaScriptライブラリ８００のインポート部（記述７０１）とを備える。
【００４５】
記述７０３は、印刷枚数、原稿サイズなどの設定ボタン６６１（記述７０３ａ）と、制御対象アプリケーション４４０の機能実行を開始する実行ボタン６６２（記述７０３ｂ）の構成を含んでいる。
【００４６】
操作画面の動的遷移などの操作設定（Ｓ６１１，Ｓ６２１）は、設定ボタン６６１を定義するスクリプト部（記述７０２ｂ）、実行ボタン６６２を定義するスクリプト部（記述７０２ｃ）を介して実現される。また記述７０２ｂ、記述７０２ｃは、各種制御設定の保存（Ｓ６１１）と制御要求の送受信（Ｓ６２１，Ｓ６２８）を実行するため、記述７０１でインクルードするJavaScriptライブラリ８００（図８）の関数を呼び出すスクリプトである。
【００４７】
記述７０２ａは、JavaScriptライブラリ８００で定義されるapiインスタンスを生成するスクリプトである。記述７０２ｂは、api.setCopiesSize関数、記述７０２ｃにおいてはapi.setCopiesNum関数、api.startApplication関数を実行するスクリプトである。
【００４８】
図８に示されるJavaScriptライブラリ８００は、コンストラクタ部（記述８０１）、Getter、Setter部（記述８０２）、制御要求送信部（記述８０３）、制御結果格納部（記述８０４）を有する。記述８０１は、Ｓ６２１で制御要求として送信する配列（記述８０１ａ）、Ｓ６１１で生成される制御要求を格納する制御対象アプリケーション４４０の実行関数の引数に対応した変数群（記述８０１ｂ）の定義である。記述８０１ａは、初期値として、制御対象アプリケーション４４０のjarファイルのパス名、処理を実行するクラス名を代入する。また、後述するＳ６２９のスクリプト実行時における、制御対象アプリケーション４４０の制御結果を格納する変数（記述８０１ｂ）も定義している。
【００４９】
記述８０２は、記述８０１ｂの各変数に対して、変数の取得、設定を行う関数群の定義である。
【００５０】
記述８０３は、作成された制御対象アプリケーション４４０に対する制御要求を要求転送部４２０へ送信するスクリプトであり、Ｓ６２１で実行される。記述８０３は、変数群（記述８０１ｂ）の制御設定を配列（記述８０１ａ）に格納する関数群（記述８０３ａ）と、制御要求を引数として要求転送部４２０へ送信する制御開始関数（記述８０３ｂ）を有する。記述８０３ｂは、後述する要求転送部４２０の構成データ内でコールバック関数を呼び出すための関数定義である。
【００５１】
実行ボタン６６２の操作により記述８０３ｂのstartAppl関数が実行されると、要求転送部４２０のコールバック関数が実行され、記述８０３ｂの関数の引数（copies）が、制御要求として要求転送部４２０へ送信される。
【００５２】
以上のＨＴＭＬデータとスクリプトにより、Ｓ６１０でのユーザ６００の設定ボタン６６１の操作に対し、Ｗｅｂブラウザ４１０は、スクリプト部（記述７０２ｂ）を実行することで、Ｓ６１１の操作画面の動的遷移や制御要求の作成を実行する。またＳ６２０でのユーザ６００の実行ボタン６６２の操作に対し、Ｗｅｂブラウザ４１０は、スクリプト部（記述７０２ｃ）を実行することで、Ｓ６２１における、制御要求の要求転送部４２０への送信を実行する。以上が図５における、Ｓ６１０，Ｓ６１１，Ｓ６２０，Ｓ６２１の処理の流れの説明である。
【００５３】
次に、図５のＳ６２２の処理の流れを説明する。
【００５４】
ＣＰＵ２０４は、前述のＳ６２１において所定のJavaScript関数をスクリプト実行部４１４で実行した後、要求転送部４２０の転送部４２１のプログラムを記憶部２０８からＲＡＭ２０５に読み出す。そしてＣＰＵ２０４はＳ６２２で、転送部４２１のプログラム内で、所定のJavaScript関数の実行に対応づけられたコールバック関数を実行して制御要求を取得し、要求通信部アプリケーション４３１の通信部４３３に制御要求を転送する。
【００５５】
Ｓ６２２で使用する、要求転送部４２０の応答処理を実行するプログラムの一例を図９及び図１０に示す。
【００５６】
記述９００は、要求転送部４２０のプログラムの全体構成を示し、記述９０１及び記述９０２を備える。本実施形態１では、記述９００のプログラムはC/C++で記載されている。記述９０１は、ＷｅｂブラウザエンジンWebKit（登録商標）のJavaScriptCoreライブラリの機能をインクルードするための宣言である。記述９０１は、Ｗｅｂブラウザ４１０上のJavaScriptライブラリ８００から要求転送部４２０の処理、及び要求転送部４２０からJavaScriptライブラリ８００の処理を実行可能とするライブラリの利用と独自ＡＰＩの追加のために利用される。
【００５７】
記述９０２は、JavaScriptCoreライブラリ８００の機能を利用するためのコードである。記述９０２は、記述９０２ａと記述９０２ｂとを含んでいる。記述９０２ａは、JavaScriptライブラリ８００で指定した所定の関数（記述８０３ｂ）の実行時に呼び出されるコールバック関数の設定である。本実施形態１では、JavaScriptライブラリ８００で指定した所定の関数をstartAppli関数、呼び出されるコールバック関数をJSGlobalStart関数（記述９０２ｂ）とする。記述９０２ａは、Ｗｅｂブラウザ４１０の起動時に１回だけ呼び出される。この時、JavaScriptライブラリ８００のstartAppli関数実行時に呼び出されるコールバック関数として、JSGlobalStart関数が対応づけられる。以降、Ｗｅｂブラウザ４１０は、startAppli関数を実行するときにコールバック関数の利用が可能となる。記述９０２ｂは、JavaScriptライブラリ８００で指定した関数（記述８０３ｂ）の実行時に呼び出されるコールバック関数である。記述９０２ｂは、JavaScript文字列変換部（記述９０２ｃ）、要求通信部アプリケーション４３１への転送（記述９０２ｄ）、スクリプト生成部（記述９０２ｅ）、Ｗｅｂブラウザ４１０への転送（記述９０２ｆ）を含んでいる。また記述９０２ｂは、JavaScriptライブラリ８００で指定した関数（記述８０３ｂ）に引数が存在する場合、その引数を取得した状態で実行する。実施形態１では、Ｓ６２１におけるstartAppli関数の実行時に、制御対象アプリケーション４４０に対する制御要求を引数として取ることで（記述８０３ｂ）、記述９０２ｂに制御要求を送信している。
【００５８】
記述９０２ｃは、コールバック関数に渡された制御要求がJavaScriptコード形式であるため、C/C++文字列に変換している。記述９０２ｃは、JavaScriptCoreライブラリ８００の機能によって実現される。
【００５９】
本実施形態では、制御要求のJavaScript配列 ["CopyAppli/copy_sample.jar"， "copy.CopyJob"， ...]を、文字列「CopyAppli/copy_sample.jar，copy.CopyJob，...」に変換する。
【００６０】
記述９０２ｄは、Ｓ６２２に対応する処理として、制御要求の文字列を要求通信部アプリケーション４３１に転送する。実施形態１では、ソケット通信を利用し、制御要求の文字列を送信する構成としているが、要求転送部４２０、要求通信部アプリケーション４３１間で制御要求を送受信可能な構成を有していれば、実現構成に制限はない。
【００６１】
以上のプログラムにより、Ｓ６２１でＷｅｂブラウザ４１０がstartAppli関数を実行すると、要求転送部４２０が、その関数に対応付けられたJSGlobalStart関数（記述９０２ｂ）を実行する。そしてその関数内において、Ｓ６２２で要求転送部４２０が、要求通信部アプリケーション４３１に制御要求を転送する。
【００６２】
尚、本実施形態１では、JavaScriptCoreライブラリ８００を利用しているため、要求転送部４２０をC/C++で実装しているが、JavaScriptに対し相互に実行可能とする独自ＡＰＩを追加できるライブラリを有していれば、実現構成に制限はない。
【００６３】
以上が図５におけるＳ６２２の処理の流れの説明である。
【００６４】
次に、図５のＳ６２３からＳ６２６までの一連の処理の流れを説明する。
【００６５】
ＣＰＵ２０４は、前述のＳ６２２で転送部４２１が送信した制御要求を、要求通信部アプリケーション４３１の通信部４３３が受信する。次にＳ６２３でＣＰＵ２０４は、解析部４３２で、その制御要求を解析し、Ｓ６２４，Ｓ６２５でその解析した制御要求に対応する制御対象アプリケーション４４０を実行する。その後、ＣＰＵ２０４はＳ６２６で、通信部４３３により、解析部４３２から受け取った制御対象アプリケーション４４０の実行結果を転送部４２１へ送信する。
【００６６】
上述のＳ６２３からＳ６２６までで使用する、要求通信部アプリケーション４３１の処理応答を実現するプログラムの一例を図１１から図１４に示す。
【００６７】
記述１１００は、要求通信部アプリケーション４３１のプログラムの全体構成を示し、記述１１０１、記述１１０２（図１２）、記述１１０３（図１３、図１４）とを備える。本実施形態１では、記述１１００のプログラムはJavaで記載されている。
【００６８】
記述１１０１は、Ｓ６２３からＳ６２６までの一連の処理を実行する。記述１１０１ａは、前述のＳ６２２で要求転送部４２０から送信された制御要求の受信を行う。記述１１０２は、Ｓ６２３，Ｓ６２４，Ｓ６２５に対応する、制御要求の解析、制御対象アプリケーション４４０の実行を行う関数を実行する。記述１１０１ｂは、Ｓ６２６に対応する、記述１１０２における制御対象アプリケーション４４０の実行結果を、要求転送部４２０へ送信する。
【００６９】
尚、本実施形態１では、制御要求の受信と実行結果の送信にソケット通信を利用する構成としているが、要求転送部４２０、要求通信部アプリケーション４３１の構成プログラム間で要求制御を送受信可能な構成を有していれば実現構成に制限はない。
【００７０】
記述１１０２は、Ｓ６２３に対応する受信した制御要求の解析部と、Ｓ６２４，Ｓ６２５に対応する制御要求の実行部を備える。記述１１０２ａは、要求転送部４２０から受信した制御要求文字列を文字列単位に分割し、解析用の文字配列に格納する。本実施形態１では、要求転送部４２０が記述９０２ｃで変換した制御要求文字列「CopyAppli/copy_sample,copy.CopyJob，...」を「，」で区切り、「CopyAppli/copy_sample」、「.copy.CopyJob」…の文字列ごとに配列に格納する。
【００７１】
記述１１０２ｂは、分割した制御要求の文字列を基に、制御対象アプリケーション４４０において、画像処理装置１００の所定の機能を実行する制御ＡＰＩが実装されているクラスのインスタンスの動的生成を行う。
【００７２】
本実施形態１では、記述１１０２ａで文字配列の一番目に確保したjarファイルのパスから、制御ＡＰＩが実装されたクラスのロードを行っている。また、文字配列の二番目に確保したクラス名から、動的にインスタンスを生成する。以降の処理において、要求通信部アプリケーション４３１は、前述のインスタンスを通じた制御対象アプリケーション４４０の制御ＡＰＩの呼び出しが可能になる。
【００７３】
記述１１０２ｃは、記述１１０２ｄ、記述１１０２ｅ、及び記述１１０３で構成される。記述１１０２ｄは、記述１１０２ａで確保した文字配列の内容を解釈し、制御対象アプリケーション４４０の実行する制御ＡＰＩの関数名と引数を格納した配列の範囲を特定する。
【００７４】
本実施形態１では、文字配列の「##START_METHOD##」、「##END_METHOD##」間に存在する文字列が、関数名と引数を備えており、該当範囲の配列番号を確保する。
【００７５】
記述１１０２ｅは、制御要求、作成したクラスのインスタンス（記述１１０２ｂ）、解析した配列番号（記述１１０２ｄ）を引数とした、制御対象アプリケーション４４０の制御ＡＰＩを実行する処理用関数（記述１１０３）を呼び出す（Ｓ６２４，Ｓ６２５）。尚、記述１１０２ｃは、受信した全ての制御要求が実行されるか、又は処理用関数（記述１１０３）の実行結果が異常終了であった場合まで、繰り返し処理を実行する。
【００７６】
記述１１０２ｆは、記述１１０２の処理中に例外が発生した場合、処理を中断し異常終了の戻り値を返す処理を行っている。Ｓ６２６においては、記述１１０３の関数の実行結果（Ｓ６２５）に加え、ここでの処理結果を実行結果として、要求転送部４２０に送信する。
【００７７】
記述１１０３は、Ｓ６２４，Ｓ６２５に対応し、制御要求として指定された制御対象アプリケーション４４０の制御ＡＰＩの関数の実行を行う。記述１１０３ａは、制御要求として指定された制御対象アプリケーション４４０の制御ＡＰＩの関数名が、記述１１０２ｂで動的に生成したクラス内に存在するか判定し、存在しない場合はエラーを返して処理を終了する。記述１１０３ｂは、制御要求として指定された制御対象アプリケーション４４０の制御ＡＰＩの関数がもつ引数の型群を配列に確保する。記述１１０３ｃは、制御要求として受信した、制御要求として指定された制御対象アプリケーション４４０の制御ＡＰＩの関数に実行時に渡す引数を配列に確保する。記述１１０３ｄでは、記述１１０３ｂ、記述１１０３ｃで確保した配列を用いて、制御要求として指定された制御対象アプリケーション４４０の制御ＡＰＩの関数を実行する。これらの処理より、要求通信部アプリケーション４３１は、クラス名、関数名、変数を基に制御対象アプリケーション４４０の制御ＡＰＩを介した、画像処理装置１００の機能の実行を行う。記述１１０３ｅは、図５のＳ６２５に対応する処理として、記述１１０３の処理中に例外が発生した場合、処理を中断し異常終了の戻り値を返し、そうでなければ正常終了の結果を記述１１０２に返す。
【００７８】
以上のプログラムにより、Ｓ６２３で、要求通信部アプリケーション４３１が受信した制御要求を解析し、Ｓ６２４，Ｓ６２５で、指定された制御対象アプリケーション４４０を実行し、Ｓ６２５で要求転送部４２０に実行結果を転送する。
【００７９】
以上が図５における、Ｓ６２３からＳ６２６までの一連の処理の流れの説明である。
【００８０】
次に、図５のＳ６２７，Ｓ６２８の処理の流れを説明する。
【００８１】
ＣＰＵ２０４はＳ６２６で、転送部４２１で通信部４３３から送信した制御対象アプリケーション４４０の実行結果を受信した後、Ｓ６２７で、スクリプト生成部４２２のプログラムを実行し、実行結果に応じたJavaScriptのコードを作成する。その後、ＣＰＵ２０４は、転送部４２１でスクリプト生成部４２２により生成されたJavaScriptコードを、Ｓ６２８でＷｅｂブラウザ４１０のスクリプト実行部４１４に送信する。
【００８２】
図５のＳ６２７，Ｓ６２８で使用する要求転送部４２０の該当する処理応答を構成するプログラムの一例を図１０の記述９０２ｅから記述９０２ｈに示す。
【００８３】
記述９０２ｅは、Ｓ６２６に対応する処理として、要求通信部アプリケーション４３１から制御対象アプリケーション４４０の実行結果の文字列を受信する構成を有している。尚、本実施形態１では、実行結果の文字列を受信する構成としてソケット通信を利用しているが、要求転送部４２０、要求通信部アプリケーション４３１の構成プログラム間で要求制御を送受信可能な構成を有していれば実現構成に制限はない。
【００８４】
記述９０２ｆは、Ｓ６２７に対応する処理として、受信した制御対象アプリケーション４４０の実行結果に応じ、実行結果を反映したJavaScriptのコードを表わすC/C++文字列を作成する。この時、作成するJavaScriptコード文字列には、JavaScriptライブラリ８００で定義されている所定のJavaScript関数が含まれる。本実施形態１では、JavaScriptライブラリ８００内で、この所定のJavaScript関数を、実行結果の文字列を受信する関数returnAppliとして定義している（記述８０４ａ）。また、記述９０２ｆにおいて、作成するJavaScriptコードの文字列を、引数に実行結果の文字列を取るreturnAppli関数の実行としている。記述９０２ｇは、作成したJavaScriptコードのC/C++文字列を、JavaScriptとして実行可能なJavaScriptコードへ変換する。この記述９０２ｇは、JavaScriptCoreライブラリの機能を利用して実現している。記述９０２ｈは、Ｓ６２８に対応する処理として、変換されたJavaScriptコードを引数としたスクリプト実行部４１４の関数呼び出しによるＷｅｂブラウザ４１０への実行結果の転送を行う。この記述９０２ｈは、JavaScriptCoreライブラリの機能を利用して実現している。
【００８５】
本実施形態１では、スクリプト実行部４１４を構成するJavaScriptCoreライブラリの機能より、引数のJavaScriptコードを実行する関数に対し、Ｓ６２７で作成したJavaScriptコードを引数として呼び出しを行っている。
【００８６】
この処理により、引数のJavaScriptコードは、記述されたreturnAppli関数が引数に実行結果の文字列を持つ関数（記述８０４ａ）としてＷｅｂブラウザ４１０のスクリプト実行部４１４で実行される。即ち、記述９０２ｈの処理を通じて、Ｓ６２８に対応する、要求転送部４２０からＷｅｂブラウザ４１０への実行結果の転送が行われる。
【００８７】
尚、本実施形態１では、Ｓ６２７，Ｓ６２８においてJavaScriptCoreライブラリを利用しているが、実現構成はこれに制限されるものではない。文字列をJavaScriptコードとして実行可能なライブラリを有し、かつ、スクリプト実行部４１４の実行プログラム（不図示）において当該ライブラリを利用する構成であればよい。
【００８８】
以上のプログラムにより、要求転送部４２０がＳ６２７で、受信した制御対象アプリケーション４４０の実行結果からスクリプトを生成し、Ｓ６２８でＷｅｂブラウザ４１０にそのスクリプトを送信することで、実行結果を転送する。
【００８９】
以上が図５のＳ６２７，Ｓ６２８の処理の流れの説明である。
【００９０】
最後に、図５のＳ６２９の処理の流れを説明する。
【００９１】
ＣＰＵ２０４はＳ６２９で、転送部４２１から送信した実行結果を反映したスクリプトをスクリプト実行部４１４にて実行し、画面表示部４１３への結果の反映などを行う。このＳ６２９の処理では、図７のＨＴＭＬデータの記述７０２ｄ、及び、JavaScriptライブラリ８００の記述８０４が実行される。
【００９２】
記述８０４は、要求転送部４２０でJavaScriptコードとして指定する所定のJavaScript関数部（記述８０４ａ）と、要求転送部４２０から受信した実行結果の文字列取得部（記述８０４ｂ）とを備える。記述８０４ａは、記述９０２ｆでJavaScriptコードとして生成されるreturnAppli関数を実装しており、実施形態１では、引数として渡された実行結果を、制御結果の格納用変数（記述８０１ｃ）へ代入する処理を行う。
【００９３】
記述７０２ｄは、実行結果をＷｅｂブラウザ４１０で反映させる処理を行う。本実施形態１では、記述８０４ｂの関数を呼び出し、取得した実行結果の文字列を画面に表示する処理を実行する。
【００９４】
以上のプログラムにより、Ｗｅｂブラウザ４１０上でＳ６２９の、制御対象アプリケーション４４０の実行結果を反映した、画面表示部４１３への結果の反映などを行う。
【００９５】
尚、本実施形態１では、指定する所定のJavaScript関数（記述８０４ａ）として、引数として取る文字列をセットする処理を行っているが、JavaScriptとして実行可能なコードであれば、その実現構成に制限はない。同様に、記述７０２ｄの処理において、実行結果の成功／失敗の判定を文字列としてalert関数で表示するものとしているが、HTML，JavaScriptとして実行可能なプログラムであれば、実現構成に制限はない。
【００９６】
以上が図５におけるＳ６２９の処理の流れの説明である。
【００９７】
以上により実施形態１では、Ｗｅｂブラウザ４１０から、JavaScriptライブラリ８００に記載されたクラス名、関数名、変数に基づき、画像処理装置１００の制御対象アプリケーション４４０を実行することが可能になる。そのため、Ｗｅｂブラウザ４１０からのローカルアプリケーションを利用する際、JavaScriptライブラリの作成のみで、ローカルアプリケーションに修正を加えることなくＷｅｂブラウザ対応アプリケーションとして使用できるようになる。このことから、画像処理装置１００のＷｅｂブラウザ４１０によりアプリケーションを実行させるために要するプログラムの開発工数を削減することができる。
【００９８】
［実施形態２］
上述の実施形態１では、Ｗｅｂブラウザ４１０から制御対象アプリケーション４４０を実行するため、Ｗｅｂブラウザ４１０はJavaScriptライブラリ８００に記載されたクラス名、関数名、変数に基づく制御要求を要求通信部アプリケーション４３１に送信する。そして、要求通信部アプリケーション４３１は、制御要求を解析し、該当する制御対象アプリケーション４４０の実行を行っていた。即ち、画像処理装置１００は、Ｗｅｂブラウザ４１０から制御要求として指定する制御対象アプリケーション４４０の情報に関して、要求通信部アプリケーション４３１が解析する時点まで取得することができない。従って、画像処理装置１００は、ユーザ６００が指定するＷｅｂアプリケーション４００からの制御要求が制御対象アプリケーション４４０を使用できるかどうか、ユーザ６００による制御要求操作を受信するまで判定することができない。
【００９９】
そこで実施形態２では、Ｗｅｂアプリケーション４００の起動時に、そのＷｅｂアプリケーション４００が制御する制御対象アプリケーション４４０が使用可能かどうか判定する処理を行う。以下、図を参照して実施形態１との差分を説明する。尚、実施形態２に係るシステム構成及び外部装置１０１と画像処理装置１００のハードウェア構成は前述の実施形態１と同様であるため、その説明を省略する。
【０１００】
図１５は、本発明の実施形態２に係る外部装置１０１と画像処理装置１００のソフトウェア構成例を示す機能ブロック図である。図１５に示すソフトウェア構成は、図２で示した、画像処理装置１００のＣＰＵ２０４、外部装置１０１のＣＰＵ３０３がプログラムを実行することで実現される。尚、図１５以降の図において、実施形態１で参照した図と同じ番号で示されるものは同一のものとし、その説明を省略する。
【０１０１】
判定部１５００は、通信部４３３が受信した利用アプリケーション情報を解釈し、制御対象アプリケーション４４０が有するアプリケーション名、バージョン情報との比較を行い、利用可能かどうかの判定を行う。
【０１０２】
図１６は、実施形態２に係る画像処理装置１００の処理手順を示すシーケンス図である。以下、このシーケンス図と、各処理を構成する構成データ図（図１７、図１８）、及び表示するエラー画面図（図１９）を用いて、処理手順の説明を行う。尚、この実施形態２に係る処理は、図５のＳ６０４とＳ６０５との間で実行されるものである。そのため、図１６では、Ｓ６１０以降の処理の記述を省略している。
【０１０３】
まず、図１６のＳ１６００の処理の流れを記載する。
【０１０４】
ＣＰＵ２０４は、Ｓ６０４で解析したＨＴＭＬデータ内に記述されたスクリプトデータをスクリプト実行部４１４で実行する。そしてスクリプトデータ（図１７の記述１７０１）の実行により、ＣＰＵ２０４は、利用する制御対象アプリケーション４４０に関する使用アプリケーション情報を転送部４２１に送信する（Ｓ１６０１）。Ｓ１６００の処理の詳細について、図１７のJavaScriptライブラリ８００を用いて説明する。
【０１０５】
実施形態２では、JavaScriptライブラリ８００において、コンストラクタ部（記述８０１）に、Ｓ１６００で送信する配列（記述１７００）を追加している。また、使用アプリケーション情報を転送部４２１に送信する判定用関数（記述１７０１）を追加している。記述１７００は、JavaScriptライブラリ８００が利用する、制御対象アプリケーション４４０のアプリケーション名、利用可能なアプリケーションのバージョン範囲を代入した使用アプリケーション情報を備える。本実施形態２では、制御対象アプリケーション４４０のアプリケーション名を「Copy_Service」、対応しているバージョン範囲を「１.０.２」から「２.２.１」として、使用アプリケーション情報にまとめている。記述１７０１は、使用アプリケーション情報の配列（記述１７００）を引数として要求転送部４２０へ送信する判定開始関数（記述１７０２）を有する。記述１７０２は、記述８０３ｂの関数と同様に、要求転送部４２０のコールバック関数を呼び出すための関数定義であり、Ｗｅｂブラウザ４１０がcheckInfo関数を実行すると、要求転送部４２０は対応するコールバック関数を実行する。このとき記述１７０２の引数が、判定情報として要求転送部４２０へ送信される。記述１７００、記述１７０１に加えて、図７のＨＴＭＬデータは、スクリプト部（記述７０２）内のInit関数の処理に、記述１７０１の関数を呼び出す記述を新たに備える（不図示）。Init関数は、画面形式定義部（記述７０３）より、解析されたＨＴＭＬデータよる操作画面が表示される直前に実行される。そのため、Ｗｅｂアプリケーション４００は、起動前に使用アプリケーション情報の判定処理を行うことが可能となる。
【０１０６】
以上のプログラムにより、Ｗｅｂブラウザ４１０は、Ｓ６０４のＨＴＭＬデータの解析によって、Init関数を介してcheckInfo関数（記述１７０２）を実行する。checkInfo関数（記述１７０２）の実行によって、Ｗｅｂブラウザ４１０は、使用アプリケーション情報を要求転送部４２０へ送信する（Ｓ１６００）。
【０１０７】
以上が図１６における、Ｓ１６００の処理の流れの説明である。
【０１０８】
次に、図１６のＳ１６０１の処理の流れを説明する。
【０１０９】
ＣＰＵ２０４は、前述のＳ１６００において所定のJavaScript関数をスクリプト実行部４１４で実行した後、要求転送部４２０を構成する転送部４２１のプログラムを記憶部２０８からＲＡＭ２０５に読み出す。そしてＣＰＵ２０４は、転送部４２１で、所定のJavaScript関数の実行に対応づけられたコールバック関数を実行し、スクリプト実行部４１４から送信した使用アプリケーション情報を通信部４３３へ転送する（Ｓ１６０１）。このＳ１６０１の処理は、Ｓ６２１の処理と同様である。即ち、JavaScriptライブラリ８００で指定したcheckInfo関数（記述１７０２）に対応するコールバック関数を設定する（不図示）。そして、コールバック関数内でcheckInfo関数から受け取った引数を、通信部４３３へ送信する構造を定義する（不図示）。
【０１１０】
以上のプログラムにより、Ｗｅｂブラウザ４１０がcheckInfo関数を実行すると（Ｓ１６００）、要求転送部４２０が、その関数に対応付けられたコールバック関数を実行する。そしてその関数内において、要求転送部４２０が、要求通信部アプリケーション４３１に使用アプリケーション情報を転送する（Ｓ１６０１）。以上が図１６のＳ１６０１の処理の流れの説明である。
【０１１１】
次に、図１６のＳ１６０２からＳ１６０５までの一連の処理の流れを説明する。
【０１１２】
ＣＰＵ２０４は、前述のＳ１６０１で転送部４２１が送信した使用アプリケーション情報を、要求通信部アプリケーション４３１の通信部４３３で受信する。次にＣＰＵ２０４は、判定部１５００で、全ての制御対象アプリケーションに対してアプリケーション情報の取得（Ｓ１６０２）と使用アプリケーション情報との比較（Ｓ１６０３）を行う。この比較判定後、ＣＰＵ２０４は、通信部４３３において、判定部１５００から受け取った制御対象アプリケーション４４０のアプリケーション情報と使用アプリケーション情報の比較結果を、Ｓ１６０４で転送部４２１へ送信する。
【０１１３】
Ｓ１６０２，Ｓ１６０３の処理の詳細について、図１８の要求通信部アプリケーション４３１を構成する、判定部１５００を実現するプログラムの一例を参照して説明する。記述１８００は、判定部１５００のプログラムの全体構成を示し、記述１８０１、記述１８０２とを備える。尚、Ｓ１６０１，Ｓ１６０４の使用アプリケーション情報の受信と、判定結果の送信を行う処理は、通信部４３３の記述１１０１ａ、記述１１０１ｂと同様のプログラムにより実行されるものとし、説明は省略する。
【０１１４】
記述１８０１は、実施形態２において、記述１８０２でアプリケーションプラットフォーム４３０上の稼働するアプリケーション情報を取得するための宣言部である。ここでは、ＯＳＧｉ（Open Services Gateway initiative platform）フレームワークでアプリケーションを起動し、バンドルコンテキストオブジェクトの取得を行う。そのため実施形態２では、アプリケーションプラットフォーム４３０を構成するJava仮想マシンに、ＯＳＧｉフレームワークを含んでいる。また要求通信部アプリケーション４３１、制御対象アプリケーション４４０は、ＯＳＧｉフレームワーク上で稼働するアプリケーションとする。ＯＳＧｉフレームワークは、モジュールシステムと、Javaのサービスプラットフォームと、アプリケーションのインストール、開始、停止、アンインストールを、Java仮想マシンを再起動することなく実行できる環境を提供する。ＯＳＧｉフレームワークは、アプリケーションをバンドルという単位で管理する。バンドルは、アプリケーションを構成するJarファイルに加え、アプリケーション名、バージョン情報などのメタデータを記述したマニフェストファイルを有する。バンドルとして起動するアプリケーションは、単一のフレームワーク上で管理されるため、他のバンドルを検知し利用することができる。従って、要求通信部アプリケーション４３１をＯＳＧｉフレームワーク上で起動し、バンドルコンテキストオブジェクトを取得することで、後述する記述１８０２ｂで稼働している全てのアプリケーションの情報を取得することが可能となる。
【０１１５】
記述１８０２は、Ｓ１６０２，Ｓ１６０３に対応する使用アプリケーション情報の判定部を備え、記述１８０２ａ、記述１８０２ｂとを有する。
【０１１６】
記述１８０２ａは、アプリケーションプラットフォーム４３０上で稼働する、全てのアプリケーションのオブジェクトを取得する。実施形態２においては、ＯＳＧｉフレームワーク上で稼働する、全てのアプリケーションに関するバンドルオブジェクトを取得する。バンドルオブジェクトを取得することで、判定部１５００は、稼働しているアプリケーションが有するマニフェストファイルの情報を参照することが可能となる。
【０１１７】
記述１８０２ｂは、記述１８０２ａで取得した全てのオブジェクトに対し、アプリケーション名、バージョン情報を使用アプリケーション情報と比較し（記述１８０２ｃ、記述１８０２ｄ）、情報の一致判定を行う。記述１８０２ｂは、使用アプリケーション情報に記載されたアプリケーション名が存在しない、又は、存在していてもバージョン情報が異なる場合、対応するエラーコードを返し、一致した場合は、正常終了のコードを返す。
【０１１８】
実施形態２では、稼働しているアプリケーションのバンドルオブジェクトが有する、マニフェストファイル内に記載されたメタデータを用いて判定を行う。記述１８０２ｃでは、マニフェストファイルの「Bundle-Name」内に記載されたアプリケーション名を用いて、制御対象アプリケーション４４０が画像処理装置１００に存在しているか判定する。制御対象アプリケーション４４０が存在した場合、記述１８０２ｄは、マニフェストファイルの「Bundle-Version」内に記載されたバージョン情報を取得し、使用アプリケーション情報に記載された、対応可能バージョン範囲内であることを判定する。
【０１１９】
以上のプログラムにより、要求通信部アプリケーション４３１が、Ｓ１６０２で制御対象アプリケーション４４０のアプリケーション情報を取得し、Ｓ１６０３で使用アプリケーション情報と比較し、Ｓ１６０４で、その比較結果を要求転送部４２０に送信する。
【０１２０】
以上が図１６のＳ１６０２からＳ１６０５までの一連の処理の流れの説明である。
【０１２１】
尚、実施形態２では、制御対象アプリケーション４４０の使用可能判定のため、ＯＳＧｉフレームワーク含むJava仮想マシンによるアプリケーションプラットフォームとしているが、実現構成はこれに限られたものではない。即ち、プラットフォーム上で稼働するアプリケーションが、メタデータとしてアプリケーション名、バージョン情報を有するものであり、かつ、アプリケーション間でそれらの情報を参照可能であるプラットフォームであればよい。
【０１２２】
最後に、図１６のＳ１６０５からＳ１６１０までの処理の流れを説明する。
【０１２３】
ＣＰＵ２０４はＳ１６０４で、転送部４２１で通信部４３３から送信した使用アプリケーション情報の判定結果を受信した後、スクリプト生成部４２２のプログラムを実行する。ＣＰＵ２０４は、判定結果が正常終了コードである場合、何も処理を行わず、Ｓ６０４で解析した画面を表示する（Ｓ６０５）。ＣＰＵ２０４は、判定結果がエラーコードである場合、Ｓ１６０５で、エラー画面を表示するためのJavaScriptのコードを作成する。その後、ＣＰＵ２０４はＳ１６０６で、転送部４２１が、スクリプト生成部４２２により生成されたJavaScriptコードをＷｅｂブラウザ４１０のスクリプト実行部４１４に送信する。そしてＣＰＵ２０４はＳ１６０７で、転送部４２１から送信したエラー画面を表示するためのJavaScriptコードをスクリプト実行部４１４で実行する。
【０１２４】
次にＣＰＵ２０４はＳ１６０８で、JavaScriptコードのＷｅｂアプリケーション４００のエラー画面構成データの記憶場所を示すＵＲＬに基づき、HTTP Requestを通信部４１４からネットワークＩ／Ｆ２０１を介し外部装置１０１に送信する。これにより外部装置１０１のＣＰＵ３０２は、ネットワークＩ／Ｆ３０１を介して、HTTP Requestを受け取る。その後、ＣＰＵ３０２はＳ１６０９で、記憶部３０４からＷｅｂアプリケーション４００のエラー画面データ（HTML）を、HTTP Responseに含めてネットワークＩ／Ｆ３０１を介し画像処理装置１００へ送信する。これにより画像処理装置１００のＣＰＵ２０４はＳ１６１０で、ネットワークＩ／Ｆ２０１を介して通信部４１１で受信したデータを解析部４１２で解析し、Ｓ６０５で、画面表示部４１３を通じて表示部２０３にエラー画面を表示する。
【０１２５】
Ｓ１６０５，Ｓ１６０６はＳ６２７，Ｓ６２８と、Ｓ１６０７はＳ６２９と、Ｓ１６０８からＳ１６１０は、Ｓ６０２からＳ６０４とそれぞれ同様の処理を行う。即ち、Ｓ１６０５で、判定部１５００の判定結果に応じたJavaScriptコード文字列を作成する。次にＳ１６０６でJavaScriptコードへ変換し、そのコードを引数としたスクリプト実行部４１４の関数呼び出しによる、Ｗｅｂブラウザ４１０への実行結果の転送を行う。そして、Ｓ１６０７で、Ｗｅｂブラウザ４１０でスクリプトを実行し、Ｓ１６０８からＳ１６１０で、判定結果を反映した画面表示部４１３によるエラー画面表示を行う。
【０１２６】
実施形態２では、Ｓ１６０５において、作成するJavaScriptコード文字列を、エラーコードに応じて画面を移動するスクリプトとして設定している（不図示）。ここでは、アプリケーションが存在しないエラーコードの場合、「string returnRelult = "location.replace（'http://192.168.xx.xxx/ errorName.html'）;";」を生成する。またバージョン情報が一致しない場合、「string returnRelult = "location.replace（'http://192.168.xx.xxx/errorVersion.html'）;";」を生成する（不図示）。そして、スクリプト内に記述されたＵＲＬに基づき、前者の場合は図１９（Ａ）のエラー画面、後者の場合は図１９（Ｂ）を表示する。そのため、外部装置１０１へのＨＴＭＬデータ取得要求（Ｓ１６０８，Ｓ１６０９）と、ＨＴＭＬデータ解析処理（Ｓ１６１０）が含まれている。
【０１２７】
図１９は、実施形態２に係る画像形成装置１００で表示されるエラー画面例を示す図で、図１９（Ａ）は、アプリケーションが存在しないエラーの場合の画面例を示し、図１９（Ｂ）は、バージョン情報が一致しない場合のエラー画面例を示す。
【０１２８】
以上のプログラムにより、要求転送部４２０は、判定結果がエラーだった場合、Ｗｅｂブラウザ４１０にエラー画面を表示するJavaScriptコードを生成し、Ｗｅｂブラウザ４１０へ送信する（Ｓ１６０５，Ｓ１６０６）。Ｗｅｂブラウザ４１０は、受信したJavaScriptコードを実行し（Ｓ１６０７）、エラー画面を構成するＨＴＭＬデータの取得、解析、画面表示を行う（Ｓ１６０８，Ｓ１６０９，Ｓ１６１０）。
【０１２９】
尚、実施形態２において、表示するエラー画面のＨＴＭＬデータは、外部装置１０１のＷｅｂアプリケーション４００に格納され、JavaScriptコードでＵＲＬを指定して取得しているが、実現構成はこれに限られたものではない。即ち、JavaScriptコードの生成、実行を通じて、アプリケーションが存在しない、またはバージョン情報が一致しないエラー画面の表示を実行できる構成であれば実現構成に制限はない。
【０１３０】
以上が図１６における、Ｓ１６０５からＳ１６１０までの処理の流れの説明である。
【０１３１】
以上説明したように実施形態２によれば、Ｗｅｂブラウザ４１０からのローカルアプリケーションの利用において、Ｗｅｂアプリケーション４００起動時に、そのＷｅｂアプリケーションが利用可能かどうかを判定することができる。
【０１３２】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【０１３３】
本発明は上記実施の形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
【符号の説明】
【０１３４】
１００…画像形成装置、１０１…外部装置、２０２…入力部、２０３…表示部、２０４…ＣＰＵ、２０８…記憶部、３０２…ＣＰＵ、４１０…Ｗｅｂブラウザ、４２０…要求転送部、４３０…アプリケーションプラットフォーム、４３１…要求通信部アプリケーション。
【図１】
2015222872.tif 000003
【図２】
2015222872.tif 000004
【図３】
2015222872.tif 000005
【図４】
2015222872.tif 000006
【図５】
2015222872.tif 000007
【図６】
2015222872.tif 000008
【図７】
2015222872.tif 000009
【図８】
2015222872.tif 000010
【図９】
2015222872.tif 000011
【図１０】
2015222872.tif 000012
【図１１】
2015222872.tif 000013
【図１２】
2015222872.tif 000014
【図１３】
2015222872.tif 000015
【図１４】
2015222872.tif 000016
【図１５】
2015222872.tif 000017
【図１６】
2015222872.tif 000018
【図１７】
2015222872.tif 000019
【図１８】
2015222872.tif 000020
【図１９】
2015222872.tif 000021