(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-13
(45)【発行日】2023-12-21
(54)【発明の名称】情報処理装置とその制御方法、及びプログラム
(51)【国際特許分類】
H04N 1/00 20060101AFI20231214BHJP
G06F 9/445 20180101ALI20231214BHJP
G06F 9/455 20180101ALI20231214BHJP
B41J 29/38 20060101ALI20231214BHJP
【FI】
H04N1/00 C
G06F9/445
G06F9/455 150
B41J29/38 501
(21)【出願番号】P 2019169577
(22)【出願日】2019-09-18
【審査請求日】2022-09-09
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】木暮 岳史
(72)【発明者】
【氏名】池田 篤
(72)【発明者】
【氏名】小池 宏明
【審査官】橘 高志
(56)【参考文献】
【文献】特開2014-106767(JP,A)
【文献】特開2005-202652(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 1/00
G06F 9/445
G06F 9/455
B41J 29/38
(57)【特許請求の範囲】
【請求項1】
拡張アプリケーションを実行できる情報処理装置であって、
拡張アプリケーションを実行するためのVM(Virtual Machine)と前記拡張アプリケーション
がVMを再利用できるかどうかを示す情報とを記憶する記憶手段と、
前記拡張アプリケーションの起動時、前記情報に基づいて当該拡張アプリケーションが前記VMを再利用可能かどうか判定する第1判定手段と、
前記第1判定手段
により前記拡張アプリケーションが前記VMを再利用可能と判定
された場合、前記VMを再利用可能であると判定された前記拡張アプリケーションの機能と、前記記憶手段に記憶されているVMを利用する前記拡張アプリケーションの機能
が同じ
あるかどうかを判定する第2判定手段と、
前記第2判定手段により機能が同じであると判定された場合、前記記憶手段に記憶されているVMを利用して前記拡張アプリケーションを実行するよう制御
し、前記第1判定手段により、前記拡張アプリケーションが前記VMを再利用可能でないと判定された場合、或いは前記第2判定手段により機能が同じではないと判定された場合、前記拡張アプリケーションを実行するためのVMを新たに生成し、新たなVMを利用して前記拡張アプリケーションを実行するよう制御する制御手段と、
を有することを特徴とする情報処理装置。
【請求項2】
前記VMは識別情報(ID)により管理され、前記第2判定手段は、前記IDに基づいて前記機能が同じであるかを判定することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記拡張アプリケーションを終了する際、当該拡張アプリケーションが前記VMを再利用可能かどうか判定する第3判定手段を、更に有し、
前記第3判定手段
により前記拡張アプリケーションが前記VMを再利用可能であると判定
された場合、前記記憶手段は、前記拡張アプリケーションで使用されていたVMを終了させることなく記憶することを特徴とする請求項
1又は2に記載の情報処理装置。
【請求項4】
前記第3判定手段は、前記拡張アプリケーションがVMを再利用可能かどうかを前記情報に基づいて判定することを特徴とする請求項
3に記載の情報処理装置。
【請求項5】
前記機能は、前記拡張アプリケーションに対応するアイコンの登録処理、Webブラウザからの前記拡張アプリケーションに対するHTTPリクエストに応じてサーブレット処理、前記アイコンが指示されたときの処理を含むことを特徴とする請求項1乃至
4のいずれか一項に記載の情報処理装置。
【請求項6】
前記記憶手段に記憶されているVMを解放するイベントの発生を検知する検知手段と、
前記検知手段による前記イベントの発生の検知に応じて、前記記憶手段に記憶されているVMを解放する解放手段と、を更に有することを特徴とする請求項1乃至
5のいずれか1項に記載の情報処理装置。
【請求項7】
前記イベントは、前記拡張アプリケーションの無効化、及び前記記憶手段が前記VMを記憶しているメモリの記憶領域の枯渇の少なくともいずれかにより発生されることを特徴とする請求項
6に記載の情報処理装置。
【請求項8】
前記拡張アプリケーションの起動は、WebブラウザからのHTTPリクエストによるものであることを特徴とする請求項1乃至
7のいずれか1項に記載の情報処理装置。
【請求項9】
前記拡張アプリケーションの起動は、前記拡張アプリケーションに対応するアイコンの指示によるものであることを特徴とする請求項1乃至
8のいずれか1項に記載の情報処理装置。
【請求項10】
拡張アプリケーションを実行できる情報処理装置を制御する制御方法であって、
拡張アプリケーションを実行するためのVMと前記拡張アプリケーション
がVMを再利用できるかどうかを示す情報とをメモリに記憶する記憶工程と、
拡張アプリケーションの起動時、前記情報に基づいて当該拡張アプリケーションが前記VMを再利用可能かどうか判定する
第1判定工程と、
前記
第1判定工程
により前記拡張アプリケーションが前記VMを再利用可能と判定
された場合、前記VMを再利用可能であると判定された前記拡張アプリケーションの機能と、前記メモリに記憶されているVMを利用する前記拡張アプリケーションの機能
が同じ
であるかどうかを判定する第2判定工程と、
前記第2判定工程により機能が同じであると判定された場合、前記メモリに記憶されているVMを利用して前記拡張アプリケーションを実行するよう制御
し、前記第1判定工程により前記拡張アプリケーションが前記VMを再利用可能でないと判定された場合、或いは前記第2判定工程により機能が同じではないと判定された場合、前記拡張アプリケーションを実行するためのVMを新たに生成し、新たなVMを利用して前記拡張アプリケーションを実行するよう制御する制御工程と、
を有することを特徴とする制御方法。
【請求項11】
コンピュータを、請求項1乃至
9のいずれか1項に記載の情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置とその制御方法、及びプログラムに関する。
【背景技術】
【0002】
画像形成装置に拡張アプリケーションをインストールすることにより、その画像形成装置の機能を拡張できる。この場合、画像形成装置は、その画像形成装置の制御アプリケーションとは別に、拡張アプリケーションを動作させる実行環境を有している。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
画像形成装置にインストールされている拡張アプリケーションを動作させるにはVMが必要である。ここでVMとは、Virtual Machineを指し、これは仮想的に構築された実行環境を示し、拡張アプリケーションを制御するプログラムを理解して実行するモジュールである。このVMはRAM上に構成されるため、リソースの限られている画像形成装置では、VMを常に動作させることは難しい。従って、拡張アプリケーションを起動及び終了させる度に、VMの起動及び終了を行うことになる。しかしながら、このようなVMの起動及び終了処理はオーバーヘッドが大きいため時間を要し、拡張アプリケーションの処理性能の低下を引き起こす原因になっていた。
【0005】
本発明の目的は、上記従来技術の問題点の少なくとも一つを解決することにある。
【0006】
本発明の目的は、拡張アプリケーションの処理性能の低下を抑える技術を提供することにある。
【課題を解決するための手段】
【0007】
上記目的を達成するために本発明の一態様に係る情報処理装置は以下のような構成を備える。即ち、
拡張アプリケーションを実行できる情報処理装置であって、
拡張アプリケーションを実行するためのVM(Virtual Machine)と前記拡張アプリケーションがVMを再利用できるかどうかを示す情報とを記憶する記憶手段と、
前記拡張アプリケーションの起動時、前記情報に基づいて当該拡張アプリケーションが前記VMを再利用可能かどうか判定する第1判定手段と、
前記第1判定手段により前記拡張アプリケーションが前記VMを再利用可能と判定された場合、前記VMを再利用可能であると判定された前記拡張アプリケーションの機能と、前記記憶手段に記憶されているVMを利用する前記拡張アプリケーションの機能が同じあるかどうかを判定する第2判定手段と、
前記第2判定手段により機能が同じであると判定された場合、前記記憶手段に記憶されているVMを利用して前記拡張アプリケーションを実行するよう制御し、前記第1判定手段により、前記拡張アプリケーションが前記VMを再利用可能でないと判定された場合、或いは前記第2判定手段により機能が同じではないと判定された場合、前記拡張アプリケーションを実行するためのVMを新たに生成し、新たなVMを利用して前記拡張アプリケーションを実行するよう制御する制御手段と、を有することを特徴とする。
【発明の効果】
【0008】
本発明によれば、拡張アプリケーションの処理性能の低下を抑えることができる。
【0009】
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
【図面の簡単な説明】
【0010】
添付図面は明細書に含まれ、その一部を構成し、本発明の実施形態を示し、その記述と共に本発明の原理を説明するために用いられる。
【
図1】本発明の実施形態に係る画像形成装置の主要部の構成を説明するブロック図。
【
図2】実施形態に係る画像形成装置における拡張アプリケーションの実行環境の一例を示すブロック図。
【
図3】実施形態に係る画像形成装置のCPUが実行するソフトウェアモジュールの構成図。
【
図4】実施形態に係る画像形成装置を含む印刷システムの構成例を示す図。
【
図5】実施形態に係る画像形成装置の操作部に表示されるメニュー画面の一例を示す図。
【
図6】実施形態に係る画像形成装置にインストールされている拡張アプリケーションのアイコンを取得して表示するアイコン更新処理の流れを説明するシーケンス図。
【
図7】
図6のS603及びS608で、拡張アプリケーションが実行するアイコン情報の生成処理を説明するフローチャート。
【
図8】実施形態に係るフォーム印刷アプリケーションの設定情報の一例を示す図。
【
図9】実施形態で生成したアイコン情報の一例を示す図。
【
図10】
図9のアイコン情報に基づいて操作部に表示されたメニュー画面例を示す図。
【
図11】実施形態に係る画像形成装置に対するRUIからの拡張アプリケーションの設定処理を説明するシーケンス図。
【
図12】実施形態に係る画像形成装置の操作部に表示しているメニュー画面で楽譜アイコンが押下されたときのアプリケーション起動までの処理を説明するシーケンス図。
【
図13】実施形態に係る画像形成装置にインストールされている拡張アプリケーションの情報を管理するテーブルの一例を示す図。
【
図14】実施形態に係る拡張アプリケーションの構成を説明する図。
【
図15】拡張アプリケーションのスクリプトの依存関係の一例を説明する図。
【
図16】実施形態に係る画像形成装置における拡張アプリケーションのアンインストールの処理の流れを説明するシーケンス図。
【
図17】本発明の実施形態におけるアプリケーション起動から終了までのシーケンス図である。
【
図18】実施形態に係る画像形成装置における、拡張アプリケーションにより、ある処理を実行した後のRAM上のVMのデータ構成の一例を示す図。
【
図19】実施形態に係る画像形成装置における、
図17のS1701のVM起動処理を説明するフローチャート。
【
図20】実施形態に係る画像形成装置における、
図17のS1704のVMの終了処理を説明するフローチャート。
【
図21】実施形態に係る画像形成装置において、再利用のために保持しているVMを解放するイベント発生時の処理を説明するフローチャート。
【
図22】実施形態に係る拡張アプリケーションの情報を宣言するMETA情報ファイルの一例を示す図。
【
図23】実施形態に係る画像形成装置のアプリケーション管理部によるMETA情報ファイルのVM再利用宣言の処理を説明するフローチャート。
【発明を実施するための形態】
【0011】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これら複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一もしくは同様の構成に同一の参照番号を付し、重複した説明は省略する。尚、以下に説明する実施形態では、本発明に係る情報処理装置の一例を、例えば複合機などの画像形成装置を例に説明するが、本発明はこのような画像形成装置に限定されるものではない。
【0012】
図1は、本発明の実施形態に係る画像形成装置の主要部の構成を説明するブロック図である。
【0013】
この画像形成装置は、コントローラユニット100を含み、コントローラユニット100には、スキャナ170やプリンタ195が接続され、更にはユーザインタフェースのための操作部112が接続される。コントローラユニット100は、スキャナ170で読み取られた画像データをプリンタ195により印刷するコピー機能を実現するように各部を制御することもできる。
【0014】
コントローラユニット100はCPU101を有し、CPU101は、ROM103に格納されているブートプログラムを実行してストレージ104に格納されているオペレーティングシステム(OS)やプログラムをRAM102に展開する。CPU101は、RAM102に展開されたプログラムを実行することにより、後述する各種処理を実行する。このCPU101の作業領域としてはRAM102が用いられる。RAM102は、前述の作業領域を提供するとともに、画像データを一時記憶するための画像メモリ領域を提供する。ストレージ104は、プログラムや画像データを格納する。
【0015】
CPU101には、システムバス107を介して、ROM103及びRAM102、操作部I/F(操作部インターフェース)106、ネットワークI/F(ネットワークインターフェース)110、USBホストI/F113、画像バスI/F(画像バスインターフェース)105が接続される。操作部I/F106は、タッチパネルを有する操作部112とのインターフェースであり、システムバス107を介して受け取った操作部112に表示すべき画像データを操作部112に出力する。また、操作部I/F106は、操作部112においてユーザにより入力された情報をシステムバス107を介してCPU101に送出する。ネットワークI/F110は、画像形成装置をLANに接続するためのインターフェースである。USBホストI/F113は、USBストレージ114と通信し、CPU101の指示に従ってUSBストレージ114にデータを記憶させたり、USBストレージ114に格納されているデータを入力してシステムバス107に出力する。USBストレージ114は、データを格納する外部記憶装置であり、USBホストI/F113に対して着脱可能である。USBホストI/F113には、USBストレージ114を含む複数のUSBデバイスが接続可能である。
【0016】
画像バスI/F105は、システムバス107と、画像データを高速で転送する画像バス108とを接続し、データ形式を変換するためのバスブリッジとして機能している。画像バス108は、PCIバス又はIEEE1394等によって構成される。画像バス108上には、デバイスI/F120、スキャナ画像処理部180、プリンタ画像処理部190が設けられる。デバイスI/F120には、スキャナ170及びプリンタ195が接続され、デバイスI/F120は、画像データの同期系/非同期系の変換を行う。スキャナ画像処理部180は、スキャナ170から入力した画像データに対し補正、加工、編集を行う。プリンタ画像処理部190は、プリンタ195に出力する画像データに対してプリンタ195に応じた補正、解像度変換などを行う。
【0017】
図2は、実施形態に係る画像形成装置における拡張アプリケーションの実行環境の一例を示すブロック図である。尚、この
図2に示す各モジュールの機能は、CPU101がストレージ104に記憶されているプログラムをRAM102に展開して実行することにより実現される。
【0018】
この画像形成装置は、拡張アプリケーションをアドインして、その機能を拡張できる画像形成装置である。オペレーティングシステムであるOS201上では、プリンタやFAX、スキャナと言った画像処理ユニットを制御するためのネイティブプログラム210と、拡張アプリケーション240の実行環境である仮想マシン(Virtual Machine:VM)230が動作している。VM230は、拡張アプリケーション240を制御するプログラムを理解して実行するモジュールである。拡張アプリケーション240は、必ずVM230上で動作する。VM230で動作するプログラムは、CPU101で動作する命令とは異なり、VM230専用の命令で動作する。この命令をバイトコードと呼ぶ。一方でCPU専用命令をネイティブコードと呼ぶ。VM230がこのバイトコードを逐次解釈し処理することで、CPU101上ではネイティブコードと、VM230のバイトコードが動作する。VM230には、バイトコードをそのまま逐次解釈処理するタイプと、バイトコードをネイティブコードに変換して実行するタイプがある。実施形態に係るVM230は前者のタイプであるが、後者のタイプであってもよい。一般的にCPUの種別が異なると、CPUで動作する命令に互換性が無い様に、VMが異なるとVMで動作する命令も互換性が無い。またこの実施形態に係るVM230は、CPU101上で動作するソフトウェアモジュールであるが、ハードウェアモジュールであってもよい。
【0019】
ネイティブプログラム210には、プリンタやFAX、スキャナと言った画像処理ユニットを制御するためのネイティブスレッド214と、VM230を動かすためのVMスレッド215がある。VMスレッド215は、VM230の数に対応する数存在する。ここでは、VMスレッド211,212,213の3つのスレッドが生成されている。ここではVM A-1(231)と、VM A-2(232)及びVM B-1(233)に対応して3つのVMスレッド211,212,213が存在している。
【0020】
VMシステムサービス220は、拡張アプリケーション240から共通して利用されるユーティリティライブラリである。拡張アプリケーション240からVMシステムサービス220の機能を呼び出すことにより、拡張アプリケーションを開発する手間を省いて、画像形成装置の各モジュールへアクセスすることができる。VMシステムサービス220には、VMとして最低限動作させる標準VMシステムサービス221と、画像形成装置の各モジュールへのアクセスやOSの機能を提供する拡張VMシステムサービス222とが含まれる。また標準VMシステムサービス221は、拡張アプリケーションをロードする機能も含む。VM230が拡張アプリケーションのバイトコードで指示されているAPIを実行することで、そのAPIに関連づけられているVMシステムサービスが呼び出される。拡張アプリケーション240は、拡張VMシステムサービス222を用いて、画像形成装置の構成情報、例えば、印刷可能な用紙サイズのリストや、カラー印刷可能か否か、印刷データの色判定が可能か否か、印刷部数の範囲、などの構成情報を取得できる。また、それらに対応したデフォルト設定値も取得することができる。
【0021】
VM230は、拡張アプリケーション240を実行する。VM230は、拡張アプリケーションのスレッド毎に生成される。この図では拡張アプリケーションA241で2つのスレッドを動かすためのVM A-1(231)と、VM A-2(232)、拡張アプリケーションB242で1つのスレッドを動かすためのVM B-1(233)を生成している。
【0022】
また、画像形成装置の操作部112に表示されるメインメニュー画面には、拡張アプリケーションごとのアイコンが表示される。このアイコンをユーザが選択したことを、操作部112を通じて操作部I/F106が検知すると、操作部I/F106はその旨をCPU101に通知する。その通知を受け取ったCPU101は、ユーザによって選択された拡張アプリケーションを起動する。
【0023】
図3は、実施形態に係る画像形成装置のCPU101が実行するソフトウェアモジュールの構成図である。
【0024】
サーブレットサービス304は、ネットワークI/F110を通してHTTPアクセスされた際に、そのリクエストを受け付け、アクセスされたURLによってモジュール(アプリケーション管理部302か標準機能制御部301)に処理を振り分ける。UI制御部303は、操作部112に画面を表示し、ユーザからの操作を受け付けて、その操作情報を適切なモジュール(アプリケーション管理部302か標準機能制御部301)に通知する。アプリケーション管理部302は、インストールされている拡張アプリケーションのアンインストールや、起動等の管理を行うモジュールである。アプリケーション実行制御部305は、アプリケーション管理部302により起動された拡張アプリケーションの実行制御を行うモジュールである。具体的には、アプリケーション実行制御部305は、VMスレッド215、VMシステムサービス220、VM230、拡張アプリケーション240を制御する。ストレージ制御部306は、画像形成装置の設定情報を記憶及び管理するモジュールである。各モジュールは、ストレージ制御部306にアクセスし、設定値の参照、設定を行う。標準機能制御部301は、画像形成装置の標準機能であるコピーやFAXの制御や、その他の画像形成装置に必要な制御(例えばUSBホストパスI/F113の制御)を行うモジュールである。
【0025】
図4は、実施形態に係る画像形成装置を含む印刷システムの構成例を示す図である。この印刷システムは、画像形成装置401、ネットワークルータ402、外部装置403を有している。尚、画像形成装置401は、
図1に示す画像形成装置に対応している。
【0026】
外部装置403は、ネットワークを介して接続されている画像形成装置401に対し、インストーラを介した拡張アプリケーションのインストールを行う。またブラウザで画像形成装置401と接続し、拡張アプリケーションの設定変更などを行う。ネットワークルータ402は、画像形成装置401と、外部装置403との通信を仲介する。画像形成装置401は、外部装置403からの拡張アプリケーションのインストール要求に対して、拡張アプリケーションのインストール処理の実行や、HTTPリクエストに対するHTTPレスポンスを返す。
【0027】
図5は、実施形態に係る画像形成装置401の操作部112に表示されるメニュー画面の一例を示す図である。
【0028】
画像形成装置401には、コピー、FAX、Send(スキャンにより得られた画像データの送信)機能がある。これら機能を呼び出すためのアイコン501~503が操作部112の画面上に表示される。ユーザが操作部112を操作して、所望の目的の機能に対応するアイコンを押下すると、その機能を行うための画面に表示が切り替わる。尚、
図5に示す画面のアイコンは、いずれも画像形成装置401が本来有しているネイティブプロ
グラムによる機能に対応している。
【0029】
図6は、実施形態に係る画像形成装置401にインストールされている拡張アプリケーションのアイコンを取得して表示するアイコン更新処理の流れを説明するシーケンス図である。ここでは、事前にアプリケーション1、アプリケーション2の2つの拡張アプリケーションがインストールされている状態で説明する。
【0030】
アプリケーション管理部302はS601で、アプリケーション1を起動するためにVMの起動処理を実行する。次にS602でアプリケーション管理部302は、起動準備が整ったアプリケーション1に対してアイコン情報を要求する。これによりアプリケーション1は、その要求に従って、アイコン情報を生成するために、
図7のフローチャートで示すアイコン情報の生成処理を実行する。この処理は
図7を参照して後述する。次にS604でアプリケーション1は、S603で生成したアイコン情報を使用してアイコン情報を登録して、アプリケーション1による処理を終了する。これによりアプリケーション管理部302は、アプリケーション1のアイコン情報を取得することができる。次にS605でアプリケーション管理部302は、アプリケーション1の処理終了を受けて、VMの終了処理を行う。以上説明したS601~S605の処理によって、アプリケーション1のアイコン情報がアプリケーション管理部302に登録される。
【0031】
続いてS606~S610で、アプリケーション管理部302は、残りのアプリケーション2に対して、前述のアプリケーション1に対する処理と同様の処理を実行して、アプリケーション2のアイコン情報を取得する。
【0032】
こうしてアプリケーション管理部302は、インストールされている全ての拡張アプリケーションのアイコン情報を取得した後S611で、UI制御部303に対して各拡張アプリケーションに対応するアイコンの表示要求を行う。
【0033】
図7は、
図6のS603及びS608で、拡張アプリケーションが実行するアイコン情報の生成処理を説明するフローチャートである。ここでは拡張アプリケーションの例として、ユーザが登録したフォーム画像データを印刷するフォーム印刷アプリケーションのアイコン情報の生成処理を例に説明する。尚、拡張アプリケーションごとに細かい処理内容は異なるが、基本的な処理はここで示すステップの処理と同じになる。尚、ここで説明するフォーム印刷アプリケーションには、既にユーザによって
図8で示すフォーム印刷設定が登録されていることを前提とする。ここで、「楽譜」フォームは、拡張アプリケーションのサンプルとして予め登録されているフォームであり、「申請書」フォームは、ユーザが登録したフォームとする。また
図7のフローチャートで示す処理は、CPU101がRAM102に展開したプログラムを実行することにより達成されるため、ここではCPU101を処理の主体として説明する。
【0034】
先ずS701でCPU101は、アイコン情報を生成するためにストレージ制御部306として機能することにより、ストレージ104から拡張アプリケーションの設定情報を読み出す。具体的には、例えば
図8に示すような拡張アプリケーションの設定情報を読み出す。
【0035】
図8は、実施形態に係るフォーム印刷アプリケーションの設定情報の一例を示す図である。
【0036】
フォーム印刷アプリケーションは、この設定に応じて処理を行う。フォーム名801は、フォームの内容を示す名称であり、ユーザにより登録される。ここではフォーム名として「楽譜」及び「申請書」が登録されている。ボタンID802は、アイコンを識別するIDであり、押下されたボタンを識別する際に使用される。フォーム画像ファイル803は、フォーム印刷で印刷する対象の画像ファイルを示し、これはユーザにより登録される。ここでは「楽譜」のフォームの画像ファイルは「score.dat」、「申請書」のフォームの画像ファイルは「SYORUI.dat」となっている。印刷設定804は、フォームを印刷する際のカラーモードや部数などをまとめた情報であり、ユーザにより登録される。ここでは「楽譜」の印刷設定は、ファイル「Setting1.dat」に記憶されており、「申請書」の印刷設定は、ファイル「Setting2.dat」に記憶されている。アイコン画像ファイル805は、アイコンの画像を保持するファイルであり、ユーザにより登録される。ここでは「楽譜」のアイコン画像は、ファイル「Icon1.dat」に記憶されており、「申請書」のアイコン画像は、ファイル「Icon2.dat」に記憶されている。ローカライズ806は、アイコンのタイトルをローカライズする際に利用される情報である。ここでは、拡張アプリケーションが予め用意したサンプルフォーム「楽譜」をローカライズする際に参照する情報としてファイル「Localize.dat」が指定されている。尚、ユーザが登録するフォームには、ローカライズ情報はない。従って、フォーム「申請書」には、ローカライズ情報が存在していない。表示位置807は、アイコンを表示する位置を指定する。ここではフォーム「楽譜」のアイコンの表示位置は先頭に、フォーム「申請書」のアイコンの表示位置は末尾に設定されている。また利用可能ユーザ808は、このフォームを利用できるユーザを示し、フォーム「楽譜」は全てのユーザが利用可能で、フォーム「申請書」は、ユーザAのみが利用できる。
【0037】
次にS702に進みCPU101は、拡張アプリケーションの設定情報に設定されている登録ボタンの設定の有無を確認する。ここで設定が無い場合は、この処理を終了し、設定がある場合はS703に進む。
図8の例では、2つのフォームの設定情報があるため、まず最初に「楽譜」のアイコン情報を生成するためにS703に進む。S703でCPU101は、アイコンのタイトルをローカライズするために、この画像形成装置401に設定されている表示言語の設定を取得する。次にS704に進みCPU101は、ログインしたユーザに応じたカスタマイズを行うため、この画像形成装置401にログインしているユーザの情報を取得する。ここでは、取得したユーザの情報を「ユーザA」とする。
【0038】
次にS705に進みCPU101は、S703で取得した表示言語の設定に応じてアイコンのタイトルをローカライズする。ここで「楽譜」のフォームは、拡張アプリケーションに予め登録されているフォームであり、アイコンのタイトルをローカライズするための情報を、その拡張アプリケーションが予め用意しているため、その情報に従って表示言語の設定に応じたローカライズを行う。次にS706に進みCPU101は、ボタンID、アイコンの画像情報、表示位置を設定する。
図8の「楽譜」フォームでは、ボタンIDは「0」、アイコン画像ファイルは「Icon1.dat」、その表示位置は先頭となる。こうして「楽譜」フォームのアイコンの表示用の画像データと、その表示位置が定まる。そしてS707に進みCPU101は、ログインユーザに応じたカスタマイズを行ってS708に進む。
【0039】
フォーム印刷アプリケーションでは、フォーム毎に、どのユーザが利用可能であるかを設定する利用可能ユーザ808を持つ。従って、S707では、この利用可能ユーザ808に設定されているユーザと、S704で取得した現在ログインしているユーザの情報とを比較し、そのユーザの情報が利用可能ユーザ808の条件を満たしているときは、そのフォームのアイコン情報を生成する。一方、利用可能ユーザ808の条件を満たしていない場合は、そのアイコン情報を破棄する。
【0040】
「楽譜」フォームの場合、利用可能なユーザは「全て」であるので、利用可能ユーザ808の条件を満たしているため、そのアイコン情報を生成する。S708でCPU101は、登録ボタンの設定の全てに対して上述の処理を行ったかどうか判定し、全てに対して処理を行っていないときはS705に戻り、次の登録ボタンの設定情報に基づいてアイコン情報を生成する。一方、登録ボタンの設定の全てに対して上述の処理を行ったときは、この処理を終了する。
【0041】
図8の例では、次に「申請書」のフォームがあるためS705に戻る。S705でCPU101は、そのアイコンのローカライズを行うが、「申請書」のフォームはユーザが新しく登録したものでローカライズ情報がないため、ユーザが登録したタイトルをそのまま設定する。次にS706に進みCPU101は、ボタンID、アイコン画像情報、表示位置を設定する。
図8の例では、「申請書」フォームでは、ボタンIDは「1」、アイコン画像ファイルは「Icon2.dat」、表示位置は末尾となっている。次にS707に進みCPU101は、
ログインユーザに応じたカスタマイズを行う。「申請書」フォームでは利用可能なユーザは「ユーザA」だけである。従って、S704で取得したユーザの情報がユーザAであった場合はアイコン情報を生成し、ユーザAでない場合はアイコン情報を生成しない。ここでは、ログインユーザはユーザAであるため、「申請書」フォームのアイコン情報を生成する。そしてS708に進みCPU101は、登録ボタンの設定の全てに対して上述の処理を行ったと判定して、この処理を終了する。
【0042】
図9は、実施形態で生成したアイコン情報の一例を示す図である。
【0043】
アプリケーションID901は、拡張アプリケーションを識別するIDである。各拡張アプリケーションには、拡張アプリケーションの開発時にIDが割り振られる。ボタンID902は、ボタンを識別するIDである。アイコンタイトル903は、アイコンを表示する際のタイトルを示す。表示位置904は、アイコンの初期表示位置を示す。その位置は、先頭か末尾を指定する。アイコン画像情報905は、アイコン画像の画像データを記憶しているファイルで、
図8のアイコン画像ファイル805に対応している。尚、前述したように、
図7の説明で、S704で取得したユーザの情報がユーザAでない場合、申請書フォームのアイコン情報は存在しない。
【0044】
図10は、
図9のアイコン情報に基づいて操作部112に表示されたメニュー画面例を示す図である。尚、
図5と共通するアイコンは同じ参照番号で示している。
【0045】
ここでは、
図5に示した標準機能のコピー501、FAX502、Send503のアイコン以外に、楽譜アイコン1001、申請書アイコン1005が追加されている。ここで、楽譜アイコン1001は先頭に配置され、申請書アイコン1005は末尾に配置されている。これらは、アイコン情報の表示位置807の指定に従って配置されたものである。
【0046】
図11は、実施形態に係る画像形成装置401に対するRUIからの拡張アプリケーションの設定処理を説明するシーケンス図である。ここでは拡張アプリケーションの例として、ユーザが登録したフォーム画像データを印刷するフォーム印刷アプリケーションのアイコン情報の生成処理で説明する。尚、拡張アプリケーションによって細かい処理内容は異なるが、基本的な処理はここで示すステップと同じ処理になる。
【0047】
拡張アプリケーションの設定は、外部装置403上で動作するWebブラウザから画像形成装置401に接続し、Webブラウザを介して設定を行う。まずS1101で、Webブラウザから、サーブレットサービス304に拡張アプリケーションを設定するための設定用URLの情報を通知し、サーブレット処理を要求する。これによりS1102でサーブレットサービス304は、アプリケーション管理部302に、サーブレット処理を依頼する。これによりアプリケーション管理部302はS1103で、リクエストされているURLから該当する拡張アプリケーションを特定し、その拡張アプリケーションのVMの起動処理を行う。次にS1104でアプリケーション管理部302は、アプリケーションサーブレットを実行する。このとき、Webブラウザから通知されたURLの情報をアプリケーションに通知する。
【0048】
これによりS1105で拡張アプリケーションは、要求されたURLのリクエストに対するレスポンス処理を行う。ここでは、設定用URLに対するHTMLリソースを返す準備を行う。このHTMLリソースには、フォーム印刷処理に必要な
図8に示す情報を参照・設定するためのHTML FORM が記述されている。そしてS1106で拡張アプリケーションは、準備したHTMLリソースをアプリケーション管理部302にレスポンスして拡張アプリケーションを終了する。
【0049】
これによりアプリケーション管理部302はS1107で、受けたレスポンスをそのままサーブレットサービス304にレスポンスする。続いてS1108でアプリケーション管理部302は、拡張アプリケーションの終了を受けてVMの終了処理を行う。
【0050】
またサーブレットサービス304はS1109で、受けたレスポンスをそのままWebブラウザに対してレスポンスする。こうしてユーザはS1110で、Webブラウザに表示された画面を編集して、拡張アプリケーションの設定を変更する。ここでは、新しく印刷フォームを登録したとする。そしてWebブラウザはS1111で、ユーザの操作に応じて設定情報の登録リクエストをサーブレットサービス304に送信する。これによりサーブレットサービス304はS1112で、アプリケーション管理部302に、その処理を依頼する。そしてアプリケーション管理部302は前述のS1103~S1108と同様にして、S1113~S1116で、要求されたURLから該当する拡張アプリケーションを特定し、その拡張アプリケーションのアプリケーションサーブレットを実行する。そしてWebブラウザから要求された印刷フォームの設定情報を登録する。
【0051】
そしてアプリケーション管理部302はS1117で、拡張アプリケーションから受けたレスポンスをそのままサーブレットサービス304にレスポンスする。またサーブレットサービス304はS1118で、受けたレスポンスをそのままWebブラウザにレスポンスする。
【0052】
更に、拡張アプリケーションはS1119で、登録したフォームのアイコンを画像形成装置401に登録するために、アプリケーション管理部302にアイコン情報の更新通知を送信して、拡張アプリケーションを終了する。これによりアプリケーション管理部302は、その拡張アプリケーション終了を受けてS1120でVMの終了処理を実行する。次にS1121でアプリケーション管理部302は、アイコンの更新処理を行う。
【0053】
図12は、実施形態に係る画像形成装置の操作部112に表示しているメニュー画面で楽譜アイコン1001が押下されたときの拡張アプリケーションの起動までの処理を説明するシーケンス図である。
【0054】
S1201でユーザがアイコンを押下すると、UI制御部303が、そのアイコンの押下を検出する。次にS1202でUI制御部303は、押下されたアイコンのアイコン情報から、アプリケーションIDとボタンIDとを取得し、アプリケーション管理部302に対して、アプリケーションIDとボタンIDを渡すとともに、拡張アプリケーションの起動要求を行う。楽譜アイコン1001の場合は、アプリケーションIDが「1」でボタンIDは「0」である。このときアプリケーション管理部302は、起動要求されたアプリケーションIDと一致する拡張アプリケーションを
図13に示すアプリケーションID管理テーブルから取得する。そしてS1203で、該当する拡張アプリケーションを起動するためのVMの起動処理を行う。次にS1204でアプリケーション管理部302は、起動した拡張アプリケーションにボタンID情報を渡して処理を依頼する。
【0055】
このとき
図13から、アプリケーションID「1」にマッチするのはアプリケーション1である。アプリケーションが起動するとS1205で、渡されているボタンID情報から、どのボタンが押されたかを認識し、そのボタンに応じた処理を行う。フォーム印刷アプリケーションの場合、
図8に示す設定情報を読み出し、ボタンID「0」にマッチする設定を取得する。そして、ボタンID「0」に設定されているフォーム画像ファイル「score.dat」の画像データを、印刷設定「Setting1.dat」に従って印刷する。こうして印刷処理が終了した後、その拡張アプリケーションを終了する。この拡張アプリケーションの終了を受けるとアプリケーション管理部302は、S1206でVMの終了処理を行う。
【0056】
図13は、実施形態に係る画像形成装置401にインストールされている拡張アプリケーションの情報を管理するテーブルの一例を示す図である。
【0057】
アプリケーションID1301は、インストールされている拡張アプリケーションを識別するIDを保持する。アプリケーション1302は、アプリケーションIDに対応する拡張アプリケーションが何かを示す。この情報は、アプリケーションのインストール、アンインストール時に更新される。
【0058】
図14は、実施形態に係る拡張アプリケーションの構成を説明する図である。
【0059】
拡張アプリケーションは、それぞれがスクリプトと呼ばれるVM用で動作させる専用の言語で記載された複数のファイルを有している。拡張アプリケーションは、スクリプトによって制御され、スクリプトの数は、各拡張アプリケーションごとに異なる。また各スクリプトは機能ごとに分割され、その拡張アプリケーションの一つの機能を実現するためにつ以上のスクリプトが利用される。
【0060】
図15は、拡張アプリケーションのスクリプトの依存関係の一例を説明する図である。
【0061】
一般的に、PCでアプリケーションを実行する場合、実行可能ファイルの全体を読み込み、それをメモリに展開してから実行する。一方で、画像形成装置401では、PCの様にメモリリソースが潤沢ではないため、拡張アプリケーションを機能ごとの複数のスクリプトに分割して構成している。そして、拡張アプリケーションの処理に必要な機能を持つスクリプトを随時、RAM102にロードして実行する。このように構成することで、拡張アプリケーションを実行するため必要なメモリリソースの削減を図っている。
【0062】
図15に示すように、スクリプトsub1をロードして実行すると、そのスクリプトの実行中にスクリプトsub4、スクリプトsub5、スクリプトsub6がロードされる。またスクリプトsub2をロードして実行すると、スクリプトsub3、スクリプトsub6がロードされる。またスクリプトsub3をロードして実行すると、スクリプトsub1、スクリプトsub7がロードされる。
【0063】
これらスクリプトの依存関係は拡張アプリケーションごとに異なり、この例のスクリプトsub1、スクリプトsub3の様に、同じスクリプトが複数ロードされることもある。また、同じ拡張アプリケーションでも、処理する内容によって、ロードするスクリプトが異なる。尚、サブスクリプトのロードは、必要なときに随時行われるため、拡張アプリケーションの起動タイミングと、サブスクリプトのロードまでに時間を要することもある。
【0064】
図16は、実施形態に係る画像形成装置401における拡張アプリケーションのアンインストールの処理の流れを説明するシーケンス図である。
【0065】
アプリケーション管理部302はS1601で、対象とする拡張アプリケーションの無効化を行う。次にアプリケーション管理部302はS1602で、その無効化した拡張アプリケーションのアイコンを更新するためにアイコンの更新処理を行う。次にアプリケーション管理部302はS1603で、対象の拡張アプリケーションに対して、終了要求を出す。これにより拡張アプリケーションは、その終了要求を受けてS1604で処理を終了し、アプリケーション管理部302に、アプリケーションの終了を通知する。これによりアプリケーション管理部302はS1605で、その拡張アプリケーションの処理終了を受けて、拡張アプリケーションのデータの削除を行う。この処理によって、拡張アプリケーションの無効化、アイコンの更新、拡張アプリケーションのアンインストールが行われる。
【0066】
図17は、実施形態に係る画像形成装置401における拡張アプリケーションの起動から終了までの処理に注目したシーケンス図である。
【0067】
前述したように、拡張アプリケーションの実行、S1701で、VMの起動処理を実行する。この起動処理によって、RAM102上にVMが生成され、生成されたVMに拡張アプリケーションのスクリプトがロードされる。そしてS1702で、そのロードされたスクリプトが実行される。これにより、関連するスクリプトが順次ロードして実行されて拡張アプリケーションが実行される。そして拡張アプリケーションが終了するとS1704で、VMの終了処理を実行する。このVMの終了処理によって、RAM102上に生成されたVMが解放される。
【0068】
この処理は、拡張アプリケーションの機能を実行する毎に行われる。例えば、
図11で示すWebサーブレットでは、1つのHTTPアクセス毎にこの処理を行っている。現在の多くのWebページは、一見単純なWebページでも複数のHTTPアクセスを必要とすることが知られている。この場合、1つのHTTPアクセスに掛かる時間が大きい程、Webページの更新に掛かる時間が長くなり、ユーザの使い勝手は悪くなる。また、
図11のWebサーブレットに限らず、
図17で示す処理の時間が短い方が画像形成装置401の性能は向上する。そこでS1701のVM起動処理と、S1704のVMの終了処理に、実行時間を短くするための処理を施す。その処理とは、VMの再利用である。即ち、一度実行にしたVMを解放せずに再利用することで、VMの生成やスクリプトのロードに要する時間を短縮できる。しかし、単にVMを再利用するだけでは、セキュリティ上の問題や、メモリ枯渇の問題があるため、それら問題を回避しつつ、再利用可能な方法を提案する。
【0069】
図18は、実施形態に係る画像形成装置401における、拡張アプリケーションにより、ある処理を実行した後のRAM102上のVMのデータ構成の一例を示す図である。
【0070】
VM1800内には、ロードされたスクリプト群1801と、スクリプトによってセットされた作業用データ1802とが保持されている。この状態でVMを解放せずにVMを再利用することで、VMの生成処理、スクリプトのロード処理をスキップして
図17の処理時間を短縮する。尚、この
図18が示す通り、再利用するVM内には、作業用データ1802が保持された状態である。VMを再利用せずに、VMを最初から生成する場合、このデータは全てクリアされている状態である。多くの拡張アプリケーションでは、作業用データ1802がクリアされた状態でスクリプトが動作することを想定している。従って、再利用したVM内に残る作業用データ1802によって、スクリプトが想定外の動作となり、不具合を起こす可能性がある。そこで、全ての拡張アプリケーションでVMの再利用をするのでなく、再利用しても問題が無いかどうかを、予め拡張アプリケーション側で宣言し、その宣言によってVMの再利用処理を切り替える。
【0071】
図19は、実施形態に係る画像形成装置401における、
図17のS1701のVM起動処理を説明するフローチャートである。VM起動処理は、所定の拡張アプリケーションを実行するためのVMを準備するための処理である。尚、このフローチャートで示す処理は、CPU101がRAM102に展開したプログラムを実行することにより達成されるため、ここではCPU101を処理の主体として説明する。
【0072】
まずS1901でCPU101は、所定の拡張アプリケーションのVMの再利用が可能かどうかの宣言を確認する。この宣言は前述の通り、拡張アプリケーションがVMの再利用可能かどうかを予め宣言しており、アプリケーション管理部302に拡張アプリケーションを登録する際に、拡張アプリケーションに紐付けて登録している。S1901でCPU101は、再利用可能な拡張アプリケーションであればS1902に進み、再利用できなければS1903に進む。S1902では、再利用できるように保持しているVMの中に、条件に一致するVMがあるかどうかを調べる。ここで調べる条件は、保持しているVMのアプリケーションIDが同じであり、実行する機能が同じであることとする。ここで機能とは、
図6で示すアイコンの登録処理、
図11で示すサーブレット処理、
図12で示すメニュー画面でアイコンが押下されたときの処理のいずれかである。S1902でCPU101は、条件が一致するVM、即ち、再利用できるVMが存在すればS1905に進み、そうでなければS1903に進む。S1903でCPU101は、VMが再利用できないため、従来と同様に新しくVMを生成する。そしてS1904に進みCPU101は、実行する機能を制御するためのスクリプトをロードして、この処理を終了する。一方、S1905でCPU101は、条件が一致する、再利用できるVMが存在したため、新たにVMを生成することなく、保持しておいたVMを再利用して処理を終了する。
【0073】
尚、VMを再利用できる拡張アプリケーションが複数存在する場合、各拡張アプリケーションごとに使用するVMを例えばIDなどで管理する。また同じ拡張アプリケーションであっても、VMを利用する拡張アプリケーションの機能ごとに、再利用するVMを切り替える。即ち、例えば拡張アプリケーションのアイコンの登録処理と、アイコンの指示に伴う拡張アプリケーションの実行時では、同じ拡張アプリケーションであっても再利用するVMが異なる。
【0074】
図20は、実施形態に係る画像形成装置401における、
図17のS1704のVMの終了処理を説明するフローチャートである。尚、このフローチャートで示す処理は、CPU101がRAM102に展開したプログラムを実行することにより達成されるため、ここではCPU101を処理の主体として説明する。
【0075】
まずS2001でCPU101は、所定のアプリケーションがVMを再利用可能なアプリケーションかどうかを調べ、再利用可能であればS2002に進み、再利用不可能であればS2003に進む。S2002でCPU101は、VMを再利用できるように、そのVMを解放せずに保持して、この処理を終了する。一方、S2003でCPU101は、VMを解放して、処理を終了する。
【0076】
図21は、実施形態に係る画像形成装置401において、再利用のために保持しているVMを解放するイベント発生時の処理を説明するフローチャートである。VMを保持して再利用することで
図17の処理時間を短縮することができるが、その一方で、VMの保持はRAM102の圧迫や、意図しない拡張アプリケーションの不具合に繋がる可能性がある。そこで、VMを解放するイベントを設定し、そのイベントの発生時にVMを解放するようにしている。尚、このフローチャートで示す処理は、CPU101がRAM102に展開したプログラムを実行することにより達成されるため、ここではCPU101を処理の主体として説明する。
【0077】
まずS2101でCPU101は、VMの解放イベントが発生しているかどうかを判定する。VMの解放イベントには、拡張アプリケーションの無効化、メモリの記憶領域の枯渇が含まれる。VM解放イベントが発生していると判定するとS2102に進みCPU101は、保持しているVMを解放して、この処理を終了する。一方、VM解放イベントが発生していないと判定すると、この処理を終了する。
【0078】
こうして保持しているVMが解放されると、そのVMが展開されていたRAM102のメモリエリア(記憶領域)が解放されて、利用できるようになる。
【0079】
図22は、実施形態に係る拡張アプリケーションの情報を宣言するMETA情報ファイルの一例を示す図である。
【0080】
このMETA情報ファイルは、拡張アプリケーションがどのようなアプリケーションであるかを宣言するものであり、拡張アプリケーションごとに存在する。アプリケーション管理部302によって、起動時、或いは拡張アプリケーションのインストール時に、このMETA情報ファイルが読み込まれ、その情報が登録される。ここで、参照番号2201は、アプリケーション識別IDを示し、拡張アプリケーションの識別に利用される。参照番号2202は、拡張アプリケーションの名前を示し、拡張アプリケーション名を表示する際に利用される。参照番号2203は、拡張アプリケーションのバージョンを示し、拡張アプリケーションのバージョン管理に利用される。参照番号2204は、拡張アプリケーションがVMを再利用可能なアプリケーションかどうかを宣言する。
図22の例では、VMを再利用可能であることが宣言されている。
【0081】
図23は、実施形態に係る画像形成装置401のアプリケーション管理部302によるMETA情報ファイルのVM再利用宣言の処理を説明するフローチャートである。尚、このフローチャートで示す処理は、CPU101がRAM102に展開したプログラムを実行することにより達成されるため、ここではCPU101を処理の主体として説明する。
【0082】
まずS2301でCPU101は、
図22の参照番号2204で示すVM再利用宣言の情報があるかどうかを判定する。この情報が存在するときはS2302に進み、そうでないときはS2304に進む。S2302でCPU101は、その宣言の内容が再利用可能かどうかを判定し、再利用可能であればS2303に進み、再利用不能であればS2304に進む。S2303でCPU101は、その拡張アプリケーションがVMを再利用可能であるとして登録して、この処理を終了する。一方、S2304でCPU101は、その拡張アプリケーションがVM再利用不可であるとして登録して、この処理を終了する。
【0083】
このように処理することで、VM再利用機能がサポートされる前から存在する拡張アプリケーションを、従来通りに動作させることができ、拡張アプリケーションが不正な動作になることを防ぐことができる。
【0084】
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0085】
本発明は上記実施形態に制限されるものではなく、本発明の精神及び範囲から逸脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
【符号の説明】
【0086】
100…コントローラユニット、101…CPU、102…RAM、112…操作部、215…VMスレッド、220…VMシステムサービス、240…拡張アプリケーション、302…アプリケーション管理部、304…サーブレットサービス、401…画像形成装置