JP2015210769A - 情報処理装置、情報処理方法およびプログラム - Google Patents
情報処理装置、情報処理方法およびプログラム Download PDFInfo
- Publication number
- JP2015210769A JP2015210769A JP2014093608A JP2014093608A JP2015210769A JP 2015210769 A JP2015210769 A JP 2015210769A JP 2014093608 A JP2014093608 A JP 2014093608A JP 2014093608 A JP2014093608 A JP 2014093608A JP 2015210769 A JP2015210769 A JP 2015210769A
- Authority
- JP
- Japan
- Prior art keywords
- application
- installation
- information processing
- package
- path
- 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.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】 ファームに含まれるプリインストール・アプリケーションのインストール処理時間を削減する必要がある。【解決手段】 アプリケーションデータをインストールする処理する情報処理装置であって、インストール用の前記アプリケーションデータを予め記憶する第1記憶領域と、インストール先の第2記憶領域とを含む記憶手段と、所定のインストール指示に従って、前記アプリケーションデータへのパスを前記第2記憶領域に書き込む書き込み手段と、を備えることを特徴とする情報処理装置。【選択図】 図4
Description
本発明は、インストール制御を実施する情報処理装置、情報処理方法およびプログラムに関する。
電子機器に組み込まれたコンピュータシステムを制御する基幹的なソフトウェアは、ファームウェア(以降ファームと記載する)と呼ばれる。一方で、電子機器にはユーザの必要に応じて追加するソフトウェアであるアプリケーションを追加する仕組みが備わることがある。アプリケーションはパッケージと呼ばれる形式で配布され、インストール処理によって電子機器が実行可能な形式にファイルが展開される。出荷時にインストール済みのアプリケーションはプリインストール・アプリケーションと呼ばれ、それらのパッケージはファームに同梱するように開発することがある。ユーザが購入後速やかにプリインストール用アプリケーションを利用できるように、工場から出荷するまでにインストール処理を終えておくことが望ましい。このため、生産工程を短縮する上では、プリインストール用アプリケーションのインストール処理時間の削減が必要となる。
データ書き込みの処理時間を短縮する方法があった。例えば、ICカードの発行処理をより高速にするために、ICカードの発行時に必要となるファイルやデータを書き込む代わりに、事前に書き換え不可能な不揮発性メモリに初期データを記憶させておく。ICカードの発行時に初期データを書き換え可能な不揮発性メモリにコピーし、コピーした初期データを更新することにより、初期データの書き込みを不要とする方法(特許文献1)がある。また、組み込み機器のシステムプログラム更新の処理時間を削減するために、組み込み機器が更新するシステムプログラム全体を受信しない。システムプログラムの変更部分だけを含む更新オブジェクトファイルを組み込み機器が受信し、組み込み機器上で新規システムプログラムを生成してロードする方法(特許文献2)がある。
しかしながら、特許文献1では、事前に書き換え不可能な不揮発性メモリに初期データを記憶しておき、ICカードの発行時に初期データを書き換え可能な不揮発性メモリにコピーし、コピーした初期データを更新する。そのため、事前に初期データを記憶するための処理時間は必要である。
また、特許文献2では、組み込み機器上で新規システムプログラムを生成してロードするので、新規システムプログラムの生成やロードを行うための処理時間は必要である。
プリインストールを行うための処理時間を削減するために、インストール処理の対象であるファイルサイズをさらに小さくすることが必要である。しかし、従来技術では、処理対象のファイルをコピー又は生成するので、処理対象のファイルサイズをさらに小さくすることが困難であるという課題がある。
本発明は上記の課題に鑑みてなされたものであり、ファームに含まれるプリインストール用アプリケーションのインストール処理時間を削減できる情報処理装置を提供することを目的とする。また、その方法、及びプログラムを提供することを目的とする。
アプリケーションデータをインストールする情報処理装置であって、インストール用の前記アプリケーションデータを予め記憶する第1記憶領域と、インストール先の第2記憶領域とを含む記憶手段と、所定のインストール指示に従って、前記アプリケーションデータへのパスを前記第2記憶領域に書き込む書き込み手段と、を備えることを特徴とする情報処理装置。
本発明によれば、アプリケーションデータへのパスをデータ書き込み可能な第2記憶領域に書き込むので、ファームに含まれるプリインストール用アプリケーションのインストール処理時間を削減できる。
以下、添付の図面を参照して、本発明の好適な実施形態を詳細に説明する。
<実施形態1>
図1は、一般的な情報処理装置101のハードウェア構成の一例を示す図である。図1に示されるように情報処理装置101は、ハードウェア構成として、CPU11を含む。
図1は、一般的な情報処理装置101のハードウェア構成の一例を示す図である。図1に示されるように情報処理装置101は、ハードウェア構成として、CPU11を含む。
CPU11が、記憶装置13に記憶されている後述するアプリケーションやプログラム実行環境等の各々に対応するプログラムに基づき処理を行うことによって、後述する各機能、又はフローチャートに示す各処理を実現する。
また、CPU11には、バス10を介して、入力装置12、記憶装置13、表示装置14及び外部接続IF15が接続されている。入力装置12は、情報を入力するキーボード及び/又はマウスである。記憶装置13は、例えば、ROM、RAM、ハードディスク装置等を含み、上述した各プログラム以外に、プログラムに基づく処理で用いられるデータ等を記憶する。表示装置14は、画面等を表示するディスプレイである。外部接続IF15は、ネットワークインタフェース、外部機器との各種接続インタフェースである。
尚、CPU11はプログラムを実行することで各種の手段として機能することが可能である。なお、CPU11と協調して動作するASICなどの制御回路がこれらの手段として機能してもよい。また、CPU11と情報処理装置101の動作を制御する制御回路との協調によってこれらの手段が実現されてもよい。また、CPU11は単一のものである必要はなく、複数であってもよい。この場合、複数のCPU11は分散して処理を実行することが可能である。また、複数のCPU11は単一のコンピュータに配置されていてもよいし、物理的に異なる複数のコンピュータに配置されていてもよい。なお、CPU11がプログラムを実行することで実現する手段が専用の回路によって実現されてもよい。
次に、情報処理装置101上に構築するシステム構成について、図2を用いて説明する。図2は、情報処理装置101のシステム構成の一例を示す図である。
オペレーティングシステム201は、システム全体の基盤となるソフトウェアである。アプリケーション実行環境202は、例えば仮想マシンのように、オペレーティングシステム201上のプロセスでありながら、自身の上でアプリケーションが動作する環境を提供するソフトウェアである。アプリケーション管理フレームワーク203は、各アプリケーション204の動作状態を管理する機能をもつ。また、フレームワークへの指示を行うシステムアプリケーション205が動作することもある。例えば、アプリケーションのインストール・アップデートを指示するユーザインタフェースを備えるシステムアプリケーション205が挙げられる。
具体的に、本実施形態におけるアプリケーション実行環境202はJRE(Java(登録商標) Runtime Environment)とする。JREとは、Java(登録商標)言語で開発されたソフトウェアを実行するために必要なソフトウェアのセットである。JREは、クラスライブラリ、Java(登録商標)VM(Java(登録商標)言語にて記述されたアプリケーションを実行するためのソフトウェア)、及びJREを搭載する端末固有のポーティングレイヤを含む。JREが実行するアプリケーションは、JAR(Java(登録商標) Archive)と呼ばれるファイルフォーマットとして扱われることが多い。JARファイルは、コンパイルされた複数のJava(登録商標)バイトコード及びそれが使用する画像などのリソースを一つにまとめZIP形式で圧縮されたファイルである。
JREはJARファイルを入力として受け取ると、JARファイルから実行に必要なクラスファイル(Java(登録商標)言語で記述されたソースコードをJava(登録商標)コンパイラでコンパイルすることで生成されるプログラムモジュール)を読み込んで、実行する。JARファイルとは、クラスファイル及びJava(登録商標)アプリ実行過程で使用する様々なリソースファイル(イメージファイル、テキストファイル等)を、JAR形式でパッケージ化したファイルである。クラスの読み込みは、クラスローダによって行われる。クラスローダは、クラスパス(クラスが存在するパスを示す情報)を参照して、クラスを探索する。
JARファイルAには他のJARファイルBを含めることもできるが、通常のクラスローダではJARファイルA内部のJARファイルBを読み込めない。そこで、JARファイルA内部のJARファイルBを、JARファイルAの外部に展開するとともに、クラスパスに展開した場所を加えることで、JARファイルBを通常のクラスローダで読み込ませる方法がある。アプリケーション管理フレームワーク203はインストール処理時に、内部のJARファイルを外部に展開する処理を行う。
本実施形態では、ファームは図2に示すオペレーティングシステム201に対応する。ファームに含まれるJARファイルとして、プリインストール用アプリケーションのパッケージが含まれる。本実施形態はこのプリインストール用アプリケーションのインストール処理時間を削減するための情報処理装置、また、その方法、及びプログラムである。
本実施形態で用いる情報処理装置101のハードウェア構成では、記憶装置13は高速なインストール用領域と、低速な汎用領域と、ファームを格納するファーム用領域とを備える。ファームにはプリインストール用アプリケーションのパッケージが含まれる。パッケージは、各アプリケーションのJARファイルである。生産工程においてファーム用領域にファーム(プリインストール用アプリケーションのアプリケーションデータ)を書き込んだ後、ファーム用領域は書き込み禁止に設定される。ただし、ファームの更新が必要になった場合は、再度書き込み可能に設定されることもある。即ち、記憶装置13におけるファーム用領域はデータの書き込みが制限された記憶領域である。
生産工程ではプリインストール用アプリケーションを一括してインストール(一括インストール)する。従来のインストールではファーム用領域からインストール用領域にプリインストール用アプリケーションのJARファイルのデータ(アプリケーションデータ)の書き込みが行われるから、時間を要する。そこで、書き込むJARファイルのデータ量を削減し、書き込み時間(インストール処理時間)を削減することが課題となる。
これらの課題を解決するために、アプリケーション管理フレームワーク203はプリインストール用アプリケーションのインストールにおいて、ファーム用領域からインストール用領域に全てのアプリケーションデータを書き込むことを行わない。ファーム用領域へのリンクをインストール用領域に作成することでインストール領域に書き込むデータ量を削減する。書き込むデータ量が削減されると、インストールの処理時間を削減できる。以降、プリインストール用アプリケーションを一括してインストールする処理を一括インストールと記す。
初めに、インストール・アップデートの対象となるアプリケーションのパッケージ構成を、図3(a)、図3(b)、図3(c)を用いて説明する。図3(a)と図3(b)は、パッケージのファイル構成を示す図である。図3(c)はインストール後のプリインストール用アプリケーションのファイル構成を示す図である。
図3(a)に示すアプリケーション301は、JARファイルである。このJARファイルは、実行形式のプログラムであるbin(binary)302を含む。また、アプリケーションの名前、id、ベンダー、バージョンなどを記述するmanifest303(以降、マニフェストファイルと同義である)を含む。マニフェストファイルに設定情報が含まれることがある。さらに、アプリケーション301には、特定機能を実現するbin302をまとめてJARファイルにしたものを複数含めることもできる。含まれるJARファイルは、lib(library)304である。lib304はライブラリである。アプリケーション301はbin302とmanifest303を必ず含むが、ライブラリのlib304を含むとは限らない。lib304を含む場合には、展開対象のJARファイル群を記述するmanifest303の項目に、lib304のJARファイルのパスを記載する。このlib304のJARファイルのパスは設定情報の一例である。
図3(b)に示すアプリケーション307は、複数のJARファイルを含む。含んでいるライブラリlib310とlib311のパスは、manifest309の項目に記載されている。
図3(c)は、インストール後のアプリケーション301のインストール用領域402内のファイル構成である。アプリケーション301はプリインストール用のため、図3(a)に示したファイルの構成でファーム用領域401に含まれている。アプリケーション301が含むライブラリlib304は、インストールの過程でJARファイルの外部に展開され、図3(c)のようにインストール先のインストール用領域402に書き込まれている。また、ファーム用領域401に記憶されているアプリケーション301へのリンクであるリンクファイル306が作成されている。リンクファイル306の実体はシンボリックリンクであって、アプリケーション301のデータへのパス情報を含む。シンボリックリンクは、別ファイルシステム間でもリンクを実現することができる特徴をもつ。また、クラスローダがlib304を見つけるための情報が、クラスパス情報305として保存されている。アプリケーション管理フレームワーク203は、リンクファイル306を読み込むと共に、クラスパス情報305を参照してライブラリlib304を読み込むことで、アプリケーション301を実行できる。
次に、ファーム用領域401に含まれずに追加でインストールされる一般のアプリケーションについて、図3(d)を用いてインストール済みのファイル構成を説明する。図3(d)は追加して一般のアプリケーションをインストールした後のファイル構成を示す図である。以降、追加してインストールする一般のアプリケーションを一般用アプリケーションと記す。また、指定されたパッケージをインストールする処理を個別インストールと記す。一般用アプリケーションは個別インストールによって処理される。
インストールする一般用アプリケーションが図3(b)のファイル構成であるアプリケーション307とする。個別インストールにおいては、インストールするパッケージがアプリケーション管理フレームワーク203に与えられる。すると、アプリケーション管理フレームワーク203はパッケージをインストール先のインストール用領域402に書き込む。また、図3(d)に示すように、含まれるライブラリlib310とlib311は外部に展開される。また、クラスローダがライブラリlib310とlib311を見つけるための情報は、クラスパス情報312として保存される。
ここまで、インストール・アップデートの対象となるアプリケーションのパッケージ構成について説明した。
次に、アプリケーション管理フレームワーク203の動作について、図4を用いて説明する。図4は、アプリケーション管理フレームワーク203の構成と情報処理装置101が備える記憶装置の領域を示す図である。
ファーム用領域401とインストール用領域402と汎用領域403は、記憶装置13が備える記憶用領域である。パッケージ展開手段404は、書き込み先のパスを指定してデータを書き込むことで、汎用領域403とインストール用領域402のいずれにも書き込みを行える。
アプリケーション管理フレームワーク203に対するインストールの指示は、システムアプリケーション205から行われる所定のインストール指示である。本実施形態では、所定のインストール指示の指示内容としては、一括インストールと個別インストールの2種類がある。
一括インストールの指示について説明する。ファーム用領域401にはプリインストール用のアプリケーション301だけでなく、プリインストール用のアプリケーションの一覧を記載したプリインストール用アプリケーションリスト407も配置される。図4の例ではプリインストール用アプリケーションはアプリケーション301のみであり、アプリケーション301のみがプリインストール用アプリケーションリスト407に記載されている。また、システムアプリケーション205を用いずとも、アプリケーション管理フレームワーク203に読み込ませるための一括インストール指示フラグファイルを配置すれば、一括インストールの指示は可能である。配置する場所は、指示完了後にフラグファイルを削除できる場所である必要があるため、インストール用領域402または汎用領域403とする。例えば、工場生産時の初回起動ではシステムアプリケーション205が未インストールのため、一括インストール指示フラグファイルを用いる。一括インストールの指示は、一括インストール指示受付手段405によってアプリケーション管理フレームワーク203に与えられる。
次に、個別インストールの指示について説明する。個別インストールは、プリインストール用アプリケーションではない一般用アプリケーションのインストールに用いられる。ユーザが情報処理装置101にアプリケーション307をインストールしたい場合には、システムアプリケーション205を経由してアプリケーション307のパッケージを指定する。すると、システムアプリケーション205は図4に示すように、汎用領域403にアプリケーション307を配置する。そして、個別インストールの指示がシステムアプリケーション205から個別インストール指示受付手段406に与えられる。
ここから、インストールの指示を受けたときのアプリケーション管理フレームワーク203の動作について、図5を用いて説明する。図5はアプリケーションのインストール処理の手順を示すフローチャートである。
アプリケーション管理フレームワーク203は、インストール指示が個別インストールの指示かどうかを判定する(ステップS501)。個別インストールでない場合、一括インストール指示受付手段405がファーム用領域401からプリインストール用アプリケーションリスト407を読み込み(ステップS507)、リスト内のアプリケーションを全て処理したかを確認する(ステップS508)。
ステップS508で未処理のアプリケーションがあれば、そのアプリケーションのパッケージを参照する(ステップS509)。ここでは、図4のアプリケーション301を参照したものとする。そして、アプリケーション管理フレームワーク203はパッケージ展開手段404を用いて、インストール用領域402内にパッケージの展開を行う。パッケージ展開手段404は、まず参照しているパッケージであるアプリケーション301へのシンボリックリンクであるリンクファイル306を生成する(ステップS510)。そして、manifest303を読み込み、ライブラリlib304をインストール先のインストール用領域402に展開する(ステップS511)。
そして、ここまでの処理で例外が発生したかを確認し(ステップS512)、例外が発生していればインストール用領域402に書き込んだリンクファイル306とlib304を削除する(ステップS514)。例外が発生していなければ、リンクファイル306とlib304のパスをクラスパス情報305として保存する(ステップS513)。例外が発生するのは、インストール用領域402の空き容量不足や、参照しているパッケージが破損している場合である。
ステップS513あるいはステップS514が完了すると、ステップS508を再度実行する。そして、ステップS508で未処理のアプリケーションがなければ、一括インストール処理を終了する。
ステップS501で個別インストールを指示されていた場合、システムアプリケーション205は図4に示すように、汎用領域403にアプリケーション307を配置している。配置されたアプリケーション307は個別インストール指示受付手段406によって読み込まれ、パッケージ展開手段404に与えられる。パッケージ展開手段404は与えられたアプリケーション307をインストール先のインストール用領域402に書き込む(ステップS502)。そしてステップS511と同様にライブラリlib310、lib311を展開する(ステップS503)。
そして、ここまでの処理で例外が発生したかを確認し(ステップS504)、例外が発生していればインストール用領域402に書き込んだアプリケーション307とライブラリlib310とlib311を削除する(ステップS506)。例外が発生していなければ、アプリケーション307とライブラリlib310とlib311のパスをクラスパス情報として保存し(ステップS505)、個別インストール処理は終了する。
以上、アプリケーション管理フレームワーク203がインストール処理を行う場合の実施形態を説明した。アプリケーション管理フレームワーク203は、ファーム用領域401へのリンクファイルを作成することでインストール先のインストール用領域402に書き込むデータ量を削減している。
本実施形態の一括インストールでは、ファーム用領域401に記憶してあるアプリケーション301のパッケージをインストール先のインストール用領域402に書き込むことを行わない。アプリケーション301のパッケージへのリンクファイルをインストール用領域402に生成して書き込む。これにより、インストール用領域402に書き込むデータ量を削減したため、データ書き込み時間が短くなり、より早くインストール処理を行うことができる。
<実施形態2>
次に、アプリケーション管理フレームワーク203のアップデートの処理手順について、図6を用いて説明する。図6は、アプリケーション管理フレームワーク203がアップデートで行う処理の手順を示すフローチャートである。
次に、アプリケーション管理フレームワーク203のアップデートの処理手順について、図6を用いて説明する。図6は、アプリケーション管理フレームワーク203がアップデートで行う処理の手順を示すフローチャートである。
アップデートの指示方法は、実施形態1に記載したインストールの指示方法と同様である。アプリケーション管理フレームワーク203は、アップデート対象の新規パッケージに該当するアプリケーションのインストール済みパッケージを、マニフェスト(マニフェストファイル)に記載されるアプリケーションIDによって特定する。該当するインストール済みパッケージが存在しなければ、新規インストールとして扱う。
なお、通常利用時にはファーム用領域401は書き込みできない状態である。しかし、ファームの更新が必要になった場合は、書き込み許可設定を行うなどして、ファーム用領域401を更新する。ファームを更新すると、インストール用領域402に展開済みのlib304やリンクファイル306が、ファーム用領域401内の更新されたアプリケーション301と整合性がとれなくなる。そのため、ファームの更新後に一括インストール指示受付手段405から、プリインストール用アプリケーションを一括してアップデートする一括アップデート指示がアプリケーション管理フレームワーク203に与えられる。
初めに、図6を用いて一括アップデートの処理手順について説明する。ステップS601、ステップS609、ステップS610、ステップS611は、それぞれ一括インストールの処理手順であるステップS501、ステップS507、ステップS508、ステップS509と同様である。
ステップS611において、パッケージのマニフェスト(マニフェストファイル)を参照することで、アップデートすべきインストール済みパッケージが特定される。特定されたパッケージのリンクファイル306、およびlib304は、ファーム用領域401内のアプリケーション301と整合性がとれていない状態である。そこで、インストール用領域402のインストール済みパッケージのlib304とリンクファイル306は、パッケージ展開手段404によって削除される(ステップS612)。そして、ステップS510と同様にリンクファイルを生成し(ステップS613)、ステップS511と同様にマニフェスト(マニフェストファイル)を読み込んでlibを展開する(ステップS614)。
そして、ステップS512と同様にここまでの処理で例外が発生したか確認し(ステップS615)、例外が発生していなければステップS513と同様の処理を行う(ステップS616)。
ステップS615において例外が発生していた場合、アップデートに失敗したアプリケーション301は実行できなくなる。そこで、アプリケーション管理フレームワーク203はアップデートに失敗したアプリケーション301が実行できなくなったという警告メッセージを表示する(ステップS617)。表示方法はコンソールに直接表示する方法や、ログファイルとして記録しておく方法が考えられるが、特に制限はない。また、警告メッセージの内容も上記に限る必要はない。
ステップS616、ステップS617のいずれかが終了すると再度ステップS610を実行する。ステップS610においてプリインストール用アプリケーションリスト407に記載されるアプリケーションを全て処理した場合、一括アップデート処理は終了する。
次に、個別アップデートの処理手順について、図8(a)、図8(b)、図8(c)、図8(d)を用いて説明する。図8(a)、図8(b)、図8(c)、図8(d)は、アプリケーション管理フレームワーク203による一般用アプリケーションのアップデートの各処理において、汎用領域403とインストール用領域402に書き込まれたファイルを示した図である。インストール済みアプリケーション801がアプリケーション806によって個別アップデートされる例で説明する。
アプリケーション806はアプリケーション801のバージョンアップ版であり、manifest803とmanifest808において、アプリケーションの名前とidは同一である。アップデート開始時点における汎用領域403とインストール用領域402の状態は、図8(a)である。
ステップS601で個別アップデートと判定された場合、パッケージ展開手段404はインストール用領域402内のアプリケーション801、lib804を汎用領域403に退避する(ステップS602)。退避処理は、汎用領域403へのコピーとインストール用領域402からの削除によって行う。退避処理は、アップデートに失敗した場合にアップデート前のアプリケーション801が使用出来る状態に復旧するために行う。退避後、汎用領域403とインストール用領域402の状態は、図8(b)となる。
そして、ステップS502、ステップS503、ステップS505、ステップS505と同様の処理をステップS603、ステップS604、ステップS605、ステップS606で行い、新しいパッケージにアップデートする。ステップS606終了後、汎用領域403とインストール用領域402の状態は、図8(c)となる。
ステップS605において例外が発生していた場合、インストール用領域402に新規に書き込んだファイルを削除し、退避したアプリケーション801、lib804をインストール用領域402に戻す(ステップS607)。想定される例外として、インストール用領域402の空き領域不足による書き込み例外がある。例えば、アップデート前とアップデート後でパッケージのサイズが増加する場合に、空き領域不足の例外が起こりえる。また、ステップS602の退避を行わずに新しいパッケージをステップS603、ステップS604で書き込んでしまうと、インストール用領域402の空き領域不足が起きやすくなる。また、退避を行わずに上書きで書き込んでしまうと、アップデートが失敗した時にステップS610のようにアップデート前の状態に戻せない。
ステップS606、ステップS607のいずれかが完了すると、汎用領域に配置されているパッケージは削除され(ステップS608)、アップデートの処理は終了する。ステップS605において例外が発生しなかった場合、ステップS608後の汎用領域403とインストール用領域402の状態は、図8(d)となる。
ただし、退避処理は省略することもできる。インストール用領域402に十分な空き容量があれば、退避処理を行う必要はない。アップデート処理中はアプリケーション801とアプリケーション806を共にインストール用領域402に配置し、アップデート処理の最後にアプリケーション806のパッケージを削除することもできる。こうすると退避処理にともなう書き込み処理がなくなるため、より高速にアップデートの処理が可能となる。
なお、一括インストールされたアプリケーションを個別アップデートによってアップデートするときも、本実施形態は問題なく動作する。個別インストールされたアプリケーションが一括アップデート対象となる場合も問題なく動作する。
以上、アプリケーション管理フレームワーク203がアップデート処理を行う場合の実施形態を説明した。
本実施形態では、一括インストールされたアプリケーションのアップデートは、実施形態1と同様である。ファーム用領域401に格納してある更新後のアプリケーション301に対して、インストール用領域402においてリンクファイルを生成して書き込むので、データ書き込み時間が短くなり、早くアップデート処理を行うことができる。
<実施形態3>
実施形態1、2では、ファーム用領域401にアプリケーションのパッケージが一般的なJARファイルの形式で格納される例を説明した。しかし、ファームは一般的に特定のデバイスや特定の機種向けに作成される。ファームにアプリケーションのパッケージを含めるときに、アプリケーション管理フレームワーク203によるインストール処理に適した形式に変更しておけば、インストールに要する時間と記憶領域の使用量を削減できる。
実施形態1、2では、ファーム用領域401にアプリケーションのパッケージが一般的なJARファイルの形式で格納される例を説明した。しかし、ファームは一般的に特定のデバイスや特定の機種向けに作成される。ファームにアプリケーションのパッケージを含めるときに、アプリケーション管理フレームワーク203によるインストール処理に適した形式に変更しておけば、インストールに要する時間と記憶領域の使用量を削減できる。
実施形態1では、アプリケーション301のパッケージをインストール用領域402に書き込まずに、リンクファイル306を作成することで書き込むデータ量を削減した。しかし、アプリケーション301に含まれるlib304は、通常のクラスローダが読み込めるようにインストール用領域402に書き込んでいた。もし、lib304がファーム用領域401内かつアプリケーション301の外部に記憶されていれば、lib304をインストール用領域402に書き込まずにリンクファイルを作成するだけでインストール処理を完了できる。
また、プリインストール用アプリケーションが複数ある場合に、それらのアプリケーションが同一のlibを含むことがある。例えば、通信機能を実現するlibは多くのアプリケーションで共通である。また、ファームとプリインストール用アプリケーション間で同一のlibを共有することもある。同一のlibをファーム用領域401に重複して格納しないようにすれば、ファーム用領域401が消費する領域量を削減することができるので、インストールに要する時間を削減できる。
ファームに含めるアプリケーションのパッケージをアプリケーション管理フレームワーク203によるインストール処理に適した形式に変更する実施形態を、図7を用いて説明する。図7は、パッケージを改変又は変更してファームに組み込む処理の手順を示すフローチャートである。
初めに、ファームにパッケージを改変又は変更して組み込む手順について説明する。ファームの改変作業は、スクリプトを用いて自動実行するものとする。スクリプトを実行するコンピュータ又は変更装置を情報処理装置101と異なる、外部のコンピュータ又は変更装置とする。
スクリプトは、一般的なJARファイルの形式であるアプリケーションのパッケージ群を、オリジナルパッケージ群として参照可能とする。スクリプトは、プリインストールするパッケージの一覧を作成する(ステップS701)。一覧には、各JARファイルのファイル名を記載する。
そして、一覧のパッケージが全てファームに組み込み済みかを確認する(ステップS702)。まだ組み込まれていないパッケージがあれば、パッケージを一つ取得する(ステップS703)。
そして、取得したパッケージのマニフェスト(マニフェストファイル)を参照し、展開対象のlibを取得する(ステップS704)。
そして、展開対象のlibと同一のlibが全てファームに組み込まれているかを確認する(ステップS705)。libが同一であるかの判定は、Linux(登録商標)環境等で使用出来るdiffコマンドを用いて行える。また、libもJARファイルであるため、マニフェストを含んでいる。libのマニフェストに記載されているIDとバージョンを比較することでも、同一であるかを判定することができる。バージョンが異なる場合は、同一ではない可能性があるため同一でないと判定する。
ステップS705で展開対象のlibにファームに組み込まれていないものがあれば、組み込まれていないlibをファームに組み込む(ステップS706)。ファームに組み込み時には、libのファイル名は一意のものにリネームする。リネームは、複数のパッケージで異なるlibが同一の名前で使われている場合に、異なるlibで組み込み済みのlibを上書きしないために行う。
ステップS705で展開対象のlibが全てファームに組み込まれている、あるいはステップS706が完了すると、展開対象のlibを取得したパッケージから削除する(ステップS707)。
そして、取得したパッケージのマニフェストに記載されている展開対象のlibのパスを、ファームに組み込み済みの展開対象と同一のlibのパスに改変又は変更する(ステップS708)。
以上の変更を行うと、スクリプトはパッケージをファームに組み込む(ステップS709)。そして、再度ステップS702を行う。
ステップS702でプリインストールパッケージが全てファームに組み込み済みの場合、ファームの作成は終了する。
ただし、ステップS705において展開対象のlibを全てファームに組み込まなくてもよい。パッケージ内に残したいlibがあれば、ステップS707においてlibを削除せず、ステップS708のマニフェスト改変でパスの変更を行わなければよい。パッケージ内に残したいlibの例としては、パッケージ固有のlibなどが挙げられる。
また、情報処理装置101上でスクリプトを実行する構成も可能である。生産工程において、ファーム用領域401、またはインストール用領域402、または汎用領域403に一度オリジナルパッケージ群を格納し、スクリプトを実行して前述と同様の処理を行う。そして、スクリプトは改変又は変更したパッケージをファーム用領域401に書き込み、オリジナルパッケージ群を削除する。
ここまで、ファームを作成する手順について説明した。この手順を実施する前のパッケージとファームに組み込み後のパッケージのファイルの構成を図9に示す。図9は、一般的なJARファイル形式であるオリジナルのパッケージのファイル構成と、ファームに組み込み後のパッケージのファイル構成を示す図である。
図9では、アプリケーション907とアプリケーション911をファームに組み込む例を示している。アプリケーション907とアプリケーション911には、lib910が共通して含まれている。アプリケーション911とアプリケーション907は、図9のファーム用領域401に示すファイルのように組み込まれる。
図9左側に示したアプリケーション907のlib910のファイル名を、“lib_english”とする。このとき、manifest909にはlib910のパスが“./lib_english”として記載されている。ファームに組み込み後、lib910、lib914がファーム用領域401の“commonlib”という名前のフォルダに格納され、commonlibフォルダは情報処理装置101上で、“/app/commonlib”というパスにマウントされるとする。また、ステップS705におけるリネーム処理によって、lib910は“lib001”にリネームされたとする。このとき改変マニフェスト915には、“/app/commonlib/lib001”のようにパスが記載される。
ここまで、ファームの作成手順と作成したファームのファイル構成について説明した。ここから、作成したファームに含まれるプリインストール用アプリケーションのインストール手順について、図10と図11を用いて説明する。図10は、ファーム用領域401のパッケージをインストール用領域402にインストール後のファイル構成を示す図である。図11はインストール処理の手順を示すフローチャートである。
図10のように、ファーム用領域401にアプリケーション907とアプリケーション911が含まれる例で説明する。プリインストール用アプリケーションリスト407には、アプリケーション907とアプリケーション911が記載されているものとする。
図11のステップS1101では、ステップS501と同様にアプリケーション管理フレームワーク203はインストールの指示が個別インストールであるかどうかを判定する。個別インストールであると判定した場合、個別インストールの処理手順であるステップS1102、S1103、S1104、S1105、S1106は、それぞれS502、S503、S504、S505、S506と同様である。
ステップS1101にて個別インストールではないと判定した場合、つまり一括インストール処理の処理手順であるステップS1107、S1108、S1109は、それぞれステップS507、S508、S509と同様の処理である。
図11のステップS1109で参照したパッケージが図10のファーム用領域401内のアプリケーション907であるとする。このとき、パッケージ展開手段404は参照パッケージのリンクファイル1001を生成する(ステップS1110)。
実施形態1ではlibを展開してインストール用領域402に書き込んだ一方、本実施形態では展開済みのlib910がファーム用領域401に含まれている。そのため、パッケージ展開手段404は改変マニフェスト915を読み込んでlib910へのリンクであるリンクファイル1002を生成する(ステップS1111)。
そして、改変マニフェスト915に参照パッケージが含むlibの記載があるかを確認し(ステップS1112)、記載があればそのlibをステップS511と同様に展開する(ステップS1116)。
ステップS1112で記載がない場合、またはステップS1116が完了すると、ここまでの処理で例外が発生したかを確認する(ステップS1113)。例外が発生していなければ、リンクファイル1001とリンクファイル1002のパスをクラスパス情報1003として保存する(ステップS1114)。ステップS1113で例外が発生していれば、インストール用領域に生成されたリンクファイル1001、リンクファイル1002を削除する(ステップS1115)。
ステップS1114、またはステップS1115が完了すると、再度ステップS1108を実行する。そして、アプリケーション907と同様にアプリケーション911についても、ステップS1109を実行して、S1110によってリンクファイル1004を作成する。そして、ステップS1111を実行してlib910へのリンクファイル1005とlib914へのリンクファイル1006を作成する。そしてステップS1112、S1113を実行し、ステップS1114においてリンクファイル1004、リンクファイル1005、リンクファイル1006のパスをクラスパス情報1007として保存する。そして、再度ステップS1108を実行する。
そして、ステップS1108で全てのアプリケーションを処理したと判定し、一括インストールの処理は終了する。
以上、アプリケーション管理フレームワーク203によるインストール処理に適した形式に変更したパッケージをファームに含めてインストールする手順について説明した。
本実施形態では、インストール処理に適した形式にパッケージを変更したので、実施形態1よりもデータ書き込み時間が短くなり、高速にインストールを行うことができる。
<実施形態4>
実施形態3では、リンクファイルを用いて、アプリケーションを読み込むようにして、書き込むデータ量を削減した。しかし、記憶装置13を管理するファイルシステムによっては、書き込むデータ量が小さい空のファイルの作成ですら、時間を要する場合がある。このような場合には、アプリケーション204のインストール処理においてアプリケーション管理フレームワーク203が作成するファイル数を削減することで、情報処理装置101のパフォーマンスを向上させることが要求される。
実施形態3では、リンクファイルを用いて、アプリケーションを読み込むようにして、書き込むデータ量を削減した。しかし、記憶装置13を管理するファイルシステムによっては、書き込むデータ量が小さい空のファイルの作成ですら、時間を要する場合がある。このような場合には、アプリケーション204のインストール処理においてアプリケーション管理フレームワーク203が作成するファイル数を削減することで、情報処理装置101のパフォーマンスを向上させることが要求される。
実施形態3では、アプリケーション907のインストールにおいて、リンクファイル1001とリンクファイル1002とクラスパス情報1003を作成した。しかし、クラスパス情報1003の内容はリンクファイル1001とリンクファイル1002のパスである。クラスパス情報1003の内容を、ファーム用領域401内のアプリケーション907のjarのパスと、アプリケーション907が必要とするlib910のパスにすることで、リンクファイル1001とリンクファイル1002を作成する必要はなくなる。
リンクファイルを作成せずにインストール処理を高速に行う実施形態を、図12を用いて説明する。図12は、実施形態4にかかるインストール処理のフローチャートである。
ステップS1201、ステップS1202、ステップS1203、ステップS1204、ステップS1205、ステップS1206は、それぞれステップS1101、ステップS1102、ステップS1103、ステップS1104、ステップS1105、ステップS1106と同様である。
また、ステップS1207、ステップS1208、ステップS1209は、ステップS1107、ステップS1108、ステップS1109と同様である。
図11のステップS1109で参照したパッケージが図10のファーム用領域401内のアプリケーション907であるとする。このとき、パッケージ展開手段404は参照パッケージのパスを、クラスパス情報として保持する(ステップS1210)。保持の方法としては、プログラム中の変数への格納などがある。
そして、パッケージ展開手段404は改変マニフェスト915を読み込んでlib910のパスを、クラスパス情報に追加して保持する(ステップS1211)。
そして、ステップS1112、ステップS1116と同様の処理を行う(ステップS1212、ステップS1215)。
そして、ステップS1113と同様にここまでの処理で例外が発生したかを確認し(ステップS1213)、例外が発生していなければ、ステップS1114と同様の処理を行う(ステップS1214)。ステップS1213で例外が発生していても、実施形態4ではリンクファイルを作成していないため、削除すべきファイルは存在しない。
本実施形態は、リンクファイルを作成せずに高速にインストールを行うことができる。
<その他の実施形態>
以上、実施形態例を詳述したが、本発明は例えば、システム、装置、方法、プログラム若しくは記録媒体(記憶媒体)等としての実施態様をとることが可能である。具体的には、複数の機器(例えば、ホストコンピュータ、インタフェース機器、撮像装置、webアプリケーション等)から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
以上、実施形態例を詳述したが、本発明は例えば、システム、装置、方法、プログラム若しくは記録媒体(記憶媒体)等としての実施態様をとることが可能である。具体的には、複数の機器(例えば、ホストコンピュータ、インタフェース機器、撮像装置、webアプリケーション等)から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
また、本発明の目的は、以下のようにすることによって達成されることはいうまでもない。即ち、前述した実施形態の機能を実現するソフトウェアのプログラムコード(コンピュータプログラム)を記録した記録媒体(または記憶媒体)を、システムあるいは装置に供給する。係る記憶媒体は言うまでもなく、コンピュータ読み取り可能な記憶媒体である。そして、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
101 情報処理装置
301 アプリケーション
306 リンクファイル
401 ファーム用領域
402 インストール用領域
404 パッケージ展開手段
301 アプリケーション
306 リンクファイル
401 ファーム用領域
402 インストール用領域
404 パッケージ展開手段
Claims (12)
- アプリケーションデータをインストールする情報処理装置であって、
インストール用の前記アプリケーションデータを予め記憶する第1記憶領域と、インストール先の第2記憶領域とを含む記憶手段と、
所定のインストール指示に従って、前記アプリケーションデータへのパスを前記第2記憶領域に書き込む書き込み手段と、
を備えることを特徴とする情報処理装置。 - 前記アプリケーションのパッケージにライブラリが含まれる場合、前記書き込み手段は、前記アプリケーションデータへのパスと前記ライブラリを前記第2記憶領域に書き込むことを特徴とする請求項1に記載の情報処理装置。
- 前記アプリケーションのパッケージにライブラリが含まれ、前記アプリケーションのパッケージの外部の前記第1記憶領域に前記ライブラリが記憶された場合、前記書き込み手段は、前記アプリケーションデータへのパスと前記アプリケーションのパッケージの外部に記憶された前記ライブラリへのパスを、前記第2記憶領域に書き込むことを特徴とする請求項1に記載の情報処理装置。
- 前記アプリケーションのパッケージ内の前記ライブラリを削除し、前記アプリケーションのパッケージに含まれる設定情報における、前記アプリケーションのパッケージ内の前記ライブラリへのパスを前記アプリケーションのパッケージの外部に展開された前記ライブラリへのパスに変更する変更手段をさらに備えることを特徴とする請求項3に記載の情報処理装置。
- 前記設定情報はマニフェストファイルであることを特徴とする請求項4に記載の情報処理装置。
- 前記書き込み手段は、前記アプリケーションのパッケージへのパスと前記ライブラリへのパスとを含む一つのファイルを前記第2記憶領域に書き込むことを特徴とする請求項3乃至5の何れか1項に記載の情報処理装置。
- 前記アプリケーションのパッケージへのパスと前記ライブラリへのパスはそれぞれシンボリックリンクであることを特徴とする請求項3乃至5の何れか1に記載の情報処理装置。
- 前記アプリケーションは、プリインストール用のアプリケーションであることを特徴とする請求項1乃至7の何れか1に記載の情報処理装置。
- プリインストール用の前記アプリケーションは複数ある場合、複数の前記アプリケーションを記載したリストを用いて、複数の前記アプリケーションを一括インストールすることを特徴とする請求項8記載の情報処理装置。
- 前記第1記憶領域に記憶された前記アプリケーションデータが更新された場合、前記書き込み手段は、前記第2記憶領域に書き込まれた前記パスを削除し、更新された前記アプリケーションデータへのパスを前記第2記憶領域に書き込むことを特徴とする請求項1記載の情報処理装置。
- アプリケーションデータをインストールする情報処理方法であって、
インストール用の前記アプリケーションデータを第1記憶領域に予め記憶する記憶工程と、
所定のインストール指示に従って、前記アプリケーションデータへのパスをインストール先の第2記憶領域に書き込む書き込み工程と、
を備えることを特徴とする情報処理方法。 - コンピュータに、
インストール用のアプリケーションデータを第1記憶領域に記憶させる記憶手順と、
所定のインストール指示に従って、前記アプリケーションデータへのパスを第2記憶領域に書き込ませる書き込み手順と、
を実行させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014093608A JP2015210769A (ja) | 2014-04-30 | 2014-04-30 | 情報処理装置、情報処理方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014093608A JP2015210769A (ja) | 2014-04-30 | 2014-04-30 | 情報処理装置、情報処理方法およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015210769A true JP2015210769A (ja) | 2015-11-24 |
Family
ID=54612872
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014093608A Pending JP2015210769A (ja) | 2014-04-30 | 2014-04-30 | 情報処理装置、情報処理方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2015210769A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017228127A (ja) * | 2016-06-23 | 2017-12-28 | 株式会社リコー | 情報処理装置、プログラム、Webアプリケーション管理方法及び情報処理システム |
JP2019028689A (ja) * | 2017-07-28 | 2019-02-21 | 日本電信電話株式会社 | 不要ファイル検出装置、不要ファイル検出方法および不要ファイル検出プログラム |
CN112488249A (zh) * | 2020-10-21 | 2021-03-12 | 深圳市华信智能科技股份有限公司 | 一种ic卡智能读取应用记录的方法 |
JP7476999B2 (ja) | 2022-02-17 | 2024-05-01 | 株式会社リコー | 情報処理装置、プログラム、Webアプリケーション管理方法及び情報処理システム |
-
2014
- 2014-04-30 JP JP2014093608A patent/JP2015210769A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017228127A (ja) * | 2016-06-23 | 2017-12-28 | 株式会社リコー | 情報処理装置、プログラム、Webアプリケーション管理方法及び情報処理システム |
US10817210B2 (en) | 2016-06-23 | 2020-10-27 | Ricoh Company, Ltd. | Information processing apparatus, method of managing web application, and non-transitory computer-readable medium |
JP2019028689A (ja) * | 2017-07-28 | 2019-02-21 | 日本電信電話株式会社 | 不要ファイル検出装置、不要ファイル検出方法および不要ファイル検出プログラム |
CN112488249A (zh) * | 2020-10-21 | 2021-03-12 | 深圳市华信智能科技股份有限公司 | 一种ic卡智能读取应用记录的方法 |
JP7476999B2 (ja) | 2022-02-17 | 2024-05-01 | 株式会社リコー | 情報処理装置、プログラム、Webアプリケーション管理方法及び情報処理システム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5007046B2 (ja) | コンポーネントベースのソフトウェア・プロダクトの保守 | |
EP1398694B1 (en) | Information processing method | |
JP4979287B2 (ja) | 画像処理装置及びプログラム | |
US6665735B1 (en) | Method of changing a dynamic link library function efficiently and a computer system for executing the same | |
US8843920B2 (en) | Systems and methods for deferring software implementation decisions until load time | |
JP2013520744A (ja) | 最小ブートイメージの生成方法及びその装置 | |
US20060176499A1 (en) | Information processing apparatus having customized driver, method of controlling the same, and medium storing control program | |
JP2008021111A (ja) | 業務システム構成変更方法、管理コンピュータ、および、業務システム構成変更方法のプログラム | |
JP2007272763A (ja) | モジュールインストール方法及び装置 | |
JP2015210769A (ja) | 情報処理装置、情報処理方法およびプログラム | |
JP2018045544A (ja) | プログラム処理装置およびプログラム | |
JP2010086410A (ja) | メモリ保護方法、情報処理装置、メモリ保護プログラム及びメモリ保護プログラムを記録した記録媒体 | |
US9086938B2 (en) | Information processing apparatus, control method thereof, and storage medium | |
EP2329368B1 (en) | Updating content without using a mini operating system | |
JP2005284491A (ja) | 計算機の起動時間短縮方式 | |
JP4402889B2 (ja) | ソフトウェアのバージョンアッププログラム、およびバージョンアップ方法 | |
JP5683186B2 (ja) | 起動高速化方法、情報処理装置及びプログラム | |
WO2011109566A2 (en) | High and low value application state | |
CN113849245B (zh) | 一种应用程序运行方法、计算设备及存储介质 | |
JP4988226B2 (ja) | プログラム生成装置およびプログラム生成方法およびプログラムおよび記録媒体 | |
JP4241884B2 (ja) | 情報処理装置又は情報処理方法並びに記憶媒体 | |
JP2008305021A (ja) | 情報処理装置及びアプリケーション管理方法 | |
JP6143476B2 (ja) | アプリケーション処理装置、方法、およびそのプログラム | |
JP4881416B2 (ja) | プログラムを格納した記憶媒体及び情報処理装置並びに情報処理方法 | |
JP2008052703A (ja) | モーションコントローラのカスタマイズ装置およびカスタマイズ方法 |