(57)【要約】【課題】第１のミドルウェア上で動作するアプリケーションと第２のミドルウェア上で動作するアプリケーションとに対する課金等に関する管理を、ユーザが共通の操作で行うことを可能にする。【解決手段】第１のミドルウェア上で動作する第１のアプリケーション（ＡｊａｘＣＥアプリケーション１３０８）と、第２のミドルウェア上で動作する、課金等の管理を行う第２のアプリケーション（アプリケーション制御部１３０２ｃ）とを備える端末装置５００において、第２のアプリケーションが、第１のアプリケーションについての実行指示を受け付け（Ｓ２７０１）、第１のアプリケーションについての課金情報等を取得して第１のアプリケーションの実行可否を判定し（Ｓ２７０２〜Ｓ２７０５）、実行可能と判定した場合に、第２のミドルウェアおよび第１のミドルウェアを通じて第１のアプリケーションを起動する（Ｓ２７０６〜Ｓ２７０８）。【選択図】図２９
2013149171.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステムと、前記オペレーティングシステム上で動作する第１のミドルウェアおよび第２のミドルウェアと、前記第１のミドルウェア上で動作する第１のアプリケーションプログラムと、前記第２のミドルウェア上で動作する、課金またはペアレンタルロックの管理を行う第２のアプリケーションプログラムとを備える装置におけるプログラム実行方法であって、
前記第２のアプリケーションプログラムが、前記第１のアプリケーションプログラムについての実行指示を受け付ける受け付けステップと、
前記第２のアプリケーションプログラムが、前記第１のアプリケーションプログラムが購入されているか否かに関する課金情報、または、前記第１のアプリケーションプログラムについてのペアレンタルロックの有無を示すペアレンタルロック情報を取得する取得ステップと、
前記第２のアプリケーションプログラムが、前記課金情報または前記ペアレンタルロック情報に基づいて、前記第１のアプリケーションプログラムの実行可否を判定する判定ステップと、
前記第１のアプリケーションプログラムが実行可能と判定された場合に、前記第２のアプリケーションプログラムが、前記第２のミドルウェアおよび前記第１のミドルウェアを通じて、前記第１のアプリケーションプログラムを起動する起動ステップと
を含むプログラム実行方法。
【請求項２】
さらに、前記判定ステップで前記第１のアプリケーションプログラムが未購入であるために実行不可と判定された場合、前記第２のアプリケーションプログラムが、前記第１のアプリケーションプログラムの購入処理をおこなう購入ステップを含む
請求項１記載のプログラム実行方法。
【請求項３】
前記取得ステップでは、前記第１のアプリケーションプログラムおよび前記第２のアプリケーションプログラムを含む、前記第１のミドルウェアおよび前記第２のミドルウェア上で動作するアプリケーションプログラムの属性を予め保持しているデータベースから、前記課金情報または前記ペアレンタルロック情報を取得する
請求項１または２記載のプログラム実行方法。
【請求項４】
前記取得ステップでは、前記第２のアプリケーションプログラムが、前記第１のアプリケーションプログラムに対する問い合わせを行い、前記第１のアプリケーションプログラムから回答を得ることで、前記課金情報または前記ペアレンタルロック情報を取得する
請求項１または２記載のプログラム実行方法。
【請求項５】
前記起動ステップでは、
前記第２のアプリケーションプログラムが、実行可能と判定された前記第１のアプリケーションプログラムを特定する情報を前記第２のミドルウェアに通知し、
前記第２のミドルウェアが、前記第２のアプリケーションプログラムから通知された前記情報に基づいて、前記第１のアプリケーションプログラムが動作するミドルウェアとして前記第１のミドルウェアを特定し、特定した前記第１のミドルウェアに対して前記第１のアプリケーションプログラムの起動を要求する
請求項１〜４のいずれか１項に記載のプログラム実行方法。
【請求項６】
プロセッサを備えるプログラム実行装置であって、
前記プロセッサによって実行されるプログラムとして、
オペレーティングシステムと、
前記オペレーティングシステム上で動作する第１のミドルウェアと、
前記オペレーティングシステム上で動作する第２のミドルウェアと、
前記第１のミドルウェア上で動作する第１のアプリケーションプログラムと、
前記第２のミドルウェア上で動作する、課金またはペアレンタルロックの管理を行う第２のアプリケーションプログラムとを備え、
前記第２のアプリケーションプログラムは、
少なくとも前記第１のミドルウェア上で動作するアプリケーションプログラムを表示するとともに、前記第１のアプリケーションプログラムを実行する旨の指示を受け付けるアプリケーションリスト表示部と、
前記第１のアプリケーションプログラムが購入されているか否かに関する課金情報、または、前記第１のアプリケーションプログラムについてのペアレンタルロックの有無を示すペアレンタルロック情報を取得し、取得した前記課金情報または前記ペアレンタルロック情報に基づいて、前記第１のアプリケーションプログラムの実行可否を判定するアプリケーション起動判定部と、
前記第１のアプリケーションプログラムが実行可能と判定された場合に、前記第２のミドルウェアおよび前記第１のミドルウェアを通じて、前記第１のアプリケーションプログラムを起動するアプリケーション起動部とを備える
プログラム実行装置。
【請求項７】
さらに、前記アプリケーション起動判定部で前記第１のアプリケーションプログラムが未購入であるために実行不可と判定された場合、前記第１のアプリケーションプログラムの購入処理をおこなう購入処理部を備える
請求項６記載のプログラム実行装置。
【請求項８】
請求項６記載のプログラム実行装置が備える第２のアプリケーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションプログラムを実行するプログラム実行方法および装置に関する。特に、セットトップボックス等の装置における異なるミドルウェア間でのアプリケーションプログラムの実行を制御する技術に関する。
【背景技術】
【０００２】
北米のＣａｂｌｅ  ＴＶ向けセットトップボックスでは、Ｈ／Ｅ（ｈｅａｄｅｎｄ）から送出されたＭＰＥＧ２ストリームの再生、ＥＰＧ（Ｅｌｅｃｔｒｉｃ  Ｐｒｏｇｒａｍｉｎｇ  Ｇｕｉｄｅ）に加え、ＶＯＤ（Ｖｉｄｅｏ  Ｏｎ  Ｄｅｍａｎｄ）、ＰＰＶ（Ｐａｙ  Ｐｅｒ  Ｖｉｅｗ）等、様々なサービスを実現している。また、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）を持つセットトップボックスでは、ＴＳＢ（Ｔｉｍｅ  Ｓｈｉｆｔ  Ｂｕｆｆｅｒ、追っかけ再生機能）、番組録画などのサービスも実現している。セットトップボックスに搭載されているハードウェアを利用し、これらのサービスを実現するアプリケーションプログラム（以下、単に「アプリケーション」ともいう。）を記述するミドルウェアの規格としてＯＣＡＰ（ＯｐｅｎＣａｂｌｅ  Ａｐｐｌｉｃａｔｉｏｎ  Ｐｌａｔｆｏｒｍ）規格（非特許文献１）の採用が進んでいる。ＯＣＡＰミドルウェア上で動作するアプリケーション（ＯＣＡＰアプリケーション）は、Ｊａｖａ（登録商標）で記述され、ＯＣＡＰ規格準拠のセットトップボックスであれば、どのセットトップボックス上でも動作することができることを特徴とする。なお、「ミドルウェア」とは、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）上で動作し、アプリケーションプログラムの起動、停止および監視等の制御を行うソフトウェア（アプリケーションのプラットフォーム、あるいは、実行エンジン）である。
【０００３】
ＯＣＡＰ規格では、チューナ、Ｆｌａｓｈメモリ等のハードウェアの制御、Ｈ／Ｅとの通信、ＡＶ再生、ＴＳＢ、録画、およびＧｒａｐｈｉｃｓの表示などを可能にする。Ｇｒａｐｈｉｃｓ表示の機能を用いれば、ＥＰＧだけでなく、ゲームアプリケーションなども実現可能である。
【０００４】
また、ＯＣＡＰ規格では複数のアプリケーションをＯＣＡＰミドルウェア上で動作させることが可能である。また、アプリケーションが、自分自身、あるいは他のアプリケーションを制御することも可能にしている。一般的な運用としては、ＯＣＡＰミドルウェア上で、複数のアプリケーションが同時に動作し、そのうちの１つにモニタアプリケーションと呼ばれるＣａｂｌｅサービス事業者が作成したアプリケーションが動作している。このアプリケーションが他のアプリケーション（例えばＥＰＧを実現するアプリケーション）のためのハードウェアのリソース調停、および、他のアプリケーションの制御を行っている。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】ＯｐｅｎＣａｂｌｅ  Ａｐｐｌｉｃａｔｉｏｎ  Ｐｌａｔｆｏｒｍ  Ｓｐｅｃｉｆｉｃａｔｉｏｎｓ（ＯＣ−ＳＰ−ＯＣＡＰ１．１．３−１００６０３．ｐｄｆ）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＯＣＡＰ規格を用いて、ゲームアプリケーションなど、様々なアプリケーションを作成することが可能である。しかしながら、一般開発者が作成可能な環境が乏しいため、ＥＰＧ、ＶＯＤ、ＰＰＶ以外のアプリケーションはあまり開発されていない。
【０００７】
一方、Ａｎｄｒｏｉｄ（登録商標）のミドルウェアＡｐｐｌｉｃａｔｉｏｎ  Ｅｎｇｉｎｅ上で動作するアプリケーションなどは、多くの開発者が開発に従事し、日々、新しいアプリが作成されているという状況である。
【０００８】
また、ＹｏｕＴｕｂｅ（登録商標）、各放送事業者による独自のＬｉｖｅ  Ｓｔｒｅａｍｉｎｇを受信する、あるいは他の機器との連携するアプリケーションを実現するＡｊａｘＣＥなどのミドルウェア（実行エンジン）とその上で動作するアプリケーションも存在する。
【０００９】
近年、Ｃａｂｌｅサービス事業者としては、これら、ＯＣＡＰ以外のサービスを取り込み、よりサービス契約者に魅力的なサービスを実現したいという要求がある。
【００１０】
そのためには、ＯＣＡＰミドルウェア上で動作するＯＣＡＰアプリケーションからＯＣＡＰミドルウェア以外のミドルウェア（実行エンジン）で動作するアプリケーションを制御する必要があるが、制御するために必要な情報、具体的には、課金情報、レーティング情報などを取得できず、ＯＣＡＰアプリケーションから、適切に起動および停止等のライフサイクルに関する制御ができなかった。
【００１１】
また、ＯＣＡＰミドルウェア上で動作するＯＣＡＰアプリケーションは独自の課金メカニズムを保持しており、また、独自のペアレンタルロックのメカニズムを有している。これらのＯＣＡＰミドルウェア上で実現されたメカニズムについては、他のミドルウェアからは現状では利用できず、独自に構築する必要があり、Ｃａｂｌｅサービス契約者にとっては、支払方法の異なる複数の課金メカニズム、あるいは、様々なペアレンタルロック基準が存在することになり、非常に煩雑である。
【００１２】
そこで本発明は、第１のミドルウェア上で動作するアプリケーションと第２のミドルウェア上で動作するアプリケーションとに対するペアレンタルロックまたは課金に関する管理を、ユーザが共通の操作で行うことを可能にするプログラム実行方法およびその装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するために、本発明に係るプログラム実行方法の一形態は、オペレーティングシステムと、前記オペレーティングシステム上で動作する第１のミドルウェアおよび第２のミドルウェアと、前記第１のミドルウェア上で動作する第１のアプリケーションプログラムと、前記第２のミドルウェア上で動作する、課金またはペアレンタルロックの管理を行う第２のアプリケーションプログラムとを備える装置におけるプログラム実行方法であって、前記第２のアプリケーションプログラムが、前記第１のアプリケーションプログラムについての実行指示を受け付ける受け付けステップと、前記第２のアプリケーションプログラムが、前記第１のアプリケーションプログラムが購入されているか否かに関する課金情報、または、前記第１のアプリケーションプログラムについてのペアレンタルロックの有無を示すペアレンタルロック情報を取得する取得ステップと、前記第２のアプリケーションプログラムが、前記課金情報または前記ペアレンタルロック情報に基づいて、前記第１のアプリケーションプログラムの実行可否を判定する判定ステップと、前記第１のアプリケーションプログラムが実行可能と判定された場合に、前記第２のアプリケーションプログラムが、前記第２のミドルウェアおよび前記第１のミドルウェアを通じて、前記第１のアプリケーションプログラムを起動する起動ステップとを含む。
【００１４】
これにより、第２のミドルウェア上で動作する第２のアプリケーションプログラムによる管理の下で、第１のミドルウェア上で動作する第１のアプリケーションプログラムに対する実行可否の判断および起動が行われる。よって、異なるミドルウェアのそれぞれの上で動作するアプリケーションプログラムに対する課金またはペアレンタルロックに関する管理は、第２のアプリケーションプログラムによる管理に統一される。その結果、ユーザは、異なるミドルウェア上で動作する複数のアプリケーションプログラムに対して統一された一つの操作（例えば、ＯＣＡＰアプリケーションでの操作）で課金またはペアレンタルロックに関する管理を行うことができる。
【００１５】
ここで、さらに、前記判定ステップで前記第１のアプリケーションプログラムが未購入であるために実行不可と判定された場合、前記第２のアプリケーションプログラムが、前記第１のアプリケーションプログラムの購入処理をおこなう購入ステップを含んでもよい。これにより、第１のアプリケーションプログラムが未購入である場合に、第２のアプリケーションプログラムの管理下で第１のアプリケーションプログラムが購入されるので、ユーザは、異なるミドルウェアのそれぞれの上で動作するアプリケーションプログラムを、統一された一つの操作（例えば、ＯＣＡＰアプリケーションでの操作）で購入することができる。
【００１６】
また、前記取得ステップでは、前記第１のアプリケーションプログラムおよび前記第２のアプリケーションプログラムを含む、前記第１のミドルウェアおよび前記第２のミドルウェア上で動作するアプリケーションプログラムの属性を予め保持しているデータベースから、前記課金情報または前記ペアレンタルロック情報を取得してもよい。これにより、第１のミドルウェアおよび第２のミドルウェア上で動作するアプリケーションプログラムの属性が格納されたデータベースを参照することで、一のアプリケーションプログラムが自分とは異なるミドルウェア上で動作するアプリケーションプログラムの属性を容易に取得することができ、課金またはペアレンタルロックの管理の共通化が容易になる。
【００１７】
また、前記取得ステップでは、前記第２のアプリケーションプログラムが、前記第１のアプリケーションプログラムに対する問い合わせを行い、前記第１のアプリケーションプログラムから回答を得ることで、前記課金情報または前記ペアレンタルロック情報を取得してもよい。これにより、第２のアプリケーションプログラムが、第１のアプリケーションプログラムから、直接、課金情報またはペアレンタルロック情報を取得するので、各アプリケーションプログラムの属性を格納した共通のデータベースを設ける必要がなくなる。
【００１８】
また、前記起動ステップでは、前記第２のアプリケーションプログラムが、実行可能と判定された前記第１のアプリケーションプログラムを特定する情報を前記第２のミドルウェアに通知し、前記第２のミドルウェアが、前記第２のアプリケーションプログラムから通知された前記情報に基づいて、前記第１のアプリケーションプログラムが動作するミドルウェアとして前記第１のミドルウェアを特定し、特定した前記第１のミドルウェアに対して前記第１のアプリケーションプログラムの起動を要求するのが好ましい。これにより、第２のアプリケーションプログラムにより、第２のミドルウェアおよび第１のミドルウェアを通じて、第１のアプリケーションプログラムが確実に起動される。
【００１９】
また、上記目的を達成するために、本発明に係るプログラム実行装置の一形態は、プロセッサを備えるプログラム実行装置であって、前記プロセッサによって実行されるプログラムとして、オペレーティングシステムと、前記オペレーティングシステム上で動作する第１のミドルウェアと、前記オペレーティングシステム上で動作する第２のミドルウェアと、前記第１のミドルウェア上で動作する第１のアプリケーションプログラムと、前記第２のミドルウェア上で動作する、課金またはペアレンタルロックの管理を行う第２のアプリケーションプログラムとを備え、前記第２のアプリケーションプログラムは、少なくとも前記第１のミドルウェア上で動作するアプリケーションプログラムを表示するとともに、前記第１のアプリケーションプログラムを実行する旨の指示を受け付けるアプリケーションリスト表示部と、前記第１のアプリケーションプログラムが購入されているか否かに関する課金情報、または、前記第１のアプリケーションプログラムについてのペアレンタルロックの有無を示すペアレンタルロック情報を取得し、取得した前記課金情報または前記ペアレンタルロック情報に基づいて、前記第１のアプリケーションプログラムの実行可否を判定するアプリケーション起動判定部と、前記第１のアプリケーションプログラムが実行可能と判定された場合に、前記第２のミドルウェアおよび前記第１のミドルウェアを通じて、前記第１のアプリケーションプログラムを起動するアプリケーション起動部とを備える。
【００２０】
これにより、第２のミドルウェア上で動作する第２のアプリケーションプログラムによる管理の下で、第１のミドルウェア上で動作する第１のアプリケーションプログラムに対する実行可否の判断および起動が行われる。よって、異なるミドルウェアのそれぞれの上で動作するアプリケーションプログラムに対する課金またはペアレンタルロックに関する管理は、第２のアプリケーションプログラムによる管理に統一される。その結果、ユーザは、異なるミドルウェア上で動作する複数のアプリケーションプログラムに対して統一された一つの操作（例えば、ＯＣＡＰアプリケーションでの操作）で課金またはペアレンタルロックに関する管理を行うことができる。
【００２１】
ここで、さらに、前記アプリケーション起動判定部で前記第１のアプリケーションプログラムが未購入であるために実行不可と判定された場合、前記第１のアプリケーションプログラムの購入処理をおこなう購入処理部を備えてもよい。これにより、第１のアプリケーションプログラムが未購入である場合に、第２のアプリケーションプログラムの管理下で第１のアプリケーションプログラムが購入されるので、ユーザは、異なるミドルウェアのそれぞれの上で動作するアプリケーションプログラムを、統一された一つの操作（例えば、ＯＣＡＰアプリケーションでの操作）で購入することができる。
【００２２】
なお、本発明は、上記のようなプログラム実行方法およびプログラム実行装置として実現でくるだけでなく、上記第２のプログラムとして実現したり、その第２のプログラムを記録したコンピュータ読み取り可能なＣＤ−ＲＯＭなどの記録媒体として実現したり、そのプログラムを示す情報、データ又は信号として実現したりすることもできる。そして、それらプログラム、情報、データ及び信号は、インターネット等の通信ネットワークを介して配信してもよい。
【発明の効果】
【００２３】
以上のように本発明によれば、第２のアプリケーションから、第２のアプリケーションのプラットフォームとなるミドルウェアとは異なるミドルウェア上で動作する第１のアプリケーションを適切に制御できる。よって、ユーザによるアプリケーションの購入情報、および、ユーザにより設定されたペアレンタルロック情報が一元化され、異なるミドルウェア上で動作する複数のアプリケーションの購入およびペアレンタルロックに関するユーザ操作が共通化され、操作の煩雑さが解消される。
【００２４】
また、特に第１のアプリケーションが未購入であり実行不可と判定された場合、第２のアプリケーションによって第１のアプリケーションの購入処理がおこなわれるので、アプリケーションの購入プロセスの一元化が図られ、アプリケーションの購入に関するユーザ操作の煩雑さが解消される。
【図面の簡単な説明】
【００２５】
【図１】本発明に係るケーブルテレビシステムの構成図である。
【図２】本発明に係るケーブルテレビシステムにおいてヘッドエンドと端末装置間の通信に使用される周波数帯域の使い方の一例を示す図である。
【図３】本発明に係るケーブルテレビシステムにおいてヘッドエンドと端末装置間の通信に使用される周波数帯域（Ｏｕｔ  Ｏｆ  Ｂａｎｄ）の使い方の一例を示す図である。
【図４】本発明に係るケーブルテレビシステムにおいてヘッドエンドと端末装置間の通信に使用される周波数帯域（Ｉｎ−Ｂａｎｄ）の使い方の一例を示す図である。
【図５】本発明に係るケーブルテレビシステムにおける端末装置の構成図である。
【図６】本発明に係るケーブルテレビシステムにおける端末装置の外観の一例を示す図である。
【図７】本発明に係るＣａｂｌｅＣａｒｄのハードウェア構成を示す図である。
【図８】本発明に係るＣａｂｌｅＣａｒｄが保存するプログラム構成を示す図である。
【図９】ＭＰＥＧ規格で定義されているパケットの構成図である。
【図１０】ＭＰＥＧ２トランスポートストリームの一例を示す図である。
【図１１】入力部をフロントパネルで構成した場合の外観の一例を示す図である。
【図１２】本発明に係る表示合成部の構成図である。
【図１３】本発明に係る端末装置が保存するプログラム構成を示す図である。
【図１４】（ａ）は本発明に係るディスプレイの表示の一例を示す図である。（ｂ）は本発明に係るディスプレイの表示の一例を示す図である。
【図１５】本発明に係る２次記憶部が保存する情報の一例を示す図である。
【図１６】本発明に係る１次記憶部が保存する情報の一例を示す図である。
【図１７】ＭＰＥＧ２規格が規定するＰＡＴの内容を表す模式図である。
【図１８】ＭＰＥＧ２規格が規定するＰＭＴの内容を表す模式図である。
【図１９】ＤＶＢ−ＭＨＰ規格が規定するＡＩＴの内容を表す模式図である。
【図２０】ＤＳＭＣＣ方式で送信されるファイルシステムを表す模式図である。
【図２１】ＸＡＩＴの内容を表す模式図である。
【図２２】本発明に係る２次記憶部が保存する情報の一例を示す図である。
【図２３】本発明に係るアプリケーション制御部の構成図である。
【図２４】本発明に係るＥｘｔｅｒｎａｌＡＭのクラス構成の一例を示す図である。
【図２５】本発明に係るアプリケーションのリストを表示するシーケンスを示す図である。
【図２６】本発明に係るアプリケーションリスト表示の一例を示す図である。
【図２７】本発明に係るアプリケーション選択時におけるフィルタリング条件のリスト表示の一例を示す図である。
【図２８】本発明に係るフィルタリング条件の設定画面例を示す図である。
【図２９】本発明に係る外部アプリケーションの起動シーケンスを示す図である。
【図３０】図２９の起動シーケンスを説明するための図である。
【図３１】本発明に係る外部アプリケーションの購入プロセスのシーケンスを示す図である。
【図３２】本発明に係る外部アプリケーションの購入画面の一例を示す図である。
【図３３】本発明に係るペアレンタルロック管理部を含むアプリケーション制御部の構成図である。
【図３４】本発明に係るアプリケーションリスト表示の一例を示す図である
【図３５】本発明に係る外部アプリケーションの起動シーケンスを示す図である。
【発明を実施するための形態】
【００２６】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、以下で説明する実施の形態は、いずれも本発明の好ましい一具体例を示すものである。以下の実施の形態で示される数値、形状、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。本発明は、特許請求の範囲だけによって限定される。よって、以下の実施の形態における構成要素のうち、本発明の最上位概念を示す独立請求項に記載されていない構成要素については、本発明の課題を達成するのに必ずしも必要ではないが、より好ましい形態を構成するものとして説明される。
【００２７】
本発明に係るケーブルテレビシステムの実施の形態を、図面を参照しながら説明する。図１は、ケーブルシステムを構成する装置の関係を表したブロック図である。このケーブルシステムは、ヘッドエンド１０１及び３個の端末装置Ａ１１１、端末装置Ｂ１１２、端末装置Ｃ１１３で構成される。なお、本実施の形態では、１つのヘッドエンドに対して３つの端末装置が結合されているが、任意の数の端末装置をヘッドエンドに結合しても、本発明は実施可能である。
【００２８】
ヘッドエンド１０１は、複数の端末装置に対して映像・音声・データ等の放送信号を送信するとともに、端末装置からのデータ送信を受信する。これを実現するため、ヘッドエンド１０１と端末装置Ａ１１１、端末装置Ｂ１１２および端末装置Ｃ１１３間の伝送に用いられる周波数帯域は、分割して用いられる。
【００２９】
図２は、周波数帯域の分割の一例を示す表である。周波数帯域は、Ｏｕｔ  Ｏｆ  Ｂａｎｄ（略称ＯＯＢ）とＩｎ−Ｂａｎｄの２種類に大別される。５〜１３０ＭＨｚがＯＯＢに割り当てられ、主にヘッドエンド１０１と端末装置Ａ１１１、端末装置Ｂ１１２および端末装置Ｃ１１３間のデータのやり取りに使用される。１３０ＭＨｚ〜８６４ＭＨｚはＩｎ−Ｂａｎｄに割り当てられ、主として、映像・音声を含む放送チャンネルに使用される。ＯＯＢではＱＰＳＫ変調方式が、Ｉｎ−ＢａｎｄではＱＡＭ６４変調方式が使用される。なお、変調方式技術については、本発明に関与が薄い公知技術であるので、詳細な説明は省略する。
【００３０】
図３は、ＯＯＢ周波数帯域の更に詳細な使用の一例を示す図である。７０ＭＨｚ〜７４ＭＨｚはヘッドエンド１０１からのデータ送信に使用され、全ての端末装置Ａ１１１、端末装置Ｂ１１２および端末装置Ｃ１１３が、ヘッドエンド１０１から同じデータを受け取ることになる。一方、１０．０ＭＨｚ〜１０．１ＭＨｚは端末装置Ａ１１１からヘッドエンド１０１へのデータ送信に使用され、１０．１ＭＨｚ〜１０．２ＭＨｚは端末装置Ｂ１１２からヘッドエンド１０１へのデータ送信に使用され、１０．２ＭＨｚ〜１０．３ＭＨｚは端末装置Ｃ１１３からヘッドエンド１０１へのデータ送信に使用される。これにより、各端末装置固有のデータを各端末装置Ａ１１１、端末装置Ｂ１１２および端末装置Ｃ１１３からヘッドエンド１０１に送信することができる。
【００３１】
図４は、Ｉｎ−Ｂａｎｄの周波数帯に対する使用の一例を示す図である。１５０〜１５６ＭＨｚと１５６〜１６２ＭＨｚはそれぞれテレビチャンネル１とテレビチャンネル２に割り当てられ、以降、６ＭＨｚ間隔でテレビチャンネルが割り当てられている。３１０ＭＨｚ以降は、１ＭＨｚ単位でラジオチャンネルに割り当てられている。これらの各チャンネルはアナログ放送として使用してもデジタル放送として使用してもよい。デジタル放送の場合は、ＭＰＥＧ２仕様に基づいたトラスポートパケット形式で伝送され、音声や映像に加え、各種データ放送用データも送信することができる。
【００３２】
ヘッドエンド１０１は、これらの周波数帯域に適切な放送信号を送信するため、ＱＰＳＫ変調部やＱＡＭ変調部等を有する。また、端末装置からのデータを受信するため、ＱＰＳＫ復調部を有する。また、ヘッドエンド１０１は、これら変調部及び復調部に関連する様々な機器を有すると考えられる。しかし、本発明は主として端末装置に関わるので、詳細な説明は省略する。
【００３３】
端末装置Ａ１１１、端末装置Ｂ１１２および端末装置Ｃ１１３は、ヘッドエンド１０１からの放送信号を受信し再生する。また、ヘッドエンド１０１に対して、各端末装置固有のデータを送信する。３つの端末装置Ａ１１１、Ｂ１１２およびＣ１１３は本実施の形態では同じ構成を備える。
【００３４】
図５は、端末装置Ａ１１１、Ｂ１１２およびＣ１１３（ここでは、５００）のハードウェア構成を表すブロック図である。端末装置５００は、ＱＡＭ復調部５０１、ＱＰＳＫ復調部５０２、ＱＰＳＫ変調部５０３、ＴＳデコーダ５０５、オーディオデコーダ５０６、スピーカ５０７、ビデオデコーダ５０８、ディスプレイ５０９、２次記憶部５１０、１次記憶部５１１、ＲＯＭ５１２、入力部５１３、ＣＰＵ（あるいは、プロセッサ）５１４、ＯＳＤ制御部５１５、表示合成部５１６、およびシステム設定部５１７で構成される。また端末装置５００には、ＣａｂｌｅＣａｒｄ５０４が着脱できる。
【００３５】
図６は、端末装置５００の外観の一例である薄型テレビを示す図である。
【００３６】
薄型テレビの筐体６０１は、ＣａｂｌｅＣａｒｄ５０４を除く、端末装置５００の構成要素をすべてを内蔵している。
【００３７】
ディスプレイ６０２、図５におけるディスプレイ５０９に相当する。
【００３８】
複数のボタンで構成されるフロントパネル部６０３は、図５の入力部５１３に相当する。
【００３９】
信号入力端子６０４は、ヘッドエンド１０１との信号の送受信を行うためにケーブル線を接続する。この信号入力端子６０４は、図５のＱＡＭ復調部５０１、ＱＰＳＫ復調部５０２およびＱＰＳＫ変調部５０３と接続されている。
【００４０】
ＣａｂｌｅＣａｒｄカード６０５は、図５のＣａｂｌｅＣａｒｄ５０４に相当する。ＣａｂｌｅＣａｒｄ５０４は、図６のＣａｂｌｅＣａｒｄカード６０５のように、端末装置５００とは独立した形態を取り、端末装置５００に着脱可能となっている。ＣａｂｌｅＣａｒｄ５０４の詳細は後述する。
【００４１】
挿入スロット６０６はＣａｂｌｅＣａｒｄカード６０５を挿入するスロットである。
【００４２】
図５を参照して、ＱＡＭ復調部５０１は、ＣＰＵ５１４から指定された周波数を含むチューニング情報で、ヘッドエンド１０１でＱＡＭ変調され送信されてきた信号を復調し、ＣａｂｌｅＣａｒｄ５０４に引き渡す。
【００４３】
ＱＰＳＫ復調部５０２は、ＣＰＵ５１４から指定された周波数を含むチューニング情報で、ヘッドエンド１０１でＱＰＳＫ変調され送信されてきた信号を復調し、ＣａｂｌｅＣａｒｄ５０４に引き渡す。
【００４４】
ＱＰＳＫ変調部５０３は、ＣＰＵ５１４から指定された周波数を含む変調情報で、ＣａｂｌｅＣａｒｄ５０４から渡された信号をＱＰＳＫ変調し、ヘッドエンド１０１に送信する。
【００４５】
ＣａｂｌｅＣａｒｄ５０４は、図６のように端末装置５００から着脱可能な形態をしている。端末装置５００とＣａｂｌｅＣａｒｄ５０４との接続インターフェースは、ＯｐｅｎＣａｂｌｅ（登録商標）  ＣａｂｌｅＣａｒｄ  Ｉｎｔｅｒｆａｃｅ  ２．０  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（ＯＣ−ＳＰ−ＣＣＩＦ２．０−Ｉ１８−０９０５０８）及びこの仕様書から参照されている仕様書で定義されている。ここでは、その説明は省略し、本発明に関する部分のみを解説する。
【００４６】
図７は、ＣａｂｌｅＣａｒｄ５０４の内部構成を表すブロック図である。ＣａｂｌｅＣａｒｄ５０４は、第１デスクランブラ部７０１、第２デスクランブラ部７０２、スクランブラ部７０３、第１記憶部７０４、第２記憶部７０５およびＣＰＵ（あるいは、プロセッサ）７０６で構成される。
【００４７】
第１デスクランブラ部７０１は、ＣＰＵ７０６からの指示により、端末装置５００のＱＡＭ復調部５０１から暗号化された信号を受け取り、復号を行う。そして、復号された信号を端末装置５００のＴＳデコーダ５０５に送る。デコードに必要な鍵などの情報はＣＰＵ７０６から適宜与えられる。具体的には、ヘッドエンド１０１はいくつかの有料チャンネルを放送している。ユーザが、この有料チャンネルを購入すると、第１デスクランブラ部７０１は、ＣＰＵ７０６から鍵等の必要な情報を受け取りデスクランブルすることで、ユーザは有料チャンネルを閲覧することができる。鍵などの必要な情報が与えられない場合は、第１デスクランブラ部７０１は、デスクランブルを行わず、受け取った信号をそのまま、ＴＳデコーダ５０５に送る。
【００４８】
第２デスクランブラ部７０２は、ＣＰＵ７０６からの指示により、端末装置５００のＱＰＳＫ復調部５０２から暗号化された信号を受け取り、復号を行う。そして、復号されたデータをＣＰＵ７０６に引き渡す。
【００４９】
スクランブラ部７０３は、ＣＰＵ７０６からの指示により、ＣＰＵ７０６から受け取ったデータを暗号化し、端末装置５００のＱＰＳＫ変調部５０３に送る。
【００５０】
第１記憶部７０４は、具体的にはＲＡＭ等の一次記憶メモリで構成され、ＣＰＵ７０６が処理を行う際、一時的にデータを保存するために使用される。
【００５１】
第２記憶部７０５は、具体的にはフラッシュＲＯＭ等の２次記憶メモリで構成され、ＣＰＵ７０６が実行するプログラムを格納し、また、電源ＯＦＦになっても消去されては困るデータの保存に使用される。
【００５２】
ＣＰＵ７０６は、第２記憶部７０５が記憶するプログラムを実行する。プログラムは複数のサブプログラムで構成される。図８は、第２記憶部７０５が記憶するプログラムの一例を示す図である。図８では、プログラム８００は、メインプログラム８０１、初期化サブプログラム８０２、ネットワークサブプログラム８０３、再生サブプログラム８０４、ＰＰＶサブプログラム８０５等複数のサブプログラムで構成されている。
【００５３】
ここでＰＰＶとはＰａｙ  Ｐｅｒ  Ｖｉｅｗの略であり、映画など特定の番組を有料で視聴できるようにするサービスである。ユーザが暗証番号を入力すると、購入したことがヘッドエンド１０１に通知され、スクランブルが解除され、視聴することが出来る。この視聴により、ユーザは後日、購入代金を支払うものである。
【００５４】
メインプログラム８０１は、ＣＰＵ７０６が電源投入時に最初に起動するサブプログラムであり、他のサブプログラムの制御を行う。
【００５５】
初期化サブプログラム８０２は、電源投入時にメインプログラム８０１によって起動され、端末装置５００との情報交換等を行い、初期化処理を行う。初期化処理の詳細は、ＯｐｅｎＣａｂｌｅ（登録商標）  ＨＯＳＴ−ＣａｂｌｅＣａｒｄ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（ＯＣ−ＳＰ−ＨＯＳＴＣａｂｌｅＣａｒｄ−ＩＦ−Ｉ１２−０３０２１０）及びこの仕様書から参照されている仕様書で定義されている。また、仕様書に定義されていない初期化処理も行う。ここでは、その一部を紹介する。電源が投入されると、初期化サブプログラム８０２は、第２記憶部７０５が記憶する第１の周波数を端末装置５００のＣＰＵ５１４を通して、ＱＰＳＫ復調部５０２に通知する。ＱＰＳＫ復調部５０２は、与えられた第１の周波数でチューニングを行い、信号を第２デスクランブラ部７０２に送る。また、初期化サブプログラム８０２は、第２記憶部７０５が記憶する第１の鍵等の復号情報を第２デスクランブラ部７０２に与える。その結果、第２デスクランブラ部７０２は、デスクランブルを行い、初期化サブプログラム８０２を実行するＣＰＵ７０６に引き渡す。よって、初期化サブプログラム８０２は情報を受け取ることができる。本実施の形態では、初期化サブプログラム８０２はネットワークサブプログラム８０３を通して情報を受け取ることとする。詳細は後述する。
【００５６】
また、初期化サブプログラム８０２は、第２記憶部７０５が記憶する第２の周波数を端末装置５００のＣＰＵ５１４を通して、ＱＰＳＫ変調部５０３に通知する。初期化サブプログラム８０２は第２記憶部７０５が記憶する暗号化情報をスクランブラ部７０３に与える。初期化サブプログラム８０２が送信したい情報を、ネットワークサブプログラム８０３を介して、スクランブラ部７０３に与えると、スクランブラ部７０３は、与えられた暗号化情報を用いて、データを暗号化し、端末装置５００のＱＰＳＫ変調部５０３に与える。ＱＰＳＫ変調部５０３は、与えられた暗号化された情報を変調し、ヘッドエンド１０１に送信する。
【００５７】
この結果、初期化サブプログラム８０２は、端末装置５００、第２デスクランブラ部７０２、スクランブラ部７０３およびネットワークサブプログラム８０３を通して、ヘッドエンド１０１と双方向通信を行うことができる。
【００５８】
ネットワークサブプログラム８０３は、メインプログラム８０１、初期化サブプログラム８０２等の複数のサブプログラムから使用される、ヘッドエンド１０１との双方向通信を行うためのサブプログラムである。具体的には、ネットワークサブプログラム８０３を使用する他のサブプログラムに対して、ＴＣＰ／ＩＰによって、ヘッドエンド１０１と双方向通信を行っているように振舞う。なお、ＴＣＰ／ＩＰは、複数の装置間で情報交換を行うためのプロトコルを規定した公知の技術であり、詳細な説明は省略する。ネットワークサブプログラム８０３は、電源投入時に初期化サブプログラム８０２に起動されると、予め第２記憶部７０５が記憶しているＣａｂｌｅＣａｒｄ５０４を識別する識別子であるＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌアドレスの略）を、端末装置５００を通してヘッドエンド１０１に通知し、ＩＰアドレスの取得を要求する。ヘッドエンド１０１は、端末装置５００を介してＣａｂｌｅＣａｒｄ５０４にＩＰアドレスを通知し、ネットワークサブプログラム８０３は、ＩＰアドレスを第１記憶部７０４に記憶する。以降、ヘッドエンド１０１とＣａｂｌｅＣａｒｄ５０４は、このＩＰアドレスを、ＣａｂｌｅＣａｒｄ５０４の識別子として使用し、通信を行う。
【００５９】
再生サブプログラム８０４は、第２記憶部７０５が記憶する第２の鍵等の復号情報や、端末装置５００から与えられる第３の鍵等の復号情報を第１デスクランブラ部７０１に与えて、デスクランブルを可能にする。また、再生サブプログラム８０４は、ネットワークサブプログラム８０３を通して、第１デスクランブラ部７０１に入力されている信号が、ＰＰＶチャンネルであることの情報を受け取る。ＰＰＶチャンネルと知ったときは、再生サブプログラム８０４は、ＰＰＶサブプログラム８０５を起動する。
【００６０】
ＰＰＶサブプログラム８０５は、起動されると、端末装置５００に番組の購入を促すメッセージを表示し、ユーザの入力を受け取る。具体的には、端末装置５００のＣＰＵ５１４に画面に表示したい情報を送ると、端末装置５００のＣＰＵ５１４上で動作するプログラムが、端末装置５００のディスプレイ５０９上にメッセージを表示する。ユーザは、端末装置５００の入力部５１３を通して暗証番号を入力すると、端末装置５００のＣＰＵ５１４が、それを受け取り、ＣａｂｌｅＣａｒｄ５０４のＣＰＵ７０６上で動作するＰＰＶサブプログラム８０５に通知する。ＰＰＶサブプログラム８０５は、受け取った暗証番号をネットワークサブプログラム８０３を通してヘッドエンド１０１に送信する。ヘッドエンド１０１は、暗証番号が正しければ、復号に必要な第４の鍵などの復号化情報をネットワークサブプログラム８０３を介して、ＰＰＶサブプログラム８０５に通知する。ＰＰＶサブプログラム８０５は受け取った第４の鍵などの復号化情報を第１デスクランブラ部７０１に与え、第１デスクランブラ部７０１は、与えられた復号化情報を用いて、入力されている信号をデスクランブルする。
【００６１】
図５を参照して、ＴＳデコーダ５０５は、ＣａｂｌｅＣａｒｄ５０４から受け取った信号のフィルタリングを実施し、必要なデータをオーディオデコーダ５０６、ビデオデコーダ５０８およびＣＰＵ５１４に引き渡す。ここで、ＣａｂｌｅＣａｒｄ５０４から来る信号はＭＰＥＧ２トランスポートストリームである。なお、ＭＰＥＧ２トランスポートストリームの詳細はＭＰＥＧ規格書  ＩＳＯ／ＩＥＣ１３８１８−１に記載されており、本実施の形態ではその説明は省略する。ＭＰＥＧ２トランスポートストリームは、複数の固定長パケットで構成され、各パケットには、パケットＩＤが振られている。図９はパケットの構成図である。パケット９００は、固定長の１８８バイトで構成される。先頭４バイトがヘッダー９０１であり、そのヘッダー９０１はパケットの識別情報を格納している。残り１８４バイトがペイロード９０２であり、そのペイロード９０２は送信したい情報を含んでいる。９０３は、ヘッダー９０１の内訳である。この内訳９０３に示されるように、先頭から１２ビット目〜２４ビット目までの１３ビットにパケットＩＤが含まれている。図１０は送られてくる複数のパケットの列を表現した模式図である。パケット１００１は、ヘッダーにパケットＩＤ「１」を持ち、そのペイロードには映像Ａの１番目の情報が入っている。パケット１００２は、ヘッダーにパケットＩＤ「２」を持ち、そのペイロードには音声Ａの１番目の情報が入っている。パケット１００３は、ヘッダーにパケットＩＤ「３」を持ち、そのペイロードには音声Ｂの１番目の情報が入っている。
【００６２】
パケット１００４は、ヘッダーにパケットＩＤ「１」を持ち、そのペイロードには映像Ａの２番目の情報が入っており、これはパケット１００１の続きになっている。同様にパケット１００５、１０２６、１０２７も他のパケットの後続データを格納している。このように、同じパケットＩＤを持つパケットのペイロードの内容を連結すると、連続した映像や音声を再現することができる。
【００６３】
図１０を参照して、ＣＰＵ５１４がパケットＩＤ「１」と出力先「ビデオデコーダ５０８」とをＴＳデコーダ５０５に指示すると、ＴＳデコーダ５０５はＣａｂｌｅＣａｒｄ５０４から受け取ったＭＰＥＧ２トランスポートストリームからパケットＩＤ「１」のパケットを抽出し、ビデオデコーダ５０８に引き渡す。図１０に示される例においては、映像データのみをビデオデコーダ５０８に引き渡すことになる。同時に、ＣＰＵ５１４がパケットＩＤ「２」と「オーディオデコーダ５０６」とをＴＳデコーダ５０５に指示すると、ＴＳデコーダ５０５はＣａｂｌｅＣａｒｄ５０４から受け取ったＭＰＥＧ２トランスポートストリームからパケットＩＤ「２」のパケットを抽出し、オーディオデコーダ５０６に引き渡す。図１０に示される例においては、音声データのみをオーディオデコーダ５０６に引き渡すことになる。
【００６４】
このパケットＩＤに応じて必要なパケットだけを取り出す処理が、ＴＳデコーダ５０５が行うフィルタリングである。ＴＳデコーダ５０５はＣＰＵ５１４から指示された複数のフィルタリングを同時に実行することができる。
【００６５】
図５を参照して、オーディオデコーダ５０６は、ＴＳデコーダ５０５から与えられたＭＰＥＧ２トランスポートストリームのパケットに埋め込まれたオーディオデータを連結し、デジタル−アナログ変換を行いスピーカ５０７に出力する。
【００６６】
スピーカ５０７は、オーディオデコーダ５０６から与えられた信号をシステム設定部５１７によって指定された設定に従って音声出力する。
【００６７】
システム設定部５１７は、音量の大小、画面の輝度、コントラストおよび表示位置等の設定をスピーカ５０７およびディスプレイ５０９に対して行う。また、本実施の形態では、システム設定部５１７は表示合成部５１６に対しても指示を行うが、表示合成部５１６に対する指示は後述する。
【００６８】
ビデオデコーダ５０８は、ＴＳデコーダ５０５から与えられたＭＰＥＧ２トランスポートストリームのパケットに埋め込まれたビデオデータを連結し、表示合成部５１６に出力する。また、ビデオデコーダ５０８はＭＰＥＧ−Ｉ等で表される静止画像を表示合成部５１６に出力することもできる。
【００６９】
なお、ＭＰＥＧ−Ｉ等静止画像を表示する際、前記ビデオデコーダ５０８とは別にスチルデコーダ等を用いて表示を行ってもよい。
【００７０】
ＯＳＤ制御部５１５はＣＰＵ５１４から指示されたグラフィックスの描画命令に従って描画を行い、表示合成部５１６に出力する。
【００７１】
表示合成部５１６はビデオデコーダ５０８から与えられたビデオ映像、あるいは静止画像とＯＳＤ制御部から出力されたグラフィックスをアルファ合成し、デジタル−アナログ変換を行いディスプレイ５０９に出力する。表示合成部５１６は図１２のような構成をもつ。
【００７２】
図１２において、５０８、５１５、５１７については、すでに説明したので、ここでの説明を省略する。また、ディスプレイ５０９については、後述する。補正アルファ値バッファ１２０１はユーザからの入力にしたがって、システム設定部５１７によって指定された値を保存する。アルファ値とは透明度を表す値であり、０．０−１．０の範囲で表される。ここで、０．０は完全に透明であることを表し、１．０は完全に不透明であることを表す。
【００７３】
グラフィックスバッファ１２０２は、ＯＳＤ制御部５１５によって描画されたイメージや図形、文字などを保持する。グラフィックスバッファ１２０２は、各画素に対して色の３原色であるＲ（赤）、Ｇ（緑）、Ｂ（青）の各々の値のほかに、透明度を表すＲ（アルファ値）を保持する。
【００７４】
ビデオバッファ１２０３およびバックグラウンドバッファ１２０４は、それぞれ、ビデオデコーダから出力された値（前景色データ、および、背景色データ）を保持する。
【００７５】
合成器１２１１は補正アルファ値とグラフィックスバッファが保持するＲ（アルファ値）を掛け合わせる操作を行う。補正アルファ値が指定されていない場合は、補正アルファ値が１．０であるものとして、演算する。なお、補正アルファ値は、８ビットの整数値等、どのような値で保持していてもかまわない。また、各画素に対して、１つの補正アルファ値を用意する等、複数の補正アルファ値を用意しても良い。
【００７６】
合成器１２１２はグラフィックスバッファが保持する値と補正アルファ値を掛け合わしたものと、ビデオバッファ１２０３内のデータとバックグラウンドバッファ１２０４内のデータとのアルファ合成を行う。なお、本実施の形態では、補正アルファ値と、グラフィックスバッファの各画素が保持するアルファ値を掛け合わせているが、グラフィックスバッファの各画素を用いず、すべて、補正アルファ値の値で置き換えるなど、どのような方法で、アルファ値を求めても良い。アルファ合成とは、前景色と背景色とをある割合で合成する処理で、本実施の形態では、演算方法として、Ｐｏｒｔｅｒ−Ｄｕｆｆルールを用いて演算を行う。Ｐｏｒｔｅｒ−Ｄｕｆｆルールの詳細に関しては、Ｔ．Ｐｏｒｔｅｒ  ａｎｄ  Ｔ．Ｄｕｆｆ、“Ｃｏｍｐｏｓｉｔｉｎｇ  Ｄｉｇｉｔａｌ  Ｉｍａｇｅｓ”  ＳＩＧＧＲＡＰＨ  ８４、２５３−２５９を参照されたい。
【００７７】
スクリーンバッファ１２０５は合成器１２１２で表される演算結果を格納し、この結果をデジタル−アナログ変換し、システム設定部５１７に指定された設定に従って、ディスプレイ５０９に出力する。
【００７８】
ディスプレイ５０９は、具体的にはブラウン管や液晶等で構成され、表示合成部５１６から与えられた出力信号をシステム設定部５１７によって指定された設定にしたがって画面に出力する。
【００７９】
２次記憶部５１０は、具体的には、フラッシュメモリやハードディスク等で構成され、ＣＰＵ５１４から指示されたデータやプログラムを保存したり削除したりする。また、保存されているデータやプログラムはＣＰＵ５１４に参照される。保存されているデータやプログラムは、端末装置５００の電源が切断された状態でも保存され続ける。
【００８０】
１次記憶部５１１は、具体的には、ＲＡＭ等で構成され、ＣＰＵ５１４から指示されたデータやプログラムを一次的に保存したり削除したりする。また、保存されているデータやプログラムはＣＰＵ５１４に参照される。保存されているデータやプログラムは、端末装置５００の電源が切断された際に、抹消される。
【００８１】
ＲＯＭ５１２は、書き換え不可能なメモリデバイスであり、具体的にはＲＯＭやＣＤ−ＲＯＭ、ＤＶＤなどで構成される。ＲＯＭ５１２は、ＣＰＵ５１４が実行するプログラムが格納されている。
【００８２】
入力部５１３は、具体的には、フロントパネルやリモコンで構成され、ユーザからの入力を受け付ける。図１１は、フロントパネルで入力部５１３を構成した場合の一例を示す図である。フロントパネル１１００は、図６のフロントパネル部６０３に相当する。フロントパネル１１００は７つのボタン、上カーソル１１０１、下カーソル１１０２、左カーソル１１０３、右カーソル１１０４、ＯＫボタン１１０５、取消ボタン１１０６、ＥＰＧボタン１１０７、メニューボタン１１０８およびＩｎｆｏボタン１１０９を備えている。ユーザがボタンを押下すると、押下されたボタンの識別子が、ＣＰＵ５１４に通知される。
【００８３】
ＣＰＵ５１４は、ＲＯＭ５１２が記憶するプログラムを実行する。実行するプログラムの指示に従い、ＱＡＭ復調部５０１、ＱＰＳＫ復調部５０２、ＱＰＳＫ変調部５０３、ＣａｂｌｅＣａｒｄ５０４、ＴＳデコーダ５０５、ディスプレイ５０９、２次記憶部５１０、１次記憶部５１１およびＲＯＭ５１２を制御する。
【００８４】
図１３は、ＲＯＭ５１２に記憶され、ＣＰＵ５１４に実行されるプログラムの構成図の一例である。
【００８５】
プログラム１３００は、複数のサブプログラムで構成され、具体的にはＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）１３０１、ＪａｖａＶＭ１３０３、Ｊａｖａライブラリ１３０５等で構成される。
【００８６】
ＯＳ１３０１は、端末装置５００の電源が投入されると、ＣＰＵ５１４が起動するサブプログラムである。ＯＳ１３０１は、オペレーティングシステムの略であり、Ｌｉｎｕｘ（登録商標）等が一例である。なお、ＯＳ１３０１は、他のサブプログラムを並行して実行するカーネル１３０１ａ及びライブラリ１３０１ｂで構成される公知の技術の総称であり、詳細な説明は省略する。本実施の形態においては、ＯＳ１３０１のカーネル１３０１ａは、ＥＰＧ１３０２とＪａｖａＶＭ１３０３、入力マネージャ１３０６、システムマネージャであるＡｊａｘＣＥミドルウェア１３０７をサブプログラムとして実行する。また、ライブラリ１３０１ｂは、これらサブプログラムに対して、端末装置５００が保持する構成要素を制御するための複数の機能を提供する。
【００８７】
機能の一例として、チューニング機能を紹介する。チューニング機能は、他のサブプログラムから周波数を含むチューニング情報を受け取り、それをＱＡＭ復調部５０１に引き渡す。ＱＡＭ復調部５０１は与えられたチューニング情報に基づき復調処理を行い、復調したデータをＣａｂｌｅＣａｒｄ５０４に引き渡すことができる。この結果、他のサブプログラムはライブラリ１３０１ｂを通してＱＡＭ復調部５０１を制御することができる。
【００８８】
ＥＰＧ１３０２は、基本的にＣａｂｌｅサービス事業者により作成されるＪａｖａプログラム（Ｊａｖａで記述されるアプリケーション、Ｊａｖａアプリケーション）である。ＥＰＧ１３０２はユーザ（Ｃａｂｌｅサービス契約者）に番組一覧を表示する、及び、ユーザからの入力を、入力マネージャ１３０６を通して受け付ける番組表示部１３０２ａと、チャンネル選局を行う再生部１３０２ｂで構成される。また、ＥＰＧ１３０２はアプリケーション制御部１３０２ｃを含むが、これに関しては後述する。また、ここで、ＥＰＧはＥｌｅｃｔｒｉｃ  Ｐｒｏｇｒａｍ  Ｇｕｉｄｅの略である。
【００８９】
入力マネージャ１３０６はユーザからの入力を受け付け、受け付けた入力を、ＥＰＧ１３０２、ＡｊａｘＣＥミドルウェア１３０７など、ユーザからの入力を要求するサブプログラムに配送する。ＡｊａｘＣＥミドルウェア１３０７はＪａｖａＶＭ１３０３、Ｊａｖａライブラリ１３０５とは異なるアプリケーションの実行エンジン（ミドルウェア）の一例である。ＡｊａｘＣＥアプリケーション１３０８はＡｊａｘＣＥミドルウェア１３０７の上で動作する。
【００９０】
ＥＰＧ１３０２は、端末装置５００の電源が投入された後、カーネル１３０１ａが起動され、カーネル１３０１ａがＪａｖａＶＭ１３０３を起動し、Ｊａｖａライブラリ１３０５が起動された後、Ｊａｖａライブラリに含まれるサブプログラムであるＡＭ１３０５ｂにより、ＪａｖａＶＭ上で動作するＪａｖａアプリケーションとして起動される。この詳細は後述する。また、ＪａｖａＶＭ１３０３、Ｊａｖａライブラリ１３０５の説明も後述する。
【００９１】
起動されたＥＰＧ１３０２の内部では、番組表示部１３０２ａが端末装置５００の入力部５１３を通して、ユーザからの入力を待つ。ここで、入力部５１３が図１１で示されるフロントパネル１１００で構成されている場合、ユーザが、入力部５１３のＥＰＧボタン１１０７を押下すると、ＥＰＧボタンの識別子がＣＰＵ５１４に通知される。ＣＰＵ５１４上で動作するサブプログラムであるＥＰＧ１３０２の番組表示部１３０２ａは、この識別子を受け取り、番組情報をディスプレイ５０９に表示する。図１４（ａ）及び（ｂ）は、ディスプレイ５０９に表示された番組表の一例である。図１４（ａ）を参照して、ディスプレイ５０９には、格子状に番組情報が表示されている。列１４０１には、時刻情報が表示されている。列１４０２には、チャンネル名「チャンネル１」と、列１４０１の時刻に対応する時間帯に放映される番組が表示されている。「チャンネル１」では、９：００〜１０：３０に番組「野球（Ｙ対Ｒ）」が放映され、１０：３０〜１２：００に「映画ＡＡＡ」が放映されることを表す。列１４０３も列１４０２同様、チャンネル名「チャンネル２」と、列１４０１の時刻に対応する時間帯に放映される番組が表示されている。９：００〜１１：００に番組「映画ＢＢＢ」が放映され、１１：００〜１２：００に「ニュース１１」が放映される。１４３０は、カーソルである。カーソル１４３０は、フロントパネル１１００の左カーソル１１０３と右カーソル１１０４を押下すると移動する。図１４（ａ）の状態で、右カーソル１１０４を押下すると、カーソル１４３０は右に移動し、図１４（ｂ）のようになる。また、図１４（ｂ）の状態で、左カーソル１１０３を押下すると、カーソル１４３０は左に移動し、図１４（ａ）のようになる。
【００９２】
図１４（ａ）の状態で、フロントパネル１１００のＯＫボタン１１０５が押下されると、番組表示部１３０２ａは、「チャンネル１」の識別子を再生部１３０２ｂに通知する。図１４（ｂ）の状態で、フロントパネル１１００のＯＫボタン１１０５が押下されると、番組表示部１３０２ａは、「チャンネル２」の識別子を再生部１３０２ｂに通知する。
【００９３】
また、番組表示部１３０２ａは、表示する番組情報を、ＣａｂｌｅＣａｒｄ５０４を通してヘッドエンド１０１から定期的に、１次記憶部５１１に記憶しておく。一般的に、ヘッドエンドからの番組情報の取得は時間が掛かる。入力部５１３のＥＰＧボタン１１０７が押下された時、１次記憶部５１１に予め保存された番組情報を表示することで、素早く番組表を表示することができる。
【００９４】
再生部１３０２ｂは、受け取ったチャンネルの識別子を用いて、チャンネルを再生する。チャンネルの識別子とチャンネルとの関係は、チャンネル情報として、２次記憶部５１０に予め格納されている。図１５は２次記憶部５１０に格納されているチャンネル情報の一例を示す図である。チャンネル情報は表形式で格納されている。列１５０１は、チャンネルの識別子である。列１５０２は、チャンネル名である。列１５０３はチューニング情報である。ここで、チューニング情報は周波数や転送レート、符号化率などを含み、ＱＡＭ復調部５０１に与える値である。列１５０４はプログラムナンバーである。プログラムナンバーとは、ＭＰＥＧ２規格で規定されているＰＭＴを識別するための番号である。なお、ＰＭＴに関しては、後述する。行１５１１〜１５１４の各行は、各チャンネルの識別子、チャンネル名、チューニング情報の組となる。行１５１１は識別子が「１」、チャンネル名が「チャンネル１」、チューニング情報に周波数「１５０ＭＨｚ」、プログラムナンバーが「１０１」を含む組となっている。再生部１３０２ｂは、チャンネルの再生を行うため、受け取ったチャンネルの識別子をそのままサービスマネージャ１３０５ｇに引き渡す。
【００９５】
また、再生部１３０２ｂは、再生中に、ユーザがフロントパネル１１００の上カーソル１１０１と下カーソル１１０２を押下すると、入力部５１３からＣＰＵ５１４を通して、押下された通知を受け取り、再生しているチャンネルを変更する。まず、再生部１３０２ｂは、１次記憶部５１１に現在再生中のチャンネルの識別子を記憶する。図１６（ａ）、（ｂ）及び（ｃ）は、１次記憶部５１１に保存しているチャンネルの識別子の例である。図１６（ａ）では識別子「３」が記憶されており、図１５を参照し、チャンネル名「ＴＶ  ３」のチャンネルが再生中であることを示す。図１６（ａ）の状態で、ユーザが上カーソル１１０１を押下すると再生部１３０２ｂは、図１５のチャンネル情報を参照し、表中の前のチャンネルであるチャンネル名「チャンネル２」のチャンネルに再生を切り変えるため、サービスマネージャにチャンネル名「チャンネル２」の識別子「２」を引き渡す。同時に、１次記憶部５１１に記憶されているチャンネル識別子「２」に書き換える。図１６（ｂ）は、チャンネル識別子が「２」に書き換えられた状態を表す。また、図１６（ａ）の状態で、ユーザが下カーソル１１０２を押下すると再生部１３０２ｂは、図１５のチャンネル情報を参照し、表中の次のチャンネルであるチャンネル名「ＴＶ  Ｊａｐａｎ」のチャンネルに再生を切り変えるため、サービスマネージャにチャンネル名「ＴＶ  Ｊａｐａｎ」の識別子「４」を引き渡す。同時に、１次記憶部５１１に記憶されているチャンネル識別子「４」に書き換える。図１６（ｃ）は、チャンネル識別子が「４」に書き換えられた状態を表す。
【００９６】
ＪａｖａＶＭ１３０３は、Ｊａｖａ（登録商標）言語で記述されたプログラムを逐次解析し実行するＪａｖａバーチャルマシンである。Ｊａｖａ言語で記述されたプログラムはバイトコードと呼ばれる、ハードウェアに依存しない中間コードにコンパイルされる。Ｊａｖａバーチャルマシンは、このバイトコードを実行するインタープリタである。また、一部のＪａｖａバーチャルマシンは、バイトコードをＣＰＵ５１４が理解可能な実行形式に翻訳してから、ＣＰＵ５１４に引渡し、実行することも行う。ＪａｖａＶＭ１３０３は、カーネル１３０１ａに起動される。Ｊａｖａ言語の詳細は、書籍（非特許文献）「Ｊａｖａ  Ｌａｎｇｕａｇｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（ＩＳＢＮ  ０−２０１−６３４５１−１）」等の多くの書籍で解説されている。ここでは、その説明を省略する。また、ＪａｖａＶＭ自体の詳細な動作などは、非特許文献「Ｊａｖａ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（ＩＳＢＮ  ０−２０１−６３４５１―Ｘ）」等の多くの書籍で解説されている。ここでは、その説明を省略する。
【００９７】
サービスマネージャ１３０５ｇはＪａｖａライブラリ１３０５に含まれるサブプログラムとして定義され、Ｊａｖａ言語で書かれたＪａｖａプログラムであり、ＪａｖａＶＭ１３０３によって逐次実行される。サービスマネージャ１３０５ｇは、ＪＮＩ（Ｊａｖａ  Ｎａｔｉｖｅ  Ｉｎｔｅｒｆａｃｅ）を通して、Ｊａｖａ言語で記述されていない他のサブプログラムを呼び出したり、または、呼び出されたりすることが可能である。ＪＮＩに関しても、書籍（非特許文献）「Ｊａｖａ  Ｎａｔｉｖｅ  Ｉｎｔｅｒｆａｃｅ」等の多くの書籍で解説されている。ここでは、その説明を省略する。また、サービスマネージャ１３０５ｇは後述のとおり、Ｔｕｎｅｒ１３０５ｃ、ＣＡ１３０５ｄおよびＪＭＦ１３０５ａを用いてＡＶ再生を実現する。また、ＡＭ１３０５ｂを用いて、Ｊａｖａのアプリケーションの制御を実現する。
【００９８】
サービスマネージャ１３０５ｇは、最初にＪａｖａライブラリ１３０５の中にあるＴｕｎｅｒ１３０５ｃに、チャンネルの識別子を引き渡し、チューニングを依頼する。Ｔｕｎｅｒ１３０５ｃは、２次記憶部５１０が記憶するチャンネル情報を参照し、チューニング情報を獲得する。今、サービスマネージャ１３０５ｇがチャンネルの識別子「２」をＴｕｎｅｒ１３０５ｃに引き渡すと、Ｔｕｎｅｒ１３０５ｃは、図１５の行１５１２を参照して、対応するチューニング情報「１５６ＭＨｚ」を獲得する。Ｔｕｎｅｒ１３０５ｃは、ＯＳ１３０１のライブラリ１３０１ｂを通して、ＱＡＭ復調部５０１にチューニング情報を引き渡す。ＱＡＭ復調部５０１は与えられたチューニング情報に従ってヘッドエンド１０１から送信されてきた信号を復調し、ＣａｂｌｅＣａｒｄ５０４に引き渡す。
【００９９】
次にサービスマネージャ１３０５ｇは、Ｊａｖａライブラリ１３０５の中にあるＣＡ１３０５ｄにデスクランブルを依頼する。ＣＡ１３０５ｄは、ＯＳ１３０１のライブラリ１３０１ｂを通して復号に必要な情報をＣａｂｌｅＣａｒｄ５０４に与える。ＣａｂｌｅＣａｒｄ５０４は、与えられた情報を元に、ＱＡＭ復調部５０１から与えられた信号を復号しＴＳデコーダ５０５に引き渡す。
【０１００】
次にサービスマネージャ１３０５ｇは、Ｊａｖａライブラリ１３０５の中にあるＪＭＦ１３０５ａにチャンネルの識別子を与え、映像・音声の再生を依頼する。
【０１０１】
映像・音声の再生では、まず、最初にＪＭＦ１３０５ａは、再生すべき映像と音声を特定するためのパケットＩＤをＰＡＴおよびＰＭＴから取得する。ＰＡＴおよびＰＭＴはＭＰＥＧ２規格で規定されている、ＭＰＥＧ２トランスポートストリーム内の番組構成を表現するテーブルであり、ＭＰＥＧ２トランスポートストリームに含まれるパケットのペイロードに埋め込まれて、音声や映像と共に送信されるものである。詳細は規格書を参照されたい。ここでは、概略のみ説明する。ＰＡＴは、Ｐｒｏｇｒａｍ  Ａｓｓｏｃｉａｔｉｏｎ  Ｔａｂｌｅの略で、パケットＩＤ「０」のパケットに格納され送信されている。ＪＭＦ１３０５ａは、ＰＡＴを取得するため、ＯＳ１３０１のライブラリ１３０１ｂを通して、ＴＳデコーダ５０５にパケットＩＤ「０」とＣＰＵ５１４を指定する。ＴＳデコーダ５０５がパケットＩＤ「０」でフィルタリングを行い、ＣＰＵ５１４に引き渡すことでＪＭＦ１３０５ａは、ＰＡＴのパケットを収集する。
【０１０２】
図１７は、収集したＰＡＴの情報の一例を模式的に表した表である。列１７０１は、プログラムナンバーである。列１７０２は、パケットＩＤである。列１７０２のパケットＩＤはＰＭＴを取得するために用いられる。行１７１１〜１７１３は、チャンネルのプログラムナンバーと対応するパケットＩＤの組である。ここでは、３つのチャンネルが定義されている。行１７１１はプログラムナンバー「１０１」とパケットＩＤ「５０１」の組が定義されている。今、ＪＭＦ１３０５ａに与えられたチャンネルの識別子が「２」とすると、ＪＭＦ１３０５ａは、図１５の行１５１２を参照して、対応するプログラムナンバー「１０２」を獲得し、次に、図１７のＰＡＴの行１７１２を参照し、プログラムナンバー「１０２」に対応するパケットＩＤ「５０２」を獲得する。
【０１０３】
ＰＭＴは、Ｐｒｏｇｒａｍ  Ｍａｐ  Ｔａｂｌｅの略で、ＰＡＴで規定されたパケットＩＤのパケットに格納され送信されている。ＪＭＦ１３０５ａは、ＰＭＴを取得するため、ＯＳ１３０１のライブラリ１３０１ｂを通して、ＴＳデコーダ５０５にパケットＩＤとＣＰＵ５１４を指定する。ここで、指定するパケットＩＤは「５０２」とする。ＴＳデコーダ５０５がパケットＩＤ「５０２」でフィルタリングを行い、ＣＰＵ５１４に引き渡すことでＪＭＦ１３０５ａは、ＰＭＴのパケットを収集する。
【０１０４】
図１８は、収集したＰＭＴの情報の一例を模式的に表した表である。列１８０１は、ストリーム種別であり。列１８０２は、パケットＩＤである。列１８０２で指定されるパケットＩＤのパケットには、ストリーム種別で指定された情報がペイロードに格納され送信されている。列１８０３は補足情報である。行１８１１〜１８１４はエレメンタリ−ストリームと呼ばれる、パケットＩＤと送信している情報の種別の組である。行１８１１は、ストリーム種別「音声」とパケットＩＤ「５０１１」の組であり、パケットＩＤ「５０１１」のペイロードには音声が格納されていることを表す。ＪＭＦ１３０５ａは、ＰＭＴから再生する映像と音声のパケットＩＤを獲得する。図１８を参照して、ＪＭＦ１３０５ａは、行１８１１から音声のパケットＩＤ「５０１１」を、行１８１２から映像のパケットＩＤ「５０１２」を獲得する。
【０１０５】
次に、ＪＭＦ１３０５ａは、ＯＳ１３０１のライブラリ１３０１ｂを通して、獲得した音声のパケットＩＤと出力先「オーディオデコーダ５０６」、および、映像のパケットＩＤと出力先「ビデオデコーダ５０８」の組を、ＴＳデコーダ５０５に与える。ＴＳデコーダ５０５は与えられたパケットＩＤと出力先に基づいて、フィルタリングを行う。ここではパケットＩＤ「５０１１」のパケットをオーディオデコーダ５０６に、パケットＩＤ「５０１２」のパケットをビデオデコーダ５０８に引き渡す。オーディオデコーダ５０６は、与えられたパケットのデジタル−アナログ変換を行いスピーカ５０７を通して音声を再生する。ビデオデコーダ５０８は、与えられたパケットに埋め込まれたビデオデータを連結し、表示合成部５１６に出力する。
【０１０６】
最後にサービスマネージャ１３０５ｇは、Ｊａｖａライブラリ１３０５の中にあるＡＭ１３０５ｂにチャンネルの識別子を与え、データ放送再生を依頼する。ここで、データ放送再生とは、ＭＰＥＧ２トランスポートストリームに含まれるＪａｖａプログラム（Ｊａｖａアプリケーション）を抽出し、ＪａｖａＶＭ１３０３に実行させることである。ＭＰＥＧ２トランスポートストリームにＪａｖａアプリケーションを埋め込む方法は、ＭＰＥＧ規格書  ＩＳＯ／ＩＥＣ１３８１８−６に記述されたＤＳＭＣＣという方式を用いる。ここではＤＳＭＣＣの詳細な説明は省略する。ＤＳＭＣＣ方式は、ＭＰＥＧ２トランスポートストリームのパケットの中に、コンピュータで使用されているディレクトリやファイルで構成されるファイルシステムをエンコードする方法を規定している。また、実行するＪａｖａアプリケーションの情報はＡＩＴと呼ばれる形式で、ＭＰＥＧ２トランスポートストリームのパケットの中に埋め込まれ送信されている。ＡＩＴは、ＤＶＢ−ＭＨＰ規格（正式には、ＥＴＳＩ  ＴＳ  １０１  ８１２  ＤＶＢ−ＭＨＰ仕様Ｖ１．０．２）の１０章に定義されている、Ａｐｐｌｉｃａｔｉｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔａｂｌｅの略である。
【０１０７】
ＡＭ１３０５ｂは、まず、ＡＩＴを獲得するため、ＪＭＦ１３０５ａと同様、ＰＡＴおよびＰＭＴを取得し、ＡＩＴが格納されているパケットのパケットＩＤを獲得する。今、与えられたチャンネルの識別子が「２」で、図１７のＰＡＴ、図１８のＰＭＴが送信されていると、ＪＭＦ１３０５ａと同様の手順で、図１８のＰＭＴを獲得する。ＡＭ１３０５ｂは、ＰＭＴからストリーム種別が「データ」で、かつ、補足情報として「ＡＩＴ」を持つエレメンタリ−ストリームから、パケットＩＤを抽出する。図１８を参照して、行１８１３のエレメンタリ−ストリームがそれに該当し、ＡＭ１３０５ｂは、パケットＩＤ「５０１３」を獲得する。
【０１０８】
ＡＭ１３０５ｂは、ＯＳ１３０１のライブラリ１３０１ｂを通してＴＳデコーダ５０５にＡＩＴのパケットＩＤと出力先「ＣＰＵ５１４」を与える。ＴＳデコーダ５０５は、与えられたパケットＩＤでフィルタリングを行い、ＣＰＵ５１４に引き渡す。この結果、ＡＭ１３０５ｂは、ＡＩＴのパケットを収集することができる。
【０１０９】
図１９は、収集したＡＩＴの情報の一例を模式的に表した表である。列１９０１はＪａｖａアプリケーションの識別子である。列１９０２はＪａｖａアプリケーションの制御情報である。制御情報には「ａｕｔｏｓｔａｒｔ」「ｐｒｅｓｅｎｔ」「ｋｉｌｌ」などがあり、「ａｕｔｏｓｔａｒｔ」は即時に端末装置５００がこのプログラムを自動的に実行することを意味し、「ｐｒｅｓｅｎｔ」は自動実行しないことを意味し、「ｋｉｌｌ」はプログラムを停止することを意味する。列１９０３は、ＤＳＭＣＣ方式でＪａｖａアプリケーションを含んでいるパケットＩＤを抽出するためのとＤＳＭＣＣ識別子である。列１９０４はＪａｖａアプリケーションのアプリケーション名である。行１９１１と１９１２とは、Ｊａｖａアプリケーションの情報の組である。行１９１１で定義されるＪａｖａアプリケーションは、識別子「３０１」、制御情報「ａｕｔｏｓｔａｒｔ」、ＤＳＭＣＣ識別子「１」、プログラム名「ａ／ＴｏｐＸｌｅｔ」の組である。行１９１２で定義されるＪａｖａアプリケーションは、識別子「３０２」、制御情報「ｐｒｅｓｅｎｔ」、ＤＳＭＣＣ識別子「１」、プログラム名「ｂ／ＧａｍｅＸｌｅｔ」の組である。ここで２つのＪａｖａアプリケーションは同じＤＳＭＣＣ識別子を持つが、これは１つのＤＳＭＣＣ方式でエンコードされたファイルシステム内に２つのＪａｖａアプリケーションが含まれていることを表す。ここでは、Ｊａｖａアプリケーションに対して４つの情報しか規定しないが、実際にはより多くの情報が定義される。詳細はＤＶＢ−ＭＨＰ規格を参照されたい。
【０１１０】
ＡＭ１３０５ｂは、ＡＩＴの中から「ａｕｔｏｓｔａｒｔ」のＪａｖａアプリケーションを見つけ出し、対応するＤＳＭＣＣ識別子及びＪａｖａアプリケーション名を抽出する。図１９を参照して、ＡＭ１３０５ｂは行１９１１のＪａｖａアプリケーションを抽出し、ＤＳＭＣＣ識別子「１」及びＪａｖａアプリケーション名「ａ／ＴｏｐＸｌｅｔ」を獲得する。
【０１１１】
次にＡＭ１３０５ｂは、ＡＩＴから取得したＤＳＭＣＣ識別子を用いて、ＪａｖａアプリケーションをＤＳＭＣＣ方式で格納しているパケットのパケットＩＤをＰＭＴから獲得する。具体的には、ＡＭ１３０５ｂは、ＰＭＴの中でストリーム種別が「データ」で、かつ、補足情報のＤＳＭＣＣ識別子が合致するエレメンタリ−ストリームのパケットＩＤを取得する。
【０１１２】
今、ＤＳＭＣＣ識別子が「１」であり、ＰＭＴが図１８に示される例とすると、行１８１４のエレメンタリ−ストリームが合致し、ＡＭ１３０５ｂは、パケットＩＤ「５０１４」を取り出す。
【０１１３】
ＡＭ１３０５ｂは、ＯＳ１３０１のライブラリ１３０１ｂを通してＴＳデコーダ５０５にＤＳＭＣＣ方式でデータが埋めこめられたパケットのパケットＩＤと出力先「ＣＰＵ５１４」を指定する。ここでは、パケットＩＤ「５０１４」を与える。ＴＳデコーダ５０５は、与えられたパケットＩＤでフィルタリングを行い、ＣＰＵ５１４に引き渡す。この結果、ＡＭ１３０５ｂは、必要なパケットを収集することができる。ＡＭ１３０５ｂは、収集したパケットから、ＤＳＭＣＣ方式に従ってファイルシステムを復元し、１次記憶部５１１に保存する。なお、外部からデータまたはプログラムを取り込むこと、具体的には、ＭＰＥＧ２トランスポートストリーム中のパケットからファイルシステム等のデータを取り出し１次記憶部５１１等の記憶手段に保存することを以降、「ダウンロード」と呼ぶ。
【０１１４】
図２０は、ダウンロードしたファイルシステムの一例を示す図である。図中、丸はディレクトリを四角はファイルを表し、２００１はルートディレクトリ、２００２はディレクトリ「ａ」、２００３はディレクトリ「ｂ」、２００４はファイル「ＴｏｐＸｌｅｔ．ｃｌａｓｓ」、２００５はファイル「ＧａｍｅＸｌｅｔ．ｃｌａｓｓ」である。
【０１１５】
次にＡＭ１３０５ｂは、１次記憶部５１１にダウンロードしたファイルシステム中から実行するＪａｖａアプリケーションをＪａｖａＶＭ１３０３に引き渡す。今、実行するＪａｖａアプリケーション名が「ａ／ＴｏｐＸｌｅｔ」とすると、Ｊａｖａアプリケーション名の最後に「．ｃｌａｓｓ」を付加したファイル「ａ／ＴｏｐＸｌｅｔ．ｃｌａｓｓ」が実行すべきファイルとなる。「／」はディレクトリやファイル名の区切りである。ここでは、図２０を参照して、ファイル２００４が実行すべきＪａｖａアプリケーションである。次にＡＭ１３０５ｂは、ファイル２００４をＪａｖａＶＭ１３０３に引き渡す。
【０１１６】
ＡＭ１３０５ｂによって実行されたＪａｖａアプリケーションについては、また、Ｇｒａｐｈｉｃｓ１３０５ｆを用いてイメージおよび文字等の描画指示を行うことにより、画面に表示することができる。
【０１１７】
Ｇｒａｐｈｉｃｓ１３０５ｆは、Ｊａｖａアプリケーションより受けた描画命令を、ＣＰＵ５１４を通してＯＳＤ制御部５１５に描画指示を行うことにより、イメージおよび文字等の描画を実現する。
【０１１８】
Ｎｅｔｗｏｒｋ１３０５ｉはＪａｖａアプリケーションより受けた任意のサーバとの通信を前述のＣａｂｌｅＣａｒｄ５０４、ＱＰＳＫ復調部５０２およびＱＰＳＫ変調部５０３を用いて実現する。
【０１１９】
ＪａｖａＶＭ１３０３は、引き渡されたＪａｖａアプリケーションを実行する。
【０１２０】
サービスマネージャ１３０５ｇは、他のチャンネルの識別子を受け取ると、Ｊａｖａライブラリ１３０５に含まれる各ライブラリを通して再生している映像・音声及びＪａｖａアプリケーションの実行を、同じくＪａｖａライブラリ１３０５に含まれる各ライブラリを通して停止し、新たに受け取ったチャンネルの識別子に基づいて、映像・音声の再生及びＪａｖａアプリケーションの実行を行う。
【０１２１】
Ｊａｖａライブラリ１３０５は、ＲＯＭ５１２に格納されている複数のＪａｖａライブラリの集合である。本実施の形態では、ここでは、Ｊａｖａライブラリ１３０５は、サービスマネージャ１３０５ｇ、ＪＭＦ１３０５ａ、ＡＭ１３０５ｂ、Ｔｕｎｅｒ１３０５ｃ、ＣＡ１３０５ｄ、ＣａｂｌｅＣａｒｄ  Ｌｉｂ（ＰＯＤ  Ｌｉｂ）１３０５ｅ、Ｇｒａｐｈｉｃｓ１３０５ｆ等を含んでいる。
【０１２２】
ここで、ＥＰＧ１３０２の起動に関して述べる。本実施の形態では、ＥＰＧ１３０２はＪａｖａアプリケーションとして説明する。
【０１２３】
端末装置５００の電源が投入された後、カーネル１３０１ａが起動され、カーネル１３０１ａがＪａｖａＶＭ１３０３を起動し、Ｊａｖａライブラリ１３０５が初期化される。Ｊａｖａライブラリの初期化時、サブプログラムであるＡＭ１３０５ｂはＪａｖａライブラリ１３０５に含まれるＣａｂｌｅＣａｒｄ  Ｌｉｂ１３０５ｅを通してヘッドエンド１０１と双方向通信を行う。この双方向通信は、ＣａｂｌｅＣａｒｄ  Ｌｉｂ１３０５ｅ、ＯＳ１３０１のライブラリ１３０１ｂ及びＣａｂｌｅＣａｒｄ５０４を介して、ＱＰＳＫ復調部５０２およびＱＰＳＫ変調部５０３を使用して実現される。
【０１２４】
ＡＭ１３０５ｂは、この通信を用いてヘッドエンド１０１から、端末装置５００が２次記憶部５１０に保存すべきＪａｖａアプリケーションの情報を受け取る。この情報をＸＡＩＴ情報と呼ぶ。ＸＡＩＴ情報は、ヘッドエンド１０１とＣａｂｌｅＣａｒｄ５０４間で、任意の形式で送信される。
【０１２５】
図２１は、ヘッドエンド１０１から取得したＸＡＩＴの情報の一例を模式的に表した表である。列２１０１はＪａｖａアプリケーションの識別子である。列２１０２はＪａｖａアプリケーションの制御情報である。制御情報には「ａｕｔｏｓｅｌｅｃｔ」、「ｐｒｅｓｅｎｔ」などがあり、「ａｕｔｏｓｅｌｅｃｔ」は端末装置５００が電源投入時にこのプログラムを自動的に実行することを意味し、「ｐｒｅｓｅｎｔ」は自動実行しないことを意味する。列２１０３は、ＤＳＭＣＣ方式でＪａｖａアプリケーションを含んでいるパケットＩＤを抽出するためのＤＳＭＣＣ識別子である。列２１０４はＪａｖａアプリケーションのアプリケーション名である。列２１０５は、Ｊａｖａアプリケーションの優先度である。行２１１１と２１１２は、Ｊａｖａアプリケーションの情報の組である。行２１１１で定義されるＪａｖａアプリケーションは、識別子「７０１」、制御情報「ａｕｔｏｓｅｌｅｃｔ」、ＤＳＭＣＣ識別子「１」、プログラム名「ａ／ＥＰＧＸｌｅｔ１」の組である。
【０１２６】
ＡＭ１３０５ｂは、ＸＡＩＴ情報を受け取ると、ＡＩＴ情報からＪａｖａアプリケーションをダウンロードした手順と同じ手順で、ＭＰＥＧ２トランスポートストリームからファイルシステムを１次記憶部５１１に保存する。その後、保存したファイルシステムを２次記憶部５１０に複写する。なお、１次記憶部５１１を介さず、直接２次記憶部５１０にダウンロードすることも実施可能である。
【０１２７】
次に、ＡＭ１３０５ｂは、ＸＡＩＴ情報にダウンロードしたファイルシステムの格納位置を対応つけて２次記憶部５１０に保存する。図２２は、２次記憶部５１０がＸＡＩＴ情報とダウンロードしたファイルシステムが対応つけられて保存されている一例を表す。なお、図２２の中で、図２１と同じ番号の要素は図２１と同じなので、説明は省略する。列２２０１は対応するダウンロードしたファイルシステムの保存位置を格納する。図中、保存位置は矢印で示している。２２１０はダウンロードしたファイルシステムであり、内部にトップディレクトリ２２１１、ディレクトリ「ａ」２２１２、ディレクトリ「ｂ」２２１３、ファイル「ＥＰＧＸｌｅｔ１．ｃｌａｓｓ」２２１４、ファイル「ＥＰＧＸｌｅｔ２．ｃｌａｓｓ」２２１５を保持する。
【０１２８】
ここで、ＸＡＩＴ情報については、Ｊａｖａアプリケーションを保存してから保存しているが、Ｊａｖａアプリケーションを保存する前に保存することも実施可能である。
【０１２９】
端末装置５００に電源が投入された後、ＯＳ１３０１が、サービスマネージャ１３０５ｇをＪａｖａＶＭ１３０３に指定し、ＪａｖａＶＭ１３０３がサービスマネージャ１３０５ｇを起動した後、サービスマネージャ１３０５ｇは、最初に２次記憶部５１０に保存されたＸＡＩＴ情報を参照する。ここでは、各Ｊａｖａアプリケーションの制御情報を参照し、「ａｕｔｏｓｅｌｅｃｔ」のプログラムをＪａｖａＶＭ１３０３に引き渡し、起動する。図２２を参照して、行２１１１で定義されるＪａｖａアプリケーション「ＥＰＧＸｌｅｔ１」が起動される。ここで、ＡＩＴに記載されているＪａｖａアプリケーションはチューニングに依存するので、ユーザによって他のチャンネルが選択されると、起動しているＪａｖａアプリケーションが停止することがあるが、ＸＡＩＴの情報に記載されているＪａｖａアプリケーションは、ＡＩＴに記載されているＪａｖａアプリケーションと異なりチューニングに依存しないので、一度起動されると、意図的にＪａｖａアプリケーションを停止しない限り停止しない。
【０１３０】
なお、「ａｕｔｏｓｅｌｅｃｔ」によって自動実行されないＪａｖａアプリケーションについては、ＥＰＧ１３０２自身が起動することも可能である。
【０１３１】
（アプリケーション例１）
次に、アプリケーション例１として、課金管理を行うアプリケーションの動作を説明する。
【０１３２】
ここでは、本発明の目的である外部アプリケーションの制御についてＥＰＧ１３０２のサブプログラムとして定義されるアプリケーション制御部１３０２ｃを用いて説明する。アプリケーション制御部１３０２ｃはＪａｖａＶＭ１３０３およびＪａｖａライブラリ１３０５のいずれの上でも動作しない外部アプリケーションを制御するサブプログラムである。なお、本アプリケーション例では、外部アプリケーションの一例として、ＡｊａｘＣＥアプリケーション１３０８を用いる。ＡｊａｘＣＥアプリケーション１３０８はＡｊａｘＣＥミドルウェア１３０７の上で動作する。
【０１３３】
つまり、本アプリケーション例では、ＡｊａｘＣＥミドルウェア１３０７がＯＳ１３０１上で動作する第１のミドルウェアの一例であり、ＪａｖａＶＭ１３０３およびＪａｖａライブラリ１３０５がＯＳ１３０１上で動作する第２のミドルウェアの一例であり、ＡｊａｘＣＥアプリケーション１３０８が第１のミドルウェア上で動作する第１のアプリケーションプログラムの一例であり、ＥＰＧ１３０２（あるいはアプリケーション制御部１３０２ｃ）が第２のミドルウェア上で動作する、課金またはペアレンタルロック管理（本アプリケーション例では課金）を行う第２のアプリケーションプログラムの一例である。
【０１３４】
なお、ＡｊａｘＣＥアプリケーション１３０８およびＡｊａｘＣＥミドルウェア１３０７を本例では用いるが、外部アプリケーション（第１のアプリケーション）およびその実行エンジンとしてのミドルウェア（第１のミドルウェア）としては、これに限定されるわけではなく、セットトップボックス上で動作可能な任意のアプリケーションおよびミドルウェアに適用可能である。
【０１３５】
アプリケーション制御部１３０２ｃは図２３のように構成される。つまり、このアプリケーション制御部１３０２ｃは、アプリケーションリスト表示部２３０１、購入処理部２３０２、アプリケーション起動部２３０３およびアプリケーション起動判定部２３０４から構成される。
【０１３６】
アプリケーションリスト表示部２３０１は、少なくとも第１のミドルウェア（ここでは、ＡｊａｘＣＥミドルウェア１３０７）上で動作するアプリケーションプログラムを表示するとともに、第１のアプリケーションプログラム（ここでは、ＡｊａｘＣＥアプリケーション１３０８）を実行する旨の指示を受け付ける処理部である。ここでは、アプリケーションリスト表示部２３０１は、第１のミドルウェア（ここでは、ＡｊａｘＣＥミドルウェア１３０７）および第２のミドルウェア（ここでは、ＪａｖａＶＭ１３０３）上で動作するアプリケーションプログラムを表示し、それらに対する実行指示を受け付ける。
【０１３７】
アプリケーション起動判定部２３０４は、第１のアプリケーションプログラム（ここでは、ＡｊａｘＣＥアプリケーション１３０８）が購入されているか否かに関する課金情報を取得し、取得した課金情報に基づいて、第１のアプリケーションプログラム（ここでは、ＡｊａｘＣＥアプリケーション１３０８）の実行可否を判定する処理部である。なお、課金情報は、第１のアプリケーションプログラム（ここでは、ＡｊａｘＣＥアプリケーション１３０８）が購入されているか否かに関する情報であり、必ずしも料金に関する情報を含む必要はない。
【０１３８】
なお、アプリケーションリスト表示部２３０１およびアプリケーション起動判定部２３０４は、第１のアプリケーションプログラムおよび第２のアプリケーションプログラムを含む、第１のミドルウェアおよび第２のミドルウェア上で動作するアプリケーションプログラムの属性を予め保持しているデータベース（ＥｘｔｅｒｎａｌＡＭ１３０５ｈで定義されているＥｘｔｅｒｎａｌＡｐｐｓＤａｔａｂａｓｅ）を参照することで、上記リスト表示および起動判定を行う。
【０１３９】
アプリケーション起動部２３０３は、アプリケーション起動判定部２３０４によって第１のアプリケーションプログラム（ここでは、ＡｊａｘＣＥアプリケーション１３０８）が実行可能と判定された場合に、第２のミドルウェア（ここでは、ＪａｖａＶＭ１３０３およびＪａｖａライブラリ１３０５）および第１のミドルウェア（ここでは、ＡｊａｘＣＥミドルウェア１３０７）を通じて、第１のアプリケーションプログラムを起動する処理部である。
【０１４０】
購入処理部２３０２は、アプリケーション起動判定部２３０４で第１のアプリケーションプログラム（ここでは、ＡｊａｘＣＥアプリケーション１３０８）が未購入であるために実行不可と判定された場合、第１のアプリケーションプログラム（ここでは、ＡｊａｘＣＥアプリケーション１３０８）の購入処理をおこなう処理部である。
【０１４１】
以下、これらの構成要素について、より詳細に説明する。
【０１４２】
図１４のようにＥＰＧ画面を表示中に特定のボタン、たとえばＩｎｆｏボタン１１０９を押すと、アプリケーション制御部１３０２ｃのサブプログラムであるアプリケーションリスト表示部２３０１がアプリケーションのリストを画面に表示しようとする。
【０１４３】
アプリケーションリスト表示部２３０１は、Ｊａｖａライブラリ１３０５のＥｘｔｅｒｎａｌＡＭ１３０５ｈを利用し、アプリケーションのリストを取得する。
【０１４４】
ここでＥｘｔｅｒｎａｌＡＭ１３０５ｈでは図２４のようなクラス（ＥｘｔｅｒｎａｌＡｐｐｓＤａｔａｂａｓｅクラス２４０１、ＥｘｔｅｒｎａｌＡｐｐＦｉｌｔｅｒクラス２４０２、ＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅクラス２４０３）が定義されている。図２４（ａ）に示されるように、ＥｘｔｅｒｎａｌＡｐｐｓＤａｔａｂａｓｅクラス２４０１はＤＶＢ−ＭＨＰ規格で定義されるＡｐｐｓＤａｔａｂａｓｅクラスを拡張したものである。このクラスは、個々のアプリケーション（Ｊａｖａプログラム）の情報を管理する。このＥｘｔｅｒｎａｌＡｐｐｓＤａｔａｂａｓｅクラス２４０１のｇｅｔＡｐｐｓＤａｔａｂａｓｅメソッド２４０１ａはＥｘｔｅｒｎａｌＡｐｐｓＤａｔａｂａｓｅクラス２４０１のインスタンスを取得するために使用される。このＥｘｔｅｒｎａｌＡｐｐｓＤａｔａｂａｓｅクラス２４０１のｇｅｔＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅ（ＥｘｔｅｒｎａｌＡｐｐＦｉｌｔｅｒ）メソッド２４０１ｂは引数のＥｘｔｅｒｎａｌＡｐｐＦｉｌｔｅｒで指定されている基準に適合したＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅクラス２４０３のインスタンスのリストを返す。
【０１４５】
図２４（ｃ）に示されるように、ＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅクラス２４０３はＯＣＡＰ規格で定義されるＯｃａｐＡｐｐＡｔｔｒｉｂｕｔｅｓクラスを拡張したものである。このクラスは個々のアプリケーションに関する情報を保持する。例えば、アプリケーションの識別子（ＩＤ）、アプリケーションのタイプ（ＯＣＡＰのアプリケーションか、あるいはそれ以外かの区別など）、優先度等が定義される。このＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅクラス２４０３のｇｅｔＭｅｔａＤａｔａ（）メソッド２４０３ａは、外部アプリケーションがどのようなアプリケーションか説明するために必要な詳細な情報を返す。このｇｅｔＭｅｔａＤａｔａ（）メソッド２４０３ａは戻り値として文字列の配列を返す。１つの文字列は、キーとその値の組を表し、“ｋｅｙ＝ｖａｌｕｅ”の形式で構成される。１つのｋｅｙに対して複数のｖａｌｕｅが存在する場合、“ｋｅｙ＝ｖａｌｕｅ１、ｖａｌｕｅ２”のように構成される。一例としては、“ｇｅｎｒｅ＝ａｃｔｉｏｎ”、“ａｕｔｈｏｒ＝ａａａ”のように構成される。その他、本発明で使用されるｋｅｙ、ｖａｌｕｅに関しては適宜説明する。
【０１４６】
ＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅクラス２４０３のｇｅｔＲａｔｉｎｇＩｎｆｏ（）メソッド２４０３ｂはこのＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅクラス２４０３のインスタンスが表すアプリケーションのレーティング情報を返す。例えば、“Ｅ１０＋”など、文字列として返す。なお“Ｅ１０＋”は対象年齢が１０歳以上を意味する。
【０１４７】
ＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅクラス２４０３のｉｓＰｕｒｃｈａｓｅｄ（）メソッド２４０３ｃはこのアプリケーションがすでに購入されているかどうかを示す。基本的に、購入されたアプリケーションはセットトップボックス内に保存されることが期待されるが、ケースによっては、保存されず、実行されるたびにダウンロードされることもありうる。
【０１４８】
ＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅクラス２４０３のｉｓＦｒｅｅ（）メソッド２４０３ｄはこのアプリケーションが無料か否かを示す。
【０１４９】
ＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅクラス２４０３のｉｓＥｘｐｉｒｅｄ（）メソッド２４０３ｅはこのアプリケーションの有効期限内か否かを示す。
【０１５０】
ＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅクラス２４０３のｓｅｔＰｕｒｃｈａｓｅｄ（ｂｏｏｌｅａｎ）メソッド２４０３ｆはこのアプリケーションが購入されたかどうかをセットする。
【０１５１】
ＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅクラス２４０３のｓｅｔＥｘｐｉｒａｔｉｏｎ（ｊａｖａ．ｕｔｉｌ．Ｄａｔｅ）メソッド２４０３ｇはこのアプリの有効期限をセットするのに使用する。
【０１５２】
図２４（ｂ）に示されるように、ＥｘｔｅｒｎａｌＡｐｐＦｉｌｔｅｒクラス２４０２はＥｘｔｅｒｎａｌＡｐｐｓＤａｔａｂａｓｅクラス２４０１のｇｅｔＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅメソッド２４０１ｂの引数において、取得するべきアプリケーションをフィルタするのに用いる。ＥｘｔｅｒｎａｌＡｐｐＦｉｌｔｅｒクラス２４０２のｓｅｔＦｉｌｔｅｒｉｎｇＲｕｌｅ（Ｓｔｒｉｎｇ）メソッド２４０２ａを用いて、フィルタリングするルールを定める。例えばフィルタリングルールとして“ｇｅｎｒｅ＝ａｃｔｉｏｎ、ｐｕｚｚｌｅ”とした場合、左記ルールに適合したメタデータを持つアプリケーションが取得される。
【０１５３】
アプリケーションリスト表示部２３０１がアプリケーションのリストを表示するときのシーケンスを図２５に示す。
【０１５４】
まず、ユーザがＩｎｆｏボタン１１０９を押下すると、アプリケーションリスト表示部２３０１がその押下を検知する（Ｓ２５０１）。アプリケーションリスト表示部２３０１はＥｘｔｅｒｎａｌＡｐｐｓＤａｔａｂａｓｅをｇｅｔＡｐｐｓＤａｔａｂａｓｅメソッド２４０１ａにより取得する（Ｓ２５０２）。アプリケーションリスト表示部２３０１はＥｘｔｅｒｎａｌＡｐｐｓＦｉｌｔｅｒを生成し、ｇｅｔＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅメソッド２４０１ｂを呼ぶ（Ｓ２５０３）。ＥｘｔｅｒｎａｌＡＭ１３０５ｈは、すでに保存されているアプリケーションのうち指定されたフィルタリング条件にあうアプリケーションをあらわすＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅクラス２４０３のインスタンス（ＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅインスタンス）を生成する（Ｓ２５０４）。ＥｘｔｅｒｎａｌＡＭ１３０５ｈは、ネットワーク１３０５ｉを用いて指定されたＥｘｔｅｒｎａｌＡｐｐｓＦｉｌｔｅｒに合致したアプリケーションの情報をサーバに問い合わせ、返信された情報に基づき、ＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅインスタンスを生成する（Ｓ２５０５）。ＥｘｔｅｒｎａｌＡＭ１３０５ｈは生成したＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅインスタンスのリストをアプリケーションリスト表示部２３０１に返す（Ｓ２５０６）。最後にアプリケーションリスト表示部２３０１は返ってきた情報に基づき、画面にアプリケーションのリストを表示する（Ｓ２５０７）。
【０１５５】
図２６にアプリケーションリスト表示部２３０１によるアプリケーションリスト画面を示す。図２６において、列２６０１はアプリケーション名、列２６０２はアプリケーションが動作するミドルウェア、列２６０３は購入済みか否かあるいはアプリケーションの価格（つまり、課金情報）を表す。購入か否かはｉｓＰｕｒｃｈａｓｅｄ（）メソッド２４０３ｆにより取得した値を参照している。価格は例えば、ｇｅｔＭｅｔａｄａｔａ（）メソッド２４０３ａより取得した値のうち、“ｐｒｉｃｅ＝”以下の値を参照する。列２６０４は購入済みの場合、アプリケーションの有効期限を表す。これはｉｓＥｘｐｉｒｅｄ（）メソッド２４０３ｅの戻り値を参照している。また、列２６１０は、各アプリケーションの識別子を表す。行２６０５は１つ目のアプリケーションを表す。この行２６０５は、アプリケーションが、アプリケーションＩＤ（識別子）１０を持ち、ＡｊａｘＣＥミドルウェア上で動作し、未購入で、価格は＄９．９９であることを示す。行２６０６は２つ目のアプリケーションを表し、具体的には、識別子が１１、ＡｊａｘＣＥミドルウェア上で動作し、価格は無料であることを示す。行２６０７は３つ目のアプリケーションを表し、具体的には、識別子が１２、ＡｊａｘＣＥミドルウェア上で動作し、購入済みであることを示す。また、有効期限内であることも示す。２６０８はカーソルを表し、上カーソル１１０１、下カーソル１１０２を押下されると、カーソルが上下に動く。ボタン２６０９は、カーソルがここにあるとき、ＯＫボタン１１０５が押下されると、図１４で示されるＥＰＧ画面に戻ることを示す。
【０１５６】
なお、本例ではミドルウェアとしてＡｊａｘＣＥのもののみリストしているが、これは、図２５におけるステップＳ２５０３のＥｘｔｅｒｎａｌＡｐｐｓＦｉｌｔｅｒにおいてＡｊａｘＣＥミドルウェア上で動作するアプリのみ取得するようにフィルタリングすることにより、ＡｊａｘＣＥミドルウェア上で動作するアプリケーションのみ取得することができ、取得した情報を用いて、図２６にて行２６０５から行２６０７のアプリケーションをリストできる。このようにＥｘｔｅｒｎａｌＡｐｐｓＦｉｌｔｅｒを用いてどのようにフィルタリングするかは、例えば前もってユーザがプレファレンスを設定することにより、その設定を用いてフィルタリング条件を設定することができる。
【０１５７】
なお、アプリケーションリストのフィルタリングについては、図２７に示される表示例のように、フィルタリング条件を設定できるボタンを用意してもよい。図２７において、３３０１はアプリケーションの種類、例えば、ゲーム、人気のアプリ、新作アプリなどのフィルタリングを設定できるボタン、３３０２はミドルウェアの種類のフィルタリングを設定できるボタン、３３０３は価格の種類、例えば、有料、無料など、のフィルタリングを設定できるボタンを表す。その他は、図２６と同じであるので、図２６を参照されたい。ここではボタン３３０２が押下された時の表示例を図２８に示す。カーソルが３３０２にあわされ、ボタンが押下されると、図２８のリスト３４０１のように、ミドルウェアの種類を選択できるボタンが表示される。リスト３４０１では、“すべて”、“ＯＣＡＰ”、“ＡｊａｘＣＥ”の３つのボタンがリストされている。ここで、“ＡｊａｘＣＥ”を選択すると、図２７の行２６０５−２６０７のようにＡｊａｘＣＥミドルウェア上で動作するアプリケーションがリストされる。
【０１５８】
ここで、図２６を参照して、購入済みアプリケーション「ＹｏｕＴｕｂｅ」（図２６の行２６０７）にカーソルをあてて選択した時のシーケンスを図２９に示す。図２９は、本発明に係る外部アプリケーションの起動シーケンスを示す図である。図３０は、図２９の起動シーケンスを説明するための図である。図３０には、端末装置５００が保存するプログラム構成と図２９におけるステップ名とが記載されている。以下、図２９および図３０を参照しながら説明する。
【０１５９】
まず、ユーザがＯＫボタン１１０５を押下し、アプリケーション「ＹｏｕＴｕｂｅ」（図２６の行２６０７）を選択する（Ｓ２７０１）。つまり、アプリケーションリスト表示部２３０１は、第１のアプリケーションプログラム（ここでは、アプリケーション「ＹｏｕＴｕｂｅ」）についての実行指示を受け付ける（受け付けステップ）。
【０１６０】
アプリケーションリスト表示部２３０１は、アプリケーション起動部２３０３へ、指定されたアプリケーション「ＹｏｕＴｕｂｅ」（図２６の行２６０７）の識別子をわたし、起動を要求する（Ｓ２７０２）。
【０１６１】
アプリケーション起動部２３０３はＥｘｔｅｒｎａｌＡｐｐｓＤａｔａｂａｓｅより、該当アプリケーションＡｐｐＰｒｏｘｙを取得する（Ｓ２７０３）。ここでＡｐｐＰｒｏｘｙとはＤＶＢ−ＭＨＰ規格により定義されるクラスであり、このクラスを用いてアプリケーションの開始、停止等ライフサイクルを制御することができる。
【０１６２】
次にアプリケーション起動部２３０３はアプリケーション起動判定部２３０４へ指定されたアプリケーション「ＹｏｕＴｕｂｅ」の識別子をわたし、起動の可否を問い合わせる（Ｓ２７０４）。
【０１６３】
アプリケーション起動判定部２３０４はアプリケーション「ＹｏｕＴｕｂｅ」の購入情報ｉｓＰｕｒｃｈａｓｅｄ（）メソッド２４０３ｃ、ｉｓＦｒｅｅ（）メソッド２４０３ｄ、ｉｓＥｘｐｉｒｅｄ（）メソッド２４０３ｅをもとに起動の可否を返答する（Ｓ２７０５）。つまり、アプリケーション起動判定部２３０４は、第１のアプリケーションプログラム（ここでは、アプリケーション「ＹｏｕＴｕｂｅ」）が購入されているか否かに関する課金情報を取得し（取得ステップ）、取得した課金情報に基づいて、第１のアプリケーションプログラム（ここでは、アプリケーション「ＹｏｕＴｕｂｅ」）の実行可否を判定する（判定ステップ）。ここでは、アプリケーション「ＹｏｕＴｕｂｅ」は購入済みであるので（図２７参照）、アプリケーション起動判定部２３０４は、アプリケーション起動部２３０３に、起動可能と返答する。
【０１６４】
アプリケーション起動部２３０３はＡｐｐＰｒｏｘｙクラスのｓｔａｒｔ（）メソッドを用いて、アプリケーションの起動をＥｘｔｅｒｎａｌＡＭ１３０５ｈへ要求する（Ｓ２７０６）。つまり、アプリケーション起動判定部２３０４によって第１のアプリケーションプログラム（ここでは、アプリケーション「ＹｏｕＴｕｂｅ」）が実行可能と判定された場合に、アプリケーション起動部２３０３は、第２のミドルウェア（ここでは、ＪａｖａＶＭ１３０３およびＪａｖａライブラリ１３０５）および第１のミドルウェア（ここでは、ＡｊａｘＣＥミドルウェア１３０７）を通じて、第１のアプリケーションプログラムを起動する（起動ステップ）。具体的には、以下の処理が行われる。
【０１６５】
ＥｘｔｅｒｎａｌＡＭ１３０５ｈは、アプリケーションが動作するミドルウェアを特定する（Ｓ２７０７）。例えば、ＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅクラス２４０３のｇｅｔＭｅｔａｄａｔａ（）メソッド２４０３ａの戻り値のうち、文字列“ｍｉｄｄｌｅｗａｒｅ＝”以下の部分を参照することにより、特定できる。
【０１６６】
最後にＥｘｔｅｒｎａｌＡＭ１３０５ｈは、該当のミドルウェアに、この場合はＡｊａｘＣＥミドルウェア１３０７にアプリケーション「ＹｏｕＴｕｂｅ」の識別子をわたし、起動を要求する（Ｓ２７０８）。
【０１６７】
以上のように、本アプリケーション例１によれば、第１のミドルウェア（ＡｊａｘＣＥミドルウェア１３０７）上で動作する第１のアプリケーション（ＡｊａｘＣＥアプリケーション１３０８）と、第２のミドルウェア（ＪａｖａＶＭ１３０３）上で動作する、課金またはペアレンタルロックの管理を行う第２のアプリケーション（アプリケーション制御部１３０２ｃ）とを備える端末装置５００において、第２のアプリケーションが、第１のアプリケーションについての実行指示を受け付け（Ｓ２７０１）、第１のアプリケーションについての課金情報を取得して第１のアプリケーションの実行可否を判定し（Ｓ２７０２〜Ｓ２７０５）、実行可能と判定した場合に、第２のミドルウェアおよび第１のミドルウェアを通じて第１のアプリケーションを起動する（Ｓ２７０６〜Ｓ２７０８）。
【０１６８】
これにより、第２のミドルウェア上で動作する第２のアプリケーションプログラムによる管理の下で、第１のミドルウェア上で動作する第１のアプリケーションプログラムに対する実行可否の判断および起動が行われる。よって、異なるミドルウェアのそれぞれの上で動作するアプリケーションプログラムに対する課金に関する管理は、第２のアプリケーションプログラムによる管理に統一される。その結果、ユーザは、異なるミドルウェア上で動作する複数のアプリケーションプログラムに対して統一された一つの操作（例えば、ＯＣＡＰアプリケーションでの操作）で課金に関する管理を行うことができる。
【０１６９】
なお、起動されるアプリケーションは、セットトップボックスの２次記憶部５１０に保存されていてもよいし、あるいは、直接、アプリケーション「ＹｏｕＴｕｂｅ」を保持するサーバからダウンロードしてもよい。サーバからダウンロードし、起動する場合は、１次記憶部５１１へ一度アプリケーションをダウンロードし、そこから読みだすことで、ＡｊａｘＣＥミドルウェア１３０７はアプリケーション「ＹｏｕＴｕｂｅ」（つまり、ＡｊａｘＣＥアプリケーション１３０８）を起動する。ただし、アプリケーションの購入状況は保存しておく必要がある。
【０１７０】
なお、無料アプリケーション「ゲーム２」（図２６の行２６０６）の場合も上記シーケンスと同等なので、その説明を省略する。
【０１７１】
次に、未購入のアプリケーション「ゲーム１」（図２６の行２６０５）を起動するシーケンスを図３１に示す。なお、このシーケンスは、ステップＳ２７０５までは、購入済みのアプリケーション「ＹｏｕＴｕｂｅ」（図２６の行２６０７）のシーケンスと同じである。
【０１７２】
アプリケーション起動判定部２３０４にて起動が許可されない場合、かつ未購入であることが原因である場合、アプリケーション起動部２３０３は購入処理部２３０２にアプリケーションの購入処理を要求する（Ｓ２８０１）。
【０１７３】
購入処理部２３０２はダイアログを出し、ユーザに購入するか否かを問い合わせる（Ｓ２８０２）。ここでダイアログの表示例を図３２に示す。ダイアログ２９０１はディスプレイ５０９上に表示され、購入の対象となるアプリケーション名、値段、および、購入を問い合わせるメッセージが表示される。また「はい」ボタン２９０２と「いいえ」ボタン２９０３の２つのボタンが表示され、カーソル２９０４は上記２つのボタンのうち１つに合っている。
【０１７４】
ユーザが購入することを選択した場合、すなわち、カーソル２９０４が「はい」ボタンにあり、ユーザがＯＫボタン１１０５を押下したとき、購入処理部２３０２はＨ／Ｅとやり取りを行い、購入処理を行う（Ｓ２８０３）。購入処理は、ＰＰＶ番組の購入等と同じくＣａｂｌｅサービス事業者のアプリケーションとＨ／Ｅ、課金システム間のＰｒｏｐｒｉｅｔａｒｙな方法で実現されることが想定される。これにより、同一のアプリケーションの購入、ＰＰＶ、ＶＯＤ番組の購入を同一の手法で実現できる。また、同一の最大購入金額、最大購入回数等の制限も共有できるメリットが考えられる。しかしながら、この方法に限定されるわけではない。
【０１７５】
購入処理が完了すると、購入処理部２３０２はアプリケーション起動部２３０３に購入処理が完了したことを通知する（Ｓ２８０４）。また、購入処理が終了したとき、アプリケーション「ゲーム１」（図２６の行２６０５）を表すＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅクラス２４０３のｓｅｔＰｕｒｃｈａｓｅｄ（ｔｒｕｅ）メソッド２４０３ｆも呼び出し、購入状態を更新する。
【０１７６】
これ以降は、図２９のＳ２７０６以降の処理と同じである。
【０１７７】
このようにして、上記判定ステップで第１のアプリケーションプログラムが未購入であるために実行不可と判定された場合、購入処理部２３０２は、その第１のアプリケーションプログラムの購入処理をおこなう（購入ステップ）。
【０１７８】
以上のように、ＡｊａｘＣＥアプリケーション１３０８（つまり、第１のアプリケーション）の購入情報をＥＰＧ１３０２（つまり、第２のアプリケーション）が取得できることにより、ＥＰＧ１３０２（つまり、第２のアプリケーション）は購入状況から適切にＡｊａｘＣＥアプリケーション１３０８（つまり、第１のアプリケーション）の起動の可否を判別できるようになった。また、ＥＰＧアプリケーション（つまり、第２のアプリケーション）の購入プロセスを用いることにより、購入プロセスの１元化することも可能になる。
【０１７９】
このように、購入プロセスを一元化することにより、ユーザは、ミドルウェアおよびアプリケーションごとに購入に関する設定、例えば、クレジットカード情報の設定などを行う必要がなくなり、煩雑さの軽減につながる。
【０１８０】
なお、ここでは、ＡｊａｘＣＥミドルウェア１３０７およびＡｊａｘＣＥアプリケーション１３０８を異種のミドルウェアおよび外部アプリケーションの例として述べたが、異種のミドルウェアおよび外部アプリケーションとしては、他の任意のミドルウェアおよびアプリケーションに対して適用できる。また、複数のミドルウェアが存在していても同様に適用できる。
【０１８１】
（アプリケーション例２）
次に、アプリケーション例２として、ペアレンタルロック管理を行うアプリケーションの動作を説明する。
【０１８２】
アプリケーション例１では、外部アプリケーションの購入状況をＥＰＧアプリケーションに提示することにより、ＥＰＧアプリケーションが購入状況に応じて適切にアプリケーションを起動することができた。また、アプリケーションの購入プロセスも既存の購入プロセスを利用することで１元化が可能になった。
【０１８３】
本アプリケーション例では、特にペアレンタルロック情報に着目する。本アプリケーション例におけるアプリケーション制御部１３０２ｃの構成例は図３３に示す。本アプリケーション例では、アプリケーション制御部１３０２ｃは、アプリケーションリスト表示部２３０１、ペアレンタルロック情報管理部３００１、アプリケーション起動部２３０３およびアプリケーション起動判定部２３０４から構成される。図３３において、アプリケーションリスト表示部２３０１、アプリケーション起動部２３０３、アプリケーション起動判定部２３０４は図２３と基本的な機能が同じであるため、説明を省略する。アプリケーション例１と異なる点を中心に説明する。
【０１８４】
ペアレンタルロック情報管理部３００１は、ユーザにより設定されたペアレンタルロック情報を保持する記憶部である。
【０１８５】
本アプリケーション例では、アプリケーション起動判定部２３０４は、ペアレンタルロック情報管理部３００１から、第１のアプリケーションプログラム（ここでは、ＡｊａｘＣＥアプリケーション１３０８）についてのペアレンタルロックの有無を示すペアレンタルロック情報を取得し、取得したペアレンタルロック情報に基づいて、第１のアプリケーションプログラム（ここでは、ＡｊａｘＣＥアプリケーション１３０８）の実行可否を判定する。以下、これらの構成要素について、より詳細に説明する。
【０１８６】
図３３に示されるように、本アプリケーション例では、アプリケーション制御部１３０２ｃは、図２３における購入処理部２３０２の代わりにペアレンタルロック情報管理部３００１を持つ。一般にＥＰＧアプリケーションは、ペアレンタルロック機能を持ち、番組の視聴制限を実現する。ペアレンタルロックはユーザにより設定される。ペアレンタルロック情報管理部３００１はユーザにより設定されたペアレンタルロック情報を保持する。さて、いま、アプリケーションリスト表示部２３０１がアプリケーションのリストを表示するとする。表示するための処理は、図２６のシーケンスと同じであるので、その説明を省略する。アプリケーションリストの表示例を図３４に示す。図３４において、列３１０１はレーティング情報を示す。レーティング情報は、ＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅクラス２４０３のｇｅｔＲａｔｉｎｇＩｎｆｏ（）メソッド２４０３ｂにより取得された値である。それ以外の項目に関しては図２６と同じであるので説明は省略する。
【０１８７】
ここで、ユーザがアプリケーション「ＹｏｕＴｕｂｅ」（図２６の行２６０７）を選択した場合を考える。このときのシーケンスは図３５で示される。
【０１８８】
図３５のシーケンスにおいて、ステップＳ２７０１−Ｓ２７０４までは図２９のそれと同じであるので、その説明を省略する。
【０１８９】
ステップＳ３２０１において、アプリケーション起動判定部２３０４はペアレンタルロック情報をペアレンタルロック情報管理部３００１より取得し、アプリケーション「ＹｏｕＴｕｂｅ」（図２６の行２６０７）のレーティング情報と比較し起動の可否を判断する。つまり、アプリケーション起動判定部２３０４は、第１のアプリケーションプログラム（ここでは、アプリケーション「ＹｏｕＴｕｂｅ」）についてのペアレンタルロックの有無を示すペアレンタルロック情報を取得し（取得ステップ）、取得したペアレンタルロック情報に基づいて、第１のアプリケーションプログラム（ここでは、アプリケーション「ＹｏｕＴｕｂｅ」）の実行可否を判定する（判定ステップ）。
【０１９０】
アプリケーション「ＹｏｕＴｕｂｅ」（図２６の行２６０７）のレーティング情報はアプリケーション「ＹｏｕＴｕｂｅ」（図２６の行２６０７）の情報を保持するＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅクラス２４０３のインスタンスにおいてｇｅｔＲａｔｉｎｇＩｎｆｏ（）メソッド２４０３ｂを呼び出すことにより取得できる。アプリケーション起動判定部２３０４は、ペアレンタルロック情報と、アプリケーション「ＹｏｕＴｕｂｅ」（図２６の行２６０７）のレーティング情報を比較し、アプリの起動が許可される場合は、その旨をアプリケーション起動部２３０３に通知する。これ以降、ステップＳ２７０６−Ｓ２７０８は図２９のそれと同じであるので、説明を省略する。
【０１９１】
以上のように、本アプリケーション例２によれば、第１のミドルウェア（ＡｊａｘＣＥミドルウェア１３０７）上で動作する第１のアプリケーション（ＡｊａｘＣＥアプリケーション１３０８）と、第２のミドルウェア（ＪａｖａＶＭ１３０３）上で動作する、課金またはペアレンタルロックの管理を行う第２のアプリケーション（アプリケーション制御部１３０２ｃ）とを備える端末装置５００において、第２のアプリケーションが、第１のアプリケーションについての実行指示を受け付け（Ｓ２７０１）、第１のアプリケーションについてのペアレンタルロック情報を取得して第１のアプリケーションの実行可否を判定し（Ｓ２７０２〜Ｓ３２０１）、実行可能と判定した場合に、第２のミドルウェアおよび第１のミドルウェアを通じて第１のアプリケーションを起動する（Ｓ２７０６〜Ｓ２７０８）。
【０１９２】
これにより、第２のミドルウェア上で動作する第２のアプリケーションプログラムによる管理の下で、第１のミドルウェア上で動作する第１のアプリケーションプログラムに対する実行可否の判断および起動が行われる。よって、異なるミドルウェアのそれぞれの上で動作するアプリケーションプログラムに対するペアレンタルロックに関する管理は、第２のアプリケーションプログラムによる管理に統一される。その結果、ユーザは、異なるミドルウェア上で動作する複数のアプリケーションプログラムに対して統一された一つの操作（例えば、ＯＣＡＰアプリケーションでの操作）でペアレンタルロックに関する管理を行うことができる。
【０１９３】
このように、外部のアプリケーション（つまり、第１のアプリケーション）のペアレンタルロック情報をＥＰＧアプリ（つまり、第２のアプリケーション）に開示することにより、ＥＰＧアプリケーション（つまり、第２のアプリケーション）は、外部アプリケーション（つまり、第１のアプリケーション）の起動の可否を適切に判断できる。また、ＥＰＧアプリケーション（つまり、第２のアプリケーション）が利用しているペアレンタルロック情報を共有することにより、ペアレンタルロック情報管理の一元化も同時に行うことが可能になる。
【０１９４】
このように、管理の一元化を行うことで、ユーザがミドルウェアごとにペアレンタルロック情報を設定する必要がなくなり、手間を省くことができ、また、設定ミスも軽減できる。
【０１９５】
以上、本発明に係るプログラム実行方法およびその装置について、実施の形態、アプリケーション例１およびアプリケーション例２に基づいて説明したが、本発明は、このような実施の形態等に限定されない。本発明の主旨を逸脱しない範囲で、各実施の形態に対して当業者が思いつく各種変形を施して得られる形態や、各実施の形態の構成要素を任意に組み合わせて得られる形態も、本発明に含まれる。
【０１９６】
たとえば、上記実施の形態では、第２のアプリケーションが第１のアプリケーションの属性を取得するために、第１のミドルウェアおよび第２のミドルウェア上で動作するアプリケーションの属性を予め保持しているデータベースデータベース（ＥｘｔｅｒｎａｌＡＭ１３０５ｈで定義されているＥｘｔｅｒｎａｌＡｐｐｓＤａｔａｂａｓｅ）を参照したが、第１のアプリケーションの属性を取得する方法としては、これに限られない。第２のアプリケーションが、第２のミドルウェアおよび第１のミドルウェアを介して第１のアプリケーションに対する問い合わせを行い、その第１のアプリケーションから回答を得ることで、課金情報およびペアレンタルロック情報等の属性を取得してもよい。
【０１９７】
つまり、アプリケーションの属性については、データベースを介さずに、あるいは、データベースを介する方法に加えて、アプリケーション間での通信によって取得してもよい。
【０１９８】
また、上記実施の形態では、端末装置のミドルウェア（ＪａｖａＶＭ１３０３）上で動作するＯＣＡＰアプリケーションがミドルウェア（ＡｊａｘＣＥミドルウェア１３０７）上で動作するアプリケーション（ＡｊａｘＣＥアプリケーション１３０８）を統合管理したが、逆の統合管理であってもよい。たとえば、ＡｊａｘＣＥアプリケーション１３０８が、自ら有する課金およびペアレンタルロック管理の下で、ＯＣＡＰアプリケーションを実行制御してもよい。これにより、ユーザは、任意のアプリケーションによって統合された共通の操作で、あらゆる種類のアプリケーションを購入したり、ペアレンタルロックの管理をしたりすることができる。
【産業上の利用可能性】
【０１９９】
本発明は、アプリケーションプログラムの実行を制御する装置として、特に、複数のミドルウェアが動作する環境において、異なるミドルウェア間のアプリケーションの制御を適切に行えるようにし、また、ペアレンタルロック情報、課金情報・課金処理の一元管理が可能になるので、課金またはペアレンタルロックに関する機能を備える装置として、例えば、デジタル放送受信装置、セットトップボックス等として、利用できる。
【符号の説明】
【０２００】
１０１    ヘッドエンド
１１１    端末装置Ａ
１１２    端末装置Ｂ
１１３    端末装置Ｃ
５００    端末装置
５０１    ＱＡＭ復調部
５０２    ＱＰＳＫ復調部
５０３    ＱＰＳＫ変調部
５０５    ＴＳデコーダ
５０６    オーディオデコーダ
５０７    スピーカ
５０８    ビデオデコーダ
５０９    ディスプレイ
５１０    ２次記憶部
５１１    １次記憶部
５１２    ＲＯＭ
５１３    入力部
５１４    ＣＰＵ
５１５    ＯＳＤ制御部
５１６    表示合成部
５１７    システム設定部
６０１    筐体
６０２    ディスプレイ
６０３    フロントパネル部
６０４    信号入力端子
６０５    カード
６０６    挿入スロット
７０１    第１デスクランブラ部
７０２    第２デスクランブラ部
７０３    スクランブラ部
７０４    第１記憶部
７０５    第２記憶部
７０６    ＣＰＵ
８００    プログラム
８０１    メインプログラム
８０２    初期化サブプログラム
８０３    ネットワークサブプログラム
８０４    再生サブプログラム
８０５    ＰＰＶサブプログラム
９００    パケット
９０１    ヘッダー
９０２    ペイロード
９０３    ヘッダーの内訳
１００１〜１００５、１０２６、１０２７    パケット
１１００    フロントパネル
１１０１    上カーソル
１１０２    下カーソル
１１０３    左カーソル
１１０４    右カーソル
１１０５    ＯＫボタン
１１０６    取消ボタン
１１０７    ＥＰＧボタン
１１０８    メニューボタン
１１０９    Ｉｎｆｏボタン
１２０１    補正アルファ値バッファ
１２０２    グラフィックスバッファ
１２０３    ビデオバッファ
１２０４    バックグラウンドバッファ
１２０５    スクリーンバッファ
１２１１、１２１２    合成器
１３００    プログラム
１３０１    ＯＳ
１３０１ａ  カーネル
１３０１ｂ  ライブラリ
１３０２    ＥＰＧ
１３０２ａ  番組表示部
１３０２ｂ  再生部
１３０２ｃ  アプリケーション制御部
１３０３    ＪａｖａＶＭ
１３０５    ライブラリ
１３０５ａ  ＪＭＦ
１３０５ｂ  ＡＭ
１３０５ｃ  Ｔｕｎｅｒ
１３０５ｄ  ＣＡ
１３０５ｅ  ＣａｂｌｅＣａｒｄ  Ｌｉｂ（ＰＯＤ  Ｌｉｂ）
１３０５ｆ  Ｇｒａｐｈｉｃｓ
１３０５ｇ  サービスマネージャ
１３０５ｈ  ＥｘｔｅｒｎａｌＡＭ
１３０５ｉ  ネットワーク
１３０６    入力マネージャ
１３０７    ＡｊａｘＣＥミドルウェア
１３０８    ＡｊａｘＣＥアプリケーション
１３８１８    ＩＳＯ／ＩＥＣ
１４０１〜１４０３、１５０１〜１５０４、１７０１、１７０２、１８０１〜１８０３、１９０１〜１９０４、２１０１〜２１０５、２６０１〜２１０４、２６１０、３１０１    列
１４３０    カーソル
１５１１〜１５１４、１７１１〜１７１３、１８１１〜１８１４、１９１１、１９１２、２１１１、２１１２、２６０５〜２１０７  行
２００１〜２００３、２２１１〜２２１３    ディレクトリ
２００４、２００５    ファイル
２３０１    アプリケーションリスト表示部
２３０２    購入処理部
２３０３    アプリケーション起動部
２３０４    アプリケーション起動判定部
２４０１    ＥｘｔｅｒｎａｌＡｐｐｓＤａｔａｂａｓｅクラス
２４０１ａ  ｇｅｔＡｐｐｓＤａｔａｂａｓｅメソッド
２４０１ｂ  ｇｅｔＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅメソッド
２４０２    ＥｘｔｅｒｎａｌＡｐｐＦｉｌｔｅｒクラス
２４０２ａ  ｓｅｔＦｉｌｔｅｒｉｎｇＲｕｌｅメソッド
２４０３    ＥｘｔｅｒｎａｌＡｐｐｓＡｔｔｒｉｂｕｔｅクラス
２４０３ａ  ｇｅｔＭｅｔａＤａｔａメソッド
２４０３ｂ  ｇｅｔＲａｔｉｎｇＩｎｆｏメソッド
２４０３ｃ  ｉｓＰｕｒｃｈａｓｅｄメソッド
２４０３ｄ  ｉｓＦｒｅｅメソッド
２４０３ｅ  ｉｓＥｘｐｉｒｅｄメソッド
２４０３ｆ  ｓｅｔＰｕｒｃｈａｓｅｄメソッド
２４０３ｇ  ｓｅｔＥｘｐｉｒａｔｉｏｎメソッド
２６０９    ボタン
２９０１    ダイアログ
２９０２    「はい」ボタン
２９０３    「いいえ」ボタン
２９０４    カーソル
３００１    ペアレンタルロック情報管理部
３３０１〜３３０２    ボタン
３４０１    リスト
【図１】
2013149171.tif 000003
【図２】
2013149171.tif 000004
【図３】
2013149171.tif 000005
【図４】
2013149171.tif 000006
【図５】
2013149171.tif 000007
【図６】
2013149171.tif 000008
【図７】
2013149171.tif 000009
【図８】
2013149171.tif 000010
【図９】
2013149171.tif 000011
【図１０】
2013149171.tif 000012
【図１１】
2013149171.tif 000013
【図１２】
2013149171.tif 000014
【図１３】
2013149171.tif 000015
【図１４】
2013149171.tif 000016
【図１５】
2013149171.tif 000017
【図１６】
2013149171.tif 000018
【図１７】
2013149171.tif 000019
【図１８】
2013149171.tif 000020
【図１９】
2013149171.tif 000021
【図２０】
2013149171.tif 000022
【図２１】
2013149171.tif 000023
【図２２】
2013149171.tif 000024
【図２３】
2013149171.tif 000025
【図２４】
2013149171.tif 000026
【図２５】
2013149171.tif 000027
【図２６】
2013149171.tif 000028
【図２７】
2013149171.tif 000029
【図２８】
2013149171.tif 000030
【図２９】
2013149171.tif 000031
【図３０】
2013149171.tif 000032
【図３１】
2013149171.tif 000033
【図３２】
2013149171.tif 000034
【図３３】
2013149171.tif 000035
【図３４】
2013149171.tif 000036
【図３５】
2013149171.tif 000037