(57)【特許請求の範囲】
【請求項１】
プログラムの実行時におけるリソースへのアクセス権限を示すパーミッション情報が付加されたプログラムを取得して実行するプログラム実行機器であって、
前記プログラムを記録した可搬性記録媒体を装着する装着手段と、
装着された前記可搬性記録媒体に記録された前記プログラムと前記パーミッション情報とを複製して記憶するプログラム記憶手段と、
前記プログラムの取得経路に応じて、前記パーミッション情報に含まれる第１のパーミッション情報又は第１のパーミッション情報と異なる第２のパーミッション情報を設定するパーミッション情報設定手段と、
前記パーミッション情報設定手段で設定された第１又は第２のパーミッション情報に従い、前記プログラムを実行する実行手段とを備え、
前記パーミッション情報設定手段は、
前記プログラムの取得経路が、前記装着手段に装着された可搬性記録媒体から前記プログラムを読み込むものであるとき、前記第１のパーミッション情報を設定する第１設定部と、
前記プログラムの取得経路が、前記プログラム記憶手段から前記プログラムを読み込むものであるとき、前記第２のパーミッション情報を設定する第２設定部とを有する
ことを特徴とするプログラム実行機器。
【請求項２】
前記可搬性記録媒体に記録されたパーミッション情報には、第１のパーミッション情報と第２のパーミッション情報とが含まれており、
前記プログラム記憶手段には、前記プログラムとともに第１のパーミッション情報と第２のパーミッション情報とが記憶されており、
前記第１設定部は、前記可搬性記録媒体に記録された第１のパーミッション情報を設定し、
前記第２設定部は、前記プログラム記憶手段に記録された第２のパーミッション情報を設定することを特徴とする請求項１記載のプログラム実行機器。
【請求項３】
前記可搬性記録媒体に記録されたパーミッション情報には、第１のパーミッション情報が含まれており、
第１のパーミッション情報を変換ルールに従い第２のパーミッション情報に変換する変換手段を更に備えることを特徴とする請求項１記載のプログラム実行機器。
【請求項４】
前記装着手段に装着された可搬性記録媒体を検出する検出手段を更に備え、
前記パーミッション情報設定手段は、前記検出手段が可搬性記録媒体を検出しているときは、前記取得経路に拘らず、第１のパーミッション情報を設定することを特徴とする請求項１記載のプログラム実行機器。
【請求項５】
前記プログラムに関連付けられた追加プログラム情報を取得する取得手段を更に備え、
前記追加プログラム情報は、前記プログラムの機能の追加または更新をするための追加プログラムと第２のパーミッション情報とを含み、
前記パーミッション情報設定手段は、前記追加プログラム情報を使用して前記プログラムを起動するとき、第２のパーミッション情報を設定することを特徴とする請求項１記載のプログラム実行機器。
【請求項６】
前記取得手段は、
外部のサーバから前記追加プログラム情報を通信回線を介してダウンロードするダウンロード部と、
ダウンロードした追加プログラム情報を前記プログラム記憶手段に追加記憶させる追加部とを有することを特徴とする請求項５記載のプログラム実行機器。
【請求項７】
プログラムの実行時におけるリソースへのアクセス権限を示すパーミッション情報が付加されたプログラムを取得して実行するプログラム実行機器のプログラム実行方法であって、
前記プログラム実行機器は、
前記プログラムを記録した可搬性記録媒体を装着する装着手段と、
装着された前記可搬性記録媒体に記録された前記プログラムと前記パーミッション情報とを複製して記憶するプログラム記憶手段とを備え、
前記プログラム実行方法は、
前記プログラムの取得経路に応じて、前記パーミッション情報に含まれる第１のパーミッション情報又は第１のパーミッション情報と異なる第２のパーミッション情報を設定するパーミッション情報設定ステップと、
前記パーミッション情報設定ステップで設定された第１又は第２のパーミッション情報に従い、前記プログラムを実行する実行ステップとを有し、
前記パーミッション情報設定ステップは、
前記プログラムの取得経路が、前記装着手段に装着された可搬性記録媒体から前記プログラムを読み込むものであるとき、前記第１のパーミッション情報を設定する第１設定サブステップと、
前記プログラムの取得経路が、前記プログラム記憶手段から前記プログラムを読み込むものであるとき、前記第２のパーミッション情報を設定する第２設定サブステップとを有する
ことを特徴とするプログラム実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムを実行する機器におけるパーミッション（リソースに対するアクセス権限あるいは実行権限）を管理するプログラム実行機器に関する。
【背景技術】
【０００２】
近年、出荷後の家電機器に対して、プログラムを後から追加し、そのプログラムを動作させることによって機器に機能を追加する、という仕組みが普及しつつある。
家電機器上でプログラムを動作させるプログラム実行系の代表的な技術としては、ＪＡＶＡ（登録商標）や、ドットＮＥＴ（登録商標）などがある。
これらの技術は仮想マシンの仕組みを備え、ネットワーク家電のＣＰＵなど、ハードウェアに依存せずに同一のプログラムを動作させることが可能なことから、サービスの実施のための共通プラットフォームとなることが期待されている。
【０００３】
機器に追加されるプログラムには、そのプログラムに許可される動作を示したパーミッション情報が付随される場合が多い。パーミッション情報を適切に設定することによって、例えば追加されたプログラムが、機器に存在するユーザの個人情報を改竄・破壊する、あるいはネットワーク機能を利用して勝手に機器上のデータを外部に流出する、といった勝手な振る舞いを行う危険性を未然に防止することができる。例えばＪＡＶＡ（登録商標）では、プログラムのアクセス権限を適切にコントロールするために、セキュリティマネージャやアクセスコントローラといった仕組みが用意されている。この仕組みは非特許文献１に記載されている。
【０００４】
機器に追加するためのプログラムの流通の方法として代表的なものは、ネットワークを通じてこれを行なう方法である。例えば携帯電話などのモバイル機器においては、無線通信によって機器にプログラムを後から配信し、これを実行する、というサービスが既に実現されている。
これ以外にも、可搬性の記録（または記憶）媒体（以下、単に「可搬媒体」という）を通じてプログラムを流通する、という方法が、近年クローズアップされつつある。ここでの可搬媒体とは、光ディスクや、シリコンデバイス、メモリカード、その他データを記録可能で可搬可能なさまざまな媒体を含む。
【０００５】
この場合、家電機器は可搬媒体を着脱することができる機構を備える。着脱の形態は、可搬媒体の種類によって様々である。以降の説明では、可搬媒体が機器に装着されて、可搬媒体に記録されたデータを機器が読み取ることができる状態になっていることを、可搬媒体が機器に「挿入された」状態、あるいは機器に可搬媒体を「挿入した」状態と呼ぶことにする。それ以外の状態を可搬媒体が機器から「排出された」状態、あるいは機器が可搬媒体を「排出した」状態と呼ぶことにする。
【０００６】
家電機器は、挿入された状態の可搬媒体から、プログラムを直接読み込んで実行する、あるいは可搬媒体に記録されたプログラムを一旦機器が具備する独自の記憶装置に複製した後に実行する、などの方法を選択して、そのプログラムを実行することができる。
可搬媒体の着脱機構を備えた機器の中には、プログラムの動作と、可搬媒体の着脱の状態が何らかの形で関連付けされたものがある。従来例としては、例えば特許文献１に示されている。
【０００７】
また、機器がプログラムのデータを可搬媒体から機器に複製する際に、単純なデータコピー以外の何らかの処理を行う技術が例えば特許文献２に開示されている。
可搬媒体の着脱機構を備えた機器においては、可搬媒体に記録されたプログラムを実行する形態として、２種類のものが考えられる。
１つは、機器の持つプログラム実行系が、可搬媒体に記録されたプログラムを直接読み取り実行する方式である。この場合、可搬媒体が、機器に挿入された状態であることが不可欠の条件である。
【０００８】
もう１つは、可搬媒体に記録されたプログラムが、ハードディスクなど一旦機器内の記憶装置に複製（インストール）された後、機器の持つプログラム実行系が、この複製されたデータを読み取り実行する方式である。この場合は、プログラムの実行時に、可搬媒体自体は必ずしも機器に挿入された状態でなくとも構わない。
後者の方式は、プログラムを動作させる際に、可搬媒体が機器に挿入された状態になっていることが必須にはならないため、機器のユーザにとっては利用の際の自由度が大きく増す。
【０００９】
しかしその一方で、後者の方式は、可搬媒体を保持するユーザが一旦可搬媒体上のプログラムを機器内の記憶装置に複製してしまえば、自由にその可搬媒体の２次流通（例えば他のユーザに可搬媒体を譲渡・売却するなど）を可能にするのを許す方式でもある。そのため、可搬媒体の作成者や提供者の立場から見た場合、この方式によりプログラムの実行を許すことは好ましくないケースも多い。
【００１０】
特許文献１には、機器に当該プログラムが記録された可搬媒体が挿入されている状況にある場合のみ、記憶装置に複製されたプログラムの実行を許可し、それ以外の場合にはプログラムの実行を禁止する、という方式が提示されている。この方式の場合、プログラムを動作させるためには常に可搬媒体の機器への挿入が必要となるため、可搬媒体の作成者や提供者が意図しない、可搬媒体の２次流通などをユーザが行なうのを防ぐことはできる。
【００１１】
しかしながら、プログラムを動作させる際に常に可搬媒体の挿入を求めるという方式は、新たに以下のような問題を生じさせるものである。
（１）可搬媒体の破損などが発生した場合、プログラムを実行させることが不可能になってしまう。
（２）同一のユーザが保持する２つ以上の機器で、同時にプログラムを動作させることができなくなる。
（３）可搬媒体の２次流通などを考えない、正当な利用方法に従ってプログラムの実行を行なわせているユーザにとっても、プログラムを実行させるたびごとに「ユーザが手元に可搬媒体を保持していることを証明するために」可搬媒体の挿入が必要となり、プログラムの利用の際の利便性を損ねている。
【００１２】
なお、機器がプログラムを可搬媒体から機器に複製する際に、最適化などを適用してプログラムの高速化を図った例は存在するものの、従来の技術では、プログラム（アプリとも呼ぶ）に許可されるパーミッション情報というものは、実行されるプログラムの記録位置等によって変化することはなく、ほぼ一つのものに定められており、これが変更されることは、考えられていない（特許文献２）。
【特許文献１】特開２００４−４６８０１号公報
【特許文献２】特表２００２−５１１６１５号公報
【非特許文献１】「ＪＡＶＡ（登録商標）  Ｓｅｃｕｒｉｔｙ」Ｓｃｏｔｔ  Ｏａｋｓ著、Ｏ’Ｒｅｉｌｌｙ発行、      Ｍａｙ  ２００１、ＩＳＢＮ０−５９６−００１５７−６
【発明の開示】
【発明が解決しようとする課題】
【００１３】
本発明は、可搬媒体で提供されるプログラムを実行させる際、そのプログラムの取得経路に応じてパーミッション情報を設定することのできるプログラム実行機器を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記課題を解決するために本発明は、  プログラムの実行時におけるリソースへのアクセス権限を示すパーミッション情報が付加されたプログラムを取得して実行するプログラム実行機器であって、前記プログラムの取得経路に応じて、前記パーミッション情報に含まれる第1のパーミッション情報又は第1のパーミッション情報と異なる第２のパーミッション情報を設定するパーミッション情報設定手段と、前記パーミッション情報設定手段で設定された第１又は第２のパーミッション情報に従い、前記プログラムを実行する実行手段とを備えることとしている。
【発明の効果】
【００１５】
上述のような構成によって、プログラムの取得経路に応じて、第１のパーミッション情報と、それと異なる第２のパーミッション情報が設定されるので、その利用形態に応じたパーミッション情報をプログラムに適用して動作させることができる。
また、前記プログラムを記録した可搬性記録媒体を装着する装着手段と、装着された前記可搬性記録媒体に記録された前記プログラムと前記パーミッション情報とを複製して記憶するプログラム記憶手段とを更に備え、前記パーミッション情報設定手段は、前記プログラムの取得経路が、前記装着手段に装着された可搬性記録媒体から前記プログラムを読み込むものであるとき、前記第１のパーミッション情報を設定する第１設定部と、前記プログラムの取得経路が、前記プログラム記憶手段から前記プログラムを読み込むものであるとき、前記第２のパーミッション情報を設定する第２設定部とを有することとしている。
【００１６】
このような構成により、可搬性記録媒体に記録されたプログラムが直接実行される場合と、一旦プログラム記録用のプログラム記憶手段に複製されたプログラムが実行される場合とによって、異なるパーミッション情報をプログラムに適用し動作させ、ユーザにサービスを提供することができる。
例えば、同一のプログラムを動作させる場合であっても、可搬性記録媒体を機器に装着して利用しているユーザには、機器の保持するローカルリソースをフルに利用して動作するプログラムを提供し、可搬性記録媒体を機器に装着して利用していないユーザには、一部の機能（例えば、機器外へのネットワークアクセス機能）を使用不能にした状態で動作するプログラムを提供する、などのように、プログラムの取得経路に応じて適切なパーミッション情報を設定することができる。本発明を用いることで、従来に存在していた仕組みよりもさらに柔軟性の高いサービスの形態を、ユーザに提供することが可能になる。
【００１７】
また、前記可搬性記録媒体に記録されたパーミッション情報には、第１のパーミッション情報と第２のパーミッション情報とが含まれており、前記プログラム記憶手段には、前記プログラムとともに第１のパーミッション情報と第２のパーミッション情報とが記憶されており、前記第１設定部は、前記可搬性記録媒体に記録された第１のパーミッション情報を設定し、前記第２設定部は、前記プログラム記憶手段に記録された第２のパーミッション情報を設定することとしている。
【００１８】
このような構成により、２種類のパーミッション情報が、可搬性記録媒体に記録されたプログラムに付加されているので、そのまま利用することができる。
また、前記可搬性記録媒体に記録されたパーミッション情報には、第１のパーミッション情報が含まれており、第１のパーミッション情報を変換ルールに従い第２のパーミッション情報に変換する変換手段を更に備えることとしている。
【００１９】
このような構成により、可搬性記録媒体に記録されたプログラムに付加されているパーミッション情報をそのまま第1のパーミッション情報として利用でき、また第1のパーミッション情報を変換して第２パーミッション情報として利用することができる。
また、前記装着手段に装着された可搬性記録媒体を検出する検出手段を更に備え、前記パーミッション情報設定手段は、前記検出手段が可搬性記録媒体を検出しているときは、前記取得経路に拘らず、第１のパーミッション情報を設定することとしている。
【００２０】
このような構成によって、可搬性記録媒体が装着されている場合には、プログラム記憶手段からプログラムを読み込んでプログラムを実行するときにも、そのプログラムの取得経路に拘らず、第１のパーミッション情報に従いプログラムを実行させることができる。
また、前記プログラムに関連付けられた追加プログラム情報を取得する取得手段を更に備え、前記追加プログラム情報は、前記プログラムの機能の追加または更新をするための追加プログラムと第２のパーミッション情報とを含み、前記パーミッション情報設定手段は、前記追加プログラム情報を使用して前記プログラムを起動するとき、第２のパーミッション情報を設定することとしている。
【００２１】
このような構成によって、可搬性記録媒体に記録されたプログラムに関連づけられた追加プログラム情報が取得手段によって取得され、追加プログラムが実行されるときは、追加プログラム情報に含まれる第２のパーミッション情報に従い、プログラムを実行させることができる。
また、前記プログラムを記録した可搬性記録媒体を装着する装着手段と、装着された前記可搬性記録媒体に記録された前記プログラムと前記パーミッション情報とを複製して記憶するプログラム記憶手段とを更に備え、前記取得手段は、外部のサーバから前記追加プログラム情報を通信回線を介してダウンロードするダウンロード部と、ダウンロードした追加プログラム情報を前記プログラム記憶手段に追加記憶させる追加部とを有することとしている。
【００２２】
このような構成によって、プログラム著作者が用意した追加プログラムをユーザーは容易に取得し、利用することができる。
また、本発明は、プログラムの実行時におけるリソースへのアクセス権限を示すパーミッション情報が付加されたプログラムを取得して実行するプログラム実行機器のプログラム実行方法であって、前記プログラムの取得経路に応じて、前記パーミッション情報に含まれる第１のパーミッション情報又は第１のパーミッション情報と異なる第２のパーミッション情報を設定するパーミッション情報設定ステップと、前記パーミッション情報設定ステップで設定された第１又は第２のパーミッション情報に従い、前記プログラムを実行する実行ステップとを有することとしている。
【００２３】
このような方法により、プログラムが実行される場合にプログラムの取得経路に応じて、異なるパーミッション情報をプログラムに適用し、動作させることができる。
【発明を実施するための最良の形態】
【００２４】
本発明に係るプログラム実行機器は、可搬媒体を装着する装着部を有し、記録されたプログラムを読み取り実行する機器であって、そのためのプログラム実行部を備える。また、本発明の機器は、可搬媒体に記録されたプログラムを複製し、蓄積するプログラム蓄積部を備える。
このプログラム実行部は、以下の２種類の利用形態（プログラムの取得経路）でプログラムの実行に対応する。
（実行方法Ａ）可搬媒体に記録されたプログラムのデータだけを用いて、これを直接読み取り実行する。
（実行方法Ｂ）プログラム蓄積部に記録されたプログラムのデータを読み取り実行する。
【００２５】
ここでプログラムのデータとは、プログラムの実行形式のことを指す。例えばＪＡＶＡ（登録商標）プログラムで言えば、ＪＡＶＡ（登録商標）クラスファイルや、そのアーカイブ形式であるＪＡＲファイルのことを指す。
実行方法Ａと実行方法Ｂとの違いについてさらに詳細に述べる。
実行方法Ｂで指すところのプログラム蓄積部が有する記憶装置（記憶手段）は、ハードディスクや不揮発性のメモリなど、機器の電源を切断してもその記録内容が保持される長期記憶装置（ＮＯＮ−ＶＯＬＡＴＩＬＥ  ＳＴＯＲＡＧＥ  ＳＹＳＴＥＭ）である。揮発性のＲＡＭ（ランダム・アクセス・メモリ）など、電力の供給が途切れることで記録内容が消えてしまう短期記憶装置（ＶＯＬＡＴＩＬＥ  ＳＴＯＲＡＧＥ  ＳＹＳＴＥＭ）は、プログラム蓄積部が有する記憶装置として対象に入らない。
【００２６】
実行方法Ａでプログラムが実行される場合は、可搬媒体に記録されたプログラムが、直接機器のＲＡＭなどの短期記憶装置に読み込まれて実行される方式が殆どであるが、上述の通り、この場合の短期記憶装置はプログラム蓄積部を意味していない。従って実行方法Ｂとは明確に区別される。
また近年では、可搬媒体に記録されたプログラムであっても、そのプログラムの機能を更新・追加するプログラムやデータを、ネットワークからダウンロードするなどしてプログラムを実行機器内に取得できる場合がある。このプログラムやデータのことを、追加プログラム情報と呼ぶ。
【００２７】
追加プログラム情報が長期記憶装置に格納され、プログラムの実行の際にこのデータが用いられる場合は、実行方法Ｂに該当するものとする。
実行方法Ａとは長期記憶装置に格納されたプログラムのデータを一切使用せずに、可搬
媒体に記録されたプログラムのデータだけを用いて、実行が行なわれる方法である。
以下、「プログラム蓄積部」と記述したものは、上述した通り、ハードディスクや不揮発性メモリなど、長期記憶装置によってデータの記録が実現されるもののことを意味する。
【００２８】
可搬媒体に記録されたプログラムには、そのプログラムに許可される利用の範囲を記載したパーミッション情報が付加されている。
プログラム実行部は、プログラムを実行する際に、そのプログラムに付加されたパーミッション情報を読み取り、プログラム実行中の動作に反映させる。この際、プログラム実行部は、利用形態の種類によって異なるパーミッション情報を使用してプログラムを実行する。すなわち、実行方法Ａによりプログラムを実行する場合には、第１のパーミッション情報を用いてプログラムを実行し、実行方法Ｂによりプログラムを実行する場合には、第２のパーミッション情報を用いてプログラムを実行する。
【００２９】
本発明は、プログラムの取得経路に応じて異なるパーミッション情報を準備するにあたり、以下の３種類の仕組みを想定している。
（ａ）可搬媒体に記録されたプログラムには、実行方法Ａと実行方法Ｂとのそれぞれに対応した、２つのパーミッション情報を付加している。
（ｂ）機器は、可搬媒体に記録されたプログラムを実行方法Ｂで実行するためにプログラムを複製した場合に、プログラムに付加された第１のパーミッション情報を書き換え、第２のパーミッション情報を生成する。
【００３０】
ここでいう可搬媒体に記録されたプログラムの複製とは可搬媒体に記録されたプログラムを実行するときのパーミッション情報とプログラム蓄積部に蓄積されたプログラムを実行するときのパーミッション情報とが実質的に同一のパーミッション情報であれば、可搬媒体に含まれるプログラムによる実行と可搬媒体からプログラム蓄積部に蓄積されたプログラムによる実行とが同一の機能を実現するように可搬媒体に含まれるプログラムをプログラム蓄積部へと蓄積する動作である。
【００３１】
この場合において、可搬媒体に記録されたプログラムの一部をプログラム蓄積部へ蓄積したときに上述のパーミッション情報の同一性が保証されるのであれば一部のプログラムの蓄積も複製ということにする。
この複製の具体例としては可搬媒体のプログラムに含まれるファイルとの同一のファイルをプログラム蓄積部に蓄積するとか、可搬媒体に含まれるプログラムのデータを圧縮したものをプログラム蓄積部に蓄積する（ただしこの場合はプログラム蓄積部に蓄積されたプログラムを実行するときに圧縮したファイルを元に戻した後実行するようにする必要がある）、または可搬媒体に含まれる圧縮されたプログラムのデータを展開したものをプログラム蓄積部に蓄積する等がある。
（ｃ）機器は、可搬媒体に記録されたプログラムに関連付けられたプログラム情報を、ダウンロードによって取得し、その追加プログラム情報の中に含まれる第２のパーミッション情報を取得する。
【００３２】
下記のいずれか仕組みを使用することで、プログラムの取得経路に応じ異なるパーミッション情報を使用してのプログラムの実行が可能となる。
さらに、本発明の機器は、実行方法Ｂによりプログラムを実行する場合に、プログラムが記録された可搬媒体が機器に挿入されているかどうかを区別する。
（実行方法Ｂ−１）可搬媒体が機器に挿入されている状態で、プログラム蓄積部に記録されたプログラムのデータを読み取り実行する。
（実行方法Ｂ−２）可搬媒体が機器に挿入されていない状態で、プログラム蓄積部に記録されたプログラムのデータを読み取り実行する。
【００３３】
本発明の機器は、これらの利用形態も区別し、これに応じ異なるパーミッション情報を使用してプログラムを実行する。
（実施の形態１）
図１は、本発明に係るプログラム実行機器１００実施の形態１の構成図である。図２は、実施の形態１の変形例の構成図であり、同一の構成要素には、同一の参照符号を付している。
【００３４】
プログラム実行機器１００（以下、単に「機器１００」という）は、可搬媒体１２０の着脱が可能な装着機構(図示せず)を備える。図１は、可搬媒体１２０にはプログラムは２つのパーミッション情報、つまり第１のパーミッション情報と、第２のパーミッション情報とを付加している場合を示し、また、図２は、可搬媒体１２０のプログラムがパーミッション情報をひとつ、つまり第１のパーミッション情報だけを付加している場合を示している。
【００３５】
なお、図１と図２とのプログラム及びパーミッション情報は、異なるものであるが、それぞれには説明の便宜上、同じ番号を付している。
可搬媒体１２０にはプログラム１２１が記録されている。プログラム等の可搬媒体１２０に記録されたデータを機器１００が読み取ることができれば、可搬媒体１２０の種類および、可搬媒体１２０の機器に対する挿入・排出（着脱）の装着機構は何であっても良い。
【００３６】
ここでの可搬媒体とは光ディスクや、メモリカード、シリコンデバイス、その他データを記録可能なさまざまな物体を含む。例えばメモリカードなどの記憶デバイスは、専用の端子を機器が備え、その端子に可搬媒体を直接差し込んだり抜き取ったりすることで、機器と可搬媒体の着脱を実現する。その他の光ディスクなどの可搬媒体は、トレイ等を用いたディスクローディング機構、および光ディスク読み取り装置（ピックアップ）等を備えることで、機器と可搬媒体の着脱を実現しているものもある。
【００３７】
ＪＡＶＡ（登録商標）実行形式でプログラム１２１が書かれ、プログラム実行部１０７がＪＡＶＡ（登録商標）仮想マシンで実現されている場合を例に説明を行なう。もちろんプログラム１２１は他の形式であっても、後述のプログラム実行部１０７によって動作可能なものであれば何でも良い。例えばここでのプログラムがドットＮＥＴ（登録商標）の実行形式であり、プログラム実行部１０７がドットＮＥＴ（登録商標）仮想マシンであってもよい。あるいはプログラムは機種依存のネイティブコードであって、プログラム実行部１０７が、機器が備えるプロセッサと主メモリ（主記憶）であってもよい。
【００３８】
ＪＡＶＡ（登録商標）プログラムとそれに伴うメタ情報等を記録したファイルを単一のファイルで記録するための形式としてＪＡＲという記録形式が規定されている。ここでは実施の例として、このＪＡＲ形式で可搬媒体１２０上にプログラムが記録されているものとする。
可搬媒体１２０に記録されるプログラム１２１は複数であってもよいが、説明の便宜上一つだけ記録されているものとする。
【００３９】
可搬媒体１２０に記録されるプログラム１２１には、プログラムの識別記号であるプログラムＩＤとパーミッション情報１２３とが付加されている。
ここで、パーミッション情報と、それにより規定される、プログラムに許可される動作について詳しく説明する。
パーミッション情報とは、プログラムを動作させる機器における、そのプログラムに許可される挙動の範囲、つまり機器リソースに対するアクセス実行権限を示した情報のことである。
【００４０】
個々の機器リソース毎のパーミッションを記述したものを、パーミッション項目と呼び、一つ以上のパーミッション項目が、テーブル形式または言語形式で記述され、パーミッションファイルと呼ぶファイルに格納される。
図１と図２とに示す第１のパーミッション情報１２３Ａ、あるいは、第２のパーミッション情報１２３Ｂ、あるいはプログラム蓄積部１０１の第１のパーミッション情報１０３Ａ、第２のパーミッション情報１０３Ｂは、いずれもがそれぞれ一つ以上のパーミッションファイルで構成される。
【００４１】
パーミッション項目の内容は、プログラムを実行する機器がどのような機能を有しているかに依存する。例えば、ＤＶＤ（デジタル・バーサタイル・ディスク）やＢＤ（ブルーレイ・ディスク）に代表される、高密度の記録媒体を再生する装置の場合、具体的なパーミッション項目として以下のものが考えられる。
（パーミッション項目例１）プログラムが、機器が有する長期記憶装置（ストレージ）にアクセスして、リードやライトを行なっても良いか。
【００４２】
（パーミッション項目例２）プログラムが、機器が有する特定のファイルをアクセスして、リードやライトを行なっても良いか。
（パーミッション項目例３）プログラムが、機器が有する特定の情報をアクセスして、リードやライトを行なっても良いか。ここでの特定の情報とは、例えば、時計の時刻、録画予約情報、チャンネル設定、機器のユーザの名前など個人情報、機器の使用履歴などの各種の設定をいう。
【００４３】
（パーミッション項目例４）プログラムが、他のコンテンツ（例えば、可搬媒体１２０に記録された映像など）をアクセスして、リードやライトを行なっても良いか。
（パーミッション項目例５）プログラムが、機器が有するネットワーク機能を使用して通信を行なっても良いか。
（パーミッション項目例６）プログラムが、特定のプロトコルを使用してもよいか。
【００４４】
（パーミッション項目例７）プログラムが、ある特定の通信相手（例えばＵＲＬで指定されるサイト）と通信を行なっても良いか。
（パーミッション項目例８）プログラムが、特定の実行処理を行なっても良いか。例えばスレッド操作、シリアライズ、デシリアライズ、リフレクションなどである。
（パーミッション項目例９）プログラムが、機器が有する出力装置を使用して、なんらかの出力を行なってもよいか。出力資源とは、例えば、ディスプレイ、特定のウィンドウ、音源、ＬＥＤランプ、バイブレータなどをいう。
【００４５】
（パーミッション項目例１０）プログラムが、機器が有する入力資源からの入力を受け付けてもよいか。入力資源とは、例えば、電源スイッチ、各種スイッチ、チューナー、リモコン、ジョイスティック、タッチパネルなどをいう。
（パーミッション項目例１１）プログラムが、他のプログラムと通信を行なってもよいか。
【００４６】
（パーミッション項目例１２）プログラムが、他のプログラムの実行を制御してもよいか。例えば実行を開始する、一時中断する、終了するなどである。
（パーミッション項目例１３）プログラムが使用するデータや、プログラムによって生成されたデータが、他のプログラムにアクセスされ、リードやライトが行なわれても良いか。
【００４７】
（パーミッション項目例１４）プログラムが使用するデータや、プログラムによって生成されたデータが、機器の外に取り出され、エクスポートされてもよいか。例えば可搬媒体１２０に記録されて持ち出される、通信によって送信されるなどである。
（パーミッション項目例１５）プログラムが、追加プログラム情報を利用しても良いかどうか。すなわち、可搬媒体１２０以外の媒体を通じて（例えばネットワークを通じたダウンロードによって）取得された、プログラムの機能を更新・追加するためのプログラムやデータを使用してもよいかどうかなどである。
【００４８】
図３は、パーミッション情報の一例をテーブル形式で示した図であり、この図をもとにパーミッション情報で指定される情報の種類の実例について述べる。
パーミッション情報テーブル３０１のパーミッション項目で指定する細目には、リソースの種類とパラメータとの２つがあり、リソースの種類３１１はパーミッションで許可される挙動（アクセスする機器リソース）の種類を、パラメータ３１２は当該リソースに関する許可の範囲を示す。それぞれのパーミッション項目のエントリは、示した符号に対応して、以下のようなパーミッションを示している。
（３０１Ａ）機器に存在するファイル全般、または特定のファイルへの参照・更新の許可を示している。
（３０１Ｂ）機器や、機器が有する各種のプロパティに対する参照・更新の許可を示している。
（３０１Ｃ）ネットワーク機能（ネットワークソケット、ポート番号の利用、特定の通信プロトコルの利用、特定の通信先とのアクセスなど）の使用の許可を示している。
（３０１Ｄ）プログラム実行における特定の動作（スレッド操作、シリアライズ、デシリアライズ、リフレクションなど）の使用許可を示している。
（３０１Ｅ）機器の有する出力資源（ディスプレイ、特定のウィンドウ、音源、ＬＥＤランプ、バイブレータなど）の使用許可を示している。
（３０１Ｆ）機器の有する入力資源（電源スイッチ、各種スイッチ、チューナー、リモコン、ジョイスティック、タッチパネル等）の使用許可を示している。
（３０１Ｇ）プログラムが、他のプログラムと通信を行なってよいかどうか、の許可を示している。
（３０１Ｈ）プログラムが使用するデータや、プログラムによって生成されるデータが、他の機器にエクスポートされてもよいか否かの許可を示している。
（３０１Ｉ）プログラムが、追加プログラム情報を利用しても良いか否かの許可を示して
いる。
【００４９】
パーミッション情報には、プログラムが実行される際に、これらの使用が許可されるか否か、また許可される場合にはその制限（どこまでの動作が許可されるか）の情報が記録される。パーミッション情報で示される許可の種類は、上記に示したものであっても、もちろん他のものであってもよい。
パーミッション情報の記録形式は、プログラム実行系がプログラムを実行する際に解読できる形式であれば何でも良い。例えば、ＪＡＶＡ（登録商標）プログラムのパーミッションを記録するための形式として、”ＪＡＶＡ（登録商標）．ＰＯＬＩＣＹ”ファイルというものが設定されていてもよい。また、同様の情報が記述されていれば他の形式であってもよい。
【００５０】
図４は、ＸＭＬ言語形式にてパーミッション情報を記述した一例を示す。
図４において、ＸＭＬ形式パーミッション情報４０１のうち、例えば機器リソースの1
種であるプロパティのユーザ名“user  name"４１１は、リード（Read）もライト（Write）も不可（False）とされている。
次に、再び図１と図２とを参照して、機器１００の構成各部について説明する。
【００５１】
本実施の形態の機器１００は、プログラム蓄積部１０１、読込部１０５、インストール部１０４、選択部１０６、プログラム実行部１０７、パーミッション設定部１０８、検出部１０９、機器リソース１１０から構成される。なお、変形例では、パーミッション変換部１１５を更に備えている。
プログラム蓄積部１０１は、可搬媒体１２０に記録されたプログラムをインストール部１０４により複製し記録されている。このプログラム蓄積部１０１は、ハードディスクや不揮発性のメモリなど、機器の電源を切断してもその記録内容が保持される長期記憶装置によって実現することができる。
図１に示した構成では、可搬媒体１２０に記録されたプログラム１２１、およびこれに付加されたパーミッション情報１２３は全て、機器のプログラム蓄積部１０１に複製される。
【００５２】
図２に示した構成においては、可搬媒体１２０に記録されたプログラム１２１は、プログラム蓄積部１０１にインストール部１０４によってそのまま複製される。可搬媒体１２０に記録されたパーミッション情報１２３は、第１のパーミッション情報１２３Ａをプログラム蓄積部１０１にインストール部１０４によってそのまま複製される。可搬媒体１２０からプログラム蓄積部１０１に記録される過程において、もしくは、プログラム蓄積部１０１に蓄積された状態からプログラム実行部１０７によって使用される過程において、第１のパーミッション情報１２３Ａがパーミッション変換部１１５によって変換され、第２のパーミッション情報１０３Ｂとしてプログラム蓄積部１０１に記録される。
【００５３】
プログラム実行部１０７はプログラム（１２１または１０２）を実行する。プログラムがＪＡＶＡ（登録商標）によって提供される場合、プログラムの実行自体はＪＡＶＡ（登録商標）仮想マシンを使用することによって実現することができる。
インストール部１０４は、可搬媒体１２０のプログラム１２１とパーミッション情報１２３Ａをインストールする。そして、インストールした内容を管理するため、可搬媒体１２０の記憶媒体ＩＤと、プログラム１２１のプログラムＩＤ、および第1のパーミッション情報１２３Ａのファイル名とを読み込み、後述のインストール情報テーブル１１４に記録する。
【００５４】
さらに、図１に示すように、第２のパーミッション情報１２３Ｂがあれば、それもインストールし、図２に示すように、第２のパーミッション情報１２３Ｂがなければ、パーミッション変換部１１５に第１のパーミッション情報１２３Ａを伝達して、第２のパーミッション情報を変換・生成するように指示する。そして、パーミッション変換部１１５から、生成された第２のパーミッション情報を受け取り、プログラム蓄積部１０１にインストールする。
【００５５】
読込部１０５は、可搬媒体１２０の記憶媒体ＩＤと、プログラム１２１とそのプログラムＩＤ、および第1のパーミッション情報１２３Ａとを読み込み、さらに、図１に示すように、第2のパーミッション情報１２３Ｂがあればそれも読み込み、選択部１０６に伝達する。
また、図２に示すように第２のパーミッション情報１２３Ｂがなければ、パーミッション変換部１１５に第１のパーミッション情報１２３Ａを伝達して、第２のパーミッション情報を変換・生成するように指示する。そして、パーミッション変換部１１５から、生成された第２のパーミッション情報１０３Ｂを受け取り、選択部１０６に伝達する。
【００５６】
選択部１０６は、プログラム蓄積部１０１にインストールされたプログラム１０２、または可搬媒体１２０に記録されたプログラム１２１のいずれのプログラムを実行するかをユーザに問い合わせ、前者の場合、プログラム蓄積部１０１にインストールされたプログラム１０２を読み出し、プログラム実行部１０７の主メモリ（不図示）に書き込む。
同時に、プログラム蓄積部１０１から、当該プログラムの第１と第２のパーミッション情報を読み出し、また後述のインストール情報テーブル１１４から、可搬媒体１２０の記憶媒体ＩＤとプログラムＩＤとを読み出し、それらをパーミッション設定部１０８に通知する。
【００５７】
また選択部１０６は、後者の場合、読込部１０５に可搬媒体１２０からの読込を指示する。そして、可搬媒体１２０に記録されたプログラムを読込部１０５から受け取り、主メモリに書き込む。
同様に、可搬媒体１２０の記憶媒体ＩＤと、主メモリに書き込んだプログラムのプログラムＩＤと第１と第２のパーミッション情報とを読込部１０５から受け取り、パーミッション設定部１０８に伝達する。
【００５８】
ここで、記憶媒体ＩＤは、当該プログラムがプログラム蓄積部１０１にあるときは、インストール情報テーブル１１４の記憶媒体ＩＤ欄７１５のエントリから、また可搬媒体１２０にあるときは読込部１０５から得る。
なお、選択部１０６は、問い合わせのとき、不図示の表示装置と、キーボードまたはマウス（不図示）とを使用する。なお、明示的にユーザに問い合わせを示さない場合のデフォルトでの選択が定義されていても良い。すなわち、機器に予め設定を行なっておくことによって、いずれの選択をするかのユーザへの問い合わせを省略する実施形態であっても良い。
【００５９】
プログラム実行部１０７は、プログラムに付加されたパーミッション情報を解析し、プログラムの実行を適切に制御（コントロール）する。このための仕組みとして、ＪＡＶＡ（登録商標）仮想マシンには、セキュリティマネージャとアクセスコントローラという機構が用意されている。
ＪＡＶＡ（登録商標）仮想マシンは、ＪＡＶＡ（登録商標）プログラムに付加されたパーミッション情報を解析し、セキュアローダという仕組みを用いてプログラムを仮想マシンにロードする。この手続きをとることで、セキュアマネージャとアクセスコントローラは、プログラムを実行させる際の挙動がパーミッション情報に示された許可範囲を守るように、プログラムの実行を適切にコントロールする。この仕組みの詳細に関しては非特許文献１に示されている。
【００６０】
パーミッション設定部１０８は、ＪＡＶＡ（登録商標）仮想マシンにて実現され、プログラム実行部１０７により実行されるプログラムのパーミッション情報の設定を行う。パーミッション設定部１０８は、実行されるプログラムを記録した可搬媒体１２０の記憶媒体ＩＤと、実行されるプログラムのプログラムＩＤと、第1および第2のパーミッション情報とを選択部１０６から受けとり、実行されるプログラムに対して第1のパーミッション情報または第２のパーミッション情報のいずれか適当なパーミッション情報をプログラム実行部１０８の主メモリ（不図示）に設定する。
【００６１】
パーミッション設定部１０８は、実行されるプログラムが可搬媒体１２０から読み出されたときには、第１のパーミッション情報の設定を行う。また、実行されるプログラムがプログラム蓄積部１０１から読み出されたときであっても、実行されるプログラムが記録された可搬媒体１２０が挿入されているときは、第１のパーミッション情報の設定を行う。
それ以外のときは第２のパーミッション情報の設定を行う。
【００６２】
パーミッション設定部１０８は、実行されるプログラムが記録された可搬媒体１２０が挿入されているか否かを知るため、検出部１０９に対して、可搬媒体１２０の記憶媒体ＩＤとプログラムＩＤとを伝達し、装着機構（不図示）に可搬媒体１２０が挿入されているかどうかの判定をおこなうよう指示する。
検出部１０９による可搬媒体１２０の挿入、排出の状態の判定結果をもとに、挿入、排出の状態変化があれば、パーミッション設定部１０８は、それぞれ第1のパーミッション情報、第２のパーミッション情報に設定変更する。
【００６３】
検出部１０９は、パーミッション設定部１０８から記憶媒体ＩＤとプログラムＩＤとを受け取り、機器に可搬媒体１２０が挿入されているとき、受け取った記憶媒体ＩＤ、プログラムＩＤが、挿入された可搬媒体１２０の記憶媒体ＩＤ、及び記録されたプログラムのプログラムＩＤとそれぞれ一致するかどうかを判定し、一致するときはパーミッション設定部１０８に、挿入状態である旨を通知する。また、一致しないときは、挿入されていない（排出）旨を同じくパーミッション設定部１０８に通知する。
【００６４】
検出部１０９は、可搬媒体１２０の認識装置、および可搬媒体１２０からのデータ読み取りの仕組みと、これをアクセスするソフトウェアプログラムによって実現することができる。
機器リソース１１０は、プログラム実行部１０７がプログラムを実行することでアクセスが可能な、機器が有する各種のデバイスの機能、機器内に格納されたデータへのアクセスの機能等として実現される。プログラム実行部１０７がＪＡＶＡ（登録商標）仮想マシンにて実現される場合、機器リソース１１０へのアクセスは、ＪＡＶＡ（登録商標）プログラムから呼び出される各種のＪＡＶＡ（登録商標）ライブラリを備えることによって実現できる
機器リソース１１０には、通信機能１１１、入出力機能１１２、ストレージアクセス機能１１３があるが、もちろん他のものであっても良い。
【００６５】
パーミッション変換部１１５は、インストール部１０４または選択部１０６からの指示により、可搬媒体１２０のプログラム１２１に付加されて記録されているパーミッション情報が第１のパーミッション情報だけのとき、それを変換して第２のパーミッション情報を生成し、プログラム蓄積部１０１に記録し、インストール情報テーブル１１４の当該プログラムの第２のパーミッション情報欄７１３のエントリにファイル名を記録する。
【００６６】
パーミッション変換部１１５は、例えば、パーミッション情報１２３を変更するためのルール（パーミッション変更ポリシー）の定義と、それに従って、入力されたパーミッション情報を変更し、新たなパーミッション情報を生成するソフトウェアプログラムによって実現することができる。パーミッション変換部１１５の詳細については、後に説明する。なお、プログラム蓄積部１０１に蓄積されるパーミッション情報は、セキュリティ上の観点から、本発明の装置以外の手段によって盗難や改変がされないような、耐タンパ性を保持していることが望ましい。
【００６７】
次に、本実施の形態における動作について説明する。
図５は、インストールの処理、およびプログラムの起動の処理の流れをそれぞれ示す図である。
先ず、インストールの動作について図５（a）を参照して説明する。
インストールは、可搬媒体１２０が機器１０１に挿入され、ユーザからインストールの指示があったとき、インストール部１０４によって実行される。例えば機器１００を使用するユーザに、プログラムを機器１００にインストールするか否かの問い合わせを行ない、その回答結果を得ることによって実現できる。もしくは、ユーザに問いあわせを行なう以外の実現方法としては、インストール部１０４が機器内の長期記憶装置の空き容量の情報を有しており、プログラムを蓄積可能なだけの容量を保持していれば、自動的に複製の処理を行なうことにする、などの実現形態をとっても良い。
【００６８】
インストール部１０４は、機器１００に挿入された可搬媒体１２０に記録されたプログラム１２１を、プログラム蓄積部１０１へ複製する（Ｓ５０４）。
プログラム蓄積部１０１は、機器の持つ長期記憶装置の使用可能な容量の情報を保持している。例えば、長期記憶装置の空き容量が不足しているなど、複製処理の遂行に問題が発生した場合には、インストール不可として終了する。
【００６９】
なお、可搬媒体１２０の記録が書き換え可能な場合には、プログラムの複製処理を行なうと同時に可搬媒体１２０から元のプログラムの記録を消去する（プログラムを移動する）ようにしてもよい。
Ｓ５０５では、複製対象のプログラムに付加されたパーミッション情報を、プログラム蓄積部１０１に蓄積する際に、変更を加えるか否かをインストール部１０３は判定する。
【００７０】
この判定は、図１のように記録媒体に記録されたプログラムに、直接実行された時に使用される第１のパーミッション情報以外に、一旦機器内にプログラムがインストールされた後で実行される時に使用される第２のパーミッション情報が付加されている場合には、否と判定しＳ５０６に移行する。一方、記録媒体に記録されたプログラムが図２のような場合、機器内にプログラムが複製された後で実行される時のための第２のパーミッション情報を、パーミッション変換部１１５によって新たに生成する必要がある。この生成処理のタイミングについては、以下の２つのケースでの実現が考えられる。
（ケース１）プログラムが、可搬媒体１２０からプログラム蓄積部１０１に複製される過程において生成する。
（ケース２）プログラム蓄積部１０１に記録されたプログラムが、プログラム実行部１０７によって実行される時点において生成する。このときは、第1のパーミッション情報がプログラム蓄積部１０１に必要となる。
【００７１】
どちらのケースでもよいが、本実施の形態では、ケース１を選択し、Ｓ５０７に移行す
る。
なお、実施の形態の変形例で、ケース２を選択しているとき、この時点ではパーミッション変換部１１５による変換処理は行なわれず、Ｓ５０６に移行する。
Ｓ５０６では、可搬媒体１２０に記録されたプログラムのパーミッション情報を、プロ
グラム蓄積部１０１へ複製する処理が行なわれる。
【００７２】
プログラム蓄積部１０１は、機器の持つ長期記憶装置の使用可能な容量の情報を保持している。例えば、長期記憶装置の空き容量が不足しているなど、複製処理の遂行に問題が発生した場合には、Ｓ５０６を取りやめ、プログラムの起動は、可搬媒体１２０に記録さ
れたプログラムを、プログラム実行部１０７によって直接起動することにする（Ｓ５０３
を行なう）ことにしてもよい。
【００７３】
Ｓ５０７では、インストール部１０４が、パーミッション変換部１１５に指示して、可
搬媒体１２０に記録されたプログラムのパーミッション情報を変換し、新たに第２のパー
ミッション情報を生成させる。そして、生成された第２のパーミッション情報をパーミッ
ション変換部１１５から受け取り、プログラム蓄積部１０１に記録するとともに、インストール情報テーブル１１４の第2のパーミッション情報欄７１３にそのＩＤ又はファイル名を記載する。
【００７４】
パーミッション変換部１１５は、例えば、変更前のパーミッション情報を読み込んで、特定のルールによって書き換えられたパーミッション情報を出力するソフトウェアプログラムとして実装することができる。
図６は、パーミッション変換部１１５による変換の一例を示す図である。図６（ａ）は変更前のパーミッション情報、すなわち可搬媒体１２０に記録されたプログラムに付加されたパーミッション情報の例である。この図ではＸＭＬ形式にて情報を実現した例である。
【００７５】
この例では、パーミッション変更ポリシーによって定義されるルールの例として以下の４つを定義する。
（１）機器に存在するファイル全般に対するデフォルトのアクセス権として、”ｒｅａｄ”権限のみを許可し、”ｗｒｉｔｅ”権限を許可しないものとする。
（２）機器が有する”ｕｓｅｒ  ｎａｍｅ”プロパティに対するアクセス権として、”ｒｅａｄ”権限のみを許可し、”ｗｒｉｔｅ”権限を許可しないものとする。
（３）ネットワーク機能について、”ｈｔｔｐ：／／ｔｅｒｍｉｎａｌｍａｋｅｒ．ｃｏｍ”というＵＲＬへのアクセスに対して、”ｃｏｎｎｅｃｔ”権限を許可する。
（４）上記３つのルール以外のパーミッション情報に関しては、何ら変更を加えない。
【００７６】
パーミッション変換部１１５は、図６（ａ）に示すパーミッション情報を読み込んで、上述のルールに従い、新たなパーミッション情報を生成する。図６（ｂ）は、Ｓ５０７により生成される新たなパーミッション情報の例である。
この処理において、変更後の第２のパーミッション情報がプログラム蓄積部１０１に記録される。
【００７７】
プログラムおよびパーミッション情報が、プログラム蓄積部１０１に複製された後に、Ｓ５０８の処理が行なわれる。Ｓ５０８では、インストール部１０４は、複製されたプログラムに関する管理情報を作成する。この情報のことを本実施の形態ではインストール情報と呼ぶことにする。
インストール情報の一例を図７に示す。図７においてインストール情報は、テーブル形式でインストール情報テーブル７０１に記録される。プログラムがプログラム蓄積部１０１に複製されると、インストール情報のテーブルには、そのプログラムが新たなエントリとして追加される。
【００７８】
インストール情報テーブル７０１は、プログラム７１１、第１のパーミッション情報７１２、第２のパーミッション情報７１３、プログラムＩＤ７１４、可搬媒体ＩＤ７１５の各項目欄から構成されている。
プログラム欄７１１には、対象となるプログラムを特定するための情報が記載される。例えば、プログラム蓄積部１０１内のファイルシステムにおけるファイル名が記載される。
【００７９】
第１のパーミッション情報と第２のパーミッション情報との各項目欄７１２、７１３には、プログラムに対応したパーミッション情報を特定するための情報が記載される。例えば、プログラム蓄積部１０１内のファイルシステムにおけるパーミッションファイル名が記載される。
第１のパーミッション情報欄７１２には、可搬媒体からのプログラムを取得して実行するとき、プログラム蓄積部１０１にインストールされたプログラムを取得し、その際可搬媒体が装着した状態で実行するときに使用されるパーミッション情報のファイル名が記載される。また、第２のパーミッション情報欄７１３には、プログラム蓄積部１０１にインストールされたプログラムを取得して可搬媒体を排出した状態で実行するときに使用されるパーミッション情報のファイル名が記載される。
【００８０】
１つのプログラムに対して、パーミッション情報は第１と第２の２つ（２種類）が存在する。
第1のパーミッション情報欄７１２および第２のパーミッション情報欄７１３のエントリには、パーミッション情報を識別するパーミッションファイル名（それぞれ複数指定可）が記載される。
【００８１】
即ち、可搬媒体１２０が挿入された状態の実行で使用される第1のパーミッション情
報７１２の“prog１Ａ.prf"、"ｗｉｔｈｄｉｓｋ"という識別情報と可搬媒体１２０が挿入されていない状態での実行で使用される第２のパーミッション情報欄７１３、“prog１Ａ.prf"、"ｎｏｄｉｓｋ"という識別情報とが記載されている。
プログラムＩＤ欄７１５には、複製元の可搬媒体１２０に記載されたプログラムを識別するための識別情報が記録される。例えば可搬媒体１２０でのプログラムを識別するファイル名がここに記録される。プログラムＩＤの情報の使われ方は後述するが、実現形態によっては存在していなくともよい。
【００８２】
可搬媒体ＩＤ欄７１５には、複製元となった可搬媒体１２０を識別するための識別情報が記録される。例えば可搬媒体１２０が個々に保持するシリアルナンバーがここには記録される。可搬媒体ＩＤの情報の使われ方は後述するが、実現形態によっては存在していなくともよい。
次に、プログラムの起動の動作について図５（b）を参照して述べる。
【００８３】
選択部１０６は、プログラム蓄積部１０１にインストールされたプログラムまたは可搬媒体１２０に記録されたプログラムのいずれのプログラムを実行するかをユーザに問い合わせ（Ｓ５１０）、前者の場合は、プログラム蓄積部１０１にインストールされたプログラム１０２を、選択部１０６が主メモリに書き込み、パーミッション設定部１０８が第２のパーミッション情報１０３Ｂを主メモリに設定をした後、プログラム実行部１０７が当該プログラムを起動する（Ｓ５１１）。
【００８４】
また、後者の場合は、可搬媒体１２０に記録されたプログラムを、読込部１０５を介し選択部１０６が主メモリに書き込み、パーミッション設定部１０８が第1のパーミッショ
ン情報１２３Ａを主メモリに設定をした後、プログラム実行部１０７が当該プログラムを起動する（Ｓ５１２）。
この際に、どのパーミッション情報が選択されるかという情報は、可搬媒体１２０に記録されていてもよいし、また機器側が適切なルールによって（例えば、可搬媒体１２０のデータの並びで先に記録されているものを選択する、など）決定付けても良い。
【００８５】
プログラム蓄積部１０１に記録されたプログラムが起動される場合の処理（Ｓ５１１）
の詳細を、図８に示す。
プログラム蓄積部１０１に記録されたプログラム１０２が実行される場合、本実施の形態では、プログラムの複製元となった可搬媒体が機器に挿入された状態であるか否かを判定し、それをもとに前回の判定時から挿入・排出の状態変化があったか否かを検出する。判定のタイミングについては、以下の２種類の判定処理が考えられる。
（タイミング１）プログラムが起動した直後に、可搬媒体１２０の挿入の有無を判定する。
（タイミング２）プログラムの実行中に、可搬媒体１２０の挿入の有無を定期的に判定する。
【００８６】
これらの２種類の判定処理は、どちらか片方だけが行なわれても良いし、または両方とも行なわれても良い。図８の処理の流れでは両方の判定処理を行なう場合を想定して説明する。
まず、プログラム蓄積部１０１に記録されたプログラムの実行が、プログラム実行部１０７によって開始される。ここで、プログラム実行部１０７がＪＡＶＡ（登録商標）仮想マシンによって実現される場合には、プログラムの実行を開始するための仮想マシンの初期化が行なわれる（Ｓ８０１）。
【００８７】
上記（タイミング１）で述べた、プログラム起動直後における可搬媒体１２０の挿入の有無を判定する（Ｓ８０４）。
この判定は、検出部１０９により行われる。
検出部１０９は、単純に何らかの可搬媒体１２０の挿入状態を判定するのみならず、可搬媒体１２０の種類を判別して、起動するプログラムに応じて「正しい」可搬媒体１２０が挿入されているか否かを判定する。この可搬媒体１２０の挿入・排出の判定の処理の流れを図９に示し、次に説明する。
【００８８】
先ず、単純に何らかの可搬媒体１２０が機器１００に挿入されているか否かを判断する（Ｓ９０１）。可搬媒体１２０の挿入が確認される場合には、Ｓ９０２に、可搬媒体１２０が機器１００に挿入されていない場合には、Ｓ９０７に移行する。
プログラム実行部１０７にて起動が指示されたプログラムの可搬媒体１２０のＩＤを取得する。これは前述した、プログラム蓄積部１０１のインストール情報テーブル１１４の記憶媒体ＩＤ欄７１５を参照することによって取得することができる（Ｓ９０２）。
【００８９】
機器に挿入された可搬媒体１２０の記録内容を読み取り可搬媒体１２０のＩＤを取得し、Ｓ９０２で取得した起動対象のプログラムが持つ可搬媒体１２０ＩＤとの同一性を確認
する（Ｓ９０３）。具体的な可搬媒体１２０ＩＤとしては、例えば可搬媒体１２０が個々
に保持するシリアルナンバーなどを用いて同一性の確認ができる。もちろん他の、プログラム蓄積部１０１に記録されたプログラムの複製元の可搬媒体１２０と、機器に挿入された可搬媒体１２０との同一性が確認できる情報があれば、それを用いても構わない。
【００９０】
同一性が確認できた場合にはＳ９０４に、確認できなかった場合にはＳ９０７に移行する。
プログラム実行部１０７にて起動が指示されたプログラムのプログラムＩＤを、検出部１０９はパーミッション設定部１０８から取得する（Ｓ９０４）。
機器１００に挿入された可搬媒体１２０の記録内容を読み取り、記録されたプログラムのＩＤを取得し、Ｓ９０４で取得した起動対象のプログラムが持つプログラムＩＤとの同
一性を確認する（Ｓ９０５）。具体的なプログラムＩＤとしては、例えば可搬媒体でのプログラムを識別するファイル名などを用いて同一性確認ができる。もちろんプログラムＩＤに限らず、プログラム蓄積部１０１に記録されたプログラムと、機器に挿入された可搬媒体１２０に記録されたプログラムとの同一性が確認できる情報があれば、それを用いても構わない。
【００９１】
同一性が確認できた場合にはＳ９０６に、確認できなかった場合にはＳ９０７に移行する。
処理が、Ｓ９０６に到達した場合は、正しい可搬媒体１２０が機器に挿入された状態にあると判定する。また、処理が、Ｓ９０７に到達した場合は、正しい可搬媒体１２０が機器に挿入されていない（排出された）状態にあると判定する。
【００９２】
本実施の形態では、可搬媒体ＩＤとプログラムＩＤの２種類の情報を用いて判定を行なったが、どちらかの情報のみを使うことにしてもよい。また、２種類の情報を使う場合でも、どちらかの情報さえ合致していれば、正しい可搬媒体が機器に挿入されているものと判定することにしてもよい。
再び図８に戻り、Ｓ８０４では、以上に述べた検出部１０９による、「正しい」可搬媒
体１２０が機器１００に挿入された状態にあるかどうかの判定を行なう。挿入された状態にあると判定される場合にはＳ８０５Ａに、そうでない場合にはＳ８０５Ｂに移行する。
【００９３】
「正しい」可搬媒体１２０が機器１００に挿入された状態にあると判定される場合、またはＳ８０６Ｂで正しい可搬媒体１２０が機器に挿入された状態にあるという判定がされた場合、パーミッション設定部１０８は、第1のパーミッション情報、例えば図７で示したインストール情報テーブル１１４では、”ｗｉｔｈｄｉｓｋ”という識別情報で識別される第1のパーミッション情報のファイル（複数可）の設定を行い、プログラム実行部１０７によって、プログラムの実行が行なわれる（Ｓ８０５Ａ）。
【００９４】
プログラム実行中における可搬媒体１２０が排出状態か否か判定する（Ｓ８０６Ａ）。
パーミッション設定部１０８は、プログラム実行部１０７からの指示をうけ、検出部１０９に、機器１００が「正しい」可搬媒体が挿入されている状態にあるかどうかを問い合わせる。可搬媒体の挿入・排出判定の処理の流れは、図９にて示したものと同様である。
正しい可搬媒体１２０が機器に挿入されていない（排出された）状態にあるという判定がされた場合、挿入状態から排出状態に状態変化が起きたため、Ｓ８０５Ｂに移行する。また、正しい可搬媒体１２０が機器に挿入された状態にあるという判断が下された場合、状態変化はないので、Ｓ８０５Ａで選択された第1パーミッション情報を使用したままでプログラムの実行を続行する。
【００９５】
プログラムの実行の終了判定が行なわれる（Ｓ８０７Ａ）。プログラムが終了する具体
的なケースとしては、プログラムが処理の終わりまで実行を終えた、ユーザにより実行を停止させられた、などの理由が考えられる。プログラムの実行が継続される場合には、Ｓ８０５Ａに戻って処理を続行する。
Ｓ８０４で「正しい」可搬媒体１２０が機器１００に挿入されていない状態にあると判
定された場合、またはＳ８０６Ａでプログラム実行中における可搬媒体１２０が排出状態と判定された場合、パーミッション設定部１０８は、第2のパーミッション情報に切り替えてパーミッション設定を行う（Ｓ８０５Ｂ）。
【００９６】
Ｓ８０６Ａのときと同様に、検出部１０９により上記（タイミング２）で述べた、プロ
グラム実行中における可搬媒体１２０の挿入の有無を判定する（Ｓ８０６Ｂ）。正しい可
搬媒体１２０が機器１００に挿入された状態にあるという判定がされた場合、Ｓ８０５Ａ
に移行する。
正しい可搬媒体１２０が機器に挿入されていない状態にあるという判断が下された場合、Ｓ８０５Ｂで選択された第２のパーミッション情報を使用してのプログラムの実行を続行する。
【００９７】
Ｓ８０７Ａと同様に、プログラムの実行の終了判定が行なわれる（Ｓ８０７Ｂ）。プログラムの実行が継続される場合には、Ｓ８０５Ｂに戻って処理を続行する。
（実施の形態２）
実施の形態２の構成は実施の形態１と同様である。
本実施の形態のプログラムを説明する。
【００９８】
プログラムは、例えばユーザの入力を受け付けて遊ぶことができるゲーム等のアプリケーションプログラムといったものがあるがこれに限定されるものではない。
第１のパーミッション情報では、プログラムに、例えば以下の２つの機能項目を使用することを許可しているものとする。
（パーミッション項目１）機器が有する長期記憶装置（ストレージ）へのデータ（例えばゲームを行ったときの得点情報に関するデータなど）のリード許可およびライト許可である。
【００９９】
（パーミッション項目２）ゲームアプリケーションの作成者が運営する、サーバサイトのＵＲＬへのネットワークアクセス機能である。
また、第２のパーミッション情報では、実行方法Ｂにより実行するプログラムに、上記２つのパーミッション項目を使用することを禁止しているものとする。
プログラムは、プログラム実行環境を備えた（つまり本実施の形態のプログラム実行装置を備えた）、光ディスク再生機器（または記録機能を備えた光ディスク記録再生機器であってもよい）で動作させることができる。
【０１００】
プログラムは、第１のパーミッション情報に基づいて動作する場合は、パーミッション項目１で示された機能を用いることで、ゲームのハイスコアの記録、および、ゲームを遊んだユーザの名前の登録を行うことができる。また、パーミッション項目２で示された機能を用いることで、サーバサイトのＵＲＬにアクセスし、ゲームに登場する追加キャラクターのデータや、ゲームの追加ステージのデータなど、ゲームに関連する新たなデータを取得し、そのデータを用いてゲームを遊ぶことができる。
【０１０１】
プログラムが、第２のパーミッション情報に基づいて動作する場合は、パーミッション項目例１で示された機能を用いることはできないため、ゲームのハイスコアの記録や、ゲームを遊んだユーザの名前の登録を行わない。同様にして、パーミッション項目例２で示された機能を用いることはできないため、ゲームに関連する新たなデータをネットワークを通じて取得することはできない。
【０１０２】
この場合、ゲームアプリケーションのプログラムは、機器が有する長期記憶装置（ストレージ）へのデータのリード・ライト処理を指定する記述、および、サーバサイトのＵＲＬへのネットワークアクセス処理を指定する記述を有しているが、プログラム実行部１０７は、第２のパーミッション情報に基づき、これらの処理を無効にしてプログラムの実行を行う。
【０１０３】
処理を無効にされた場合、その処理内容は実現されないまま、プログラムに記述された後続の処理の実行が進められる。例えばゲームアプリケーションのプログラムがＪＡＶＡ（登録商標）で記述されており、プログラム実行部１０７がＪＡＶＡ（登録商標）仮想マシンで実現されている場合、ＪＡＶＡ（登録商標）仮想マシンは、プログラムに記述された長期記憶装置（ストレージ）へのデータのリード・ライト処理を実現しない。同じく、サーバサイトのＵＲＬへのネットワークアクセス処理を実現しない。代わりにＪＡＶＡ（登録商標）仮想マシンは、記述の示す処理が無効にされたことを示す例外発生情報（エクセプション）を発行する。その後、後続して記述されたプログラムの実行が進められる。
（実施の形態３）
図１０は、実施の形態３のプログラム実行機器１００の構成図である
。
【０１０４】
プログラム実行機器１００（以下、単に「機器１００」という）は、可搬媒体１２０の着脱が可能な機構を備える。
図１０は、可搬媒体１２０のプログラムがパーミッション情報をひとつ、つまり第１のパーミッション情報だけを付加する場合を示している。
図１０のプログラム及び第１のパーミッション情報には、説明の便宜上、図１と図２で示したプログラム及び第１のパーミッション情報と同じ番号を付している。
【０１０５】
可搬媒体１２０にはプログラム１２１が記録されている。プログラム等の可搬媒体１２０に記録されたデータを機器１００が読み取ることができれば、可搬媒体１２０の種類および、可搬媒体１２０の機器に対する挿入・排出（着脱）の形態は何であっても良い。
ここでの可搬媒体とは光ディスクや、メモリカード、シリコンデバイス、その他データを記録可能なさまざまな媒体を含む。例えばメモリカードなどの記憶デバイスは、専用の端子を機器が備え、その端子に可搬媒体を直接差し込んだり抜き取ったりすることで、機器と可搬媒体の着脱を実現する。その他の光ディスクなどの可搬媒体は、トレイ等を用いたディスクローディング機構、および光ディスク読み取り装置（ピックアップ）等を備えることで、機器と可搬媒体の着脱を実現しているものもある。
【０１０６】
さらに、機器１００は、追加プログラム情報を供給する機器１３０（以下、機器１３０と示す）と接続し、機器１３０に格納されたデータを取得することが可能な機構を備えている。機器１３０は、機器１００と通信接続されるサーバ機器である。その他、機器１３０がデータを記録する能力を有し、機器１３０に記録されたプログラム等のデータを機器１００が読み取ることができれば、機器１３０の種類および、接続の形態、データを通信する形態は何であってもよい。機器１３０は、光ディスクや、メモリカード、シリコンデバイス、その他データを記録可能なさまざまな可搬媒体であってもよい。
【０１０７】
機器１３０には追加プログラム情報１３１が記録されている。追加プログラム情報１３１は、例えばプログラム１２１のプログラムＩＤ情報を有しているなど、プログラム１２１あるいはプログラム１０２との関連付けを示す情報を保持している。さらに、追加プログラム情報１３１は、プログラム１２１に付加される第２のパーミッション情報を有している。
【０１０８】
追加プログラム情報１３１はこれ以外にも、プログラム１２１が有する機能を更新・追加するためのデータを保持していて良い。このデータは、プログラム１２１の一部もしくは全てを更新した新しいプログラムを含んでいても良い。あるいはプログラム１２１が機器１００上で実行される際に使用される、画像などのメディアデータや、情報や文書等を記録したメタデータや、その他の種類のデータを含んでいても良い。
【０１０９】
本実施の形態では、追加プログラム情報１３１は、プログラム１２１の一部に置き換えられる新しいプログラムを有しているものとする。対応するプログラム（プログラム１２１あるいはプログラム１０２）と共に、追加プログラム情報１３１がプログラム実行部１０７の持つ主メモリ（不図示）に書き込まれることで、機能が更新・追加されたプログラムが実行できるものとする。このとき、対応するプログラムの一部は追加プログラム情報に置き換えられるものであるため、対応するプログラムは必ずしも全ての部分が主メモリ（不図示）に書き込まれる必要はなく、プログラム実行部１０７で必要であるとされた部分が選択的に書き込まれればよい。
【０１１０】
ＪＡＶＡ（登録商標）実行形式でプログラム１２１が書かれ、プログラム実行部１０７がＪＡＶＡ（登録商標）仮想マシンで実現されている場合を例に説明を行なう。もちろんプログラム１２１は他の形式であっても、後述のプログラム実行部１０７によって動作可能なものであれば何でも良い。例えばここでのプログラムが．ＮＥＴ（ドットネット）（登録商標）の実行形式であり、プログラム実行部１０７が．ＮＥＴ（ドットネット）（登録商標）仮想マシンであってもよい。あるいはプログラムは機種依存のネイティブコードであって、プログラム実行部１０７が、機器が有するプロセッサと主メモリ（主記憶）であってもよい。
【０１１１】
ＪＡＶＡ（登録商標）プログラムとそれに伴うメタ情報等を記録したファイルを単一のファイルで記録するための形式としてＪＡＲという記録形式が規定されている。ここでは実施の形態として、このＪＡＲ形式で可搬媒体１２０上にプログラムが記録されているものとする。
可搬媒体１２０に記録されるプログラム１２１は複数であってもよいが、説明の便宜上一つだけ記録されているものとする。
【０１１２】
また、追加プログラム情報１３１は、プログラム１２１を更新し性能を高めた新しいプログラムを含んでいるものとする。ここでは実施の例として、同じくＪＡＲ形式で機器１３０に追加プログラム情報が記録されているものとする。
可搬媒体１２０に記録されるプログラム１２１には、プログラムの識別記号であるプログラムＩＤとパーミッション情報１２３とが付加されている。
【０１１３】
また、機器１３０に記録される追加プログラム情報１３１には、追加プログラム情報の識別記号である追加プログラム情報ＩＤと、パーミッション情報１３３とが付加されている。
パーミッション情報と、それにより規定される、プログラムに許可される動作については、上述の実施の形態で述べたものと同じであるため説明は省略する。パーミッション情報の一例をテーブル形式で示したものが図３であり、ＸＭＬ言語形式にてパーミッション情報を記述した例を示したものが図４である。これらに関しても、上述の実施の形態で述べたものと同じであるため説明は省略する。
【０１１４】
図１０を参照して、機器１００の構成各部について説明する。
本実施の形態の機器１００は、プログラム蓄積部１０１、読込部１０５、インストール部１０４、選択部１０６、プログラム実行部１０７、パーミッション設定部１０８、機器リソース１１０から構成される。
プログラム蓄積部１０１は、可搬媒体１２０に記録されたプログラム、および、機器１３０に記録された追加プログラム情報をインストール部１０４により複製し記録されている。このプログラム蓄積部１０１は、ハードディスクや不揮発性のメモリなど、機器の電源を切断してもその記録内容が保持される長期記憶装置で実現することができる。
【０１１５】
図１０に示した構成では、可搬媒体１２０に記録されたプログラム１２１、およびこれに付加されたパーミッション情報１２３は、機器１００のプログラム蓄積部１０１に複製される。また、機器１３０に記録された追加プログラム情報１３１、およびこれに付加されたパーミッション情報１３３は、機器１００のプログラム蓄積部１０１に複製される。
プログラム実行部１０７はプログラム１２１を実行する。また、追加プログラム情報１３１にプログラムが含まれる場合、プログラム１０７は追加プログラム情報１３１も実行する。プログラムがＪＡＶＡ（登録商標）によって提供される場合、プログラムの実行自体はＪＡＶＡ（登録商標）仮想マシンを使用することによって実現することができる。
【０１１６】
インストール部１０４は、可搬媒体１２０のプログラム１２１とパーミッション情報１２３Ａをインストールする。つまり、可搬媒体１２０の記憶媒体ＩＤと、プログラム１２１とそのプログラムＩＤ、および第1のパーミッション情報１２３Ａとを読み込み、プログラム蓄積部１０１に複製し、後述の拡張インストール情報テーブル１１７のエントリにに複製したプログラムのファイル名等を記載する。
【０１１７】
また、インストール部１０４は、プログラム１２１に関連付けられた、機器１３０の追加プログラム情報１３１の存在が確認されれば、第２のパーミッション情報１３３Ｂを含む追加プログラム情報１３１をインストールする。つまり、機器１３０を識別するための情報である機器ＩＤと、追加プログラム情報１３１と、その追加プログラム情報ＩＤ、およびプログラム１２１に与えられる第２のパーミッション情報１３３Ｂとを読み込み、プログラム蓄積部１０１に複製し、後述の拡張インストール情報テーブル１１７のエントリに複製した追加プログラム情報の取得元の機器ＩＤ等をプログラム１２１のファイル名等に関連付けて記載する。
【０１１８】
読込部１０５は、可搬媒体１２０の記憶媒体ＩＤと、プログラム１２１とそのプログラムＩＤ、および第１のパーミッション情報１２３Ａとを読み込み、選択部１０６に伝達する。
また、読込部１０５は、プログラム蓄積部１０１を参照し、プログラム１２１に関連付けられた追加プログラム情報１３１が存在し、第２のパーミッション情報１０３Ｂが記録されているかどうかを確認する。記録されていれば、第２のパーミッション情報を受け取り、選択部１０６に伝達する。
【０１１９】
選択部１０６は、以下の２つに関して、機器のユーザに問い合わせを行ない、いずれかを選択する。
（選択１）プログラム蓄積部１０１にインストールされたプログラム１０２を実行するか、または可搬媒体１２０に記録されたプログラム１２１を実行するか。
（選択２）追加プログラム情報１１６を使用して実行を行なうか否か。
【０１２０】
選択部１０６は、問い合わせのとき、不図示の表示装置と、キーボードまたはマウス（不図示）とを使用する。
なお、この選択部１０６は、明示的にユーザに問い合わせを行なわない実施形態になっていてもよい。機器１００には、デフォルトでどちらを選択するかが予め定義されていてもよい。いずれの選択を選ぶかユーザに問い合わせる処理を省略して、どちらを選択するかを切り替える別の手段を備える実施形態であってもよい。
【０１２１】
ユーザへの問い合わせを行なわずに選択の切り替えを行う手段の実現例としては、例えば、プログラム実行部１０７で実行されるプログラムに切り替えを行わせるという方法がある。すなわち、選択部１０６は、選択の切り替えを行うための、プログラムから呼び出すことのできるＡＰＩ（アプリケーション・プログラミング・インタフェース）として実現される、という実施形態が考えられる。
【０１２２】
まず（選択１）に関して、前者が選択された場合の動作について述べる。この場合、プログラム蓄積部１０１にインストールされたプログラム１０２を、選択部１０６がプログラム実行部１０７の主メモリ（不図示）に書き込む。同時に、選択部１０６は、後述の拡張インストール情報テーブル１１７から、当該プログラムのプログラムＩＤを読み出し、それらを（選択２）の選択結果の情報とともに、パーミッション設定部１０８に通知する。
【０１２３】
このとき、（選択２）によって、追加プログラム情報１１６を使用して実行を行なうことが指定されていた場合、選択部１０６は追加プログラム情報１１６もまたプログラム実行部１０７の主メモリ（不図示）に書き込む。先の追加プログラム情報１３１の説明で述べた通り、プログラム１０２は、必ずしも全ての情報が主メモリ（不図示）に書き込まれる必要はなく、プログラム実行部１０７で必要であるとされた部分が選択的に書き込まれればよい。
【０１２４】
（選択２）によって、追加プログラム情報１１６を使用して実行を行なうことが指定されていない場合は、選択部１０６は追加プログラム情報１１６をプログラム実行部１０７に書き込むことはしない。
次に（選択１）に関して、後者が選択された場合の動作について述べる。この場合、選択部１０６は、読込部１０５に可搬媒体１２０からの読込を指示する。そして、可搬媒体１２０に記録されたプログラム１２１を読込部１０５から受け取り、プログラム実行部１０７の主メモリ（不図示）に書き込む。同時に、選択部１０６はプログラム１２１のプログラムＩＤを読み出し、それらを（選択２）の選択結果の情報とともに、パーミッション設定部１０８に通知する。
【０１２５】
このとき、（選択２）によって、追加プログラム情報１１６を使用して実行を行なうことが指定されていた場合、選択部１０６は追加プログラム情報１１６もまたプログラム実行部１０７の主メモリ（不図示）に書き込む。先の追加プログラム情報１３１の説明で述べた通り、プログラム１２１は、必ずしも全ての情報が主メモリ（不図示）に書き込まれる必要はなく、プログラム実行部１０７で必要であるとされた部分が選択的に書き込まれればよい。
【０１２６】
（選択２）によって、追加プログラム情報１１６を使用して実行を行なうことが指定されていない場合は、選択部１０６は追加プログラム情報１１６をプログラム実行部１０７に書き込むことはしない。
プログラム実行部１０７は、プログラムに付加されたパーミッション情報を解析し、プログラムの実行を適切に制御（コントロール）する。このための仕組みとして、ＪＡＶＡ（登録商標）仮想マシンには、セキュリティマネージャとアクセスコントローラという機構が用意されている。
【０１２７】
ＪＡＶＡ（登録商標）仮想マシンは、ＪＡＶＡ（登録商標）プログラムに付随したパーミッション情報を解析し、セキュアローダという仕組みを用いてプログラムを仮想マシンにロードする。この手続きをとることで、セキュアマネージャとアクセスコントローラは、プログラムを実行させる際の挙動がパーミッション情報に示された許可範囲を守るように、プログラムの実行を適切にコントロールする。この仕組みの詳細に関しては非特許文献１に示されている。
【０１２８】
パーミッション設定部１０８は、ＪＡＶＡ（登録商標）仮想マシンにて実現され、プログラム実行部１０７により実行されるプログラムのパーミッションの設定を行う。パーミッション設定部１０８は、実行されるプログラムのプログラムＩＤと、上記選択部１０６で行なわれた（選択２）の選択結果の情報とを選択部１０６から受けとる。
パーミッション設定部１０８は、（選択２）にて、追加プログラム情報１１６を使用して実行が行なわれると選択された場合には、追加プログラム情報１１６に含まれる第２のパーミッション情報の設定を行なう。そうではない場合、すなわち（選択２）にて、追加プログラム情報１１６を使用して実行が行なわれないと選択された場合には、実行されるプログラムに付加された第1のパーミッション情報の設定を行なう。
【０１２９】
機器リソース１１０は、プログラム実行部１０７がプログラムを実行することでアクセスが可能な、機器１００が有する各種のデバイスの機能、機器１００に格納されたデータへのアクセスの機能等として実現される。プログラム実行部１０７がＪＡＶＡ（登録商標）仮想マシンにて実現される場合、機器リソース１１０へのアクセスは、ＪＡＶＡ（登録商標）プログラムから呼び出される各種のＪＡＶＡ（登録商標）ライブラリを備えることによって実現できる。
【０１３０】
機器リソース１１０には、通信機能１１１、入出力機能１１２、ストレージアクセス機能１１３があるが、もちろん他のものであっても良い。
なお、プログラム蓄積部１０１に蓄積されるパーミッション情報は、セキュリティ上の観点から、本発明の装置以外の手段によって盗難や改変がされないような、耐タンパ性を保持していることが望ましい。
【０１３１】
次に、本実施の形態における動作について説明する。
図１２は、プログラムのインストールの処理の流れを示す図である。
プログラムのインストールは、可搬媒体１２０が機器１０１に挿入され、ユーザからインストールの指示があったとき、インストール部１０４によって実行される。例えば機器１００を使用するユーザに、プログラムを機器１００にインストールするか否かの問い合わせを行ない、その回答結果を得ることによって実現できる。もしくは、ユーザに問いあわせを行なう以外の実現方法としては、プログラム蓄積部１０１が機器内の長期記憶装置の空き容量の情報を保持しており、プログラムを蓄積可能なだけの容量を保持していれば、自動的に複製の処理を行なうことにする、などの実現形態をとっても良い。
【０１３２】
インストール部１０４は、機器１００に挿入された可搬媒体１２０に記録されたプログラム１２１を、プログラム蓄積部１０１へ複製する（Ｓ１２０１）。
プログラム蓄積部１０１は、機器の持つ長期記憶装置の使用可能な容量の情報を有している。例えば、長期記憶装置の空き容量が不足しているなど、複製処理の遂行に問題が発生した場合には、インストール不可として終了する。
【０１３３】
なお、可搬媒体１２０の記録が書き換え可能な場合には、プログラムの複製処理を行なうと同時に可搬媒体１２０から元のプログラムの記録を消去する（プログラムを移動する）ようにしてもよい。
Ｓ１２０２では、拡張インストール情報テーブル１１７を参照し、プログラム１２１に対応するエントリが既に存在しているかどうかを確認する。ここで、既にエントリが存在している場合というのは、すなわちプログラム１２１に関連付けられた追加プログラム情報が先にインストールされている状態のことを指している。
【０１３４】
Ｓ１２０２でエントリが存在していないと確認された場合は、Ｓ１２０３の処理を行なう。Ｓ１２０３は、複製されたプログラムに関する管理情報であるインストール情報を新たに作成し、エントリとして追加する。ここで作成されるインストール情報は、プログラムのファイル名、当該プログラムの第１のパーミッション情報、プログラムＩＤ、可搬媒体ＩＤ（本実施の形態では任意）等である。それぞれの情報の詳細については拡張インストール情報テーブル１１７の説明にて後述する。
【０１３５】
Ｓ１２０２でエントリが既に存在すると確認された場合には、Ｓ１２０４の処理を行なう。Ｓ１２０４は、複製されたプログラムに関する管理情報であるインストール情報を、既に存在する対応するエントリに追記する。
図１３は、追加プログラム情報のインストールの処理の流れを示す図である。
追加プログラム情報のインストールは、機器１００と機器１３０が接続され、ユーザからインストールの指示があったとき、インストール部１０４によって実行される。例えば機器１００を使用するユーザに、追加プログラム情報を機器１００にインストールするか否かの問い合わせを行ない、その回答結果を得ることによって実現できる。もしくは、ユーザに問いあわせを行う以外の実現方法としては、インストール部１０４がプログラム蓄積部１０１の長期記憶装置の空き容量の情報を保持しており、プログラムを蓄積可能なだけの容量を保持していれば、自動的に複製の処理を行なうことにする、などの実現形態をとっても良い。
【０１３６】
インストール部１０４は、機器１００と接続された機器１３０に記録された追加プログラム情報１３１を、プログラム蓄積部１０１へ複製する（Ｓ１３０１）。
インストール部１０４は、機器の持つ長期記憶装置の使用可能な容量の情報を保持している。例えば、長期記憶装置の空き容量が不足しているなど、複製処理の遂行に問題が発生した場合には、インストール不可として終了する。
【０１３７】
Ｓ１３０２では、拡張インストール情報テーブル１１７を参照し、追加プログラム情報１３１に関連付けられたプログラム１２１に対応するエントリが既に存在しているかどうかを確認する。ここで、既にエントリが存在している場合というのは、すなわちプログラム１２１が先にインストールされている状態のことを指している。
Ｓ１３０２でエントリが存在していないと確認された場合は、Ｓ１３０３の処理を行なう。Ｓ１３０３は、追加プログラム情報に関する管理情報であるインストール情報を新たに作成し、エントリとして追加する。ここで作成されるインストール情報は、追加プログラム情報、当該プログラムの第２のパーミッション情報、追加プログラム情報ＩＤ、機器ＩＤ等である。それぞれの情報の詳細については拡張インストール情報テーブル１１７の説明にて後述する。
【０１３８】
Ｓ１３０２でエントリが既に存在すると確認された場合には、Ｓ１３０４の処理を行なう。Ｓ１３０４は、追加プログラム情報に関する管理情報であるインストール情報を、既に存在する対応するエントリに追記する。
拡張インストール情報テーブル１１７の一例を図１１に示す。
拡張インストール情報テーブル１１７には、プログラム１１７１、第1のパーミッション情報１１７２、第2のパーミッション情報１１７３、プログラムＩＤ１１７４、可搬媒体ＩＤ１１７５、追加プログラム情報１１７６、追加プログラム情報ＩＤ１１７７、機器ＩＤ１１７８の各項目欄が設けられている。
【０１３９】
プログラム欄１１７１のエントリには、対象となるプログラムを特定するための情報が記載される。例えば、プログラム蓄積部１０１内のファイルシステムにおけるファイル名が記載される。
第1のパーミッション情報と第２のパーミッション情報の各項目欄のエントリには、プログラムに対応したパーミッション情報を特定するための情報が記載される。例えば、プログラム蓄積部１０１内のファイルシステムにおけるパーミッション情報のファイル名が記載される。
【０１４０】
例えば、第1のパーミッション情報１１７２のパーミッションファイル“prog１Ａ.prf“は、”ｄｉｓｋｏｎｌｙ”という識別情報を付加されており、追加プログラム情報１１６を使用せずにプログラムを実行する場合に使用される。また、例えば、第２のパーミッション情報１１７３のパーミッションファイル“prog１Ｂ.prf“は、”ａｄｄｉｔｉｏｎ”という識別情報を付加されており、追加プログラム情報１１６を使用してプログラムを実行する場合に使用される。
【０１４１】
プログラムＩＤ欄１１７４のエントリには、可搬媒体１２０上でプログラム１２１を識別するための識別情報が記録される。このプログラムＩＤの情報は、可搬媒体１２０からプログラム蓄積部１０１にプログラムがインストールされる際に記録される場合と、追加プログラム情報１３１が関連付けられたプログラムの情報として保持していて、追加プログラム情報１３１がプログラム蓄積部１０１にインストールされる際に記録される場合とがある。
【０１４２】
可搬媒体ＩＤ欄１１７５のエントリには、複製元となった可搬媒体１２０を識別するための識別情報が記録される。例えば可搬媒体１２０が個々に有するシリアルナンバーがここに記録される。可搬媒体ＩＤ欄は、本実施の形態においては存在していなくともよい。
追加プログラム情報欄１１７６のエントリには、対象となる追加プログラム情報を特定するための情報が記載される。例えば、プログラム蓄積部１０１のファイルシステムにおけるファイル名が記載される。
【０１４３】
追加プログラム情報ＩＤ欄１１７７のエントリには、追加プログラム情報を識別するための情報が記録される。追加プログラム情報ＩＤ欄は、実施の形態によっては存在していなくともよい。
機器ＩＤ欄１１７８のエントリには、複製元となった機器１３０を識別するための識別情報が記録される。例えば機器１３０が個々に有するシリアルナンバー、ＩＰアドレスやＵＲＬなど、データ通信において機器を特定するための位置情報などが識別情報として使用できる。機器ＩＤ欄は、実施の形態によっては存在していなくともよい。
【０１４４】
次に、プログラムの起動の動作について、図１４を参照して述べる。
選択部１０６は、追加プログラム情報を使用してプログラムを起動するか否かをユーザに対して問い合わせを行なう（Ｓ１４０１）。また、プログラム蓄積部１０１にインストールされたプログラムまたは可搬媒体１２０に記録されたプログラムのいずれのプログラムを実行するかをユーザに対して問い合わせを行なう（Ｓ１４０５）。これらの結果を用いて、プログラムの起動の処理は行なわれる。
【０１４５】
パーミッション設定部１０８は、Ｓ１４０１で、追加プログラム情報を使用してプログラムを起動すると選択された場合、プログラムを実行させる際のパーミッション情報として、第２のパーミッション情報を設定する（Ｓ１４０２）。さらに、選択部１０６は、プログラム蓄積部の追加プログラム情報を読み出し、プログラム実行部の主メモリに書き込む。
【０１４６】
ここで、追加プログラム情報１１６を使用して、機能の追加・更新が行なわれたプログラム１２１またはプログラム１０２を起動するための実現形態について記載する。
プログラム実行部１０７がＪＡＶＡ（登録商標）仮想マシンにて実現されている場合、追加プログラム情報１１６に相当するＪＡＲ形式のファイルと、プログラム１２１またはプログラム１０２に相当するＪＡＲ形式のファイルとが、ＪＡＶＡ（登録商標）仮想マシンに書き込まれることによって、機能の追加・更新が行なわれたプログラムを動作させることができる。
【０１４７】
追加プログラム情報１１６が別のプログラムを含んでおり、その別のプログラムが、プログラム１２１またはプログラム１０２の一部または全てに置き換えられる場合には、後に発生する、プログラム１２１またはプログラム１０２の主メモリへの書き込み（Ｓ１４０６又はＳ１４０７）において、これら全ての情報を書き込む必要はなく、プログラム１２１またはプログラム１０２の持つ一部の情報を書き込むだけで充分である場合もある。
【０１４８】
この、置き換えられるファイルの検出を行なうために、選択部１０６は、ファイル名を比較する機能と、ファイルのタイムスタンプを検出する機能を備える。
選択部１０６は、追加プログラム情報１１６のＪＡＲファイル中に含まれる全てのファイル名と、プログラム１２１（プログラム１０２）のＪＡＲファイル中に含まれる全てのファイル名の比較を行ない、同名のファイルを検出した場合には、それらのファイルのタイムスタンプの比較を行なう。その結果、より新しいファイルと思われるものだけをプログラム実行部１０７の主メモリに書き込むことにし、古いと判断されたファイルは主メモリに書き込まない、という実装にすることができる。
【０１４９】
また、プログラムと追加プログラム情報の主メモリへの書き込みのための正しい順序関係が規定されている場合がある。そのような場合のために、Ｓ１４０３はＳ１４０６の後に行なわれる実現形態になっていても良い。
Ｓ１４０５では、プログラム蓄積部１０１にインストールされたプログラム１２１または可搬媒体１２０に記録されたプログラム１０２のいずれのプログラムを実行するかをユーザに問い合わせる。
【０１５０】
前者が選択された場合には、プログラム蓄積部１０１にインストールされたプログラム１２１の一部もしくは全ての情報がプログラム実行部１０７の主メモリに書き込まれ、プログラムが起動される（Ｓ１４０６）。
後者が選択された場合には、可搬媒体１２０に記録されたプログラム１０２の一部もしくは全ての情報がプログラム実行部１０７の主メモリに書き込まれ、プログラムが起動される（Ｓ１４０７）。
【０１５１】
以上がプログラム起動の際に行なわれる処理の流れである。
（実施の形態４）
実施の形態４の構成は、実施の形態３と同様である。
本実施の形態のプログラムを説明する。
プログラムは、例えばユーザの入力を受け付けて遊ぶことができるゲーム等のアプリケーションプログラムといったものがあるがこれに限定されるものではない。可搬媒体１２０に記録されたプログラムは、第１のパーミッション情報１２３Ａのみを保持する。このパーミッション情報は、以下の２つの機能項目が設定されている。
【０１５２】
（パーミッション項目１）機器が有する長期記憶装置（ストレージ）へのデータ（例えばゲームを行ったときの得点情報に関するデータなど）へのリード許可およびライト許可である。
（パーミッション項目２）ゲームアプリケーションの作成者が運営するサーバのＵＲＬへのネットワークアクセス機能である。
【０１５３】
第１のパーミッション情報は、（パーミッション項目１）の機能の使用を禁止し、（パーミッション項目２）の使用を許可しているものとする。本プログラムはプログラム実行環境を備えた、光ディスク再生機器上で動作させることができる。ここでは、プログラムは光ディスク再生機器のプログラム蓄積部１０１にインストールされず、可搬媒体から直接プログラムの起動がされるものとする。
【０１５４】
一方、光ディスク再生機器と接続可能な、ゲームアプリケーションの作成者が設置するサーバからは、追加プログラム情報が提供される。インストール部１０４は、サーバから追加プログラム情報を取得し、プログラム蓄積部１０１にインストールする。
追加プログラム情報には、上記プログラムの更新版、および、第２のパーミッション情報が含まれるものとする。
【０１５５】
また、第２のパーミッション情報では、上記２つのパーミッション項目の両方について、使用が許可されているものとする。
追加プログラム情報を使用して起動することが選択されなかった場合には、可搬媒体に記録されたプログラムのみがプログラム実行部に書き込まれる。この場合、プログラムの機能には第１のパーミッション情報に定められた範囲で許可が与えられる。すなわち、（パーミッション項目１）で定められた、機器が保持する長期記憶装置（ストレージ）へのデータへのリード・ライトの動作を行うことができない。この場合、可搬媒体に記録されたプログラムとデータのみが用いられて、ネットワークから何ら情報を得ていないのと同じ状態でプログラムを動作させていることになる。
【０１５６】
追加プログラム情報を使用して起動することが選択された場合には、プログラム蓄積部１０１にインストールされた追加プログラム情報、および、可搬媒体に記録されたプログラムがプログラム実行部に書き込まれる。
追加プログラム情報には、上記プログラムの更新版が含まれるため、ここでプログラムの更新版と、元の可搬媒体に記録されたプログラムとが、同一のファイルや情報を有している場合が考えられる。ここでは両者の比較を行い、選択的に書き込みを行う処理にしても良い。すなわち追加プログラム情報と可搬媒体に記録されたプログラムとで、両方の全てのデータをプログラム実行部に書き込ませる必要はなく、更新版のプログラムが有するファイルと重複しているファイルなど、プログラムの実行に不要であると判断される部分は、部分的に書き込みを行わないようにしても良い。
【０１５７】
この場合、プログラムの機能には第２のパーミッション情報に定められた範囲で許可が与えられる。すなわち、（パーミッション項目１）で定められた、機器が有する長期記憶装置（ストレージ）へのデータへのリード・ライトの動作を行うことができるようになる。この場合、記録媒体に記録されたプログラムと、ネットワークを通じてサーバから提供された追加プログラム情報のデータが用いられて、新たなプログラムを新たなパーミッション情報の元で動作させることができるようになる。
【産業上の利用可能性】
【０１５８】
本発明は、プログラムの動作を適切にコントロールすることにより、セキュリティにおけるアクセス保護・アクセス管理技術として利用することが可能である。プログラム（コンテンツ）の作成者が、ユーザのプログラムの取得経路に応じて適切な範囲のサービスを提供する著作権管理、著作物配信管理技術として応用することができる。
【図面の簡単な説明】
【０１５９】
【図１】本発明に係るプログラム実行機器の実施の形態１の構成図である。
【図２】上記実施の形態の変形例の構成図である。
【図３】上記実施の形態のパーミッション情報の一例を示す図である。
【図４】上記実施の形態のパーミッション情報の一例を示す図である。
【図５】上記実施の形態のプログラムのインストール処理、および実行までの処理の流れを示す図である。
【図６】上記実施の形態のプログラム蓄積部のパーミッション変更ポリシーの一例を示す図である。
【図７】上記実施の形態のプログラム蓄積部のインストール情報テーブルの一例を示す図である。
【図８】上記実施の形態のプログラム蓄積部に記録されたプログラムが起動される場合の処理の流れを示す図である。
【図９】上記実施の形態の可搬性記憶媒体の検出（挿入・排出）の処理の流れを示す図である。
【図１０】本発明に係るプログラム実行機器の実施の形態３の構成図である。
【図１１】上記実施の形態のプログラム蓄積部の拡張インストール情報テーブルの一例を示す図である。
【図１２】上記実施の形態のプログラムのインストール処理の流れを示す図である。
【図１３】上記実施の形態の追加プログラム情報のインストール処理の流れを示す図である。
【図１４】上記実施の形態のプログラムの実行までの処理の流れを示す図である。
【符号の説明】
【０１６０】
１００  プログラム実行機器
１０１  プログラム蓄積部
１０２  プログラム（プログラム蓄積部内）
１０３Ａ 第1のパーミッション情報（プログラム蓄積部内）
１０３Ｂ 第２のパーミッション情報（プログラム蓄積部内）
１０４  インストール部
１０５  読込部
１０６  選択部
１０７  プログラム実行部
１０８  パーミッション設定部
１０９  検出部
１１０  機器リソース
１１４  インストール情報テーブル
１１５  パーミッション変換部
１１７  拡張インストール情報テーブル
１２０  可搬媒体
１２１  プログラム（可搬媒体上）
１２３  パーミッション情報（可搬媒体上）
１２３Ａ 第１のパーミッション情報（可搬媒体上）
１２３Ｂ 第２のパーミッション情報（可搬媒体上）
１３０  追加プログラム情報を供給する機器
１３１  追加プログラム情報
１３３  パーミッション情報（追加プログラム情報内）
１３３Ｂ 第２のパーミッション情報（追加プログラム情報内）
３０１  パーミッション情報テーブル
４０１  ＸＭＬ形式パーミッション情報
【図１】
0004682139.tif 000002
【図２】
0004682139.tif 000003
【図３】
0004682139.tif 000004
【図４】
0004682139.tif 000005
【図５】
0004682139.tif 000006
【図６】
0004682139.tif 000007
【図７】
0004682139.tif 000008
【図８】
0004682139.tif 000009
【図９】
0004682139.tif 000010
【図１０】
0004682139.tif 000011
【図１１】
0004682139.tif 000012
【図１２】
0004682139.tif 000013
【図１３】
0004682139.tif 000014
【図１４】
0004682139.tif 000015