(57)【要約】【課題】複数のアプリケーションについて共通情報、一部のアプリについて更に固有情報を記憶させる場合に、記憶領域の無駄な使用を抑制するとともに、固有情報の追加又は削除が容易であり、また、固有情報を削除してできた空き領域を有効活用することのできる電子情報記憶媒体、情報処理方法、及び情報処理プログラムを提供する。【解決手段】固有情報を保持するアプリケーションの共通情報とともに記憶されるアドレス情報を、当該アプリケーションが保持する固有情報が記憶されている記憶領域の先頭アドレスに格納する。【選択図】図５
2017045103.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションに共通の共通情報を複数のアプリケーションについて記憶するとともに、アプリケーションに固有の固有情報を前記複数のアプリケーションの少なくとも一部について記憶するメモリと、
前記メモリが記憶する情報を更新するプロセッサと、を備える電子情報記憶媒体であって、
前記メモリは、前記固有情報を保持するアプリケーションの前記共通情報と対応付けて当該固有情報が記憶されるアドレスを示すアドレス情報を更に記憶し、
前記プロセッサは、前記固有情報を追加又は削除した場合に当該固有情報を追加又は削除したアプリケーションの前記アドレス情報を更新することを特徴とする電子情報記憶媒体。
【請求項２】
請求項１に記載の電子情報記憶媒体であって、
前記固有情報が固定長の場合において、前記プロセッサは、何れかのアプリケーションの固有情報を削除した場合に、当該固有情報を削除した領域より後方の領域に記憶されている情報を前記固定長サイズ分だけ前に詰めて再記憶させるとともに、当該前に詰めて再記憶させた固有情報を保持するアプリケーションの前記アドレス情報を、前記固定長サイズ分だけ減算した値により更新することを特徴とする電子情報記憶媒体。
【請求項３】
請求項１に記載の電子情報記憶媒体であって、
前記メモリは、前記固有情報が可変長の場合に、前記固有情報を保持するアプリケーションの前記アドレス情報とともに当該固有情報のデータ長を示すデータ長情報を更に記憶し、
前記プロセッサは、何れかのアプリケーションの固有情報を削除した場合に、当該固有情報を削除した領域より後方の領域に記憶されている情報を、当該削除した固有情報のデータ長サイズ分だけ前に詰めて再記憶させるとともに、当該前に詰めて再記憶させた固有情報を保持するアプリケーションの前記アドレス情報を、当該削除した固有情報のデータ長サイズ分だけ減算した値により更新することを特徴とする電子情報記憶媒体。
【請求項４】
請求項１に記載の電子情報記憶媒体であって、
前記固有情報が固定長の場合において、前記プロセッサは、前記固有情報を保持しないアプリケーションについて当該固有情報を追加した場合に、当該アプリケーションの前記アドレス情報を、当該固有情報が新たに記憶されるアドレスにより更新することを特徴とする電子情報記憶媒体。
【請求項５】
請求項１に記載の電子情報記憶媒体であって、
前記メモリは、前記固有情報が可変長の場合に、前記固有情報を保持するアプリケーションの前記アドレス情報とともに当該固有情報のデータ長を示すデータ長情報を更に記憶し、
前記プロセッサは、前記固有情報を保持しないアプリケーションについて当該固有情報を追加した場合に、当該アプリケーションの前記アドレス情報を、当該固有情報が新たに記憶されるアドレスにより更新するとともに、当該アプリケーションの前記データ長情報を、当該固有情報のデータ長により更新することを特徴とする電子情報記憶媒体。
【請求項６】
アプリケーションに共通の共通情報を複数のアプリケーションについて記憶するとともに、アプリケーションに固有の固有情報を前記複数のアプリケーションの少なくとも一部について記憶するメモリと、
前記メモリが記憶する情報を更新するプロセッサと、を備え、
前記メモリが、前記固有情報を保持するアプリケーションの前記共通情報と対応付けて当該固有情報が記憶されるアドレスを示すアドレス情報を更に記憶する電子情報記憶媒体において前記プロセッサにより実行される情報処理方法であって、
前記プロセッサが、前記固有情報を追加又は削除した場合に当該固有情報を追加又は削除したアプリケーションの前記アドレス情報を更新する更新ステップを含むことを特徴とする情報処理方法。
【請求項７】
アプリケーションに共通の共通情報を複数のアプリケーションについて記憶するとともに、アプリケーションに固有の固有情報を前記複数のアプリケーションの少なくとも一部について記憶するメモリと、
前記メモリが記憶する情報を更新するプロセッサと、を備え、
前記メモリが、前記固有情報を保持するアプリケーションの前記共通情報と対応付けて当該固有情報が記憶されるアドレスを示すアドレス情報を更に記憶する電子情報記憶媒体における前記プロセッサを、
前記固有情報を追加又は削除した場合に当該固有情報を追加又は削除したアプリケーションの前記アドレス情報を更新する更新手段として機能させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
複数のアプリケーションの設定情報を記憶する不揮発性メモリを備えるＩＣチップ等の電子情報記憶媒体の技術分野に関する。
【背景技術】
【０００２】
マルチアプリケーションに対応するＩＣカードは、アプリケーション毎にプログラムコードと設定情報を保持している。一般に設定情報はアプリケーションのインストール時に設定される情報であり、各アプリケーション共通の共通情報（例えば、Executable Load File AID、Executable Module AID、Application AID、Privilegesといった項目の情報）と、各アプリケーション固有の固有情報（例えば、Contactless Protocol Parameter、Additional Protocol Parameter、User Interaction Parameterといった項目の情報）とを含む。
【０００３】
アプリケーションは種類によって固有情報を保持したりしなかったりするが、ＩＣカードが設定情報を一つのテーブルで保持する場合、図１に示すように、固有情報（項目１、項目２、項目３からなる情報）を保持しないアプリケーション（「アプリケーションＩＤ（以下、「アプリＩＤ」）」が「ＡＰＰ００Ａ」、「ＡＰＰ００Ｄ」のアプリケーション）については固有情報を記憶する記憶領域が空き領域（例えば、ｎｕｌｌ値を格納）ができてしまい記憶領域の無駄が発生してしまう（第１の問題）。こうした無駄を解消するための手法として、図２に示すように、固有情報を保持するアプリケーションと保持しないアプリケーションとで、共通情報のみを保持して固有情報を保持しないテーブル（図２（Ａ））と、共通情報及び固有情報を保持するテーブル（図２（Ｂ））に、テーブルを分ける手法が考えられる。
【０００４】
しかしながら、テーブルを分ける手法を採用した場合において、図１又は２（Ｂ）に示した項目１、項目２、項目３からなる固有情報とは異なる種類の固有情報（例えば、項目４、項目５からなる固有情報）を保持するアプリケーションがインストールされた場合には、図３に示すように、更に別のテーブルを設ける必要があり、テーブルの管理が煩雑となる。また、固有情報の種類毎にテーブルを分けた場合、アプリケーションのアンインストール時に固有情報を保持していた領域について回収処理（ガベージ・コレクション）や再配置処理（デフラグメント）を行うことが困難になるという問題（第２の問題）がある。更に、テーブルを分ける手法を採用した場合において、固有情報を保持しなかったアプリケーションが追加で固有情報を保持することとした場合、固有情報を格納するテーブルを変更する必要がありテーブルの管理が煩雑となるという問題（第３の問題）がある。
【０００５】
一方で、特許文献１には、ＩＣカード内のメモリ領域に、各々可変長情報を可変長の型式で格納するための複数の情報格納領域、及び、個々の情報格納領域を識別する領域識別子（AID1〜AIDn）と各情報格納領域の先頭アドレス（ADD1〜ADDn）との関係を示すテーブルを形成する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許２６６６１８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１には、固有情報に関する記載がなく、固有情報の取り扱いに関する上述の第１の問題から第３の問題を解決することができないという課題がある。
【０００８】
そこで、本発明は、複数のアプリケーションについて共通情報、一部のアプリについて更に固有情報を記憶させる場合に、記憶領域の無駄な使用を抑制するとともに、固有情報の追加又は削除が容易であり、また、固有情報を削除してできた空き領域を有効活用することのできる電子情報記憶媒体、情報処理方法、及び情報処理プログラムを提供することを課題とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、請求項１に記載の発明は、アプリケーションに共通の共通情報を複数のアプリケーションについて記憶するとともに、アプリケーションに固有の固有情報を前記複数のアプリケーションの少なくとも一部について記憶するメモリと、前記メモリが記憶する情報を更新するプロセッサと、を備える電子情報記憶媒体であって、前記メモリは、前記固有情報を保持するアプリケーションの前記共通情報と対応付けて当該固有情報が記憶されるアドレスを示すアドレス情報を更に記憶し、前記プロセッサは、前記固有情報を追加又は削除した場合に当該固有情報を追加又は削除したアプリケーションの前記アドレス情報を更新することを特徴とする。
【００１０】
請求項２に記載の発明は、請求項１に記載の電子情報記憶媒体であって、前記固有情報が固定長の場合において、前記プロセッサは、何れかのアプリケーションの固有情報を削除した場合に、当該固有情報を削除した領域より後方の領域に記憶されている情報を前記固定長サイズ分だけ前に詰めて再記憶させるとともに、当該前に詰めて再記憶させた固有情報を保持するアプリケーションの前記アドレス情報を、前記固定長サイズ分だけ減算した値により更新することを特徴とする。
【００１１】
請求項３に記載の発明は、請求項１に記載の電子情報記憶媒体であって、前記メモリは、前記固有情報が可変長の場合に、前記固有情報を保持するアプリケーションの前記アドレス情報とともに当該固有情報のデータ長を示すデータ長情報を更に記憶し、前記プロセッサは、何れかのアプリケーションの固有情報を削除した場合に、当該固有情報を削除した領域より後方の領域に記憶されている情報を、当該削除した固有情報のデータ長サイズ分だけ前に詰めて再記憶させるとともに、当該前に詰めて再記憶させた固有情報を保持するアプリケーションの前記アドレス情報を、当該削除した固有情報のデータ長サイズ分だけ減算した値により更新することを特徴とする。
【００１２】
請求項４に記載の発明は、請求項１に記載の電子情報記憶媒体であって、前記固有情報が固定長の場合において、前記プロセッサは、前記固有情報を保持しないアプリケーションについて当該固有情報を追加した場合に、当該アプリケーションの前記アドレス情報を、当該固有情報が新たに記憶されるアドレスにより更新することを特徴とする。
【００１３】
請求項５に記載の発明は、請求項１に記載の電子情報記憶媒体であって、前記メモリは、前記固有情報が可変長の場合に、前記固有情報を保持するアプリケーションの前記アドレス情報とともに当該固有情報のデータ長を示すデータ長情報を更に記憶し、前記プロセッサは、前記固有情報を保持しないアプリケーションについて当該固有情報を追加した場合に、当該アプリケーションの前記アドレス情報を、当該固有情報が新たに記憶されるアドレスにより更新するとともに、当該アプリケーションの前記データ長情報を、当該固有情報のデータ長により更新することを特徴とする。
【００１４】
請求項６に記載の発明は、アプリケーションに共通の共通情報を複数のアプリケーションについて記憶するとともに、アプリケーションに固有の固有情報を前記複数のアプリケーションの少なくとも一部について記憶するメモリと、前記メモリが記憶する情報を更新するプロセッサと、を備え、前記メモリが、前記固有情報を保持するアプリケーションの前記共通情報と対応付けて当該固有情報が記憶されるアドレスを示すアドレス情報を更に記憶する電子情報記憶媒体において前記プロセッサにより実行される情報処理方法であって、前記プロセッサが、前記固有情報を追加又は削除した場合に当該固有情報を追加又は削除したアプリケーションの前記アドレス情報を更新する更新ステップを含むことを特徴とする。
【００１５】
請求項７に記載の発明は、アプリケーションに共通の共通情報を複数のアプリケーションについて記憶するとともに、アプリケーションに固有の固有情報を前記複数のアプリケーションの少なくとも一部について記憶するメモリと、前記メモリが記憶する情報を更新するプロセッサと、を備え、前記メモリが、前記固有情報を保持するアプリケーションの前記共通情報と対応付けて当該固有情報が記憶されるアドレスを示すアドレス情報を更に記憶する電子情報記憶媒体における前記プロセッサを、前記固有情報を追加又は削除した場合に当該固有情報を追加又は削除したアプリケーションの前記アドレス情報を更新する更新手段として機能させることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、固有情報を保持しないアプリケーションについては固有情報を記憶せずにすみ、記憶領域の無駄を削減できる。また、アプリケーションが追加で固有情報を保持する場合、固有情報を追加したアプリケーションのアドレス情報を更新するだけですみテーブルの管理が容易である。更に、固有情報を保持するアプリケーションについて固有情報を削除する場合でも当該固有情報を削除して後続の（他のアプリケーションの）固有情報を前に詰めるとともに、削除した固有情報及び前に詰めた固有情報に対応するアプリケーションのアドレス情報を更新するだけで容易に回収処理（ガベージ・コレクション）や再配置処理（デフラグメント）を行うことができる。
【図面の簡単な説明】
【００１７】
【図１】共通情報と固有情報を一つのテーブルに格納した例を示す図である。
【図２】（Ａ）共通情報のみを格納するテーブルの一例を示す図である。（Ｂ）共通情報と固有情報を格納するテーブルの一例を示す図である。
【図３】新たな固有情報が追加された場合に作成される、共通情報と固有情報を格納するテーブルの一例である。
【図４】ＩＣカード１の概要構成例を示す図である。
【図５】共通情報テーブル３００と固有情報テーブル４００のデータ格納例を示す図である。
【図６】固有情報レコード５０１Ｂ、５０１Ｃ、５０１Ｅ、５０１Ｆを記憶する記憶領域５００の一例を示す図である。
【図７】ＣＰＵ１０のインストールコマンド受信時の処理の一例を示すフローチャートである。
【図８】ＣＰＵ１０のアンインストールコマンド受信時の処理の一例を示すフローチャートである。
【図９】固有情報レコード５０１Ｃを削除した後の記憶領域５００の一例を示す図である。
【図１０】ＣＰＵ１０の固有情報追加コマンド受信時の処理の一例を示すフローチャートである。
【図１１】ＣＰＵ１０の固有情報削除コマンド受信時の処理の一例を示すフローチャートである。
【図１２】変形例における共通情報テーブル６００のデータ格納例を示す図である。
【図１３】変形例における第１固有情報及び第２固有情報を記憶する記憶領域７００の一例を示す図である。
【図１４】変形例における共通情報テーブル８００のデータ格納例を示す図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、ＩＣカードに対して本発明を適用した場合の実施の形態である。
【００１９】
まず、図４を参照して、本実施形態に係るＩＣカード１の構成及び機能概要について説明する。図４は、ＩＣカード１の概要構成例を示す図である。なお、ＩＣカード１は、キャッシュカード、クレジットカード、社員カード等として使用される。或いは、ＩＣカード１は、スマートフォンや携帯電話機等の通信機器に組み込まれる。ＩＣチップ１ａは通信機器の回路基板上に直接組み込んで構成するようにしてもよい。
【００２０】
ＩＣカード１には、ＩＣチップ１ａが搭載されている。ＩＣチップ１ａは、本発明の電子情報記憶媒体の一例である。ＩＣチップ１ａは、ＣＰＵ（Central Processing Unit）１０、ＲＡＭ（Random Access Memory）１１、ＲＯＭ（Read Only Memory）１２、不揮発性メモリ１３、及びＩ／Ｏ回路１４を備えて構成される。なお、Ｉ／Ｏ回路１４は、外部端末２とのインターフェイスを担う。ＩＣカード１が接触ＩＣカードの場合、Ｉ／Ｏ回路１４には、例えばＩＳＯ／ＩＥＣ７８１６によって定められたＣ１〜Ｃ８の８個の端子が設けられている。例えば、Ｃ１端子は電源端子、Ｃ２端子はリセット端子、Ｃ３端子はクロック端子、Ｃ５端子はグランド端子、Ｃ７端子は外部端末２とのデータ通信を行う端子である。なお、この例では、接触式のＩＣカードの例を示したが、外部端末２に近づくことにより、磁界をエネルギーとして無結線状態で電源供給され（電圧印加され）、動作する非接触式のＩＣカード（アンテナ及び変復調回路を含む）であってもよい。外部端末２の例としては、ＩＣカード発行機、ＡＴＭ、改札機、認証用ゲート等が挙げられる。或いは、ＩＣカード１が通信機器に組み込まれる場合、外部端末２には通信機器の機能を担うコントローラが該当する。
【００２１】
ＣＰＵ１０は、ＲＯＭ１２または不揮発性メモリ１３に記憶されたプログラム（本発明の情報処理プログラムを含む）を実行するプロセッサ（コンピュータ）である。ＣＰＵ１０は、記憶されたプログラムに従って後述する処理を実行する。
【００２２】
不揮発性メモリ１３は、例えばフラッシュメモリが適用される。なお、不揮発性メモリ１３は、「Electrically Erasable Programmable Read-Only Memory」であっても構わない。不揮発性メモリ１３は、複数のアプリケーション（アプリケーションは、複数の命令コードにより更新されるソフトウェアモジュールである。命令コードはＣＰＵ（Central Processing Unit）により実行される）に関するデータ（プログラム本体や設定情報（共通情報と固有情報））を格納するデータ格納領域を有する。
【００２３】
ここで、図５を用いて、本実施形態における共通情報と固有情報の格納例について説明する。不揮発性メモリ１３には、共通情報が格納される共通情報テーブル３００と、固有情報が格納される固有情報テーブル４００が構築されている。
【００２４】
共通情報テーブル３００には、ＩＣカード１にインストールされているアプリケーションを識別するための「アプリＩＤ」、「項目Ａ」、「項目Ｂ」、「項目Ｃ」とからなる共通情報と、「先頭アドレス」とで構成される共通情報レコードが格納される。「先頭アドレス」には、「アプリＩＤ」で識別されるアプリケーションの固有情報で構成される後述の固有情報レコードが格納されている記憶領域の先頭アドレスを示す情報が格納される。但し、固有情報（固有情報レコード）を保持しないアプリケーション（図５の例では、アプリＩＤ「ＡＰＰ００Ａ」、「ＡＰＰ００Ｄ」で識別されるアプリケーション）の先頭アドレスには、固有情報を保持しないことを示す「ｎｕｌｌ」が格納される。なお、本実施形態では、「アプリＩＤ」、「項目Ａ」、「項目Ｂ」、「項目Ｃ」、「先頭アドレス」で構成される共通情報レコードのデータ長は１６バイト（固定長）とする。
【００２５】
固有情報テーブル４００には、固有情報である「項目１」、「項目２」、「項目３」で構成される固有情報レコードが格納される。なお、本実施形態では、固有情報レコードのデータ長は２０バイト（固定長）とする。
【００２６】
また、固有情報レコードは、例えば、図６に示すように、不揮発性メモリ１３の記憶領域５００の連続する領域に固有情報レコード５０１Ｂ（アプリＩＤ「ＡＰＰ００Ｂ」で識別されるアプリケーションの保持する固有情報を含む固有情報レコード」）、固有情報レコード５０１Ｃ（アプリＩＤ「ＡＰＰ００Ｃ」で識別されるアプリケーションの保持する固有情報を含む固有情報レコード」）、固有情報レコード５０１Ｅ（アプリＩＤ「ＡＰＰ００Ｅ」で識別されるアプリケーションの保持する固有情報を含む固有情報レコード」）、固有情報レコード５０１Ｆ（アプリＩＤ「ＡＰＰ００Ｆ」で識別されるアプリケーションの保持する固有情報を含む固有情報レコード」）が記憶されている。なお、本実施形態では、固有情報レコード５０１Ｂ、５０１Ｃ、５０１Ｅ、５０１Ｆは記憶領域５００の連続する領域に記憶されることとしたが、固有情報レコード５０１Ｂ、５０１Ｃ、５０１Ｅ、５０１Ｆは記憶領域５００にばらばらの領域に記憶することとしてもよい。
【００２７】
ＣＰＵ１０は、例えば外部端末２からＩ／Ｏ回路１４を介して受信されたコマンド（例えば、インストールコマンド、アンインストールコマンド、固有情報追加コマンド、固有情報削除コマンド）に基づいて、共通情報テーブル３００と固有情報テーブル４００のレコードを更新する。
【００２８】
コマンドは、例えば、ＡＰＤＵ（Application Protocol Data Unit）として外部端末２から送信される。ＡＰＤＵとして送られるコマンドは、ＣＬＡ部、ＩＮＳ部、Ｐ１部、Ｐ２部、Ｌｃ部、Ｄａｔａ部、Ｌｅ部から構成される。ＣＬＡ部及びＩＮＳ部は、コマンドの種類を示す情報を格納する。Ｐ１部及びＰ２部は、コマンド処理におけるパラメータを格納する。Ｌｃ部は、Ｄａｔａ部のデータ長を格納する。Ｄａｔａ部は、共通情報テーブル３００と固有情報テーブル４００に格納される情報をＴＬＶ（タグ（Tag）、データ長（Length）、データ値（Value））形式で構成したレコード（レコードデータ）を格納する。例えば、タグとしては、「アプリＩＤ」、「項目Ａ」、「項目Ｂ」、「項目Ｃ」、「項目１」、「項目２」、「項目３」を示す文字情報が設定され、データ長としては、タグで識別されるデータ項目に格納される情報のデータ長が設定され、データ値としては、タグで識別されるデータ項目に格納される情報が設定される。Ｌｅ部は、コマンドによる処理結果をチェックするための情報（例えば、レスポンスデータとして許容するデータ長）を格納する。
【００２９】
そして、ＣＰＵ１０は、本発明における更新手段として機能する。具体的には、ＣＰＵ１０は、固有情報を追加又は削除した場合に当該固有情報を追加又は削除したアプリケーションの先頭アドレス（「アドレス情報」の一例）を更新する。
【００３０】
次に、図７を参照して、ＩＣカード１におけるＣＰＵ１０によるアプリケーションのインストールコマンド受信時の処理の一例について説明する。図７は、ＣＰＵ１０のインストールコマンド受信時の処理の一例を示すフローチャートである。図７に示す処理は、ＣＰＵ１０が、例えば外部端末２からＩ／Ｏ回路１４を介してインストールコマンドを受信することにより開始される。インストールコマンドは、ＩＣカード１ａにアプリケーションをインストールする場合に外部端末２から送信されるコマンドであり、固有情報を保持しないアプリケーションをインストールする場合であれば、Ｄａｔａ部には共通情報に対応するタグ（Tag）、データ長（Length）、データ値（Value）のみが格納され、また、固有情報に対応するタグ（Tag）、データ長（Length）、データ値（Value）におけるデータ長（Length）には「０」が格納され、データ値（Value）は空欄となっている。一方、固有情報を保持するアプリケーションをインストールする場合であれば、Ｄａｔａ部には、共通情報及び固有情報に対応するタグ（Tag）、データ長（Length）、データ値（Value）が格納されている。
【００３１】
まず、ＣＰＵ１０は、受信したインストールコマンドに基づいて、共通情報テーブル更新用レコードを作成する（ステップＳ１）。具体的には、ＣＰＵ１０は、インストールコマンドのＤａｔａ部に含まれるタグ（Tag）を参照し、「アプリＩＤ」、「項目Ａ」、「項目Ｂ」、「項目Ｃ」に対応するデータ値（Value）を抜き出して「アプリＩＤ」、「項目Ａ」、「項目Ｂ」、「項目Ｃ」及び「先頭アドレス」で構成される共通情報テーブル更新用レコード（１６バイト）を作成する。但し、この時点では「先頭アドレス」は空欄としておく。
【００３２】
次に、ＣＰＵ１０は、インストールコマンドのＤａｔａ部に固有情報が含まれるか否かを判定する（ステップＳ２）。具体的には、例えば、インストールコマンドのＤａｔａ部に含まれるタグ（Tag）を参照し、「項目１」、「項目２」、「項目３」に対応するデータ値（Value）に値が格納されているか否か（或いはデータ長（Length）が「０」であるか否か）を判定する。ＣＰＵ１０は、固有情報が含まれないと判定した場合には（ステップＳ２：ＮＯ）、ステップＳ１の処理で作成した共通情報テーブル更新用レコードの「先頭アドレス」に「ｎｕｌｌ」を設定し（ステップＳ３）、次いで、共通情報テーブル更新用レコードにより共通情報テーブル３００にデータを追加し（ステップＳ７）、当該フローチャートに示す処理を終了する。
【００３３】
一方、ＣＰＵ１０は、インストールコマンドのＤａｔａ部に固有情報が含まれると判定した場合には（ステップＳ２：ＹＥＳ）、固有情報テーブル更新用レコードを作成する（ステップＳ４）。具体的には、ＣＰＵ１０は、インストールコマンドのＤａｔａ部に含まれるタグ（Tag）を参照し、「項目１」、「項目２」、「項目３」に対応するデータ値（Value）を抜き出して「項目１」、「項目２」、「項目３」で構成される固有情報テーブル更新用レコード（２０バイト）を作成する。
【００３４】
次、ＣＰＵ１０は、ステップＳ１の処理で作成した共通情報テーブル更新用レコードの「先頭アドレス」を編集する（ステップＳ５）。具体的には、ステップＳ４の処理で作成した固有情報テーブル更新用レコードを記憶させる不揮発性メモリ１３の領域を決定し、当該領域の先頭アドレスを共通情報テーブル更新用レコードの「先頭アドレス」に設定する。なお、固有情報テーブル更新用レコードを記憶させる領域の決定方法は従来公知の手法によるものとする。
【００３５】
次、ＣＰＵ１０は、固有情報テーブル更新用レコードにより固有情報テーブル４００にデータを追加し（ステップＳ６）、次いで、共通情報テーブル更新用レコードにより共通情報テーブル３００にデータを追加し（ステップＳ７）、当該フローチャートに示す処理を終了する。
【００３６】
次に、図８等を参照して、ＩＣカード１におけるＣＰＵ１０によるアプリケーションのアンインストールコマンド受信時の処理の一例について説明する。図８は、ＣＰＵ１０のアンインストールコマンド受信時の処理の一例を示すフローチャートである。図８に示す処理は、ＣＰＵ１０が、例えば外部端末２からＩ／Ｏ回路１４を介してアンインストールコマンドを受信することにより開始される。アンインストールコマンドは、ＩＣカード１にアプリケーションをアンインストールする場合に外部端末２から送信されるコマンドであり、アンインストール対象のアプリケーションが固有情報を保持するか否かによりＤａｔａ部に格納される情報が異なる。固有情報を保持するアプリケーションがアンインストール対象である場合には、Ｄａｔａ部には共通情報及び固有情報に対応するタグ（Tag）、データ長（Length）、データ値（Value）が格納され、「アプリＩＤ」にアンインストール対象のアプリケーションに対応するアプリＩＤが格納されているのを除き、全てのタグ（Tag）についてデータ長（Length）には「０」が格納され、データ値（Value）は空欄となっている。一方、固有情報を保持しないアプリケーションがアンインストール対象である場合には、固有情報に対応するタグ（Tag）、データ長（Length）、データ値（Value）が格納されていない以外は、固有情報を保持するアプリケーションがアンインストール対象である場合と同様である。
【００３７】
まず、ＣＰＵ１０は、アンインストールコマンドのＤａｔａ部に固有情報が含まれるか否かを判定する（ステップＳ３１）。具体的には、図７のステップ２と同様に判定する。ＣＰＵ１０は、固有情報が含まれないと判定した場合には（ステップＳ３１：ＮＯ）、アンインストールコマンドのＤａｔａ部に含まれるタグ（Tag）「アプリＩＤ」に対応するデータ値（Value）に基づいて、共通情報テーブル３００から削除対象の共通情報レコード（データ）を検索し、当該共通情報レコード（データ）を削除し、空いた領域を後続のデータにより詰めて（ステップＳ３５）、当該フローチャートに示す処理を終了する。
【００３８】
一方、ＣＰＵ１０は、固有情報が含まれると判定した場合には（ステップＳ３１：ＹＥＳ）、次いで、削除対象である固有情報の先頭アドレスを退避する（ステップＳ３２）。具体的には、ＣＰＵ１０は、アンインストールコマンドのＤａｔａ部に含まれるタグ（Tag）「アプリＩＤ」に対応するデータ値（Value）に基づいて、共通情報テーブル３００から削除対象の共通情報レコード（データ）を検索し、当該共通情報レコード（データ）の先頭アドレスをＲＡＭ１１又は不揮発性メモリ１３の空き領域に退避する。
【００３９】
次に、ＣＰＵ１０は、固有情報テーブル４００から削除対象の固有情報レコード（データ）を検索し（ステップＳ３２の処理で退避した先頭アドレスから２０バイトの領域に格納されているデータを検索）、当該固有情報レコード（データ）を削除するとともに、空いた領域を後続のデータにより詰める（ステップＳ３３）。例えば、図６に示す状態から固有情報レコード５０１Ｃを削除した場合には、図９に示すように、後続の固有情報レコード５０１Ｅ、固有情報レコード５０１Ｆを詰める（固有情報レコード５０１Ｆに後続データがある場合には、当該後続データを詰めても良い）。
【００４０】
図８に戻り、ＣＰＵ１０は、共通情報テーブル３００を参照し、先頭アドレスに、ステップＳ３２の処理で退避した先頭アドレスより後方のアドレスが格納されている共通情報レコード（データ）を検索し、当該共通情報レコード（データ）の先頭アドレスを更新する（ステップＳ３４）。具体的には、ＣＰＵ１０は、先頭アドレスの値から固有情報レコードのデータ長（２０バイト）を減算する。
【００４１】
次に、ＣＰＵ１０は、共通情報テーブル３００から削除対象の共通情報レコード（データ）を削除し、空いた領域を後続のデータにより詰めて（ステップ３５）、当該フローチャートに示す処理を終了する。なお、空いた領域を後続のデータにより詰める処理は、ステップＳ３３の処理と同様なので説明を省略する。
【００４２】
次に、図１０を参照して、ＩＣカード１におけるＣＰＵ１０によるアプリケーションの固有情報追加コマンド受信時の処理の一例について説明する。図１０は、ＣＰＵ１０の固有情報追加コマンド受信時の処理の一例を示すフローチャートである。図１０に示す処理は、ＣＰＵ１０が、例えば外部端末２からＩ／Ｏ回路１４を介して固有情報追加コマンドを受信することにより開始される。固有情報追加コマンドは、共通情報のみを保持し固有情報を保持しないアプリケーションに固有情報を追加で保持させる場合に外部端末２から送信されるコマンドであり、Ｄａｔａ部には共通情報及び固有情報に対応するタグ（Tag）、データ長（Length）、データ値（Value）が格納されている。なお、固有情報追加コマンドのＤａｔａ部における共通情報に対応する各項目のデータ値（Value）には、既に共通情報テーブル３００に格納されている同一のアプリＩＤを保持する共通情報レコードの各項目と同一の値が格納されているものとする。
【００４３】
まず、ＣＰＵ１０は、Ｄａｔａ部に格納されているデータに基づいて固有情報追加コマンドを受信したと判定した場合に、固有情報テーブル更新用レコードを作成する（ステップＳ５１）。具体的には、ＣＰＵ１０は、Ｄａｔａ部に含まれるタグ（Tag）を参照し、「項目１」、「項目２」、「項目３」に対応するデータ値（Value）を抜き出して「項目１」、「項目２」、「項目３」で構成される固有情報テーブル更新用レコード（２０バイト）を作成する。
【００４４】
次に、ＣＰＵ１０は、固有情報追加コマンドのＤａｔａ部に含まれるタグ（Tag）「アプリＩＤ」に対応するデータ値（Value）に基づいて、共通情報テーブル３００から更新対象のアプリケーションの共通情報レコードを検索し、当該共通情報レコードの先頭アドレスを編集する（ステップＳ５２）。具体的には、ステップＳ５１の処理で作成した固有情報テーブル更新用レコードを記憶させる不揮発性メモリ１３の領域を決定し、当該領域の先頭アドレスを共通情報テーブル更新用レコードの「先頭アドレス」に設定する。なお、固有情報テーブル更新用レコードを記憶させる領域の決定方法は従来公知の手法によるものとする。
【００４５】
次に、ＣＰＵ１０は、固有情報テーブル更新用レコードにより固有情報テーブル４００にデータを追加し（ステップＳ５３）、当該フローチャートに示す処理を終了する。
【００４６】
次に、図１１を参照して、ＩＣカード１におけるＣＰＵ１０によるアプリケーションの固有情報削除コマンド受信時の処理の一例について説明する。図１１は、ＣＰＵ１０の固有情報削除コマンド受信時の処理の一例を示すフローチャートである。図１１に示す処理は、ＣＰＵ１０が、例えば外部端末２からＩ／Ｏ回路１４を介して固有情報削除コマンドを受信することにより開始される。固有情報削除コマンドは、固有情報を保持するアプリケーションの固有情報を削除させる場合に外部端末２から送信されるコマンドであり、Ｄａｔａ部には共通情報及び固有情報に対応するタグ（Tag）、データ長（Length）、データ値（Value）が格納されている。なお、固有情報削除コマンドのＤａｔａ部における共通情報に対応する各項目のデータ値（Value）には、既に共通情報テーブル３００に格納されている同一のアプリＩＤを保持する共通情報レコードの各項目と同一の値が格納されているものとする。また、固有情報削除コマンドのＤａｔａ部における固有情報に対応する各項目のデータ長（Length）は「０」、データ値（Value）は空欄となっている。
【００４７】
まず、ＣＰＵ１０は、削除対象である固有情報の先頭アドレスを退避する（ステップＳ７１）。具体的には、ＣＰＵ１０は、固有情報削除コマンドのＤａｔａ部に含まれるタグ（Tag）「アプリＩＤ」に対応するデータ値（Value）に基づいて、共通情報テーブル３００から削除対象の共通情報レコード（データ）を検索し、当該共通情報レコード（データ）の先頭アドレスをＲＡＭ１１又は不揮発性メモリ１３の空き領域に退避する。
【００４８】
次に、ＣＰＵ１０は、共通情報テーブル３００を参照し、削除対象のアプリケーションの共通情報レコードの先頭アドレスに「ｎｕｌｌ」を設定する（ステップＳ７２）。具体的には、ＣＰＵ１０は、ステップＳ７１の処理で検索した共通情報レコード（データ）の先頭アドレスに「ｎｕｌｌ」を設定する。
【００４９】
次に、ＣＰＵ１０は、固有情報テーブル４００から削除対象の固有情報レコード（データ）を検索し（ステップＳ７１の処理で退避した先頭アドレスから２０バイトの領域に格納されているデータを検索）、当該固有情報レコード（データ）を削除するとともに、空いた領域を後続のデータにより詰める（ステップ７３）。例えば、図６に示す状態から固有情報レコード５０１Ｃを削除した場合には、図９に示すように、後続の固有情報レコード５０１Ｅ、固有情報レコード５０１Ｆを詰める（固有情報レコード５０１Ｆに後続データがある場合には、当該後続データを詰めても良い）。
【００５０】
図１１に戻り、ＣＰＵ１０は、共通情報テーブル３００を参照し、先頭アドレスに、ステップＳ７１の処理で退避した先頭アドレスより後方のアドレスが格納されている共通情報レコード（データ）を検索し、当該共通情報レコード（データ）の先頭アドレスを更新する（ステップＳ７４）。具体的には、ＣＰＵ１０は、先頭アドレスの値から固有情報レコードのデータ長（２０バイト）を減算する。
【００５１】
以上説明したように、本実施形態のＩＣカード１（「電子情報記憶媒体」の一例）は、アプリケーションに共通の共通情報を複数のアプリケーションについて記憶するとともに、アプリケーションに固有の固有情報を複数のアプリケーションの少なくとも一部について記憶する不揮発性メモリ１３（「メモリ」の一例）と、不揮発性メモリ１３が記憶する情報を更新するＣＰＵ１０（「プロセッサ」の一例）と、を備え、不揮発性メモリ１３は、固有情報を保持するアプリケーションの共通情報と対応付けて当該固有情報が記憶されるアドレスを示す先頭アドレス（「アドレス情報」の一例）を更に記憶し、ＣＰＵ１０は、固有情報を追加又は削除した場合に当該固有情報を追加又は削除したアプリケーションの先頭アドレスを更新する。
【００５２】
したがって、本実施形態のＩＣカード１によれば、固有情報を保持しないアプリケーションについては固有情報を記憶せずにすみ、記憶領域の無駄を削減できる。また、アプリケーションが追加で固有情報を保持する場合、固有情報を追加したアプリケーションのアドレス情報を更新するだけですみテーブルの管理が容易である。更に、固有情報を保持するアプリケーションについて固有情報を削除する場合でも当該固有情報を削除して後続の（他のアプリケーションの）固有情報を前に詰めるとともに、削除した固有情報及び前に詰めた固有情報に対応するアプリケーションの先頭アドレスを更新するだけで容易に回収処理（ガベージ・コレクション）や再配置処理（デフラグメント）を行うことができる。
【００５３】
なお、上記実施形態では、固有情報が固定長である場合について説明したが、固有情報は可変長であってもよい。また、上記実施形態では、一のアプリケーションについて固有情報が１種類（項目１、項目２、項目３）であった場合について説明したが、一のアプリケーションについて固有情報は複数種類あってもよい。以下、可変長の固有情報が複数ある場合の変形例について図１２及び図１３を用いて説明する。
【００５４】
本変形例では、アプリケーションのプログラムコード（「第１固有情報」という）と、アプリケーションの固有情報（「第２固有情報」という）の二つの可変長の固有情報が不揮発性メモリ１３に記憶されるものとする。図１２に示すように、共通情報テーブル６００には、上記実施形態と同様に共通情報として「アプリＩＤ」、「項目Ａ」、「項目Ｂ」、「項目Ｃ」の情報が格納される。また、共通情報テーブル６００には、第１固有情報用の先頭アドレス及びデータ長と、第２固有情報用の先頭アドレス及びデータ長がそれぞれ格納される。本変形例では、第１固有情報がアプリケーションのプログラムコードであるので、全てのアプリケーションについて第１固有情報用の先頭アドレス及びデータ長に情報が格納される。一方、第２固有情報はアプリケーションによって保持したりしなかったりすることから、第２固有情報用の先頭アドレス及びデータ長には、情報が格納されたりされなかったりする（図１２の例では、アプリＩＤ「ＡＰＰ００Ａ」、「ＡＰＰ００Ｄ」のアプリケーションについて情報が格納されていない）。
【００５５】
図１３に示すように、不揮発性メモリ１３の記憶領域７００は、インストールされたアプリケーション毎にアプリ領域７１０、７２０、７３０、７４０、７５０、７６０を確保することとしてもよい。例えば、アプリ領域７１０（アプリＩＤ「ＡＰＰ００Ａ」のアプリケーションに割り当てられた領域）には、アプリＩＤ「ＡＰＰ００Ａ」のアプリケーションのプログラムコード７１１（第１固有情報）が記憶される。アプリＩＤ「ＡＰＰ００Ａ」のアプリケーションについては第２固有情報を保持しないので、アプリ領域７１０に第２固有情報は記憶されない。したがって、図１２のアプリＩＤ「ＡＰＰ００Ａ」で識別される共通情報レコードの第１固有情報用の先頭アドレスには、プログラムコード７１１が記憶されている領域の先頭アドレスが格納され、第１固有情報用のデータ長には、プログラムコード７１１のサイズが格納される。また、第２固有情報用の先頭アドレスには、「ｎｕｌｌ」が格納され、第２固有情報用のデータ長には、「０」が格納される。
【００５６】
また、図１３に示すように、アプリ領域７２０（アプリＩＤ「ＡＰＰ００Ｂ」のアプリケーションに割り当てられた領域）には、アプリＩＤ「ＡＰＰ００Ｂ」のアプリケーションのプログラムコード７２１（第１固有情報）と、第２固有情報７２２が記憶される。したがって、図１２のアプリＩＤ「ＡＰＰ００Ｂ」で識別される共通情報レコードの第１固有情報用の先頭アドレスには、プログラムコード７２１が記憶されている領域の先頭アドレスが格納され、第１固有情報用のデータ長には、プログラムコード７２１のデータサイズが格納される。また、第２固有情報用の先頭アドレスには、第２固有情報７２２が記憶されている領域の先頭アドレスが格納され、第２固有情報用のデータ長には、第２固有情報７２２のデータサイズが格納される。
【００５７】
次に、第２固有情報を保持しないアプリケーション（例えば、アプリＩＤ「ＡＰＰ００Ａ」のアプリケーション）に、新たに第２固有情報を保持させるための固有情報追加コマンドを受信した場合について説明する。ＣＰＵ１０は、固有情報追加コマンドに含まれる第２固有情報に基づいて、第２固有情報レコードを作成し、記憶領域７００の情報が格納されていない領域に記憶させる。また、ＣＰＵ１０は、固有情報追加コマンドに含まれるアプリＩＤに基づいて第２固有情報を追加するアプリケーションに対応する共通情報レコードを共通情報テーブル６００から検索し、当該共通情報レコードの第２固有情報用の先頭アドレスを「ｎｕｌｌ」から、先に第２固有情報レコードを記憶させた記憶領域７００の先頭アドレスに更新するとともに、第２固有情報用のデータ長を「０」から、第２固有情報レコードのデータサイズに更新する。これにより、第２固有情報を保持しなかったアプリケーションが追加で第２固有情報を保持することとする場合、第２固有情報レコードを記憶領域７００に記憶させるとともに、共通情報レコードの第２固有情報用の先頭アドレスをｎｕｌｌから固有情報レコードを記憶させた先頭アドレスに変更するだけですみテーブルの管理が容易である。
【００５８】
次に、第２固有情報を保持するアプリケーション（例えば、アプリＩＤ「ＡＰＰ００Ｂ」のアプリケーション）から第２固有情報を削除させるための固有情報削除コマンドを受信した場合について説明する。ＣＰＵ１０は、固有情報削除コマンドに含まれるアプリＩＤに基づいて第２固有情報を削除するアプリケーションに対応する共通情報レコードを共通情報テーブル６００から検索し、当該共通情報レコードの第２固有情報用の先頭アドレスを「ｎｕｌｌ」に更新するとともに、第２固有情報用のデータ長を「０」に更新する。また、ＣＰＵ１０は、第２固有情報を削除したことにより空いた領域より後方の領域に記憶されている情報を、当該削除した第２固有情報のデータ長サイズ分だけ詰めて再記憶させる。このとき、情報を前に詰めて再記憶させたことにより、他のアプリケーションのプログラムコード（第１固有情報）、第２固有情報の記憶されているアドレスが変更された場合には、当該変更に合わせて第１固有情報用の先頭アドレス及び第２固有情報用の先頭アドレスを変更する。例えば、ＣＰＵ１０は、第２固有情報を削除したことにより空いた領域に、後続の領域に記憶されている情報を、削除した第２固有情報のデータ長分だけ前に詰めて再記憶させた場合には、後続の他のアプリケーションのプログラムコード（第１固有情報）、第２固有情報について第１固有情報用の先頭アドレス及び第２固有情報用の先頭アドレスを、削除した第２固有情報のデータ長分だけ減算した値により更新する。これにより、第２固有情報を保持するアプリケーションについて第２固有情報を削除する場合でも当該固有情報を削除して後続の（他のアプリケーションの）第１固有情報や第２固有情報を前に詰めるとともに、削除した第２固有情報及び前に詰めたアプリケーションの共通情報レコードの第１固有情報用の先頭アドレス及び第２固有情報用の先頭アドレスを更新するだけで容易に回収処理（ガベージ・コレクション）や再配置処理（デフラグメント）を行うことができる。
【００５９】
次に、更に別の変形例について説明する。本変形例では、図１４に示すように、共通情報テーブル８００には、上記実施形態と同様に共通情報として「アプリＩＤ」、「項目Ａ」、「項目Ｂ」、「項目Ｃ」の情報が格納されるとともに、固有情報である項目（「項目１」、「項目２」、「項目３」）毎に先頭アドレスを示す情報が格納される。なお、本変形例における「項目１」、「項目２」、「項目３」はそれぞれ固定長であり、各項目のデータ長は別途、不揮発性メモリ１３に記憶させておくものとする。共通情報テーブル８００に項目毎に先頭アドレスを格納することにより、アプリケーションによって項目１の固有情報のみを保持したり、「項目２」と「項目３」の固有情報を保持したりすることができる。
【００６０】
共通情報テーブル８００におけるアプリＩＤ「ＡＰＰ００Ｂ」で識別される共通情報レコードの「項目１」の先頭アドレスには、「項目１」の固有情報が記憶されている領域の先頭アドレスが格納され、「項目２」の先頭アドレスには、「ｎｕｌｌ」が格納され、「項目３」の先頭アドレスには、「項目３」の固有情報が記憶されている領域の先頭アドレスが格納されている。すなわち、共通情報テーブル８００は、不揮発性メモリ１３に、アプリＩＤ「ＡＰＰ００Ｂ」のアプリケーションの「項目１」の固有情報が記憶されるとともに、「項目３」の固有情報が記憶されており、「項目２」の固有情報は記憶されていないことを示している。
【００６１】
また、共通情報テーブル８００におけるアプリＩＤ「ＡＰＰ００Ｃ」で識別される共通情報レコードの「項目１」の先頭アドレスには、「項目１」の固有情報が記憶されている領域の先頭アドレスが格納され、「項目２」の先頭アドレスには、「項目２」の固有情報が記憶されている領域の先頭アドレスが格納され、「項目３」の先頭アドレスには、「ｎｕｌｌ」が格納されている。すなわち、共通情報テーブル８００は、不揮発性メモリ１３に、アプリＩＤ「ＡＰＰ００Ｃ」のアプリケーションの「項目１」の固有情報が記憶されるとともに、「項目２」の固有情報が記憶されるており、「項目３」の固有情報は記憶されていないことを示している。
【００６２】
更に、共通情報テーブル８００におけるアプリＩＤ「ＡＰＰ００Ｅ」で識別される共通情報レコードの「項目１」の先頭アドレスには、「ｎｕｌｌ」が格納され、「項目２」の先頭アドレスには、「項目２」の固有情報が記憶されている領域の先頭アドレスが格納され、「項目３」の先頭アドレスには、「項目３」の固有情報が記憶されている領域の先頭アドレスが格納されている。すなわち、共通情報テーブル８００は、不揮発性メモリ１３には、アプリＩＤ「ＡＰＰ００Ｅ」のアプリケーションの「項目２」の固有情報が記憶されるとともに、「項目３」の固有情報が記憶されており、「項目１」の固有情報は記憶されていないことを示している。
【００６３】
更にまた、共通情報テーブル８００におけるアプリＩＤ「ＡＰＰ００Ｆ」で識別される共通情報レコードの「項目１」の先頭アドレスには、「項目１」の固有情報が記憶されている領域の先頭アドレスが格納され、「項目２」の先頭アドレスには、「項目２」の固有情報が記憶されている領域の先頭アドレスが格納され、「項目３」の先頭アドレスには、「項目３」の固有情報が記憶されている領域の先頭アドレスが格納されている。すなわち、共通情報テーブル８００は、不揮発性メモリ１３には、アプリＩＤ「ＡＰＰ００Ｆ」のアプリケーションの「項目１」の固有情報が記憶されるとともに、「項目２」の固有情報及び「項目３」の固有情報９６３が記憶されていることを示している。
【００６４】
更にまた、共通情報テーブル８００におけるアプリＩＤ「ＡＰＰ００Ａ」及び「ＡＰＰ００Ｄ」で識別される共通情報レコードの「項目１」、「項目２」、「項目３」の各先頭アドレスには、「ｎｕｌｌ」が格納されている。すなわち、共通情報テーブル８００は、不揮発性メモリ１３には、アプリＩＤ「ＡＰＰ００Ａ」及び「ＡＰＰ００Ｄ」のアプリケーションについては、「項目１」、「項目２」、「項目３」の固有情報が記憶されていないことを示している。
【００６５】
次に、「項目２」の固有情報を保持しないアプリケーション（例えば、アプリＩＤ「ＡＰＰ００Ｂ」のアプリケーション）に、新たに「項目２」の固有情報を保持させるための固有情報追加コマンドを受信した場合について説明する。本変形例における固有情報追加コマンドにおけるＤａｔａ部には共通情報及び各項目に対応する固有情報に対応するタグ（Tag）、データ長（Length）、データ値（Value）が格納されている。なお、固有情報追加コマンドのＤａｔａ部には共通情報テーブル８００に格納されている情報については同一の情報が格納されているとともに、新たに追加する項目の固有情報が格納されている。ＣＰＵ１０は、固有情報追加コマンドに含まれる「項目２」の固有情報（データ値（value））を不揮発性メモリ１３の情報が格納されていない領域に記憶させる。また、ＣＰＵ１０は、固有情報追加コマンドに含まれるアプリＩＤに基づいて「項目２」の固有情報を追加するアプリケーションに対応する共通情報レコードを共通情報テーブル８００から検索し、当該共通情報レコードの「項目２」の先頭アドレスを「ｎｕｌｌ」から、先に固有情報を記憶させた領域の先頭アドレスに更新する。これにより、「項目２」の固有情報を保持しなかったアプリケーションが追加で「項目２」の固有情報を保持することとする場合、固有情報を不揮発性メモリ１３に記憶させるとともに、共通情報レコードの「項目２」の先頭アドレスを「ｎｕｌｌ」から固有情報を記憶させた先頭アドレスに変更するだけですみテーブルの管理が容易である。
【００６６】
次に、「項目３」の固有情報を保持するアプリケーション（例えば、アプリＩＤ「ＡＰＰ００Ｆ」のアプリケーション）から「項目３」の固有情報を削除させるための固有情報削除コマンドを受信した場合について説明する。本変形例における固有情報削除コマンドにおけるＤａｔａ部には共通情報及び各項目に対応する固有情報に対応するタグ（Tag）、データ長（Length）、データ値（Value）が格納されている。なお、固有情報削除コマンドのＤａｔａ部には共通情報テーブル８００に格納されている情報のうち削除対象である項目（「項目３」）の固有情報についてデータ長（Length）が「０」、データ値（Value）が空欄となっているのを除き、同一の情報が格納されている。ＣＰＵ１０は、固有情報削除コマンドに含まれるアプリＩＤ（「ＡＰＰ００Ｆ」）に基づいて何れかの項目の固有情報を削除するアプリケーションに対応する共通情報レコードを共通情報テーブル８００から検索する。次いで、検索した共通情報レコードと固有情報削除コマンドのＤａｔａ部を比較し、共通情報レコードでは固有情報が格納されているにもかかわらず、固有情報削除コマンドのＤａｔａ部ではデータ長（Length）が「０」、データ値（Value）が空欄となっている項目（ここでは「項目３」）を特定し、当該項目の先頭アドレスを「ｎｕｌｌ」に更新する。また、ＣＰＵ１０は、「項目３」の固有情報を不揮発性メモリ１３から削除するとともに、削除したことにより空いた領域より後方の領域に記憶されている情報を、当該削除した「項目３」の固有情報のデータ長サイズ分だけ詰めて再記憶させる。このとき、情報を前に詰めて再記憶させたことにより、削除対象のアプリケーションの他の項目の固有情報ないし、他のアプリケーションの各項目の固有情報が記憶されているアドレスが変更された場合には、当該変更に合わせてそれぞれの先頭アドレスを変更する。これにより、何れかの項目の固有情報を削除する場合でも当該固有情報を削除して後続の固有情報を前に詰めるとともに、削除した固有情報及び前に詰めた固有情報の先頭アドレスを更新するだけで容易に回収処理（ガベージ・コレクション）や再配置処理（デフラグメント）を行うことができる。
【００６７】
本変形例では、図５等を用いて説明した上記実施形態のように「項目１」、「項目２」及び「項目３」で構成される固有情報単位ではなく、項目毎に固有情報の先頭アドレスを共通情報テーブル８００に保持して項目単位で固有情報を管理するため、アプリケーションに応じた項目毎の情報管理を柔軟に行うことができる。
【符号の説明】
【００６８】
１  ＩＣカード
１ａ  ＩＣチップ
２  外部端末
１０  ＣＰＵ
１１  ＲＡＭ
１２  ＲＯＭ
１３  不揮発性メモリ
１４  Ｉ／Ｏ回路
【図１】
2017045103.tif 000003
【図２】
2017045103.tif 000004
【図３】
2017045103.tif 000005
【図４】
2017045103.tif 000006
【図５】
2017045103.tif 000007
【図６】
2017045103.tif 000008
【図７】
2017045103.tif 000009
【図８】
2017045103.tif 000010
【図９】
2017045103.tif 000011
【図１０】
2017045103.tif 000012
【図１１】
2017045103.tif 000013
【図１２】
2017045103.tif 000014
【図１３】
2017045103.tif 000015
【図１４】
2017045103.tif 000016