JP6147139B2 - 情報処理装置、その制御方法、及びコンピュータプログラム - Google Patents

情報処理装置、その制御方法、及びコンピュータプログラム Download PDF

Info

Publication number
JP6147139B2
JP6147139B2 JP2013173730A JP2013173730A JP6147139B2 JP 6147139 B2 JP6147139 B2 JP 6147139B2 JP 2013173730 A JP2013173730 A JP 2013173730A JP 2013173730 A JP2013173730 A JP 2013173730A JP 6147139 B2 JP6147139 B2 JP 6147139B2
Authority
JP
Japan
Prior art keywords
application
fragment
bundle
installation
host
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013173730A
Other languages
English (en)
Other versions
JP2015041362A (ja
Inventor
速水 祥和
祥和 速水
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2013173730A priority Critical patent/JP6147139B2/ja
Priority to US14/459,799 priority patent/US9086938B2/en
Publication of JP2015041362A publication Critical patent/JP2015041362A/ja
Application granted granted Critical
Publication of JP6147139B2 publication Critical patent/JP6147139B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/454Multi-language systems; Localisation; Internationalisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Description

本発明は、情報処理装置、その制御方法、及びコンピュータプログラムに関する。
近年、画像形成装置においては、JAVA(登録商標)環境に代表されるようなアプリ動作環境が提供されている。JAVA(登録商標)の持つプログラムの可搬性を利用して、拡張可能なアプリを提供する技術が提案されている。画像形成装置の機能やユーザビィリティの向上を図るために、JAVA(登録商標)環境などの環境下で動作するアプリを作成し、画像形成装置にインストールすることで、当該アプリにより所望の機能を実現できる。
アプリプラットフォームとしては、組み込み機器向けのJAVA(登録商標)アプリプラットフォームである、OSGiがある(非特許文献1)。OSGiは、Open Services Gateway Initiative Service Platformの略称であり、以下、OSGiと記述する。OSGiでは、ソフトウェアモジュールの管理単位としてバンドルを定義しており、インストール/開始/停止/更新/アンインストールからなるライフサイクルを管理するための仕様を定義している。ここで、バンドルとは、Java(登録商標)モジュールのことを指し、本発明においては、アプリと同義である。このようなアプリプラットフォームは、コピー、スキャン、プリント等の組み込み機能をアプリに提供することができる。
またOSGiの仕様には、ホストバンドルとフラグメントバンドルという仕組みがある。ホストバンドルとは、フラグメントバンドルが追加されるバンドルを指す。フラグメントバンドルとは、単独では動作せず、ホストバンドルのクラスローダ空間にバンドル自身を追加(アタッチ)する形式のバンドルである。アプリの修正または拡張時に、フラグメントバンドルを用いてホストバンドルの機能を修正または拡張することで、インストールするファイルサイズを小さくすることができ効率的にモジュールを配布することが可能となる。現状、ホストバンドルへのフラグメントバンドルのインストールは、OSGiの仕様上、特にその数に制限が設けられていない。
「OSGi Service Platform,Release4」, http://www.osgi.org/Download/Release4V40,2005年10月
しかしながら、現状のOSGiの仕様には1つのホストバンドルに対するフラグメントバンドルの追加可能数に制限を加える仕組みがない。例えば、ユーザにそのアプリをお試し版で使わせたい場合、お試し版ではフラグメントバンドルの追加数に一定の制限を設け、正規版アプリとの差別化を図ることができない。本発明は、ホストバンドルに追加できるフラグメントバンドルの数を制限し、アプリ提供サービスの提供形態を改善させる情報処理装置を提供することを目的とする。
本発明の一実施形態の情報処理装置は、特定のサービスを提供するアプリケーションを当該アプリケーションのマニフェストを基に管理するフレームワークを具備する。前記情報処理装置は、ホストアプリケーションを拡張する拡張アプリケーションをインストールする際に、前記ホストアプリケーションを拡張するためにインストールされる前記拡張アプリケーションの数が、前記ホストアプリケーションのマニフェストに記載されている当該ホストアプリケーションが保持可能な拡張アプリケーションの上限数未満の場合にインストールを実行するインストール手段を備える。
本発明の情報処理装置によれば、ホストバンドルに追加できるフラグメントバンドルの数を制限し、アプリ提供サービスの提供形態を改善させることが可能となる。
画像形成装置のハードウェア構成図である。 画像形成装置のソフトウェアモジュール階層図である。 アプリをインストールする流れを示したブロック図である。 フラグメントバンドルの概念図である。 アプリ管理画面、インストール画面のUIを示した図である。 フラグメント上限数を指定したマニフェストを説明した図である。 OSGiでのアプリ管理状態を示した図である。 実施例1を説明するためのブロック図である。 実施例1の、インストール制御部の処理を示すフローチャートである。 実施例2を説明するためのブロック図である。 実施例2の、インストール制御部の処理を示すフローチャートである。 実施例3を説明するためのブロック図である。 実施例3の、インストール制御部の処理を示すフローチャートである。 実施例4の、用途ごとのフラグメント上限数を指定したマニフェストを説明した図である。 実施例4を説明するためのブロック図である。 実施例4の、インストール制御部の処理を示すフローチャートである。 実施例5を説明するためのブロック図である。 実施例5の、インストーラ制御部の処理を示すフローチャートである。
以下、本発明において使用する言葉の定義を行う。「ホストバンドル」とは、フラグメントバンドルが追加される対象となるバンドルである。「フラグメントバンドル」とは、単独では動作せず、ホストバンドルのクラスローダ空間に自分自身を追加するバンドルである。ホストバンドルへフラグメントバンドルを追加することを、以降「フラグメントバンドルのインストール」と呼ぶ。同様に、ホストバンドルに追加済みのフラグメントバンドルを削除することを、以降「フラグメントバンドルのアンインストール」と呼ぶ。Open Services Gateway Initiative Service Platformの仕様上、ホストバンドル:フラグメントバンドル=1:Nの関係にあり、フラグメントバンドルは一つのホストバンドルにのみ追加できる。
上述したように、フラグメントバンドルをホストアプリケーションの機能拡張のために拡張アプリケーションとして利用する場合、ホストバンドルに複数のフラグメントバンドルが無制限に追加されると、正規版とお試し版の差別化が図れない。また、ホストバンドルとフラグメントバンドルの組み合わせパターンが増加する。これにより、テストなどを含む開発規模も増加してしまう可能性ある。フラグメントバンドルの追加可能な個数を制限することで、組み合わせ数が抑えられ、開発規模を安定させることが可能となる。
以下では、本発明により解決される課題について説明する。まず、現状のOSGiの仕様では、フラグメントバンドルの個数制限を考慮するとき、フラグメントバンドルのインストール時に個数を制限できない(課題1)。
また、バージョンアップなどにより、ホストバンドル自体が上書きインストールされるときに、ホストバンドルが保持するフラグメント上限値が変わることによる不整合が発生する(課題2)。
更に、課題1において、ホストバンドルが常時起動タイプのアプリの場合、ホストバンドルが停止できない制約により、再起動時に更新処理を行う予約インストール・アンインストールが考慮されていない(課題3)。
また、課題1において、フラグメントバンドルの用途によって、制限する個数を制御できない課題がある(課題4)。
さらに画像形成装置全体でリソース制限があるため、画像形成装置全体の設定として、フラグメントバンドルの個数の制限を実現できない(課題5)。
まず、以下で記載する各実施例に共通な構成を説明する。図1は、印刷機能やスキャン機能、ネットワーク通信機能などを備える画像形成装置130のハードウェア構成図である。以下では、画像形成装置130を情報処理装置の例として説明するが、本発明はPCや形態端末などにも適用可能である。図1に示す画像形成装置130は、コントローラ100を備える。コントローラ100は、CPU101、ROM102、RAM103、HDD104、操作部I/F105、ネットワークI/F106、スキャナI/F108、画像形成部109、プリンタI/F110を備える。また、画像形成装置130は、スキャナ部113、プリンタ部114、操作部118を備える。なお、CPUは、Central Processing Unitの略称である。ROMは、Read Only Memoryの略称である。RAMは、Random Access Memoryの略称である。HDDは、Hard Disk Driveの略称である。コントローラ100はスキャナ部113やプリンタ部114と電気的に接続され、一方でLAN116を介して外部デバイスと接続される。
CPU101は、ROM102に記憶された制御プログラム等に基づいて接続中の各種ハードウェアとのアクセスを統括的に制御し、またコントローラ内部で行われる各種処理についても統括的に制御する。ROM102は読み出し専用の不揮発記憶領域であり、画像形成装置130のブートプログラムなどが格納されている。RAM103は、CPU101が動作するためのシステムワークメモリであり、各種データを一時記憶するためのメモリである。このRAM103は、記憶した内容を電源off後も保持可能なFRAM(登録商標)およびSRAM、電源off後に記憶内容が消去されるDRAMなどにより構成される。HDD104は不揮発記憶領域であり、システムアプリなどを格納する。図3で説明するインストールするアプリを含むファームウェアは、HDD104に格納される。
操作部I/F105は、システムバス119と操作部118を接続するインタフェース部である。具体的には操作部118に表示するデータをシステムバス119から受取り表示すると共に、操作部118からの入力情報をシステムバス119へ出力する。画像形成装置130に対するユーザの指示や情報提示は、操作部118を介して行われる。ネットワークI/F106はLAN116、WAN117及びシステムバス119に接続し、外部との情報の入出力を行う。本実施形態では、画像形成装置130は、ネットワークI/F106を介して図3に示すPC300からアプリケーションをインストールする。
スキャナI/F108は、システムバス119とスキャナ部113を接続するインタフェース部である。スキャナI/F108は、スキャナ部113から受取った画像データに対して、補正、加工、及び編集を行う。画像形成部109は、画像データの方向変換、画像圧縮、伸張部などを行う。プリンタI/F110は、画像形成部109から送られた画像データを受取り、画像形成後にプリンタ部114にて印刷する。
図2は、画像形成装置130のソフトウェアモジュール階層図である。なお図2以降に示す各ソフトウェアはROM102、またはHDD104に保存され、CPU101にて実行される。また、実行時に使用する各種情報はRAM103もしくはHDD104に保持してソフトウェア機能間での各種情報のやりとりを行う。さらに外部機器との通信は、ネットワークI/F106を用いて行われる。
次に、画像形成装置130が備える各ソフトウェアを説明する。ソフトウェアは、まずオペレーティングシステム(OS)プラットフォーム201を有し、OS201上にソフトウェアプラットフォーム202が構成されている。ソフトウェアプラットフォーム202は、Java(登録商標)VM203のランタイム環境として構成されており、インタプリタとしてJAVA(登録商標)VM203、フレームワーク群204、ライブラリ205を備える。また、ソフトウェアプラットフォーム202は、アプリ管理部207、インストール制御部208、ログインアプリ209、一般アプリ210を備える。ライブラリ205は、標準のAPIライブラリから構成されている。フレームワーク群204は、OSGi206から構成され、このOSGi206は、単一のJava(登録商標)VM203上に複数のアプリを動作させることができる。
更に、OSGi206はOSGi拡張部211を備え、OSGi拡張部211により、OSGi206に対し必要に応じて機能を拡張可能である。OSGi206は、アプリのライフサイクルの管理やアプリ間通信機能などを提供する。このOSGi206上には、複数のシステムサービスを行うソフトウェアがプリインストールされている。システムサービスとして、アプリ管理部207は複数のアプリ群を管理し、新たなアプリの追加、更新、削除をする。アプリ管理部207は、インストール制御部208を利用して、アプリの追加、更新、削除を行う。画像形成装置130の起動時に、OSGi206は、HDD104に保存されたサービス起動順リストに従い、後述するログインアプリ209、インストール制御部208、アプリ管理部207などのシステムサービスを実行するソフトウェアを起動していく。
一般アプリ210は、画像形成装置130において各種処理をユーザに提供する。例えば、一般アプリ210は、画像の加工や圧縮アプリ、印刷制限などの部門管理を行うアプリなどがある。一方、ログインユーザを管理するログインアプリ209などがある。ログインアプリ209は、アプリのログイン中に任意のアプリから任意のタイミングでログイン情報の問い合わせの可能性があるため、停止できない特性を持つアプリである。仮にログインアプリが停止していた場合、ログイン情報の取得ができなくなるため、例えば、ログイン情報に紐づくデータを利用しているようなアプリがあった場合、データの取得に失敗し、その動作に支障が生じる。ここで、ログイン情報とは、現在画像形成装置130にログインしているユーザのログイン名やメールアドレスなどの情報を指す。上述の特性を持つため、画像形成装置130が起動中の場合、このログインアプリ209は必ず1つが動作する。
各種機能を実現する一般アプリ210は、このアプリ管理部207の管理下で動作する。アプリ管理部207は、管理下に追加されたアプリのバージョンを含むアプリ情報、ライセンス情報などを保持している。さらに画像形成装置130内のアプリのアンインストール指示に応答し、アプリ管理部207は一般アプリ210を管理対象から外す。一般アプリ210、あるいは、ログインアプリ209は、図4で述べるようなホストバンドルとフラグメントバンドルという形態で、提供することが可能である。
図3は、ユーザが、PC300から画像形成装置130へ、アプリをインストールする流れを示したブロック図である。PC300のWEBブラウザ(不図示)に図5のインストール画面520に示すWEBページで構成されたアプリのインストールUI301を表示し、ユーザは、このインストールUI301からインストールしたいアプリを指定し、インストールを行う。インストールUI301で指定されたアプリを受信したアプリ管理部207は、それをインストール制御部208に渡す。アプリファイルを受信したインストール制御部208は、インストールを許可すると判断した場合はインストールしたアプリファイルをOSGi206に渡す。OSGi206は、受け取ったアプリファイルを実行する。なお、インストールされたアプリは、アプリ管理部207によって管理される。なおPCはWebブラウザが動作するものであればよく、ハードウェアおよびソフトウェア構成の説明は省略する。
図4は、フラグメントバンドルの概念を説明する図である。ここでは、ホストバンドル400に対して、言語ローカライズリソースをもつフラグメントバンドル401と402がインストールされる例を示す。ホストバンドルにフラグメントバンドルをインストールするためには、以下のマニフェスト、及びバンドルパーミッションの指定が必要となる。なお、マニフェストとは、jarファイルの説明が記載されたファイルである。jarファイルとは、複数のクラスファイルをアーカイブとして1つにまとめたものである。
・ホストバンドルのマニフェスト403
Bundle−ManifestVersionに2が指定される。Bundle−SymbolicNameには、フレームワーク内で一意な名前が付される。
・フラグメントバンドルのマニフェスト405
Bundle−ManifestVersionに2が指定される。Fragment−Hostには、ホストバンドルのマニフェスト403に記載の<ホストのバンドルシンボリック名>が指定される。本値が一致することでホストバンドルとフラグメントバンドルが同一アプリの構成要素であることを示すものとなる。
・ホストバンドルのパーミッション404
BundlePermission[バンドルシンボリック名, HOST]
・フラグメントバンドルのパーミッション406
BundlePermission[バンドルシンボリック名, FRAGMENT]
上記条件を満足する状態で、フラグメントバンドルをインストールすると、OSGi206がフラグメントバンドルのマニフェスト情報からホストバンドルを特定し、ホストバンドルのクラスパスにフラグメントバンドル自身のクラスパスを追加する。ここで「クラスパス」とは、JAVA(登録商標)アプリ実行するときに、JAVA(登録商標)VMがどの場所からクラスファイルを読み込めばよいかを、指定するためのものである。
更に、ホストバンドルのクラスローダによって、フラグメントバンドル内の全てのクラスとリソースがロードされる。ここで、「クラスローダ」とは、クラスのロードやリソースの検索を担当するオブジェクトであり、全てのクラスはクラスローダによってJAVA(登録商標)VMにロードされアプリとして利用可能となる。このホストバンドルのクラスローダのロードの実行は、ホストバンドル起動時に行われるため、必ずホストバンドルを一度停止し、クラスパスを追加したうえでロードする必要がある。よって、ホストバンドルが停止していないときは、インストールに失敗する。フラグメントバンドルがインストールされた後は、ホストバンドルの一部として利用可能となる。
図4に示す例では、フラグメントバンドルとして日本語リソース401、中国語リソース402が本体であるホストバンドル400にインストールされる。その後、ホストバンドル400が、これらの日本語、中国語リソースを利用して、言語リソースの切り替えが可能となる。つまり、ホストバンドルのUI上の表示は英語であるが、ホストバンドル上でリソースを切替えることで、日本語表示や中国語表示にするようにホストバンドルを作ることが可能である。
リソースとしては、ここで示したような言語リソースだけでなくて、イメージリソースの切替えも可能である。よって、標準では英語表示のイメージを利用していたが、前記ホストバンドルを上でリソースを切替ることで、日本語、または中国語表示のイメージを指定することが可能である。このような目的のフラグメントバンドルをリソース用フラグメントバンドルと呼ぶ。
更に、このようなリソースの追加だけでなく、ホストアプリの機能を拡張することも可能である。例えば、標準機能として提供されたUIを、フラグメントバンドルを追加することで、よりリッチなUIになるように作ることが可能である。このような目的のフラグメントバンドルを機能拡張用フラグメントバンドルと呼ぶ。
更に、ホストバンドルのある機能に不具合があった場合、その不具合を修正するクラスファイルをフラグメントバンドルで提供することで、ホストバンドルの修正パッチとして機能させることも可能である。このような目的のフラグメントを修正パッチ用フラグメントバンドルと呼ぶ。
なお、フラグメントバンドルのアンインストールも同様にホストバンドルのクラスパスにフラグメントバンドル自身のクラスパスの削除を行い、更に、ホストバンドルのクラスローダによって、再度ホストバンドルに必要なクラスをロードする必要がある。そのため、同様にフラグメントバンドルのアンインストールは、必ずホストバンドルが停止した状態で行う必要がある。
図5は、アプリ管理部207が管理する、一般アプリの管理画面500とインストール画面520を示す。本画面はPC300上に表示されるが、Web画面を表示できるのであれば、画像形成装置130の操作部118が表示してもよい。ここでは、一般アプリの管理画面で説明するが、ログインアプリの管理画面についても同様の画面となる。まず、一般アプリの管理画面500から説明する。
アプリケーション名501には、管理されている一般アプリ名が表示される。この例の場合、アプリケーションA507とアプリケーションB510の2つが管理されている。更に、このアプリケーションAをホストバンドルとして、フラグメントバンドルA508、フラグメントバンドルB509が管理されている。この場合、そのホストバンドルに紐づいていることがわかるように、アプリケーションA507と関連付けて表示される。
インストール日502は、各アプリがインストールされた日付である。アプリケーションID503は、各アプリに一意に割り振られたアプリケーションIDを表示している。状態504は、各アプリの状態を示している。アプリが開始中であれば開始、停止中であれば停止と表示される。開始/停止ボタン505は、アプリの開始停止を切り替える指示ボタンである。開始状態のアプリの場合、停止ボタンと表示され、停止状態のアプリの場合、開始ボタンと表示される。開始状態のアプリ(本例では、「アプリケーションA507」)の停止ボタン505を押下すると、その状態504は停止に変更される。一方、停止状態のアプリ(本例では、「アプリケーションB510」)の開始ボタン505を押下すると、その状態504は開始に変更される。アンインストールボタン506は、各アプリをアンインストールする指示ボタンである。
フラグメントバンドルのアンインストールはフラグメントバンドルのみが対象となる。例えば、フラグメントバンドルAのアンインストールボタン511が押下されると、フラウメントバンドルAだけがアンインストールされる。一方、ホストバンドルである、アプリケーションA507のアンインストールボタン506を押下時は、全てのフラグメントバンドルがアンインストールされる。ここでは、アプリケーションA507に紐づいたフラグメントバンドルA508とフラグメントバンドルB509が同時にアンインストールされる。
次に、インストール画面520について説明する。参照ボタン523は、ファイルパスを選択する画面を表示する。その画面でアプリファイルを指定すると、アプリケーションファイルのパス521にアプリファイルへのパスが入力される。アプリは、セキュリティやビジネス上の観点からインストール処理において、アプリを復号するためのライセンスファイルが必要となる場合がある。その場合、ユーザが参照ボタン524を押下すると、ファイルパスを選択する画面が表示される。ユーザがアプリ指定と同様にライセンスファイルを指定すると、ライセンスファイルのパス522にライセンスファイルへのパスが入力される。ユーザがインストールボタン525を押下すると、アプリケーションファイルのパス521で指定したアプリのインストールが開始される。
図6は、ホストバンドル400におけるマニフェストファイル600を示した図である。マニフェストファイルには、バージョンや、jarファイルのプロパティ値が記述される。また、マニフェストファイルには、マニフェスト項目と該項目に対する値が記述される。フラグメント個数の上限値(Fragment−MaxCount)601は、マニフェスト項目の中の一つであり、そのホストバンドルにインストール可能なフラグメントバンドルの個数の上限値(以降フラグメント上限値)を意味する。この例では、フラグメント上限値1が指定されている。よって、ホストバンドルにインストール可能なフラグメントバンドルは1以下、即ち1個のみとなる。上限値601が3であれば、3個のフラグメントバンドルがインストール可能ということになる。なお、マニフェストに記載するフラグメント上限値は、記載した数未満で運用する形式であっても良い。例えば、上限値601が3であれば、2個のフラグメントバンドルがインストール可能と言うことになる。この形式の注意点としては、上限値601に1という数字を記載した場合、フラグメントバンドルが1個もインストールできないことになると言う点である。この点を考慮した運用が必要となる。また、特別な値として*が指定されている場合、上限値に制限がない状態を示す。マニフェスト項目は、ホストバンドルにしか意味がないため、ホストバンドルでない通常アプリ、及びフラグメントバンドルのマニフェストファイルには記述されることはない。
図7は、OSGi206によるアプリとマニフェスト値のメモリ上での管理状態708の一例を示す。まず、画像形成装置130にインストールされOSGi206によって管理されているアプリの全体像を説明する。この例では、ホストバンドルである一般アプリA700のマニフェストには、フラグメント上限値701として2が記述されている。また、フラグメントバンドルであるフラグメントX702、及びフラグメントY703が一般アプリA700にインストールされている。
同様に、ホストバンドルである一般アプリB704のマニフェストには、フラグメント上限値705として1が記述されている。また、フラグメントバンドルであるフラグメントZ706が一般アプリB704にインストールされている。更に、ホストバンドルでもフラグメントバンドルでもない通常アプリである一般アプリC707がインストールされている。
OSGi206は、管理状態708で示すように、アプリがホストバンドルであるのかどうか、及びそのアプリのマニフェストに記述されたフラグメント上限値をROM102、またはHDD104などのメモリ上に保持している。また、OSGi206は、アプリがホストバンドルである場合、アプリに紐づいているフラグメントとの関連性をもメモリ上に保持している。これらは、対象とするアプリ名と、マニフェスト項目値などをキーとし、キーを指定することでそれに紐づいた値を取得できる。対象とするアプリ名、及びその状態は、OSGiの管理情報から取得可能である。
インストール制御部208は、OSGi206に問い合わせることにより、そのホストバンドルとフラグメントバンドルの関連性、フラグメント上限値、フラグメントバンドルの数などを取得することが可能となる。取得方法としては、この例でいうと、一般アプリAとホストバンドルをキーと指定することで、一般アプリAがホストバンドルか否かを示す情報が取得可能である。また、一般アプリAとフラグメント上限値をキーとして指定することで、上限値2を取得可能である。一般アプリAとフラグメントバンドルをキーとして指定することで、一般アプリAに紐づくフラグメントXとフラグメントY、及びその数が2である情報を取得可能である。
(実施例1)
本実施形態では、一般アプリに対するフラグメントバンドルのインストールにおける上限値制御の実施例を示す。なお本実施例1は、上述の課題1を解決する例となる。
図8は、課題1を説明するブロック図である。ホストバンドルである一般アプリA800のマニフェストには、フラグメント上限値801として1が記述されている。また、フラグメントバンドルであるフラグメントX802がインストールされている。このときのOSGi206のメモリ上での管理状態を804に示す。
この状態で一般アプリA800をホストバンドルとしているフラグメントバンドルであるフラグメントY803をインストールすることを考える。インストール制御部208は、OSGi206に一般アプリA800のフラグメント上限値を問い合わせる。この場合、フラグメント上限値として1が取得される。また、インストール制御部208は、OSGi206に現在の一般アプリA800のフラグメント数を問い合わせる。この場合、フラグメント数として1が取得される。この結果、これからインストールしようとしているフラグメントY803をインストールするとフラグメント上限値を超えてしまうために、インストール制御部208は、フラグメントY803のインストールを許可しない。
図9は、図8で示した状況における、インストール制御部208のフラグメントバンドルインストール時の制御を示すフローチャートである。インストール制御部208は、アプリ管理部207からの指示によって、フラグメントバンドルのインストール処理を開始する。S900において、インストール制御部208がインストールを開始する。
S901において、インストール制御部208は、OSGi206からインストール対象のホストバンドルのフラグメント上限値(FMC)を取得する。ここでFMCは、インストール対象のホストバンドルである一般アプリAとフラグメント上限値をキーとして取得される。S902において、インストール制御部208は、OSGi206からインストール対象のホストバンドルにインストール済みのフラグメント数(FC)を取得する。ここでFCは、インストール対象のホストバンドルである一般アプリAとフラグメントバンドルをキーとして取得される。
S903において、インストール制御部208は、FMC>FC、あるいは、FMCの値が*を満たすかを判定する。例えば、フラグメント上限値が2であり、インストール対象のホストバンドルに追加されているフラグメント数が1であれば、判定はYESとなる。判定がYESの場合、インストール制御部208はS904に処理を進め、フラグメントバンドルのインストールを許可する。一方、S903における判定がNOの場合、S905に処理を進め、フラグメントバンドルのインストールを許可しない。S906において、インストール制御部208は判断フローを終了する。
以上、本実施例1にて示したように、マニフェストに記述されているフラグメントバンドルの数が上限数未満の場合にインストールを実行するように制御することが可能となる。なお、S903における判定処理は、インストール対象のホストバンドルに追加されているフラグメント数がフラグメント上限値未満であればフラグメントバンドルがインストールされる形態である。しかし、以下の判定処理の形態が代替処理として適用されてよい。つまり、ホストバンドルに追加予定のフラグメントの数がフラグメント上限値未満または以下であればフラグメントバンドルがインストールされる。従って、S903の判定処理において、ホストバンドルを拡張するためにインストールされるフラグメントバンドルの数(FC)は、ホストバンドルに既に紐付いているフラグメントの数であってもよく、追加予定のフラグメントの数であってもよい。そして、いずれかのフラグメントの数がホストバンドルが保持可能な拡張アプリケーションの上限数未満または以下の場合にインストールが実行される。また、追加予定のフラグメントの数を基準として判定処理を行う場合、S903の処理においてFMC−FC(既に紐付いているフラグメントの数)>FC(追加予定のフラグメントの数)を満たすか否かを判定すればよい。
(実施例2)
本実施形態では、実施例1で示した状況において、ホストバンドルが上書きインストールされるときの実施例を示す。なお本実施例2は、上述の課題2を解決する例となる。
図10は、課題2を説明するブロック図である。ホストバンドルである一般アプリA(V1)1000は、フラグメント上限値1001として2がマニフェストに記述されている。また、フラグメントバンドルであるフラグメントX1002、及び、フラグメントY1003がインストールされている。このときのOSGi206のメモリ上での管理状態を1006に示す。
この状態で一般アプリA(V1)1000のバージョンアップ版である、バージョンアップ用ホストアプリケーション(一般アプリA(V2)104)を上書きインストールすることを考える。この一般アプリA(V2)1104について、マニフェストには、フラグメント上限値1005として1が記述されている。インストール制御部208は、インストールしようとしている一般アプリA(V2)1004のフラグメント上限値を、直接マニフェストを参照することにより取得する。この場合、フラグメント上限値として1が取得される。また、インストール制御部208は、OSGi206に現在の一般アプリA(V1)1000のフラグメント数を問い合わせる。この場合、フラグメント数として2が取得される。この結果、これからインストールしようとしている一般アプリA(V2)1004を上書きインストールすると、フラグメント上限値1005が、現状紐づいているフラグメント数に足りないことになる。そのために、インストール制御部208は、一般アプリA(V2)1004のインストールを許可しない。
図11は、図10で示した状況における、インストール制御部208のホストバンドルを上書きインストールする時の制御を示すフローチャートである。インストール制御部208は、アプリ管理部207からの指示によって、ホストバンドルの上書きインストール処理を開始する。
S1100において、インストール制御部208がインストールを開始する。S1101において、インストール制御部208は、上書きインストールするホストバンドルのマニフェストからフラグメント上限値(FMC)を取得する。ここでFMCは、インストール対象のホストバンドルである一般アプリAとフラグメント上限値をキーとして取得される。
S1102において、インストール制御部208は、OSGi206からインストール対象のホストバンドルに追加されているフラグメント数(FC)を取得する。ここでFCは、インストール対象のホストバンドルである一般アプリAとフラグメントバンドルをキーとして取得される。
S1103において、FMC>=FC、あるいは、FMCの値が*を満たすかを判定する。その判定がYESの場合、インストール制御部208はS1104に処理を進め、フラグメントバンドルのインストールを許可する。一方、S1103における判定がNOの場合、S1105に処理を進め、ホストバンドルの上書きインストールを許可しない。S1106において、インストール制御部208は判断フローを終了する。
以上、本実施例2にて示したようにホストバンドルの上書きインストールにおいても、フラグメント上限値とホストバンドルに追加されているフラグメントバンドル数との間の整合性を保つことが可能となる。
(実施例3)
本実施形態では、実施例1で示した状況において、ホストバンドルがログインアプリであり、かつ後述する予約インストール/アンインストールされているときの実施例を示す。なお本実施例3は、上述の課題3を解決する例となる。
まず、ログインアプリの予約インストール/アンインストールについて説明する。ログインアプリ209は、ログイン中に任意のアプリから任意のタイミングでログイン情報の問い合わせの可能性がある為、他のログインアプリに切り替える以外に停止することができない。一方で、図4で示したように、フラグメントバンドルのインストール/アンインストールは、ホストバンドルを停止させておく必要がある。
これらの理由により、ホストバンドルが開始され実行中のログインアプリであり、そのログインアプリのフラグメントバンドルをインストールする場合、以下の方法が考えられる。つまり、インストール制御部208は、インストールしたフラグメントバンドルとインストールされたことを示す指示ファイルをROM102、またはHDD104などのストレージに仮保存する。そして、再起動時にインストール制御部208がその指示ファイルに従って、フラグメントバンドルをインストールするという方法が考えられる。これを、ログインアプリのフラグメントバンドルの予約インストールと呼ぶ。予約インストールが実施されても、デバイスが再起動されるまで、そのフラグメントは未インストール状態である。
同様の理由で、インストール制御部208は、開始中のログインアプリに対して、フラグメントバンドルをアンインストールするときに、アンインストールされたことを示す指示ファイルをストレージに保存する。そして、再起動時にインストール制御部208がその指示ファイルに従って、フラグメントバンドルをアンインストールするという方法が考えられる。これを、ログインアプリのフラグメントバンドルの予約アンインストールと呼ぶ。予約アンインストールが実施されても、デバイスが再起動されるまで、そのフラグメントはインストール済みの状態である。
図12は、課題3を説明するブロック図である。ホストバンドルであるログインアプリA1200のマニフェストには、フラグメント上限値1201として1が記述されている。このログインアプリA1200は開始中である。また、フラグメントバンドルであるフラグメントX1202がインストールされている。この状態で、フラグメントX1202がアンインストールされたとする。ただし、ログインアプリA1200が開始中であるため、アンインストール対象、つまり予約アンインストールとなる。よって、フラグメントX1202は、再起動後にアンインストールされることになる。このときのOSGi206のメモリ上での管理状態を1204に示す。
この状態でログインアプリA1200をホストバンドルとしているフラグメントバンドルであるフラグメントY1203をインストールすることを考える。ただし、ログインアプリA1200が開始中であるため、予約インストールとなる。インストール制御部208は、OSGi206にログインアプリA1200のフラグメント上限値を問い合わせる。
この場合、フラグメント上限値として1が取得される。また、インストール制御部208は、OSGi206に現在のログインアプリA1200のフラグメント数を問い合わせる。この場合、フラグメント数として1が取得される。また、インストール制御部208は、OSGi206に現在のログインアプリA1200で予約アンインストールされているフラグメント数を問い合わせる。
この場合、予約アンインストールされているフラグメント数として1が取得される。この結果、これからインストールしようとしているフラグメントY1203をインストールしても予約アンインストールされるフラグメントX1202のことを考慮すると、フラグメント上限値1201を超えない。従って、インストール制御部208は、フラグメントY1203の予約インストールを許可する。
図13は、図12で示した状況における、インストール制御部208のフラグメントバンドルインストール時の制御を示すフローチャートである。インストール制御部208は、アプリ管理部207からの指示によって、フラグメントバンドルのインストール処理を開始する。
S1300において、インストール制御部208がインストールを開始する。S1301において、インストール制御部208は、OSGi206からインストール対象のホストバンドルのフラグメント上限値(FMC)を取得する。ここでFMCは、インストール対象のホストバンドルであるログインアプリAとフラグメント上限値をキーとして取得される。
S1302において、インストール制御部208は、OSGi206からインストール対象のホストバンドルに追加されているフラグメント数(FC)を取得する。ここでFCは、インストール対象のホストバンドルであるログインアプリAとフラグメントバンドルをキーとして取得される。
S1303において、インストール制御部208は、フラグメントバンドルの対象ホストバンドルがログインアプリであり、かつ、開始中であるかを判断する。その判定がNOであれば、インストール制御部208はS1305に処理を進める。これ以降は、実施例1と同じである。S1305において、FMC>=FC、あるいは、FMCの値が*を満たすかを判定する。その判定がYESの場合、インストール制御部208はS1308に処理を進める。S1305における判定がNOの場合、S1309に処理を進める。
S1303における判定がYESであれば、インストール制御部208はS1304に処理を進める。更に、インストール制御部208は、OSGiから対象ホストバンドルに追加されているフラグメントバンドルが予約アンインストールされているかどうかを判断する。その判定がNOである場合、インストール制御部208はS1305に処理を進める。S1304における判定がYESの場合、S1306に処理を進める。S1306において、インストール制御部208はOSGiから予約アンインストールされているフラグメントバンドル数(UFC)を取得し、S1307に処理を進める。ここでUFCの数は、インストール対象のホストバンドルであるログインアプリAとフラグメントバンドルをキーとして取得されたフラグメントXが、予約アンインストール状態であることに基づいて取得される。
S1307において、インストール制御部208は、FMC>=FC―UFC、あるいは、FMCの値が*を満たすかを判定する。その判定がYESの場合、インストール制御部208はS1308に処理を進め、フラグメントバンドルのインストールを許可する。S1307における判定がNOの場合、S1309に処理を進め、フラグメントバンドルのインストールを許可しない。S1310において、インストール制御部208は判断フローを終了する。
以上、本実施例3にて示したように、予約インストール/アンインストールを考慮した上で、フラグメントバンドルの上限数を制御したインストールが可能となる。なお、上述の処理は、一つ一つフラグメントバンドルを追加インストールすることを想定している。従って、追加しようとしているフラグメントバンドルが複数存在する場合は、フラグメントバンドル毎に図13に示す処理が実行されることとなる。これに代えて、複数のフラグメントバンドルのインストール許可/不許可が同時に判定されてもよい。その場合、S1307の処理では、FMC>=FC(ホストバンドルに紐付いているフラグメントの数)―UFC+インストール対象のフラグメントの数(FC)、あるいは、FMCの値が*を満たすかを判定すればよい。
(実施例4)
本実施形態では、フラグメントバンドルの用途に応じて上限値を変えたい場合のインストール制御の実施例を示す。なお本実施例4は、上述の課題4を解決する例となる。
フラグメントバンドルの用途としては、図4で説明したように、リソース用、機能拡張用、修正パッチ用などのアプリが考えられる。そこで、それぞれの用途に応じて、アプリの種類毎に個数制限を変えたいということが考えられる。例えば、お試し版アプリとして、言語は5個まで、機能拡張は1個までと制限付きだが、修正パッチ用アプリとしては無制限に許可するサービス提供の形態が考えられる。
図14は、ホストバンドル400におけるマニフェストファイル1400と、フラグメントバンドル401のマニフェストファイル1402を示した図である。マニフェストファイル1400について説明する。マニフェスト項目1401として、リソース用のフラグメントバンドルの個数の上限値(Fragment−MaxCount−Resourece)が記述されている。また、機能拡張用のフラグメントバンドルの個数の上限値(Fragment−MaxCount−Function)が記述されている。また、修正パッチ用のフラグメントバンドルの個数の上限値(Fragment−MaxCount−Patch)も記述されている。それぞれの上限値は、5、1、*(無制限)が指定されている。このマニフェスト項目は、ホストバンドルでしか意味がないため、ホストバンドルでない通常アプリ、及びフラグメントバンドルでは記述されることはない。
次にマニフェストファイル1402について説明する。マニフェスト項目1403として、フラグメントバンドルの用途に応じたフラグメントバンドルタイプ(Fragment−Type)が記述される。タイプとしては、リソース用として、Resource、機能拡張用として、Function、修正パッチ用として、Patchが指定される。これらは、一つのフラグメントバンドルの中で一つだけ指定されてもよく、複数指定してもよい。
図15は、課題4を説明するブロック図である。ホストバンドルである一般アプリA1500のマニフェストファイル1501には、リソース用の上限値として5、機能拡張用の上限値として1、修正パッチ用の上限値として*が記述されている。また、一般アプリA1500には、フラグメントバンドルであるフラグメントX1502がインストールされている。フラグメントX1502のマニフェストファイル1503には、フラグメントバンドルタイプとして、Function(機能拡張用)が記述されている。このときのOSGi206のメモリ上での管理状態を1506に示す。
この状態でログインアプリA1500をホストバンドルとしているフラグメントバンドルであるフラグメントY1504をインストールすることを考える。フラグメントY1504のマニフェストファイル1505には、フラグメントバンドルタイプとして、Resource(リソース用)/Function(機能拡張用)が記述されている。インストール制御部208は、OSGi206に一般アプリA1500のフラグメント上限値を用途ごとに問い合わせる。
この場合、フラグメント上限値としてリソース用として5、機能拡張用として1、修正パッチ用として無制限が取得される。また、インストール制御部208は、OSGi206に現在の一般アプリA1500の用途ごとのフラグメント数を問い合わせる。この場合、リソース用フラグメント数として0、機能拡張用フラグメント数として1、修正パッチ用フラグメント数として0が取得される。この結果、これからインストールしようとしているフラグメントY1504は、リソース用、かつ機能拡張用タイプであるため、これをインストールすると、機能拡張用のフラグメント上限数を超えてしまう。そのため、インストール制御部208は、フラグメントY1504のインストールを許可しない。
図16は、図15で示した状況における、インストール制御部208のフラグメントバンドルインストール時の制御を示すフローチャートである。インストール制御部208は、アプリ管理部207からの指示によって、フラグメントバンドルのインストール処理を開始する。
S1600において、インストール制御部208がインストールを開始する。S1601において、インストール制御部208は、OSGi206からインストール対象のホストバンドルのタイプ毎のフラグメント上限値を取得する。リソースタイプの上限値をFMCRとする。機能拡張タイプの上限値をFMCFとする。修正パッチタイプの上限値をFMCPとする。ここでFMCRは、インストール対象のホストバンドルである一般アプリAとフラグメント上限値(Resource)をキーとして取得される。ここでFMCFは、インストール対象のホストバンドルである一般アプリAとフラグメント上限値(Function)をキーとして取得される。ここでFMCPは、インストール対象のホストバンドルである一般アプリAとフラグメント上限値(Patch)をキーとして取得される。
S1602において、インストール制御部208は、OSGi206からインストール対象のホストバンドルに追加されているタイプ毎のフラグメント数を取得する。まず、S1603において、リソースタイプのフラグメント数(FCR)を取得する。ここでFCRは、インストール対象のホストバンドルである一般アプリAとフラグメントバンドル、更にResourceをキーとして取得される。
S1604において、機能拡張タイプのフラグメント数(FCF)を取得する。ここでFCFは、インストール対象のホストバンドルである一般アプリAとフラグメントバンドル、更にFunctionをキーとして取得される。
S1605において、修正パッチタイプのフラグメント数(FCP)を取得する。ここでFCPは、インストール対象のホストバンドルである一般アプリAとフラグメントバンドル、更にPatchをキーとして取得される。
S1606において、インストール制御部208は、(FMCR>FCR or FMCR=*)かつ(FMCF>FCF or FMCF=※)かつ(FMCP>FCP or FMCP=*)を満たすかどうかを判定する。その判定がYESの場合、インストール制御部208はS1607に処理を進め、フラグメントバンドルのインストールを許可する。一方、S1606における判定がNOの場合、S1608に処理を進め、フラグメントバンドルのインストールを許可しない。S1609において、インストール制御部の判断フローを終了する。
以上、本実施例4にて示したように、用途ごとのフラグメントバンドルの上限数を制御したインストールが可能となる。なお、実施例1で説明したように、S1606の判定処理において用いられるフラグメントバンドルの数(FC)は、ホストバンドルに既に紐付いているフラグメントの数であってもよく、追加予定のフラグメントの数であってもよい。そして、いずれかのフラグメントの数が各ホストバンドルが保持可能な種類毎の拡張アプリケーションの上限数未満または以下の場合にインストールが実行される。
(実施例5)
本実施形態では、実施例1〜4のようなホストバンドル毎の上限値指定をするのではなく、デバイス全体でのリソースに応じてデバイス全体の設定として上限値を指定したい場合のインストール制御の実施例を示す。なお本実施例5は、前述の課題5を解決する例となる。
図17は、課題5を説明するブロック図である。ホストバンドルである一般アプリA1700には、フラグメントバンドルであるフラグメントX1701、及び、フラグメントY1702がインストールされている。更に、ホストバンドルである一般アプリB1703には、フラグメントバンドルであるフラグメントZ1704がインストールされている。
また、デバイスのリソース量に応じて、デバイス全体のフラグメント数の上限値、及び1バンドルあたりのフラグメントバンドル数の値が、デバイスの設定値データベース1707に保持されている。このデータベースに保持されている値は、デバイス起動時にOSGiによって読み込まれ、メモリ上に保持される。このときのOSGi206のメモリ上での管理状態を1708に示す。この値は、デバイス全体のフラグメント上限値、及び1バンドルあたりのフラグメントバンドル数をキーとして取得可能である。
この状態で、一般アプリA1700をインストール先としているフラグメントバンドルであるフラグメントU1705をインストールすることを考える。インストール制御部208は、OSGi206にデバイス全体のフラグメント上限値を問い合わせる。この場合、フラグメント上限値として4が取得される。インストール制御部208は、OSGi206に1バンドルあたりのフラグメント上限値を問い合わせる。この場合、フラグメント上限値として2が取得される。
一方、インストール制御部208は、OSGi206にデバイス全体のフラグメント数を問い合わせる。この場合、全体のフラグメント数として3が取得される。また、インストール制御部208は、OSGi206に現在の一般アプリA1700のフラグメント数を問い合わせる。
この場合、フラグメント数として2が取得される。この結果、これからインストールしようとしているフラグメントU1705をインストールした場合、デバイス全体のフラグメントバンドル数は4となり、デバイス全体のフラグメント上限値4を超えない。しかし、一般アプリA1700に追加されるフラグメントバンドル数が3となり、1バンドルあたりのフラグメント上限値2を超えてしまうため、インストール制御部208は、フラグメントU1705のインストールを許可しない。
更に、この状態で一般アプリB1703をホストバンドルとしているフラグメントバンドルであるフラグメントV1706をインストールすることを考える。一方、インストール制御部208は、OSGi206にデバイス全体のフラグメント数を問い合わせる。この場合、全体のフラグメント数として3が取得される。また、インストール制御部208は、OSGi206に現在の一般アプリB1703のフラグメント数を問い合わせる。この場合、フラグメント数として1が取得される。
この結果、これからインストールしようとしているフラグメントV1706をインストールした場合、デバイス全体のフラグメント数は4となり、デバイス全体のフラグメント上限値4を超えない。また、一般アプリB1703に追加されるフラグメントバンドル数も2となり、1バンドルあたりのフラグメント上限値2を超えない。よって、インストール制御部208は、フラグメントV1706のインストールを許可する。
図18は、図8で示した状況における、インストール制御部208のフラグメントバンドルインストール時の制御を示すフローチャートである。インストール制御部208は、アプリ管理部207からの指示によって、フラグメントバンドルのインストール処理を開始する。
S1800において、インストール制御部208がインストールを開始する。S1801において、インストール制御部208は、OSGi206からデバイス全体でのフラグメント上限値(FMCT)を取得する。ここでFMCTは、デバイス全体のフラグメント上限値をキーとして取得される。
S1802において、インストール制御部208は、OSGi206から1バンドルあたりのフラグメント上限値(FMPB)を取得する。FMPBは、1バンドルあたりのフラグメントバンドル数がキーとして取得される。S1803において、インストール制御部208は、OSGi206からデバイス全体のフラグメント数(FCT)を取得する。取得されるFCTは、デバイス全体のホストバンドルである一般アプリAと一般アプリB、及びフラグメント上限値がキーとして取得される。
S1804において、インストール制御部208は、OSGi206からインストール対象のホストバンドルに追加されているフラグメント数(FC)を取得する。FCは、インストール対象のホストバンドルである一般アプリAとフラグメントバンドルがキーとして取得される。
S1805において、インストール制御部208は、FMCT>FCT かつ FMPB>FCを満たすかどうかを判定する。その判定がYESの場合、インストール制御部208はS1806に処理を進め、フラグメントバンドルのインストールを許可する。一方、S1805における判定がNOの場合、S1807に処理を進め、フラグメントバンドルのインストールを許可しない。S1808において、インストール制御部208は判断フローを終了する。
以上、本実施例5にて示したように、デバイス全体の設定としてフラグメントバンドルの上限数を制御したインストールが可能となる。なお、実施例1で説明したように、S1805の判定処理において用いられるフラグメントバンドルの数(FC)は、ホストバンドルに既に紐付いているフラグメントの数であってもよく、追加予定のフラグメントの数であってもよい。そして、いずれかのフラグメントの数が各ホストバンドルが保持可能な拡張アプリケーションの上限数未満または以下の場合にインストールが実行される。
(その他の実施形態)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(コンピュータプログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そしてそのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。

Claims (8)

  1. 特定のサービスを提供するアプリケーションを当該アプリケーションのマニフェストを基に管理するフレームワークを具備した情報処理装置であって、
    ホストアプリケーションを拡張する拡張アプリケーションをインストールする際に、前記ホストアプリケーションを拡張するためにインストールされる前記拡張アプリケーションの数が、前記ホストアプリケーションのマニフェストに記載されている当該ホストアプリケーションが保持可能な拡張アプリケーションの上限数未満または以下の場合にインストールを実行するインストール手段を備える
    ことを特徴とする情報処理装置。
  2. 前記インストール手段は、前記ホストアプリケーションをバージョンアップする際に、当該ホストアプリケーションにインストール済みの前記拡張アプリケーションの数が、バージョンアップ用ホストアプリケーションのマニフェストに記載されている当該バージョンアップ用ホストアプリケーションが保持可能な拡張アプリケーションの上限数未満または以下の場合にバージョンアップを実行する
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記インストール手段は、前記拡張アプリケーションをインストールする際に、前記ホストアプリケーションが実行中か否かを判断し、前記ホストアプリケーションが実行中であり、かつ、前記ホストアプリケーションにインストール済みの前記拡張アプリケーションの内いずれか一つの拡張アプリケーションが再起動時にアンインストールされる場合に、当該ホストアプリケーションにインストール済みの前記拡張アプリケーションの数からアンインストール対象の拡張アプリケーションを差し引いた数が、前記ホストアプリケーションが保持可能な拡張アプリケーションの上限数未満または以下の場合、再起動時にインストールを実行する
    ことを特徴とする請求項1または2に記載の情報処理装置。
  4. 前記マニフェストには、前記拡張アプリケーションの種類毎に当該ホストアプリケーションが保持可能な拡張アプリケーションの上限数が記載されており、
    前記インストール手段は、前記拡張アプリケーションをインストールする際に当該拡張アプリケーションの種類を特定し、前記ホストアプリケーションにインストール済みであって、特定された種類の拡張アプリケーションの数が当該特定された種類の拡張アプリケーションの上限数未満または以下の場合にインストールを実行する
    ことを特徴とする請求項1乃至3のいずれか一項に記載の情報処理装置。
  5. 前記インストール手段は、前記拡張アプリケーションをインストールする際に、自装置にインストール済みの前記拡張アプリケーションの数が、前記自装置が保持可能な拡張アプリケーションの上限数未満であり、かつ前記拡張アプリケーションのインストール先のホストアプリケーションにインストール済みの前記拡張アプリケーションの数が、各ホストアプリケーションが保持可能な拡張アプリケーションの上限数未満または以下である場合にインストールを実行する
    ことを特徴とする請求項1乃至3のいずれか一項に記載の情報処理装置。
  6. 前記各アプリケーションのプラットフォームは、Open Services Gateway Initiative Service Platformである
    ことを特徴とする請求項1乃至5のいずれか一項に記載の情報処理装置。
  7. 特定のサービスを提供するアプリケーションを当該アプリケーションのマニフェストを基に管理するフレームワークを具備した情報処理装置の制御方法であって、
    ホストアプリケーションを拡張する拡張アプリケーションをインストールする際に、前記ホストアプリケーションを拡張するためにインストールされる前記拡張アプリケーションの数が、前記ホストアプリケーションのマニフェストに記載されている当該ホストアプリケーションが保持可能な拡張アプリケーションの上限数未満または以下の場合にインストールを実行するインストール工程を備える
    ことを特徴とする制御方法。
  8. 請求項7に記載の制御方法をコンピュータにより実行させることを特徴とするコンピュータプログラム。
JP2013173730A 2013-08-23 2013-08-23 情報処理装置、その制御方法、及びコンピュータプログラム Active JP6147139B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013173730A JP6147139B2 (ja) 2013-08-23 2013-08-23 情報処理装置、その制御方法、及びコンピュータプログラム
US14/459,799 US9086938B2 (en) 2013-08-23 2014-08-14 Information processing apparatus, control method thereof, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013173730A JP6147139B2 (ja) 2013-08-23 2013-08-23 情報処理装置、その制御方法、及びコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2015041362A JP2015041362A (ja) 2015-03-02
JP6147139B2 true JP6147139B2 (ja) 2017-06-14

Family

ID=52481596

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013173730A Active JP6147139B2 (ja) 2013-08-23 2013-08-23 情報処理装置、その制御方法、及びコンピュータプログラム

Country Status (2)

Country Link
US (1) US9086938B2 (ja)
JP (1) JP6147139B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016035713A (ja) * 2014-08-04 2016-03-17 キヤノン株式会社 情報処理装置、情報処理装置における機能拡張方法、プログラム、およびシステム
JP2016099813A (ja) * 2014-11-21 2016-05-30 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、及びプログラム
JP6388405B2 (ja) 2014-12-26 2018-09-12 キヤノン株式会社 情報処理装置、情報処理装置の制御方法およびプログラム
US9262152B1 (en) * 2015-01-22 2016-02-16 Bank Of America Corporation Modular system including management and deployment of software updates and revisions
KR102445719B1 (ko) * 2015-12-07 2022-09-21 삼성전자 주식회사 테마 패키지 설치 속도 개선 방법 및 전자장치
JP7069969B2 (ja) 2018-03-29 2022-05-18 株式会社リコー 情報処理装置、情報処理方法及び情報処理プログラム

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226747B1 (en) * 1998-04-10 2001-05-01 Microsoft Corporation Method for preventing software piracy during installation from a read only storage medium
US20030167320A1 (en) * 2002-02-26 2003-09-04 Sun Microsystems, Inc. Registration service for registering plug-in applications with a management console
JP3942941B2 (ja) * 2002-04-22 2007-07-11 三菱電機株式会社 通信装置及びプラグインモジュール制御方法及びコンピュータに実行させるためのプログラム及びコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体
US8078740B2 (en) * 2005-06-03 2011-12-13 Microsoft Corporation Running internet applications with low rights
US7877329B2 (en) * 2005-09-23 2011-01-25 Business Objects Software Ltd. Apparatus and method for processing license keys using dynamic field mapping
US8307290B2 (en) * 2005-12-27 2012-11-06 Aten International Co., Ltd. Remote control device and method
US8458753B2 (en) * 2006-02-27 2013-06-04 Time Warner Cable Enterprises Llc Methods and apparatus for device capabilities discovery and utilization within a content-based network
JPWO2008029774A1 (ja) * 2006-09-04 2010-01-21 ソニー株式会社 ダウンロード用アドインプログラム、アップロード用アドインプログラム、書き換え用アドインプログラム、ダウンロード方法及びアップロード方法
JP2009037353A (ja) * 2007-07-31 2009-02-19 Ricoh Co Ltd 情報処理端末装置及びプログラム
US8261236B2 (en) * 2007-10-30 2012-09-04 International Business Machines Corporation Detecting plug-in and fragment issues with software products
US20090193444A1 (en) * 2008-01-29 2009-07-30 Microsoft Corporation Techniques for creating and managing extensions
US20130124696A1 (en) * 2009-03-16 2013-05-16 Apple Inc. Application products with in-application subsequent feature access using network-based distribution system
JP5460150B2 (ja) * 2009-07-06 2014-04-02 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、及び、プログラム
US9652205B2 (en) * 2009-11-25 2017-05-16 International Business Machines Corporation Method, system and computer program for bytecode weaving
JP5401425B2 (ja) * 2010-09-27 2014-01-29 京セラドキュメントソリューションズ株式会社 電子機器およびアプリケーション管理プログラム
JP2012150577A (ja) * 2011-01-17 2012-08-09 Konica Minolta Business Technologies Inc 画像処理装置、同装置におけるアプリケーションの移動処理方法及び移動処理プログラム
US9007893B2 (en) * 2013-03-20 2015-04-14 Alcatel Lucent Layered third party application software redundancy in a non-homogenous virtual chassis

Also Published As

Publication number Publication date
US20150058835A1 (en) 2015-02-26
US9086938B2 (en) 2015-07-21
JP2015041362A (ja) 2015-03-02

Similar Documents

Publication Publication Date Title
JP6147139B2 (ja) 情報処理装置、その制御方法、及びコンピュータプログラム
JP5960005B2 (ja) 画像形成装置、アプリケーションのプレインストール方法、およびプログラム
JP6648915B2 (ja) 情報処理装置、方法およびプログラム
JP6388405B2 (ja) 情報処理装置、情報処理装置の制御方法およびプログラム
EP2953023B1 (en) Information processing apparatus, application management method, and program
US9563416B2 (en) Information processing apparatus, method of controlling the same and non-transitory computer readable medium
KR102067974B1 (ko) 화상 형성장치 및 어플리케이션의 삭제방법
EP3462363B1 (en) Image forming apparatus and control method therefor
JP6570364B2 (ja) 画像形成装置及びその制御方法
JP5178319B2 (ja) アプリケーションプラットフォーム
JP6103978B2 (ja) 配信装置、デバイス装置、配信装置の制御方法およびコンピュータプログラム
JP6057740B2 (ja) 画像形成装置、情報処理方法及びプログラム
JP2015197845A (ja) 情報処理装置及びその制御方法、並びにプログラム
KR20210028579A (ko) 애플리케이션 및 정보 처리 장치
JP6929160B2 (ja) 画像形成装置およびその制御方法とプログラム
JP7490384B2 (ja) 管理装置、方法およびプログラム
JP6143476B2 (ja) アプリケーション処理装置、方法、およびそのプログラム
JP2017162106A (ja) 情報処理装置及びデバイスドライバのインストール方法
JP2008310674A (ja) 情報処理装置、操作処理方法、記憶媒体、プログラム
JP6890410B2 (ja) 情報処理装置及びアプリケーションの管理方法及びプログラム
JP6308526B2 (ja) 画像処理装置、画像処理装置の制御方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160822

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170410

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170418

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170516

R151 Written notification of patent or utility model registration

Ref document number: 6147139

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151