以下に添付図面を参照して、画像処理装置、システムおよび情報処理方法の実施の形態を詳細に説明する。以下では、システムに含まれる機器の一例として、画像処理装置の一態様である複合機(MFP:Multifunction Peripheral)を例に挙げて説明するが、これに限られるものではない。なお、複合機とは、コピー機能、スキャナ機能、プリンタ機能、ファクス機能などの複数の異なる機能を有する装置である。
図1は、実施の形態にかかるシステム(情報処理システム)1の構成の一例を示す図である。システム1は、クラウドコンピューティング型のサービスを実現する。
図1に示すように、システム1は、クラウド5と、例えばインターネットなどのネットワーク3を介してクラウド5に接続されるMFP4と、を備える。クラウド5は、複数のサーバ2で構成されるサーバ装置群を有している。図1に示すサーバ2の数は、一例を示したものであり、使用するサーバ2の数はこれに限定されない。なお、図1の例では、クラウド5側から見るとクライアントとなるシステム1に含まれる画像処理装置として、1台のMFP4のみを例示しているが、これに限られるものではなく、システム1に含まれる機器の台数および種類は任意である。例えばクライアントとなる機器として、PC(Personal Computer)がシステム1に含まれる形態であってもよい。
サーバ2は、MFP4からの要求に応じて、MFP4が利用可能なアプリケーションを示す情報を含む表示情報と、アプリケーションに関する処理をMFP4に実行させるコマンドを示すアプリケーションコマンドを少なくとも含む画面情報とで構成されるWebコンテンツデータ(ウェブコンテンツデータ)をMFP4へ送信する。以下、サーバ2の具体的な構成を説明する。
図2は、サーバ2のハードウェア構成の一例を示す図である。図2に示すように、サーバ2は、CPU(Central Processing Unit)301と、ROM(Read Only Memory)302と、RAM(Random Access Memory)303と、通信I/F(interface)304と、入力装置305と、表示装置306と、補助記憶装置307と、を備える。
CPU301は、サーバ2の動作を統括的に制御する。ROM302は、プログラム等の各種のデータを記憶する不揮発性のメモリである。RAM303は、CPU301が実行する各種の処理の作業領域(ワークエリア)として機能する揮発性のメモリである。
通信I/F304は、ネットワーク3と接続するためのインタフェースである。入力装置305は、ユーザによる操作の入力に用いられるデバイスであり、例えばマウスやキーボードなどで構成される。表示装置306は各種の情報を表示するデバイスであり、例えば液晶型ディスプレイ装置などで構成される。補助記憶装置307は、例えばHDD(Hard Disk Drive)などで構成される。
図3は、サーバ2が有する機能の一例を示す図である。図3に示すように、サーバ2は、アプリ情報管理モジュール210と、アプリダウンロード管理モジュール230とを有する。図3の例では、本実施形態に関するモジュールのみを例示しているが、サーバ2が有するモジュールはこれらに限られるものではない。
まず、アプリ情報管理モジュール210が有する機能を説明する。
図4は、アプリ情報管理モジュール210が有する機能の一例を示す図である。アプリ情報管理モジュール210は、記憶部211と、制御部212と、画面提供部213と、設定部214と、を有している。なお、図4の例では、本実施形態に関する機能を主に例示しているが、アプリ情報管理モジュール210が有する機能はこれらに限られるものではない。
図4に示すように、記憶部211は、アプリ情報データベース(以下、「アプリ情報DB」と称する)401と、ユーザ情報データベース(以下、「ユーザ情報DB」と称する)402と、を有する。
アプリ情報DB401は、複数のアプリケーションごとに、公開されている状態であるか否かを示す状態情報と、該アプリケーションを利用可能な機器の機種を識別する機種コードと、必須のハードウェアと、を対応付けて記憶する。本実施形態では、アプリ情報DB401は、図5に示す第1の対応情報と、図6に示す第2の対応情報と、図7に示す第3の対応情報と、図8に示す第4の対応情報とを記憶している。
図5に示すように、第1の対応情報は、MFP4の機種ごとに割り当てられた機種IDと、MFP4の機種名と、MFP4の機種を識別する機種コード(「機種情報」)とを対応付けた情報である。なお、例えばひとつの機種IDに、複数の機種コードを対応付けてもよい。図6に示すように、第2の対応情報は、アプリケーションを識別するアプリIDと、該アプリケーションを利用可能な機器の機種を識別する機種コードと、該アプリIDで識別されるアプリケーションの最新のバージョンを示すバージョン情報と、必須のハードウェアと、を対応付けたアプリケーション管理情報である。
図7に示すように、第3の対応情報は、アプリIDと、アプリケーションが公開されている状態であるか否かを示す状態情報とを対応付けた情報である。以上の第1の対応情報と第2の対応情報と第3の対応情報との組み合わせにより、複数のアプリケーションごとに、公開されている状態であるか否かを示す状態情報と、該アプリケーションを利用可能な機器の機種を識別する機種コードと、必須のハードウェアと、を対応付けていると考えることができる。
また、図8に示すように、第4の対応情報は、アプリIDと、機器が使用される国や地域の言語を示す言語情報と、該アプリIDで識別されるアプリケーションの表示名称と、該アプリIDで識別されるアプリケーションを紹介するメッセージとを対応付けた情報である。以下の説明では、表示名称とメッセージとの組み合わせを、アプリケーションを説明するための「アプリ説明情報」と称する場合がある。
図4に戻って記憶部211の説明を続ける。ユーザ情報DB402は、例えば後述の設定部214による設定のための操作を行う権限を有するユーザの認証に必要な情報を記憶する。
次に、制御部212が有する機能を説明する。ここでは、制御部212が有する機能は、サーバ2側のアプリケーションプログラミングインタフェース(API)により提供される。
ここで、説明の便宜上、制御部212が有する機能を説明する前に、画面提供部213の機能を説明する。画面提供部213は、MFP4から、画面情報を要求する画面情報要求を受信した場合に、アプリケーションコマンドを少なくとも含むWebコンテンツデータ(画面情報)を生成し、画面情報要求に対する応答として、Webコンテンツデータ(画面情報)をMFP4へ送信する。Webコンテンツデータ(画面情報)は、例えばHTMLと、HTMLに含まれる(あるいはHTMLから参照される)CSS、JavaScript(登録商標)などを含む。これを、MFP4のWebブラウザ(後述の表示制御部262)が表示して、JavaScriptのAjaxと呼ばれる技術で、サーバ2のAPI(制御部212)に表示情報を依頼する。例えばアプリケーションコマンドがJavaScriptである場合、HTMLにスクリプト自体を埋め込む形態であってもよいし、リンクだけを記載する形態であってもよい。この例では、送信元のMFP4の機種コードを含み、かつ、表示情報を要求する表示情報要求が、制御部212へ送信される。本実施形態のアプリケーションコマンドの種類として、インストール命令、更新命令、アンインストール命令などが挙げられる。インストール命令は、アプリケーションをインストールする命令を示す。更新命令は、アプリケーションを更新する命令を示す。アンインストール命令は、インストール済みのアプリケーションを削除して、MFP4の状態を、該アプリケーションをインストールする前の状態に戻す命令を示す。
図9は、制御部212が有する機能の一例を示す図である。図9に示すように、制御部212は、特定部216と、表示情報生成部217と、設定制御部219とを有する。
特定部216は、MFP4(機器)から、機種コードを少なくとも含み、かつ、表示情報を要求する表示情報要求を受信した場合に、記憶部211(この例ではアプリ情報DB401)に記憶された情報を参照して、表示情報要求に含まれる機種IDと、公開されている状態を示す状態情報との組み合わせに対応するアプリケーションを特定する。
より具体的には、特定部216は、MFP4から表示情報要求を受信した場合、図5に示す第1の対応情報を参照して、その受信した表示情報要求に含まれる機種IDに対応付けられた機種コードを選択する。次に、特定部216は、図6に示す第2の対応情報を参照して、その選択した機種コードに対応付けられた1以上のアプリIDと必須のハードウェアとを選択する。なお、必須のハードウェアには、ハードウェアを表すカテゴリに加え、対応するハードウェアのモデルの一覧も含まれる。次に、特定部216は、図7に示す第3の対応情報を参照して、その選択した1以上のアプリIDの中から、公開されている状態を示す状態情報が対応付けられたアプリIDを選択する。以上のようにして選択したアプリIDで識別されるアプリケーションを、MFP4から受信した表示情報要求に含まれる機種コードと、必須のハードウェアと、公開されている状態を示す状態情報との組み合わせに対応するアプリケーションとして(つまり、表示情報要求の要求元のMFP4で利用可能なアプリケーションとして)特定する。
また、本実施形態における表示情報要求の中には、該表示情報要求の要求元のMFP4が使用される国または地域の言語を示す言語情報(ロケール情報)が含まれているので、特定部216は、図8に示す第4の対応情報を参照して、以上のようにして特定したアプリIDと、MFP4から受信した表示情報要求に含まれる言語情報との組み合わせに対応するアプリ説明情報を特定することができる。なお、上記言語情報は、HTTPのAccept−Languageヘッダで記載するのが一般的である。
図9の説明を続ける。表示情報生成部217は、特定部216により特定されたアプリケーションを示すWebコンテンツデータ(表示情報)を生成し、その生成したWebコンテンツデータ(表示情報)を、表示情報要求に対する応答としてMFP4へ送信する。本実施形態のWebコンテンツデータ(表示情報)は、表示情報要求の要求元のMFP4が利用可能なアプリケーションごとに(例えばアプリIDごとに)、該アプリケーションの詳細を示す詳細情報を対応付けたアプリケーション詳細情報を含んでいる。詳細情報としては、バージョン情報、アプリ説明情報などが含まれる。
設定制御部219は、設定部214による設定を、記憶部211に記憶された情報に反映させる制御を行う。つまり、設定制御部219は、設定部214による設定に応じて、記憶部211に記憶された情報を更新する制御を行う。この例では、設定部214は、ユーザの操作に応じて、表示情報を可変に設定する機能を有する。例えば設定部214は、ユーザの操作に応じて、アプリ説明情報や、画面上の表示部品の配置などを示すレイアウト情報を可変に設定することができる。これにより、例えば地域ごとに異なる表示内容とすることもできる。
以上に説明した制御部212、画面提供部213および設定部214の各々の機能は、CPU301がROM302等の記憶装置に格納されたプログラムを実行することにより実現可能である。また、以上に説明した記憶部211は、ROM302またはHDD等の補助記憶装置307などにより実現可能である。この例では、制御部212と画面提供部213との組み合わせが、MFP4からの要求に応じて、MFP4が利用可能なアプリケーションを示す表示情報と、アプリケーションコマンドを少なくとも含む画面情報とで構成されるWebコンテンツデータを送信する機能(「制御部」)に対応していると考えることができる。
次に、アプリダウンロード管理モジュール230が有する機能を説明する。
図10は、アプリダウンロード管理モジュール230が有する機能の一例を示す図である。図10に示すように、アプリダウンロード管理モジュール230は、アプリストレージ231と、ダウンロード部232と、を有している。なお、図10の例では、本実施形態に関する機能を主に例示しているが、アプリダウンロード管理モジュール230が有する機能はこれらに限られるものではない。
アプリストレージ231は、MFP4に提供するための複数のアプリケーションを記憶している。この例では、アプリストレージ231は、複数のアプリIDごとに、アプリケーション本体を含むデータファイルを対応付けて記憶している。
ダウンロード部232は、MFP4からの要求に応じて、アプリストレージ231に記憶された何れかのアプリケーションをMFP4へ送信(ダウンロード)する制御を行う。この例では、ダウンロード部232は、アプリIDを少なくとも含み、かつ、アプリケーションのダウンロードを要求するダウンロード要求をMFP4から受信した場合、その受信したダウンロード要求に含まれるアプリIDに対応するアプリケーションをMFP4へ送信する。より具体的には、ダウンロード部232は、アプリストレージ231を参照して、MFP4から受信したダウンロード要求に含まれるアプリIDに対応するデータファイルを特定し、その特定したデータファイルをMFP4へ送信する。
以上に説明したダウンロード部232の機能は、CPU301がROM302等の記憶装置に格納されたプログラムを実行することにより実現可能である。また、以上に説明したアプリストレージ231は、ROM302またはHDD等の補助記憶装置307により実現可能である。
以上がサーバ2の構成となる。なお、サーバ2は、図1に示したように、複数のサーバから構成される形態であってもよい。例えば図11に示すように、サーバ2は、アプリケーションサーバ240と、データベースサーバ250とから構成される形態であってもよい。例えばアプリケーションサーバ240は、上述の制御部212、画面提供部213、設定部214を有する形態であってもよい。また、例えばアプリケーションサーバ240は、複数のサーバで構成され、上述の制御部212、画面提供部213、設定部214、ダウンロード部232の各々は、何れかのサーバに分散して搭載される形態であってもよい。
また、例えばデータベースサーバ250は、上述の記憶部211を有する形態であってもよい。また、例えばデータベースサーバ250は、複数のサーバで構成され、上述のアプリ情報DB401、ユーザ情報DB402、アプリストレージ231の各々は、何れかのサーバに分散して搭載される形態であってもよい。
次に、図12を用いて、MFP4のハードウェア構成について説明する。図12に示すように、MFP4は、コピー機能、スキャナ機能、ファクス機能、プリンタ機能などの各種の機能を実現可能な本体10と、ユーザの操作を受け付ける操作部20とを備える。なお、ユーザの操作を受け付けるとは、ユーザの操作に応じて入力される情報(画面の座標値を示す信号等を含む)を受け付けることを含む概念である。本体10と操作部20は、専用の通信路30を介して相互に通信可能に接続されている。通信路30は、例えばUSB(Universal Serial Bus)規格のものを用いることもできるが、有線か無線かを問わず任意の規格のものであってよい。
なお、本体10は、操作部20で受け付けた操作に応じた動作を行うことができる。また、本体10は、クライアントPC(パーソナルコンピュータ)等の外部装置とも通信可能であり、外部装置から受信した指示に応じた動作を行うこともできる。
まず、本体10のハードウェア構成について説明する。図12に示すように、本体10は、CPU11と、ROM12と、RAM13と、HDD(ハードディスクドライブ)14と、通信I/F(インタフェース)15と、接続I/F16と、エンジン部17とを備え、これらがシステムバス18を介して相互に接続されている。
CPU11は、本体10の動作を統括的に制御する。CPU11は、RAM13をワークエリア(作業領域)としてROM12またはHDD14等に格納されたプログラムを実行することで、本体10全体の動作を制御し、上述したコピー機能、スキャナ機能、ファクス機能、プリンタ機能などの各種機能を実現する。
通信I/F15は、ネットワーク3と接続するためのインタフェースである。接続I/F16は、通信路30を介して操作部20と通信するためのインタフェースである。
エンジン部17は、コピー機能、スキャナ機能、ファクス機能、および、プリンタ機能を実現させるための、汎用的な情報処理及び通信以外の処理を行うハードウェアである。例えば、原稿の画像をスキャンして読み取るスキャナ(画像読取部)、用紙等のシート材への印刷を行うプロッタ(画像形成部)、ファクス通信を行うファクス部などを備えている。更に、エンジン部17は、印刷済みシート材を仕分けるフィニッシャや、原稿を自動給送するADF(自動原稿給送装置)のような特定のオプション(ハードウェア)を備えることもできる。
次に、操作部20のハードウェア構成について説明する。図12に示すように、操作部20は、CPU21と、ROM22と、RAM23と、フラッシュメモリ24と、通信I/F25と、接続I/F26と、操作パネル27とを備え、これらがシステムバス28を介して相互に接続されている。
CPU21は、操作部20の動作を統括的に制御する。CPU21は、RAM23をワークエリア(作業領域)としてROM22またはフラッシュメモリ24等に格納されたプログラムを実行することで、操作部20全体の動作を制御し、ユーザから受け付けた入力に応じた情報(画像)の表示などの後述する各種機能を実現する。
通信I/F25は、ネットワーク3と接続するためのインタフェースである。接続I/F26は、通信路30を介して本体10と通信するためのインタフェースである。
操作パネル27は、ユーザの操作に応じた各種の入力を受け付けるとともに、各種の情報(例えば受け付けた操作に応じた情報、MFP4の動作状況を示す情報、設定状態などを示す情報など)を表示する。この例では、操作パネル27は、タッチパネル機能を搭載した液晶表示装置(LCD)で構成されるが、これに限られるものではない。例えばタッチパネル機能が搭載された有機EL表示装置で構成されてもよい。さらに、これに加えて又はこれに代えて、ハードウェアキー等の操作部やランプ等の表示部を設けることもできる。
次に、MFP4のソフトウェア構成について説明する。図13は、MFP4のソフトウェア構成の一例を示す模式図である。図13に示すように、本体10は、アプリ層101と、サービス層102と、OS層103とを有する。アプリ層101、サービス層102、および、OS層103の実体は、ROM12やHDD14等に格納されている各種ソフトウェアである。CPU11が、これらのソフトウェアを実行することにより、各種の機能が提供される。
アプリ層101のソフトウェアは、ハードウェア資源を動作させて所定の機能を提供するためのアプリケーションソフトウェア(以下の説明では、単に「アプリ」と称する場合がある)である。例えばアプリとしては、コピー機能を提供するためのコピーアプリ、スキャナ機能を提供するためのスキャナアプリ、ファクス機能を提供するためのファクスアプリ、プリンタ機能を提供するためのプリンタアプリなどが挙げられる。
サービス層102のソフトウェアは、アプリ層101とOS層103との間に介在し、アプリに対し、本体10が備えるハードウェア資源を利用するためのインタフェースを提供するためのソフトウェアである。より具体的には、ハードウェア資源に対する動作要求の受け付け、動作要求の調停を行う機能を提供するためのソフトウェアである。サービス層102が受け付ける動作要求としては、スキャナによる読み取りやプロッタによる印刷等の要求が考えられる。
なお、サービス層102によるインタフェースの機能は、本体10のアプリ層101だけではなく、操作部20のアプリ層201に対しても提供される。すなわち、操作部20のアプリ層201(アプリ)も、サービス層102のインタフェース機能を介して、本体10のハードウェア資源(例えばエンジン部17)を利用した機能を実現することができる。
OS層103のソフトウェアは、本体10が備えるハードウェアを制御する基本機能を提供するための基本ソフトウェア(オペレーティングシステム(OS))である。サービス層102のソフトウェアは、各種アプリからのハードウェア資源の利用要求を、OS層103が解釈可能なコマンドに変換してOS層103に渡す。そして、OS層103のソフトウェアによりコマンドが実行されることで、ハードウェア資源は、アプリの要求に従った動作を行う。
同様に、操作部20は、アプリ層201と、サービス層202と、OS層203とを有する。操作部20が備えるアプリ層201、サービス層202及びOS層203も、階層構造については本体10側と同様である。ただし、アプリ層201のアプリにより提供される機能や、サービス層202が受け付け可能な動作要求の種類は、本体10側とは異なる。アプリ層201のアプリは、操作部20が備えるハードウェア資源を動作させて所定の機能を提供するためのソフトウェアであってもよいが、主として本体10が備える機能(コピー機能、スキャナ機能、ファクス機能、プリンタ機能)等に関する操作や表示を行うためのUI(ユーザインタフェース)の機能を提供するためのソフトウェアである。この例では、アプリ層201のアプリには、Webブラウザの機能を提供するためのアプリ(以下、「ブラウザアプリ」と称する場合がある)や、上述のWebコンテンツデータに含まれるアプリケーションコマンドを実行する機能を提供するためのアプリ(以下、「インストーラ」と称する場合がある)などが含まれる。
なお、本実施形態では、機能の独立性を保つために、本体10側のOS層103のソフトウェアと操作部20側のOS層203のソフトウェアが互いに異なる。つまり、本体10と操作部20は、別々のオペレーティングシステムで互いに独立して動作する。例えば本体10側のOS層103のソフトウェアとしてLinux(登録商標)を用い、操作部20側のOS層203のソフトウェアとしてAndroid(登録商標)を用いることも可能である。
以上のように、本実施形態のMFP4において、本体10と操作部20は別々のオペレーティングシステムで動作するため、本体10と操作部20との間の通信は、共通の装置内のプロセス間通信ではなく、異なる装置間の通信として行われる。操作部20が受け付けた情報(ユーザからの指示内容)を本体10へ伝達する動作(コマンド通信)や、本体10が操作部20へイベントを通知する動作などがこれに該当する。ここでは、操作部20が本体10へコマンド通信を行うことにより、本体10の機能を使用することができる。また、本体10から操作部20に通知するイベントには、本体10における動作の実行状況、本体10側で設定された内容などが挙げられる。
また、本実施形態では、操作部20に対する電力供給は、本体10から通信路30を経由して行われているので、操作部20の電源制御を、本体10の電源制御とは別に(独立して)行うことができる。
次に、MFP4の本体10が有する機能を説明する。
図14は、MFP4の本体10が有する機能の一例を示す図である。図14に示すように、MFP4の本体10は、検知部110を有する。図14の例では、本実施形態に関する機能を主に例示しているが、MFP4の本体10が有する機能はこれに限られるものではない。検知部110は、上述したソフトウェアをCPU11が実行することにより提供される。なお、検知部110は、回路などのハードウェアにより実現されてもよい。
検知部110は、MFP4に接続されている周辺機器を周知の手法により検知し、管理する。周辺機器は、MFP4に接続されるフィニッシャや人感センサなどである。検知部110は、例えば、新たに周辺機器の接続を検知した場合、その周辺機器に応じたデバイスファイルを動的に作成する。
次に、MFP4の操作部20が有する機能を説明する。
図15は、MFP4の操作部20が有する機能の一例を示す図である。図15に示すように、操作部20は、起動部261と、表示制御部262と、実行部263と、処理実行部264と、を有する。なお、図15の例では、本実施形態に関する機能を主に例示しているが、操作部20が有する機能はこれらに限られるものではない。また、図15に示すように、表示制御部262および実行部263は、Webブラウザにおいて実現されている。
起動部261は、ユーザの操作に応じて、Webブラウザの機能を提供するブラウザアプリを起動する。例えば図16に示す操作画面が操作パネル27に表示された状態で、「アプリマーケット」という名称のアイコン5の押下を受け付けた場合、起動部261は、ネットワーク3上のサーバ2の所在を示すURLを取得するとともにブラウザアプリを起動する制御を行う。
起動したブラウザアプリは、起動部261から受け取ったURLで指定されるサーバ2に対して、HTTPリクエストとして上述の画面情報要求を送信し、画面情報要求に対する応答(HTTPレスポンス)として、Webコンテンツデータ(画面情報)を受信する。この例では、Webコンテンツデータ(画面情報)として、HTMLと、HTMLに含まれる(あるいは、HTMLから参照される)CSS/JavaScriptを受信する。ブラウザアプリは、JavaScriptを解釈、実行し、Ajaxを用いて、HTTPリクエストとして上述の表示情報要求(例えば、アプリケーションの一覧要求)をサーバ2へ送信し、表示情報要求に対する応答(HTTPレスポンス)として、アプリケーションコマンドを少なくとも含むWebコンテンツデータ(表示情報)を受信する。
図17は、表示情報要求に対する応答として受信したアプリケーション一覧のレスポンス例を示す図である。図17に示すアプリケーション一覧のレスポンス例によれば、アプリケーションサイトに表示する内容として、“categories”という各アプリケーションがどのカテゴリに属しているかを表すリストがある。ここでカテゴリとは、MFP4のフィニッシャや人感センサなどの周辺機器の活用に特化したアプリケーションについて、必須のハードウェア(フィニッシャや人感センサなどの周辺機器)を含むものである。
例えば、サーバ2のアプリケーションサイトでアプリケーションを登録する際に予め対応する印刷済みシート材を仕分ける「フィニッシャ」をアプリケーションに関連付けて設定しておくと、“categories”のリストに「フィニッシャ」を表すカテゴリが追加される。また、“categories”のリストにおける“support_options”には、対応する「フィニッシャ」のモデルの一覧が追加される。なお、人感センサなど他の周辺機器をアプリケーションに関連付けて設定した場合も同様である。
そして、ブラウザアプリは、サーバ2から受信したWebコンテンツデータ(画面情報と表示情報)に基づいて構成される画面を操作パネル27(表示部)に表示する制御を行う。ここでは、表示制御部262の機能はブラウザアプリにより提供される。また、前述したように、この例では、表示制御部262は、サーバ2から受信したWebコンテンツデータ(画面情報と表示情報)に基づいて画面を生成し、その生成した画面を操作パネル27に表示する。表示制御部262は、サーバ2から受信したWebコンテンツデータ(画面情報および表示情報)をフラッシュメモリ24等の記憶装置に保持しておき、必要に応じてWebコンテンツデータ(画面情報と表示情報)を読み出し、その読み出したWebコンテンツデータ(画面情報と表示情報)を用いて画面を生成することができる。
この例では、表示制御部262は、操作パネル27に表示された画面(Webコンテンツデータ(画面情報と表示情報)に基づいて構成される画面)に対するユーザの操作に応じて選択されたアプリケーションコマンドを特定し、その特定したアプリケーションコマンドを実行部263へ通知することができる。例えば表示制御部262は、JavaScript、カスタムスキームとして、ユーザによって選択されたアプリケーションコマンドを特定することができる。
実行部263は、Webコンテンツデータに含まれるアプリケーションコマンドのうち、操作パネル27に表示された画面を介したユーザの操作に応じてWebコンテンツデータに含まれるアプリケーションコマンド(表示制御部262から通知されたアプリケーションコマンド)を実行して、該アプリケーションコマンドに対応したアプリケーションに関する処理の実行をMFP4に要求する。ここでは、実行部263の機能は、MFP4側のアプリケーションプログラミングインタフェース(API)により提供される。MFP4は、アプリケーションプログラミングインタフェース(API)を、操作部20のブラウザアプリで利用可能としてサーバ2に配置したWebアプリケーションから呼び出せる。
処理実行部264は、Webブラウザ(実行部263)からの要求に基づいて、該要求に応じたアプリケーションに関する処理を実行する。
前述したように、サーバ2から受信したWebコンテンツデータに含まれるアプリケーションコマンドとしては、インストール命令、更新命令、アンインストール命令などが挙げられる。
以下では、サーバ2から受信したWebコンテンツデータ(画面情報と表示情報)に基づいて構成される画面に対するユーザの操作に応じてインストール命令が選択される場合を例に挙げて説明する。この場合、実行部263は、ユーザの操作に応じて選択されたインストール命令を処理実行部264へ通知し、処理実行部264は、実行部263から通知されたインストール命令を実行する。より具体的には、以下のとおりである。
この例では、表示制御部262は、サーバ2から受信したWebコンテンツデータ(画面情報と表示情報)を用いて、MFP4で利用可能なアプリケーションの一覧を示すアプリケーション一覧画面を操作パネル27に表示する制御を行う。
図18は、アプリケーション一覧画面の一例を示す図である。図18の例では、アプリケーション一覧画面は、MFP4で利用可能な全てのアプリケーションごとに、該アプリケーションの名称と、該アプリケーションを選択するためのアプリケーション選択ボタン311とを少なくとも表示する。また、図18の例では、アプリケーション一覧画面は、アプリケーションの更新を選択するための更新選択ボタン321と、アプリケーションの削除を選択するための削除選択ボタン331とを表示する。これらの具体的な内容については後述する。
更に、図18の例では、アプリケーション一覧画面は、カテゴリごとに表示することも可能である。図18の例では、アプリケーション一覧画面は、全てのアプリケーションを一覧表示してアプリケーションを選択させるタブ341と、アプリケーションをカテゴリごとに絞って選択させるタブ351とを表示する。
実行部263は、アプリケーションをカテゴリごとに絞って選択させるタブ351の押下を受け付けた場合、JavaScriptを解釈、実行して、MFP4に接続されている周辺機器の有無の確認の実行をMFP4に要求する。MFP4は、検知部110によってMFP4に接続されている周辺機器の有無の確認を行う。
このとき、タブ351にJavaScriptの実行が関連付けられており、JavaScript自体は、HTML内に記述されている。なお、これに限るものではなく、タブ351にショートカットとしてリンクが置かれているサイトに対し、ブラウザでアクセスして実行するものであっても良い。
図19は、周辺機器の有無の確認の実行要求に対する応答として受信したレスポンス例を示す図である。図19に示す周辺機器の有無を確認した際のレスポンス例では、MFP4に接続されている周辺機器の一覧“option_id”として、「フィニッシャ」と「人感センサ」と「大容量トレイ」とがMFP4に接続されていることが記載されている。
上記処理の結果、接続済みの必須の周辺機器が存在するアプリケーションがある場合、表示制御部262は、周辺機器を表すカテゴリを追加してカテゴリを表示する。図20は、アプリケーション一覧画面でカテゴリごとに絞って選択させるタブ351が操作された場合の画面の一例を示す図である。図20の例では、カテゴリボタンBとして、周辺機器を表すカテゴリとして、「フィニッシャ」を示すカテゴリボタンB1と、「人感センサ」を示すカテゴリボタンB2とが表示されている。
図20の例では、アプリケーションが分けられたカテゴリボタンBに対してそれぞれにいくつのアプリケーションが登録されているかが、カテゴリ名の近傍に数値として表示されている。これらのカテゴリボタンBの何れかが選択された場合、表示制御部262は、インストール可能なアプリケーションを表示する。
一方、上記処理の結果、接続済みの必須の周辺機器が存在するアプリケーションがない場合、表示制御部262は、通常のカテゴリのカテゴリボタンBを表示する。図21は、アプリケーション一覧画面でカテゴリごとに絞って選択させるタブ351が操作された場合の画面の一例を示す図である。図21の例では、図20に示した周辺機器を表すカテゴリのカテゴリボタンBである、「フィニッシャ」を示すカテゴリボタンB1と、「人感センサ」を示すカテゴリボタンB2とは、表示されていない。
表示制御部262は、図20または図21の何れかのカテゴリボタンBの押下を受け付けた場合、サーバ2から受信したWebコンテンツデータ(画面情報と表示情報)を用いて、MFP4で利用可能なアプリケーションの一覧を示すアプリケーション一覧画面を操作パネル27に表示する制御を行う。
図22は、アプリケーション一覧画面の一例を示す図である。図22の例は、図20の「人感センサ」を示すカテゴリボタンB2が押下された場合である。図22に示す例では、人感センサを利用し、企業の居室などで夜間に人がいないはずの時間に人を感知した場合、メール等で通報するMFP4で利用可能なアプリケーションが存在する。表示制御部262は、図22に示すように、当該アプリケーションについて、該アプリケーションの名称と、該アプリケーションを選択するためのアプリケーション選択ボタン311とを少なくとも表示する。
図23は、アプリケーション一覧画面の一例を示す図である。図23の例は、図20の「フィニッシャ」を示すカテゴリボタンB1が押下された場合である。図23に示す例では、フィニッシャでよく使う設定を管理し、追加・削除するMFP4で利用可能なアプリケーションが存在する。表示制御部262は、図23に示すように、当該アプリケーションについて、該アプリケーションの名称と、該アプリケーションを選択するためのアプリケーション選択ボタン311とを少なくとも表示する。
表示制御部262は、何れかのアプリケーション選択ボタン311の押下を受け付けた場合、サーバ2から受信した表示情報を用いて、対応するアプリケーションの詳細な内容を示すとともにインストールの実行指示を受け付けるためのインストール指示画面を操作パネル27に表示する制御を行う。図24は、インストール指示画面の一例を示す図である。図24の例では、インストール指示画面は、対応するアプリケーションのアプリ説明情報と、インストールの実行を指示するためのインストールボタン312とを表示する。この例では、インストールボタン312の押下は、インストール命令の選択(インストールしたいアプリケーションの選択であると考えてもよい)を意味する。
この例では、表示制御部262は、インストールボタン312の押下を受け付けた場合、インストールの実行を最終的に確認するためのインストール確認画面を操作パネル27に表示する制御を行う。図25は、インストール確認画面の一例を示す図である。図25の例では、インストール確認画面は、インストールの実行を最終的に承諾したことを指示するための確認ボタン313を表示する。この例では、確認ボタン313に対して、インストール命令がJavaScript形式で貼り付けられている。確認ボタン313の押下を受け付けると、実行部263は、押下された確認ボタン313に貼り付けられていたインストール命令を処理実行部264へ通知する。そして、処理実行部264が、このインストール命令を実行することになる。
以上に説明した起動部261、表示制御部262、実行部263、および、処理実行部264の各々の機能は、CPU21がROM22やフラッシュメモリ24等の記憶装置に記憶されたプログラムを実行することにより実現可能である。
図26は、システム1の動作手順の一例を示すシーケンス図である。上述したように、起動部261は、操作画面上の「アプリマーケット」という名称のアイコン5の押下を受け付けた場合(ステップS1)、Webブラウザであるブラウザアプリ(表示制御部262および実行部263)に対して、起動指令とともにサーバ2のURLを送信する(ステップS2)。起動指令を受けて起動したブラウザアプリ(表示制御部262)は、受け取ったURLで指定されるサーバ2に対して、HTTPリクエストとして上述の画面情報要求を送信する(ステップS3)。
次に、サーバ2は、MFP4からの要求に応じてWebコンテンツデータ(画面情報)を生成し(ステップS4)、その生成したWebコンテンツデータ(画面情報)をHTTPレスポンスとしてMFP4へ送信する(ステップS5)。ブラウザアプリ(表示制御部262)は、HTTPリクエストである画面情報要求に対する応答として、Webコンテンツデータ(画面情報)を受信する。例えば、ブラウザアプリ(表示制御部262)は、Webコンテンツデータ(画面情報)として、HTMLと、HTMLに含まれる(あるいは、HTMLから参照される)CSS/JavaScriptを受信する。ブラウザアプリ(表示制御部262)は、HTMLに含まれるJavaScript、またはJavaScriptへのリンクをロードすると、そのJavaScriptを実行部263に実行させる(ステップS6)。
ブラウザアプリ(実行部263)は、JavaScriptを解釈、実行し、Ajaxを用いて、サーバ2に対して、HTTPリクエストとして上述の表示情報要求を送信する(ステップS7)。
サーバ2は、MFP4からの要求に応じて表示情報を生成し(ステップS8)、その生成したWebコンテンツデータ(表示情報)をHTTPレスポンスとしてMFP4へ送信する(ステップS9)。ブラウザアプリ(実行部263)は、HTTPリクエストである表示情報要求に対する応答として、Webコンテンツデータ(表示情報)を受信する。
実行部263は、受信したWebコンテンツデータ(表示情報)を表示制御部262に渡す(ステップS10)。ブラウザアプリ(表示制御部262)は、実行部263から受信したWebコンテンツデータ(画面情報と表示情報)に基づいて構成される画面を生成し(ステップS11)、生成した画面を操作パネル27に表示する(ステップS12)。この例では、表示制御部262は、実行部263がサーバ2から受信したWebコンテンツデータ(画面情報と表示情報)を、フラッシュメモリ24等の記憶装置に格納するとともに、その受信したWebコンテンツデータ(画面情報と表示情報)を用いて、図18に示すアプリケーション一覧画面を最初に生成する。そして、その生成したアプリケーション一覧画面を操作パネル27に表示する制御を行う。
図27は、上述のステップS7において、サーバ2が、MFP4が利用可能なアプリケーションごとに、該アプリケーションの詳細を示す詳細情報を対応付けたアプリケーション詳細情報を生成する処理の一例を示すフローチャートである。図27に示すように、特定部216は、MFP4から上述の表示情報要求を受信した場合、図5に示す第1の対応情報を参照して、その受信した表示情報要求に含まれる機種コードに対応付けられた機種IDを選択する(ステップS11)。次に、特定部216は、図6に示す第2の対応情報を参照して、その選択した機種IDに対応付けられた1以上のアプリIDを選択する(ステップS12)。次に、特定部216は、図7に示す第3の対応情報を参照して、その選択した1以上のアプリIDの中から、公開されている状態を示す状態情報が対応付けられたアプリIDを選択する(ステップS13)。このとき、特定部216は、図6に示す第2の対応情報のうち、ステップS13で選択したアプリIDに対応付けられたバージョン情報も特定しておく。次に、特定部216は、図8に示す第4の対応情報を参照して、ステップS13で選択したアプリIDと、MFP4から受信した表示情報要求に含まれる言語情報(ロケール情報)との組み合わせに対応するアプリ説明情報を特定する(ステップS14)。そして、表示情報生成部217は、ステップS13で選択したアプリIDごとに、ステップS14で特定したアプリ説明情報と、図6に示す第2の対応情報のうち、ステップS13で選択したアプリIDに対応付けられたバージョン情報を含む詳細情報を対応付けてアプリケーション詳細情報を生成することができる(ステップS15)。
次に、図18に示すようなMFP4で利用可能な全てのアプリケーションが一覧表示されたアプリケーション一覧画面からカテゴリ画面を表示する動作手順について説明する。図28は、アプリケーション一覧画面からカテゴリ画面を表示する動作手順の一例を示すシーケンス図である。
上述したように、アプリケーション一覧画面上のタブ351の押下を受け付けた場合(ステップS21)、実行部263は、MFP4に接続されている周辺機器を検知部110を介して取得する(ステップS22)。
上述のステップS22の結果、接続済みの必須の周辺機器が存在するアプリケーションがある場合、表示制御部262は、図20に示すように、周辺機器を表すカテゴリを追加してカテゴリを表示する(ステップS23)。
上述のステップS22の結果、接続済みの必須の周辺機器が存在するアプリケーションがない場合、表示制御部262は、図21に示すように、通常のカテゴリを表示する(ステップS24)。
ここで、図29は、上述のステップS23あるいはS24において、表示制御部262が、カテゴリ画面を生成する処理の一例を示すフローチャートである。図29に示すように、表示制御部262は、アプリケーション一覧から取得したアプリケーションの“support_options”のリストと、取得した周辺機器一覧“option_id”とを比較する(ステップS31)。
表示制御部262は、アプリケーションの“support_options”のリストと、取得した周辺機器一覧“option_id”とが一致する場合(ステップS32のYes)、未表示の場合、周辺機器を表すカテゴリのカテゴリボタンBを表示して(ステップS33)、ステップS34に進む。
一方、表示制御部262は、アプリケーションの“support_options”のリストと、取得した周辺機器一覧“option_id”とが一致しない場合(ステップS32のNo)、そのままステップS34に進む。
表示制御部262は、ステップS31〜S33の処理を全てのアプリケーションについて実施するまで(ステップS34のNo)、繰り返す。
表示制御部262は、ステップS31〜S33の処理を、全てのアプリケーションについて実施した場合(ステップS34のYes)、カテゴリを表示して(ステップS35)、処理を終了する。
図30は、図18,図22,図23に示すアプリケーション一覧画面に表示された何れかのアプリケーション選択ボタン311が押下された場合のシステム1の動作手順の一例を示すシーケンス図である。上述したように、表示制御部262は、何れかのアプリケーション選択ボタン311の押下を受け付けた場合、上述のインストール指示画面(図24参照)やインストール確認画面(図25参照)を操作パネル27に表示する制御を行う(ステップS41)。
次に、インストールボタン312の押下を受け付けた場合、実行部263は、ユーザの操作に応じて選択されたインストール命令と、アプリID(選択されたアプリケーション命令の対象となるアプリケーションのアプリID)とを処理実行部264へ通知する(ステップS42)。処理実行部264は、実行部263から通知されたインストール命令を実行する。より具体的には以下のとおりである。まず、処理実行部264は、サーバ2に対して、インストール命令の対象となるアプリケーションのアプリIDを少なくとも含み、かつ、該アプリケーションのダウンロードを要求する上述のダウンロード要求を送信する(ステップS43)。ダウンロード要求を受信したサーバ2(ダウンロード部232)は、その受信したダウンロード要求に含まれるアプリIDに対応するアプリケーションを選択し(ステップS44)、その選択したアプリケーションをMFP4へ送信する(ステップS45)。
MFP4(処理実行部264)は、ステップS45でサーバ2からダウンロードしたアプリケーションをインストールする制御を行う(ステップS46)。インストールが完了した後、処理実行部264は、そのインストールが完了したアプリケーションのアプリIDと、インストール時の該アプリケーションのバージョンとを対応付けて上述のアプリケーション管理情報(図6に示す第2の対応情報)に追加することで、アプリケーション管理情報(図6に示す第2の対応情報)を更新する(ステップS47)。
以上に説明したように、本実施形態では、サーバ2は、ネットワーク3を介して接続されるMFP4からの要求に応じて、MFP4が利用可能なアプリケーションを示す表示情報と、アプリケーションに関する処理をMFP4に実行させるアプリケーションコマンドと、を少なくとも含むWebコンテンツデータをMFP4に送信する制御を行う制御部212を備え、MFP4は、サーバ2から受信したWebコンテンツデータに基づく画面を操作パネル27に表示する制御を行う表示制御部262と、操作パネル27に表示された画面を介したユーザの操作に応じてWebコンテンツデータに含まれるアプリケーションコマンドを実行して、該アプリケーションコマンドに対応したアプリケーションに関する処理の実行をMFP4に要求する実行部263と、を備える。これにより、サーバ2側で表示情報を自由に変更しても、Webコンテンツデータに含まれるアプリケーションコマンドをMFP4に実行させることができるので、表示情報の変更に合わせてMFP4側のプログラムを変更する必要は無い。すなわち、本実施形態によれば、MFP4が利用可能なアプリケーションを紹介するページを提供するサーバ2が、例えば地域ごとに表示内容が異なるページを構築するための仕組みを実現できる。
また、本実施形態によれば、MFP4のフィニッシャや人感センサなどの周辺機器を利用するアプリケーションについては、当該周辺機器が検知された場合に、アプリケーションを探すためのUIであるアプリケーション一覧に動的に表示することにより、周辺機器を利用するアプリケーションの検索性を良くすることができる。
例えば、特定のフィニッシャの機能を全て活用するようなアプリケーションがあるとする。そのアプリケーションを、MFP4にフィニッシャを接続していないユーザが追加でインストールしてしまうと、利用できないアプリケーションをインストールしてしまうため利便性が悪くなる。また、フィニッシャを利用するユーザから見れば、接続されているフィニッシャに特化した利用方法を提供するアプリケーションがあれば利便性が向上する。
以上、本発明に係る実施形態について説明したが、本発明は、上述の実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上述の実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
また、上述の実施形態では、本体10と操作部20は、別々のオペレーティングシステムで互いに独立して動作しているが、これに限らず、例えば本体10と操作部20が同じオペレーティングシステムで動作する形態であってもよい。つまり、本体10と操作部20とを一体とした構成であってもよい。
また、上述した実施形態のシステム1(サーバ2、MFP4等)で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよいし、インターネット等のネットワーク経由で提供または配布するように構成してもよい。また、各種プログラムを、ROM等に予め組み込んで提供するように構成してもよい。