(57)【要約】【課題】端末装置に記憶されている重要なデータのセキュリティを確保しつつ、そのようなデータの比較や検索を行うことを可能にする技術を提供すること。【解決する手段】端末装置６０に記憶されているデータについては、完全カプセル化オブジェクトに内包させ、その他のデータについては、非完全カプセル化オブジェクトに内包させるようにする。ＡＰの実行過程で、２つのオブジェクトに内包されているデータの比較を行う場合に、比較対象の二つのオブジェクトが、いずれも完全カプセル化オブジェクトであるか、いずれも非完全カプセル化オブジェクトである場合にのみ、その比較を行うこと。【選択図】      図７
2004227177.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する記憶手段と、
アプリケーションプログラムを実行するための実行手段と、
アプリケーションプログラムを実行中の前記実行手段が前記記憶手段に記憶されているデータへアクセスすることを拒絶する拒絶手段と、
前記実行手段によるアプリケーションプログラムの実行に先立って、前記実行手段により操作されるデータを特定する特定手段と、
前記特定手段により特定されたデータと該データの操作に必須のメソッドとを内包するオブジェクトであって、該データのうち前記記憶手段に記憶されているデータを内包するオブジェクトについては該データを呼出元へ引き渡すメソッドを有しない第１の型のオブジェクトとして生成し、その他のデータを内包するオブジェクトについては該データを呼出元へ引き渡すメソッドを有する第２の型のオブジェクトとして生成する生成手段と、
前記生成手段により生成された２つのオブジェクトの各々に内包されているデータを比較することをアプリケーションプログラムを実行中の前記実行手段から要求された場合に、該２つのオブジェクトの型が一致する場合にのみ、該２つのオブジェクトの各々に内包されているデータの比較を行う比較手段と
を有する端末装置。
【請求項２】
実行することを指示されたアプリケーションプログラムがユーザにとって不利益な動作を行わないことが確認されているプログラムであるか否かを判定する判定手段を備え、
ユーザにとって不利益な動作を行わないことが確認されていないプログラムであると前記判定手段により判定された場合にのみ、該アプリケーションプログラムの実行に先立って、前記記憶手段に記憶されているデータのうち該アプリケーションプログラムの実行過程でアクセスされるデータを内包したオブジェクトを前記生成手段により生成する一方、該アプリケーションプログラムの実行過程で該データが直接アクセスされることを前記拒絶手段により拒絶し、該アプリケーションプログラムを前記実行手段により実行する
ことを特徴とする請求項１に記載の端末装置。
【請求項３】
通信網を介してアプリケーションプログラムを取得する取得手段を備え、
前記実行手段は、前記取得手段により取得されたアプリケーションプログラムを実行する
ことを特徴とする請求項１に記載の端末装置。
【請求項４】
前記実行手段は、Ｊａｖａバイトコードで構成されたアプリケーションプログラムを実行する
ことを特徴とする請求項１に記載の端末装置。
【請求項５】
前記生成手段により生成されたオブジェクトを記憶するオブジェクト記憶手段を有する
ことを特徴とする請求項１に記載に端末装置。
【請求項６】
前記生成手段は、前記記憶手段に記憶されているデータの一部分である部分データについても前記第１の型のオブジェクトに内包させる
ことを特徴とする請求項１に記載に端末装置。
【請求項７】
前記記憶手段は、データを該データの重要度と対応づけて記憶し、
前記生成手段は、前記記憶手段に記憶されているデータのうち、重要度が高いデータについては、前記第１の型のオブジェクトに内包されるようにし、重要度が低いデータについては、前記第２の型のオブジェクトに内包されるようにする
ことを特徴とする請求項１に記載の端末装置。
【請求項８】
アプリケーションプログラムを実行中の前記実行手段により操作されるデータを、該データの重要度と対応付けてユーザに入力させるための入力手段を備え、
前記生成手段は、前記入力手段により入力されたデータのうち、重要度が高いデータについては前記第１の型のオブジェクトに内包されるようにし、重要度が低いデータについては前記第２の型のオブジェクトに内包されるようにする
ことを特徴とする請求項１に記載の端末装置。
【請求項９】
コンピュータ装置に、
データを記憶する記憶手段と、
データを操作するアプリケーションプログラムを実行するための実行手段と、
アプリケーションプログラムを実行中の前記実行手段が前記記憶手段に記憶されているデータへアクセスすることを拒絶する拒絶手段と、
前記実行手段によるアプリケーションプログラムの実行に先立って、前記実行手段により操作されるデータを特定する特定手段と、
前記特定手段により特定されたデータと該データの操作に必須のメソッドとを内包するオブジェクトであって、該データのうち前記記憶手段に記憶されているデータを内包するオブジェクトについては該データを呼出元へ引き渡すメソッドを有しない第１の型のオブジェクトとして生成し、その他のデータを内包するオブジェクトについては該データを呼出元へ引き渡すメソッドを有する第２の型のオブジェクトとして生成する生成手段と、
前記生成手段により生成された２つのオブジェクトの各々に内包されているデータを比較することをアプリケーションプログラムを実行中の前記実行手段から要求された場合に、該２つのオブジェクトの型が一致する場合にのみ、該２つのオブジェクトの各々に内包されているデータの比較を行う比較手段と
を実現させるためのプログラム。
【請求項１０】
コンピュータ装置読み取り可能な記録媒体であって、請求項９に記載のプログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
端末装置に記憶されているデータのセキュリティを確保する技術に関する。
【０００２】
【従来の技術】
プログラム実行機能を有する携帯電話機やパーソナルコンピュータ装置（以下、「ＰＣ」という）などの端末装置が普及している。また、この種の端末装置にゲーム機能やスケジューラ機能などを実現させるためのアプリケーションプログラム（以下、「ＡＰ」とする）が提供されている。このようなＡＰには、端末装置の販売以前にその不揮発性メモリに書き込まれて提供されるものと、ＡＰ単独で提供され、端末装置の販売後にその不揮発性メモリに書き込まれるものとがある。以下では、前者を「ネイティブＡＰ」と称し、後者を「非ネイティブＡＰ」と称する。非ネイティブＡＰの一例としては、インターネットを介して提供されるＡＰや、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）のようなコンピュータ装置読み取り可能な記録媒体に記録されて提供されるＡＰなどが挙げられる。ユーザは各自のニーズに応じて非ネイティブＡＰを端末装置に記憶させることにより、その端末装置の機能を自由に追加および変更することができる。
【０００３】
一般にＡＰは、端末装置にユーザのニーズに応じた機能を実現させるためのものであるから、ユーザにとって有益なものである。しかしながら、ＡＰの提供者に悪意がある場合には、そのＡＰを実行することでユーザが予期せぬ不利益を被ってしまう虞がある。具体的には、端末装置に記憶されている重要なデータ（例えば、ユーザの個人情報）がＡＰの実行過程で勝手に読み出され、そのＡＰの提供者へ送信されてしまうような事態が生じ得る。ネイティブＡＰについては、例えば、製品出荷時点での製品検査により、そのような事態が生じないことが端末装置の製造者によって確認されている。一方、非ネイティブＡＰについては、必ずしも、そのような確認が為されているわけではない。このような確認がなされていない非ネイティブＡＰについては、そのＡＰを実行することで、ユーザが予期せぬ不利益を被ることがないとは言い切れない。
【０００４】
ユーザが予期せぬ不利益を被らないようにするために、非ネイティブＡＰの利用を禁止し、ネイティブＡＰのみをユーザに利用させるようにすることが考えられる。しかし、非ネイティブＡＰを利用することが禁止されてしまうと、ユーザは自らのニーズに応じて端末装置の機能を自由に追加することや変更することができず、甚だ不便である。
【０００５】
そこで、非ネイティブＡＰを実行する場合には、その実行過程において端末装置に記憶されている重要なデータが自由に読み書きされないようにする仕組みを設けることが考えられる。このような仕組みを設けておけば、実行する非ネイティブＡＰが悪意のある者により提供されたものであっても、端末装置に記憶されている重要なデータを盗み出されることはなく、ユーザが予期せぬ不利益を被ることはない。
【０００６】
上述した重要なデータへのアクセス制限を実現するための技術の１つとして、オブジェクト指向技術が注目されている。オブジェクト指向技術を用いてＡＰを実行する環境（以下、「実行環境」）においては、次のような仕組みにより、ＡＰの実行過程で端末装置に記憶されているデータを直接読み書きすることが禁止される。まず、オブジェクト指向技術を用いたＡＰの実行環境では、データと、このデータを操作する際に必須の手続き（以下、「メソッド」とする）とを一体化したオブジェクトが生成される。この実行環境においてＡＰを実行する場合には、オブジェクトに内包されているメソッドを呼出すことによりそのオブジェクトに内包されているデータを操作することのみが許容される。以下、このオブジェクトとＡＰとの関係について図１１を参照しつつ説明する。
【０００７】
図１１は、オブジェクトとＡＰとの関係について説明するための図である。図１１に示されるオブジェクトは２つのデータと２つのメソッドとを内包している。図１１のデータ通知メソッドは、このメソッドを呼出したＡＰ（以下、「呼出元ＡＰ」という）により指定されたデータ自体をその呼出元ＡＰへ引き渡すメソッドである。また、図１１のデータ表示メソッドは、呼出元ＡＰにより指定されたデータに応じた画像を端末装置の表示部へ表示させるメソッドである。つまり、呼出元ＡＰはデータ通知メソッドを呼出すことによりデータ１自体やデータ２自体を取得することや、データ表示メソッドを呼出すことによりデータ１やデータ２に応じた画像を端末装置の表示部に表示させることができる。
【０００８】
図１１に示すオブジェクトと呼出元ＡＰとの関係において注目すべき点は、データ表示メソッドを呼出してデータ１やデータ２に応じた画像を表示させる場合には、表示させるデータ自体を取得していない点である。つまり、データ通知メソッドを有さないようにオブジェクトを構成すれば、このオブジェクトに内包されているデータが呼出元ＡＰに取得されることはない。以下では、データ通知メソッドを有しないオブジェクトを「完全カプセル化オブジェクト」と称し、データ通知メソッドを少なくとも１つ有するオブジェクトを「非完全カプセル化オブジェクト」と称する。完全カプセル化オブジェクトを用いて端末装置に記憶されている重要なデータを扱うようにすれば、重要なデータがＡＰの実行過程で盗み出されることはなく、重要なデータのセキュリティが確保される。
【０００９】
なお、本出願人は先行技術調査を行ったが、完全カプセル化オブジェクトを用いてデータのセキュリティを確保する技術を開示した先行技術文献はなかった。一方、本出願人は、以上に説明した実行環境と完全カプセル化オブジェクトとを用いることにより、端末装置に記憶されている重要なデータのセキュリティを確保しつつ非ネイティブＡＰを実行する技術について特許出願（特願２００２−１４３６０８）を既に行っている。
【００１０】
【発明が解決しようとする課題】
以上に説明した完全カプセル化オブジェクトと実行環境とを用いることにより、非ネイティブＡＰの実行中に、端末装置に記憶されている重要なデータへの直接的なアクセスが拒絶される。これにより、重要なデータのセキュリティを確保しつつ非ネイティブＡＰを実行することが可能になる。その一方で、このようなアクセス制限に起因して、非ネイティブＡＰに従って端末装置が行う処理には様々な制約が伴う。例えば、完全カプセル化オブジェクトに内包されているデータと他のデータとを比較する処理は行えない。そこで、このような制約を排除するために、完全カプセル化オブジェクトに内包されているデータと他のデータとの比較を可能にする仕組みを設けることを想定する。このような仕組みの一例としては、完全カプセル化オブジェクトに、呼出元ＡＰから引き渡されたデータと内包しているデータとを比較し、その比較結果を呼出元ＡＰへ通知するメソッド（以下、「比較メソッド」と称する）を設けることが挙げられる。以下では、このような仕組みを設けることの利点について、待受けＡＰを一例として説明する。なお、待受けＡＰとは、ユーザの所望する画像を端末装置に表示させると共に、着信の有無を監視し着信があった場合にその旨ユーザに通知する処理を端末装置に実行させるＡＰである。
【００１１】
待受けＡＰを実行中の端末装置は、他のユーザからの着信があった場合には、その発信元の電話番号（以下、「着信電話番号」と称する）を表示することにより、その旨ユーザに通知している。この端末装置には、ユーザの電話番号や、電話帳データなどのユーザの重要な個人情報が記憶されている。なお、電話帳データとは、図１２に示されるように、ユーザの発信する可能性のある相手や自分宛てに発信する可能性のある相手の電話番号と、その相手を特定するための識別子（例えば、相手の氏名や名称など）とを内包したデータである。この端末装置では、ユーザの電話番号や電話帳データについてのセキュリティを確保するために、これらのデータを、それぞれ固有の完全カプセル化オブジェクトに内包させるようにしている。このため、この端末装置で実行される待受けＡＰが、悪意のある者により提供された非ネイティブＡＰであったとしても、この待受けＡＰの実行過程で、これらの重要なデータを盗み出されることはない。以下では、ユーザの電話番号を内包した完全カプセル化オブジェクトを「電話番号オブジェクト」と称し、電話帳データを内包した完全カプセル化オブジェクトを「電話帳オブジェクト」と称する。
【００１２】
上記待受けＡＰを実行中の端末装置により表示される着信電話番号が、得意先や自宅の電話番号のように、ユーザにとって見覚えのある電話番号であるならば、ユーザはその発信元が誰であるかを容易に知ることができる。しかし、着信電話番号がそのような電話番号ではない場合には、ユーザはその発信元が誰であるかを知ることはできない。つまり、着信電話番号が表示されても、その発信元が誰であるのかを知ることができない場合があるという不便さがあった。
【００１３】
着信があった場合に、着信電話番号に替えて、その着信電話番号に対応する識別子を端末装置に表示させるようにすると、その発信元が誰であるのかを知ることができ便利である。このようなことは、電話帳オブジェクトに、上述した比較メソッドを設けておくことにより実現される。具体的には、待受けＡＰを実行中の端末装置に、電話帳オブジェクトに内包されている比較メソッドを呼出させ、着信電話番号と電話帳オブジェクトに内包されている電話番号とを比較させる。そして、両者が一致する旨の通知を得た場合には、上記データ表示メソッドを呼出すことにより、電話帳オブジェクトに内包されている識別子を表示させ、逆に、両者が一致しない旨の通知を得た場合には、着信電話番号をそのまま表示させる。このようにして、着信があった場合に、その発信者を示す識別子を端末装置に表示させることが可能になる。
【００１４】
以上に説明したように、完全カプセル化オブジェクトに内包されているデータと他のデータとを比較する仕組みを設けることにより、利便性を向上させた待受けＡＰを利用することが可能になる。しかしながら、ＡＰの実行過程で完全カプセル化オブジェクトに内包されているデータと他のデータとを比較することを無制限に許容すると、完全カプセル化オブジェクトに内包されているデータを盗み出されてしまう虞がある。例えば、実行しようとするＡＰが、その実行過程で、「０９０００００００００」から「０９０９９９９９９９９」までの連番の文字列データと上記電話帳オブジェクトに内包されている電話番号とを上記比較メソッドにより総当り比較する処理を端末装置に行わせるものであったとする。このようなＡＰを実行してしまうと、その実行過程で、電話帳オブジェクトに内包させている電話番号が特定されてしまう。つまり、このような処理を行うＡＰを実行してしまうと、電話帳オブジェクトに内包されている電話番号を特定され、その電話番号がこのＡＰの提供者に送信されることを防止することはできない。
【００１５】
本発明は、上述した事情に鑑みて為されたものであり、端末装置に記憶されている重要なデータのセキュリティを確保しつつ、そのようなデータの比較や検索を行うことを可能にする技術を提供することを目的としている。
【００１６】
【課題を解決するための手段】
上記課題を解決するため、本発明は、データを記憶する記憶手段と、アプリケーションプログラムを実行するための実行手段と、アプリケーションプログラムを実行中の前記実行手段が前記記憶手段に記憶されているデータへアクセスすることを拒絶する拒絶手段と、前記実行手段によるアプリケーションプログラムの実行に先立って、前記実行手段により操作されるデータを特定する特定手段と、前記特定手段により特定されたデータと該データの操作に必須のメソッドとを内包するオブジェクトであって、該データのうち前記記憶手段に記憶されているデータを内包するオブジェクトについては該データを呼出元へ引き渡すメソッドを有しない第１の型のオブジェクトとして生成し、その他のデータを内包するオブジェクトについては該データを呼出元へ引き渡すメソッドを有する第２の型のオブジェクトとして生成する生成手段と、前記生成手段により生成された２つのオブジェクトの各々に内包されているデータを比較することをアプリケーションプログラムを実行中の前記実行手段から要求された場合に、該２つのオブジェクトの型が一致する場合にのみ、該２つのオブジェクトの各々に内包されているデータの比較を行う比較手段とを有する端末装置を提供する。
【００１７】
また、上記課題を解決するために、本発明は、コンピュータ装置に、データを記憶する記憶手段と、データを操作するアプリケーションプログラムを実行するための実行手段と、アプリケーションプログラムを実行中の前記実行手段が前記記憶手段に記憶されているデータへアクセスすることを拒絶する拒絶手段と、前記実行手段によるアプリケーションプログラムの実行に先立って、前記実行手段により操作されるデータを特定する特定手段と、前記特定手段により特定されたデータと該データの操作に必須のメソッドとを内包するオブジェクトであって、該データのうち前記記憶手段に記憶されているデータを内包するオブジェクトについては該データを呼出元へ引き渡すメソッドを有しない第１の型のオブジェクトとして生成し、その他のデータを内包するオブジェクトについては該データを呼出元へ引き渡すメソッドを有する第２の型のオブジェクトとして生成する生成手段と、前記生成手段により生成された２つのオブジェクトの各々に内包されているデータを比較することをアプリケーションプログラムを実行中の前記実行手段から要求された場合に、該２つのオブジェクトの型が一致する場合にのみ、該２つのオブジェクトの各々に内包されているデータの比較を行う比較手段とを実現させるためのプログラムと、コンピュータ装置読み取り可能な記録媒体であって、当該プログラムを記録した記録媒体とを提供する。
【００１８】
このような端末装置、プログラムおよび記録媒体を用いると、アプリケーションプログラムの実行過程でアクセスされるデータのうち、端末装置に記憶されているデータについては、内包しているデータを呼出し元のプログラムへ引き渡すメソッドを有しない第１の型のオブジェクトに内包され、他のデータについては、内包しているデータを呼出し元のプログラムへ引き渡すメソッドを有する第２の型のオブジェクトに内包させられる。そして、２つのオブジェクトに内包されているデータを比較する場合には、２つのオブジェクトの型が一致する場合にのみ、比較が行われる。
【００１９】
【発明の実施の形態】
以下、図面を参照しつつ本発明の実施形態について説明する。
【００２０】
［Ａ．構成］
（１：通信システムの構成）
図１は本発明の実施形態に係る通信システムの構成例を示す図である。図１に示されるように、この通信システムは、コンテンツサーバ１０と、インターネット２０と、ゲートウェイ装置３０と、移動パケット通信網４０と、基地局５０と、端末装置６０とを有している。なお、図１には、１つのコンテンツサーバ１０と１つの端末装置６０とが例示されているが、実際には、複数のコンテンツサーバ１０と複数の端末装置６０とが存在する。
【００２１】
コンテンツサーバ１０は、インターネット２０および移動パケット通信網４０を介して端末装置６０とパケット通信を行う機能を有している。このコンテンツサーバ１０には、インターネット２０を介して端末装置６０へ提供するＡＰが格納されている。このＡＰは、オブジェクト指向のコンピュータ言語の１つであるＪａｖａ（登録商標）により記述されたプログラムであり、Ｊａｖａ実行環境で実行可能なＪａｖａバイトコードで構成されている。以下では、Ｊａｖａバイトコードで構成されたＡＰを「ＪａｖａＡＰ」と称する。このＪａｖａＡＰは、インターネット２０を介して端末装置６０へ提供される非ネイティブＡＰである。
【００２２】
ゲートウェイ装置３０は、インターネット２０における通信プロトコルと移動パケット通信網４０における通信プロトコルとを相互変換する機能を備えており、インターネット２０と移動パケット通信網４０との間のパケット通信を中継するためのものである。
【００２３】
移動パケット通信網４０は、ゲートウェイ装置３０と基地局５０とに接続されており、基地局５０に収容されている端末装置６０に対してパケット通信サービスを提供するためのものである。なお、図１に示す通信システムは、移動パケット通信網４０の他に、図示せぬ移動通信網を備えている。この移動通信網は、端末装置６０に対して一般的な移動電話の通話サービスを提供するものである。
【００２４】
基地局５０は、一定の広さ（例えば、基地局５０を中心とする半径５００メートの広さ）を有する無線セルを形成するものである。基地局５０は、自局の形成する無線セル内に在圏する端末装置６０を収容し、この端末装置６０と無線通信するためのものである。
【００２５】
端末装置６０はＪａｖａ実行環境を備えた携帯電話機であり、在圏している無線セルを形成する基地局５０と無線通信を行う。この端末装置６０は、移動パケット通信網４０およびインターネット２０を介してコンテンツサーバ１０とパケット通信を行う機能を有しており、コンテンツサーバ１０から上述したＪａｖａＡＰをダウンロードすることができる。本実施形態においては、このＪａｖａＡＰが既に端末装置６０にダウンロードされているものとする。
【００２６】
（２：端末装置６０の構成）
次に、図２を参照しつつ端末装置６０の構成を説明する。図２に示されるように、端末装置６０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２１０と、操作部２２０と、表示部２３０と、無線通信部２４０と、記憶部２５０と、これら各構成要素間のデータ授受を仲介するバス２６０とを備えている。
【００２７】
ＣＰＵ２１０は、記憶部２５０に格納されているソフトウェアを実行することにより、端末装置６０の各部を制御するものである。操作部２２０は、数字や文字、操作指示などをユーザに入力させるための複数のキーを備えており、これらのキーの操作に応じた情報をＣＰＵ２１０へ引き渡す。表示部２３０は、例えば液晶ディスプレイとその駆動回路であり、ＣＰＵ２１０から引き渡された情報に応じた画像を表示する。
【００２８】
無線通信部２４０は、アンテナ（図示省略）を備えており、基地局５０と無線通信するためのものである。この無線通信部２４０は基地局５０から送信されてくる情報を受信し、受信した情報をＣＰＵ２１０へ引き渡すと共に、ＣＰＵ２１０から引き渡された情報を基地局５０へ送出する。
【００２９】
記憶部２５０は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２５１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２５２と、不揮発性メモリ２５３とを有している。ＲＡＭ２５１はソフトウェアを実行中のＣＰＵ２１０によりワークエリアとして使用される。
【００３０】
ＲＯＭ２５２には、オペレーティングシステム（以下、「ＯＳ」とする）を実現するためのＯＳソフトウェアや、Ｊａｖａ実行環境を構築するためのソフトウェアや、ブラウザソフトウェアや、ネイティブＡＰが格納されている。このネイティブＡＰには、自身がネイティブＡＰであることを示す識別情報が内包されている。このネイティブＡＰは、ＯＳによる制御の下でＣＰＵ２１０により直接実行される。
【００３１】
不揮発性メモリ２５３は、例えばＥＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）であり、コンテンツサーバ１０からダウンロードされたＪａｖａＡＰが格納される。また、不揮発性メモリ２５３には、ユーザの個人情報や、個人情報以外のデータが格納されている。個人情報の一例としては、ユーザの電話番号や、電話帳データ（図１２参照）や、着信電話番号などが挙げられる。また、個人情報以外のデータとしては、例えば、ユーザにより制作された画像データ（以下、「自作画像データ」と称する）が挙げられる。さらに、不揮発性メモリ２５３には、重要度テーブル２５３ａ、対応情報テーブル２５３ｂおよびＪａｒストレージ２５３ｃが格納されている。
【００３２】
まず、重要度テーブル２５３ａについて図３を参照しつつ説明する。図３に示されるように、重要度テーブル２５３ａには、不揮発性メモリ２５３に格納されているデータ毎に、そのデータの重要度を示す情報（以下、単に、「重要度」とする）が格納されている。図３に示されるように、重要度は“１”または“０”の何れかの値を有するデータであり、重要度の値が“１”である場合には、「重要度が高いこと」を意味し、重要度の値が“０”である場合には、「重要度が低いこと」を意味している。例えば、図３では、ユーザの電話番号や電話帳データや着信電話番号については重要度が高いデータであることが、一方、自作画像データについては重要度が低いデータであることが例示されている。
【００３３】
次いで、不揮発性メモリ２５３に格納されている対応情報テーブル２５３ｂについて図４を参照して説明する。図４に示されるように、対応情報テーブル２５３ｂには、オブジェクトの名称と、このオブジェクトが完全カプセル化オブジェクトであるか非完全カプセル化オブジェクトであるかを示す情報（以下、「オブジェクト型」とする）と、データ識別子とが格納されている。オブジェクト型は“１”または“０”の何れかの値を有するデータであり、当該オブジェクト型の値が“１”である場合には、「完全カプセル化オブジェクト」を意味し、当該オブジェクト型の値が“０”である場合には、「非完全カプセル化オブジェクト」を意味している。データ識別子は、オブジェクトに内包されているデータを不揮発性メモリ２５３内で一意に特定する情報であり、例えば、そのデータを格納している領域のメモリアドレスである。つまり、ＣＰＵ２１０は、この対応情報テーブル２５３ｂを参照することにより、オブジェクト毎に、そのオブジェクト型や、そのオブジェクトに内包されているデータの所在場所を特定することができる。
【００３４】
次に、Ｊａｒストレージ２５３ｃについて説明する。端末装置６０へダウンロードされるＪａｖａＡＰは、ＪａｖａＡＰの本体プログラム（Ｊａｖａバイトコードで構成されたプログラム）と、このプログラムを実行する際に使用される画像データを格納した画像ファイルや音声データを格納した音声ファイルなどの、いわゆる「リソース」を１つにまとめたＪＡＲ（Ｊａｖａ  ＡＲｃｈｉｖｅ）ファイルとである。Ｊａｒストレージ２５３ｃは、このＪＡＲファイルを格納するためのものである。
【００３５】
（３：Ｊａｖａ実行環境）
次に、ＪａｖａＡＰを実行するためのＪａｖａ実行環境について図５を参照しつつ説明する。図５は、端末装置６０におけるＪａｖａ実行環境を説明するための図である。この図に示されるように、端末装置６０には、Ｊ２ＭＥ（Ｊａｖａ  ２  ｐｌａｔｆｏｒｍ  Ｍｉｃｒｏ  Ｅｄｉｔｉｏｎ）に準拠したＪａｖａ実行環境を実現するためのソフトウェアが組み込まれている。ここで、Ｊ２ＭＥとは小型電子器機向けに定められたＪａｖａ実行環境の規格である。この端末装置６０に組み込まれているソフトウェアには、ＫＶＭと、ＣＬＤＣ（Ｃｏｎｎｅｃｔｅｄ  Ｌｉｍｉｔｅｄ  Ｄｅｖｉｃｅ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ）クラスライブラリと、オリジナルＪａｖａ拡張プロファイルとが含まれている。
【００３６】
ＫＶＭは、ＪＶＭの一種であり、携帯電話機やＰＤＡ等の小型電子機器用に設計されている。ＪＶＭとは、ＪａｖａＡＰのようなＪａｖａバイトコードにより構成されたプログラムをＣＰＵ２１０が解釈し実行可能なマシン語コードに変換し、ＣＰＵ２１０に実行させるためのものである。また、ＣＬＤＣクラスライブラリは、携帯電話機やＰＤＡなどの小型電子器機向けの汎用的な機能を提供するためのクラスライブラリである。
【００３７】
オリジナルＪａｖａ拡張プロファイルは、ＣＬＤＣクラスライブラリを基礎として携帯電話機に特化した機能を提供するためのクラスライブラリである。このオリジナルＪａｖａ拡張プロファイルには、例えば、ユーザインタフェイスＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）、ネットワーキングＡＰＩ、スクラッチパッドＡＰＩ、完全カプセル化ＡＰＩ、非完全カプセル化ＡＰＩ、比較ＡＰＩなどが含まれている。
【００３８】
ユーザインタフェイスＡＰＩとは、端末装置６０のユーザインタフェイス機能をサポートするためのＡＰＩである。ネットワーキングＡＰＩとは、ＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）により指定されたネットワークリソースへアクセスするためのＡＰＩである。スクラッチパッドＡＰＩとは、スクラッチパッドに対する書き込みや読み出しをサポートするためのＡＰＩである。スクラッチパッドとは、詳細な図示は省略したが、不揮発性メモリ２５３内に設けられた記憶領域である。このスクラッチパッドには、ＪａｖａＡＰの実行に応じて発生するデータが格納される。さらに、完全カプセル化ＡＰＩは、完全カプセル化オブジェクトを生成するためのＡＰＩであり、非完全カプセル化ＡＰＩは、非完全カプセル化オブジェクトを生成するためのＡＰＩである。また、比較ＡＰＩは、呼出元ＡＰからオブジェクトの名称を２つ取得し、これら２つの名称で特定されるオブジェクトの各々に内包されているデータを比較するためのＡＰＩである。なお、この比較ＡＰＩにて行う比較の態様は、比較対象の２つのデータが完全に一致する場合にのみ両者は一致すると判定する完全一致比較であってもよく、また、比較対象のデータ一方が他方にの一部に一致する場合に両者は一致すると判定する部分一致比較であっても良い。本実施形態では、比較ＡＰＩにて行われる比較の態様が完全一致比較である場合について説明する。
【００３９】
なお、詳細な図示は省略したが、端末装置６０は、上述したＣＬＤＣクラスライブラリやオリジナルＪａｖａ拡張プロファイルの他に、メーカ独自拡張ライブラリを有している。このメーカ独自拡張ライブラリは、端末装置６０の製造元のメーカがそれぞれ独自の機能を提供するためのクラスライブラリである。
【００４０】
ＪＡＭ（Ｊａｖａ  Ａｐｐｌｉｃａｔｉｏｎ  Ｍａｎａｇｅｒ）は、ＯＳによる制御の下で、端末装置６０にダウンロードされたＪａｖａＡＰの管理や、完全カプセル化オブジェクトや非完全カプセル化オブジェクトの管理を行うためのソフトウェアである。まず、ＪＡＭを実行中のＣＰＵ２１０が行うＪａｖａＡＰの管理について説明する。ＪａｖａＡＰの管理を行うために、ＣＰＵ２１０はＪＡＭに従い、ＪａｖａＡＰのインストールや更新、削除を行う機能、不揮発性メモリ２５３に格納されているＪａｖａＡＰの名称をリスト表示する機能、ＪａｖａＡＰの実行管理を行う機能を営む。
【００４１】
ＪａｖａＡＰの実行管理を行う機能とは、ＪａｖａＡＰの起動や強制終了および、ＪａｖａＡＰの実行過程において、アクセス可能なリソースを制限する機能である。この機能により、ＪａｖａＡＰを実行中のＣＰＵ２１０が直接アクセスすることができるリソースは、このＪａｖａＡＰのダウンロード元のコンテンツサーバ１０と、このＪａｖａＡＰ専用に設けられたＪａｒストレージ２５３ｃおよびＲＡＭ２５１のみに制限される。すなわち、ＪａｖａＡＰを実行中のＣＰＵ２１０は電話帳データや着信電話番号などに直接アクセスすることはできない。これらのデータについては、ＪａｖａＡＰを実行中のＣＰＵ２１０は、これらのデータを内包しているオブジェクトに内包されているメソッドを介してのみアクセスすることができる。このようにＪａｖａＡＰを実行中のＣＰＵ２１０がアクセスすることができるリソースを制限するのは、ＪａｖａＡＰが非ネイティブＡＰだからである。
【００４２】
次に、ＣＰＵ２１０がＪＡＭに従って行うオブジェクトの管理について説明する。ＣＰＵ２１０は、ＪａｖａＡＰの実行に先立って、ＪＡＭに従って、当該ＪａｖａＡＰにより使用されるデータを内包する完全カプセル化オブジェクトや非完全カプセル化オブジェクトを生成し、生成したオブジェクトをＲＡＭ２５１へ格納する。これは、ＪａｖａＡＰの使用するデータを内包しているオブジェクトをＪａｖａＡＰがアクセス可能なリソースへ格納しておくためである。
【００４３】
［Ｂ．動作］
次に、本実施形態の動作について説明する。
【００４４】
（１：オブジェクト生成処理）
次に、端末装置６０において、ＣＰＵ２１０により実行されるオブジェクト生成処理について図６を参照しつつ説明する。このオブジェクト生成処理は、上述したように、ＣＰＵ２１０がＪＡＭに従って実行する処理である。例えば、画面表示されたＡＰの一覧リストの中から、実行するＡＰが操作入力により指定された場合などに実行される。なお、ＡＰの実行を指示する形態は、操作入力によるものに限定されるものではない。例えば、他のＡＰを実行中のＣＰＵ２１０から実行が指示される場合、電子メールなどを用いて端末装置６０の外部からＡＰの実行が指示される場合などもある。
【００４５】
図６に示すように、まず、端末装置６０のＣＰＵ２１０は、実行することを指示されたＡＰを特定する（ステップＳＡ１）。次に、ＣＰＵ２１０は、ステップＳＡ１で特定したＡＰがネイティブＡＰであるか、非ネイティブＡＰであるかを判定する（ステップＳＡ２）。前述したように、ネイティブＡＰには、自身がネイティブＡＰであることを示す識別情報が付与されている。したがって、ＣＰＵ２１０は、ＡＰに上記識別情報が付与されているか否かを判定することにより、このＡＰがネイティブＡＰであるのか、それとも非ネイティブＡＰであるのかを判定することができる。
【００４６】
ステップＳＡ２の判定結果が「Ｙｅｓ」である場合（すなわち、ネイティブＡＰである場合）は、オブジェクト生成処理を終了すると共に、そのＡＰを実行する。すなわち、実行するＡＰがネイティブＡＰである場合には、オブジェクトの生成は行われない。その理由は、ネイティブＡＰについては、ユーザにとって不利益な動作を行わないことが確認されているので、そのＡＰの実行過程においてＣＰＵ２１０がアクセスするリソースを制限する必要がないからである。
【００４７】
一方、ステップＳＡ２の判定結果が「Ｎｏ」である場合（すなわち、非ネイティブＡＰである場合）は、その非ネイティブＡＰ（例えば、ダウンロードされたＪａｖａＡＰ）の内容を解析し、このＡＰを実行した場合に使用されるデータを特定する（ステップＳＡ３）。なお、ＪａｖａＡＰの実行過程で使用されるデータを特定する際には、Ｊａｒストレージ２５３ｃ内の、このＪａｖａＡＰのＪＡＲファイルに格納されているデータは特定対象から除外する。これは、ＪＡＲファイルに格納されているデータは、このＪａｖａＡＰを実行する上で必要となるデータとして当該ＪａｖａＡＰの提供者が用意したデータだからである。
【００４８】
次に、ＣＰＵ２１０は、ステップＳＡ３において特定したデータが不揮発性メモリ２５３に格納されているデータであるか否かを判定する（ステップＳＡ４）。そして、ステップＳＡ４の判定結果が「Ｎｏ」である場合には、ＣＰＵ２１０は、このデータを非完全カプセル化オブジェクトに内包させることとする（ステップＳＡ５）。このようなデータは、例えば、ＪａｖａＡＰに内包されているデータや上述したＪＡＲファイルに格納されているデータなど、ＪａｖａＡＰの実行過程においてＣＰＵ２１０により自由に読み書きされるデータだからである。
【００４９】
図６のステップＳＡ４に戻って、ステップＳＡ４の判定結果が「Ｙｅｓ」である場合には、ＣＰＵ２１０は重要度テーブル２５３ａ（図３参照）を参照して、ステップＳＡ３にて特定したデータを完全カプセル化オブジェクトに内包させるのか、非完全カプセル化オブジェクトに内包させるのかを決定する（ステップＳＡ６）。具体的には、ＣＰＵ２１０は、ステップＳＡ３で特定したデータに対応付けられている重要度の値が、“０”である場合には、そのデータを非完全カプセル化オブジェクトに内包させることとし、逆に、重要度の値が“１”である場合には、完全カプセル化オブジェクトに内包させることとする。
【００５０】
次に、ＣＰＵ２１０は、上記ステップＳＡ３において特定したデータを内包するオブジェクトを、上記ステップＳＡ５またはスタップＳＡ６の何れか一のステップにおける決定結果に基づいて生成し、当該オブジェクトに名称を付与してＲＡＭ２５１へ格納する（ステップＳＡ７）。
【００５１】
ＣＰＵ２１０は、ステップＳＡ７でＲＡＭ２５１へ格納したオブジェクの名称と、当該オブジェクトのオブジェクト型と、当該オブジェクトに内包されているデータへの参照とを対応付けて対応情報テーブル２５３ｂへ格納し（ステップＳＡ８）、オブジェクト生成処理を終了する。例えば、実行するＪａｖａＡＰが待受けＡＰである場合には、このオブジェクト生成処理により、電話帳データを内包した完全カプセル化オブジェクト（すなわち、電話帳オブジェクト）と、着信電話番号を内包した完全カプセル化オブジェクト（以下、「着信電話番号オブジェクト」と称する）とが生成され、ＲＡＭ２５１へ格納される。また、このＪａｖａＡＰに、電話帳オブジェクトに内包されている電話番号と総当り比較を行うための文字列データ（例えば、「０９００００００００」〜「０９０９９９９９９９９」）が内包されていた場合には、このような文字列データを内包するオブジェクトは非完全カプセル化オブジェクトとして生成されＲＡＭ２５１へ格納される。
【００５２】
なお、上記ステップＳＡ３においてＪａｖａＡＰの使用するデータが複数特定された場合には、特定した各データ毎に、当該データ用の完全カプセル化オブジェクトまたは非完全カプセル化オブジェクトを生成してＲＡＭ２５１へ格納する。具体的には、ＣＰＵ２１０は、上記ステップＳＡ４〜ステップＳＡ８までの処理を各データ毎に繰り返して行う。そして、ＣＰＵ２１０は、オブジェクト生成処理を終了した後、実行するＡＰとして指定されたＪａｖａＡＰを起動し、このＪａｖａＡＰに基づく処理を開始する。
【００５３】
（２：データ比較処理）
次に、端末装置６０のＣＰＵ２１０が、上記オブジェクト生成処理にて生成された２つのオブジェクトの各々に内包されているデータを比較するデータ比較処理について図７を参照して説明する。このデータ比較処理は、上述したようにＣＰＵ２１０がＪＡＭに従って実行する処理である。具体的には、ＣＰＵ２１０はダウンロードされたＪａｖａＡＰの実行過程において、２つのオブジェクトに内包されているデータの比較要求（以下、単に、「比較要求」とする）が発生した場合に、割り込み処理として当該データ比較処理を実行する。なお、端末装置６０が以下に述べる動作を行う前提として、ＲＡＭ２５１には、３個のオブジェクト（ＯｂｊｅｃｔＡ、ＯｂｊｅｃｔＢおよびＯｂｊｅｃｔＣ）が格納されており、対応情報テーブル２５３ｂには、これら３個のオブジェクトの名称、オブジェクト型およびデータ識別子が格納されているものとする（図４参照）。図４に示されるように、ＯｂｊｅｃｔＡは、電話帳オブジェクトであり、ＯｂｊｅｃｔＢは、着信電話番号オブジェクトである。また、ＯｂｊｅｃｔＣは、自作画像データを内包した非完全カプセル化オブジェクトである。
【００５４】
まず、互いに異なるオブジェクト型を有する２つのオブジェクトに内包されているデータを比較する場合の動作について説明する。以下では、「ＯｂｊｅｃｔＢ」に内包されているデータと、「ＯｂｊｅｃｔＣ」に内包されているデータとを比較する場合について説明する。上述したように、ＯｂｊｅｃｔＢは完全カプセル化オブジェクトであり、ＯｂｊｅｃｔＣは非完全カプセル化オブジェクトである。
【００５５】
端末装置６０のＣＰＵ２１０は、ＪａｖａＡＰを実行過程において、「ＯｂｊｅｃｔＢ」に内包されているデータと「ＯｂｊｅｃｔＣ」に内包されているデータとの比較要求が発生すると、これら２つのオブジェクトの名称を起動引数として上記比較ＡＰＩを起動する。比較ＡＰＩを実行中のＣＰＵ２１０は、呼出元のＪａｖａＡＰから引き渡された２つの名称（「ＯｂｊｅｃｔＢ」および「ＯｂｊｅｃｔＣ」）で特定されるオブジェクトのオブジェクト型を対応情報テーブル２５３ｂ（図４）を参照して特定する（ステップＳＢ１）。本動作例では、「ＯｂｊｅｃｔＢ」は完全カプセル化オブジェクトであり、「ＯｂｊｅｃｔＣ」は非完全カプセル化オブジェクトであることが特定される。
【００５６】
次に、ＣＰＵ２１０は、ステップＳＢ１で特定した２つのオブジェクト型が一致するか否かを判定する（ステップＳＢ２）。そして、一致すると判定した場合には（ステップＳＢ２：Ｙｅｓ）、ＣＰＵ２１０は、対応情報テーブル２５３ｂを参照して各オブジェクトに内包されているデータを特定する（ステップＳＢ３）。逆に、一致しないと判定した場合には、ＣＰＵ２１０は、比較不能である旨を呼出し元のＪａｖａＡＰへ通知し（ステップＳＢ５）、比較ＡＰＩの実行を終了する。
【００５７】
本動作例では、ステップＳＢ２において、比較対象の２つのオブジェクトのオブジェクト型は一致しないと判定され、比較不能であることが呼出元のＪａｖａＡＰへ通知される。このように、比較ＡＰＩを用いたとしても、非完全カプセル化オブジェクトに内包されているデータと、完全カプセル化オブジェクトに内包されているデータとが比較されることはない。このため、例えば、ＣＰＵ２１０に、文字列データ（例えば「０９０００００００００」〜「０９０９９９９９９９９」）と電話帳データに内包されている電話番号とを上記比較ＡＰＩを用いて比較させるＪａｖａＡＰを実行したとしても、前者は非完全カプセル化オブジェクトに内包されており、後者は完全カプセル化オブジェクトに内包されているため、両者が比較されることはない。つまり、上記比較ＡＰＩを用いたとしても、完全カプセル化オブジェクトに内包されているデータと非完全カプセル化オブジェクトに内包されているデータとの比較は行われないので、ＪａｖａＡＰの実行過程で完全カプセル化オブジェクトに内包されているデータが盗み出されることはない。
【００５８】
次に、同一のオブジェクト型を有する２つのオブジェクトに内包されているデータを比較する場合の動作について説明する。以下では、「ＯｂｊｅｃｔＡ」に内包されているデータと、「ＯｂｊｅｃｔＢ」に内包されているデータとを比較する場合について説明する。図４に示されるように、これら２つのオブジェクトは共に完全カプセル化オブジェクトである。なお、比較対象のデータを内包しているオブジェクトが共に非完全カプセル化オブジェクトである場合には、一般的な比較メソッド（例えば、比較対象のデータを内包しているオブジェクトが共にＳｔｒｉｎｇオブジェクトである場合には、Ｓｔｒｉｎｇ．ｅｑｕａｌメソッド）を使用して、これら２つのオブジェクトに内包されているデータを比較することが可能であるため説明を省略する。
【００５９】
ＪａｖａＡＰの実行過程において比較要求が発生すると、比較対象の２つのオブジェクトの名称を起動引数として比較ＡＰＩを起動し、これら２つのオブジェクトのオブジェクト型が一致するか否かを判定するまでのＣＰＵ２１０の動作は、上述したステップＳＢ１およびステップＳＢ２におけるＣＰＵ２１０の動作と同一である。
【００６０】
ただし、本動作例では、「ＯｂｊｅｃｔＡ」と「ＯｂｊｅｃｔＢ」とは共に、完全カプセル化オブジェクトであるので、図７のステップＳＢ２においては、両者のオブジェクト型は一致すると判定される。以下、ＣＰＵ２１０は、対応情報テーブル２５３ｂを参照して「ＯｂｊｅｃｔＡ」および「ＯｂｊｅｃｔＢ」の各々に内包されているデータを取得する（ステップＳＢ３）。例えば、ＯｂｊｅｃｔＡに内包されているデータを取得する場合には、ＣＰＵ２１０は、まず、対応情報テーブル２５３ｂを参照してこのオブジェクトに内包されているデータを示すデータ識別子を取得する。ついで、ＣＰＵ２１０は、このデータ識別子に基づいて不揮発性メモリ２５３から、対応するデータを読み出す。
【００６１】
そして、ＣＰＵ２１０は、ステップＳＢ３で取得した２つのデータを比較し比較結果を呼出元のＪａｖａＡＰへ通知し（ステップＳＢ４）、比較ＡＰＩの実行を終了する。以上に説明したように、ＪａｖａＡＰを実行中のＣＰＵ２１０は、比較ＡＰＩを呼出すことにより、２つの完全カプセル化オブジェクトの各々に内包されているデータを比較することができる。これにより、着信電話番号オブジェクトに内包されている着信電話番号と、電話帳オブジェクトに内包されている電話番号とを比較することが可能になる。そして、ＣＰＵ２１０は、両者が一致する場合には、上述したデータ表示メソッドを呼出すことにより、電話帳オブジェクトに内包されている識別子を表示させることが可能になる。
【００６２】
［Ｃ．変形例］
以上、本発明の実施形態について説明したが、本発明は係る実施形態に限定されるものではなく、その技術思想の範囲内で様々な変形が可能である。なお、変形例としては、例えば、以下のようなものが考えられる。
【００６３】
（変形例１）
上述した実施形態では、端末装置６０の不揮発性メモリ２５３に１つの電話帳データが格納されている場合について説明した。しかしながら、複数の電話帳データが不揮発性メモリ２５３に格納されていても良いことはもちろんである。このような場合に、非ネイティブＡＰの待受けＡＰを実行することが指示されると、ＣＰＵ２１０は、まず、上述したオブジェクト生成処理において、電話帳データ毎に、その電話帳データを内包した電話帳オブジェクトを生成する。そして、着信があった場合には、この待受けＡＰを実行中のＣＰＵ２１０は、これら複数の電話帳オブジクトについて１つづつ上記比較ＡＰＩを用いて、内包している電話番号と着信電話番号オブジェクトに内包されている着信電話番号とが一致するか否かを判定する。そして、ＣＰＵ２１０は、着信電話番号と同一の電話番号を内包している電話帳オブジェクトがあったと判定した場合には、その電話帳オブジェクトに内包されている識別子を表示させる。逆に、着信電話番号と同一の電話番号を内包している電話帳オブジェクトはないと判定した場合には、ＣＰＵ２１０は、着信電話番号オブジェクトに内包されている着信電話番号を表示させる。このように、複数の電話帳データが端末装置６０に記憶されていても、着信があった場合に、その旨ユーザに判りやすく通知する待受けＡＰを実現することができる。
【００６４】
（変形例２）
上述した実施形態では、端末装置６０の不揮発性メモリ２５３に格納されているデータを扱うオブジェクトとして、完全カプセル化オブジェクトと非完全カプセル化オブジェクトとを用いる場合について説明したが、完全カプセル化オブジェクトのみを用いても良い。すなわち、端末装置６０の不揮発性メモリ２５３に格納されているデータについては、常に、完全カプセル化オブジェクトで扱い、その他のデータについては、常に、非完全カプセル化オブジェクトで扱うとしても良い。この場合、上述した重要度テーブル２５３ａは不要となる。また、上述した実施形態では、重要度テーブル２５３ａを用いる構成としたが、ユーザの電話番号、電話帳データ、着信電話番号および自作画像データなどのデータ自体に重要度を付与するようにすれば、重要度テーブル２５３ａを用いる必要はない。
【００６５】
また、上述した実施形態では、端末装置６０に記憶されているデータの重要度を“０”（重要度が低い）または“１”（重要度が高い）の２つの値を用いて区別し、この重要度の値に基づいて当該データを扱うオブジェクトの型を決定する場合について説明したが、例えば、データの重要度を示す値として、“０（重要度「低」）”〜“５（重要度「高」）”までの値を各データに対して付与し、この重要度の値が“０”〜“２”のデータについては、非完全カプセル化オブジェクトで扱い、重要度の値が“３”〜“５”のデータについては、完全カプセル化オブジェクトで扱うとしても良い。
【００６６】
（変形例３）
上述した実施形態では、ＪａｖａＡＰのアクセスするデータのうち、端末装置６０の不揮発性メモリ２５３に格納されているデータ以外のデータについては、常に、非完全カプセル化オブジェクトで扱う場合について説明した。しかし、ユーザにより入力されるデータについては、当該データの重要度と対応付けてユーザに入力させ、重要度が高いデータについては、完全カプセル化オブジェクトで扱うとしても良い。ユーザにより入力されるデータについては、当該ユーザの個人情報が含まれている可能性があるからである。
【００６７】
（変形例４）
上述した実施形態では、不揮発性メモリ２５３に格納されているデータについてのみ完全カプセル化オブジェクトで扱う場合について説明したが、このようなデータから切出された部分データについても完全カプセル化オブジェクトで扱うとしても良い。このような部分データにも重要なデータが含まれている可能性があるからである。
【００６８】
（変形例５）
上述した実施形態では、オブジェクト生成処理にて生成されたオブジェクトがＲＡＭ２５１へ格納される場合について説明した。しかしながら、オブジェクトの格納先はＲＡＭ２５１に限定されるものではなく、不揮発性メモリ２５３であっても良い。
【００６９】
例えば、図８に示すように、不揮発性メモリ２５３に個別スクラッチパッド４５３ｄや共通スクラッチパッド４５３ｅを設けておき、この個別スクラッチパッド４５３ｄや共通スクラッチパッド４５３ｅへ生成したオブジェクトを格納するとしても良い。なお、個別スクラッチパッドとは、ＪａｖａＡＰの使用するデータをＪａｖａＡＰ毎に格納するための記憶領域であり、共通スクラッチパッドとは、複数のＪａｖａＡＰに共有されるデータを格納するための記憶領域である。このように、生成したオブジェクトを不揮発性メモリ２５３へ格納するようにすると、一度生成したオブジェクトを再利用することができるといった効果を奏する。更に、生成したオブジェクトの格納先が共通スクラッチパッド４５３ｅである場合には、複数のＪａｖａＡＰがそのオブジェクトを共同利用できるといった効果も奏する。
【００７０】
また、上述した実施形態では、ＪａｖａＡＰの実行に先立って、当該ＪａｖａＡＰの使用するデータを内包するオブジェクトを生成しておく場合について説明したが、ＪａｖａＡＰの実行過程において、データを使用する度毎に当該データを内包するオブジェクトの生成を行うとしても良い。
【００７１】
（変形例６）
上述した実施形態では、非ネイティブＡＰの一例として、インターネットを介してダウンロードされたＪａｖａＡＰについて説明した。しかしながら、端末装置６０にインストールされる非ネイティブＡＰは、ダウンロードされたＪａｖａＡＰに限定されるものではなく、例えばＣＤ−ＲＯＭなどのコンピュータ装置読み取り可能な記録媒体に記録されて配布されるＪａｖａＡＰであっても良い。
【００７２】
なお、端末装置６０にダウンロードされたＪａｖａＡＰや、記録媒体に記録されて配布されるＪａｖａＡＰであっても、例えば、移動パケット通信網４０を運営する通信事業者やＣＡ（Ｃｅｒｔｉｆｉｃａｔｅ  Ａｕｔｈｏｒｉｔｙ）のような公正な第三者機関により、その内容が審査され、一定の動作基準を満たしていると認定されたＡＰ（以下、「トラステッドＡＰ」と称する）であれば、ネイティブＡＰと同様にアクセス可能なリソースを制限する必要はない。例えば、このようなＡＰにネイティブＡＰに内包されている識別情報と同一の識別情報を内包させておけば、ＣＰＵ２１０は、ネイティブＡＰと同様にアクセス可能なリソースを制限することなく、トラステッドＡＰを実行することができる。また、上述した実施形態では、ネイティブＡＰについてはＯＳを実行中のＣＰＵ２１０により直接実行される場合について説明した。しかしながら、ネイティブＡＰについてもＪＡＭを実行中のＣＰＵ２１０により実行されるとすることももちろん可能である。
【００７３】
（変形例７）
上述した実施形態では、図９においてハッチングで示すように、ＫＶＭと、ＣＬＤＣクラスライブラリと、オリジナルＪａｖａ拡張プロファイルとを備えるＪ２ＭＥが組み込まれた端末装置６０に本発明を適用した場合について説明したが。しかしながら、本発明を適用可能なＪａｖａ実行環境はＪ２ＭＥに準拠したもの限定されるものではない。また、本発明を適用可能な端末装置は、携帯電話機に限定されるものではない。
【００７４】
例えば、図９に示すように、オリジナルＪａｖａ拡張プロファイルの替わりにＭＩＤＰ（Ｍｏｂｉｌｅ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｄｅｖｉｃｅ  Ｐｒｏｆｉｌｅ）を有する構成であっても良い。また、ＫＶＭの代わりにＪＶＭを有し、ＣＬＤＣクラスライブラリの代わりにＣＤＣ（Ｃｏｎｎｅｃｔｅｄ  Ｄｅｖｉｃｅ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ）クラスライブラリを、また、オリジナルＪａｖａ拡張プロファイルに替えて、例えば、液晶付電話機用プロファイル、ＴＶ用プロファイル、カーナビゲーション用プロファイルなどを有する構成であっても良い。さらには、ＨｏｔＳｐｏｔを有しＪ２ＳＥ（Ｊａｖａ２  Ｓｔａｎｄａｒｄ  Ｅｄｉｔｉｏｎ）に準拠するＪａｖａ実行環境であっても良く、また、ＨｏｔＳｐｏｔを有しＪ２ＥＥ（Ｊａｖａ２  Ｅｎｔｅｒｐｒｉｓｅ  Ｅｄｉｔｉｏｎ）に準拠するＪａｖａ実行環境であっても良い。なお、Ｊ２ＳＥとは、ＰＣ向けに定められてＪａｖａ実行環境の規格であり、Ｊ２ＥＥとは、サーバコンピュータ装置向けに定められたＪａｖａ実行環境の規格である。要は、完全カプセル化オブジェクトや非完全カプセル化オブジェクトを生成可能であり、同一のオブジェクト型を有する２つのオブジェクトに内包されているデータを比較することが可能なＪａｖａ実行環境であれば良い。
【００７５】
また、以上説明したＪａｖａ実行環境の変形例から明らかなように、本発明は、例えば、ＰＨＳ（Ｐｅｒｓｏｎａｌ  Ｈａｎｄｙｐｈｏｎｅ  Ｓｙｓｔｅｍ：登録商標）端末やＰＤＡ、カーナビゲーション装置、ＰＣなどの各種電子機器に適用可能である。
【００７６】
また、本発明に係る端末装置は、移動パケット通信網４０に収容される端末装置６０に限定されるものではない。例えば、図１０に示すような通信システムにおいて、ＬＡＮ７０内に設けられたＰＣ８０Ａ〜ＰＣ８０Ｃに本発明を適用することも可能である。
【００７７】
（変形例８）
上述した実施形態では、オブジェクト指向技術に基づく実行環境としてＪａｖａ実行環境を用いる場合について説明したが、他のオブジェクト指向技術に基づく実行環境に本発明を適用することも可能である。但し、本発明はＪａｖａ実行環境に適用された場合に、特に顕著な効果を奏する。以下、その理由について説明する。
【００７８】
オブジェクト指向技術に基づく実行環境においては、ＡＰの実行過程でアクセスされるデータはオブジェクト内にカプセル化されている。このカプセル化には、プログラミング言語レベルでのカプセル化と、実行コード（マシン語またはバイトコード）レベルでのカプセル化とがある。前者は、オブジェクトに内包されているデータを直接読み書きするようなソースコードを実行コードへコンパイルしないようにすることで実現される。一方、後者は、オブジェクトに内包されているデータを直接読み書きするような実行コードを実行しないようにすることで実現される。例えば、プログラミング言語Ｃ＋＋に基づくカプセル化はプログラミング言語レベルでのカプセル化であり、Ｊａｖａに基づくカプセル化は実行コードレベルでのカプセル化である。
【００７９】
より詳細に説明すると、Ｃ＋＋に基づくカプセル化では、オブジェクト内のデータを格納するためのフィールドを全てｐｒｉｖａｔｅフィールドとして宣言することで、カプセル化が実現される。なお、ｐｒｉｖａｔｅフィールドとは、直接読み書きすることを禁止するデータを格納するためのフィールドである。このようなオブジェクトを生成した場合、確かに、このオブジェクト内のｐｒｉｖａｔｅフィールドに格納されているデータを直接読み書きするようなソースコードはコンパイルされることはないので、当然、実行コードが生成されることもない。しかしながら、このカプセル化は、コンパイラによって保証されているに過ぎず、例えば、悪意のある第三者がコンパイラを改造することにより、オブジェクト内のデータを不正に入手することが可能である。また、コンパイラを改造しなくても、悪意のある第三者がハンドアセンブルなどの手段でオブジェクト内のデータを不正に読み出す実行コードを生成することも不可能ではない。加えて、ポインタを用いて直接メモリにアクセスしてしまえば、オブジェクト内のデータを入手することができてしまう。
【００８０】
これに対して、Ｊａｖａの場合、ｐｒｉｖａｔｅフィールドとして宣言されたフィールドは、ｐｒｉｖａｔｅ属性を有するフィールドであることを示すＪａｖａバイトコードへコンパイルされる。ＫＶＭがクラスファイルをＲＡＭ２５１などへ展開する際も、フィールドのｐｒｉｖａｔｅ属性は保持されている。したがって、仮にコンパイラを改造してオブジェクト内のｐｒｉｖａｔｅフィールドに格納されているデータを不正に読み出すようなバイトコードを生成したとしても、ＫＶＭがこれを検知するのでオブジェクト内のデータを入手することはできない。また、Ｊａｖａはポインタをサポートしていないので、ポインタを用いて直接メモリにアクセスし、オブジェクト内のデータを入手することもできない。
【００８１】
以上に説明したように、プログラミング言語レベルでのカプセル化が完全であっても、実行コードレベルでのカプセル化が完全でなければ、データを完全にカプセル化したとは言えない。Ｊａｖａでは、プログラミング言語レベルのみに止まらず、実行コードレベルでの完全なカプセル化を達成することが可能である。このため、本発明の適用対象である実行環境としてはＪａｖａ実行環境が最も好適である。
【００８２】
（変形例９）
上述した実施形態では、完全カプセル化ＡＰＩ、非完全カプセル化ＡＰＩ、比較ＡＰＩおよびＪＡＭなど、本発明に係る端末装置に特有な機能を実現するためのソフトウェアを端末装置６０に予め記憶させておく場合について説明した。しかしながら、これらのソフトウェアを記録したコンピュータ装置読み取り可能な記録媒体を用いて、これらのソフトウェアを一般的なコンピュータ装置にインストールすることにより、係るコンピュータ装置に端末装置６０と同一の機能を付与することも可能である。
【００８３】
【発明の効果】
本発明によれば、端末装置に記憶されている重要なデータのセキュリティを確保しつつ、そのようなデータの比較や検索を行うことが可能になるといった効果を奏する。
【図面の簡単な説明】
【図１】本発明に係る端末装置６０を有する通信システムの構成例を示す図である。
【図２】同端末装置６０の構成例を示すブロック図である。
【図３】同端末装置６０に記憶されている重要度テーブル２５３ａの一例を示す図である。
【図４】同端末装置６０に記憶されている対応情報テーブル２５３ｂの一例を示す図である。
【図５】同端末装置６０に実装されているＪａｖａ実行環境を示す図である。
【図６】同端末装置６０の実行するオブジェクト生成処理の流れを示すフローチャートである。
【図７】同端末装置６０の実行するデータ比較処理の流れを示すフローチャートである。
【図８】変形例５に係る端末装置６０の不揮発性メモリ２５３の一例を示す図である。
【図９】変形例７に係るＪａｖａ実行環境の一例を示す図である。
【図１０】変形例７に係る通信システムの構成例を示す図である。
【図１１】オブジェクト指向技術に係るオブジェクトとプログラムとの関係について説明するための図である。
【図１２】端末装置に記憶されている電話帳データの一例を示す図である。
【符号の説明】
１０…コンテンツサーバ、２０…インターネット、３０…ゲートウェイ装置、４０…移動パケット通信網、５０…基地局、６０…端末装置、２１０…ＣＰＵ、２２０…操作部、２３０…表示部、２４０…無線通信部、２５０…記憶部、２５１…ＲＡＭ、２５２…ＲＯＭ、２５３…不揮発性メモリ、２５３ａ…重要度テーブル、２５３ｂ…対応情報テーブル、２５３ｃ…ＪＡＲストレージ、２６０…バス
【図１】
2004227177.tif 000003
【図２】
2004227177.tif 000004
【図３】
2004227177.tif 000005
【図４】
2004227177.tif 000006
【図５】
2004227177.tif 000007
【図６】
2004227177.tif 000008
【図７】
2004227177.tif 000009
【図８】
2004227177.tif 000010
【図９】
2004227177.tif 000011
【図１０】
2004227177.tif 000012
【図１１】
2004227177.tif 000013
【図１２】
2004227177.tif 000014