以下、添付図面を参照して、本発明を実施するための形態を詳細に説明する。なお、図面の説明においては同一要素には同一符号を付し、重複する説明を省略する。
(第1実施形態)
<データ処理装置1の構成>
図1は、本発明の第1実施形態に係るデータ処理装置1の構成を説明するブロック図である。図1に示すように、データ処理装置1は、第1仮想マシン41と、第2仮想マシン42と、第1記憶部101と、第2記憶部102と、出力部105を含んで構成される。データ処理装置1は、例えば、携帯電話、PDA(Personal Digital Assistant)、パーソナルコンピュータ(Personal Computer:PC)等の通信機能を有する装置として実現される。データ処理装置1に含まれる第1仮想マシン41と第2仮想マシン42とは、互いに異なるオペレーションシステムにより動作する仮想マシンである。ここでいう「異なるオペレーションシステム」とは同じ種類のオペレーションシステムが第1仮想マシン41と第2仮想マシン42のそれぞれにおいて個別に動作する態様も含まれる。なお、第1記憶部101及び第2記憶部102は、それぞれ第1仮想マシン41及び第2仮想マシン42に含まれるが、本実施形態では、第1記憶部101及び第2記憶部102を第1仮想マシン41及び第2仮想マシン42とは区別して記載する。
データ処理装置1の構成の詳細を説明する前に、まず、データ処理装置1に含まれる第1仮想マシン41及び第2仮想マシン42について説明する。本実施形態において、仮想化とは、1台分のハードウェア構成からなる装置(コンピュータ)を仮想化ソフトウェア(Virtual Machine Monitor:VMM)を実行することにより仮想的に複数の装置のように動作させることである。データ処理装置1に含まれる第1仮想マシン41及び第2仮想マシン42は、仮想化ソフトウェアにより作り出された仮想的な装置のことをいい、これらの仮想マシンでは、それぞれオペレーションシステム(Operating System:OS)及びアプリケーションプログラム(プログラム)が実行される。アプリケーションプログラムとは、例えば、データ処理装置1が携帯電話である場合、他の携帯電話からの着信があった場合に、発信者に応じて異なる着信メロディを鳴らすためのプログラム等である。
以下、図2及び図3を用いながら上記の仮想マシンについて具体的に説明する。図2は、データ処理装置1のハードウェア構成を説明する図である。また、図3は、データ処理装置1のソフトウェア構成を説明する図である。
図2に示すように、データ処理装置1は、CPU(Central Processing Unit)20、メモリ21、記憶装置30、キーパッド31、ディスプレイ32、スピーカー33、及び通信部34を含んで構成される。
CPU20は、メモリ21上のプログラムを実行する機能を備える。本実施形態におけるデータ処理装置1では、1つのCPU20上で動作する複数の仮想的な装置(仮想マシン)を作り出すプログラムであるVMMを動作させることにより、第1仮想マシン41及び第2仮想マシン42が作り出される。
メモリ21は、記憶装置30からロード(読み込み)されたプログラムやデータを格納する機能を備える。データ処理装置1では、上述のVMM、OS、アプリケーションプログラム等が記憶装置30からロードされ、CPU20により実行される。
記憶装置30は、メモリ21にロードされCPU20により実行されるプログラムやデータを保存する機能を有する。データ処理装置1が例えばPCである場合にはハードディスクドライブが記憶装置30として用いられる。また、データ処理装置1が例えば携帯電話である場合にはフラッシュメモリが記憶装置30として用いられる。
キーパッド31は、CPU20において実行されるプログラムに対して入力を行うための入力デバイスである。
ディスプレイ32は、CPU20において実行されたプログラムの処理結果を表示するデバイスである。また、スピーカー33は、CPU20において実行されたプログラムの処理結果を音により出力するデバイスである。CPU20において実行されたプログラムが例えば音声データや音楽データを用いる場合、プログラムの処理結果として音声や音楽がスピーカー33から出力される。また、CPU20において実行されたプログラムが例えば画像と音声を含むデータを用いる場合、プログラムの処理結果として画像がディスプレイ32に表示されると共に、音声がスピーカー33から出力される。
通信部34は、CPU20で実行されたプログラムが他の装置と通信するための入出力デバイスである。データ処理装置1がPCである場合にはイーサネットアダプタが通信部34として用いられ、携帯電話である場合には携帯電話網の通信プロセッサが通信部34として用いられる。
続いて、図3を参照して、上記のハードウェア構成を備えるデータ処理装置1のメモリ21の内部に格納される仮想化マシンを実現するための情報について説明する。
仮想化ソフトウェア(VMM)40は、1つのCPU20上で複数の仮想的な装置(仮想マシン)を作り出すプログラムであり、仮想化ソフトウェア40が実効されることにより、本実施形態に係るデータ処理装置1において、メモリ21の内部に第1仮想マシン41を実現するための情報及び第2仮想マシン42を実現するための情報が新たに格納される。仮想化ソフトウェア40の代表例としては、VMWare、Xen、Virtualbox(いずれも商品名)が挙げられる。この第1仮想マシン41及び第2仮想マシン42の内部では、OSやアプリケーションプログラムがそれぞれ独立して実行される。ただし、プログラムの処理結果を出力するディスプレイ32やスピーカー33は、図2に示すようにデータ処理装置1において1つしか備えられておらず、これを第1仮想マシン41や第2仮想マシン42から利用する場合、タイミングによっては各仮想マシンからのアクセスが衝突する可能性がある。また、第1仮想マシン41及び第2仮想マシン42において実行されるプログラムに対してデータの入力等を行うキーパッド31や、通信部34等のデバイスについても、同様である。したがって、データ処理装置1のように内部に仮想マシンを作り出す装置においては、上述のデバイスを複数のOSが共有して使えるような仕組みが構築される。
デバイスを複数のOSが共有して使えるような仕組みとしては、例えば、デバイスの動作を仮想マシンが個別に制御できるように、図3に示すように第1仮想マシン(を制御するための情報)41の内部において、スピーカー33を制御するための情報(例えば、デバイスドライバ)41Aと、ディスプレイ32を制御するための情報41Bを格納する。そして、第2仮想マシン(を制御するための情報)42の内部において、スピーカー33を制御するための情報42Aと、ディスプレイ32を制御するための情報42Bを格納する。そして、どの仮想マシンがどのデバイスに対してアクセスしているのかの対応付けを、仮想化ソフトウェア40において管理する。このようにすることで、例えば第1仮想マシン41において処理を行った結果は、スピーカー33を制御するための情報41Aと、ディスプレイ32を制御するための情報41Bを用いることで、スピーカー33及びディスプレイ32に対して出力される。なお、上記の仕組みのほか、デバイスの動作をデータ処理装置1に含まれる特定の仮想マシンが集中管理する態様とすることができる。
なお、本実施形態では、第1仮想マシン41及び第2仮想マシン42がそれぞれ異なる目的で動作する場合について説明する。具体的には、第1仮想マシン41は、アプリケーションプログラムの実行を主たる目的として機能する。第1仮想マシン41におけるアプリケーションプログラムの実行に際しては、後述の第2仮想マシン42のように実行内容等の制限はされない。このアプリケーションプログラムは、データ処理装置1にあらかじめ格納されているもののほか、データ処理装置1の利用者により追加される場合がある。データ処理装置1に対してアプリケーションプログラムが追加される場合は、第1仮想マシン41に格納され、このアプリケーションプログラムは第1仮想マシン41において実行される。したがって、第1仮想マシン41では、例えばウイルスやスパイウェア等の悪意のあるアプリケーションプログラムが追加されて実行される可能性があり、その結果、情報漏洩や誤動作等が発生するリスクがある。
一方、第2仮想マシン42は、ウイルスやスパイウェア等による脅威に晒してはならない重要なデータの保持や、この情報を用いてアプリケーションプログラムを実行することを主たる目的として機能する。第2仮想マシン42に保持されるデータとは、例えば、個人情報に係るデータなどのほか、ネットワークを介して購入した再配布等が禁止されているコンテンツデータ等が挙げられる。これらの情報は、第2仮想マシンの内部(本実施形態では、第2記憶部102)に格納されると共に、第2仮想マシン42においてのみ当該データを用いた処理が行われる。また、第2仮想マシン42において用いられるアプリケーションプログラムは、第2仮想マシン42において保持されるデータを用いた処理のみに対して用いられるものであり、あらかじめデータ処理装置1に格納されているものである。このような態様とすることで、第2仮想マシン42に格納されるデータが外部に流出することや、悪意のあるアプリケーションプログラムによって消去や改ざん等がなされることを防止することができる。
なお、本実施形態では、データ処理装置1が上記の構成を備える携帯電話である場合について説明する。具体的には、インターネット等を介してダウンロードした音楽データを第2仮想マシン42に含まれる第2記憶部102に格納し、第1仮想マシン41に格納される電話アプリケーションプログラムによって、第2仮想マシン42に格納された音楽データを着信音として用いる場合について説明する。
データ処理装置1において、例えばインターネット等を介して音楽データを購入した場合、悪意のあるアプリケーションプログラムにより例えば購入した音楽データ(購入音楽データ)のコピーが作成されることや、削除されること等はビジネス上の問題となるため、購入音楽データは、第2記憶部102に格納される。一方、本実施形態のデータ処理装置1では、例えばデータ処理装置1が携帯電話であって、データ処理装置1に対して着信があった場合に着信音を鳴らして所有者に通知を行う機能は、第1仮想マシン41に格納されるアプリケーションプログラム(電話アプリ)によって行われる。このとき、第1仮想マシン41に格納されるアプリケーションプログラムが第2記憶部102に格納されるデータを使用することができないため、電話アプリは第2記憶部102に格納される購入音楽データを用いることができないという問題がある。本実施形態の以下の説明では、上記のように、第2記憶部102に購入音楽データが格納され、第1仮想マシン41に格納される電話アプリが当該購入音楽データを着信音として利用する場合を例に説明する。
図1に戻り、第1仮想マシン41及び第2仮想マシン42を備えるデータ処理装置1の具体的な構成について説明する。上述のように、データ処理装置1は、第1仮想マシン41と、第2仮想マシン42と、第1記憶部101と、第2記憶部102と、出力部105と、を含んで構成される。第1記憶部101は、第1仮想マシン41において用いられるデータを格納するための第1仮想マシン41専用の記憶領域であり、第2記憶部102は、第2仮想マシン42において用いられるデータを格納するための第2仮想マシン42専用の記憶領域である。
ここで、第1記憶部101及び第2記憶部102において格納されるデータについて説明する。本実施形態のデータ処理装置1では、第1仮想マシン41に対するデータを用いた処理命令を受信し、この処理命令に基づいて第2仮想マシン(本実施形態では第2記憶部102)に格納されるデータを用いてプログラムが実行される。このため、第2記憶部102には、本実施形態において用いられる実データD01が格納される。一方、第1記憶部101には、この実データD01に対応付けられた仮想データD11が格納される。仮想データD11と実データD01との対応付けは、例えば、第2記憶部102に格納される実データD01のファイル名と同じファイル名を有する仮想データD11を作成すること等により行われる。また、仮想データD11に対して行うことができる処理の内容として、実データD01を用いて行うことができる処理の内容が対応付けられている。なお、実データD01を用いて行うことができる処理の内容とは、実データD01の拡張子により特定されるファイルの種類等に基づくものであり、例えば、実データD01の拡張子が「.mp3」である場合には、「再生処理」が実データD01を用いて実行することが許容される処理として挙げられる。したがって、実データD01に対応付けられた仮想データD11を用いて実行が許容される処理内容を特定する情報として、「再生処理」を特定する情報が仮想データD11に対応付けられる。なお、仮想データD11を用いて実行すること処理内容を特定する情報として、第1仮想マシン41において使用され、実データD01の利用を要求することが想定されるアプリケーションプログラムを仮想データD11と対応付けてもよい。本実施形態のデータ処理装置1では、購入音楽データである実データD01の出力要求を第1仮想マシン41において動作する電話アプリが行うことを想定し、電話アプリが仮想データD11と対応付けられている。
仮想データD11と実データD01との対応関係については、例えば表等にまとめられて第2記憶部102に格納される。すなわち、仮想データD11が電話アプリにより使用されるデータであるということを示す情報は、仮想データD11に対応付けられて保持されるが、仮想データD11と対応付けられた実データD01を特定する情報は第1記憶部101においては格納されない。これにより、第1仮想マシン41において悪意のあるアプリケーションプログラムが動作した場合であっても、第2仮想マシン42に格納される実データを特定する情報がアプリケーションプログラムにより取得されることを避けることができる。
そして、第1仮想マシン41において受信された仮想データD11を用いた処理の命令に基づいて、第1仮想マシン41から第2仮想マシン42に対して、この仮想データD11に対応付けられた実データD01を用いた処理が要求され、第2仮想マシン42において実データD01を用いた処理が実行される。なお、上述のように第1仮想マシン41では仮想データD11に対応付けられた実データD01を特定する情報は保持されていない。したがって、第1仮想マシン41から第2仮想マシン42に対して行われる処理要求は、実データD01を特定した情報を含む処理要求ではない。すなわち、仮想データD11を特定した情報を用いることにより、当該仮想データD11に対応する実データの処理の要求が第1仮想マシン41から第2仮想マシン42に対して行われる。
第2記憶部102に格納される実データD01と、第1記憶部101に格納される仮想データD11と、の対応付けの例を図4〜図6を用いて説明する。図4に示す例では、データ処理装置1において実データと仮想データにつけるファイル名についてあらかじめルールを決めておき、この情報を記憶しておく。具体的には、第2記憶部102に格納される実データについてはそのファイル名を「real***」とし、第1記憶部101に格納される仮想データについてはそのファイル名を「virtual***」とするというルールをあらかじめ決め、第2記憶部102に格納する。そして、新たに仮想データを作成する際には、このルールに基づいてファイル名をつける。図4では、第2記憶部102に格納される実データD01のファイル名は「real.mp3」であり、その中身は購入音楽データであり、実データD01に対応付けて第1記憶部101に格納される仮想データD11のファイル名は「virtual.mp3」である。このため、実データD01と仮想データD11とが対応付けられて作成されたものであることということを、第2記憶部102に格納された上記の対応付けを参照することにより第2仮想マシン42において判断することができる。なお、仮想データD11は、例えば、ファイル名のみのデータのように、このデータを用いてプログラムを実行しても何も処理結果が発生しないデータである。なお、第1記憶部101に格納される他のデータD21及びD22は、購入音楽データとは異なるデータ(例えば自作のデータ等)であるため、第1記憶部101に格納され、第1仮想マシン41に格納されるアプリケーションプログラム(電話アプリ)はこれらのデータD21及びD22を用いてプログラムを実行することができる。
図5は、実データと、仮想データとを対応付ける他の例について説明する図である。図5に示す例では、第2記憶部102に格納される実データD02と、第1記憶部101に格納される仮想データD12と、のファイル名は共通の「music.mp3」とされており、さらに仮想データD12のヘッダには、このデータが仮想データであることを示すフラグが記載される。このフラグとして用いられるのは、例えば通常のデータには用いられない特殊な値や文字列等である。このように、ファイル名を共通とし、仮想データのヘッダにそのデータが仮想データであるフラグを付与することで、第2記憶部102に格納される実データと第1記憶部101に格納される仮想データとを対応付ける方法もある。
図6は、実データと、仮想データとを対応付ける他の例について説明する図である。図6に示す例では、第2記憶部102に格納される実データD03と、第1記憶部101に格納される仮想データD13と、は共通のファイル名「enka.mp3」とされている。また、実データD04と仮想データD14と、は共通のファイル名「jazz.mp3」を付与して第2記憶部102と第1記憶部101とにそれぞれ格納される。さらに、図6に示す例では、第1記憶部101に格納される仮想データを表にまとめた仮想データリストD25が格納される。この場合には、仮想データリストD25を参照することにより、第1記憶部101に格納されるデータが仮想データであることを確認することができる。このように、種々の方法により、第2記憶部102に格納される実データと第1記憶部101に格納される仮想データとを対応付けることができる。
また、実データと、仮想データとを対応付ける他の方法として、図6において記憶部101に格納される仮想データリストD25に含まれる各仮想データに対して、第2記憶部102に格納される実データを更に対応付けたリストを第2記憶部102に格納する態様とすることもできる。この場合、第1記憶部101に格納される仮想データのファイル名と、第2記憶部102に格納される実データのファイル名とを第1仮想マシンにおいて特に対応付ける必要はなく、第1記憶部101に格納される仮想データが第2記憶部102に格納されるどの実データに対応するかは、第2仮想マシンにおいて第2記憶部102に格納されるリストを参照することにより確認することができる。
図1に戻り、データ処理装置1に含まれる第1仮想マシン41の構成について説明する。第1仮想マシン41は、受信部201と、判定部202と、処理要求部203と、更新部205と、を含んで構成される。
受信部201は、処理内容を特定する情報が含まれ、仮想データを用いた処理命令を受信する受信手段として機能する。受信部201により受信される処理命令とは、例えば第1仮想マシン41において実行することが可能なアプリケーションプログラムが実行されることにより発せられる命令である。より具体的には、例えば、データ処理装置1に対して着信があった場合に、電話アプリが実行されることにより、発信元の情報に基づいて特定の音楽データを着信音として再生するために、特定の音楽データを指定して、当該音楽データを再生しスピーカー33から出力するために第1仮想マシン41において行う命令を処理命令といい、具体的には、当該音楽データの利用を要求する命令(利用命令)と、利用命令により特定された音楽データのスピーカー33への出力を要求する命令(出力命令)とが含まれる。ここで、電話アプリからなされる処理命令は、対象が実データ(例えば、図4のデータD21)であるか仮想データであるかに関係なく、特定のデータを指定し、そのデータの利用を要求するものである。本実施形態の場合、仮想データD11に対するアクセス及び仮想データD11の利用要求が電話アプリから送信され、受信部201において受信される。そして、受信部201では、この処理命令が仮想データD11に対する処理命令であるか確認され、仮想データD11に対する処理命令である場合には、判定部202へ送られる。なお、上記の利用命令と出力命令とは、電話アプリから利用命令、出力命令の順序で異なるタイミングで送信され、受信部201において個別に受信される。
判定部202は、受信部201により受信された処理命令(利用命令)に含まれる処理内容を特定する情報に基づいて、仮想データD11に対して処理を実行することが許容されるか否かを判定する判定手段として機能する。具体的には、仮想データD11に電話アプリが対応付けられているかどうかに基づいて、処理を実行することが許容されるか判定される。本実施形態では、仮想データD11にあらかじめ電話アプリが対応付けられていることから仮想データD11を用いて電話アプリによる処理を実行することができると判定される。この場合には、例えば、判定部202において、電話アプリが仮想データD11を利用中である旨のフラグが保持される。
ここで、判定部202により、処理命令に含まれる処理内容を特定する情報(本実施形態では、電話アプリ)が仮想データD11に対応付けられないと判定された場合は、処理命令に基づいて処理を行うことなく、以降の処理を中止する。また、判定部202において、以降の処理を中止した旨が判定部202からアクセス要求を行った電話アプリに対して通知される。上記の受信部201及び判定部202は、例えば着信音判定モジュールとして実現される。
処理要求部203は、判定部202における判定結果に基づいて、仮想データD11に対応付けられた実データD01の処理を第2仮想マシン42に対して要求する処理要求手段として機能する。本実施形態では、電話アプリからの処理命令を受信した後に、電話アプリから送信される仮想データD11のスピーカー33への出力を要求する出力命令に基づいて、仮想データD11を特定する情報を用いて、当該仮想データD11に対応付けられた実データを出力するよう第2仮想マシン42に対して要求する。この際、処理要求部203では、電話アプリからの処理命令(利用命令)が、実データD01を用いた処理が許容される処理内容であると判定部202において判断されたかどうかを確認するために、上述のように判定部202において保持されたフラグの有無が確認される。そして、処理要求部203により、フラグを確認できた場合には、上述の処理が行われる。ただし、処理要求部203を含む第1仮想マシン41においては、仮想データD11に対応する実データを把握していないため、対応する実データの特定は後述の第2仮想マシン42において行われる。処理要求部203は、自身も出力部105に対して出力指示を行うオーディオドライバとして実現される。
更新部205は、後述の第2仮想マシン42に含まれる通知部212から通知される変更情報に基づいて、第1記憶部101に格納される仮想データを更新する更新手段として機能する。更新部205による更新内容は、例えば、新たな仮想データの作成及び削除のほか、例えば仮想データに対応付けられる実データに対して許容される処理の情報の変更等も含まれる。更新部205が更新を行う場合は、上述の例のようにあらかじめ定められた実データと仮想データとの対応付けのルールに基づいて、新たなファイル名を持つ仮想データの作成や、仮想データの削除等が行われる。
次に、データ処理装置1に含まれる第2仮想マシン42の構成について説明する。第2仮想マシン42は、実行処理部211と、通知部212と、を含んで構成される。
実行処理部211は、実データD01を用いて実行されるプログラムを格納し、第1仮想マシン41からの要求に基づいて、仮想データD11に対応する実データD01を用いて上記プログラムを実行する実行処理手段として機能する。実行処理部211は、実データD01を用いて実行することが許容される処理に対応するプログラム(本実施形態では、音楽データを再生しその結果をスピーカー33に出力するプログラム)をあらかじめ格納し、第1仮想マシン41の処理要求部203から送信される仮想データD11を特定する情報に対応付けられた実データに対する処理要求に基づいて、まず仮想データD11に対応付けられた実データD01を特定し、続いてこの実データD01をスピーカー33に出力するプログラムを実行する。具体的には、実データD01を読み込み、必要に応じてデコードし、さらにデバイス(再生装置等)に対して出力する。上記の処理を行った結果をデータ処理装置1において出力する場合には、この結果を後述の出力部105に送信する。また、処理を行った結果を他の装置等で出力する場合には、処理結果を他の装置に対して送信する。なお、上記の処理を行う際には、実データD01のデータの種類(例えば、画像データ、音楽データ、等)を実行処理部211において判断する必要がある。この判断方法としては、具体的には、例えば、実データD01のファイル名に付加される拡張子を参照する方法のほか、実データD01のデータ種類を特定する情報が記載されるヘッダを実行処理部211が直接参照する方法を用いることができる。この実行処理部211は、例えば着信音再生モジュールとして実現される。
通知部212は、第2記憶部102に格納される実データに変更があった場合に、第2記憶部102の実データの更新に係る情報が含まれる更新情報を第1仮想マシン41に通知する通知手段として機能する。通知部212は、第2記憶部102に格納される実データに変更があった場合には、変更があった実データに対応する仮想データを特定する情報(例えばファイル名等)とその変更内容とを第1仮想マシン41に対して通知する。第2記憶部102の実データの変更に係る情報は、例えば、第2仮想マシン42の各部が実データに対して操作を行った場合には通知部212に通知をする等のルールをあらかじめ定めておくことによって、通知部212において情報を入手することができる。なお、第2記憶部102には、他の仮想マシンからの要求に応じて出力されることが制限される情報も格納される。このような情報に対しては仮想データを作成する必要がないため、変更情報を第1仮想マシン41に対して通知する必要もない。第1仮想マシン41に対して通知が必要であるかどうかは、例えば、第2記憶部102に新たにデータが格納される際に第1仮想マシン41での利用が想定されるかどうかを明らかにするフラグをつけておき、このフラグの有無を通知部212が確認することにより判断される。
さらに、データ処理装置1は、出力部105を含んで構成される。出力部105は、第2仮想マシン42において実データD01を用いてプログラムを実行した結果を出力する出力手段として機能する。出力部105にはディスプレイ32やスピーカー33が含まれる。上述の実行処理部211において第1仮想マシン41からの要求に基づいて実データD01(購入音楽データ)を再生した場合には、この結果が、出力部105(スピーカー33)から出力される。この結果、出力結果をデータ処理装置1の所有者が確認することができる。
以上のように、データ処理装置1に含まれる各部がそれぞれ上記のように機能することにより、本実施形態に係るデータ処理が行われる。
<データ処理装置1によるデータ処理方法>
次に、データ処理装置1によるデータ処理方法について図7〜図10を用いて説明する。図7〜図10は、データ処理装置1によって行われるデータ処理を説明するフローチャートである。
(1)仮想データの利用処理
図7は、第1仮想マシン41が処理命令を受信した際に行われる仮想データの利用処理に係るフローチャートである。まず、この仮想データD11の利用処理は、第1仮想マシン41の受信部201において仮想データD11を対象とした処理命令が受信されたときに開始される(S100、受信ステップ)。受信部201により受信された処理命令は、受信部201において、まず処理命令が対象としているデータが仮想データD11であるかが判断される(S101)。ここで処理命令の対象が仮想データD11とは異なり第1記憶部101に中身を含んで格納されるデータ(例えば図4のデータD21又はD22)である場合には、以降の仮想データの利用に係る処理が終了され、このデータを用いたプログラムの実行がデータ処理装置1の第1仮想マシン41において行われる。一方、仮想データD11を指定した処理命令である場合には、次に、受信部201により要求元プログラムの特定が行われる(S102)。本実施形態において受信部201により受信される処理命令は、電話アプリによる仮想データD11を利用することを処理内容とする命令であり、要求元プログラムが電話アプリであることが受信部201において確認される。この要求元プログラムを特定する情報は仮想データD11を特定する情報と共に判定部202へ送られる。
判定部202では、受信部201から送られる情報に基づいて第1記憶部101に格納される仮想データD11を参照することで、要求元プログラムが行う処理内容が仮想データD11に関連付けられているかによって、実データD01を用いて実行することが許容される処理であるかが判定される(S103、判定ステップ)。本実施形態における仮想データD11に対する電話アプリからの処理命令は、あらかじめ電話アプリが仮想データD11に対して対応付けられて第1記憶部101に格納されているため、実データD01を用いて実行することが許容される処理であると判定される。そして、判定部202により、この判定結果に基づいて、当該プログラム(電話アプリ)が仮想データD11を利用中である旨のフラグが保持され(S104)、仮想データD11に対する処理が開始された後、仮想データD11の出力に係る出力命令が行われるまでのタイムラグを考慮して、このフラグを保持した状態で本処理が終了する。なお、処理内容が仮想データD11に対応付けられていないと判定された(S103)場合には、処理中にエラーが発生した旨が処理命令を行ったプログラム(本実施形態では電話アプリ)に対して通知され(S105)、以降の処理は中止される。また、この場合には、当該プログラムからの仮想データD11に対するアクセス要求を次回以降受け付けない処理を更に付け加えることもできる。
(2)第2仮想マシンに対する処理要求処理
図8は、第2仮想マシン42に対して処理を要求する際のフローチャートである。この処理は、図7に示す仮想データの利用処理(S100〜S104)が行われた後であり、仮想データD11を出力する旨の出力命令を受信した際に開始される(S200)。
処理要求部203は、仮想データD11を出力する出力命令を受けて、判定部202から送信された情報のうち、処理命令(出力命令)を送信したプログラム(本実施形態では電話アプリ)を特定し(S201)、このプログラムを参照し、当該プログラムが仮想データD11を利用中であるという状態を示すフラグが保持されているかを確認する(S202)。具体的には、判定部202において保持された(S104)フラグを確認することにより、電話アプリから送信された出力命令が、仮想データD11に対するものであることを確認する。この確認は、第2仮想マシン42に対して以降の処理に係る要求を送信してよいかを確認するために行われる。より具体的には、電話アプリが第1記憶部101に格納される実データ(通常データ)を利用しようとしている場合であっても、電話アプリからは当該実データを指定した利用命令及び出力命令が送信されるため、電話アプリが送信した出力命令が仮想データD11を対象としたものであることをこの段階で確認するものである。したがって、仮想データD11を利用中であるという状態のフラグが保持されていない場合には、電話アプリは第1記憶部101に格納される他のデータ(実データ)に対して処理命令を行っていると判断され、以降の処理は終了される。本実施形態の電話アプリが仮想データD11に対する利用命令を送信し、仮想データD11を利用中であるという状態で保持されている場合には、仮想データD11を特定する情報を用いて、処理要求部203から第2仮想マシン42に対して処理の要求が行われる(S203、処理要求ステップ)。以上により、第2仮想マシン42に対して処理要求を行う処理が終了する。
(3)第2仮想マシンにおける実行処理
図9は、第1仮想マシン41からの処理の要求に基づいて第2仮想マシン42において実行処理を行う際のフローチャートである。この処理は、図8に示すように、第1仮想マシン41の処理要求部203から第2仮想マシン42に対して仮想データD11に対応付けられた実データ用いた処理の要求(S203)が行われ、第2仮想マシン42の実行処理部211により受信された後に開始される(S300)。そして、図9に示される一連の処理は、例えば一つのプログラムによって記述されており、このプログラムを実行処理部211において実行することにより行われる。
実行処理部211は、仮想データD11に対応する実データを用いた処理の要求を受信すると、当該要求に含まれる仮想データD11を特定する情報に基づいて、当該仮想データD11に対応付けられた実データD01が第2記憶部102に格納されているかを確認する(S301)。このとき、仮想データD11と実データD01との対応付けに係る情報は、上述のように第2記憶部102に格納されているためこの情報に基づいて実データD01の特定が行われる。ここで、例えば第1仮想マシン41からの処理の要求が不正なものである等の理由によって、処理の要求で指定された実データが第2記憶部102に格納されていない場合は、処理を中止する。一方、実データD01が第2記憶部102に格納されていることが確認できた場合には、実行処理部211は、当該実データD01のファイル形式を確認する等によって、出力先のデバイスを確認した後、当該第2記憶部102から実データD01を読み込み(S302、実行処理ステップ)、さらにこの実データD01をデコードする(S303、実行処理ステップ)。ここで行われるデコードとは、実データD01があらかじめエンコードされている場合に行われる処理であり、例えば、実データの拡張子が「.mp3」である場合には、出力部105に含まれるスピーカー33に対して出力するための処理である。したがって、実データD01が直接出力することができる形式のデータである場合には、デコードを行う必要はなく、次の処理に進む。そして、第1仮想マシン41からの要求に従ってデコード済みの実データD01を出力部105に含まれるデバイスであるスピーカー33に対して出力する(S304、実行処理ステップ)。これにより、第2仮想マシン42に格納される実データD01がスピーカー33から着信音として出力される。以上の処理によって、第1仮想マシン41の受信部201において受信された処理命令に対する処理の結果が出力部105から出力される。なお、この実データD01の読み込み(S302)、デコード(S303)及びデバイスへの出力(S303)は、実データD01を出力し終えるまで、一定の周期で繰返し実行される。以上により、一連の処理が終了される。
(4)仮想データの更新処理
図10は、第2記憶部102に格納される実データD01が変更された場合に、実データD01に対応付けられて第1記憶部101に格納される仮想データD11の更新を行う処理を説明するフローチャートである。より具体的には図10(A)は第1仮想マシン41で行われる処理であり、図10(B)は第2仮想マシン42で行われる処理である。これらの処理は、第2記憶部102に格納されるデータに対して、追加・削除・書き換え等の何らかの変更が行われると、その情報を通知部212が検出して、第2仮想マシン42において開始される(S400)。
まず、第2仮想マシン42の通知部212は、第2記憶部102に格納されるデータに対して変更があった場合に、当該変更が仮想データの更新が必要な変更であるか判断する(S401)。これは、例えば、第1仮想マシン41での利用が想定されるかどうかを示すフラグが、今回変更があったデータに対して付与されているかどうかにより判断される。ここで第1仮想マシン41での利用が想定されていないことが確認された場合、通知部212がその変更を第1仮想マシン41に対して通知する必要はないので、以降の処理は中止される。一方、第1仮想マシン41での利用が想定されていることが確認された場合、仮想データD11の更新が必要であると判断され、変更内容を更新情報として第1仮想マシン41に対して通知する(S402、通知ステップ)。以上により、第2仮想マシン42における変更を通知する処理が終了する。
一方、第1仮想マシン41における処理は、第2仮想マシン42から送信される更新情報を更新部205が受信した際に開始される(S500)。受信部201が更新情報を受信すると、更新情報に含まれる情報にしたがって、第1記憶部101に格納される仮想データを更新する(S501、更新ステップ)。例えば、第2記憶部102において新たな実データD01が格納された場合には、当該実データD01に対応付けた仮想データD11を作成し、この仮想データD11に対しての実行が許容される処理内容の情報(すなわち実データD01に対しての実行が許容される処理内容の情報)を対応付けて、第1記憶部101に格納する。また、実データD01が削除された場合にはこの実データD01に対応付けられた仮想データD11を削除する。さらに、実データD01に対しての実行が許容される処理内容の情報が変更された場合には、この情報に基づいて仮想データD11に対応付けられた情報の更新を行う。以上の処理によって、仮想データD11が更新され、第1記憶部101に格納される仮想データD11が実データD01に対応付けられた情報となり、仮想データD11の更新に係る処理が終了される。
<本実施形態に係る効果>
以上のように、本実施形態に係るデータ処理装置1及びこのデータ処理装置1によるデータ処理方法によれば、第1仮想マシン41の受信部201において受信され、第1記憶部101に格納される仮想データD11を用いた処理命令(本実施形態では利用命令及び出力命令)が、あらかじめ仮想データD11に対応付けて格納され、実行することが許容される処理内容であるかが判定部202において判定される。そして、実行することが許容されると判定された場合には、第2仮想マシン42の第2記憶部102に格納され、仮想データD11と対応付けられる実データD01の処理が処理要求部203によって第2仮想マシン42に対して要求される。そして、実データD01を用いたプログラムの実行が第2仮想マシン42の実行処理部211において行われる。このように、第2仮想マシン42の第2記憶部102に格納される実データD01に対応付けられた仮想データD11が第1仮想マシン41の第1記憶部101に格納され、この仮想データD11に対する処理要求に応じて第2記憶部102に格納される実データD01の処理を実行することができる。このため、結果として、第1仮想マシン41は第2仮想マシン42に格納される実データD01を間接的に利用することができる。また、本実施形態に係るデータ処理装置1によれば、第1仮想マシン41の第1記憶部101に格納される仮想データD11には、あらかじめ実データD01を用いて実行することが許容される処理内容を特定する情報が対応付けられ、この情報に対応した処理命令(利用命令及び出力命令)を受信した場合に限って、第2仮想マシン42に対して処理の要求が送信されることから、例えば、第1仮想マシン41において、悪意のあるアプリケーションプログラムが第2仮想マシン42に格納される実データD01を利用しようとした場合には、これを回避することができる。したがって、悪意のあるアプリケーションプログラム等による不適切な利用を防止することができる。
また、本実施形態におけるデータ処理装置1では、第2記憶部102に格納される実データD01に係る変更情報が通知部212から第1仮想マシン41に対して通知され、更新部205により、変更情報に含まれる情報に基づいて第1記憶部101に格納される仮想データD11が更新される。このため、例えば第2記憶部102における実データD01の追加や削除に応じて、第1記憶部101における仮想データD11を適切に追加や削除することができる。また、第2記憶部102に格納される実データD01に対する実行が許容される処理内容が変更された場合(例えば、有効期限が切れることによって、データの利用範囲が変更された場合)等にも、この情報を第1仮想マシン41に対して適切に通知し、第1記憶部101に格納される仮想データD11に対応付けられる処理内容を特定する情報を更新することにより、例えば、上記の変更により許容されなくなった内容の処理を第1仮想マシン41から第2仮想マシン42に対して要求することを減らすことができるため、第1仮想マシン41と第2仮想マシン42との間に発生する不要な情報のやり取りを減らすことができ、第2記憶部102に格納される実データD01の不適切な利用をさらに抑制することができる。
(第2実施形態)
<データ処理装置2の構成及びデータ処理方法>
(1)実行処理の終了処理
図11は、本発明の第2実施形態に係るデータ処理装置2の構成を説明するブロック図である。データ処理装置2に含まれる各構成のうちデータ処理装置1と異なる点は、以下の2点である。すなわち、第1点目は、第1仮想マシン41に処理終了要求部204を備え、処理終了要求部204による要求に基づいて、実行処理部211が処理を行う点である。また、第2点目は、第2仮想マシン42の実行処理部211が、実データD01をあらかじめ実行可能な状態にしておく点である。
上記のデータ処理装置2における新たな構成及び新たなデータ処理方法のうち、まず第1点目について、図11及び図12を用いて説明する。
処理終了要求部204は、第2仮想マシン42に対して仮想データD11に対応する実データ(本実施形態では、実データD01)を用いた実行処理の終了を要求する処理終了要求手段として機能する。実データD01に対する実行処理は、例えば従来の音楽データの再生等の場合には、実データD01の終端まで一通り処理が行われると、この処理は終了されるか、または、エンドレス再生のように再生処理が繰り返される。しかしながら、本実施形態のように、実データD01に対する処理が着信音としての再生処理である場合、実データD01の終端まで一通り処理が行われる前にデータ処理装置2の所有者が応答した場合には、当該処理(すなわち着信音の再生)が中止される必要がある。したがって、処理を終了させるようなイベント(例えば所有者による応答)が発生し、処理終了要求部204がその情報を検出した場合には、当該情報に基づいて、第2仮想マシン42に対して実データD01を用いた実行処理の終了を要求する。なお、この処理終了要求部204による実行処理の終了要求のタイミングは、上述のように何らかのイベントが発生した場合に限られず、例えばタイマーの時刻が満了した時刻であってもよい。
一方、実行処理部211は、処理終了要求部204からの実行処理の終了に係る要求を受信した場合には、当該要求に基づいて実データD01を用いた処理(すなわちスピーカー33からの出力に係る処理)を終了させる機能を新たに備える。実行処理部211が処理終了要求部204からの要求に基づいて処理を終了させることにより、実データD01の出力部105(スピーカー33)からの出力が停止される。
上記の構成を備えるデータ処理装置2によるデータ処理方法について、図12のフローチャートを用いて説明する。図12は、実データD01を用いた実行処理を終了させる処理を説明するフローチャートである。より具体的には、図12(A)は第1仮想マシン41において行われる処理を示し、図12(B)は第2仮想マシン42において行われる処理を示す。これらの処理は、第1仮想マシン41、例えば、実データD01を用いたプログラムの実行を終了させるイベント(例えば、データ処理装置2の所有者が応答した等)が発生した際に開始される(S800)。
処理終了要求部204は、実データD01を用いたプログラムの実行を終了させるイベントが発生すると、実データD01に係る処理を第2仮想マシン42に対して要求したかを確認する(S801)。これは、例えば、処理要求部203に対して既に第2仮想マシン42に対して仮想データD11を指定した処理を要求が送信されたかどうかを問い合わせることにより確認することができる。この結果、まだ第2仮想マシン42に対して仮想データD11に対応する実データD01を用いた処理の要求がなされていないことが確認された場合には、以降の処理を中止する。一方、仮想データD11に対応する実データD01を用いた処理の要求が既になされたことが確認された場合は、実データD01を用いた処理が第2仮想マシン42において開始されているため、第2仮想マシン42に対して処理の終了を要求する(S802、終了要求ステップ)。以上により、第1仮想マシン41における終了要求に係る処理が終了する。
一方、第2仮想マシン42における処理は、実行処理部211が第1仮想マシン41から送信される実データD01を用いた処理の終了要求を受信することを契機に開始される(S900)。実行処理部211は、終了要求を受信すると、この要求に基づいて、実データD01のデバイス(スピーカー33)への出力を停止させる(S901、実行処理ステップ)。そして、この実データD01のデコードを終了し(S902、実行処理ステップ)、読み込み中だった実データD01をクローズする(S903、実行処理ステップ)。以上の処理により、第2仮想マシン42における実データD01を用いた処理の終了に係る処理が終了する。なお、図12に示すフローチャートは、実データD01が購入音楽データであり、データ処理装置2に設けられた出力部105(スピーカー33)に対して出力する場合について説明しているものである。したがって、例えば実データD01を用いた処理の結果を他の装置から出力させる場合には、処理の結果を出力させる装置に対して、出力停止を通知するメッセージを送信すること等により、当該処理を終了させる。
(2)実データに対するデコード処理
次に、上記のデータ処理装置2における新たな構成及び新たなデータ処理方法のうち、第2点目について、図11及び図13を用いて説明する。
本実施形態では、実行処理部211は、実データD01をあらかじめ実行可能な状態としておく機能をさらに備える。ここでいう「実行可能な状態とする」とは、実データD01を出力部105から出力するために行う必要がある処理を先行して行うことをいう。具体的には、第1仮想マシン41の処理要求部203からの処理の要求を受けた時点から、実データD01の読み込みを開始するのではなく、あらかじめ実データD01の読み込み及びデコードを行っておくことで、直ちに出力可能な状態としておくことで、実データD01を出力するまでに必要な実データD01の読み込み及びデコードに係る時間を短縮して実データD01の実行処理を開始することを目的としたものである。
図13は上記の処理を説明するフローチャートである。この処理は、任意のタイミングで開始することができる(S1000)が、例えば、データ処理装置2の電源を入れた際毎に行うこととしてもよいし、データ処理装置2において最初に実データD01を読み込み及びデコードした後はそれを再利用することとしてもよい。図13に示すように、まず、実行処理部211は、まず第2記憶部102に実データD01が格納されているかを確認する(S1001)。ここで、例えば第2記憶部102に実データD01が格納されていない場合にはこの処理が終了されるが、第2記憶部102に実データD01が格納されていることが確認されると、実行処理部211は、この実データD01を読み込み(S1002)、さらにデコード(S1003)を行うことにより、実データD01を出力可能な状態とされる。以上により、あらかじめ実データD01を出力可能な状態としておく処理(デコード処理)が終了される。なお、この事前のデコード処理は、実データD01全体が完全にデコードされる前に途中で中止してもよい。すなわち、実データD01に対してデコード処理を行っている途中にこの実データD01に対する処理の要求を受信した場合は、その時点で上述の事前のデコード処理が中止される。そして、デコード処理が完了した部分のデータについては読み込み及びデコードを行うことなく直ちにデータの出力が行われる。ただし、デコード処理が行われていない部分のデータについては、第1実施形態と同様に読み込み、デコード及び出力を周期的に繰返し行うことにより、データが出力部105に対して出力される。
<本実施形態に係る効果>
このように第2実施形態に係るデータ処理装置2によれば、まず、第1仮想マシン41において処理終了要求部204を備えることにより、第2仮想マシン42おいて実行されるプログラムが、例えば実行処理を続けるプログラムである場合には、第1仮想マシン41から第2仮想マシン42に対して実行処理を終了させる要求を送信し、この要求に基づいて実行処理部211においてプログラムの実行が中止されるため、第2記憶部102に格納される実データD01の利用を中止させることができる。
また、第2仮想マシン42においてあらかじめ実データD01を実行可能な状態にする(デコードする)ことで、第1仮想マシン41からの処理要求に基づいて処理を開始する場合と比較してより早くデータを出力部105(スピーカー33)に対して出力することができるという効果が奏される。
(第3実施形態)
<データ処理装置3の構成及びデータ処理方法>
図14は、本発明の第3実施形態に係るデータ処理装置3の構成を説明するブロック図である。データ処理装置3に含まれる各構成のうちデータ処理装置1及び2と異なる点は、以下の点である。すなわち、第2仮想マシン42においてイベント情報を受信するイベント情報受信部213を備える点である。
イベント情報受信部213は、第1仮想マシン41の受信部201において処理命令を受信する契機となるイベントに係る情報であるイベント情報を受信するイベント情報受信手段として機能する。ここでいうイベント情報とは、第1仮想マシン41に格納されるプログラムが処理命令を送信する契機となる情報である。例えば本実施形態の場合では、仮想データD11を着信音として再生させるための処理命令が受信部201において受信されるが、この命令は、仮想データD11を着信音としてあらかじめ設定している人からの着信情報をデータ処理装置1の着信制御部(図示せず)が受信し、この情報が第1仮想マシン41に対して送られた場合に、第1仮想マシン41の電話アプリによって行われる。したがって、第2仮想マシン42のイベント情報受信部213は、イベント情報として、特定の人からの着信があったことを示す情報を着信制御部から受信する。なお、例えばデータ処理装置2のキーパッドによるキー入力や、タッチパネルにおいて特定部分が押されたこと等をイベント情報とすることもできる。このようにイベント情報受信部213によりイベント情報が受信されたことは実行処理部211に対して通知される。
そして、実行処理部211は、イベント情報受信部213によりイベント情報が受信された時点から一定の時間のみ、第1仮想マシン41からの処理の要求を受け付ける機能を更に備える。第1仮想マシン41では、第2仮想マシン42のイベント情報受信部213によりイベント情報が受信された時点とほぼ同時に同様のイベント情報が受信され、第1仮想マシン41においてイベントに係る処理がなされた後、第2仮想マシン42に対して処理を要求する場合には処理要求部203から第2仮想マシン42に対して要求がなされるはずである。したがって、イベント情報を受信してから一定の時間のみ実行処理部211が第1仮想マシン41からの処理要求を受信する態様とすることで、第1仮想マシン41からの処理要求を確実に受信することができる。なお、この一定の時間とは、第1仮想マシン41においてイベント情報を受信した時点から、当該イベント情報に基づいて実データD01を用いた処理を処理要求部203が第2仮想マシン42に対して要求する時点までの所要時間を考慮して適宜定めることができる。
図15は上記の処理を説明するフローチャートである。まず、例えばイベント情報受信部213においてイベント情報が受信されることを契機として、有効時間制御処理が開始される(S1100、イベント情報受信ステップ)。そして、この情報がイベント情報受信部213から実行処理部211に通知され、実行処理部211において処理要求の受付が開始される。この処理要求に受付の有効時間は、あらかじめ例えばイベント情報の種類毎に定めること等により設定される。次に、第1仮想マシン41においてイベント情報の受信を契機として行われた処理の結果、第2仮想マシン42に対して、仮想データD11に対応する実データに係る処理の要求が送信され、実行処理部211ではこの要求を受信する(S1101、実行処理ステップ)。ここで、実行処理部211は、当該処理要求が有効時間内になされたものであるかを判断する(S1102、実行処理ステップ)。処理要求が有効時間内になされたものであるかどうかの確認は、例えば、実行処理部211において受付を開始すると同時に、有効時間に基づいて受付の終了時刻を予め設定しておく。そして、処理要求を第2仮想マシン42の実行処理部211において受信した時刻と受付の終了時刻とを比較し、受信した時刻が終了時刻よりも前である場合には、処理要求が有効時間内になされたものであると判断する方法等種々の方法が用いられる。ここで、第1仮想マシン41からの処理要求が有効時間外である場合には、正規の処理により作成された処理要求ではない可能性が考えられるため、第2仮想マシン42における処理は終了し以降の処理を行わない。一方、第1仮想マシン41からの処理要求が有効時間内である場合には、イベント情報の受信を契機とした要求であると考えられるため、この要求で指定される実データD01を用いた実行処理を開始する(S1103、実行処理ステップ)。実行処理自体は、第1実施形態と同様である。以上により、有効時間を用いた制御処理が終了する。
<本実施形態に係る効果>
このように、上記の実施形態によれば、イベント情報受信部213がイベント情報を受信した後の一定時間のみデータの実行処理部211が第1仮想マシン41からの処理要求を受け付ける態様とすることで、例えば、第1仮想マシン41で悪意のあるアプリケーションプログラムが動作することにより多数の処理要求を第2仮想マシン42に対して送信した場合に、第1仮想マシン41からの正式な要求(例えば電話着信等に基づく要求)が処理できないという問題を減らすことができる。したがって、イベント情報に基づいて第1仮想マシン41から要求される実行処理は適切に実行することができると共に、例えば第2仮想マシン42において悪意のあるアプリケーションプログラム等による不正な処理要求を受けてプログラムを実行することを回避することができる。
(第4実施形態)
<データ処理装置4の構成及びデータ処理方法>
図16は、本発明の第4実施形態に係るデータ処理装置4の構成を説明するブロック図である。データ処理装置4に含まれる各構成のうちデータ処理装置3と異なる点は、以下の点である。すなわち、第1記憶部101及び第2記憶部102とは異なる記憶部である第3記憶部103を備える点である。
第3記憶部103は、第2仮想マシン42に専有される記憶領域である。そして、第3記憶部103は、イベント情報受信部213により受信されたイベント情報と、データ処理装置3と同様にイベント情報を受信した後の一定時間内に実行処理部211により実行処理が行われた実データD01を特定する情報と、を対応付けて履歴情報D30として格納する第3記憶手段として機能する。第3記憶部103において格納される履歴情報D30としては、例えば、他の通信端末からの着信を示す情報がイベント情報であって、当該イベント情報に基づいて電話アプリから発信される処理命令に基づいた実データの出力に関する場合、イベント情報を送信する発信元の通信端末の電話番号がAである場合には、実データAを再生し、電話番号がBである場合には、実データBを再生するというように、電話番号と実データとを対応付けた表等が用いられる。
そして、イベント情報受信部213が新たにイベント情報を受信した場合、イベント情報受信部213からイベント情報の受信を通知された実行処理部211は、当該イベント情報の内容に基づいて第3記憶部103に格納される履歴情報D30を参照し、イベント情報に対応付けて格納される実データD01に係る情報を取得する。そして、この結果に基づいて、第2記憶部102に格納される実データD01をあらかじめ実行可能な状態とする。このように、本実施形態に係るデータ処理装置4は、第3記憶部103に格納される履歴情報D30に基づいてあらかじめ実行可能な状態とする実データを特定し、実データをあらかじめ実行可能な状態にするという特徴を備える。なお、ここでいう「実行可能な状態」とは、上述の通り、実データD01を出力部105から出力するために行う必要がある処理を先行して行うことをいう。
上記のような構成を備えるデータ処理装置4によるデータ処理方法のうち、これまでの実施形態で説明した処理とは異なる点を図17及び図18を用いて説明する。
図17は、第3記憶部103の履歴情報D30に履歴を記録する処理について説明するフローチャートである。この処理は、イベント情報受信部213においてイベント情報が受信され、実行処理部211に通知された際に処理が開始される(S1200、実行処理ステップ)。実行処理部211は、まずイベント情報に含まれる情報からイベント内容を特定する(S1201、実行処理ステップ)。具体的には、例えばイベントが他の携帯電話からの着信である場合には、発信者の電話番号がイベント内容として用いられる。また、例えばキー入力がイベント情報として取り扱われる場合は、キーコードがイベント内容として用いられる。続いて、第1仮想マシン41から当該イベント情報の受信に基づいた処理要求があった際に、処理要求がなされた仮想データD11に対応する実データD01を特定する(S1202)。そして、このステップで特定された実データD01と、イベント内容との対応関係が第3記憶部103に既に履歴情報D30として格納されているかを確認する(S1203)。ここで、既に履歴情報D30に上記の対応関係が格納されている場合には、重複格納を避けるため履歴記録に係る処理を終了する。しかしながら、履歴情報D30に上記の対応関係が格納されていない場合は、このイベント内容と実データD01との対応関係を新たな履歴データとして履歴情報D30に追加する(S1204)。以上により、履歴の記録に係る処理が終了する。
図18は、図17に示す処理により履歴が記載された履歴情報D30を用いたデコード処理について説明するフローチャートである。このフローチャートで示すデコード処理は、図13に示す第2実施形態に係るデータ処理装置2によるデコード処理と比較して、デコード処理の開始(S1000)が、イベント情報受信部213においてイベント情報を受信した時点とする点が異なる。また、イベント内容の特定(S1004)及びイベント内容と履歴から実データを特定する処理(S1005)が追加されている。
すなわち、図18に示すフローチャートでは、イベント情報受信部213がまずイベント情報を受信したときには、イベント情報受信部213から実行処理部211に対してこの情報が送られた後、まず、イベント情報に含まれるイベント内容を特定する(S1004、実行処理ステップ)。そして、第3記憶部103を参照し、このイベント内容に対応付けられた実データD01を特定する情報が履歴情報D30に記載されているかどうかを確認する(S1005、実行処理ステップ)。そして、履歴情報D30を参照することにより特定されたイベント情報に対応付けられた実データD01が、第2記憶部102に格納されているかを確認し(S1001)、ある場合には、実データD01を読み込み(S1002、実行処理ステップ)、さらにデコードする(S1003、実行処理ステップ)ことにより、対象となる実データD01をあらかじめ実行可能な状態(出力部105から出力することができる状態)とすることができ、デコードに係る処理は終了する。ここで、実データD01が第2記憶部102に格納されていない場合には、あらかじめデコード処理を行う対象となる実データを特定することができないため、以降の処理は中止される。なお、実行処理部211において第1仮想マシン41から実データを用いた処理の要求を受信した際に、この処理の要求において特定される実データが、上記の処理によって実行可能な状態とされた実データである場合には、当該実データを用いて出力処理を行う。また、処理の要求において特定される実データが、あらかじめ実行可能な状態とされたもの(デコード処理が行われたもの)と異なる場合は、第1仮想マシン41からの要求において指定された実データを新たに読み込まれ、当該実データの出力に係る一連の処理が行われる。
<本実施形態に係る効果>
このように、上記の実施形態によれば、第2仮想マシン42においてイベント情報を受信した際に、第1仮想マシン41からの処理要求を正式に受け付ける前に、第3記憶部103に格納される情報に基づいて、当該イベント情報に対応付けて格納される実データD01をあらかじめ実行可能な状態にすることができる。したがって、第1仮想マシン41からの要求に基づいて当該実データを用いたプログラムを実行する処理を開始するのを早めることができる。また、第2仮想マシン42に格納される実データが複数ある場合に、第1仮想マシン41から送信される処理要求を参照する前に、どの実データD01をあらかじめ実行可能な状態にするかが明確となり、不要なデータをあらかじめ実行可能な状態にする等の不要な処理を減らすことができる。
(第5実施形態)
<データ処理装置5の構成>
図19は、本発明の第5実施形態に係るデータ処理装置5の構成を説明するブロック図である。データ処理装置5に含まれる各構成のうちデータ処理装置2と異なる点は、以下の2点である。すなわち、第1点目は、出力部105がディスプレイ32という特定のデバイスである点である。また、第2点目は、このディスプレイ32は、第1仮想マシン41に新たに設けられた画面制御部206により制御されると共に、第2仮想マシン42により実行された処理の結果をディスプレイ32に対して出力する場合には、表示部214によって行われる点である。データ処理装置に含まれる出力手段は、スピーカー、ストレージ、IrDA(Infrared Data Association)、ネットワーク等の多岐に渡り、そのほとんどは主に第2仮想マシン42から直接制御することができる。しかしながら、データ処理装置の内部構成によっては、本実施形態のディスプレイ32のように第1仮想マシン41からでも一部事象については制御可能な出力手段もある。本実施形態では、データ処理装置5が第1仮想マシン41により画面のGUI(Graphical User Interface)出力に係る制御がなされているディスプレイ32を備え、このディスプレイ32に対して第2仮想マシン42により処理された結果を出力する場合について説明する。
画面制御部206は、判定部202により処理内容を特定する情報に基づいた処理を実データD01を用いて実行することが許容されると判定された場合に、ディスプレイ32のうち実データD01を用いてプログラムを実行した結果を表示するための画像表示領域を透過色に設定する機能を備える。
第1仮想マシン41が出力制御を統括管理する場合、通常は第1仮想マシン41がデータを出力することによって、ディスプレイ32の全体の画像が形成される。この場合、第2仮想マシン42からディスプレイ32に対して画像を表示させる処理を行っても、ディスプレイ32では第1仮想マシン41により形成された画像が優先して表示されるため、第2仮想マシン42から送られる画像は表示されない。したがって、第2仮想マシン42からの画像をディスプレイ32に表示させるためには、画面制御部206によって第2仮想マシン42からの画像を表示させる領域を形成する処理が行われる必要がある。本実施形態では、この処理の手法の一つとして、第2仮想マシン42からの画像を表示させる領域を画面制御部206によって透過色とすることで、第2仮想マシン42からの画像をその領域に表示させる態様としている。以下、その具体的な処理について説明する。
まず、実データD01を出力する先がディスプレイ32であるかどうかは、第1仮想マシン42において、仮想データD11に対応付けられた実データD01が画像データであるかどうかによって判断される。この判断方法としては、例えば実データD01に対応付けられた仮想データD11が画像データであることを示す拡張子を有するかどうかという方法がある。また、仮想データD11の中身を参照し、当該ファイルのファイルフォーマットを直接確認することにより判断してもよい。そして、仮想データD11に対応する実データD01が画像データであり、且つ実データD01を用いることを要求する処理内容を実行することが許容されると判断された場合には、画面制御部206により、実データD01を開いて表示するための画像表示領域が設けられ、この領域に透過色が設定される。この画像表示領域は、ディスプレイ32の全面またはその一部に設けられる。画像表示領域が透過色に設定されない場合は、第1仮想マシン41で描画された画面に第2仮想マシン42において表示された画像を出力することはできないが、透過色が設定されることにより、当該エリアに限り第2仮想マシン42の表示部214により制御を行うことができる。
一方、第2仮想マシン42の表示部214は、第2仮想マシン42において実データD01を用いて出力した結果を画像表示領域内で表示させる表示手段としての機能を備える。
ここで、画面制御部206及び表示部214によりディスプレイ32に表示させる画面の例について図20を用いて説明する。図20(A)は、第1仮想マシン41からディスプレイ32に表示される画像の例を示す。具体的には、画面の中央近傍に透過色に設定された画像表示領域A1が形成される。図20(B)は、第2仮想マシン42からディスプレイ32に表示される画像の例であり、表示部214により表示される画像データが画面中央に含まれている。さらに図20(C)は図20(A)と図20(B)に示す第1仮想マシン41及び第2仮想マシン42による表示画像を重ねあわせることにより、図20(A)の透過色に設定された画像表示領域A1において図20(B)に示す画像が透過されたことで、画面制御部206により構成された画面の画像表示領域A1内部に表示部214により表示される画像データが表示される例である。このように、画面制御部206により背景が透過色に設定された画像表示領域A1に対して、表示部214により実データD01を用いて実行処理を行った結果を表示させることで、第2仮想マシン42による処理の結果を第1仮想マシン41が統括管理するディスプレイ32に表示させることができる。
本実施形態に係る画面制御部206は、更なる機能として、画像表示領域の変更に係る情報である変更情報を表示部214に通知する機能を有する。そして、表示部214は、更なる機能として、この変更情報に基づいて変更情報に基づいて、画像表示領域に実データD01を出力させる機能を有する。以下これらの機能について具体的に説明する。
画面制御部206は、上述の画像表示領域に変更がある場合には、ディスプレイ32の透過色の領域を変更するとともに、この変更に係る情報である変更情報として表示部214に対して通知する機能を有する。画像表示領域は、例えばアプリケーションプログラム毎に、表示位置やその大きさが変わるため、常に一定ではない。より具体的には、例えばディスプレイ32の表示方式が縦表示から横表示に変更となった場合等に、画像表示領域を変更する必要が生じる。その場合には、例えばディスプレイ32の表示方式を変更する機能部から画面制御部206に対して表示方式の変更が依頼され、画面制御部206がこの依頼に基づいて処理を行う。画像表示領域を変更する必要が生じた場合には、画像表示領域は画面制御部206により変更され、この変更情報が表示部214に対して通知される。ここで、画面制御部206から表示部214に対して通知される情報は、変更後の画像表示領域の位置とサイズの情報である。一方、表示部214は、上述のように画面制御部206から通知される画像表示領域の変更に係る情報を受信し、この情報に基づいて、実行処理部211によって実データD01を用いたプログラムを実行された結果を、ディスプレイ32の画像表示領域に対して表示させる。これにより、変更後の画像表示領域に対しても、実データD01を用いたプログラムの実行結果が適切に表示される。
<データ処理装置5によるデータ処理方法>
次に、図21及び図22を用いて、本実施形態に係るデータ処理装置5によるデータ処理方法を説明する。図21(A)は、第1仮想マシン41から第2仮想マシン42に対して処理要求を行うための処理について説明するフローチャートである。また、図21(B)は、第1仮想マシン41から送信される処理の要求に応じて第2仮想マシン42において行われる処理を説明するフローチャートである。また、図22は、画像表示領域の変更がなされる場合の処理について説明するフローチャートである。
図21(A)に示すフローチャートは、図8に示す第1実施形態のデータ処理装置1による処理要求処理に係るフローチャートと比較して、処理命令(出力命令)を送信したプログラム(本実施形態では電話アプリ)が仮想データD11を利用中であるという状態を示すフラグが保持されているかを確認した(S202)後、その結果に基づいて第2仮想マシン42に対して処理要求を送信する(S203)前に、処理要求部203から画面制御部206に対して画像表示領域に透過色を設定する旨の指示が出される処理が追加される。そして、画面制御部206では、処理要求部203からの指示に基づいて画像表示領域に透過色が設定される(S204、画面制御ステップ)。その後、第2仮想マシン42に対して実データD01を用いた処理の要求がなされる(S203)。
図21(B)に示すフローチャートは、図9に示す第1実施形態のデータ処理装置1による実行処理に係るフローチャートと比較して、実データD01のデコード後の処理が追加されている。具体的には、第1仮想マシン41から送信された処理要求により特定される実データD01が実行処理部211により確認された後(S301)、実データD01の読み込み(S302)及びデコード(S303)が行われる。さらに、本実施形態に係るデータ処理方法では、出力先がディスプレイ32内の画像表示領域であるので、表示部214によりこの出力処理の結果を画像表示領域に対して出力した上で(S305)、ディスプレイ32への出力処理(S306)を行う。以上の処理により、第2仮想マシン42において実行された処理の結果が第1仮想マシン41の管轄するディスプレイ32に出力される。
図22に示すフローチャートは、画像表示領域の変更に係る処理を説明するフローチャートであり、図22(A)は第1仮想マシン41において行われる画像表示領域の変更を通知する処理を説明するものである。この処理は、上述のように、画面制御部206がディスプレイ32の表示方式を変更する機能部からの画像表示領域の変更に係る依頼を受けた際に開始される(S1300)。画面制御部206は、まず、画像表示領域の変更を含む画面表示の変更の依頼を受けると、新しい画像表示領域の位置とサイズを決定する(S1301)。そして、この位置とサイズの情報を含む画像表示領域の変更情報を第2仮想マシン42に対して通知し、変更を指示する(S1302)。以上の処理により、第1仮想マシン41から第2仮想マシン42に対して画像表示領域の変更が通知される。
図22(B)は、第1仮想マシン41からの画像表示領域の変更情報を第2仮想マシン42において受信することにより開始され(S1400)、画像表示領域の変更に係る処理を説明するものである。第2仮想マシン42の表示部214は、第1仮想マシン41からの画像表示領域の変更情報を受け取ると、変更後の画像表示領域の位置とサイズを把握する(S1401)。そして、実行処理部211において行われる実データD01を用いたプログラムの実行結果を表示する際に、上記の画像表示領域の変更情報を反影して表示させる(S1402)。以上の処理により、第1仮想マシン41から通知された画像表示領域の変更を反影することができる。
<本実施形態による効果>
以上のように、本実施形態によれば、第1仮想マシン41により制御されるディスプレイ32である出力手段に対して第2仮想マシン42においてデータを用いて処理を行った結果を出力する場合、第1仮想マシン41の画面制御部206が判定部202による判定結果に基づいて画像表示領域を透過色にし、データの処理結果が第2仮想マシン42の表示部214によって当該領域に対して表示される。このように、出力部105が第1仮想マシン41により画面のGUI制御がなされてディスプレイ32に出力する形態であっても、第2仮想マシン42による処理の結果を好適に表示させることができる。
画面制御部206から表示部214に対して通知される画像表示領域を指定する情報としては、例えば、「1:QCIF横、2:QCIF縦、3:QVGA横、4:QVGA縦」というように、特定の画像表示領域毎に対して画面制御部206と表示部214との間で用いられる番号をあらかじめ決めておき、この番号を用いて画像表示領域を通知する方法もある。しかし、上記のように、画面制御部206が画像表示領域の位置や大きさの情報を含む変更情報を第2仮想マシン42の表示部214に対して通知し、表示部214はこの変更情報に基づいて実データD01を用いて処理を行った結果をディスプレイ32に表示させる場合は、画像表示領域の変更をより柔軟に行うことができ、画像表示領域の変更に応じて実行した結果をディスプレイ32に対して好適に表示させることができる。
(第6実施形態)
<データ処理装置6の構成及びデータ処理方法>
図23は、本発明の第6実施形態に係るデータ処理装置6の構成を説明するブロック図である。データ処理装置6に含まれる各構成のうちデータ処理装置5と異なる点は、データ処理装置6がディスプレイ32とスピーカー33とを出力手段として備え、実データD01が例えば動画データのようにディスプレイ32へ出力する画像データとスピーカー33へ出力される音声データとを含むデータであり、実行処理部211による処理結果が、ディスプレイ32とスピーカー33とに出力される点である。なお、ディスプレイ32は、データ処理装置5と同様に第1仮想マシン41により画面のGUI制御がなされている。また、実行処理部211による処理の結果は表示部214を介してディスプレイ32に送られる。
本実施形態に係るデータ処理装置6では、上記のように実データD01が動画データであるため、実データD01を用いて処理を行った場合には、その処理結果が従来はディスプレイ32とスピーカー33とに出力される。しかしながら、例えば、所有者がデータ処理装置6をマナーモード等に設定することによって、複数の出力手段の一つであるスピーカー33からの音声出力が禁止されるような状態にある場合の、実データD01の処理について説明する。
上記のように音声出力が禁止される設定は、所有者がデータ処理装置6を操作することによって行われる。そして、この設定がなされたという情報は、データ処理装置6において第1仮想マシン41の処理要求部203において格納される。そして、処理要求部203が判定部202による判定結果に基づいて、第2仮想マシン42に対して実データD01を用いた処理を要求する際に、特定の出力手段(例えばスピーカー33)への出力が制限されている場合には、当該出力手段への出力を第2仮想マシン42に対して要求せず、出力が制限されていない出力手段(例えばディスプレイ32)への出力に係る処理のみを要求する。そして、第2仮想マシン42の実行処理部211では、第1仮想マシン41からの要求に基づいて特定の出力手段に対してのみの出力を想定して実データD01を用いたプログラムの実行処理が行われる。
上記の処理を図24を用いてより具体的に説明する。図24は、データ処理装置6によるデータ処理方法のうち、処理要求部203において行われる第2仮想マシン42に対する処理要求に係る処理を説明するフローチャートである。図24における処理では、図21(A)に示す第5実施形態のデータ処理装置5による処理要求処理に係るフローチャートと比較して、処理命令を行ったアプリケーションプログラムが判定部202において仮想データD11を利用中である旨のフラグが保持されたプログラムか否かを処理要求部203において判断した(S202)後、画像表示領域に透過色の設定を行う(S204)の前に、出力手段に対して出力の制限があるかの確認が行われる(S205)。ここで行われる出力の制限の確認とは、上述のようにディスプレイ32やスピーカー33からの出力が、例えばマナーモード等の設定により制限されているかどうかの確認であり、複数の出力手段がある場合には個別に行われる。例えば、マナーモードの設定であり、スピーカー33のみ出力が制限されている場合には、スピーカー33への出力に関しての処理は、ここで中止される。一方、ディスプレイ32への出力は特に制限されてないため、処理が継続され、図21(A)に示す処理と同様に、画像データを表示するための画像表示領域の設定を行い(S204)、実データD01に対する処理の結果のうちの画像データだけを対象として、第2仮想マシン42に対して、処理の要求が行われる(S205)。以上の処理により、第2仮想マシン42に対しては実データD01に含まれるデータのうち画像データのみの処理が要求され、第2仮想マシン42ではこの要求に基づいて処理が行われ、その処理結果が、表示部214を介してディスプレイ32に出力される。
<本実施形態による効果>
以上のように、本実施形態によれば、例えば複数の出力手段のうち一部の出力手段(上記の例ではスピーカー33)への出力が制限されている場合に、第1仮想マシン41の処理要求部203において各出力手段への出力可否が判断され、その結果に基づいて第2仮想マシン42に対して実データD01の処理が要求される。この結果、第2仮想マシン42において実データD01を用いて行われた処理の結果を一部の出力手段のみ(上記の例ではディスプレイ32)に対して出力される態様とすることができ、データ処理装置6により実データD01を利用する際の利便性をさらに高めることができる。
なお、上記の実施形態では、複数の出力手段に対して実データD01の処理結果を出力する場合について説明したが、実データD01を用いた処理の結果が出力される出力手段が一つであり、その出力手段による出力が制限されている場合には、第2仮想マシン42に対して実データD01を用いた処理の要求は行われない。より具体的には、例えば実データD01が音楽データである場合、実データD01を用いた再生処理の結果は、スピーカー33に対してのみ出力される。ここで、マナーモード等の設定により、スピーカー33からの音声出力が制限されている場合には、処理要求部203によって図24に示すフローチャートに従って出力の制限を確認する(S205)と、スピーカー33に対する音声出力が制限されていることが確認されるため、音声出力に係る処理はここで終了される。そして、第2仮想マシン42による実データD01を用いた処理の結果は他の出力手段に対しては出力されない。そのため、第2仮想マシン42に対して実データD01を用いた処理の要求を送信する必要がなく、以降の処理は中止される。このように、出力が制限されている出力手段に対しての出力が行われる処理の要求は、第1仮想マシン41から第2仮想マシン42に対して送信されないことから、第2仮想マシン42において出力要否を判断することがなく出力が中止され、データ処理装置6によりデータを利用する際の利便性を高めることができる。また、第2仮想マシン42では不要な処理を行うことがなく、よりデータ処理装置6において上記の処理を効率よく行うことができる。
なお、マナーモードのほかに、例えばデータ処理装置6に対して外部との通信を遮断するセルフモードの設定がなされており、実データD01を用いた処理の結果を外部に送信する必要がある場合にも適用することができる。この場合、上記とマナーモードの設定がなされている場合と同様の処理によって第1仮想マシン41において第2仮想マシン42に対する処理の要求が中止されるため、第2仮想マシン42における実データD01を用いた処理の実行及びその結果の送信に係る処理が行われない。
(データ処理プログラム)
引き続いて、上述した一連のデータ処理を、上述したようなデータ処理装置1〜5として構成されるコンピュータに実行させるためのデータ処理プログラムを説明する。図25に示すように、データ処理プログラム61は、コンピュータが備える記録媒体60に形成されたプログラム格納領域60a内に格納されている。
データ処理プログラム61は、処理を統括するメインモジュール61aと、受信モジュール61bと、判定モジュール61cと、処理要求モジュール61dと、実行処理モジュール61eと、を備えて構成される。受信モジュール61bと、判定モジュール61cと、処理要求モジュール61dと、実行処理モジュール61eと、を実行させることにより実現される機能は、上述した受信部201と、判定部202と、処理要求部203と、実行処理部204の機能とそれぞれ同様である。
(変形例)
以上本発明の好適な実施形態について説明したが、本発明に係るデータ処理装置、データ処理方法及びデータ処理プログラムは種々の変更を行うことが可能である。
上記の実施形態では、データ処理装置1〜6が出力手段(出力部)を備え、当該出力手段に対して実データD01を用いたプログラムの実行結果を出力する場合について説明したが、出力手段は外部の装置である態様としてもよい。この場合には、通信部34を介して外部と通信をすることにより、外部の装置に対して第2仮想マシン42における実データD01を用いたプログラムの実行の処理結果を送信することにより、第2仮想マシン42に格納される実データD01を用いた処理の結果をデータ処理装置の所有者等が確認することができる。