図1は、アプリケーションシステム100の全体的な構成の例を示す図である。図2は、画像形成装置1のハードウェア構成の例を示す図である。図3は、画像形成装置1のプラットフォームの例を示す図である。図4は、メニュー画面50の例を示す図である。
図1に示すように、アプリケーションシステム100は、画像形成装置1、サーバ装置2、および通信回線4などによって構成される。
画像形成装置1とサーバ装置2とは、通信回線4を介して通信を行うことができる。通信回線4として、いわゆるLAN(Local Area Network)回線、インターネット、公衆回線、または専用線などが用いられる。
画像形成装置1は、コピー、PCプリント、ファックス、スキャナ、およびボックスなどの機能を集約した装置である。一般に、「複合機」または「MFP(Multi Function Peripherals)」などと呼ばれることがある。
PCプリント機能は、パーソナルコンピュータまたはスマートフォンなどの端末装置から受信した画像データに基づいて画像を用紙に印刷する機能である。「ネットワークプリンティング」または「ネットワークプリント」などと呼ばれることもある。
ボックス機能は、ユーザごとに「ボックス」または「パーソナルボックス」などと呼ばれる記憶領域を与えておき、各ユーザが自分の記憶領域によって画像データなどを保存し管理するための機能である。ボックスは、パーソナルコンピュータにおける「フォルダ」または「ディレクトリ」に相当する。
画像形成装置1は、図2に示すように、CPU(Central Processing Unit)10a、RAM(Random Access Memory)10b、ROM(Read Only Memory)10c、大容量記憶装置10d、タッチパネルディスプレイ10e、操作キーパネル10f、NIC(Network Interface Card)10g、モデム10h、スキャンユニット10i、およびプリントユニット10jなどによって構成される。
タッチパネルディスプレイ10eは、ユーザに対するメッセージを示す画面、ユーザがコマンドまたは情報を入力するための画面、およびCPU10aが実行した処理の結果を示す画面などを表示する。また、タッチパネルディスプレイ10eは、タッチされた位置を示す信号をCPU10aへ送る。
操作キーパネル10fは、いわゆるハードウェアキーボードであって、テンキー、スタートキー、ストップキー、およびファンクションキーなどによって構成される。
NIC10gは、TCP/IP(Transmission Control Protocol/Internet Protocol)などのプロトコルで他の装置との通信を行う。
モデム10hは、ファクシミリ端末との間でG3などのプロトコルで画像データをやり取りする。
スキャンユニット10iは、プラテンガラスの上にセットされたシートに記されている画像を読み取って画像データを生成する。
プリントユニット10jは、スキャンユニット10iによって読み取られた画像のほか、NIC10gまたはモデム10hによって他の装置から受信した画像を用紙に印刷する。
ROM10cまたは大容量記憶装置10dには、画像形成装置1の全体的な管理または基本的な処理を行ったりユーザインタフェースを提供したりするソフトウェアとして、図3に示すオペレーティングシステム(OS)1BS1およびMFPシステム302が記憶されている。さらに、オペレーティングシステム301またはMFPシステム302の機能をアプリケーションに提供するために、ネイティブアプリケーショプラットフォーム303が用意されている。
さらに、大容量記憶装置10dには、コピーアプリケーション1NP1、スキャンアプリケーション1NP2、およびボックスアプリケーション1NP3のほか、ブラウザアプリケーション1NP4、およびメニューアプリケーション1NP5などが記憶されている。コピーアプリケーション1NP1ないしメニューアプリケーション1NP5は、ネイティブアプリケーショプラットフォーム303を介して動作する。
また、大容量記憶装置10dには、IWS(Internal Web Server)用のソフトウェアであるウェブサーバシステム321が記憶されている。さらに、掲示板アプリケーション1WP1および翻訳アプリケーション1WP2のほか、ウェブメニューアプリケーション1WP3などが記憶されている。掲示板アプリケーション1WP1ないしウェブメニューアプリケーション1WP3は、ウェブサーバシステム321を介して動作する。
このように、アプリケーションには、ネイティブアプリケーショプラットフォーム303を介して動作するものもあれば、ウェブサーバシステム321を介して動作するものもある。以下、両アプリケーションを区別するために、前者を「ネイティブアプリケーション1NP」と記載し、後者を「ウェブアプリケーション1WP」と記載する。
コピーアプリケーション1NP1、スキャンアプリケーション1NP2、およびボックスアプリケーション1NP3は、それぞれ、上述のコピー、スキャン、およびボックスの各機能を実現するためのアプリケーションである。ブラウザアプリケーション1NP4は、ウェブブラウザである。メニューアプリケーション1NP5は、選択肢としてネイティブアプリケーション1NPを含むメニュー画面を表示し、ユーザが選択したネイティブアプリケーション1NPを起動するアプリケーションである。そのほか、ファックスおよびPCプリントなどの機能を実現するためのアプリケーションがネイティブアプリケーション1NPとして大容量記憶装置10dに記憶されている。
掲示板アプリケーション1WP1は、電子掲示板のアプリケーションである。翻訳アプリケーション1WP2は、ある言語のテキストを他の言語のテキストに翻訳するアプリケーションである。ウェブメニューアプリケーション1WP3は、図4のような、選択肢としてウェブアプリケーション1WPを含むメニュー画面50を表示し、ユーザが選択したウェブアプリケーション1WPを起動するアプリケーションである。さらに、ウェブメニューアプリケーション1WP3によると、選択肢としてネイティブアプリケーション1NPをメニュー画面50に含め、ネイティブアプリケーション1NPをユーザが選択した場合にこれを起動することができる。この仕組みについては、後述する。
そのほか、既存アプリケーション登録部331などを実現するためのソフトウェアが記憶されている。
これらのソフトウェアを構成するモジュールまたはプログラムファイルは、必要に応じてRAM10bにロードされ、CPU10aによって実行される。大容量記憶装置10dとして、ハードディスクドライブまたはSSD(Solid State Drive)などが用いられる。
オペレーティングシステム301、MFPシステム302、およびネイティブアプリケーショプラットフォーム303は、一般的な画像形成装置の従来のプラットフォームを構成する要素の一部である。一方、ウェブサーバシステム321は、ウェブアプリケーションを実行するために拡張した要素である。
図1に戻って、サーバ装置2は、WebAPI(Application Program Interface)によって画像形成装置1へサービスを提供する。
次に、画像形成装置1に既にインストールされているネイティブアプリケーション1NPXおよびウェブアプリケーション1WPXを起動する場合を例に、メニュー画面50を表示する仕組みおよびメニュー画面50から各アプリケーションを起動する仕組みを説明する。
〔データの準備〕
ネイティブアプリケーション情報格納領域171(図5および図7参照)が、ネイティブアプリケーション1NP用のハードウェアリソース(特に、大容量記憶装置10dの一部分)に予め設けられている。
さらに、ウェブアプリケーション情報格納領域172が、ウェブアプリケーション1WP用のハードウェアリソース(特に、大容量記憶装置10dの一部分)に予め設けられている。
ネイティブアプリケーション情報格納領域171およびウェブアプリケーション情報格納領域172ともに、従来の画像形成装置1において設けられるものと同様の役割を有する。
すなわち、ネイティブアプリケーション情報格納領域171には、ネイティブアプリケーション1NPに関する情報を示す種々のデータが記憶される。具体的には、ネイティブアプリケーション1NPを表わすイラスト(例えば、アイコン用の画像)の画像ファイル61A、アプリケーション名を示すテキストファイル61B、1つまたは複数のプログラムファイル61C、および起動方法(最初に実行すべきプログラムを起動するためのコードおよび必要なパラメータなど)を示す起動属性データ61Dなどが、互いに対応付けられて記憶される。
ウェブアプリケーション情報格納領域172には、ウェブアプリケーション1WPに関するデータを示す種々のデータが記憶される。具体的には、ウェブアプリケーション1WPを表わすイラストの画像ファイル62A、アプリケーション名およびトップページのURL(Uniform Resource Locator)などを示すテキストファイル62B、ウェブページのウェブページファイル62C、および演算用のプログラムファイル62Dなどが、互いに対応付けられて記憶される。
ウェブページファイル62Cは、マークアップ言語(例えば、HTML(Hypertext Markup Language)またはXML(Extensible Markup Language)またはスクリプト言語(例えば、PythonまたはJavaScript)によって記述される。プログラムファイル62Dは、CGI(Common Gateway Interface)、例えば、PythonのWSGI(Web Server Gateway Interface)によって記述される。1つのウェブアプリケーション1WPにウェブページファイル62Cまたはプログラムファイル62Dが複数用意されていることもある。また、ウェブページファイル62Cが予め用意されておらず、ウェブブラウザからアクセスがあるごとに新たに生成することも、ある。
さらに、本実施形態においては、ネイティブアプリケーション情報格納領域171には、ウェブアプリケーション1WPに関する情報を示す幾つかのデータが記憶される。また、ウェブアプリケーション情報格納領域172には、ネイティブアプリケーション1NPに関する情報を示す幾つかのデータが記憶される。
これらのデータは、アプリケーションのインストーラによってネイティブアプリケーション情報格納領域171およびウェブアプリケーション情報格納領域172に格納される。または、既にインストールされているアプリケーションについては、既存アプリケーション登録部331によって格納される。
以下、ネイティブアプリケーション情報格納領域171およびウェブアプリケーション情報格納領域172にこれらのデータを格納する方法の例を説明する。
〔インストーラによる格納〕
図5は、インストーラ351によって実現される機能的構成の例を示す図である。図6は、アプリケーション情報テーブル341の例を示す図である。図7は、インストーラ361によって実現される機能的構成の例を示す図である。
まずは、インストーラによるデータの格納方法を、ネイティブアプリケーション1NPXおよびウェブアプリケーション1WPXを新たにインストールする場合を例に説明する。
ネイティブアプリケーション1NPXのインストーラ351は、図5に示すように、主にデータ領域352およびプログラム領域353によって構成される。
データ領域352には、ネイティブアプリケーション1NPXの画像ファイル61A、テキストファイル61B、プログラムファイル61C、および起動属性データ61Dなどが格納されている。
プログラム領域353には、データ変換部101、ウェブサーバ用ファイル書込部102、ネイティブインタフェース用ファイル書込部103、およびネイティブアプリケーションレコード書込部104などの機能を実現するためのプログラムが記述されている。
データ変換部101は、画像ファイル61Aおよびテキストファイル61Bを、ウェブサーバシステム321に対応するフォーマット(形式)のファイルに変換する。
例えば、画像ファイル61Aのフォーマットがビットマップフォーマットであり、ウェブサーバシステム321に対応するフォーマットがGIF(Graphics Interchange Format)である場合は、画像ファイル61AをGIFのファイルに変換する。また、テキストファイル61Bの文字コードがJIS(Japanese Industrial Standards)コードであり、ウェブサーバシステム321に対応する文字コードがEUC(Extended Unix Code)である場合は、テキストファイル61BをEUCのファイルに変換する。以下、変換された画像ファイルおよびテキストファイルをそれぞれ「画像ファイル63A」および「テキストファイル63B」と記載する。なお、Unixは登録商標である。
ウェブサーバ用ファイル書込部102は、ウェブアプリケーション情報格納領域172に、ネイティブアプリケーション1NPX用のディレクトリを設ける。そして、画像ファイル63Aおよびテキストファイル63Bを、このディレクトリに書き込む。
ネイティブインタフェース用ファイル書込部103は、ネイティブアプリケーション情報格納領域171にネイティブアプリケーション1NPX用のディレクトリを設ける。そして、データ領域352の中の画像ファイル61A、テキストファイル61B、プログラムファイル61Cを、このディレクトリに書き込む。
なお、画像ファイル61Aおよびテキストファイル61Bは、ネイティブアプリケーション1NPの一覧を示すメニュー画面をメニューアプリケーション1NP5によって表示する際に用いられる。
ところで、ネイティブアプリケーション情報格納領域171には、図6に示すアプリケーション情報テーブル341が予め用意されている。
ネイティブアプリケーションレコード書込部104は、ネイティブアプリケーション1NPXのためのレコード8として、識別番号、アプリケーション名、種別、配置順、起動方法、ネイティブ用アイコンファイル名、およびウェブサーバ用アイコンファイル名を示すレコードをアプリケーション情報テーブル341に書き込む。これらの情報の意味は、後述する。
ウェブアプリケーション1WPXのインストーラ361は、図7に示すように、主にデータ領域362およびプログラム領域363によって構成される。
データ領域362には、ウェブアプリケーション1WPXの画像ファイル62A、テキストファイル62B、ウェブページファイル62C、およびプログラムファイル62Dなどが格納されている。
プログラム領域363には、データ変換部121、ウェブサーバ用ファイル書込部122、ネイティブインタフェース用ファイル書込部123、およびウェブアプリケーションレコード書込部124などの機能を実現するためのプログラムが格納されている。
データ変換部121は、画像ファイル62Aおよびテキストファイル62Bを、ネイティブアプリケーショプラットフォーム303に対応するフォーマットのファイルに変換する。変換の方法は、データ変換部101(図5参照)による変換の方法と同様である。以下、変換によって得られた画像ファイル62Aおよびテキストファイル62Bをそれぞれ「画像ファイル64A」および「テキストファイル64B」と記載する。
ウェブサーバ用ファイル書込部122は、ウェブアプリケーション情報格納領域172に、ウェブアプリケーション1WPX用のディレクトリを設ける。そして、データ領域362の中の画像ファイル62A、テキストファイル62B、ウェブページファイル62C、およびプログラムファイル62Dを、このディレクトリに書き込む。
ネイティブインタフェース用ファイル書込部123は、ネイティブアプリケーション情報格納領域171にウェブアプリケーション1WPX用のディレクトリを設ける。そして、データ変換部121によって得られた画像ファイル64Aおよびテキストファイル64Bをこのディレクトリに書き込む。
ウェブアプリケーションレコード書込部124は、ウェブアプリケーション1WPXのためのレコード8を生成しアプリケーション情報テーブル341(図6参照)に書き込む。
ここで、アプリケーション情報テーブル341に格納される各レコードの情報の意味について説明する。「識別番号」は、アプリケーションを識別するためのID(identification)である。
「アプリケーション名」は、アプリケーションの名称である。ネイティブアプリケーション1NPの場合は、テキストファイル61Bに示されるアプリケーション名が用いられる。ウェブアプリケーション1WPの場合は、テキストファイル62Bに示されるアプリケーション名が用いられる。
「種別」は、アプリケーションの種類である。ネイティブアプリケーション1NPの場合は「Native」が示され、ウェブアプリケーション1WPの場合は「Web」が示される。
「配置順」は、メニュー画面50(図4参照)における、アプリケーションのボタンの配置順である。デフォルトでは画像形成装置1にインストールされた順に配置順が決まるが、ユーザが任意に変更することができる。
「起動方法」は、アプリケーションを起動する方法である。ネイティブアプリケーション1NPの場合は、起動属性データ61Dに示される起動方法が用いられる。ウェブアプリケーション1WPの場合は、起動時に実行するプログラムファイルとしてブラウザアプリケーション1NP4のメインプログラムを起動するためのコード(コマンドまたはリンク)を示し、スタートページのパラメータとしてトップページのURLを示す情報が、用いられる。なお、このURLは、テキストファイル62Bに示されている。
「ネイティブ用アイコンファイル名」は、メニューアプリケーション1NP5が表示するメニュー画面に用いられるアイコンのファイル名である。ネイティブアプリケーション1NPの場合は画像ファイル61Aのファイル名が示され、ウェブアプリケーション1WPの場合は画像ファイル63Aのファイル名が示される。
「ウェブサーバ用アイコンファイル名」は、ウェブメニューアプリケーション1WP3が表示するメニュー画面50に用いられるアイコンのファイル名である。ネイティブアプリケーション1NPの場合は画像ファイル64Aのファイル名が示され、ウェブアプリケーション1WPの場合は画像ファイル62Aのファイル名が示される。
なお、画像ファイル61A、63Aは、ネイティブアプリケーション情報格納領域171に格納されたものであり、画像ファイル62A、63Aは、ウェブアプリケーション情報格納領域172に格納されたものである。ファイル名が重複することがあるので、ネイティブ用アイコンファイル名として、ファイル名だけでなく格納先のディレクトリ名をも示すようにしてもよい。ウェブ用アイコンファイル名も、同様である。
〔既存アプリケーション登録部331による格納〕
図8は、既存アプリケーション登録部331の構成の例を示す図である。
既存アプリケーション登録部331は、図5または図7に示した機能を有しないインストーラによって画像形成装置1に既にインストールされたアプリケーションの画像ファイル、テキストファイル、およびレコード8などをネイティブアプリケーション情報格納領域171またはウェブアプリケーション情報格納領域172へ格納するための機能を有する。
具体的には、既存アプリケーション登録部331は、図8に示す第一のデータ変換部131、ネイティブインタフェース用ファイル書込部132、ウェブアプリケーションレコード書込部133、第二のデータ変換部134、ウェブサーバ用ファイル書込部135、およびネイティブアプリケーションレコード書込部136などによって構成される。
以下、インストール済のコピーアプリケーション1NP1および掲示板アプリケーション1WP1の画像ファイル、テキストファイル、およびレコード8などを格納する場合を例に、図8の各部の処理を説明する。
コピーアプリケーション1NP1は、既に画像形成装置1にインストールされている。したがって、コピーアプリケーション1NP1の画像ファイル61A、テキストファイル61B、およびプログラムファイル61Cが、既にネイティブアプリケーション情報格納領域171の所定のディレクトリに記憶されている。同様の理由で、掲示板アプリケーション1WP1の画像ファイル62A、テキストファイル62B、ウェブページファイル62C、およびプログラムファイル62Dが、ウェブアプリケーション情報格納領域172の所定のディレクトリに記憶されている。
第一のデータ変換部131は、掲示板アプリケーション1WP1の画像ファイル62Aおよびテキストファイル62Bをウェブアプリケーション情報格納領域172から読み出す。そして、ネイティブアプリケーショプラットフォーム303に対応するフォーマットのファイルに変換することによって、画像ファイル64Aおよびテキストファイル64Bを生成する。変換の方法は、データ変換部101(図5参照)による変換の方法と同様である。後述する第二のデータ変換部134においても、同様である。
ネイティブインタフェース用ファイル書込部132は、ネイティブアプリケーション情報格納領域171に、掲示板アプリケーション1WP1用のディレクトリを設ける。そして、第一のデータ変換部131によって得られた画像ファイル64Aおよびテキストファイル64Bを、このディレクトリに書き込む。
ウェブアプリケーションレコード書込部133は、掲示板アプリケーション1WP1のレコード8を生成し、アプリケーション情報テーブル341(図6参照)に書き込む。レコード8の内容は、前に説明した通りである。
第二のデータ変換部134は、コピーアプリケーション1NP1の画像ファイル61Aおよびテキストファイル61Bをネイティブアプリケーション情報格納領域171から読み出す。そして、ウェブサーバシステム321に対応するフォーマットのファイルに変換することによって、画像ファイル63Aおよびテキストファイル63Bを生成する。
ウェブサーバ用ファイル書込部135は、ウェブアプリケーション情報格納領域172に、コピーアプリケーション1NP1用のディレクトリを設ける。そして、第二のデータ変換部134によって得られた画像ファイル63Aおよびテキストファイル63Bを、このディレクトリに書き込む。
ネイティブアプリケーションレコード書込部136は、コピーアプリケーション1NP1のレコード8を生成し、アプリケーション情報テーブル341に書き込む。レコード8の内容は、前に説明した通りである。
既存アプリケーション登録部331は、インストール済のアプリケーションのうちのレコード8の登録が未だである各アプリケーションについて、上に説明した処理を実行する。
未登録であるか否かは、アプリケーション情報テーブル341を参照すれば分かる。または、ネイティブアプリケーション1NPの場合は、そのネイティブアプリケーション1NPの画像ファイル61Aがネイティブアプリケーション情報格納領域171に記憶されているが、そのネイティブアプリケーション1NPの画像ファイル63Aがウェブアプリケーション情報格納領域172に未だ記憶されていなければ、未登録であると、判断することができる。ウェブアプリケーション1WPの場合は、そのウェブアプリケーション1WPの画像ファイル62Aがウェブアプリケーション情報格納領域172に記憶されているが、そのウェブアプリケーション1WPの画像ファイル64Aがネイティブアプリケーション情報格納領域171に未だ記憶されていなければ、未登録であると、判断することができる。
また、既存アプリケーション登録部331による登録のタイミングは、例えば、次の通りである。
画像形成装置1の電源をオンにしたときに、既存アプリケーション登録部331による処理を実行すればよい。または、画像形成装置1を初期化したときに、実行してもよい。または、メニュー画面50を表示する際に、実行してもよい。そのほか、予め設定された任意のタイミングで実行することができる。
〔メニュー画面50の表示およびアプリケーションの起動〕
図9は、アプリケーションマネージャ371およびメニューマネージャ372によって実現される機能的構成の例を示す図である。
図3に示したように、ネイティブアプリケーショプラットフォーム303には、アプリケーションマネージャ371が備わっている。ウェブサーバシステム321には、メニューマネージャ372が備わっている。
アプリケーションマネージャ371の基本的な役割は、従来のアプリケーションマネージャと同様であり、ネイティブアプリケーショプラットフォーム303に用意されている機能をネイティブアプリケーション1NPへ仲介することである。アプリケーションマネージャ371は、さらに、メニュー画面50を表示するために必要なデータをメニューマネージャ372へ仲介する。また、メニューマネージャ372からの要求に基づいてアプリケーションを起動させる。
メニューマネージャ372は、オペレーティングシステム301に拡張されたプログラムであって、メニュー画面50を表示するための処理およびメニュー画面50からアプリケーションを起動するための処理をサポートする。
このように、アプリケーションマネージャ371およびメニューマネージャ372は、メニュー画面50の表示のサポートおよびメニュー画面50からのアプリケーションの起動のサポートを連携して行う。
アプリケーションマネージャ371は、メニューマネージャ372と連携するための機能として、図9に示すメニュー用データ付与部141、ネイティブアプリケーション起動部142、およびウェブアプリケーション起動部143を備える。
メニューマネージャ372は、アプリケーションマネージャ371と連携するための機能として、メニュー用データ要求部151、素材ファイル取得部152、メニュースクリプト生成部153、起動情報記憶部154、ネイティブアプリケーション起動要求部155、およびウェブアプリケーション起動要求部156を備える。
なお、アプリケーションマネージャ371の各部とメニューマネージャ372の各部とは、MFPシステム302(図3参照)を介してデータのやり取りを行う。
以下、アプリケーションマネージャ371およびメニューマネージャ372の各部の処理を、メニュー画面50の表示のための処理、ネイティブアプリケーション1NPの起動のための処理、およびウェブアプリケーション1WPの起動のための処理に大別して説明する。
〔メニュー画面50の表示のための処理〕
ブラウザアプリケーション1NP4は、ウェブメニューアプリケーション1WP3のURLが指定されると、ウェブメニューアプリケーション1WP3へアクセスする。
すると、ウェブメニューアプリケーション1WP3は、トップページのウェブページファイル62Cをメニューマネージャ372に対して要求する。
メニューマネージャ372において、メニュー用データ要求部151は、アプリケーション情報テーブル341(図6参照)をアプリケーションマネージャ371に対して要求する。
アプリケーションマネージャ371において、メニュー用データ付与部141は、ネイティブアプリケーション情報格納領域171からアプリケーション情報テーブル341を読み出し、メニュー用データ要求部151へ与える。
メニューマネージャ372において、素材ファイル取得部152は、アプリケーション情報テーブル341に示されるアプリケーションごとの画像ファイル62Aまたは画像ファイル63Aを、アプリケーション情報テーブル341に示されるウェブサーバ用アイコンファイル名に基づいてウェブアプリケーション情報格納領域172から取得する。具体的には、ネイティブアプリケーション1NPごとの画像ファイル63Aを取得し、ウェブアプリケーション1WPごとの画像ファイル62Aを取得する。さらに、画像ファイル62Aと同じディレクトリに記憶されているテキストファイル62Bと、画像ファイル63Aと同じディレクトリに記憶されているテキストファイル63Bとを取得する。
メニュースクリプト生成部153は、取得された画像ファイル62A、63Aおよびテキストファイル62B、63B、とアプリケーション情報テーブル341に示される配置順とに基づいて、ウェブメニューアプリケーション1WP3のトップページのウェブページファイル62Cとしてメニュー画面50を表示するためのメニュースクリプト65を生成する。図4に示したように、メニュー画面50には、アプリケーションごとのアイコン501が配置されている。アイコン501のイラストの部分は、画像ファイル62A、63Aに基づいている。アイコン501のテキスト(アプリケーション名)の部分は、テキストファイル62B、63Bに基づいている。アイコン501の配置は、アプリケーション情報テーブル341に示される配置順に基づいている。
そして、メニュースクリプト生成部153は、メニュースクリプト65をウェブメニューアプリケーション1WP3に与える。
ウェブメニューアプリケーション1WP3は、要求されたウェブページファイル62Cとしてメニュースクリプト65をブラウザアプリケーション1NP4へ与える。
そして、ブラウザアプリケーション1NP4は、メニュースクリプト65に基づいてメニュー画面50をタッチパネルディスプレイ10eに表示させる。なお、アイコン501の個数が所定の数を超える場合は、所定の個数ずつ複数のページに分けて表示する。または、スクロールさせながら一部分ずつ表示する。
起動情報記憶部154は、アプリケーション情報テーブル341を記憶する。アプリケーション情報テーブル341は、アプリケーションの起動の要求のために用いられる。起動情報記憶部154を、ウェブアプリケーション情報格納領域172に設けてもよい。
〔ネイティブアプリケーション1NPの起動のための処理〕
ユーザは、メニュー画面50が表示されると、起動したいアプリケーションのアイコン501をタッチして選択する。
すると、ブラウザアプリケーション1NP4は、アイコン501に対応するアプリケーションをウェブメニューアプリケーション1WP3へ通知する。
アイコン501がネイティブアプリケーション1NPのものである場合は、ネイティブアプリケーション起動要求部155およびネイティブアプリケーション起動部142によって、このネイティブアプリケーション1NPの起動のための処理が行われる。
以下、コピーアプリケーション1NP1のアイコン501が選択された場合を例に各部の処理を説明する。
ウェブメニューアプリケーション1WP3は、アイコン501に対応するアプリケーションつまりコピーアプリケーション1NP1を起動するようにメニューマネージャ372に要求する。
すると、ネイティブアプリケーション起動要求部155は、起動情報記憶部154に記憶されているアプリケーション情報テーブル341の中から、コピーアプリケーション1NP1に対応するレコード8つまりレコード802を読み出す。そして、レコード802に示される起動方法をアプリケーションマネージャ371へ通知することによって、コピーアプリケーション1NP1の起動を要求する。この際に、起動方法を示すデータを、必要に応じて、アプリケーションマネージャ371が解釈することができる形式に変換して、アプリケーションマネージャ371へ与える。
アプリケーションマネージャ371において、ネイティブアプリケーション起動部142は、起動方法を通知されると、この起動方法の通りにコピーアプリケーション1NP1を起動させる。これ以降の起動の仕組みは、従来と同様である。
すると、コピーアプリケーション1NP1が起動し、コピーアプリケーション1NP1の画面がタッチパネルディスプレイ10eに表示される。
〔ウェブアプリケーション1WPの起動のための処理〕
ユーザが選択したアイコン501がウェブアプリケーション1WPのものである場合は、ウェブアプリケーション起動要求部156およびウェブアプリケーション起動部143によって、このウェブアプリケーション1WPの起動のための処理が行われる。以下、掲示板アプリケーション1WP1のアイコン501が選択された場合を例に説明する。
ウェブメニューアプリケーション1WP3は、ネイティブアプリケーション1NPの場合と同様、アイコン501に対応するアプリケーションつまり掲示板アプリケーション1WP1を起動するようにメニューマネージャ372に要求する。
すると、ウェブアプリケーション起動要求部156は、起動情報記憶部154に記憶されているアプリケーション情報テーブル341の中から、掲示板アプリケーション1WP1に対応するレコード8つまりレコード807を読み出す。そして、レコード807に示される起動方法をアプリケーションマネージャ371へ通知することによって、掲示板アプリケーション1WP1の起動を要求する。
アプリケーションマネージャ371において、ネイティブアプリケーション起動部142は、起動方法を通知されると、この起動方法の通りに掲示板アプリケーション1WP1を起動させる。
ところで、通知された起動方法には、起動するプログラムとして掲示板アプリケーション1WP1が記述されておらず、ブラウザアプリケーション1NP4のメインプログラムを起動するためのコードが記述されている。このようなコードが記述されている場合は、ネイティブアプリケーション起動部142は、次のように掲示板アプリケーション1WP1を起動させる。
ネイティブアプリケーション起動部142は、現在動作しているブラウザアプリケーション1NP4を終了させる。そして、ブラウザアプリケーション1NP4を再び起動させる。この際に、起動方法に記述されるURLのページをスタートページとして起動させる。本例の場合は、掲示板アプリケーション1WP1のトップページのURLが記述されている。したがって、ブラウザアプリケーション1NP4は、起動後、最初に、このURLに基づいてウェブサーバシステム321へアクセスして掲示板アプリケーション1WP1のトップページのデータを取得し、トップページをタッチパネルディスプレイ10eに表示させる。
図10は、インストーラ351、361による全体的な処理の流れの例を説明するフローチャートである。図11は、既存アプリケーション登録部331による全体的な処理の流れの例を説明するフローチャートである。図12は、アプリケーションマネージャ371の全体的な処理の流れの例を説明するフローチャートである。図13は、メニューマネージャ372の全体的な処理の流れの例を説明するフローチャートである。
次に、インストーラ351、361、既存アプリケーション登録部331、アプリケーションマネージャ371、およびメニューマネージャ372による全体的な処理の流れを、図10〜図13のフローチャートを参照しながら説明する。
画像形成装置1は、インストーラ351を実行することによって、図10(A)に示す手順で新たなネイティブアプリケーション1NPをインストールする。
画像形成装置1は、このネイティブアプリケーション1NPの種々のファイル(画像ファイル61A、テキストファイル61B、プログラムファイル61Cなど)をネイティブアプリケーション情報格納領域171に格納する(#701)。
さらに、画像形成装置1は、メニュー画面50の表示およびアプリケーションの起動の準備のために、次の処理を行う。画像ファイル61Aおよびテキストファイル61Bをそれぞれ画像ファイル63Aおよびテキストファイル63Bに変換し(#702)、ウェブアプリケーション情報格納領域172に格納する(#703)。そして、このネイティブアプリケーション1NPに関する情報を示すレコード8を生成しアプリケーション情報テーブル341に格納する(#704)。
画像形成装置1は、インストーラ361を実行することによって、図10(B)に示す手順で新たなウェブアプリケーション1WPをインストールする。
画像形成装置1は、このインストーラ361の種々のファイル(画像ファイル62A、テキストファイル62B、ウェブページファイル62C、プログラムファイル62Dなど)をウェブアプリケーション情報格納領域172に格納する(#711)。
さらに、画像形成装置1は、アプリケーションの起動の準備のために次の処理を行う。画像ファイル62Aおよびテキストファイル62Bをそれぞれ画像ファイル64Aおよびテキストファイル64Bに変換し(#712)、ネイティブアプリケーション情報格納領域171に格納する(#713)。そして、このウェブアプリケーション1WPに関する情報を示すレコード8を生成しアプリケーション情報テーブル341に格納する(#714)。
画像形成装置1は、既存アプリケーション登録部331によって、図11に示す手順で既存のアプリケーションのレコード8などの登録の処理を行う。
画像形成装置1は、レコード8が未だアプリケーション情報テーブル341に登録されていないアプリケーションのうちの、1つ目のアプリケーションに注目する。
注目したアプリケーション(以下、「注目アプリケーション」と記載する。)がウェブアプリケーション1WPである場合は(図11のステップ#721でYes)、画像形成装置1は、注目アプリケーションの画像ファイル62Aおよびテキストファイル62Bをそれぞれ、ネイティブアプリケーショプラットフォーム303で解釈可能なフォーマットに変換することによって、画像ファイル64Aおよびテキストファイル64Bを生成する(#722)。注目アプリケーション用のディレクトリをネイティブアプリケーション情報格納領域171に生成し、画像ファイル64Aおよびテキストファイル64Bを格納する(#723)。そして、注目アプリケーションのレコード8を生成しアプリケーション情報テーブル341に格納する(#724)。
一方、注目アプリケーションがネイティブアプリケーション1NPである場合は(#721でNo)、画像形成装置1は、注目アプリケーションの画像ファイル61Aおよびテキストファイル61Bをそれぞれ、ウェブサーバシステム321で解釈可能なフォーマットに変換することによって、画像ファイル63Aおよびテキストファイル63Bを生成する(#725)。注目アプリケーション用のディレクトリをウェブアプリケーション情報格納領域172に生成し、画像ファイル63Aおよびテキストファイル63Bを格納する(#726)。そして、注目アプリケーションのレコード8を生成しアプリケーション情報テーブル341に格納する(#727)。
未登録のアプリケーションが残っている場合は(#728でYes)、画像形成装置1は、それぞれを順に注目し、ステップ#721〜#727の処理を適宜、実行する。
画像形成装置1は、アプリケーションマネージャ371およびメニューマネージャ372を実行することによって、選択肢としてウェブアプリケーション1WPだけでなくネイティブアプリケーション1NPをメニュー画面50に配置し、メニュー画面50から両種のアプリケーションを起動することができる。
画像形成装置1は、アプリケーションマネージャ371に基づいて、図12に示す手順で処理を行う。
メニューマネージャ372からアプリケーション情報テーブル341を要求された場合は(図12の#731でYes)、ネイティブアプリケーション情報格納領域171からアプリケーション情報テーブル341を読み出してメニューマネージャ372に与える(#732)。
メニューマネージャ372から起動方法を通知された場合は(#733でYes)、画像形成装置1は、この起動方法に従って次のようにアプリケーションを起動する。
起動方法がウェブアプリケーション1WPに関するものである場合は(#734でYes)、画像形成装置1は、ブラウザアプリケーション1NP4を終了させる(#735)。そして、この通知方法に示されるURLのウェブページ(通常は、このウェブアプリケーション1WPのトップページ)をスタートページとして、再度、ブラウザアプリケーション1NP4を起動する(#736)。
一方、起動方法がネイティブアプリケーション1NPに関するものである場合は(#734でNo)、この起動方法に従って、このネイティブアプリケーション1NPを起動する(#737)。
また、画像形成装置1は、メニューマネージャ372に基づいて、図13に示す手順で処理を行う。
ウェブメニューアプリケーション1WP3からトップページのファイルを要求された場合は(図13の#741でYes)、画像形成装置1は、アプリケーションマネージャ371にアプリケーション情報テーブル341を要求し、取得する(#742)。さらに、ウェブアプリケーション情報格納領域172から、各ウェブアプリケーション1WPの画像ファイル62Aおよびテキストファイル62Bと、各ネイティブアプリケーション1NPの画像ファイル63Aおよびテキストファイル63Bとを、取得する(#743)。そして、取得したこれらのデータに基づいてメニュースクリプト65を生成し、ウェブメニューアプリケーション1WP3に与える(#744)。
ウェブメニューアプリケーション1WP3からアプリケーションの起動を要求された場合は(#745でYes)、このアプリケーションの起動方法をアプリケーションマネージャ371へ通知することによって、このアプリケーションの起動を要求する(#746)。
本実施形態によると、既にインストールされているネイティブアプリケーション1NPをウェブメニューアプリケーション1WP3から起動することができる。
図14は、メニュー画面50の表示中におけるメニューマネージャ372の処理の流れの例を説明するフローチャートである。図15は、アプリケーションシステム100のプラットフォームの変形例を示す図である。
本実施形態では、既存アプリケーション登録部331およびアプリケーションマネージャ371を別々のソフトウェアによって実現したが、これらを1つのソフトウェアまたはプログラムによって実現してもよい。この場合は、このソフトウェアまたはプログラムによると、画像形成装置1は、既存のアプリケーションのレコード8などの登録の際は、図11に示した手順で処理を実行し、メニュー画面50の表示またはアプリケーションの起動の際は、図12に示した手順で処理を実行する。
本実施形態では、メニューマネージャ372は、ウェブメニューアプリケーション1WP3からの要求があったタイミングで、つまり、ブラウザアプリケーション1NP4がメニュー画面50を表示する際に、アプリケーション情報テーブル341を取得した。これ以外のタイミングで取得してもよい。例えば、画像形成装置1の電源がオンになったタイミングで取得してもよい。または、メニュー画面50がアクティブウィンドウになったタイミングで取得してもよい。または、スリープモードを解除したタイミングで取得してもよい。または、スクリーンセーバの動作を解除したタイミングで取得してもよい。または、ネイティブアプリケーション1NPが新たにインストールされ、このネイティブアプリケーション1NPのレコード8が追加されたタイミングで取得してもよい。または、レコード8が追加されるごとに、アプリケーションマネージャ371がこのレコード8をメニューマネージャ372へ与えるようにしてもよい。
アプリケーション(ネイティブアプリケーション1NPまたはウェブアプリケーション1WP)がアンインストールされた場合は、このアプリケーションのレコード8をアプリケーション情報テーブル341から削除するのが望ましい。この際に、残りのレコード8に示される配置順を適宜、繰り上げるのが望ましい。ブラウザアプリケーション1NP4がメニュー画面50を表示しているときにアプリケーションがアンインストールされた場合は、メニューマネージャ372は、メニュースクリプト65を生成し直し、ウェブメニューアプリケーション1WP3はこれをブラウザアプリケーション1NP4へ提供し直すのが、望ましい。そして、ブラウザアプリケーション1NP4は、新たなメニュースクリプト65に基づいてメニュー画面50を表示し直す。
ネイティブアプリケーション1NPがアンインストールされた場合は、さらに、ウェブアプリケーション情報格納領域172から、このネイティブアプリケーション1NPの画像ファイル63Aおよびテキストファイル63Bを削除する。ウェブアプリケーション1WPがアンインストールされた場合は、さらに、ネイティブアプリケーション情報格納領域171から、このウェブアプリケーション1WPの画像ファイル64Aおよびテキストファイル64Bを削除する。
または、ブラウザアプリケーション1NP4によるメニュー画面50の表示中、メニューマネージャ372は、図14のように、アプリケーションのインストールおよびアンインストールを監視しメニュースクリプト65を生成し直してもよい。
メニューマネージャ372は、定期的に、例えば、所定の時間が経過するごとに(図14の#751でYes)、アプリケーション情報テーブル341へのレコード8の追加または削除をアプリケーションマネージャ371に対して問い合わせる(#752)。
新たにインストールされたアプリケーションまたはアンインストールされたアプリケーションがある場合は、レコード8の追加または削除がある。この場合は(#753でYes)、メニューマネージャ372は、最新のアプリケーション情報テーブル341を取得する(#754)。そして、メニュースクリプト65を生成し直し、ウェブメニューアプリケーション1WP3に与える(#755)。なお、配置順に変更があった場合も、これらの処理を行ってもよい。
メニュースクリプト65は、ウェブメニューアプリケーション1WP3からブラウザアプリケーション1NP4へ与えられ、これに基づいてメニュー画面50が表示し直される。以上の処理により、画像形成装置1にインストールされている最新の状況に応じたメニュー画面50が表示し直される。
ウェブメニューアプリケーション1WP3が終了するまで、ステップ#751〜#756の処理が適宜実行される。
本実施形態では、メニューマネージャ372は、アプリケーション情報テーブル341に示される起動方法をアプリケーションマネージャ371へ通知したが、識別番号を通知してもよい。この場合は、アプリケーションマネージャ371は、通知された識別番号に対応する通知方法を、ネイティブアプリケーション情報格納領域171に記憶されているアプリケーション情報テーブル341から検索する。そして、検索した通知方法に基づいてアプリケーションの起動の処理を行う。
メニューマネージャ372は、メニュースクリプト65を生成するに際して新たに取得したアプリケーション情報テーブル341と、過去に取得したアプリケーション情報テーブル341との内容が一致する場合は、過去に取得したアプリケーション情報テーブル341に基づいて生成したメニュースクリプト65を使い回してもよい。一致しない場合は、新たに取得したアプリケーション情報テーブル341に基づいてメニュースクリプト65を生成すればよい。
本実施形態では、図3に示したように、ウェブサーバシステム321としてIWSのシステムを用いた。つまり、ウェブブラウザとウェブサーバとを1台の画像形成装置1に設けた。ウェブサーバを他の装置に設けた場合にも、本発明を適用することができる。以下、この場合の例を説明する。
図15に示すように、メニューマネージャ372をサーバ装置2に設ける。なお、ウェブサーバのリソース(例えば、ウェブアプリケーション情報格納領域172)も、サーバ装置2に設ける。
メニューマネージャ372をはじめ各部が行う処理は、基本的に、IWSの場合と同様である。ただし、サーバ装置2は、複数台の画像形成装置1と連携することがある。そこで、サーバ装置は、画像形成装置1ごとにウェブアプリケーション情報格納領域172を用意し、使い分ける。また、画像形成装置1ごとに通信セッションを確立し、データのやり取りを画像形成装置1ごとに独立して行う。
サーバ装置2のウェブサーバのシステムにおいてWebAPIの代わりにOpenAPIが用いられている場合にも本発明を適用することができる。
その他、アプリケーションシステム100、画像形成装置1、サーバ装置2の全体または各部の構成、処理内容、処理順序、データの構成などは、本発明の趣旨に沿って適宜変更することができる。