以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、携帯端末に対して本発明を適用した場合の実施の形態である。
[1.携帯端末の構成及び機能概要]
先ず、図1等を参照して、本実施形態に係る携帯端末の構成及び機能概要について説明する。図1は、本実施形態に係る携帯端末の概要構成例を示すブロック図である。図1に示すように、携帯端末1は、NFC対応端末であり、CLF11、UIMカード12、ベースバンドプロセッサ13、及びバッテリー14等を備えて構成されている。その他、携帯端末1は、図示しないが、移動体無線通信部、操作・表示部、及び記憶部等を備える。移動体無線通信部は、移動体通信ネットワークを利用した無線通信機能を有する。移動体通信ネットワークは、例えば、電話用回線交換ネットワーク、及びインターネットに接続するためのデータ通信用パケット交換ネットワークを含む。移動体無線通信部は、図示しないアンテナを介して、最寄りの基地局との間で無線通信を行い、当該基地局及び移動体通信ネットワークを介して他の携帯端末やサーバとの間で通信を行う。操作・表示部は、例えば、ユーザの指やペン等による操作指示を受け付ける入力機能と、情報を表示する画面を有するタッチパネルとを備える。操作・表示部は、ユーザからの操作指示を受け付け、その操作指示に応じた信号をベースバンドプロセッサ13へ出力する。記憶部は、例えば不揮発性メモリから構成され、オペレーティングシステム(Operating System、以下、「OS」という)、アプリケーションプログラム、及びブラウザプログラム等が記憶される。携帯端末1は、音声処理部及びスピーカを備えてもよい。なお、携帯端末1には、携帯電話機やスマートフォン等を適用できる。
CLF11は、NFCの規格で規定される非接触通信を行う非接触型ICチップであり、図示しないが、CPU(Central Processing Unit)、所定のプログラムを記憶する不揮発性メモリ(例えばフラッシュメモリ等)、データを一時記憶するRAM(Random Access Memory)、UIMカード12との間のインターフェースを担うI/Oポート(SWIO(Single Wire protocol Input/Output))、及びベースバンドプロセッサ13との間のインターフェースを担うI/Oポート等を備えている。また、CLF11には、非接触のフィールド内で、非接触ICカードリーダを備える外部装置2との間で非接触通信を行うためのアンテナ11aが接続されており、CLF11は、非接触通信プロトコル処理を担う。CLF11における非接触通信プロトコルは、携帯端末1が外部装置2と非接触で通信を行うための通信プロトコル(つまり、携帯端末1としての通信プロトコル)であり、UIMカード12からの設定指示により設定される。
ベースバンドプロセッサ13は、携帯端末1のユーザからの操作指示(例えば、操作・表示部を介した操作指示)に応じて各種処理を実行する。また、ベースバンドプロセッサ13は、ブラウザプログラムを実行することによりブラウザとして機能し、ユーザからの指示にしたがって移動体無線通信部及び移動体通信ネットワークを介して特定のサーバとの間で通信を行う。バッテリー14は、携帯端末1の電源であり、携帯端末1を動作させるための電力を外部から充電可能になっている。ベースバンドプロセッサ13は、バッテリー14から供給された電力をCLF11及びUIMカード12へ供給(電源供給)する。
UIMカード12は、UICC(Universal Integrated Circuit Card)の一つであり、従来のSIM(Subscriber Identity Module)カードをベースに機能を拡張された接触型ICチップ12aを搭載する。なお、UIMカード12は、NFC対応UIMカードであり、本発明のICカードの一例である。また、接触型ICチップ12aは、本発明の電子情報記憶媒体の一例である。図2は、UIMカード12に搭載される接触型ICチップ12aのハードウェア構成例を示す図である。なお、接触型ICチップ12aは、携帯端末1の回路基板上に直接組み込まれて構成されるようにしてもよく、例えばeUICC(Embedded Universal Integrated Circuit Card)として、携帯端末1から容易に取り外しや取り換えができないように携帯端末1と一体的に搭載されてもよい。
図2は、接触型ICチップ12aのハードウェア構成例を示す図である。図2に示すように、接触型ICチップ12aは、CPU121、RAM122、ROM(Read Only Memory)123、不揮発性メモリ124、及びI/O回路125を備えて構成される。なお、I/O回路125には、例えばISO7816等によって定められたC1〜C8の8個の端子が備えられている。C1端子は電源端子(VCC)であり、C5端子はグランド端子(GND)である。また、C2端子は、リセット端子(RST)であり、ベースバンドプロセッサ13とのインターフェースのリセット信号を入力するために用いられる。また、C3端子は、クロック端子(CLK)であり、ベースバンドプロセッサ13とのインターフェースのクロックを入力するために用いられる。また、C7端子は、ベースバンドプロセッサ13との間のインターフェースを担う端子であり、UIMカード12とベースバンドプロセッサ13との間の通信のために用いられる。また、C6端子は、CLF11との間のインターフェースを担う端子(SWIO)であり、CLF11との間の通信のために用いられる。なお、CLF11とUIMカード12間のインターフェースには上述したように、SWPが適用される。
CPU121は、ROM123または不揮発性メモリ124に記憶された各種プログラムを実行するプロセッサ(コンピュータ)である。不揮発性メモリ124には、例えばフラッシュメモリが適用される。不揮発性メモリ124に記憶される各種プログラム、及びデータの一部は、ROM123に記憶されてもよい。なお、不揮発性メモリ124は、「Electrically Erasable Programmable Read-Only Memory」であってもよい。本実施形態において、ROM123または不揮発性メモリ124との何れかに記憶されるプログラムには、OS、仮想マシン、本発明の削除処理プログラム、複数のアプリケーションプログラム、及び複数のSDプログラム等が含まれる。なお、本発明の削除処理プログラムは、OSまたはSDプログラム内に組み込まれてもよいし、或いは、OS及びSDプログラムとは独立したミドルウェアとしてインストールされてもよい。
アプリケーションプログラムは、UIMカード12においてアプリケーションインスタンス(これを、「アプリケーション」という)の機能を実現するための複数種類の実行可能ファイル(言い換えれば、パッケージ)として記憶される。実行可能ファイルの例として、Java Card CAP(Converted Applet) Fileが挙げられ、アプリケーションの例として、Java Appletが挙げられる。実行可能ファイルは、UIMカード12内へロードされ、UIMカード12内の他の実行可能ファイルとリンクして使用される。アプリケーション(言い換えれば、アプレット)は、実行可能ファイルから生成(言い換えれば、インスタンス化)された複数のオブジェクトの集合であり、OSからのコマンドを処理する実体である。つまり、オブジェクトは、アプリケーションの構成要素である。オブジェクトは、実行可能ファイルにおいて定義されたクラス(言い換えれば、アプレットクラス)に基づき生成される。クラスは、オブジェクトを一般化した雛形であり、メソッド、及びフィールド(つまり、インスタンスフィールド)を定義する。つまり、クラスは、数多くあるメソッド及びフィールドを種類ごとに分類して、適切な単位に分割するというモジュール化の役割を有する。メソッドは、そのクラスの動作(つまり、複数の処理をプログラムコード(例えば、バイトコード)で記述されたもの)を表し、フィールドは、そのクラスの属性を表す。そして、例えば、関連する複数のクラスが纏められることで1つの実行可能ファイルを生成することができる。なお、各クラスには、それぞれ固有の識別子としてクラスIDが付与される。また、UIMカード12に記憶された各実行可能ファイル及び各アプリケーションには、それぞれ固有の識別子としてAIDが付与される。
図3は、実行可能ファイルF11の構成例を示す概念図である。図3に示す実行可能ファイルF11は、インポートリスト、アプレットクラス情報、クラス情報、プログラムコード、スタティックフィールド情報、及びエクスポートリストを含む。ここで、インポートリストは、実行可能ファイルF11から参照する他の実行可能ファイル(外部公開された他のパッケージ)のリストである。実行可能ファイルF11から参照する他の実行可能ファイルとは、実行可能ファイルF11がインポート(Import)する他の実行可能ファイルを意味する。これにより、実行可能ファイルF11と当該他の実行可能ファイルとがリンクされる。アプレットクラス情報は、実行可能ファイルF11からインタンス化可能なオブジェクトに関する情報である。なお、いわゆるライブラリパッケージの場合、アプレットクラス情報は存在しない。クラス情報は、実行可能ファイルF11を構成する全てのクラスの情報であり、クラスの継承関係、メソッド構成、フールド構成、及びアドレス情報などを含む。プログラムコードは、実行可能ファイルF11内の全てのメソッド(各クラスが定義するメソッド)のプログラムコードの集合である。スタティックフィールド情報は、実行可能ファイルF11に属する全てのスタティックフィールドの情報である。エクスポートリストは、実行可能ファイルF11の参照が許可された他の実行可能ファイルまたはアプリケーション(オブジェクト)のリストである。エクスポートリストでは、参照が許可された他の実行可能ファイルまたはアプリケーションに対して許可されるリソース(クラス、メソッド、フィールド等)の情報が対応付けられている。
SDプログラムは、UIMカード12においてSD(Security Domain)の機能を実現するためのプログラムである。SDとは、例えば事業者が提供するサービスを実現するうえで必要となるUIMカード12内のカードコンテント(つまり、接触型ICチップ12aに搭載されたカードコンテント)を管理するための機能を提供する管理アプリケーションである。以下、SDを、「管理アプリ」という。カードコンテントとは、上述した実行可能ファイルやアプリケーションである。管理アプリと、実行可能ファイル及びアプリケーションとの間で階層構造が形成される。管理者は、管理アプリにより、実行可能ファイル及びアプリケーションを管理することができる。管理者とは、管理アプリのUIMカード12外における実体であり、例えば、サービスを提供する事業者(サービス提供者)が該当する。また、カードコンテントを管理するための機能とは、例えば、実行可能ファイルのロード、アプリケーションの生成(インスタンス化)、実行可能ファイルやアプリケーションの削除、アプリケーションへのデータの書込み(パーソナライズ)などである。なお、管理アプリには、ISD(Issuer Security Domain)とSSD(Supplementary Security Domains)とがある。例えば、ISDは、上記機能をサポートすることで、UIMカード12のカードコンテントに対して、UIMカード12上でサービスを提供する事業者等の管理及びセキュリティポリシーを実現する。なお、UIMカード12に記憶された各管理アプリには、それぞれ固有の識別子としてAIDが付与される。
1つのUIMカード12には、様々な事業者が様々なサービスを提供するために、それぞれの管理アプリにより管理されるカードコンテントが記憶されるようになっているが、この中には、参照関係を持つカードコンテントが存在する。参照関係は、同一の事業者のカードコンテント間ばかりでなく、異なる事業者のカードコンテンツ間でも生じる。参照関係には、依存(依存関係ともいう)、静的な参照関係、及び動的な参照関係がある。複数の実行可能ファイル間の参照関係を依存という。
図4は、管理アプリ、実行可能ファイル、及びアプリケーション間の階層構造における実行可能ファイル間の依存の一例を示す概念図である。図4の例では、管理アプリSD1、及び管理アプリSD2が、それぞれ階層構造における最上位に位置(存在)している。管理アプリSD1の配下(管理下)には、実行可能ファイルF1、及び他の管理アプリSD11が位置している。この例では、管理アプリSD1は、実行可能ファイルF1ばかりでなく、他の管理アプリSD11をも管理する。このため、実行可能ファイルF1、及び管理アプリSD11には、管理アプリSD1のセキュリティポリシーが適応される。さらに、管理アプリSD11の配下には、実行可能ファイルF11と、当該実行可能ファイルF11から生成されたアプリケーションであるアプリA111及びアプリA112とが位置している。つまり、管理アプリSD11は、実行可能ファイルF11、アプリA111、及びアプリA112を管理する。このため、実行可能ファイルF11、アプリA111、及びアプリA112には、管理アプリSD11のセキュリティポリシーが適応される。一方、管理アプリSD2の配下には、実行可能ファイルF2と、当該実行可能ファイルF2から生成されたアプリケーションであるアプリA21及びアプリA22と、上記実行可能ファイルF11から生成されたアプリケーションであるアプリA113とが位置している。つまり、管理アプリSD2は、実行可能ファイルF2、アプリA21、アプリA22、及びアプリA113を管理する。このため、実行可能ファイルF2、アプリA21、アプリA22、及びアプリA113のセキュリティポリシーが適応される。
図4に示す階層構造において、実行可能ファイルF11は、実行可能ファイルF1を参照しているため、実行可能ファイルF11は実行可能ファイルF1に直接的に依存する。一方、実行可能ファイルF2は、実行可能ファイルF11を参照しているため、実行可能ファイルF2は、実行可能ファイルF11に直接的に依存する。この場合、実行可能ファイルF11は、実行可能ファイルF1に依存しているため、実行可能ファイルF2は、実行可能ファイルF11を介して実行可能ファイルF1に間接的に依存するということになる。このように、依存には、直接的な依存と、間接的な依存とがある。
一方、実行可能ファイルとアプリケーションとの間の参照関係を静的な参照関係という。例えば、UIMカード12内で実行可能ファイルから生成されたアプリケーションと生成元となった実行可能ファイルとの間に静的な参照関係が生じる。静的な参照は、例えば、実行可能ファイル内のインポートコンポーネント(要素)、または実行可能ファイルのリンク時に確保されるメモリ領域(スタティックフィールド)に記憶される。静的な参照の例として、コンテキストがある。コンテキストは、実行可能ファイルの識別子で、実行可能ファイルとアプリケーションの静的な参照関係を示すために用いられる。
図5は、管理アプリ、実行可能ファイル、及びアプリケーション間の階層構造における実行可能ファイルとアプリケーションとの間の静的な参照関係の一例を示す概念図である。図5に示す階層構造は、図4に示す階層構造と同様である。図5に示す階層構造において、アプリA21が所有するオブジェクトO214は、実行可能ファイルF11を参照(この例では、オブジェクトO214のクラスIDにより実行可能ファイルF11に含まれるクラス情報を参照)しているため、アプリA21と実行可能ファイルF11との間には静的な参照関係がある。また、図5に示す階層構造において、実行可能ファイルF2は、アプリA111を参照しているため、実行可能ファイルF2とアプリA111との間には静的な参照関係がある。
一方、複数のアプリケーション間の参照関係を動的な参照関係という。UIMカード12内でアプリケーションが他のアプリケーションと所有する情報や機能を相互に共有することにより、アプリケーション間に動的な参照関係が生じる。動的な参照は、例えば、参照型インスタンスフィールド、或いは配列の要素にオブジェクト参照が記憶される。動的な参照の例であるオブジェクト参照は、オブジェクトに対して与えられる識別子を他のオブジェクトが保持することで、アプリケーション間で共有されたオブジェクトを示す。オブジェクトを所有するアプリケーションの当該オブジェクトに対するオブジェクト参照を他のアプリケーションが保持する場合、アプリケーション間に動的な参照関係が生じる。
図6は、管理アプリ、実行可能ファイル、及びアプリケーション間の階層構造におけるアプリケーション間の動的な参照関係の一例を示す概念図である。図6に示す階層構造は、図4に示す階層構造と同様である。図6に示す階層構造において、アプリA22が所有するオブジェクトO221は、アプリA112を参照(この例では、オブジェクトO221の参照型変数によりアプリA112が所有するオブジェクトO1121を参照)しているため、アプリA22とアプリA112との間には動的な参照関係がある。
OSは、例えばデータ通信やメモリへの読み書きなど、接触型ICチップ12aの基本的な機能を担う。仮想マシンは、例えば、Java Card Virtual Machineであり、OS上でアプリケーションに含まれるバイトコードを解釈し、当該バイトコードに応じた命令を実行(つまり、アプリケーションを実行)する。OS上で仮想マシンがアプリケーションを実行するための環境を、RE(Runtime Environment)という。REは、OSの一機能であり、本発明における第1受信手段、第2受信手段、変更手段、及び設定手段の一例である。
ここで、REにおけるOS管理について説明する。図7は、REにおけるOS管理を示す概念図である。図7に示すように、REは、メモリ管理領域M、レジストリR、及びオブジェクトテーブルTを備える。メモリ管理領域Mは、ロード及びインストールされたカードコンテント(つまり、実行可能ファイル、及びアプリケーション)を記憶する領域である。
レジストリRは、UIMカード12内の全ての実行可能ファイル及び全てのアプリケーションの管理情報を保持する。実行可能ファイルの管理情報には、当該実行可能ファイルのAID、当該実行可能ファイルを管理する管理アプリのAID、及び実行可能ファイルの状態(内部状態)が含まれる。このように、実行可能ファイルは、自身の管理アプリと対応つけられてレジストリR内で管理される。なお、実行可能ファイルの状態は、実行可能ファイルのライフサイクル“Lifecycle”ともいう。図7の例では、“Lifecycle”が“LOADED”として記憶されている。すなわち、REは、それぞれの実行可能ファイルの状態を“Lifecycle”により管理する。アプリケーションの管理情報には、当該アプリケーションのAID、当該アプリケーションを管理する管理アプリのAID、当該アプリケーションの生成元となった実行可能ファイルのAID、及び当該アプリケーションの状態(内部状態)が含まれる。このように、アプリケーションは、自身の管理アプリと対応づけられてレジストリR内で管理される。なお、アプリケーションの状態は、アプリケーションの“Lifecycle”ともいう。
オブジェクトテーブルTは、UIMカード12内の全てのオブジェクト、及び全てのオブジェクトの管理情報を保持する。オブジェクトの管理情報には、当該オブジェクトの所有者の識別子(例えば、オブジェクトを所有するアプリケーションのAID)、及び当該オブジェクトを所有するアプリケーションの生成元となった実行可能ファイルのコンテキストなどが含まれる。つまり、オブジェクトテーブルTは、全てのオブジェクトへの参照を持つ。
[2.UIMカード12内のカードコンテントの削除]
次に、UIMカード12内のカードコンテントの削除について説明する。管理者が自身の管理アプリにより管理されるカードコンテントを削除したい場合、UIMカード12に対して削除要求(削除コマンド)を行うことができる。しかしながら、UIMカード12内においてカードコンテントが参照関係を持つ場合、管理者は自身の管理アプリにより管理されるカードコンテントを即座に削除することができない。参照関係にあるカードコンテントの管理者が同一の場合、管理者は自身の管理アプリにより、参照する側(カードコンテント)を先に削除、或いは当該カードコンテントを参照するための参照情報を消去すればよいが、これを実現するためには参照関係を把握しながら、削除の順番を考慮して複数の削除コマンドを発行する必要があり、非常に時間と費用を要する。
一方、参照関係にあるカードコンテントの管理者が異なる場合、不要となったカードコンテントの管理者が参照関係を解消するためには、別の管理者の管理アプリにより管理されているカードコンテントを削除、或いはその参照情報を消去する必要があるが、これらの処理は管理者が異なるため直接実行することができない。よって、自身のカードコンテントの削除を望む管理者は、参照する側の管理者に対して、カードコンテントの削除或いはその参照情報の消去を依頼しなければならず、独力で削除することができない。ただし、このように依頼したとしても参照する側の管理者が上記削除及び消去を拒むことも考えられるため、直ぐに削除できない可能性がある。将来、参照する側が削除された場合、参照された側を削除することは可能だが、これを実現するためには、参照する側が削除されたことを通知してもらう必要があり、人為的な取り決め(例えば、契約)などにより実現するほかない。
また、カードコンテントの管理者がサービス運用中に変更されることで参照関係が生まれる場合がある。例えば、サービスの仕組み(実行可能ファイル)の作成者と、その仕組みを使った具体的なサービスを、UIMカードのユーザへ提供するサービス提供者が異なる場合である。この例では、作成者が実行可能ファイルの管理者であり、サービス提供者はアプリケーションの管理者となる。つまり、実行可能ファイルから生成されたアプリケーションは、当初作成者の管理下にあるが、その後、サービス提供者へ委譲され管理者が変更される。アプリケーションはインスタンスであり、サービスを実現するための機能は実行可能ファイルとして記憶されているため、アプリケーションが動作するためには実行可能ファイルが必要となり、これが参照関係となる。このような状況で、作成者がサービスの仕組みである実行可能ファイルを削除したい場合、参照関係があるため削除できない。一方、サービス提供者としても作成者より削除を依頼されてもサービスの可用性等の観点より直ぐに削除することは困難であることが予想される。
図8は、カードコンテントの管理者がサービス運用中に変更された場合の一例を示す概念図である。図8の例では、サービスの仕組みはポイントサービスであり、作成者はポイントサービス事業者Xであり、提供者はポイントサービスと自社のサービスを連携させた鉄道会社、コンビニエンスストア、及び百貨店である。ポイントサービス事業者Xがポイントサービスを何等か事情により中止するために、実行可能ファイルFXを削除するときに、鉄道会社がポイントサービス事業者Xの実行可能ファイルFXを基にインスタンス化されたポイントアプリAX1によりポイントサービスを提供中であると、鉄道会社は即座にポイントアプリAX1を削除するわけにはいかない。そのため、ポイントサービス事業者Xは自身の実行可能ファイルFXを即座に削除できない。また、実行可能ファイルFXがUIMカード内に存在するため、他の提供者(例えば、コンビニエンスストア)が新たに実行可能ファイルFXを基にインスタンス化してポイントアプリAX2を生成する可能性がある。これは、ポイントサービス事業者Xにとって、益々、実行可能ファイルFXを削除できない参照関係を生み出すことになる。このことは、ポイントサービス事業者Yの実行可能ファイルFYでも同様である。
上述した事情を踏まえ、本実施形態のUIMカード12は、削除対象が参照関係を実行可能ファイルやアプリケーションであっても、当該削除対象の削除要求に応じて、削除と同等の対応を効率良く図ることを可能とする削除処理を行う。なお、削除要求には、実行可能ファイルの削除要求、アプリケーションの削除要求、及び管理アプリの削除要求がある。
ここで、先ず、UIMカード12が実行可能ファイルの削除要求を受信した場合の削除処理の概要について説明する。UIMカード12内のREは、当該UIMカード12内の何れかの実行可能ファイル(削除対象)の削除要求を受信すると、当該削除要求された実行可能ファイルと参照関係にある削除対象外の実行可能ファイルまたはアプリケーションが記憶されている場合、レジストリR(管理手段の一例)により管理される実行可能ファイル(削除要求された実行可能ファイル)の状態を、当該実行可能ファイルに関係する処理を制限する論理削除状態に変更する。これにより、削除対象が参照関係を持つ実行可能ファイルであっても、削除と同等の対応を効率良く図ることが可能となる。ここで、「実行可能ファイルに関係する処理を制限する」例として、以下の(a),(b)が挙げられる。
(a)REは、ロード対象の実行可能ファイルが、論理削除状態にある場合、当該ロード対象の実行可能ファイルのロード処理を中止(制限の一例)する。
(b)REは、ロード対象の実行可能ファイルが、論理削除状態の実行可能ファイルに依存している場合、当該ロード対象の実行可能ファイルのロード処理を中止する。
なお、「実行可能ファイルに関係する処理を制限する」例として、上記(a),(b) 以外にも、「インストール(インスタンス化)対象の実行可能ファイルが論理削除状態にある場合、インストール処理を中止する」という例もある。想定されるシチュエーションは、実行可能ファイルからインスタンスを生成する場合である。この例でのインストール処理はアプリケーションに対するものであり、アプリケーションのインストール処理(インスタンス化)において、アプリケーションを生成する実行可能ファイルが論理削除状態にある場合、アプリケーションのインストール処理(インスタンス化)を中止することになる。
図9は、論理削除状態を考慮したロード処理の一例を示すフローチャートである。図9の例では、先ず、ベースバンドプロセッサ13は、ロード対象の実行可能ファイルのロードコマンドを、UIMカード12内の管理アプリへ送信する(ステップS1)。なお、ロードコマンドは、例えばユーザからの操作指示に応じて生成されるか、或いは特定のサーバから移動体無線通信部及び移動体通信ネットワークを介して受信される。管理アプリは、上記ロードコマンドを受信すると、ロード対象の実行可能ファイルのロード要求をREへ送信する(ステップS2)。
REは、ロード要求を受信すると、ロード処理を開始し、先ず、ロード対象の実行可能ファイルが、論理削除状態にあるか否かを判定する(ステップS3)。例えば、REは、ロード対象の実行可能ファイルのAIDが、論理削除状態の実行可能ファイルのAIDと一致(重複)するか否かをチェックし、一致する場合、ロード対象の実行可能ファイルが論理削除状態にあると判定する。
そして、REは、ロード対象の実行可能ファイルが論理削除状態にあると判定した場合(ステップS3:YES)、ロード対象の実行可能ファイルのロード処理を中止し(ステップS4)、その処理結果を管理アプリに送信する。一方、REは、ロード対象の実行可能ファイルが論理削除状態にないと判定した場合(ステップS3:NO)、ロード対象の実行可能ファイルが他の実行可能ファイルに依存しているか否かを判定する(ステップS5)。例えば、REは、ロード対象の実行可能ファイルのインポートリストに他の実行可能ファイルのAIDが登録されているか否かをチェックし、登録されていない場合、ロード対象の実行可能ファイルが他の実行可能ファイルに依存していないと判定する。
そして、REは、ロード対象の実行可能ファイルが他の実行可能ファイルに依存していないと判定した場合(ステップS5:NO)、ロード対象の実行可能ファイルをロードし(ステップS6)、その処理結果を管理アプリに送信して、ロード処理を終了する。一方、REは、ロード対象の実行可能ファイルが他の実行可能ファイルに依存していると判定した場合(ステップS5:YES)、当該他の実行可能ファイルが論理削除状態にあるか否かを判定する(ステップS7)。
そして、REは、当該他の実行可能ファイルが論理削除状態にあると判定した場合(ステップS7:YES)、ロード対象の実行可能ファイルのロード処理を中止し(ステップS4)、その処理結果を管理アプリに送信する。一方、REは、当該他の実行可能ファイルが論理削除状態にないと判定した場合(ステップS7:NO)、ロード対象の実行可能ファイルをロードし、ロードした実行可能ファイルと依存している実行可能ファイルとをリンクし(ステップS8)、その処理結果を管理アプリに送信して、ロード処理を終了する。
管理アプリは、上記処理結果を受信すると、当該処理結果を示すレスポンスを生成し(ステップS9)、生成したレスポンスをベースバンドプロセッサ13へ送信する(ステップS10)。こうして、ロードコマンドに対するレスポンスがベースバンドプロセッサ13により受信される。
その後、REは、論理削除状態の実行可能ファイルに対する参照関係が解消された段階(例えば、論理削除状態の実行可能ファイルと参照関係にある削除対象外の実行可能ファイルまたはアプリケーションが何等かの理由で削除された場合)、論理削除状態の実行可能ファイルを削除する。これにより、実行可能ファイルの削除において、参照関係を解消するステップと、実行可能ファイルの削除要求を行うステップの実施順序を自由に設定することができる。つまり、複雑な参照関係を持つ実行可能ファイルやアプリケーションに対して、管理者が参照関係を考慮することなく実行可能ファイルやアプリケーションの削除タイミングを自由に制御することができる。
次に、UIMカード12がアプリケーションの削除要求を受信した場合の削除処理の概要について説明する。REは、当該UIMカード12内の何れかのアプリケーションの削除要求を受信すると、当該削除要求されたアプリケーションの構成要素であるオブジェクト(つまり、当該削除要求されたアプリケーションが所有するオブジェクト)を、削除対象外の実行可能ファイルまたはアプリケーションが参照している場合、当該削除要求されたアプリケーションの構成要素であるオブジェクトへの参照(上述したオブジェクト参照)を利用不可に設定する。これにより、削除対象が参照関係を持つ実行可能ファイルであっても、削除と同等の対応を効率良く図ることが可能となる。
次に、UIMカード12が、管理アプリの削除要求を受信した場合の削除処理の概要について説明する。REは、当該UIMカード12内の何れかの管理アプリの削除要求を受信したとき、当該削除要求された管理アプリが管理する実行可能ファイルが削除要求されたものとして、当該削除要求された(つまり、間接的に削除要求された)実行可能ファイルと参照関係にある削除対象外の実行可能ファイルまたはアプリケーションが記憶されている場合、当該削除要求された実行可能ファイルの状態を上記論理削除状態に変更する。また、このとき、当該削除要求された管理アプリが管理するアプリケーションが削除要求されたものとして、当該削除要求された(つまり、間接的に削除要求された)アプリケーションの構成要素であるオブジェクトを、削除対象外の実行可能ファイルまたはアプリケーションが参照している場合、当該削除要求されたアプリケーションの構成要素であるオブジェクトへの参照を利用不可に設定する。これにより、削除対象が参照関係を持つ実行可能ファイルであっても、削除と同等の対応を効率良く図ることが可能となり、なおかつ、複雑な参照関係を持つ複数の実行可能ファイルやアプリケーションを管理している管理アプリごと、1つの削除要求で当該削除と同等の対応を図ることが可能となる。
なお、REは、UIMカード12内の何れかの管理アプリの削除要求を受信したとき、当該削除要求された管理アプリが管理する実行可能ファイルが削除要求されたものとし、且つ当該削除要求された実行可能ファイルから生成されたアプリケーション(当該削除要求された管理アプリにより管理されているアプリケーションであるか否かは問わない)が削除要求されたものとして、当該削除要求された(つまり、間接的に削除要求された)アプリケーションの構成要素であるオブジェクトを、削除対象外の実行可能ファイルまたはアプリケーションが参照している場合、当該削除要求されたアプリケーションの構成要素であるオブジェクトへの参照を利用不可に設定するとよい。これにより、1つの削除要求で削除と同等の対応を図る対象範囲を広げることが可能となる。
次に、UIMカード12が、配下に他の管理アプリを持つ管理アプリの削除要求を受信した場合の削除処理の概要について説明する。REは、UIMカード12内の何れかの管理アプリの削除要求を受信したとき、当該削除要求された管理アプリの配下に位置する他の管理アプリが削除要求されたものとし、且つ当該他の管理アプリが管理する実行可能ファイルが削除要求されたものとして、当該削除要求された(つまり、間接的に削除要求された)実行可能ファイルと参照関係にある削除対象外の実行可能ファイルまたはアプリケーションが記憶されている場合、当該削除要求された実行可能ファイルの状態を上記論理削除状態に変更する。これにより、1つの削除要求で削除と同等の対応を図る対象範囲を広げることが可能となる。なお、間接的に削除要求された管理アプリの配下にさらに他の管理アプリがある場合、上記論理削除状態に変更するための処理が再帰的に行われるとよい。
また、REは、UIMカード12内の何れかの管理アプリの削除要求を受信したとき、当該削除要求された管理アプリの配下に位置する他の管理アプリが削除要求されたものとし、且つ当該削除要求された管理アプリが管理するアプリケーションが削除要求されたものとして、当該削除要求された(つまり、間接的に削除要求された)アプリケーションの構成要素であるオブジェクトを、削除対象外の実行可能ファイルまたはアプリケーションが参照している場合、当該削除要求されたアプリケーションの構成要素であるオブジェクトへの参照を利用不可に設定する。これにより、1つの削除要求で削除と同等の対応を図る対象範囲を広げることが可能となる。なお、間接的に削除要求された管理アプリの配下にさらに他の管理アプリがある場合、上記オブジェクトへの参照を利用不可に設定するための処理が再帰的に行われるとよい。
[3.UIMカード12における削除処理の具体例]
次に、削除コマンドに応じてUIMカード12により実行される削除処理の具体例について、実施例1〜5に分けて説明する。
(実施例1)
先ず、実施例1では、図10を参照して、削除要求された実行可能ファイルの削除処理について説明する。図10は、実施例1における削除処理の一例を示すフローチャートである。図10の例では、先ず、ベースバンドプロセッサ13は、実行可能ファイルの削除コマンドを、UIMカード12内の管理アプリへ送信する(ステップS101)。当該削除コマンドには、例えば、削除対象の実行可能ファイルを特定可能な情報(例えば、AID)が含まれる。なお、削除コマンドは、例えば特定のサーバから移動体無線通信部及び移動体通信ネットワークを介して受信される。
管理アプリは、例えばSCP(SecureChannel Protocol)で決められたアルゴリズムに従って認証された論理的通信路を通じ、実行可能ファイルの削除コマンドを受信すると、当該実行可能ファイルの削除要求をREへ送信する(ステップS102)。当該削除要求には、例えば、削除対象の実行可能ファイルを特定可能な情報(例えば、AID)が含まれる。
REは、実行可能ファイルの削除要求を受信した場合、削除要求された実行可能ファイルを削除対象に加える(ステップS103)。なお、削除要求された実行可能ファイルが複数であってもよく、この場合、それぞれの実行ファイルについて以下の処理が行われる。次いで、REは、削除対象として加わえられた実行可能ファイル(削除対象の実行可能ファイル)に対する削除処理が実施可能であるか否かを判定(チェック)する(ステップS104)。例えば、削除要求を送信した管理アプリが、削除対象の実行可能ファイルを削除する権限を有さない場合、削除処理は実施不能であると判定される。このような権限は、例えばOSにより管理されている。
そして、REは、実行可能ファイルに対する削除処理が実施可能でない(実施不能である)と判定した場合(ステップS104:NO)、削除処理を中止し(ステップS105)、その処理結果を管理アプリに送信する。一方、REは、実行可能ファイルに対する削除処理が実施可能であると判定した場合(ステップS104:YES)、削除対象の実行可能ファイルから生成されたアプリケーションが存在し、且つ削除対象外(つまり、削除対象の実行可能ファイルから生成されたアプリケーションが削除対象外)であるか否かを判定する(ステップS106)。ここで、削除対象の実行可能ファイルから生成されたアプリケーションが削除対象に含まれない(つまり、削除対象に加えるステップを実行していない)場合、削除対象外であると判定される。
そして、REは、削除対象の実行可能ファイルから生成されたアプリケーションが存在しないか、或いは存在したとしても削除対象外でないと判定した場合(ステップS106:NO)、ステップS107へ進む。一方、REは、削除対象の実行可能ファイルから生成されたアプリケーションが存在し、且つ削除対象外であると判定した場合(ステップS106:YES)、つまり、削除要求された実行可能ファイルと参照関係にある削除対象外のアプリケーションが記憶されている場合、ステップS109へ進む。つまり、削除対象の実行可能ファイルから生成されたアプリケーションが削除対象外である場合、REは、削除対象の実行可能ファイルへの静的な参照が存在すると判定して、ステップS109へ進むことになる。なお、実施例1の場合、実行可能ファイルのみが削除対象であるので、インスタンス化によりアプリケーションが生成されている場合、必ず、「ステップS106:YES」になり、ステップS109へ進むことになる。
ステップS107では、REは、削除対象の実行可能ファイルに、削除対象外の実行可能ファイル(つまり、削除対象の実行可能ファイルに対して、UIMカード12内の削除対象でない他の実行可能ファイル)が依存しているか否かを判定する。例えば、REは、UIMカード12内の全ての実行可能ファイルに対し、実行可能ファイルのロード及びリンク時に利用するインポートコンポーネントを走査することで、削除対象の実行可能ファイルへの依存を確認する。
そして、REは、削除対象の実行可能ファイルに削除対象外の実行可能ファイルが依存していると判定した場合(ステップS107:YES)、つまり、削除要求された実行可能ファイルと参照関係にある削除対象外の実行可能ファイルが記憶されている場合、ステップS109へ進む。一方、REは、削除対象の実行可能ファイルに削除対象外の実行可能ファイルが依存していないと判定した場合(ステップS107:NO)、ステップS108へ進む。
ステップS108では、REは、削除対象の実行可能ファイルから生成されたオブジェクトが、削除対象外の実行可能ファイルまたはアプリケーションに所有されているか否かを判定する。例えば、REは、オブジェクトテーブルを参照し、全てのオブジェクトの情報からコンテキストを取得することで、削除対象のオブジェクトの存在を確認することができる。当該オブジェクトが存在した場合、REは実行可能ファイルへの静的な参照が存在すると判定する。
そして、REは、削除対象の実行可能ファイルから生成されたオブジェクトが、削除対象外の実行可能ファイルまたはアプリケーションに所有されていると判定した場合(ステップS108:YES)、ステップS109へ進む。一方、REは、削除対象の実行可能ファイルから生成されたオブジェクトが、削除対象外の実行可能ファイルまたはアプリケーションに所有されていないと判定した場合(ステップS108:NO)、ステップS111へ進む。
ステップS109では、REは、レジストリRが保持する管理情報を更新することで、削除対象の実行可能ファイルの状態を論理削除状態に変更(例えば、Lifecycleが“LOADED”から“DELETEED”に変更)し、当該削除対象の実行可能ファイルを管理する管理アプリのAIDを削除する。次いで、REは、論理削除状態に変更された実行可能ファイルを削除対象から外し(ステップS110)、ステップS111へ進む。
ステップS111では、REは、削除対象の実行可能ファイル、及び当該実行可能ファイルが所有する全てのオブジェクトとその管理情報を削除し、その処理結果を管理アプリに送信する。なお、複数の実行可能ファイルのうちの全てについてステップS109及びS110が実行された場合、削除対象はないので、ステップS111では、REは、実行可能ファイル等を削除することなく、その処理結果を管理アプリに送信することになる。一方、複数の実行可能ファイルのうちの一部についてステップS109及びS110が実行された場合、ステップS111では、REは、当該一部の実行可能ファイルを除く削除対象の実行可能ファイル等を削除し、その処理結果を管理アプリに送信することになる。
管理アプリは、上記処理結果を受信すると、当該処理結果を示すレスポンスを生成し(ステップS112)、生成したレスポンスをベースバンドプロセッサ13へ送信する(ステップS113)。こうして、削除コマンドに対するレスポンスがベースバンドプロセッサ13により受信され、例えば特定のサーバへ送信される。
実施例1によれば、参照関係にあるカードコンテントの管理者が異なる場合、さらには、参照関係にあるカードコンテントの管理者がサービス運用中に変更される場合であったとしても、削除と同等の対応を迅速かつ効率良く図ることができる。
(実施例2)
次に、実施例2では、図11を参照して、削除要求されたアプリケーションの削除処理について説明する。図11は、実施例2における削除処理の一例を示すフローチャートである。図11の例では、先ず、ベースバンドプロセッサ13は、アプリケーションの削除コマンドを、UIMカード12内の管理アプリへ送信する(ステップS201)。当該削除コマンドには、例えば、削除対象のアプリケーションを特定可能な情報(例えば、AID)が含まれる。
管理アプリは、上述したように認証された論理的通信路を通じ、アプリケーションの削除コマンドを受信すると、当該アプリケーションの削除要求をREへ送信する(ステップS202)。当該削除要求には、例えば、削除対象のアプリケーションを特定可能な情報(例えば、AID)が含まれる。
REは、アプリケーションの削除要求を受信した場合、削除要求されたアプリケーションを削除対象に加える(ステップS203)。次いで、REは、削除対象として加えられたアプリケーション(削除対象のアプリケーション)に対する削除処理が実施可能であるか否かを判定(チェック)する(ステップS204)。例えば、削除要求を送信した管理アプリが削除対象のアプリケーションを削除する権限を有さない場合、または当該アプリケーションが論理的通信路上で選択されている場合、削除処理は実施不能であると判定される。
そして、REは、アプリケーションに対する削除処理が実施可能でないと判定した場合(ステップS204:NO)、削除処理を中止し(ステップS205)、その処理結果を管理アプリに送信する。一方、REは、アプリケーションに対する削除処理が実施可能であると判定した場合(ステップS204:YES)、ステップS206へ進む。
ステップS206では、REは、削除対象のアプリケーションが所有するオブジェクト(チェック対象のオブジェクト)を、削除対象外の実行可能ファイルまたはアプリケーションが参照しているか否かを判定する。例えば、削除対象外の実行可能ファイルまたはアプリケーションが所有するオブジェクトのインスタンスフィールドまたは配列の要素が、削除対象のアプリケーションが所有するオブジェクトのオブジェクト参照を値として保持している場合、削除対象外の実行可能ファイルまたはアプリケーションが削除対象のアプリケーションが所有するオブジェクトを参照していると判定される。
そして、REは、削除対象のアプリケーションが所有するオブジェクトを削除対象外の実行可能ファイルまたはアプリケーションが参照していると判定した場合(ステップS206:YES)、ステップS207へ進む。一方、REは、削除対象のアプリケーションが所有するオブジェクトを削除対象外の実行可能ファイルまたはアプリケーションが参照していないと判定した場合(ステップS206:NO)、ステップS209へ進む。
ステップS207では、REは、削除対象のアプリケーションが所有するオブジェクトへの参照を利用不可に設定する。例えば、REは、削除対象外の実行可能ファイルまたはアプリケーションが所有するオブジェクトのインスタンスフィールドまたは配列の要素の値に、オブジェクトが利用できないことを示す特定の値を書き込む。この特定の値には、例えば、RE上でのNULL値、またはNULL値を表すオブジェクトへの参照が用いられる。
次いで、REは、削除対象のアプリケーションが所有するオブジェクトのフィールドを全てチェックしたか否かを判定する(ステップS208)。そして、REは、削除対象のアプリケーションが所有するオブジェクトのフィールドを全てチェックしていないと判定した場合(ステップS208:NO)、ステップS206へ戻り、まだチェックされていないオブジェクトについて上記と同様の処理を繰り返す(つまり、チェック対象のオブジェクトの参照型変数すべてに対し上記処理を繰り返す)。一方、REは、削除対象のアプリケーションが所有するオブジェクトのフィールドを全てチェックしたと判定した場合(ステップS208:YES)、ステップS209へ進む。
ステップS209では、REは、削除対象のアプリケーションが所有する全てのオブジェクトを削除対象に加える。次いで、REは、削除対象のアプリケーションが所有する全てのオブジェクトとその管理情報を削除し(ステップS210)、その処理結果を管理アプリに送信する。
なお、ステップS211及びS212の処理は、実施例1におけるステップS112及びS113の処理と同様である。
実施例2によっても、参照関係にあるカードコンテントの管理者が異なる場合、さらには、参照関係にあるカードコンテントの管理者がサービス運用中に変更される場合であったとしても、削除と同等の対応を迅速かつ効率良く図ることができる。
(実施例3)
次に、実施例3では、図12及び図13を参照して、削除要求された管理アプリとその管理下にある実行可能ファイル及びアプリケーションの削除処理について説明する。図12は、実施例3における削除処理の一例を示すフローチャートである。図13は、管理アプリ、実行可能ファイル、及びアプリケーション間の階層構造における実行可能ファイルとアプリケーションとの間の参照関係と、実施例3の削除処理結果の一例を示す概念図である。図12の例では、先ず、ベースバンドプロセッサ13は、管理アプリの削除コマンドを、UIMカード12内の管理アプリへ送信する(ステップS301)。当該削除コマンドには、例えば、削除対象の管理アプリを特定可能な情報(例えば、AID)が含まれる。
管理アプリは、上述したように認証された論理的通信路を通じ、管理アプリの削除コマンドを受信すると、当該管理アプリの削除要求をREへ送信する(ステップS302)。当該削除要求には、例えば、削除対象の管理アプリを特定可能な情報(例えば、AID)が含まれる。
REは、管理アプリの削除要求を受信した場合、削除要求された管理アプリを削除対象に加える(ステップS303)。次いで、REは、削除対象の管理アプリが管理するアプリケーションがある場合、当該アプリケーションを削除対象に加える(ステップS304)。つまり、削除要求された管理アプリにより管理されるアプリケーションは、削除要求されたものと見做されて削除対象に加えられる。次いで、REは、削除対象の管理アプリが管理する実行可能ファイルがある場合、当該実行可能ファイルを削除対象に加える(ステップS305)。つまり、削除要求された管理アプリにより管理される実行可能ファイルは、削除要求されたものと見做されて削除対象に加えられる。なお、削除対象の管理アプリが管理する実行可能ファイルが複数ある場合、それぞれの実行可能ファイルが削除対象に加えられる。
次いで、REは、ステップS304で削除対象として加えられたアプリケーションの削除処理を実行する(ステップS306)。この削除処理では、実施例2におけるステップS204〜S209の処理が行われる。次いで、REは、ステップS305で削除対象として加えられた実行可能ファイルの削除処理を実行する(ステップS307)。この削除処理では、実施例1におけるステップS104〜S110の処理が行われる。次いで、REは、削除対象の管理アプリ、削除対象の実行可能ファイル(ステップS307の削除処理において、削除対象から外された実行可能ファイルは除く)、削除対象のアプリケーション、及びこれらが所有する全てのオブジェクトの管理情報を削除し(ステップS308)、その処理結果を管理アプリに送信する。なお、ステップS309及びS310の処理は、実施例1におけるステップS112及びS113の処理と同様である。
図13の例では、図12に示す削除処理において、管理アプリSD11(削除要求された管理アプリ)、実行可能ファイルF11、アプリA111、及びアプリA112が削除対象となり、このうち、管理アプリSD11、アプリA111、及びアプリA112が削除される。ここで、アプリA111が所有するオブジェクトへは、削除対象外の実行可能ファイルF2により参照されるが、当該実行可能ファイルF2内の当該参照は利用不可(例えば、NULL値)に設定されるため、当該アプリA111が削除されても影響はない。同様に、アプリA112が所有するオブジェクトへは、削除対象外のアプリA22により参照されるが、当該アプリA22内の当該参照は利用不可(例えば、NULL値)に設定されるため、当該アプリA112が削除されても影響はない。一方、実行可能ファイルF11には、削除対象外の実行可能ファイルF2が依存するため、実行可能ファイルF11は削除がされる代わりに論理削除状態となる(削除対象外の実行可能ファイルF2が依存している間、論理削除状態となる)。なお、アプリA111が所有するオブジェクトへはアプリA112により参照されるが、アプリA112も削除対象であるため問題はない。
実施例3によっても、参照関係にあるカードコンテントの管理者が異なる場合、さらには、参照関係にあるカードコンテントの管理者がサービス運用中に変更される場合であったとしても、削除と同等の対応を迅速かつ効率良く図ることができる。さらに、実施例3によれば、1つの削除コマンドで削除と同等の対応を図る対象範囲を広げることができ、時間と費用を低減することができる。
(実施例4)
次に、実施例4では、図14及び図15を参照して、削除要求された管理アプリとその管理下にある実行可能ファイル及びアプリケーション、並びに削除要求されていない管理アプリにより管理されるアプリケーションの削除処理について説明する。図14は、実施例4における削除処理の一例を示すフローチャートである。図15は、管理アプリ、実行可能ファイル、及びアプリケーション間の階層構造における実行可能ファイルとアプリケーションとの間の参照関係と、実施例4の削除処理結果の一例を示す概念図である。図15の例では、実行可能ファイルF11と、実行可能ファイルF11から生成されたアプリA113とは、同一の管理者により管理されていたが、その後、アプリA113の管理者が変更された場合を想定している。つまり、実行可能ファイルF11とアプリA113の管理者は異なる。なお、ステップS401〜S405の処理は、実施例3におけるステップS301〜S305の処理と同様である。
ステップS406では、REは、ステップS405で削除対象として加えられた実行可能ファイルから生成されたアプリケーションの一覧を取得し、取得できたアプリケーションを削除対象に加える。つまり、削除要求された管理アプリにより管理される実行可能ファイルから生成されたアプリケーションは、削除要求されたものと見做されて削除対象に加えられる。
次いで、REは、ステップS404で削除対象として加えられたアプリケーション、及びステップS406で削除対象として加えられたアプリケーションの削除処理を実行する(ステップS407)。この削除処理では、実施例2におけるステップS204〜S209の処理が行われる。次いで、REは、ステップS405で削除対象として加えられた実行可能ファイルの削除処理を実行する(ステップS408)。この削除処理では、実施例1におけるステップS104〜S110の処理が行われる。なお、ステップS409〜S411の処理は、実施例3におけるステップS308〜S310の処理と同様である。
図15の例では、図14に示す削除処理において、図13と同様、管理アプリSD11、実行可能ファイルF11、アプリA111、及びアプリA112が削除対象となり、このうち、実行可能ファイルF11が論理削除状態となり、管理アプリSD11、アプリA111、及びアプリA112が削除されている。さらに、削除要求されていない管理アプリSD2により管理されるアプリA113は、削除対象に加えられた実行可能ファイルから生成されたアプリケーションであるので、削除対象に加えられて削除されている。
実施例4によっても、参照関係にあるカードコンテントの管理者が異なる場合、さらには、参照関係にあるカードコンテントの管理者がサービス運用中に変更される場合であったとしても、削除と同等の対応を迅速かつ効率良く図ることができる。さらに、実施例4によれば、1つの削除コマンドで削除と同等の対応を図る対象範囲を広げることができ、時間と費用を低減することができる。
(実施例5)
次に、実施例5では、図16及び図17を参照して、削除要求された管理アプリの配下(管理下)にある管理アプリが管理するカードコンテントの削除処理について説明する。図16は、実施例5における削除処理の一例を示すフローチャートである。図17は、管理アプリ、実行可能ファイル、及びアプリケーション間の階層構造における実行可能ファイルとアプリケーションとの間の参照関係と、実施例5の削除処理結果の一例を示す概念図である。なお、ステップS501〜S505の処理は、実施例3におけるステップS301〜S305の処理と同様である。
ステップS506では、REは、削除要求された管理アプリ(削除対象として追加された管理アプリ)の配下に他の管理アプリがあるか否かを判定する。そして、REは、削除要求された管理アプリの配下に他の管理アプリがないと判定した場合(ステップS506:NO)、ステップS508へ進む。一方、REは、削除要求された管理アプリの配下に他の管理アプリがあると判定した場合(ステップS506:YES)、つまり、削除要求された管理アプリの配下に位置する他の管理アプリが記憶されている場合、当該配下の他の管理アプリを削除要求されたものとして特定し(ステップS507)、ステップS503に戻る。
ステップS503に戻ると、REは、ステップS507で特定した管理アプリを削除対象に加える。次いで、REは、ステップS507で特定した管理アプリが管理するアプリケーションがある場合、当該アプリケーションを削除対象に加え(ステップS504)、当該特定した管理アプリが管理する実行可能ファイルがある場合、当該実行可能ファイルを削除対象に加える(ステップS505)。そして、REは、当該特定した管理アプリの配下に更に他の管理アプリがあるか否かを判定し(ステップS506)、他の管理アプリがないと判定した場合(ステップS506:NO)、ステップS508へ進む。このように、削除対象が再帰的に特定され、特定された削除対象に対して、ステップS508〜S512の処理が、実施例3におけるステップS306〜S310の処理と同様に行われる。
図17の例では、図16に示す削除処理において、管理アプリSD1(削除要求された管理アプリ)、実行可能ファイルF1、管理アプリSD11、実行可能ファイルF11、アプリA111、及びアプリA112が削除対象となり、このうち、管理アプリSD1、管理アプリSD11、アプリA111、及びアプリA112が削除される。ここで、実行可能ファイルF1に依存する実行可能ファイルF11には削除対象外の実行可能ファイルF2が依存(間接的な依存)するため、実行可能ファイルF1は削除がされる代わりに論理削除状態となる。
実施例5によっても、参照関係にあるカードコンテントの管理者が異なる場合、さらには、参照関係にあるカードコンテントの管理者がサービス運用中に変更される場合であったとしても、削除と同等の対応を迅速かつ効率良く図ることができる。さらに、実施例5によれば、1つの削除コマンドで削除と同等の対応を図る対象範囲を広げることができ、時間と費用を低減することができる。