説明

装置、情報処理方法、情報処理プログラム、及び記録媒体

【課題】装置に実装されるアプリケーションの管理を行うアプリケーション管理機構を統合的に構成することを課題とする。
【解決手段】アプリケーションプログラムを実行可能な実行環境を複数有する装置であって、第一の実行環境で実行される第一のアプリケーションプログラムを制御する第一の制御手段を有し、前記第一の制御手段は、第二の実行環境で実行される第二のアプリケーションプログラムをも制御可能であり、前記第一のアプリケーションプログラムと前記第二のアプリケーションプログラムとは異なるプログラミング言語のアプリケーションプログラムである。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、装置、情報処理方法、情報処理プログラム、及び記録媒体に関する。
【背景技術】
【0002】
近年、コピー機能とプリンタ機能とスキャナ機能とファクシミリ機能を備える複合機や融合機が市販されるようになった。複合機や融合機は、コピーやプリンタとして機能する場合には、画像を印刷用紙に印刷することになり、コピーやスキャナとして機能する場合には、画像を読取原稿から読み取ることになり、ファクシミリとして機能する場合には、画像を電話回線を介して他の機器と授受することになる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
さて、複合機や融合機に実装されるアプリケーションと言えば、従来はC言語のアプリケーションが主流だったが、近頃はJava(登録商標)言語のアプリケーションも登場しつつある。さらに、一言でJava(登録商標)言語のアプリケーションと言っても、AppletやXletやServletやJSP等の様々な種類のアプリケーションが存在する。ゆえに、これらのアプリケーションの管理を行うプラットフォーム等のアプリケーション管理機構は徐々に複雑化する傾向にある。アプリケーション管理機構の複雑化は機器の性能面から言っても開発の効率面から言ってもあまり好ましくないため、アプリケーション管理機構はなるべく統合的に構成することが望ましい。
【0004】
本発明は、装置に実装されるアプリケーションの管理を行うアプリケーション管理機構を統合的に構成することを課題とする。
【課題を解決するための手段】
【0005】
そこで上記課題を解決するため、本発明は、アプリケーションプログラムを実行可能な実行環境を複数有する装置であって、第一の実行環境で実行される第一のアプリケーションプログラムを制御する第一の制御手段を有し、前記第一の制御手段は、第二の実行環境で実行される第二のアプリケーションプログラムをも制御可能であり、前記第一のアプリケーションプログラムと前記第二のアプリケーションプログラムとは異なるプログラミング言語のアプリケーションプログラムである。
【0006】
このような装置では、装置に実装されるアプリケーションの管理を行うアプリケーション管理機構を統合的に構成することができる。
【発明の効果】
【0007】
本発明は、装置に実装されるアプリケーションの管理を行うアプリケーション管理機構を統合的に構成することを可能にする。
【図面の簡単な説明】
【0008】
【図1】本発明の実施例に該当する融合機を表す。
【図2】図1の融合機に係るハードウェア構成図である。
【図3】図1の融合機に係る外観図である。
【図4】オペレーションパネルを表す。
【図5】CSDKアプリとJSDKアプリの管理機構の第一の例を示す図である。
【図6】CSDKアプリとJSDKアプリの管理機構の第二の例を示す図である。
【図7】CSDKアプリが存在しない場合のJSDKアプリの管理機構の例を示す図である。
【図8】タッチパネルに表示される操作画面の画面遷移図である。
【図9】JSDKプラットフォーム及びJSDKアプリの詳細について説明するための図である。
【図10】XletBundleActivatorによるXletのバンドル化の様子を概念的に示す図である。
【図11】バンドルの状態遷移図である。
【図12】Xletの状態遷移図である。
【図13】バンドル化されて管理されるXletの状態遷移図である。
【図14】バンドルのインストール処理及びアンインストール処理を説明するためのシーケンス図である。
【図15】バンドル化されたXletのインストール処理及びアンインストール処理を説明するためのシーケンス図である。
【図16】バンドルの起動処理及び起動解除処理を説明するためのシーケンス図である。
【図17】バンドル化されたXletの起動処理及び起動解除処理を説明するためのシーケンス図である。
【図18】図1のJSDKアプリとJSDKプラットフォームのクラス図である。
【図19】JSDKシステムの起動処理に関するクラス図である。
【図20】本発明の実施例に該当するPCを表す。
【図21】PC内のJSDKアプリとJSDKプラットフォームのクラス図である。
【図22】JSDKシステムの起動処理に関するクラス図である。
【図23】JSDKシステムの起動処理に関するクラス図である。
【発明を実施するための形態】
【0009】
図1は、本発明の実施例に該当する融合機101を表す。図1の融合機101は、種々のハードウェア111と、種々のソフトウェア112と、融合機起動部113により構成される。
【0010】
融合機101のハードウェア111としては、撮像部121と、印刷部122と、その他のハードウェア123が存在する。撮像部121は、読取原稿から画像(画像データ)を読み取るためのハードウェアである。印刷部122は、画像(画像データ)を印刷用紙に印刷するためのハードウェアである。
【0011】
融合機101のソフトウェア112としては、種々のアプリケーション131と、種々のプラットフォーム132が存在する。これらのプログラムは、UNIX(登録商標)等のOS(オペレーティングシステム)によりプロセス単位で並列的に実行される。
【0012】
アプリケーション131としては、コピー用のアプリケーションであるコピーアプリ141、プリンタ用のアプリケーションであるプリンタアプリ142、スキャナ用のアプリケーションであるスキャナアプリ143、ファクシミリ用のアプリケーションであるファクシミリアプリ144、ネットワークファイル用のアプリケーションであるネットワークファイルアプリ145が存在する。
【0013】
アプリケーション131は、専用のSDK(ソフトウェア開発キット)を使用して開発することができる。SDKを使用して開発したアプリケーション131をSDKアプリと呼ぶ。専用のSDKとしては、C言語でアプリケーション131を開発するための「CSDK」や、Java(登録商標)言語でアプリケーション131を開発するための「JSDK」が提供される。CSDKを使用して開発したアプリケーション131を「CSDKアプリ」と呼び、JSDKを使用して開発したアプリケーション131を「JSDKアプリ」と呼ぶ。図1の融合機101にも、CSDKアプリ146と、JSDKアプリ147が存在する。図1の融合機101にはさらに、Java(登録商標)言語で記述されたJSDKアプリ147とC言語で記述された他のソフトウェア112との仲介を行うソフトウェア112として、JSDKプラットフォーム148が存在する。すなわち、融合機101は、C言語で実装されたCSDKアプリの実行環境やJava(登録商標)言語で実装されたJSDKアプリの実行環境等、複数のアプリ実行環境を有する。なお、JSDKアプリの実行環境の具体例としては、JSDKプラットフォーム148が相当する。
【0014】
プラットフォーム132としては、種々のコントロールサービス151、システムリソースマネージャ152、種々のハンドラ153が存在する。コントロールサービス151としては、ネットワークコントロールサービス(NCS)161、ファクシミリコントロールサービス(FCS)162、デリバリコントロールサービス(DCS)163、エンジンコントロールサービス(ECS)164、メモリコントロールサービス(MCS)165、オペレーションパネルコントロールサービス(OCS)166、サーティフィケーションコントロールサービス(CCS)167、ユーザディレクトリコントロールサービス(UCS)168、システムコントロールサービス(SCS)169が存在する。ハンドラ153としては、ファクシミリコントロールユニットハンドラ(FCUH)171、イメージメモリハンドラ(IMH)172が存在する。
【0015】
NCS161のプロセスは、ネットワーク通信の仲介を行う。FCS162のプロセスは、ファクシミリのAPIを提供する。DCS163のプロセスは、蓄積文書の配信処理に関する制御を行う。ECS164のプロセスは、撮像部121や印刷部122に関する制御を行う。MCS165のプロセスは、メモリやハードディスクドライブに関する制御を行う。OCS166のプロセスは、オペレーションパネルに関する制御を行う。CCS167のプロセスは、認証処理や課金処理に関する制御を行う。UCS168のプロセスは、ユーザ情報の管理に関する制御を行う。SCS169のプロセスは、システムの管理に関する制御を行う。
【0016】
アプリケーション131とプラットフォーム132の仲介を行うソフトウェア112として、仮想アプリケーションサービス(VAS)135が存在する。VAS135は、アプリケーション131をクライアントとするサーバプロセスとして動作すると共に、プラットフォーム132をサーバとするクライアントプロセスとして動作する。VAS135は、アプリケーション131から見てプラットフォーム132を隠蔽するラッピング機能を備え、プラットフォーム132のバージョンアップに伴うバージョン差を吸収する役割等を担う。
【0017】
融合機起動部113は、融合機101の電源投入時に最初に実行される。これにより、UNIX(登録商標)等のOSが起動され、アプリケーション131やプラットフォーム132が起動される。これらのプログラムは、ハードディスクドライブやメモリカードに蓄積されており、ハードディスクドライブやメモリカードから再生されて、メモリに起動されることになる。
【0018】
図2は、図1の融合機101に係るハードウェア構成図である。融合機101のハードウェア111としては、コントローラ201と、オペレーションパネル202と、ファクシミリコントロールユニット(FCU)203と、撮像部121と、印刷部122が存在する。
【0019】
コントローラ201は、CPU211、ASIC212、NB221、SB222、MEM−P231、MEM−C232、HDD(ハードディスクドライブ)233、メモリカードスロット234、NIC(ネットワークインタフェースコントローラ)241、USBデバイス242、IEEE1394デバイス243、セントロニクスデバイス244により構成される。
【0020】
CPU211は、種々の情報処理用のICである。ASIC212は、種々の画像処理用のICである。NB221は、コントローラ201のノースブリッジである。SB222は、コントローラ201のサウスブリッジである。MEM−P231は、融合機101のシステムメモリである。MEM−C232は、融合機101のローカルメモリである。HDD233は、融合機101のストレージである。メモリカードスロット234は、メモリカード235をセットするためのスロットである。NIC241は、MACアドレスによるネットワーク通信用のコントローラである。USBデバイス242は、USB規格の接続端子を提供するためのデバイスである。IEEE1394デバイス243は、IEEE1394規格の接続端子を提供するためのデバイスである。セントロニクスデバイス244は、セントロニクス仕様の接続端子を提供するためのデバイスである。
【0021】
オペレーションパネル202は、オペレータが融合機101に入力を行うためのハードウェア(操作部)であると共に、オペレータが融合機101から出力を得るためのハードウェア(表示部)である。
【0022】
図3は、図1の融合機101に係る外観図である。図3には、撮像部121の位置と、印刷部122の位置と、オペレーションパネル202の位置が図示されている。図3には更に、読取原稿のセット先となる原稿セット部301と、印刷用紙の給紙先となる給紙部302と、印刷用紙の排紙先となる排紙部303が図示されている。
【0023】
オペレーションパネル202は、図4のように、タッチパネル311と、テンキー312と、スタートボタン313と、リセットボタン314と、機能キー315と、初期設定ボタン316により構成される。タッチパネル311は、タッチ操作で入力を行うためのハードウェア(タッチ操作部)であると共に、画面表示で出力を得るためのハードウェア(画面表示部)である。テンキー312は、キー(ボタン)操作で数字入力を行うためのハードウェアである。スタートボタン313は、ボタン操作でスタート操作を行うためのハードウェアである。リセットボタン314は、ボタン操作でリセット操作を行うためのハードウェアである。機能キー315は、キー(ボタン)操作でCSDKアプリ146やJSDKアプリ147による操作画面を表示させるためのハードウェアである。初期設定ボタン316は、ボタン操作で初期設定画面を表示させるためのハードウェアである。
【0024】
原稿セット部301は、ADF(自動原稿搬送装置)321と、フラットベッド322と、フラットベッドカバー323により構成される。給紙部302は、4個の給紙トレイにより構成される。排紙部303は、1個の排紙トレイにより構成される。
【0025】
(CSDKとJSDK)
図5は、CSDKアプリとJSDKアプリの管理機構の第一の例を示す図である。CSDKアプリ146は、C言語のアプリケーションであり、それぞれプロセスとして実行される事になる。JSDKアプリ147は、Java(登録商標)言語のアプリケーションであり、それぞれスレッドとして実行される事になる。
【0026】
図1の融合機101には、CSDKアプリ146として、他のCSDKアプリ146の制御を行うSAS(SDKアプリケーションサービス)411が存在し、JSDKアプリ147として、他のJSDKアプリ147の制御を行うSAS Manager(SDKアプリケーションサービスマネージャ)511が存在する。SAS411とSAS Manager511はそれぞれ、CSDKアプリ146とJSDKアプリ147の起動制御,起動解除(停止も含む)制御,インストール制御,アンインストール制御,アップデート制御等を行う。このように、CSDKアプリ146とJSDKアプリ147とによってそれぞれ管理機構体が異なるのは、それぞれのアプリケーションの開発言語が異なる点がその理由の一つとして挙げられる。例えば、SAS411によって、JSDKアプリ147の制御を直接行おうとすると、C言語のソースコードの中からJava(登録商標)言語によるインタフェースを呼び出さなければならず、高度なプログラミング技術が必要とされるとともに、その処理内容が煩雑となるからである。また、CSDKアプリ146の方はプロセスとして実行され、JSDKアプリ147の方はスレッドとして実行されるといったように、両者の実行形態が異なる点を考慮しても、CSDKアプリ146用のアプリケーション管理機構とJSDKアプリ147用のアプリケーション管理機構とを別個に設けた方が、管理機構の単純化といった観点から有利であると考える。
【0027】
但し、SAS411は、CSDKアプリ146の制御を行う事ができるだけではなく、SAS Manager511を介してJSDKアプリ147の制御を行う事もできる。SAS411は、CSDKアプリ146については直接的にその制御を行う事ができると共に、JSDKアプリ147についてはSAS Manager511を介して間接的にその制御を行う事ができるのである。このように、CSDKアプリ146用のアプリケーション管理機構とJSDKアプリ147用のアプリケーション管理機構は、SAS Manager511を制御できる機能をSAS411に具備させると言う形で統合的に構成されている。なお、SAS411とSAS Manager511とのやり取りは、HTTP(HyperText Transfer Protocol)やSOAP(Simple Object Access Protocol)等、開発言語の別を問わず簡便に利用できるプロトコルを用いるとよい。そうすることによって、C言語のソースコードの中からJava(登録商標)言語によるインタフェースを呼び出す必要がなくなり、処理内容の煩雑さの問題が解消される。また、融合機101のソフトウェアの根幹部分がC言語によることも、SDKアプリを制御する機能を同じくC言語によるSAS411に集中しておくのが好適である理由の一つであるといえる。
【0028】
また、図6は、CSDKアプリとJSDKアプリの管理機構の第二の例を示す図である。図6中、図5と同一部分には同一符号を付し、その説明は省略する。図6ではJSDKプラットフォーム148が複数存在する例が示されている。このような場合、JSDKプラッとフォーム148ごとにSAS Manager511が設けられる。したがって、SAS411は、各JSDKプラットフォーム148のSAS Manager511を介して、それぞれのJSDKプラットフォーム148上のJSDKアプリ147の制御を行う。したがって、この場合もSDKアプリの管理機構はSAS411に統合されている。
【0029】
更に、図7は、CSDKアプリが存在しない場合のJSDKアプリの管理機構の例を示す図である。図7中、図5又は図6と同一部分には同一符号を付し、その説明は省略する。すなわち、図7では、CSDKアプリは存在せず、複数のJSDKプラットフォーム148が存在する場合に、各プラットフォーム上のJSDKアプリの制御を統合的に管理するための機構が示されている。この場合、複数のJSDKプラットフォーム148のうちのいずれか一つのJSDKプラットフォーム148上で動作するSAS Manager511が、他のJSDKプラットフォーム148上のSAS Manager511を介して、当該他のJSDKプラットフォーム148上のJSDKアプリ147の制御を統合的に行えばよい。
【0030】
図8は、タッチパネル311(図4参照)に表示される操作画面の画面遷移図である。図8Aの操作画面で機能キー315(図4参照)を押下すると、図8Bの操作画面に遷移する。図8Bの操作画面は、CSDKアプリ146とJSDKアプリ147を操作対象とする操作画面である。図8Bの操作画面で「CSDKアプリ1,2,3」のどれかを指定すると、図8Cの操作画面に遷移する。図8Cの操作画面は、指定されたCSDKアプリ146による操作画面である。一方、図8Bの操作画面で「JSDKアプリ」を指定すると、図8Dの操作画面に遷移する。図8Dの操作画面は、スレッドとして実行されているJSDKアプリ147を操作対象とする操作画面である。図8Dから図8Eへの画面遷移が表示画面を占有するJSDKアプリ147の「切替」として実施されるので、実行中のJSDKアプリ147のみが図8Dの操作画面の表示対象となり、実行中でないJSDKアプリ147は図8Dの操作画面の表示対象とならない。図8Dの操作画面で「JSDKアプリ1,2,3,4,5,6」のどれかを指定すると、図8Eの操作画面に遷移する。図8Eの操作画面は、指定されたJSDKアプリ147による操作画面である。
【0031】
図8Bの操作画面を表示する機能や、図8B,C,Dの操作画面に画面を遷移する機能は、SCS169(図1参照)が受け持つ。図8Dの操作画面を表示する機能や、図8Eの操作画面に画面を遷移する機能は、Screen Manager512(図11参照)が受け持つ。あるCSDKアプリ146やJSDKアプリ147を図8Bや図8Dの操作画面の表示対象とするには、そのCSDKアプリ146やJSDKアプリ147をインストール操作画面でのインストール操作をもってインストールしておく必要がある。必要がある場合には、起動画面での起動操作をもって起動しておく必要もある。そして、インストール操作画面でのインストール操作や起動画面での起動操作に呼応してCSDKアプリ146やJSDKアプリ147のインストール制御や起動制御を行うのが、SAS411やSAS Manager511である。CSDKアプリ146やJSDKアプリ147のアンインストール制御や起動解除制御についても同様である。
【0032】
(OSGi)
図9は、JSDKプラットフォーム及びJSDKアプリの詳細について説明するための図である。本実施の形態におけるJSDKプラットフォーム148は、OSGi(Open Service Gateway initiative)サービスプラットフォームに準拠している。OSGiサービスプラットフォームは、OSGiアライアンスによる標準化技術であり、Java(登録商標)言語に基づいたオープンなソフトウェア部品化技術である。OSGiサービスプラットフォームが実装された機器では、Java(登録商標)言語のソフトウェアは「バンドル(Bundle)」と言うソフトウェア部品の形で実装される。そして、該機器の諸機能はバンドルをもって構成する事ができると共に、該機器の諸機能のアップデートやカスタマイズやメンテナンスはバンドルのダウンロードをもって実現する事ができる。
【0033】
図9において、OSGiフレームワーク403及びOSGiサービス402は、JSDKプラットフォーム148をOSGiプラットフォームとして機能させるためのものである。OSGiフレームワーク403は、バンドルの管理及び制御(バンドルのライフサイクルやデータの管理等)を行う。OSGiサービス402は、バンドルに対して各種のサービスを提供するライブラリ群である。
【0034】
このように、JSDKプラットフォーム148は、OSGiサービスプラットフォームとして機能するため、その上で動作するアプリケーション(すなわちJSDKアプリ147)は、バンドルとして実装されうる。図中においても、JSDKアプリ147の一部がバンドル407として実装されている様子が示されている。OSGiサービスプラットフォームにおいて、各バンドルにはBundle Activator4071が実装されることになっている。Bundle Activator4071は、OSGiフレームワーク403にバンドルを管理及び制御させるためのインフェースを提供する。すなわち、OSGiフレームワーク403は、各バンドルのBundle Activator4071を呼び出すことにより、当該バンドルの管理及び制御を行う。なお、本実施の形態においてバンドル407を総称する場合、OSGiアプリ401という。
【0035】
更に、本実施の形態における融合機101は、JSDKアプリ147として、バンドル以外のアプリケーションの実行も可能とされている。本実施の形態では、かかるアプリケーションとしてXlet406を採用した例を示す。図中のJSDKプラットフォーム148において、JSDKシステムサービス405は、Xlet406に対して各種サービスを提供するものである。JSDKシステムサービス405には、XletBundleActivator404、MultiXletManager532、InstallManager545等のクラスが含まれる。
【0036】
XletBundleActivator404は、OSGiフレームワーク403に対して、Xlet406をバンドルとして見せるためのモジュールである。MultiXletManager532は、各Xlet406のライフサイクル等を管理する。InstallManager545は、Xlet406について、SDcardやWebからのインストールやアンインストールの管理を行う。
【0037】
なお、CVM555は、Java(登録商標)の実行環境を実現する仮想マシンである。
【0038】
XletBundleActivator404について更に詳しく説明する。Xlet406は、バンドルとして実装されていないため、そのままではOSGiフレームワーク403によって管理等することができない。そうすると、JSDKアプリ147において、バンドル407として実装されたアプリケーションとXlet406として実装されたアプリケーションとの管理機構を別個に設けなければならず、JSDKプラットフォーム148の構成が複雑化してしまう。したがって、OSGiフレーム403によって全てのJSDKアプリ147の管理等が一元的に行われることが望まれる。そこで、OSGiフレームワーク403が、Xlet406をバンドル407と同様のインタフェースによって管理できるようXletBundleActivator404が設けられている。具体的には、XletBundleActivator404は、それぞれのバンドル407に実装されているBundel Activatorと同様のインタフェースをOSGiフレームワーク404に対して提供する。XletBundleActivator404は、OSGiフレームワーク403による当該インタフェーの呼び出しに応じ、Xlet406において当該インタフェースに対応したインタフェースを呼び出す。すなわち、XletBundleActivator404は、OSGiフレームワーク403が解釈可能なインタフェースと、Xlet406が解釈可能なインタフェースとの仲介を行うことにより、Xlet406のライフサイクル管理等の仲介を行うのである。このように、XletBundleActivator404によって、バンドルであるかXletであるかを問わず、OSGiフレームワーク403によるJSDKアプリ147の管理の一元化が実現されている。
【0039】
図10は、XletBundleActivatorによるXletのバンドル化の様子を概念的に示す図である。ここで、「バンドル化」とは、OSGiフレームワーク403から見て、Xlet406がバンドル407と同様の制御方法によって制御可能なように構成されることをいう。
【0040】
OSGiサービスプラットフォームにおいて、OSGiフレームワークは、バンドルを起動する際、当該バンドルのBundle Activatorに実装されているstart()メソッドを呼び出す。また、バンドルを起動解除させる際、当該バンドルのBundle Activatorに実装されているstop()メソッドを呼び出す。
【0041】
一方、Xletは、起動及び起動解除を含むライフサイクルを制御するためのメソッドとして、initXlet()、startXlet()、pauseXlet()、及びdestroyXlet()等が実装される。
【0042】
図10では、このようなインタフェースの相違が、XletBundleActivator404によって吸収されている様子が示されている。すなわち、OSGiフレームワーク403は、XletBundleActivator404のstart()やstop()を呼び出すことで、Xlet406の起動又は起動解除を要求する。XletBundleActivator404は、これらのメソッドの呼び出しに応じ、Xlet406のinitXlet()、startXlet()、pauseXlet()、及びdestroyXlet()等を呼び出すことにより、Xlet406の起動又は起動解除を実現する。したがって、OSGiフレームワーク403は、JSDKアプリ147が、Xlet406として実装されているか又はバンドル407として実装されているかを意識することなく、各JSDKアプリ147を管理することができる。
【0043】
このようにJSDKプラットフォーム148においてXletBundleActivator404が実装されているといった構成は、JSDKアプリ147のベンダにとって特に便宜である。例えば、既存のXlet406によるJSDKアプリ147に対して何の変更もせずに、当該Xlet406によるJSDKアプリ147をOSGiフレームワーク403の上で動作させることができるからである。
【0044】
ところで、バンドルとXletとの状態遷移は異なっており、その相違が両者のインタフェースの相違にも現れている。したがって、かかる状態遷移の整合性が図られてこそ、Xletのバンドル化が実現されるといえる。本実施の形態において、両者の状態遷移の整合性がどのように図られているか、以下に説明する。
【0045】
図11は、バンドルの状態遷移図である。
【0046】
バンドルの状態には、インストール状態(INSTALLED)や、アンインストール状態(UNINSTALLED)や、有効状態(ACTIVE)や、無効状態(RESOLVED)や、起動処理中状態(STARTING)や、起動解除処理中状態(STOPPING)等が存在する。バンドルの状態は、インストール(install)や、アンインストール(uninstall)や、アップデート(update)や、起動(start)や、起動解除(stop)等により遷移する。バンドルのライフサイクルとは、このようなバンドルの状態遷移にほかならない。バンドルのライフサイクルは、OSGiフレームワーク403により管理される。
【0047】
インストール状態は、バンドルのインストールの直後の状態である。アンインストール状態は、バンドルのアンインストールの直後の状態である。有効状態は、バンドルが起動中の状態である。無効状態は、バンドルが起動解除中の状態である。起動処理中状態は、バンドルの起動処理を実行中の状態である。起動解除処理中状態は、バンドルの起動解除処理を実行中の状態である。
【0048】
図12は、Xletの状態遷移図である。
【0049】
Xletの状態には、初期化状態(Loaded)や、停止状態(Paused)や、活性化状態(Active)や、終了状態(Destroyed)が存在する。Xletの状態は、起動(initXlet)や、開始(startXlet)や、停止(pauseXlet)や、終了(destroyXlet)により遷移する。Xletのライフサイクルとは、このようなXletの状態遷移にほかならない。XletであるJSDKアプリ147のライフサイクルは、JSDKプラットフォーム148により管理される。
【0050】
初期化状態は、Xletインスタンスの生成直後の状態である。停止状態は、サービス提供停止中の状態である。活性化状態は、サービス提供中の状態である。終了状態は、Xletインスタンスの消滅直後の状態である。初期化状態や終了状態への遷移は1度だけ可能であり、停止状態と活性化状態との間の遷移は何度でも可能である。
【0051】
図13は、バンドル化されて管理されるXletの状態遷移図である。
【0052】
Xletがバンドル化されて管理される場合には、Xletの初期化状態,停止状態,活性化状態,終了状態はバンドルの有効状態に入る事になる。即ち、バンドルの有効状態として、Xletの初期化状態,停止状態,活性化状態,終了状態が存在する事になる。このように、Xlet406の状態遷移をバンドルの状態遷移にマッピングすることで、OSGiフレームワーク403上において、Xlet406は、バンドル407と同様の状態遷移を実現する。
【0053】
次に、OSGiフレームワーク403上において、Xlet406とバンドル401とのインストール及びアンインストール処理、並びに起動及び起動解除処理が、どのように整合性がとられているかについてシーケンス図を用いて説明する。
【0054】
まず、インストール及びアンインストール処理について説明する。図14は、バンドルのインストール処理及びアンインストール処理を説明するためのシーケンス図である。
【0055】
SAS411が、タッチパネル311に表示させている操作画面を介して、JSDKアプリ147のインストールの指示をユーザより受け付けると、SAS411は、SASManager511にインストールの実行を要求する(S11)。JSDKアプリ147のインストールはSASManager511によって制御されるからである。SASManager511は、操作画面において選択されているインストール元(例えば、WebサイトやSDカード等)よりインストール可能なJSDKアプリ147を検索するようInstallManager545に要求する(S12)。InstallManager545は、当該インストール可能なJSDKアプリ147を検索し、検索結果をSASManager511に返却する(S13)。SASManager511は、検索結果として取得されたJSDKアプリ147の一覧の中からユーザによって選択されたJSDKアプリ147がバンドル407として実装されたものである場合は、当該バンドル407のインストールをOSGiフレームワーク403に要求する(S14)。OSGiフレームワーク403は、インストール対象とされたバンドル407のBundle Activator4071に対してインストールを要求する(S15)。その要求に基づいて、バンドル407は融合機101にインストールされる。
【0056】
一方、SAS411が、タッチパネル311に表示させている操作画面を介して、JSDKアプリ147のアンインストールの指示をユーザより受け付けると、SAS411は、SASManager511にアンインストールの実行を要求する(S21)。SASManager511は、融合機101にインストールされているJSDKアプリ147の検索をInstallManager545に要求する(S22)。InstallManager545は、インストールされているJSDKアプリ147を検索し、検索結果をSASManager511に返却する(S23)。SASManager511は、検索結果として取得されたJSDKアプリ147の一覧の中からユーザによって選択されたJSDKアプリ147がバンドル407である場合は、当該バンドル407のアンインストールをOSGiフレームワーク403に要求する(S24)。OSGiフレームワーク403は、アンインストールの対象とされたバンドル407のBundle Activator4071に対してアンインストールを要求する(S25)。その要求に基づいて、バンドル407は融合機101からアンインストールされる。
【0057】
また、図15は、バンドル化されたXletのインストール処理及びアンインストール処理を説明するためのシーケンス図である。図15において、ステップS31〜S33は、図14におけるステップS11〜S23と同様であるためここでの説明は省略する。
【0058】
SASManager511は、検索結果として取得されたJSDKアプリ147の一覧の中からユーザによって選択されたJSDKアプリ147がXlet406として実装されたものである場合は、当該Xlet406のインストールをInstallManager545に要求する(S34)。InstallManager545は、XletBundleActivator404のクラスファイルをコピーすることにより、インストール対象とされたXlet406に対するXletBundleActivator404を生成する(S35、S36)。すなわち、XletBunleActivator404のクラスファイルは、Xlet406ごとに必要とされるが、その実装内容は共通のものでよいため、予め用意されているクラスファイルを単にコピーすることでインストール対象とされたXlet406に対するXletBundleActivator404が生成されるのである。続いて、InstallManager545は、Xlet406を融合機101にインストールする(S37)。Xlet406のインストールが正常に行われると、SASManager511は、OSGiフレームワーク403に、バンドル化されたXlet406のインストールを要求する(S38)。この呼び出しは、図14におけるステップS14に相当する。この場合、OSGiフレームワーク403は、インストール対象がXlet406であることは関知しない。したがって、バンドル407のインストールが要求された場合と同様の処理を実行する。ここでは、OSGiフレームワーク403には、XletBunldleActivator404が、図14におけるBundle Activator4071と同様に見えている。したがって、OSGiフレームワーク403は、XletBundleActivator404に対してインストールを要求する(S39)。但し、Xlet406は既にインストールされているため、ここではXlet406ではなくXletBundleActivator404がインストールされる。
【0059】
図15において、ステップS41以降は、Xlet406のアンインストール処理を示すものである。ステップS41〜S43は、図14におけるステップS21〜S23と同様であるためここでの説明は省略する。SASManager511は、検索結果として取得されたJSDKアプリ147の一覧の中からユーザによって選択されたJSDKアプリ147がXlet406である場合は、当該Xlet406のアンインストールをInstallManager545に要求する(S44)。InstallManger545は、アンインストールの対象とされたXlet406をアンインストールする(S45)。Xlet406のアンインストールが正常に行われると、SASManager511は、OSGiフレームワーク403に、バンドル化されたXlet406のアンインストールを要求する(S46)。この呼び出しは、図14におけるステップS24に相当する。この場合、OSGiフレームワーク403は、アンインストール対象がXlet406であることは関知しない。したがって、バンドル407のアンインストールが要求された場合と同様の処理を実行する。ここでは、OSGiフレームワーク403には、XletBunldleActivator404が図14におけるBundle Activator4071と同様に見えている。したがって、OSGiフレームワーク403は、XletBundleActivator404に対してアンインストールを要求する(S47)。但し、Xlet406は既にアンインストールされているため、ここではXlet406ではなくXletBundleActivator404がアンインストールされる。
【0060】
このように、本実施の形態における融合機101では、OSGiフレームワーク403から見て、バンドル407とXlet406のインストール及びアンインストール処理が同様の手順によって行われる。すなわち、図14におけるOSGiフレームワーク403に対する呼び出し(S14、S24)と、図15におけるOSGiフレームワーク403に対する呼び出し(S38、S46)とは整合性がとられている。また、図14におけるOSGiフレームワーク403による呼び出し(S15、S25)と、図15におけるOSGiフレームワーク403による呼び出し(S39、S47)とは整合性がとられている。したがって、OSGiフレームワーク403は、バンドル407とXlet406との違いを意識することなく、そのインストール及びアンインストールを実現しているといえる。
【0061】
次に、起動及び起動解除処理について説明する。図16は、バンドルの起動処理及び起動解除処理を説明するためのシーケンス図である。
【0062】
SAS411が、タッチパネル311に表示させている操作画面を介して、JSDKアプリ147の起動の指示をユーザより受け付けると、SAS411はSASManager511に起動の実行を要求する(S51)。JSDKアプリ147の起動はSASManager511によって制御されるからである。SASManager511は、融合機101にインストールされているJSDKアプリ147を検索するようInstallManager545に要求する(S52)。InstallManager545は、インストールされているJSDKアプリ147を検索し、検索結果をSASManager511に返却する(S53)。SASManager511は、検索結果として取得されたJSDKアプリ147の一覧の中から、ユーザによって選択されたJSDKアプリ147の起動をOSGiフレームワーク403に要求する(S54)。OSGiフレームワーク403は、起動対象とされたバンドル407のBundle Activator4071のstart()メソッドを呼び出すことによりバンドル407を起動させる(S55)。
【0063】
一方、SAS411が、タッチパネル311に表示させている操作画面を介して、JSDKアプリ147の停止(起動解除)の指示をユーザより受け付けると、SAS411は、SASManager511にJSDKアプリ147の停止の実行を要求する(S61)。SASManager511は、融合機101にインストールされているJSDKアプリ147の検索をInstallManager545に要求する(S62)。InstallManager545は、インストールされているJSDKアプリ147を検索し、検索結果をSASManager511に返却する(S63)。SASManager511は、検索結果として取得されたJSDKアプリ147の一覧の中からユーザによって選択されたJSDKアプリ147の停止をOSGiフレームワーク403に要求する(S64)。OSGiフレームワーク403は、停止対象とされたバンドル407のBundle Activator4071のstop()メソッドを呼び出すことにより当該バンドル407を停止させる(S65)。
【0064】
また、図17は、バンドル化されたXletの起動処理及び起動解除処理を説明するためのシーケンス図である。図17において、ステップS71〜S74は図16におけるステップS51〜S54と同様であるためここでの説明は省略する。
【0065】
OSGiフレームワーク403は、起動対象とされたXlet406に対応するXletBundleActivator404のstart()メソッドを呼び出す(S75)。但し、OSGiフレームワーク403は、起動対象がXlet406であることは意識していない。OSGiフレームワーク403には、XletBundleActivator404が、図16におけるBundle Activator401と同様に見えており、図16のステップS55においてBundleActivator404のstart()メソッドを呼び出す場合と同様に、XletBundleActivator404のstart()メソッドを呼び出しているだけである。start()メソッドを呼び出されたXletBundleActivator404は、MultiXletManager532のcreateXlet()メソッドを呼び出すことにより、Xlet406の起動(生成)を要求する(S76)。MultiXletManager532は、Xlet406のinitXlet()メソッドを呼び出すことによりXlet406を初期化し(S77)、更に、startXlet()メソッドを呼び出すことによりXlet406を起動させる(S78)。
【0066】
図17において、ステップS81以降は、Xlet406の起動解除処理を示すものである。図中ステップS81〜S84は、図16におけるステップS61〜S64と同様であるためここでの説明は省略する。OSGiフレームワーク403は、停止対象とされたXlet406に対応するXletBundleActivator404のstop()メソッドを呼び出す(S85)。但し、OSGiフレームワーク403は、停止対象がXlet406であることは意識していない。すなわち、図16のステップS65においてBundleActivator404のstop()メソッドを呼び出す場合と同様に、XletBundleActivator404のstop()メソッドを呼び出しているだけである。stop()メソッドを呼び出されたXletBundleActivator404は、MultiXletManager532のdestroyXlet()メソッドを呼び出すことにより、Xlet406の停止(破棄)を要求する(S86)。MultiXletManager532は、Xlet406のdestroyXlet()メソッドを呼び出すことによりXlet406停止させる(S87)。
【0067】
このように、本実施の形態における融合機101では、OSGiフレームワーク403から見て、バンドル407とXlet406の起動及び起動解除処理が同様の手順によって行われる。すなわち、図16におけるOSGiフレームワーク403に対する呼び出し(S54、S64)と、図17におけるOSGiフレームワーク403に対する呼び出し(S74、S84)とは整合性がとられている。また、図16におけるOSGiフレームワーク403による呼び出し(S55、S65)と、図17におけるOSGiフレームワーク403による呼び出し(S75、S85)とは整合性がとられている。したがって、OSGiフレームワーク403は、バンドル407とXlet406との違いを意識することなく、その起動及び起動解除を実現しているといえる。
【0068】
(JSDK)
図18は、図1のJSDKアプリ147とJSDKプラットフォーム148のクラス図である。JSDKアプリ147とJSDKプラットフォーム148は、全体で1プロセスとして、同一のプロセス上で実行される。JSDKアプリ147とJSDKプラットフォーム148中の各ブロックは、それぞれ1プロセス上のスレッドとして、スレッド単位で並列的に実行(マルチスレッド)される。JSDKアプリ147とJSDKプラットフォーム148は、Java(登録商標)コンパイラによりソースコードからバイトコードに一括翻訳されており、Java(登録商標)仮想マシンにより逐次実行される。JSDKアプリ147とJSDKプラットフォーム148は「Java(登録商標) 2 Micro Edition」の「Foundation Profile」がベースとなっている。
【0069】
JSDKアプリ147としては、図に示す通り、ユーザアプリ501と、SAS Manager511と、Screen Manager512等が存在する。
【0070】
ユーザアプリ501は、融合機101のユーザ(例えばベンダ)がJSDKを使用して開発したJSDKアプリ147である。SAS Manager511は、他のJSDKアプリ147(ユーザアプリ501等)の制御等を行うJSDKアプリ147である。Screen Manager512は、他のJSDKアプリ147(ユーザアプリ501等)を操作対象とする操作画面の表示等を行うJSDKアプリ147である。
【0071】
ユーザアプリ501はここでは、スタンドアロンアプリケーションやアプレットと並ぶJava(登録商標)アプリケーションの一種であるXletである。SAS Manager511とScreen Manager512はここでは、独自の拡張を施したXlet(XletEx)である。
【0072】
JSDKプラットフォーム148には、図に示す通り、JSDK Environment521と、Xlet Manager531と、Multi Xlet Manager532と、Send Manager541と、Event Manager542と、System Event Manager543と、Panel Manager544と、Install Manager545と、Server/Client Manager546等のクラスが存在する。
【0073】
JSDK Environment521は、JSDKシステムの実行環境を反映したJSDKシステムの起動環境設定を実行するクラスである。
【0074】
Xlet Manager531は、1対1でXletを管理するクラスである。ここでは、5個のXletのライフサイクルやデータがそれぞれ1対1で5個のXlet Manager531によって管理される。Multi Xlet Manager532は、全てのXlet Manager531を管理するクラスである。ここでは、5個のXlet Manager531のライフサイクルやデータが全て1個のMulti Xlet Manager532によって管理される。なお、SAS Manager511,Screen Manager512,JSDK Environment521,Multi Xlet Manager532,Send Manager541,Event Manager542,System Event Manager543,Panel Manager544,Install Manager545,Server/Client Manager546の「バンドル」のライフサイクルやデータは、OSGiフレームワーク403によって管理される。
【0075】
System Event Manager543は、図1のプラットフォーム132からのシステムイベント(電力モード等)の管理を行うクラスである。Panel Manager544は、1個のXletがオペレーションパネル202の画面を占有する際の調停を行うクラスである。Install Manager545は、SDcardやWebからのインストールやアンインストールの管理を行うクラスである。
【0076】
図18のJSDKシステムでは、JSDK API551とJSDK API552がAPIとして利用される。なお、XletとXletExの差異として、オブジェクトにアクセスするのにJSDK API551の利用とJSDKプラットフォーム148へのアクセスが可能である点が挙げられる。図1の融合機101には更に、図18のJSDKシステムに係る要素として、C言語とJava(登録商標)言語のインタフェースとなるJSDK Session553とNative JSDK Session554や、JSDKアプリ147とJSDKプラットフォーム148を実行するためJava(登録商標)仮想マシンであるCVM555が存在する。
【0077】
図19は、JSDKシステムの起動処理に関するクラス図である。JSDKシステムの起動処理では先ず、OSGiフレームワーク403が、OSGiアプリ401やOSGiサービス402を構成するバンドルを生成(S1)する。次に、OSGiフレームワーク403が、JSDKアプリ147やJSDKプラットフォーム148を構成するバンドルを生成(S2)する。次に、JSDK Environment521が、JSDK Session553やNative JSDK Session554を生成するなど、JSDKシステムの実行環境を反映したJSDKシステムの起動環境設定を実行(S3)する。次に、JSDK Session553が、Send Manager541やEvent Manager542を生成(S4)する。なお、ユーザアプリ501の起動処理に関してはSAS411やSAS Manager511が関与(S5)する。
【0078】
(エミュレータ)
図20は、本発明の実施例に該当するPC(パーソナルコンピュータ)701を表す。図20のPC701は、図1の融合機101とネットワーク801で接続されており、図1の融合機101のエミュレータとして機能する。
【0079】
図20のPC701は、PC本体711と、キーボード712と、マウス713と、ディスプレイ714等により構成される。PC本体711には、CPU、ROM、RAM、NVRAM、HDD、MODEM、NIC等が存在する。キーボード712とマウス713は、融合機101のオペレーションパネル202に代わって、オペレータが入力を行うためのハードウェア(操作部)となる。ディスプレイ714は、融合機101のオペレーションパネル202に代わって、オペレータが出力を得るためのハードウェア(表示部)となる。
【0080】
図21は、図20のPC701内のJSDKアプリ147とJSDKプラットフォーム148のクラス図である。図1の融合機101と同様のJSDKアプリ147,JSDKプラットフォーム148,OSGiアプリ401,OSGiサービス402,OSGiフレームワーク403が、図20のPC701内にも存在するのである。図1の融合機101内のJSDKアプリ147とJSDKプラットフォーム148のクラス図については、図18を参照されたい。以下、図18と図21の差異について説明する。
【0081】
第1に、図18のSAS411は、図21のSAS Emulator611に置換される。第2に、図18のPanel Manager544は、図21のPanel Manager Emulator744に置換される。第3に、図18のJSDK Session553は、図21のEmulator JSDK Session753に置換される。第4に、図18のNative JSDK Session554は、図21のEvent Emulator754に置換される。第5には、図18のCVM555は、図21のJVM755に置換される。
【0082】
SAS Emulator611は、他のCSDKアプリ146の制御を行うCSDKアプリ146であり、融合機101内やPC701内のSAS Manager511を介してJSDKアプリ147の制御(図中の矢印Aや矢印B)を行う事もできる。Panel Manager Emulator744は、Panel Manager544をエミュレートして、オペレーションパネル202の操作をキーボード712やマウス713の操作に変換するクラスである。Emulator JSDK Session753は、通信経路の確立処理を実行するクラスである。Event Emulator754は、融合機101の動作をエミュレートするクラスである。JVM755は、JSDKアプリ147,JSDKプラットフォーム148,OSGiアプリ401,OSGiサービス402,OSGiフレームワーク403を実行するためのJava(登録商標)仮想マシンである。
【0083】
なお、図20のPC701内のJSDKシステムの起動処理に関しては、図19と同様である。また、図20のPC701では図1の融合機101の遠隔操作を行う事ができるのだが、図20のPC701にて図1の融合機101の遠隔操作を行うに際しては、図1の融合機101内のJSDKシステムの起動処理は図22や図23のように実施される。
【0084】
第1に、図19のS3の処理の代わりとして、融合機101内のJSDK Environment521が、PC701内のJSDKプラットフォーム148を登録(S3)する。第2に、図19のS4の処理の代わりとして、融合機101内のOSGiフレームワーク403が、PC701内のServer/Client Manager546を登録(S4)する。
【0085】
図22では、ユーザアプリ501の起動処理にPC701内のSAS Emulator611が関与するため、図22のS4の処理では、融合機101内のOSGiフレームワーク403が、PC701内のSAS Emulator611を登録する。
【0086】
図23では、ユーザアプリ501の起動処理に融合機101内のSAS411が関与するため、図23のS4の処理では、融合機101内のOSGiフレームワーク403は、PC701内のSAS Emulator611を登録しない。
【0087】
なお、図5から図17による説明事項については、図1の融合機101についてと同様に、図20のPC701についても成り立つ。ただし、SAS411はSAS Manager611に読み替えるものとする。
【符号の説明】
【0088】
101 融合機
111 ハードウェア
112 ソフトウェア
113 融合機起動部
121 撮像部
122 印刷部
123 その他のハードウェア
131 アプリケーション
132 プラットフォーム
133 アプリケーションプログラムインタフェース
134 エンジンインタフェース
135 仮想アプリケーションサービス
141 コピーアプリ
142 プリンタアプリ
143 スキャナアプリ
144 ファクシミリアプリ
145 ネットワークファイルアプリ
146 CSDKアプリ
147 JSDKアプリ
148 JSDKプラットフォーム
151 コントロールサービス
152 システムリソースマネージャ
153 ハンドラ
161 ネットワークコントロールサービス
162 ファクシミリコントロールサービス
163 デリバリコントロールサービス
164 エンジンコントロールサービス
165 メモリコントロールサービス
166 オペレーションパネルコントロールサービス
167 サーティフィケーションコントロールサービス
168 ユーザディレクトリコントロールサービス
169 システムコントロールサービス
171 ファクシミリコントロールユニットハンドラ
172 イメージメモリハンドラ
201 コントローラ
202 オペレーションパネル
203 ファクシミリコントロールユニット
211 CPU
212 ASIC
221 NB
222 SB
231 MEM−P
232 MEM−C
233 HDD
234 メモリカードスロット
235 メモリカード
241 NIC
242 USBデバイス
243 IEEE1394デバイス
244 セントロニクスデバイス
301 原稿セット部
302 給紙部
303 排紙部
311 タッチパネル
312 テンキー
313 スタートボタン
314 リセットボタン
315 機能キー
316 初期設定ボタン
321 ADF
322 フラットベッド
323 フラットベッドカバー
401 OSGiアプリ
402 OSGiサービス
403 OSGiフレームワーク
404 XletBundleActivator
405 JSDKシステムサービス
406 Xlet
407 バンドル(Bundle)
411 SAS
501 ユーザアプリ
511 SAS Manager
512 Screen Manager
521 JSDK Environment
531 Xlet Manager
532 Multi Xlet Manager
541 Send Manager
542 Event Manager
543 System Event Manager
544 Panel Manager
545 Install Manager
546 Server/Client Manager
551 JSDK API
552 JSDK API
553 JSDK Session
554 Native JSDK Session
555 CVM
611 SAS Emulator
701 PC
711 PC本体
712 キーボード
713 マウス
714 ディスプレイ
744 Panel Manager Emulator
753 Emulator JSDK Session
754 Event Emulator
755 JVM
801 ネットワーク
4071 Bundle Activator
【先行技術文献】
【特許文献】
【0089】
【特許文献1】特開2002−84383号公報

【特許請求の範囲】
【請求項1】
アプリケーションプログラムを実行可能な実行環境を複数有する装置であって、
第一の実行環境で実行される第一のアプリケーションプログラムを制御する第一の制御手段を有し、
前記第一の制御手段は、第二の実行環境で実行される第二のアプリケーションプログラムをも制御可能であり、
前記第一のアプリケーションプログラムと前記第二のアプリケーションプログラムとは異なるプログラミング言語のアプリケーションプログラムである装置。
【請求項2】
それぞれの前記実行環境は、当該実行環境において実行される前記アプリケーションプログラムの起動、起動解除、インストール、アンインストール、又はアップデートを行うことを特徴とする請求項1記載の装置。
【請求項3】
第一の前記実行環境における前記制御手段は、他の前記実行環境における前記制御手段を介して当該他の実行環境において実行される前記アプリケーションプログラムの起動、起動解除、インストール、アンインストール、又はアップデートを制御することを特徴とする請求項1又は2記載の装置。
【請求項4】
それぞれの前記実行環境は、異なるプロセス空間において実行されることを特徴とする請求項1乃至3いずれか一項記載の装置。
【請求項5】
アプリケーションプログラムを実行可能な実行環境を複数有する装置が実行する情報処理方法であって、
第一の制御手段が、第一の実行環境で実行される第一のアプリケーションプログラムを制御する制御手順と、
前記第一の制御手段が、第二の実行環境で実行される第二のアプリケーションプログラムをも制御する制御手順とを有し、
前記第一のアプリケーションプログラムと前記第二のアプリケーションプログラムとは異なるプログラミング言語のアプリケーションプログラムである情報処理方法。
【請求項6】
請求項5記載の情報処理方法をコンピュータに実行させるための情報処理プログラム。
【請求項7】
請求項6記載の情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate


【公開番号】特開2013−13100(P2013−13100A)
【公開日】平成25年1月17日(2013.1.17)
【国際特許分類】
【出願番号】特願2012−168863(P2012−168863)
【出願日】平成24年7月30日(2012.7.30)
【分割の表示】特願2011−116223(P2011−116223)の分割
【原出願日】平成18年6月7日(2006.6.7)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】