以下、本発明の実施の形態について、図面を用いて説明する。
まず、本発明の一実施の形態に係る電子機器としての画像形成装置の構成について説明する。
図1は、本実施の形態に係る画像形成装置10のハードウェアのブロック図である。
図1に示すように、画像形成装置10は、種々の操作が入力される例えばボタンなどの操作デバイスである操作部11と、種々の情報を表示する例えばLCD(Liquid Crystal Display)などの表示デバイスである表示部12と、画像データに対して例えば、拡大、縮小、濃度調整、階調調整、画像改善などの各種の画像処理を実行する例えばGPU(Graphics Processing Unit)などの画像処理デバイスである画像処理部13と、用紙などの記録媒体に画像を印刷する印刷デバイスであるプリンター14と、原稿から画像を読み取る読取デバイスであるスキャナー15と、LAN(Local Area Network)、インターネットなどのネットワーク経由で、または、ネットワークを介さずに有線または無線によって直接に、外部の装置と通信を行う通信デバイスであるネットワーク通信部16と、図示していない外部のファクシミリ装置と公衆電話回線などの通信回線経由でファックス通信を行うファックスデバイスであるファックス通信部17と、各種の情報を記憶する例えば半導体メモリー、HDD(Hard Disk Drive)などの不揮発性の記憶デバイスである記憶部18と、画像形成装置10全体を制御する制御部19とを備えているMFP(Multifunction Peripheral)である。
記憶部18は、画像形成装置10の各ハードウェアを制御するための例えばLinux(登録商標)などの汎用OS(Operating System)用のプログラム(以下「汎用OS用プログラム」という。)18aを記憶している。
記憶部18は、画像形成装置10のファームウェア18bを記憶している。
記憶部18は、画像形成装置10の標準の機能以外の機能を実現するためのプログラムである拡張用プログラム18cを記憶している。
記憶部18は、画像形成装置10の標準の機能以外の機能を実現するアプリケーションである拡張アプリ用のプログラム(以下「拡張アプリ用プログラム」という。)18dを記憶している。記憶部18は、拡張アプリ毎に拡張アプリ用プログラムを記憶可能である。
記憶部18は、画像形成装置10の標準の機能を実現するアプリケーションである標準アプリを利用せずに汎用OSを利用するサービスを拡張アプリに提供する拡張サービス用のプログラム(以下「拡張サービス用プログラム」という。)18eを記憶している。記憶部18は、拡張サービス毎に拡張サービス用プログラムを記憶可能である。
制御部19は、例えば、CPU(Central Processing Unit)19aと、プログラムおよび各種のデータを記憶しているROM(Read Only Memory)19bと、CPU19aの作業領域として用いられるメモリーとしてのRAM(Random Access Memory)19cとを備えている。CPU19aは、記憶部18またはROM19bに記憶されているプログラムを実行する。
制御部19は、記憶部18またはROM19bに記憶されているプログラムを実行することによって、図2に示す制御構成を実現する。
図2は、画像形成装置10の制御構成のブロック図である。
図2に示すように、制御部19は、汎用OS用プログラム18a(図1参照。)を実行することによって、汎用OS110を実現する。
制御部19は、汎用OS110上で動作して、画像処理に関するサービスを提供する画像処理サービス121と、汎用OS110上で動作して、ネットワーク経由の通信に関するサービスを提供するネットワーク通信サービス122と、汎用OS110上で動作して、画像形成装置10の各ハードウェアを操作するサービスを提供するデバイス操作サービス123とを、ファームウェア18b(図1参照。)を実行することによって実現する。画像処理サービス121、ネットワーク通信サービス122およびデバイス操作サービス123は、それぞれ、汎用OS110を介して画像形成装置10の各ハードウェアを制御する。
画像処理サービス121は、例えば、スキャナー15で解像度や色などを設定して原稿から読み取った画像データを記憶部18に記憶し、記憶部18に記憶されている画像データを画像処理部13に画像処理させるサービスを提供しても良い。画像処理サービス121は、プリンター14で印刷する画像データをファイルに基づいて描画するサービスを提供しても良い。画像処理サービス121は、拡張アプリから取得した画像データ、スキャナー15によって原稿から読み取った画像データ、または、記憶部18に記憶されている画像データに対して、拡大、縮小、回転、色変換、ノイズ除去、フォーマット変換、文字認識、透かし認識などの画像処理を実行するサービスを提供しても良い。
ネットワーク通信サービス122は、TCP/IPやUDPなどの各種のプロトコルを用いてネットワーク通信部16経由でファイルの送受信、ストリーミング、認証データの送受信を実行するサービスを提供しても良い。例えば、ネットワーク通信サービス122は、スキャナー15によって原稿から読み取った画像データや、記憶部18に記憶されているファイルを送受信することも可能である。なお、ネットワーク通信サービス122は、ファックス通信部17によってファクシミリ送受信した画像データの送受信、ICカードや生体認証によってユーザーを認証するユーザー認証部が画像形成装置10に存在する場合にはユーザー認証部によるユーザー認証の結果の送受信、画像形成装置10にカメラが存在する場合にはカメラによって生成された映像データの送受信などを行うことも可能である。また、ネットワーク通信サービス122は、画像形成装置10の各部の状態、各部の機能の呼び出しの結果などについても、送受信可能である。
デバイス操作サービス123は、表示部12への描画、プリンター14の駆動、ファックス通信部17の制御、ユーザー認証、画像形成装置10の各ハードウェアのステータスの取得などの処理を実行するサービスを提供しても良い。デバイス操作サービス123は、例えば、スキャナー15によって原稿から読み取った画像データを記憶部18に記憶するサービスを提供しても良いし、表示部12に表示されるブラウザー上に画像を描画するサービスを提供しても良いし、画像データをプリンター14に送信して画像形成させるサービスを提供しても良いし、記憶部18に記憶されている画像データをファックス通信部17によってファクシミリ送信させるサービスを提供しても良い。デバイス操作サービス123は、例えばフィニッシャーなどのオプション機器が画像形成装置10に存在する場合には例えば製本やステープルなどの処理をオプション機器に実行させるサービスを提供しても良いし、ICカードや生体認証によってユーザーを認証するユーザー認証部が画像形成装置10に存在する場合にはユーザー認証部にユーザー認証を実行させるサービスを提供しても良いし、画像形成装置10にカメラが存在する場合にはカメラに映像データの生成を実行させたり、カメラによって生成された映像データに基づいた視線検出などの各機能を呼び出したりするサービスを提供しても良い。デバイス操作サービス123は、例えばプリンター14の搬送部のモーターの一つを駆動させるといった、画像形成装置10の各ハードウェアの詳細な制御を実行するサービスを提供しても良い。デバイス操作サービス123は、画像形成装置10の各部の状態を取得するサービスを提供しても良い。
制御部19は、画像処理サービス121、ネットワーク通信サービス122およびデバイス操作サービス123を呼び出すためのインターフェイスを提供するプラットフォームサービスIF部130を、ファームウェア18bを実行することによって実現する。
制御部19は、ファームウェア18bを実行することによって標準アプリを実現する。標準アプリは、プラットフォームサービスIF部130上で動作して、画像形成装置10の各ハードウェアを利用する。例えば、制御部19は、操作部11に入力された指示に応じてスキャナー15によって原稿から画像を読み取って、読み取った画像をプリンター14によって印刷するコピーを実現する標準アプリであるコピーアプリ141と、ネットワーク通信部16によって受信した、例えばPDL(Page Description Language)で記述されたデータなどのデータに基づいた画像をプリンター14によって印刷する標準アプリであるプリンターアプリ142と、操作部11に入力された指示に応じてスキャナー15によって原稿から画像を読み取って、読み取った画像をファックス通信部17によって送信する標準アプリであるFAXアプリ143と、操作部11に入力された指示に応じてスキャナー15によって原稿から画像を読み取って、読み取った画像をネットワーク通信部16によって送信する送信アプリ144とを実現する。プリンターアプリ142は、操作部11に入力された指示に応じて記憶部18に記憶されているファイルに基づいた画像をプリンター14によって印刷しても良い。FAXアプリ143は、ネットワーク通信部16によって受信したファイルに基づいた画像をファックス通信部17によって送信したり、ファックス通信部17によって受信した画像をプリンター14によって印刷したり、ファックス通信部17によって受信した画像を記憶部18に記憶したりしても良い。
制御部19は、プラットフォームサービスIF部130を介さずに汎用OS110を利用するサービスを提供する汎用OSサービス基盤150を、拡張用プログラム18c(図1参照。)を実行することによって実現する。汎用OSサービス基盤150は、例えば、汎用OS110上にデバイスドライバーやスクリプトなどの制御プログラムをインストールするなど、汎用OS110に機能を追加するサービスを提供しても良い。
制御部19は、拡張アプリ側からプラットフォームサービスIF部130を利用するためのインターフェイスを提供する拡張アプリサービスIF部160を、拡張用プログラム18cを実行することによって実現する。
制御部19は、標準アプリを利用して画像形成装置10の標準の機能を拡張アプリに提供するサービスである標準機能サービス170を、拡張用プログラム18cを実行することによって実現する。標準機能サービス170は、拡張アプリサービスIF部160を介して標準アプリを利用する。例えば、拡張アプリは、標準機能サービス170を利用することによって、コピーアプリ141によるコピーの開始の画面を表示部12に表示することができる。また、拡張アプリは、標準機能サービス170を利用することによって、拡張アプリ自身が取得したり、操作部11を介して指定されたりした各種ジョブデータやファイルなどをプリンターアプリ142に印刷させることができる。また、拡張アプリは、標準機能サービス170を利用することによって、FAXアプリ143によって受信されたファクシミリの画像データのうち、操作部11を介して指定された画像データを取得したり、操作部11を介して指定されたファイルなどをFAXアプリ143に送信させたりすることができる。
制御部19は、画像形成装置10の標準の機能以外の機能を提供するサービスである拡張サービスを、拡張サービス用プログラム(図1参照。)を実行することによって実現する。例えば、制御部19は、標準アプリを利用せずにプラットフォームサービスIF部130を利用したり、汎用OSサービス基盤150を利用して汎用OS110を利用したりするサービスを拡張アプリに提供する拡張サービスである拡張機能サービス181と、プラットフォームサービスIF部130を利用せずに汎用OSサービス基盤150を利用して汎用OS110を利用するサービスを拡張アプリに提供する拡張サービスであるバックエンドサービス182とを実現する。拡張機能サービス181は、拡張アプリサービスIF部160を介してプラットフォームサービスIF部130を利用する。制御部19は、拡張機能サービス181以外にも、少なくとも1つの拡張機能サービスを実現可能である。制御部19は、バックエンドサービス182以外にも、少なくとも1つのバックエンドサービスを実現可能である。
拡張機能サービスは、画像形成装置10の標準の機能の拡張の機能を拡張アプリに提供するサービスである。
バックエンドサービスは、バックエンドで稼働するサービスである。バックエンドサービスは、画像形成装置10の標準の機能以外の機能のうち、画像形成装置10の標準の機能の拡張の機能以外の機能を提供するサービスである。バックエンドサービスとしては、例えば、画像形成装置10を監視する機能を提供するサービス、複数の画像形成装置から構成されるシステム全体を監視する機能を提供するサービス、特定のサーバーを監視する機能を提供するサービス、画像形成装置10の印刷枚数を示すカウンターなどの情報を画像形成装置10から収集して、収集した情報を人間が理解することができる形式の情報に変換する機能を提供するサービス、画像形成装置10から出力される情報の形式を旧型のインターフェイスの形式から新型のインターフェイスの形式に変換する機能を提供するサービスが存在する。
制御部19は、拡張サービスの起動、開始および停止など、拡張サービスの管理を実行する拡張サービス管理部190を、拡張用プログラム18cを実行することによって実現する。拡張サービス管理部190は、拡張サービスおよび汎用OSサービス基盤150の状態を監視する。
制御部19は、拡張アプリの起動、開始および停止など、拡張アプリの管理を実行する拡張アプリ管理部200を、拡張用プログラム18cを実行することによって実現する。
制御部19は、拡張アプリ用プログラム18d(図1参照。)を実行することによって、拡張アプリ210を実現する。なお、制御部19は、拡張アプリ210以外にも、少なくとも1つの拡張アプリを実現することが可能である。拡張アプリは、ユーザーが直接的に利用するアプリケーションであり、ユーザーインターフェイスを備えている。利用者は、拡張アプリのユーザーインターフェイスを操作することによって、この拡張アプリが提供する機能を利用することができる。例えば、拡張アプリとしては、OCR(Optical Character Recognition)、監視カメラアプリ、ウォーターマーク作成、請求書作成、社員名簿管理、伝票管理、契約書管理、名刺管理、PDF作成、帳簿管理、グループ管理などの実用アプリでも良いし、汎用OS110上のデバイスドライバーやファームウェアなどの追加変更を行うインストーラーアプリや、その他の管理アプリなどでも良い。拡張アプリは、標準機能サービス170を呼び出して標準アプリを利用して汎用OS110を利用したり、拡張サービスを呼び出して標準アプリを利用せずに汎用OS110を利用したり、汎用OSサービス基盤150を直接呼び出して汎用OS110を利用したりすることが可能である。
図3は、拡張サービス管理部190の構成を示す図である。
図3に示すように、拡張サービス管理部190は、新規の拡張サービスを画像形成装置10に追加する処理の要求、および、画像形成装置10における既存の拡張サービスに対する例えばアップデート、削除などの操作に応じた処理の要求を受け付けるサービス受付部310と、サービス受付部310によって受け付けられた要求に応じた処理を実行するサービス制御部320と、画像形成装置10に新規に追加する拡張サービス用のソフトウェアパッケージをサービス制御部320からの指示に応じて記憶部18の特定の場所に配置するサービスパッケージ・デプロイ部330と、拡張サービスの情報を示すサービス管理情報テーブル340とを備えている。サービス制御部320は、例えば新規の拡張サービスを画像形成装置10に追加する場合に、この拡張サービスの情報をサービス管理情報テーブル340に設定する。
図4は、サービス管理情報テーブル340に設定される情報の一例を示す図である。
図4に示すように、サービス管理情報テーブル340は、拡張サービスの識別情報である拡張サービスID341と、拡張サービスが拡張機能サービスおよびバックエンドサービスのいずれであるかを示すサービスタイプ342と、拡張サービスが利用可能であるRAM19c上のサイズを示す利用可能メモリーサイズ343と、拡張サービスによるCPU19aの使用率の最大値を示すCPU最大使用率344と、拡張サービスがアクセス可能な記憶部18上の範囲を示すアクセス範囲345と、情報を共有するグループを示す情報共有グループ346とを互いに対応付けて登録する。なお、図4は、利用可能メモリーサイズの具体的な値と、CPU最大使用率の具体的な値とが省略して描かれている。
図4に示すサービス管理情報テーブル340において、値が「拡張サービス」である拡張サービスIDに対応付けられている利用可能メモリーサイズおよびCPU最大使用率は、それぞれ、拡張サービスのグループ全体に対する利用可能メモリーサイズおよびCPU最大使用率である。値が「拡張機能サービス」である拡張サービスIDに対応付けられている利用可能メモリーサイズ、CPU最大使用率およびアクセス範囲は、それぞれ、拡張機能サービスのグループ全体に対する利用可能メモリーサイズ、CPU最大使用率およびアクセス範囲である。値が「バックエンドサービス」である拡張サービスIDに対応付けられている利用可能メモリーサイズ、CPU最大使用率およびアクセス範囲は、それぞれ、バックエンドサービスのグループ全体に対する利用可能メモリーサイズ、CPU最大使用率およびアクセス範囲である。なお、サービス管理情報テーブル340において、値が「拡張サービス」、「拡張機能サービス」または「バックエンドサービス」である拡張サービスIDに対応付けられている情報は、新規の拡張サービスを画像形成装置10に追加するより前に予め設定されていることが好ましい。
拡張機能サービスは、画像形成装置10の標準の機能の拡張の機能を拡張アプリに提供するサービスであるので、記憶部18に対するアクセスの機能も画像形成装置10の標準の機能の延長である。そのため、拡張機能サービスは、記憶部18上のデータの不正な抜き出しなどの不正なアクセスを実行する可能性が低い。したがって、図4に示すサービス管理情報テーブル340においては、拡張機能サービスのグループ全体に対するアクセス範囲として、「全ての範囲」が設定されている。
バックエンドサービスは、画像形成装置10の標準の機能以外の機能のうち、画像形成装置10の標準の機能の拡張の機能以外の機能を提供するサービスであるので、記憶部18に対するアクセスの機能が画像形成装置10の標準の機能の延長ではない。そのため、バックエンドサービスは、記憶部18上のデータの不正な抜き出しなどの不正なアクセスを実行する可能性が拡張機能サービスより高い。したがって、図4に示すサービス管理情報テーブル340においては、バックエンドサービスのグループ全体に対するアクセス範囲として、拡張機能サービスのグループ全体に対するアクセス範囲より狭い「テンポラリーのファイル置き場のみ」が設定されている。
図5は、サービス制御部320の構成を示す図である。
図5に示すように、サービス制御部320は、新規の拡張サービスを画像形成装置10に追加するサービスインストール制御部321と、サービス管理情報テーブル340における拡張サービスの情報を参照するサービス情報参照部322と、拡張サービスを起動するサービス起動制御部323と、拡張サービスがアクセス可能な記憶部18上の範囲を制限するアクセス制御部324とを備えている。
サービス起動制御部323は、例えば、待機状態、実行状態および一時停止状態など、拡張サービス毎の状態を管理する。
図6は、拡張サービスを起動する場合の画像形成装置10の動作のフローチャートである。
サービス制御部320は、拡張サービスを起動する場合、図6に示す動作を実行する。なお、図6に示す動作の説明において、起動の対象の拡張サービスを対象拡張サービスという。
図6に示すように、サービス起動制御部323は、利用可能メモリーサイズに基づいて拡張サービスを制限するメモリー制限処理を実行する(S401)。
図7は、図6に示すメモリー制限処理のフローチャートである。
図7に示すように、サービス起動制御部323は、既に実行中の全ての拡張サービスの利用可能メモリーサイズと、対象拡張サービスの利用可能メモリーサイズとの合計が拡張サービスのグループ全体に対する利用可能メモリーサイズを超えるか否かを判断する(S421)。ここで、サービス起動制御部323は、各拡張サービスの利用可能メモリーサイズと、拡張サービスのグループ全体に対する利用可能メモリーサイズとを、サービス情報参照部322経由でサービス管理情報テーブル340から取得する。
サービス起動制御部323は、既に実行中の全ての拡張サービスの利用可能メモリーサイズと、対象拡張サービスの利用可能メモリーサイズとの合計が拡張サービスのグループ全体に対する利用可能メモリーサイズを超えないとS421において判断すると、対象拡張サービスのサービスタイプを判断する(S422)。ここで、サービス起動制御部323は、対象拡張サービスのサービスタイプを、サービス情報参照部322経由でサービス管理情報テーブル340から取得する。
サービス起動制御部323は、対象拡張サービスのサービスタイプが拡張機能サービスであるとS422において判断すると、既に実行中の全ての拡張機能サービスの利用可能メモリーサイズと、対象拡張サービスの利用可能メモリーサイズとの合計が拡張機能サービスのグループ全体に対する利用可能メモリーサイズを超えるか否かを判断する(S423)。ここで、サービス起動制御部323は、拡張機能サービスのグループ全体に対する利用可能メモリーサイズを、サービス情報参照部322経由でサービス管理情報テーブル340から取得する。
サービス起動制御部323は、対象拡張サービスのサービスタイプがバックエンドサービスであるとS422において判断すると、既に実行中の全てのバックエンドサービスの利用可能メモリーサイズと、対象拡張サービスの利用可能メモリーサイズとの合計がバックエンドサービスのグループ全体に対する利用可能メモリーサイズを超えるか否かを判断する(S424)。ここで、サービス起動制御部323は、バックエンドサービスのグループ全体に対する利用可能メモリーサイズを、サービス情報参照部322経由でサービス管理情報テーブル340から取得する。
サービス起動制御部323は、既に実行中の全ての拡張サービスの利用可能メモリーサイズと、対象拡張サービスの利用可能メモリーサイズとの合計が拡張サービスのグループ全体に対する利用可能メモリーサイズを超えるとS421において判断するか、既に実行中の全ての拡張機能サービスの利用可能メモリーサイズと、対象拡張サービスの利用可能メモリーサイズとの合計が拡張機能サービスのグループ全体に対する利用可能メモリーサイズを超えるとS423において判断するか、既に実行中の全てのバックエンドサービスの利用可能メモリーサイズと、対象拡張サービスの利用可能メモリーサイズとの合計がバックエンドサービスのグループ全体に対する利用可能メモリーサイズを超えるとS424において判断すると、対象拡張サービスの起動の中止を決定して(S425)、図7に示すメモリー制限処理を終了する。
サービス起動制御部323は、既に実行中の全ての拡張機能サービスの利用可能メモリーサイズと、対象拡張サービスの利用可能メモリーサイズとの合計が拡張機能サービスのグループ全体に対する利用可能メモリーサイズを超えないとS423において判断するか、既に実行中の全てのバックエンドサービスの利用可能メモリーサイズと、対象拡張サービスの利用可能メモリーサイズとの合計がバックエンドサービスのグループ全体に対する利用可能メモリーサイズを超えないとS424において判断すると、対象拡張サービスの利用可能メモリーサイズを対象拡張サービスに割り当てることを汎用OS110に通知して(S426)、図7に示すメモリー制限処理を終了する。汎用OS110は、S426の通知を受けると、対象拡張サービスを実行する場合に、S426において通知された利用可能メモリーサイズを対象拡張サービスが超さないように管理する。
図6に示すように、サービス起動制御部323は、S401のメモリー制限処理が終了すると、S401のメモリー制限処理において対象拡張サービスの起動の中止を決定したか否かを判断する(S402)。
サービス起動制御部323は、S401のメモリー制限処理において対象拡張サービスの起動の中止を決定したとS402において判断すると、図6に示す動作を終了する。
サービス起動制御部323は、S401のメモリー制限処理において対象拡張サービスの起動の中止を決定しなかったとS402において判断すると、CPU最大使用率に基づいて拡張サービスを制限するCPU制限処理を実行する(S403)。
図8は、図6に示すCPU制限処理のフローチャートである。
図8に示すように、サービス起動制御部323は、既に実行中の拡張サービスが存在するか否かを判断する(S441)。
サービス起動制御部323は、既に実行中の拡張サービスが存在しないとS441において判断すると、拡張サービスのグループ全体に対するCPU最大使用率を汎用OS110に通知する(S442)。ここで、サービス起動制御部323は、拡張サービスのグループ全体に対するCPU最大使用率を、サービス情報参照部322経由でサービス管理情報テーブル340から取得する。汎用OS110は、S442の通知を受けると、拡張サービスを実行する場合に、S442において通知されたCPU最大使用率を拡張サービスのグループ全体が超さないように管理する。
サービス起動制御部323は、S442の処理の後、対象拡張サービスのサービスタイプを判断する(S443)。ここで、サービス起動制御部323は、対象拡張サービスのサービスタイプを、サービス情報参照部322経由でサービス管理情報テーブル340から取得する。
サービス起動制御部323は、既に実行中の拡張サービスが存在するとS441において判断すると、対象拡張サービスのサービスタイプを判断する(S444)。ここで、サービス起動制御部323は、対象拡張サービスのサービスタイプを、サービス情報参照部322経由でサービス管理情報テーブル340から取得する。
サービス起動制御部323は、対象拡張サービスのサービスタイプが拡張機能サービスであるとS444において判断すると、既に実行中の拡張機能サービスが存在するか否かを判断する(S445)。
サービス起動制御部323は、対象拡張サービスのサービスタイプが拡張機能サービスであるとS443において判断するか、既に実行中の拡張機能サービスが存在しないとS445において判断すると、拡張機能サービスのグループ全体に対するCPU最大使用率を汎用OS110に通知する(S446)。ここで、サービス起動制御部323は、拡張機能サービスのグループ全体に対するCPU最大使用率を、サービス情報参照部322経由でサービス管理情報テーブル340から取得する。汎用OS110は、S446の通知を受けると、拡張機能サービスを実行する場合に、S446において通知されたCPU最大使用率を拡張機能サービスのグループ全体が超さないように管理する。
サービス起動制御部323は、対象拡張サービスのサービスタイプがバックエンドサービスであるとS444において判断すると、既に実行中のバックエンドサービスが存在するか否かを判断する(S447)。
サービス起動制御部323は、対象拡張サービスのサービスタイプがバックエンドサービスであるとS443において判断するか、既に実行中のバックエンドサービスが存在しないとS447において判断すると、バックエンドサービスのグループ全体に対するCPU最大使用率を汎用OS110に通知する(S448)。ここで、サービス起動制御部323は、バックエンドサービスのグループ全体に対するCPU最大使用率を、サービス情報参照部322経由でサービス管理情報テーブル340から取得する。汎用OS110は、S448の通知を受けると、バックエンドサービスを実行する場合に、S448において通知されたCPU最大使用率をバックエンドサービスのグループ全体が超さないように管理する。
サービス起動制御部323は、既に実行中の拡張機能サービスが存在するとS445において判断するか、S446の処理が終了するか、既に実行中のバックエンドサービスが存在するとS447において判断するか、S448の処理が終了すると、対象拡張サービスのCPU最大使用率を汎用OS110に通知する(S449)。ここで、サービス起動制御部323は、対象拡張サービスのCPU最大使用率を、サービス情報参照部322経由でサービス管理情報テーブル340から取得する。汎用OS110は、S449の通知を受けると、対象拡張サービスを実行する場合に、S449において通知されたCPU最大使用率を対象拡張サービスが超さないように管理する。
サービス起動制御部323は、S449の処理の後、図8に示すCPU制限処理を終了する。
図6に示すように、アクセス制御部324は、S403のCPU制限処理が終了すると、アクセス範囲に基づいて拡張サービスを制限するアクセス制限処理を実行する(S404)。
図9は、図6に示すアクセス制限処理のフローチャートである。
図9に示すように、アクセス制御部324は、対象拡張サービスのサービスタイプを判断する(S461)。ここで、アクセス制御部324は、対象拡張サービスのサービスタイプを、サービス情報参照部322経由でサービス管理情報テーブル340から取得する。
アクセス制御部324は、対象拡張サービスのサービスタイプが拡張機能サービスであるとS461において判断すると、サービス管理情報テーブル340において値が「拡張機能サービス」である拡張サービスIDに対応付けられているアクセス範囲をサービス情報参照部322経由で取得する(S462)。
アクセス制御部324は、対象拡張サービスのサービスタイプがバックエンドサービスであるとS461において判断すると、サービス管理情報テーブル340において値が「バックエンドサービス」である拡張サービスIDに対応付けられているアクセス範囲をサービス情報参照部322経由で取得する(S463)。
アクセス制御部324は、S462またはS463の処理の後、S462またはS463において取得したアクセス範囲を対象拡張サービスのアクセス範囲として汎用OS110に通知して(S464)、図9に示すアクセス制限処理を終了する。汎用OS110は、S464の通知を受けると、対象拡張サービスを実行する場合に、S464において通知されたアクセス範囲を対象拡張サービスが超さないように管理する。
図6に示すように、サービス起動制御部323は、S404のアクセス制限処理が終了すると、対象拡張サービスが拡張サービスであるという情報と、対象拡張サービスが拡張機能サービスおよびバックエンドサービスのいずれであるかという情報とを関連付けた対象拡張サービスを起動して(S405)、図6に示す動作を終了する。汎用OS110は、対象拡張サービスが拡張サービスであるという情報が対象拡張サービスに関連付けられているので、拡張サービスのグループ全体が拡張サービスのグループ全体の利用可能メモリーサイズ、CPU最大使用率およびアクセス範囲を超さないように対象拡張サービスを実行することができる。また、対象拡張サービスが拡張機能サービスおよびバックエンドサービスのいずれであるかという情報が対象拡張サービスに関連付けられているので、拡張機能サービスのグループ全体が拡張機能サービスのグループ全体の利用可能メモリーサイズ、CPU最大使用率およびアクセス範囲を超さないように対象拡張サービスを実行したり、バックエンドサービスのグループ全体がバックエンドサービスのグループ全体の利用可能メモリーサイズ、CPU最大使用率およびアクセス範囲を超さないように対象拡張サービスを実行したりすることができる。
拡張サービスは、拡張サービス自身が所属している情報共有グループに所属している他の拡張サービスが使用する、RAM19c上の領域および記憶部18上の領域を使用することができる。したがって、同一の情報共有グループに所属している複数の拡張サービス同士は、RAM19c上の領域および記憶部18上の領域を介して、情報を共有することができる。なお、拡張サービスは、RAM19cまたは記憶部18における拡張サービス自身の専用の領域に関して、他の拡張サービスによるアクセスを許可するか否かが設定されることができ、他の拡張サービスによるアクセスを許可することが設定されている場合に、拡張サービス自身が所属している情報共有グループに所属している他の拡張サービスに、拡張サービス自身の専用の領域を使用させることができる。また、拡張サービスは、RAM19cまたは記憶部18における共有の領域における特定の領域に関して、他の拡張サービスによるアクセスを許可するか否かが設定されることができ、他の拡張サービスによるアクセスを許可することが設定されている場合に、拡張サービス自身が所属している情報共有グループに所属している他の拡張サービスに、この特定の領域を使用させることができる。
以上に説明したように、画像形成装置10は、サービス管理情報テーブル340に設定されている利用可能メモリーサイズに基づいて拡張サービスを制限するので、画像形成装置10の標準の機能以外の機能を拡張アプリに提供する拡張サービスが容易に追加されることが可能であるにもかかわらず、拡張サービスが画像形成装置10の標準の機能の実行を遅延させる可能性を低減することができる。すなわち、画像形成装置10は、画像形成装置10の標準の機能以外の機能を提供する場合に、画像形成装置10の標準の機能に影響を与える可能性を低減することができる。
画像形成装置10は、サービス管理情報テーブル340に設定されているCPU最大使用率に基づいて拡張サービスを制限するので、画像形成装置10の標準の機能以外の機能を拡張アプリに提供する拡張サービスが容易に追加されることが可能であるにもかかわらず、拡張サービスが画像形成装置10の標準の機能の実行を遅延させる可能性を低減することができる。すなわち、画像形成装置10は、画像形成装置10の標準の機能以外の機能を提供する場合に、画像形成装置10の標準の機能に影響を与える可能性を低減することができる。例えば、複数の拡張サービスが実行されることによってCPU19aに加わる負荷による実行の遅延は、これらの拡張サービスの間でのみ発生する。複数の拡張機能サービスが実行されることによってCPU19aに加わる負荷による実行の遅延は、これらの拡張機能サービスの間でのみ発生する。複数のバックエンドサービスが実行されることによってCPU19aに加わる負荷による実行の遅延は、これらのバックエンドサービスの間でのみ発生する。
画像形成装置10は、サービス管理情報テーブル340に設定されているアクセス範囲に基づいて拡張サービスを制限するので、画像形成装置10の標準の機能以外の機能を拡張アプリに提供する拡張サービスが容易に追加されることが可能であるにもかかわらず、拡張サービスの追加によってセキュリティーが脆弱になる可能性を低減することができる。したがって、画像形成装置10は、画像形成装置10の標準の機能以外の機能を提供する場合に、画像形成装置10の標準の機能に影響を与える可能性を低減することができる。
画像形成装置10は、本実施の形態において、拡張サービス毎の利用可能メモリーサイズと、拡張機能サービスのグループ全体に対する利用可能メモリーサイズと、バックエンドサービスのグループ全体に対する利用可能メモリーサイズと、拡張サービスのグループ全体に対する利用可能メモリーサイズとが設定されている。しかしながら、画像形成装置10は、拡張サービス毎の利用可能メモリーサイズと、拡張機能サービスのグループ全体に対する利用可能メモリーサイズと、バックエンドサービスのグループ全体に対する利用可能メモリーサイズと、拡張サービスのグループ全体に対する利用可能メモリーサイズとの少なくとも1つが設定されていなくても良い。
画像形成装置10は、本実施の形態において、拡張サービス毎のCPU最大使用率と、拡張機能サービスのグループ全体に対するCPU最大使用率と、バックエンドサービスのグループ全体に対するCPU最大使用率と、拡張サービスのグループ全体に対するCPU最大使用率とが設定されている。しかしながら、画像形成装置10は、拡張サービス毎のCPU最大使用率と、拡張機能サービスのグループ全体に対するCPU最大使用率と、バックエンドサービスのグループ全体に対するCPU最大使用率と、拡張サービスのグループ全体に対するCPU最大使用率との少なくとも1つが設定されていなくても良い。
画像形成装置10は、拡張機能サービスのグループ全体に対するアクセス範囲、および、バックエンドサービスのグループ全体に対するアクセス範囲として、図4に示すものとは異なるアクセス範囲が設定されても良い。また、画像形成装置10は、拡張サービス毎にアクセス範囲が設定されても良いし、拡張サービスのグループ全体に対するアクセス範囲が設定されても良い。
画像形成装置10は、本実施の形態において、利用可能メモリーサイズ、CPU最大使用率、アクセス範囲および情報共有グループを拡張サービス毎にサービス管理情報テーブル340に登録し、利用可能メモリーサイズ、CPU最大使用率、アクセス範囲および情報共有グループを拡張サービス毎に適用している。しかしながら、サービス管理情報テーブル340は、複数の拡張サービスを組み合わせたサービスの種類毎に利用可能メモリーサイズ、CPU最大使用率、アクセス範囲および情報共有グループをサービス管理情報テーブル340に登録し、複数の拡張サービスを組み合わせたサービスの種類毎に利用可能メモリーサイズ、CPU最大使用率、アクセス範囲および情報共有グループを適用しても良い。画像形成装置10は、複数の拡張サービスを組み合わせたサービスに対して制限を実行する場合、複数の拡張サービスを組み合わせたサービスが画像形成装置10の標準の機能に影響を与える可能性を低減することができる。ここで、複数の拡張サービスを組み合わせたサービスの種類としては、例えば、任意の2つの拡張機能サービスを組み合わせたサービス、任意の2つのバックエンドサービスを組み合わせたサービス、特定の2つの拡張機能サービスを組み合わせたサービス、特定の2つのバックエンドサービスを組み合わせたサービス、任意の1つの拡張機能サービスと、任意の1つのバックエンドサービスを組み合わせたサービス、特定の1つの拡張機能サービスと、特定の1つのバックエンドサービスを組み合わせたサービスなどが存在する。拡張サービスは、3つ以上が組み合わされても良いし、組み合わせにおける個々の拡張サービスは、任意の拡張サービス、および、特定の拡張サービスのいずれでも良い。
画像形成装置10は、複数の拡張サービスを管理する拡張サービス管理部190を備えるので、複数の拡張サービスを利用するカスタマイズが実行されることができ、その結果、カスタマイズ性を向上することができる。例えば、画像形成装置10は、画像形成装置10から出力される情報の形式を旧型のインターフェイスの形式から新型のインターフェイスの形式に変換する機能を提供するサービスをバックエンドサービスとして備えることによって、画像形成装置10のユーザーが利用している既存システムと、画像形成装置10のユーザーが利用している既存アプリケーションと、画像形成装置10のユーザーが利用しているクラウドサービスとへの適合性を向上することができる。
本実施の形態におけるいずれかの複数のプログラムは、1つのプログラムとして構成されても良い。例えば、拡張用プログラム18cと、拡張サービス用プログラムとは、1つのプログラムとして構成されても良い。
本発明の電子機器は、本実施の形態において画像形成装置であるが、例えばPC(Personal Computer)など、画像形成装置以外の電子機器でも良い。