(57)【特許請求の範囲】
【請求項１】
アプリケーションプログラムをインストール可能な電子機器であって、
第一のアプリケーションプログラムからのメソッドの呼び出し要求に応じ、前記メソッドを有する第二のアプリケーションプログラムがインストールされた他の電子機器から、前記第二のアプリケーションプログラムのコードを取得する取得手段と、
前記取得手段によって取得されたコードよりメソッドのインタフェース情報を抽出するインタフェース情報抽出手段と、
前記インタフェース情報によって示されるメソッドに対するインタフェースを提供するインタフェース提供手段とを有し、
前記インタフェース提供手段は、前記メソッドの識別情報を含む要求に応じ、該識別情報に対応するメソッドの呼び出しを前記第二のアプリケーションプログラムに対して実行する電子機器。
【請求項２】
前記インタフェース情報抽出手段は、前記インタフェース情報を、所定の言語仕様に基づいて前記メソッドに関する定義が記述された定義データに変換し、
前記インタフェース提供手段は、前記定義データを解釈して、前記メソッドに対するインタフェースを提供する請求項１記載の電子機器。
【請求項３】
前記所定の言語仕様はＷＳＤＬであり、
前記インタフェース提供手段は、前記メソッドに対するＵＲＬ及びメソッド名を含む要求に応じ、該ＵＲＬ及びメソッド名に対応するメソッドの呼び出しを前記第二のアプリケーションプログラムに対して実行する請求項２記載の電子機器。
【請求項４】
アプリケーションプログラムをインストール可能な電子機器が、
第一のアプリケーションプログラムからのメソッドの呼び出し要求に応じ、前記メソッドを有する第二のアプリケーションプログラムがインストールされた他の電子機器から、前記第二のアプリケーションプログラムのコードを取得する取得手順と、
前記取得手順において取得されたコードよりメソッドのインタフェース情報を抽出するインタフェース情報抽出手順と、
前記インタフェース情報によって示されるメソッドに対するインタフェースを提供するインタフェース提供手順とを実行し、
前記インタフェース提供手順は、前記メソッドの識別情報を含む要求に応じ、該識別情報に対応するメソッドの呼び出しを前記第二のアプリケーションプログラムに対して実行する情報処理方法。
【請求項５】
前記インタフェース情報抽出手順は、前記インタフェース情報を、所定の言語仕様に基づいて前記メソッドに関する定義が記述された定義データに変換し、
前記インタフェース提供手順は、前記定義データを解釈して、前記メソッドに対するインタフェースを提供する請求項４記載の情報処理方法。
【請求項６】
前記所定の言語仕様はＷＳＤＬであり、
前記インタフェース提供手順は、前記メソッドに対するＵＲＬ及びメソッド名を含む要求に応じ、該ＵＲＬ及びメソッド名に対応するメソッドの呼び出しを前記第二のアプリケーションプログラムに対して実行する請求項５記載の情報処理方法。
【請求項７】
アプリケーションプログラムをインストール可能な電子機器に、
第一のアプリケーションプログラムからのメソッドの呼び出し要求に応じ、前記メソッドを有する第二のアプリケーションプログラムがインストールされた他の電子機器から、前記第二のアプリケーションプログラムのコードを取得する取得手順と、
前記取得手順において取得されたコードよりメソッドのインタフェース情報を抽出するインタフェース情報抽出手順と、
前記インタフェース情報によって示されるメソッドに対するインタフェースを提供するインタフェース提供手順とを実行させ、
前記インタフェース提供手順は、前記メソッドの識別情報を含む要求に応じ、該識別情報に対応するメソッドの呼び出しを前記第二のアプリケーションプログラムに対して実行する情報処理プログラム。
【請求項８】
前記インタフェース情報抽出手順は、前記インタフェース情報を、所定の言語仕様に基づいて前記メソッドに関する定義が記述された定義データに変換し、
前記インタフェース提供手順は、前記定義データを解釈して、前記メソッドに対するインタフェースを提供する請求項７記載の情報処理プログラム。
【請求項９】
前記所定の言語仕様はＷＳＤＬであり、
前記インタフェース提供手順は、前記メソッドに対するＵＲＬ及びメソッド名を含む要求に応じ、該ＵＲＬ及びメソッド名に対応するメソッドの呼び出しを前記第二のアプリケーションプログラムに対して実行する請求項８記載の情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器、情報処理方法、及び情報処理プログラムに関し、特にプログラムをインストール可能な電子機器、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【０００２】
近年、主として複合機又は融合機と呼ばれる画像形成装置においては、公開されたＡＰＩ（Application Program Interface）を備えたアプリケーションプラットフォーム（アプリケーション実行環境）が搭載されているものがある。このような画像形成装置では、ユーザが利用を開始した後（すなわち、出荷後）において、新らたなアプリケーションのインストールにより機能拡張を容易に図ることができる。
【０００３】
他方において、アプリケーション間において、一部重複する機能を有する場合がある。一般的に、このような機能は、機能モジュールとして部品化されたプログラムモジュールに抽出される。複数のアプリケーションは、当該機能モジュールを利用することで重複開発を回避することができる。
【０００４】
なお、ここでいうアプリケーションとは、予め他のアプリケーションからの利用が想定されたサーバアプリケーションではなく、当該アプリケーションにおいて完結した処理を実行するアプリケーションである。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、どのような機能が複数のアプリケーションによって共用されるかを予め把握するのは困難である。特に、汎用的な機能ではなく、特定のユーザの業務に特化した固有の機能に関しては、当該機能を実現するアプリケーションにおいて実装されるのが一般的である。但し、このような固有の機能に関しても、他のアプリケーションが利用したい場合も有る。このような場合に、既に固有の機能が実装されているアプリケーンから当該機能を機能モジュールとして抜き出すのは、開発作業が煩雑となる。特に、当該機能を含むアプリケーションが他のベンダによって開発された者である場合、機能モジュールの作成は、非常に困難である。
【０００６】
本発明は、上記の点に鑑みてなされたものであって、アプリケーションプログラムの機能を部分的に外部から利用可能とすることができる電子機器、情報処理方法、及び情報処理プログラムの提供を目的とする。
【課題を解決するための手段】
【０００７】
そこで上記課題を解決するため、本発明は、アプリケーションプログラムをインストール可能な電子機器であって、第一のアプリケーションプログラムの中間コードよりメソッドのインタフェース情報を抽出するインタフェース情報抽出手段と、前記インタフェース情報によって示されるメソッドに対するインタフェースを提供するインタフェース提供手段とを有し、前記インタフェース提供手段は、前記メソッドの識別情報を含む要求に応じ、該識別情報に対応するメソッドの呼び出しを前記第一のアプリケーションプログラムに対して実行する。
【０００８】
このような電子機器では、アプリケーションプログラムの機能を部分的に外部から利用可能とすることができる。
【発明の効果】
【０００９】
本発明によれば、アプリケーションプログラムの機能を部分的に外部から利用可能とすることができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態におけるシステム構成例を示す図である。
【図２】本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。
【図３】本発明の実施の形態における画像形成装置のソフトウェア構成例を示す図である。
【図４】ＳＤＫアプリのＷｅｂサービス化を説明するための図である。
【図５】Ｗｅｂサービス化されたＳＤＫアプリのメソッドの呼び出し手順の一例を説明するための図である。
【図６】ＷＳＤＬの形式を示す図である。
【図７】メソッドとＷＳＤＬの各要素との対応関係を説明するための図である。
【図８】ＳＤＫアプリの中間コードにおけるメソッドの定義例を示す図である。
【図９】ＷＳＤＬの具体例を示す図である。
【図１０】ＳＤＫアプリのＷｅｂサービス化の処理手順及びＷｅｂサービス化されたＳＤＫアプリのメソッドの呼び出し手順を説明するためのシーケンス図である。
【図１１】他の画像形成装置にインストールされているＳＤＫアプリをＷｅｂサービス化して利用する際の処理手順の一例を説明するためのシーケンス図である。
【発明を実施するための形態】
【００１１】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態におけるシステム構成例を示す図である。
【００１２】
同図において、一台以上の画像形成装置１０及び一台以上のユーザ端末３０等は、例えば、一つのオフィス内においてＬＡＮ（Local Area Network）等のネットワーク５０（有線又は無線の別は問わない。）を介して接続されている。
【００１３】
画像形成装置１０は、電子機器の一例である。画像形成装置１０は、印刷、スキャン、コピー、及びＦＡＸ送受信等の機能を一台の筐体によって実現する複合機である。但し、いずれか一つの機能を有する機器を画像形成装置１０として用いてもよい。また、本実施の形態は、画像形成装置１０以外の各種電子機器（例えば、家電製品等）に適用可能である。
【００１４】
ユーザ端末３０は、画像形成装置１０に実装（搭載）された機能を遠隔的に利用するための情報処理装置であり、例えば、ＰＣ（Personal Computer）、ＰＤＡ（Personal Digital Assistance）、携帯電話等である。ユーザ端末３０は、Ｗｅｂブラウザ３１を備える。Ｗｅｂブラウザ３１は、いわゆるＷｅｂブラウザであり、ＨＴＭＬ（HyperText Markup Language）データに代表されるＷｅｂコンテンツをユーザ端末３０の表示装置に表示させる。なお、Ｗｅｂコンテンツは、単なるＨＴＭＬデータに限定されない。Ｗｅｂブラウザに対するプラグインによって表示可能な各種のデータ（動画も含む）もＷｅｂコンテンツに含まれる。
【００１５】
図２は、本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。図２において、画像形成装置１０は、コントローラ１１、スキャナ１２、プリンタ１３、モデム１４、操作パネル１５、ネットワークインタフェース１６、及びＳＤカードスロット１７等のハードウェアを有する。
【００１６】
コントローラ１１は、ＣＰＵ１１１、ＲＡＭ１１２、ＲＯＭ１１３、及びＨＤＤ１１４等を有する。ＲＯＭ１１３には、各種のプログラムやプログラムによって利用されるデータ等が記録されている。ＲＡＭ１１２は、プログラムをロードするための記憶領域や、ロードされたプログラムのワーク領域等として用いられる。ＣＰＵ１１１は、ＲＡＭ１１２にロードされたプログラムを処理することにより、各種の機能を実現する。ＨＤＤ１１４には、プログラムやプログラムが利用する各種のデータ等が記録される。
【００１７】
スキャナ１２は、原稿より画像データを読み取るためのハードウェアである。プリンタは１３、印刷データを印刷用紙に印刷するためのハードウェアである。モデム１４は、電話回線に接続するためのハードウェアであり、ＦＡＸ通信による画像データの送受信を実行するために用いられる。操作パネル１５は、ユーザからの入力の受け付けを行うめのボタン等の入力手段や、液晶パネル等の表示手段（表示領域）を備えたハードウェアである。ネットワークインタフェース１６は、ＬＡＮ等のネットワーク（有線又は無線の別は問わない。）に接続するためのハードウェアである。ＳＤカードスロット１７は、ＳＤカード８０に記録されたプログラムを読み取るために利用される。すなわち、画像形成装置１０では、ＲＯＭ１１３に記録されたプログラムだけでなく、ＳＤカード８０に記録されたプログラムもＲＡＭ１１２にロードされ、実行されうる。但し、例えば、ＵＳＢメモリ又はＣＤ−ＲＯＭ等、ＳＤカード８０以外の記憶媒体が利用されてもよい。
【００１８】
図３は、本発明の実施の形態の画像形成装置におけるソフトウェア構成例を示す図である。同図において、画像形成装置１０は、標準アプリ２２１、ＳＤＫアプリ２２３、ＳＤＫプラットフォーム２２４、コントロールサービス２２５、及びＯＳ２２６等を有する。
【００１９】
ＯＳ２２６は、いわゆるＯＳ（Operating System）である。画像形成装置１０上の各ソフトウェアは、ＯＳ２２６上においてプロセス又はスレッドとして起動される。
【００２０】
標準アプリ２２１は、画像形成装置１０に標準的に（出荷時に予め）実装されているアプリケーションプログラムの集合である。同図では、スキャンアプリ２２１１、印刷アプリ２２１２、コピーアプリ２２１３、及びＦＡＸアプリ２２１４が例示されている。スキャンアプリ２２１１は、スキャンジョブを実行する。印刷アプリ２２１２は印刷ジョブを実行する。コピーアプリ２２１３は、コピージョブを実行する。ＦＡＸアプリ２２１４は、ＦＡＸの送信ジョブ又は受信ジョブを実行する。
【００２１】
コントロールサービス２２５は、各種のハードウェアリソース等を制御するための機能を上位アプリケーション等に対して提供するソフトウェアモジュール群であり、例えば、ネットワーク通信に関する機能、スキャナの制御機能、プリンタの制御機能、メモリの管理機能等を有する。
【００２２】
ＳＤＫアプリ２２３は、画像形成装置１０の出荷後において、画像形成装置１０の機能拡張を図るためのプラグインとして追加的にインストールされるアプリケーションプログラムである。同図では、ＳＤＫアプリ２２３として、ＳＤＫアプリ２２３ａ、ＳＤＫアプリ２２３ｂ、及びＳＤＫアプリ２２３ｃが例示されている。本実施の形態において、ＳＤＫアプリ２２３は、Ｊａｖａ（登録商標）言語によって実装され、Ｊａｖａ（登録商標）バイトコードとよばれる中間コード（実行コード）の形態で配布される。また、ＳＤＫアプリ２２３は、画像形成装置１０の操作パネル１５に画面等の表示部品（ＧＵＩ（Graphical User Interface））を表示させ、表示部品を介して利用されることを本来の用途とするローカル又はクローズなアプリケーションとして実装されていることとする。すなわち、本来的に、ＳＤＫアプリ２２３は、画像形成装置１０の内部又は外部の他のプログラム（アプリケーション等）に対して機能を提供することを目的としておらず（すなわち、サーバとして機能することは想定されておらず）、ユーザによって対話的に利用され、完結された一つの機能（ジョブ）を実現するアプリケーションであるとする。なお、このようなローカルなアプリケーションの形態の具体例としては、Ｊａｖａ（登録商標）のＣＤＣ（Connected Device Configuration）環境で動作するＸｌｅｔが一例として挙げられる。
【００２３】
本実施の形態では、このようなローカルなＳＤＫアプリ２２３の機能について、部分的に他のプログラムからの利用を可能とした例を説明する。
【００２４】
ＳＤＫプラットフォーム２２４は、ＳＤＫアプリ２２３の実行環境を提供する、ＳＤＫアプリ２２３のアプリケーションプラットフォームである。各ＳＤＫアプリ２２３は、ＳＤＫプラットフォーム２２４が提供するＡＰＩ（Application Program Interface）を利用して開発される。ＳＤＫプラットフォーム２２４のＡＰＩは公開されており、サードベンダ等によってもＳＤＫアプリ２２３は開発されうる。ＡＰＩとは、具体的には、関数又はメソッド等の集合である。また、広義においては、非同期に発生するイベント等をＳＤＫアプリ２２３に通知するための仕組み等もＡＰＩに含まれる。
【００２５】
同図において、ＳＤＫプラットフォーム２２４は、仮想マシン２２４１、Ｗｅｂアプリケーションサーバ部２２４２、及びアプリ管理部２２４３等を含む。仮想マシン２２４１は、ＳＤＫアプリ２２３の中間コード（Ｊａｖａ（登録商標）バイトコード）をＣＰＵ１１１に適したコードに変換するプログラムである。本実施の形態では、仮想マシン２２４１として、Ｊａｖａ（登録商標）ＶＭ（Virtual Machine）を採用した例について説明する。
【００２６】
Ｗｅｂアプリケーションサーバ部２２４２は、Ｗｅｂサーバ環境を実現するプログラムである。例えば、Ｗｅｂアプリケーションサーバ部２２４２は、ＨＴＴＰリクエスト（ＳＯＡＰ（Simple Object Access Protocol）リクエストも含む）を受信するためのポートを開いており、当該ポートにおいて受信されたリクエストに指定されたＵＲＬ（Uniform Resource Locator）に対応したプログラムモジュールを呼び出す。
【００２７】
アプリ管理部２２４３は、ＳＤＫアプリ２２３の管理操作に関するユーザインタフェースを提供し、当該ユーザインタフェースを介して入力される要求に応じた処理を実行する。ＳＤＫアプリ２２３の管理操作としては、例えば、ＳＤＫアプリ２２３のインストール、起動、停止、及びアンインストール等が挙げられる。アプリ管理部２２４３は、また、ＳＤＫアプリ２２３を、リモートな又はオープンなアプリケーションとするための処理を実行する。当該処理によって、ＳＤＫアプリ２２３は、Ｗｅｂサービス化される。すなわち、ＳＤＫアプリ２２３が有する各メソッドは、Ｗｅｂサービスのインタフェースとして画像形成装置１０の内部又は外部の他のプログラムから利用可能となる。
【００２８】
ＳＤＫアプリ２２３のＷｅｂサービス化について更に詳しく説明する。図４は、ＳＤＫアプリのＷｅｂサービス化を説明するための図である。同図では、ＳＤＫアプリ２２３ｄについてＷｅｂサービス化が行われる例が示されている。
【００２９】
例えば、ＳＤＫアプリ２２３ｄのインストール指示（Ｓ１）に応じ、アプリ管理部２２４３は、ＳＤＫアプリ２２３ｄを画像形成装置１０にインストールする（Ｓ２）。ＳＤＫアプリ２２３ｄは、インストールに伴って、ＳＤＫアプリ２２３ｄの中間コードを解析し、ＳＤＫアプリ２２３ｄに対するＷＳＤＬ（Web Services Description Language）データ６０を生成する（Ｓ４）。したがって、ＳＤＫアプリ２２３は、Ｊａｖａ（登録商標）言語によって実装されたアプリケーションに限定されないが、その中間コードからインタフェース情報が抽出可能である必要がある。
【００３０】
ＷＳＤＬとは、Ｗｅｂサービスのインタフェース仕様を記述するためのＸＭＬ（eXtensible Markup Language）をベースとした言語仕様をいう。したがって、ＷＳＤＬデータ２２３ｄＬは、ＳＤＫアプリ２２３ｄが有するメソッドのインタフェース仕様に関するＷＳＤＬによる記述が記録されたデータである。なお、上記したように、ＳＤＫアプリ２２３ｄは、ローカルなアプリケーションである。したがって、ＳＤＫアプリ２２３ｄが有するメソッドは、他のプログラムに外部から利用させることを前提に実装されたものではない。但し、このことは、当該メソッドが、クラス外からアクセスできないｐｒｉｖａｔｅメソッドに限定されることを意味するものではない。
【００３１】
Ｗｅｂアプリケーションサーバ部２２４２は、ＷＳＤＬデータ２２３ｄＬを読み込み、ＷＳＤＬデータ２２３ｄＬに記録された定義に係るメソッドに対するインタフェースを提供するＷｅｂサービス２２３ｄＷをデプロイ（配置）する（Ｓ５）。Ｗｅｂサービス２２３ｄＷの実体の一例としてはオブジェクトが挙げられる。この場合、ステップＳ５では、ＷＳＤＬデータ２２３ｄＬに定義されたメソッドとして有するオブジェクトが生成される。  他のアプリケーションは、Ｗｅｂアプリケーションサーバ部２２４２及びＷｅｂサービス２２３ｄＷを介して透過的にＳＤＫアプリ２２３ｄのメソッドを呼び出すことが可能となる。すなわち、ＳＤＫアプリ２２３ｄの機能を部分的に利用することが可能となる。本実施の形態では、ＳＤＬアプリ２２３ｄのこの状態をＷｅｂサービス化された状態という。
【００３２】
図５は、Ｗｅｂサービス化されたＳＤＫアプリのメソッドの呼び出し手順の一例を説明するための図である。図５中、図４と同一部分には同一符号を付している。
【００３３】
例えば、操作パネル１５を介してＳＤＫアプリ２２３ａが利用されているとする（Ｓ１１）。ＳＤＫアプリ２２３ａは、ＳＤＫアプリ２２３ｄの一部の機能を利用するように実装されている。ＳＤＫアプリ２２３ａは、当該一部の機能を利用する場合、画像形成装置１０内の内部的な通信によって、当該一部の機能に対する識別情報（すなわち、当該一部の機能を提供する主体に対応するＵＲＬ及び当該一部の機能に対応するメソッド名）が指定されたＳＯＡＰリクエストをＷｅｂアプリケーションサーバ部２２４２に送信する（Ｓ１２）。Ｗｅｂアプリケーションサーバ部２２４２は、当該ＳＯＡＰリクエストに指定されたＵＲＬ及びメソッド名に対応するメソッドの呼び出しをＷｅｂサービス２２３ｄＷに対して行う（Ｓ１３）。Ｗｅｂサービス２２３ｄＷは、呼び出されたメソッドに対応するメソッドの呼び出しをＳＤＫアプリ２２３ｄに対して行う（Ｓ１４）。ＳＤＫアプリ２２３ｄは、呼び出されたメソッドに実装されている処理を実行し、その結果をＷｅｂサービス２２３ｄＷに返却する。当該結果は、呼び出し順の逆をたどってＳＤＫアプリ２２３ａに対してＳＯＡＰレスポンスとして返却される。
【００３４】
なお、Ｗｅｂサービス化されたＳＤＫアプリ２２３ｄのメソッドは、画像形成装置１０の外部からネットワークを介しても利用可能となる。同図では、Ｗｅｂブラウザ３１からのＨＴＴＰリクエスト（Ｓ１６）に応じて、ＳＤＫアプリ２２３ｄが利用される形態も示されている。Ｗｅｂアプリケーションサーバ部２２４２は、当該ＨＴＴＰリクエストを受信すると、当該ＨＴＴＰリクエストに指定されているＵＲＬに対応するメソッドの呼び出しをＷｅｂサービス２２３ｄＷに対して行う（Ｓ１３）。以降は、上記した通りである。
【００３５】
次に、中間コード（Ｊａｖａ（登録商標）のバイトコード）からＷＳＤＬへの変換について説明する。ＷＳＤＬは、一般的に、以下のような形式を有する。
【００３６】
図６は、ＷＳＤＬの形式を示す図である。同図に示されるように、ＷＳＤＬは、＜ｄｅｆｉｎｉｔｉｏｎｓ＞タグで囲まれたｄｅｆｉｎｉｔｉｏｎｓ要素ｅ１をルート要素とする。ｄｅｆｉｎｉｔｉｏｎｓ要素ｅ１は、ｔｙｐｅｓ要素ｅ２、ｍｅｓｓａｇｅ要素ｅ３、ｐｏｒｔＴｙｐｅ要素ｅ４、ｂｉｎｄｉｎｇ要素ｅ５、及びｓｅｒｖｉｃｅ要素ｅ６等を子要素として含む。
【００３７】
ｔｙｐｅｓ要素ｅ２は、ＳＯＡＰメッセージで使用されるデータ型の定義を含む。ｍｅｓｓａｇｅ要素ｅ３は、ＳＯＡＰメッセージ（リクエスト、レスポンス等）の定義を含む。ｐｏｒｔＴｙｐｅ要素ｅ４は、Ｗｅｂサービスとして公開するメソッドの情報を含む。ｂｉｎｄｉｎｇ要素ｅ５は、使用する通信プロトコルをメソッドにバインドするための定義を含む。ｓｅｒｖｉｃｅ要素ｅ６は、サービス（メソッド）にアクセルするためのアドレス（ＵＲＬ）の定義を含む。
【００３８】
上記各要素のうち、ｍｅｓｓａｇｅ要素ｅ３、ｐｏｒｔＴｙｐｅ要素ｅ４、ｂｉｎｄｉｎｇ要素ｅ５、及びｓｅｒｖｉｃｅ要素ｅ６は、図７に示されるようにメソッドごとに記述される。
【００３９】
図７は、メソッドとＷＳＤＬの各要素との対応関係を説明するための図である。同図には、ＳＤＫアプリ２２３ｄには、ｉｎｉｔＸｌｅｔ（）、ｓｔａｒｔＸｌｅｔ（）、ｐａｕｓｅＸｌｅｔ（）、ｄｅｓｔｒｏｙＸｌｅｔ（）、及びｔｉｆｆＴｏＰｄｆ（）等のメソッドが含まれている。これらメソッドごとに、ｍｅｓｓａｇｅ要素ｅ３、ｐｏｒｔＴｙｐｅ要素ｅ４、ｂｉｎｄｉｎｇ要素ｅ５、及びｓｅｒｖｉｃｅ要素ｅ６が記述される。
【００４０】
中間コードからＷＳＤＬへの変化の具体例を示す。図８は、ＳＤＫアプリの中間コードにおけるメソッドの定義例を示す図である。同図には、Ｓｃａｎ２Ｐｄｆクラスについて、ｉｎｉｔＸｌｅｔ（）、ｓｔａｒｔＸｌｅｔ（）、ｐａｕｓｅＸｌｅｔ（）、ｄｅｓｔｒｏｙＸｌｅｔ（）、及びｔｉｆｆＴｏＰｄｆ（）等のインタフェース仕様が定義されている例が示されている。斯かる定義に基づいて、アプリ管理部２２４３は、図９に示されるような記述を含むＷＳＤＬデータを生成する。
【００４１】
図９は、ＷＳＤＬの具体例を示す図である。同図には、便宜上、ｔｉｆｆＴｏＰｄｆ（）メソッドに関する定義のみが記載されている。また、同図中、図６において説明した要素と対応する要素には、図６と同一符号を付している。各要素内の詳細な説明については、ＷＳＤＬの仕様の範囲内であるため省略する。なお、メッセージ要素ｅ３は、二つ含まれている。一方は、リクエストに関するＳＯＡＰメッセージ（ｔｉｆｆＴｏＰｄｆＲｅｑｕｅｓｔ）に関するメッセージ要素であり、他方は、レスポンスに関するＳＯＡＰメッセージ（ｔｉｆｆＴｏＰｄｆＲｅｓｐｏｎｓｅ）に関するメッセージ要素である。
【００４２】
また、ｓｅｒｖｉｃｅ要素ｅ６内の記述ｅ６１は、Ｓｃａｎ２Ｐｄｆサービスに対するＵＲＬを示す。なお、Ｓｃａｎ２Ｐｄｆは、本実施の形態において、ＳＤＫアプリ２２３ｄがＷｅｂサービス化された際のＷｅｂサービスの名前である。
【００４３】
Ｊａｖａ（登録商標）の中間コードからＷＳＤＬへの変換は、機械的に可能であり、例えば、Ａｐａｃｈｅ  ＡｘｉｓのＪａｖａ２ＷＳＤＬ等の変換ツールも市場において入手可能である。したがって、本実施の形態では、中間コードからＷＳＤＬへの変換ロジックについての詳細な説明は省略する。
【００４４】
以下、画像形成装置１０の処理手順について説明する。図１０は、ＳＤＫアプリのＷｅｂサービス化の処理手順及びＷｅｂサービス化されたＳＤＫアプリのメソッドの呼び出し手順を説明するためのシーケンス図である。すなわち、同図は、図４及び図５において説明した内容をシーケンス図として示したものである。
【００４５】
同図の初期状態では、ＳＤＫアプリ２２３ｄが記録されたＳＤカード８０が、ＳＤカードスロット１７にセットされている。また、アプリ管理部２２４２によって、インストール画面が操作パネル１５に表示されている。
【００４６】
ユーザによって、インストール画面を介してインストール指示が入力されると（Ｓ１０１）、アプリ管理部２２４２は、ＳＤＫアプリ２２３ｄを画像形成装置１０にインストールする（Ｓ１０２）。アプリ管理部２２４２は、また、インストールに伴って、ＳＤＫアプリ２２３ｄの中間コード（クラスファイル）を解析し、ＷＳＤＬデータ２２３ｄＬを生成する（Ｓ１０３）。
【００４７】
続いて、アプリ管理部２２４２は、Ｗｅｂアプリケーションサーバ部２２４３に対してＷＳＤＬデータ２２３ｄＬを入力し、Ｗｅｂサービスのデプロイを要求する（Ｓ１０４）。また、アプリ管理部２２４２は、インストールされたＳＤＫアプリ２２３ｄを起動させる（Ｓ１０５）。Ｗｅｂサービス化されたとしても、起動されていなければ、ＳＤＫアプリ２２３ｄの機能を利用させることはできないからである。
【００４８】
Ｗｅｂサービスのデプロイ要求を受けたＷｅｂアプリケーションサーバ部２２４３は、ＷＳＤＬデータ２２３ｄＬを解析（解釈）し、ＷＳＤＬデータ２２３ｄＬに定義されたメソッドに対するインタフェースを提供するＷｅｂサービス２２３ｄＷをデプロイする（Ｓ１０６）。Ｗｅｂサービス２２３ｄＷのデプロイにより、ＳＤＫアプリ２２３ｄのＷｅｂサービス化は完了する。
【００４９】
続いて、アプリ管理部２２４２の操作画面を介してＳＤＫアプリ２２３ａが利用対象とされると、ＳＤＫアプリ２２３ａは、自らの操作画面を操作パネル１５に表示させる。
【００５０】
当該操作画面を介して、ユーザによってジョブの実行指示がＳＤＫアプリ２２３ａに入力されると（Ｓ１５１）、ＳＤＫアプリ２２３ａは、ジョブの実行の過程において、Ｗｅｂサービス２２３ｄＬに対するＵＲＬ及びｔｉｆｆＴｏＰｄｆ（）メソッドのメソッド名が指定されたＳＯＡＰリクエストをＷｅｂアプリケーションサーバ部２２４３に送信する（Ｓ１５２）。
【００５１】
Ｗｅｂアプリケーションサーバ部２２４３は、ＳＯＡＰリクエストにおいて指定されたＵＲＬに対応するＷｅｂサービス２２３ｄＷに対し、当該ＳＯＡＰリクエストにメソッド名が指定されたメソッドの呼び出しを実行する（Ｓ１５３）。Ｗｅｂサービス２２３ｄＷは、呼び出されたメソッドに対応するメソッド（ｔｉｆｆＴｏＰｄｆ（））の呼び出しをＳＤＫアプリ２２３ｄに対して行う（Ｓ１５４）。ＳＤＫアプリ２２３ｄは、呼び出されたメソッドに実装された処理を実行し、処理結果をＷｅｂサービス２２３ｄＷに返却する（Ｓ１５５）。Ｗｅｂサービス２２３ｄＷは、当該処理結果をＷｅｂアプリケーションサーバ部２２４３に返却する（Ｓ１５６）。Ｗｅｂアプリケーションサーバ部２２４３は、当該処理結果を含むＳＯＡＰレスポンスをＳＤＫアプリ２２３ａに返信する（Ｓ１５７）。ＳＤＫアプリ２２３ａは、例えば、返信された処理結果に応じて、画面の表示状態を変化させる（Ｓ１５８）。
【００５２】
続いて、他の画像形成装置１０にインストールされているＳＤＫアプリ２２３を、Ｗｅｂサービス化する例について説明する。
【００５３】
図１１は、他の画像形成装置にインストールされているＳＤＫアプリをＷｅｂサービス化して利用する際の処理手順の一例を説明するためのシーケンス図である。
【００５４】
同図には、画像形成装置１０ａ及び１０ｂの２台の画像形成装置１０が示されている。画像形成装置１０ｂは、ＳＤＫアプリ２２３ｄがインストールされる画像形成装置１０である。画像形成装置１０ａは、画像形成装置１０ｂにインストールされたＳＤＫアプリ２２３ｄをＷｅｂサービス化して利用する画像形成装置１０である。なお、各画像形成装置１０に含まれるソフトウェアの参照番号には、各画像形成装置１０の参照番号の末尾のアルファベット（「ａ」又は「ｂ」）を付加している。但し、ＳＤＫアプリ２２３ａ及びＳＤＫアプリ２２３ｄについては、当該命名規則の対象外である。
【００５５】
当初においては、画像形成装置１０ｂが操作対象とされる。すなわち、図１１の初期状態において、画像形成装置１０ｂは、図１０の画像形成装置１０の初期状態と同じ状態である。具体的には、画像形成装置１０ｂにおいて、ユーザによってインストール画面を介してインストール指示が入力される（Ｓ２０１）。アプリ管理部２２４２ｂは、ＳＤＫアプリ２２３ｄを画像形成装置１０ｂにインストールする（Ｓ２０２）。なお、アプリ管理部２２４２ｂは、インストールされているＳＤＫアプリ２２３ｄの属性情報の一覧を管理している。当該属性情報は、例えば、ＳＤＫアプリ２２３ｄのパッケージファイル（書庫ファイル）に含まれている属性ファイルより取得される。当該属性情報には、ＳＤＫアプリ２２３ｄの識別情報が含まれている。アプリ管理部２２４２ｂは、当該識別情報に基づいて、ＳＤＫアプリ２２３ｄの実体（クラスファイル等）の配置場所を特定し、当該実体にアクセスすることが可能である。
【００５６】
続いて、ユーザの操作場所は、画像形成装置１０ａに移る。なお、画像形成装置１０ｂにおける操作と、画像形成装置１０ａにおける操作との間には、例えば、数日等の時間の経過があってもよい。
【００５７】
ユーザから見た場合、ステップＳ２１１は、図１０のステップＳ１５１と同じ状況である。すなわち、アプリ管理部２２４２ａの操作画面を介してＳＤＫアプリ２２３ａが利用対象とされると、ＳＤＫアプリ２２３ａは、自らの操作画面を操作パネル１５ａに表示させる。当該操作画面を介して、ユーザによってジョブの実行指示がＳＤＫアプリ２２３ａに入力されると（Ｓ２１１）、ＳＤＫアプリ２２３ａは、ジョブの実行の過程において、Ｗｅｂサービス２２３ｄＬに対するＵＲＬ及びｔｉｆｆＴｏＰｄｆ（）メソッドのメソッド名が指定されたＳＯＡＰリクエストをＷｅｂアプリケーションサーバ部２２４３ａに送信する（Ｓ２１２）。
【００５８】
Ｗｅｂアプリケーションサーバ２２４３ａは、ＳＯＡＰリクエストに指定されたＵＲＬに対応するＷｅｂサービス２２３ｄＷがデプロイされていない場合、アプリ管理部２２４２ａに対してＷｅｂサービスの検索を要求する（Ｓ２１３）。当該検索要求には、ＵＲＬの末尾に含まれているサービス名（「ＳｃａｎＴｏＰｄｆ」）が指定される。
【００５９】
アプリ管理部２２４２ａは、画像形成装置１０ａにインストールされているＳＤＫアプリ２２３の中間コードを解析し、「ＳｃａｎＴｏＰｄｆ」クラスを含むＳＤＫアプリ２２３の有無を判定する。当該クラスを含むＳＤＫアプリ２２３が画像形成装置１０ａにインストールされていない場合、アプリ管理部２２４２ａは、画像形成装置１０ｂのアプリ管理部２２４２ｂに対して検索要求を転送する（Ｓ２１４）。なお、ＳＤＫアプリ２２３のＷｅｂサービス化について連携させる画像形成装置１０のＩＰアドレスは、各画像形成装置１０に予め設定され、例えば、ＨＤＤ１１４に記録されている。ここでは、画像形成装置１０ａに対して、画像形成装置１０ｂが連携対象として設定されていることとする。
【００６０】
アプリ管理部２２４２ｂは、画像形成装置１０ｂにインストールされているＳＤＫアプリ２２３の中間コードを解析し、「ＳｃａｎＴｏＰｄｆ」クラスを含むＳＤＫアプリ２２３の有無を判定する。ここでは、ＳＤＫアプリ２２４ｄが検索される（Ｓ２１５）。そこで、アプリ管理部２２４２ｂは、ＳＤＫアプリ２２４ｄの中間コードをアプリ管理部２２４２ａに返信する（Ｓ２１６）。なお、各画像形成装置１０において、ＳＤＫアプリ２２３がインストールされる際に、当該ＳＤＫアプリ２２３の中間コードが解析され、予めインタフェース情報（クラス名の一覧情報）がＳＤＫアプリ２２３より抽出されていてもよい。
【００６１】
続いて、アプリ管理部２２４２ａは、受信されたＳＤＫアプリ２２３ｄの中間コード（クラスファイル）を解析し、ＷＳＤＬデータ２２３ｄＬを生成する（Ｓ２１７）。続いて、アプリ管理部２２４２ａは、Ｗｅｂアプリケーションサーバ部２２４３ａに対してＷＳＤＬデータ２２３ｄＬを入力し、Ｗｅｂサービスのデプロイを要求する（Ｓ２１８）。Ｗｅｂサービスのデプロイ要求を受けたＷｅｂアプリケーションサーバ部２２４３ａは、ＷＳＤＬデータ２２３ｄＬを解析（解釈）し、ＷＳＤＬデータ２２３ｄＬに定義されたインタフェースを提供するＷｅｂサービス２２３ｄＷをデプロイする（Ｓ２１９）。
【００６２】
続いて、Ｗｅｂアプリケーションサーバ２２４３ａは、ステップＳ２１３において検索を要求したＷｅｂサービスに対応するＳＤＫアプリ２２３ｄの起動をアプリ管理部２２４２ａに要求する（Ｓ２２４２ａ）。当該要求に応じ、アプリ管理部２２４２ａは、ステップＳ２１６において中間コードが転送されたＳＤＫアプリ２２３ｄの起動要求を画像形成装置１０ｂのアプリ管理部２２４２ｂに送信する（Ｓ２２１）。アプリ管理部２２４２ｂは、要求に応じ、ＳＤＫアプリ２２３ｄを画像形成装置１０ｂ上において起動させる（Ｓ２２２）。
【００６３】
画像形成装置１０ｂにおいてＳＤＫアプリ２２３ｄが起動されると、Ｗｅｂアプリケーションサーバ部２２４３ａは、ステップＳ２１２において受信されたＳＯＡＰリクエストにおいて指定されたＵＲＬに対応するＷｅｂサービス２２３ｄＷに対して、当該ＳＯＡＰリクエストにメソッド名が指定されたメソッドの呼び出しを実行する（Ｓ２３１）。Ｗｅｂサービス２２３ｄＷは、呼び出されたメソッドに対応するメソッド（ｔｉｆｆＴｏＰｄｆ（））の呼び出しをＳＤＫアプリ２２３ｄに対して行う（Ｓ２３２）。Ｗｅｂサービス２２３ｄＷによるＳＤＫアプリ２２３ｄのメソッドの呼び出しは、例えば、仮想マシン２２４１が備える遠隔呼び出し（ＲＰＣ（Remote Procedure Call））の機構が利用される。
【００６４】
ＳＤＫアプリ２２３ｄは、呼び出されたメソッドに実装された処理を実行し、処理結果をＷｅｂサービス２２３ｄＷに返信する（Ｓ２３３）。Ｗｅｂサービス２２３ｄＷは、当該処理結果をＷｅｂアプリケーションサーバ部２２４３ａに返却する（Ｓ２３４）。Ｗｅｂアプリケーションサーバ部２２４３ａは、当該処理結果を含むＳＯＡＰレスポンスをＳＤＫアプリ２２３ａに返信する（Ｓ２３５）。ＳＤＫアプリ２２３ａは、例えば、返信された処理結果に応じて、画面の表示状態を変化させる（Ｓ２３６）。
【００６５】
上述したように、本実施の形態によれば、ＳＤＫアプリ２２３のメソッドを外部から呼び出し可能とすることができる。すなわち、ＳＤＫアプリ２２３の一部の機能を部分的に外部から利用可能とすることができる。
【００６６】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００６７】
１０          画像形成装置
１１          コントローラ
１２          スキャナ
１３          プリンタ
１４          モデム
１５          操作パネル
１６          ネットワークインタフェース
１７          ＳＤカードスロット
３０          ユーザ端末
３１          Ｗｅｂブラウザ
８０          ＳＤカード
１１１        ＣＰＵ
１１２        ＲＡＭ
１１３        ＲＯＭ
１１４        ＨＤＤ
２２１        標準アプリ
２２２        アプリ管理サービス
２２３        ＳＤＫアプリ
２２４        ＳＤＫプラットフォーム
２２５        コントロールサービス
２２６        ＯＳ
２２４１      仮想マシン
２２４２      アプリ管理部
２２４３      Ｗｅｂアプリケーションサーバ部
【先行技術文献】
【特許文献】
【００６８】
【特許文献１】特開２００７−４９６７７号公報
【図１】
0005447030.tif 000002
【図２】
0005447030.tif 000003
【図３】
0005447030.tif 000004
【図４】
0005447030.tif 000005
【図５】
0005447030.tif 000006
【図６】
0005447030.tif 000007
【図７】
0005447030.tif 000008
【図８】
0005447030.tif 000009
【図９】
0005447030.tif 000010
【図１０】
0005447030.tif 000011
【図１１】
0005447030.tif 000012