(57)【要約】  ＢＤ−ｊａｖａ対応のＢｌｕ−ｒａｙディスク等のように動画等再生がプログラム制御されているような複雑なコンテンツおいても、利用価値が高い視聴履歴を生成することができるコンテンツメディア再生装置を開示する。視聴履歴生成部（１００９）は、プログラムコンテンツ処理部（１００１）が、視聴履歴テンプレート（１０１２）に記載された状態を遷移した時刻とその状態名とを視聴履歴（１０１１）として生成する。視聴履歴テンプレート（１０１２）には、映像音声コンテンツの視聴履歴として記録すべきプログラムコンテンツ処理部（１００１）の状態及びそれら状態間のリンクが記載される。
2010092763.tif 000002
【特許請求の範囲】
【請求項１】
映像音声コンテンツと、前記映像音声コンテンツを提示するユーザインタフェースを含むプログラムコンテンツとからなるコンテンツメディアを再生するコンテンツメディア再生装置であって、
前記コンテンツメディアを読み取るアクセス部と、
ユーザからの操作入力を受け付ける入力部と、
前記アクセス部から前記プログラムコンテンツを読み出し、前記操作入力に従い前記プログラムコンテンツを動作させて、前記映像音声コンテンツの再生制御を行なうプログラムコンテンツ処理部と、
前記映像音声コンテンツの視聴履歴として記録すべき前記プログラムコンテンツ処理部の状態及び前記状態間のリンクが記載されている視聴履歴テンプレートを記録する記録部と、
前記プログラムコンテンツ処理部が、前記視聴履歴テンプレートに記載された状態を遷移した時刻と当該状態とを前記視聴履歴として生成する生成部と、
を具備するコンテンツメディア再生装置。
【請求項２】
前記視聴履歴テンプレートは、前記プログラムコンテンツが記録されているコンテンツメディアに記録されており、前記コンテンツメディアから前記記録部にコピーされる、
請求項１に記載のコンテンツメディア再生装置。
【請求項３】
前記視聴履歴テンプレートは、前記コンテンツメディア再生装置がアクセス可能なネットワーク上の記録装置に記憶されており、
前記ネットワーク上の記録装置から前記記録部にダウンロードされる、
請求項１に記載のコンテンツメディア再生装置。
【請求項４】
前記プログラムコンテンツは、オブジェクト指向のプログラム言語で記述されており、
前記視聴履歴テンプレートは、前記映像音声コンテンツ及び前記プログラムコンテンツが記述されるプログラム言語の特定のクラス、メソッド、シンボル名等から生成される、
請求項１に記載のコンテンツメディア再生装置。
【請求項５】
映像音声コンテンツと、
前記映像音声コンテンツを提示するユーザインタフェースを含むプログラムコンテンツと、
前記映像音声コンテンを再生するコンテンツメディア再生装置の状態及びそれら状態間の遷移のうち、前記映像音声コンテンツの視聴履歴として記録すべき状態及びそれら状態間の遷移が記載されている視聴履歴テンプレートと、
を具備するコンテンツメディア。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンテンツメディア再生装置及びコンテンツメディアに関し、例えば、ＤＶＤ（正式名称、規格名）プレーヤ、Ｂｌｕ−ｒａｙ（正式名称、規格名）ディスクプレーヤ等の視聴履歴を取得するコンテンツメディア再生装置及びコンテンツメディアに関する。
【背景技術】
【０００２】
近年は、テレビ、ビデオプレーヤ、ケーブルテレビ受信機（ケーブルテレビ、セットトップボックス）等のオーディオビジュアル（ＡＶ：Audio Visual）家電機器のインターネット（登録商標）対応が進み、従来の放送やビデオコンテンツの視聴だけではなく、インターネットサービスもＡＶ家電に対して提供されるようになってきた。例えば、パナソニック（株）のＶＩＥＲＡＣａｓｔやソニー（株）のアプリキャスト（登録商標）というサービスでは、ユーザはテレビを見ながらインターネットサービスを受けることができる。【０００３】
また同様に、ＢＤ−ＬＩＶＥ（規格名）規格に対応したブルーレイディスクプレーヤ（Blu-ray disk player）では、ＢＤ−ＬＩＶＥ規格に対応したブルーレイディスクを再生する場合に、ユーザは、インターネットサービスを受けることができる。【０００４】
具体的には、ユーザは、現在受信しているテレビ番組に出演中の俳優に関連した情報をインターネットから取得してテレビ画面に表示させたり、テレビ番組に関連した映画、音楽等を、インターネットを通じて購入したりすることが可能となる。また、ユーザは、再生視聴した映画の映像ディスクに関連した映画のメイキング等の映像特典をインターネットからダウンロードしたりすることも可能となる。【０００５】
さて、このように家電機器におけるインターネットサービスを行なうための家電機器内部の仕組みや光ファイバ網等のインフラはできあがりつつあるが、その一方で、これら機能、サービスが、ユーザに広く利用されるようになってきているとはいい難い。【０００６】
ユーザの利用を阻む原因はいくつか考えられるが、そのうちの１つは、家電機器の場合、パソコン又はインターネット対応携帯電話に比較して、ユーザの入力の自由度が低く、使い勝手が悪いということが挙げられる。【０００７】
例えば、興味がある映画の映像ディスクを購入しようとする場合、パソコンでは、ユーザは、オンラインショッピングサイトで、自身が欲しい映画の題名をキーボード入力し、オンラインショップから提示された複数の候補から映像ディスクをマウスで選択し、後は決済すればよい。これに対し、例えば、インターネットサービスに対応したテレビには、キーボードのような文字入力手段がない。そのため、ユーザは、文字入力手段に代えて、リモコンを入力操作せねばならず、望みの商品に辿りつくまでに疲れ果ててしまう。【０００８】
この欠点を解消するには、文字入力或いはポインティングができるテレビ用入力機器をテレビに付属させればよいように思えるが、これはハードウエアの改変追加が必要となるため、家電機器のコスト増に繋がり、必ずしも得策ではない。【０００９】
そこで、発想を変えて、ユーザの煩雑な入力をできるかぎり削減することで、ユーザの使い勝手を向上させる方法が考えられる。つまり、家電機器側がユーザの嗜好又は望みを推測することで、ユーザは必要最低限の入力だけでユーザが望みのサービスを享受できるようにして、ユーザの使い勝手を向上させる。【００１０】
このユーザの嗜好又は望みを推測するには、様々な手法がある。その中でも、テレビ或いは映像ディスクプレーヤとの関係で重要になるのは、ユーザがそれらＡＶ家電機器を用いて視聴した履歴である視聴履歴を獲得して統計的な解析等を用いる手法である。【００１１】
例えば、簡単な例では、テレビにおいて、あるユーザが野球中継の番組を中心的に見ているということが分かれば、そのユーザは野球が好きなのであろうことが推測できる。その結果、ユーザがケーブルテレビ等の有料放送を選択しようとする場合、サービスを提供する側が野球中継のチャネルをいくつか推薦してあげるようにすると、ユーザは、沢山のチャネルの中からいちいち望みのチャネルを選択するという手間を省くことができる場合が多いであろう。【００１２】
特許文献１には、視聴履歴の典型的な収集手段が開示されている。特許文献１に開示される収集手段は、まずテレビのリモコンのキーが押下された時刻の情報をあわせてリモコン信号を記録する。そして、このリモコン信号の履歴と別途取得した番組情報とが組みあわされて、視聴履歴が生成される。【００１３】
そして、このように取得された視聴履歴を用いて、ユーザの嗜好等が解析されるようにすればよい。例えば、特許文献２には、収集した視聴履歴の分析手法（特許文献２の用語では「視聴傾向分析」）が開示されている。【００１４】
このように、何らかの形でユーザの視聴履歴が生成取得されれば、その情報を分析することにより、家電機器は、ユーザの嗜好又は望みにあわせて自動的にサービスを提供することが可能となる。したがって、嗜好の分析を正確に詳細に行なうには、分析手法そのものを改良することはもちろんであるが、それと同時に正確でかつ豊富なユーザの視聴履歴を取得することが重要になってくる。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００４−２４８２０１号公報（第２頁の請求項１乃至請求項２、図３）
【特許文献２】特開２００５−３５２７５４号公報（第１５−１９頁の実施例）
【発明の概要】
【発明が解決しようとする課題】
【００１６】
テレビ、ケーブルテレビ或いは有線放送のような放送の場合は、チャネルと時刻さえ指定すれば、コンテンツのどの場面が再生されているのかを明確にすることができる。そのため、後はテレビ等に対するユーザの操作を時刻と共に記録さえすれば、かなり正確かつ詳細に視聴履歴を記録することができる。そして、テレビに対するユーザの操作は、テレビの操作ボタン或いはリモコンのキーの押下からほぼ曖昧さを残さずに読みとることが可能である。【００１７】
これに対して、ビデオプレーヤ（ＤＶＤプレーヤ或いはＢｌｕ−ｒａｙディスクプレーヤ）は、放送と異なり番組表のようなものがない。そのため、例えば、ユーザのリモコン操作及び時刻から、ユーザがどのようなタイトルのビデオコンテンツを視聴して、どの場面を見ていたか等を推測することは非常に困難である。【００１８】
したがって、ビデオプレーヤにおいて、視聴履歴を自動的に記録するためには、少なくともビデオコンテンツのタイトル或いは内容構成のようなメタ情報を、ビデオプレーヤが取得できることが必要である。例えば、ビデオプレーヤが、ビデオコンテンツのタイトルさえ分かれば、少なくともそのタイトルを見たという程度の記録を視聴履歴に残すことができる。また、ビデオプレーヤが、ビデオプレーヤの操作キー（再生、早送り、停止等）をも記録すれば、このタイトルのどの部分を何分間、何回見たというような、細かい情報も視聴履歴に記録できるであろう。これにより、視聴履歴の質はある程度高くなったかに思える。【００１９】
しかし、近年は、ＢＤ−ｌｉｖｅ対応のＢｌｕ−ｒａｙディスクコンテンツ等のディスクに記録されている映像音声コンテンツの再生制御を、複雑なプログラムで行なえるような規格が登場している。この場合、ユーザは、従来の操作キー（再生、早送り、停止等）を用いてもコンテンツの再生操作が可能であるが、これら操作キーに加えて、ＧＵＩ（Graphical User Interface）画面を通して、コンテンツの操作を行なえるような場合も登場している。また、上記ＧＵＩ画面を提供するプログラムを再生制御にだけ使うのではなく、そのプログラム自体がコンテンツとされるような場合も考えられる。ゲーム或いはマルチエンディングの物語等が典型的な例である。【００２０】
しかしながら、ＧＵＩ画面を提供するプログラム自体がコンテンツとされるような場合には、どの時点においても同一の意味を持つような操作キーというものが少なくなるため、単純にユーザのキー操作だけを記録しても、ユーザが何をしていたのかを把握することが難しく、そのため、視聴履歴の生成が困難となる場合が増えてくる。【００２１】
本発明の目的は、ＢＤ−ｊａｖａ対応のＢｌｕ−ｒａｙディスク等のように動画等再生がプログラム制御されているような複雑なコンテンツおいても、利用価値が高い視聴履歴を生成することができるコンテンツメディア再生装置及びコンテンツメディアを提供することである。
【課題を解決するための手段】
【００２２】
本発明のコンテンツメディア再生装置は、映像音声コンテンツと、前記映像音声コンテンツを提示するユーザインタフェースを含むプログラムコンテンツとからなるコンテンツメディアを再生するコンテンツメディア再生装置であって、前記コンテンツメディアを読み取るアクセス部と、ユーザからの操作入力を受け付ける入力部と、前記アクセス部から前記プログラムコンテンツを読み出し、前記操作入力に従い前記プログラムコンテンツを動作させて、前記映像音声コンテンツの再生制御を行なうプログラムコンテンツ処理部と、前記映像音声コンテンツの視聴履歴として記録すべき前記プログラムコンテンツ処理部の状態及び前記状態間のリンクが記載されている視聴履歴テンプレートを記録する記録部と、前記プログラムコンテンツ処理部が、前記視聴履歴テンプレートに記載された状態を遷移した時刻と当該状態とを前記視聴履歴として生成する生成部と、を具備する構成を採る。【００２３】
本発明のコンテンツメディアは、映像音声コンテンツと、前記映像音声コンテンツを提示するユーザインタフェースを含むプログラムコンテンツと、前記映像音声コンテンを再生するコンテンツメディア再生装置の状態及びそれら状態間の遷移のうち、前記映像音声コンテンツの視聴履歴として記録すべき状態及びそれら状態間の遷移が記載されている視聴履歴テンプレートと、を具備する構成を採る。
【発明の効果】
【００２４】
本発明によれば、例えば、ＢＤ−Ｌｉｖｅ対応のＢｌｕ−ｒａｙディスク、アドビシステムズ社のフラッシュ（Flash、商標）コンテンツように、映像音声コンテンツと、それら映像音声コンテンツを提示するユーザインタフェース（ＵＩ：User Interface）を含むプログラムコンテンツとからなるコンテンツメディアに対しても、詳細で情報量が多い視聴履歴を生成することができる。そして、視聴履歴と視聴履歴テンプレートとを対にして解析することにより、視聴履歴を機械的に解析することが可能となり、計算機を用いた大規模な視聴履歴解析に供することができる。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施の形態１に係る光ディスクプレーヤ及び光ディスクの構成図
【図２】実施の形態１におけるプログラムコンテンツの内容を表現した状態遷移図
【図３Ａ】実施の形態１における視聴履歴生成テンプレートの一例を示す図
【図３Ｂ】実施の形態１における視聴履歴生成テンプレートの別の例を示す図
【図４】実施の形態１における視聴履歴の生成方法を説明するためのフローチャート図
【図５】実施の形態１におけるプログラムコンテンツのＪＡＶＡプログラムの一例を示す図
【図６】実施の形態１における視聴履歴の一例を示す図
【図７】実施の形態１における視聴履歴を解析して得られた行動図
【図８】本発明の実施の形態３におけるＪＡＶＡプログラムの一例を示す図
【図９】実施の形態３におけるプログラムコンテンツを動作させて得られるディスプレー上の表示の模式図
【図１０】実施の形態３におけるＪＡＶＡプログラムのバイトコードの一例を示す図
【図１１】実施の形態３における視聴履歴テンプレート自動生成方法を説明するためのフローチャート
【図１２】実施の形態３における視聴履歴生成テンプレートの一例を示す図
【発明を実施するための形態】
【００２６】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【００２７】
（実施の形態１）
本実施の形態は、本発明の基本的な実施例である。以下では、コンテンツメディアのコンテンツメディア再生装置を用いて、ユーザがあるコンテンツメディアを再生した場合を例に、視聴履歴の生成方法について説明する。なお、以下では、コンテンツメディア及びコンテンツメディア再生装置として、ＤＶＤ又はＢｌｕ−ｒａｙディスク等の光ディスク及び光ディスクプレーヤに本発明を適用する場合を例に説明する。
【００２８】
まず、図１は、実施の形態１に係る光ディスクプレーヤ及び光ディスクの内部構成を示すブロック図である。
【００２９】
光ディスクプレーヤ１０００は、光ディスク上のコンテンツの再生、及び、光ディスク上のプログラムコンテンツを実行することができる装置である。光ディスクプレーヤ１０００は、プログラムコンテンツの内容及びユーザが手にしているリモコン１２００からの入力に従い動作する。再生されたコンテンツの映像音声或いはプログラムコンテンツの実行の結果生じるグラフィック表示は、ディスプレー（及びスピーカー）１３００にて表現される。
【００３０】
リモコン１２００からの入力は、リモコン入力部１００３によって受信され、操作部１００４に渡される。操作部１００４は、リモコン１２００から入力される電気的信号を、プログラムコンテンツ処理部１００１、ＧＵＩ（Graphical User Interface：グラフィカルユーザインタフェース）表示部１００６及び動画・音声再生部１００７が扱い得るプログラム言語上の入力イベント（典型的にはキーイベント、マウスイベント等）に変換する。
【００３１】
プログラムコンテンツ処理部１００１は、光ディスクアクセス部１００２を通して、光ディスク１１００内のプログラムコンテンツを読み取り、読み取ったプログラムコンテンツ及びユーザのリモコン入力（キーイベント）に従い、ＧＵＩ表示部１００６の支援を受けて、グラフィカルユーザインタフェース（ＧＵＩ）をディスプレー（及びスピーカー）１３００に表示する。また、プログラムコンテンツ処理部１００１は、ユーザからのリモコン入力（キーイベント）を待ったり、或いは、動画・音声再生部１００７に命じて映像音声コンテンツをディスプレー（及びスピーカー）１３００に表示させたりする。このプログラムコンテンツ処理部１００１の動作は、後に詳しく説明する。
【００３２】
光ディスクプレーヤ１０００は、各種情報の汎用記憶装置としてファイルシステム１０１０を持っており、光ディスクプレーヤ１０００の各部はファイルシステム１０１０にアクセスし、読み書きすることができる。
【００３３】
ファイルシステム１０１０は、記憶装置であり、ファイルシステム１０１０上に、適当な時点で視聴履歴テンプレート１０１２及び視聴履歴１０１１が書き込まれる。この視聴履歴１０１１は、視聴履歴生成部１００９によって読み書きされる。
【００３４】
更に、視聴履歴生成部１００９は、必要があればネットワークＩ／Ｆ（Inter Face）１００８を介して、光ディスクプレーヤ１０００の外部に設置された履歴収集サーバ１５００に、その視聴履歴１０１１をアップロードすることができる。
【００３５】
ネットワーク１４００は、光ディスクプレーヤ１０００と履歴収集サーバ１５００との間に存在する、家庭内のローカルエリアネットワーク或いはインターネットを便宜的にひとまとめにして表現したものである。
【００３６】
一方、光ディスク１１００には、プログラムコンテンツ１１０１、映像・画像・音声コンテンツ１１０２及び視聴履歴テンプレート１１０３が保持されており、これらを光ディスクプレーヤ１０００は、光ディスクアクセス部１００２を介して読み取ることができる。
【００３７】
プログラムコンテンツ１１０１は、何らかのプログラム言語で記述されたアプリケーションであって、映像・画像・音声コンテンツ（又は映像音声コンテンツ）１１０２の再生制御をしたり、或いはユーザに対しＧＵＩを表示させたりする。また、プログラムコンテンツ１１０１自体が、ユーザに対するゲーム等のコンテンツであったりする場合もありうる。
【００３８】
本実施の形態におけるプログラムコンテンツ１１０１の内容については、別途、図２を用いて後に詳述する。
【００３９】
映像・画像・音声コンテンツ１１０２は、静止画像、映画或いは音楽等であって、時間的に順次再生が予定されている、狭い意味でのコンテンツである。
【００４０】
光ディスク１１００が、ある映画を主内容とする場合には、その映画そのものがコンテンツとなる。また、光ディスク１１００が、写真集のようなものであれば、写真そのものがコンテンツとなり、この写真をリスト表示させたりスライドショー表示させたりするようなプログラムがプログラムコンテンツとなる。
【００４１】
本実施の形態では、光ディスク１１００が映画を主内容とし、映像・画像・音声コンテンツ１１０２が、映画本編そのもの、及び、予告編そのものとなる場合を例に説明する。
【００４２】
図２は、プログラムコンテンツ１１０１の内容を、模式的に表現した状態遷移図である。実際のプログラムコンテンツは、プログラムコンテンツ処理部１００１が効率良く処理できるように、プログラム言語からコンパイルされており、人間には理解しづらいので、図２のように模式的に表現した。図２の各々の状態に関しては、以下の説明の流れの中で説明する。
【００４３】
なお、本実施の形態では、プログラムコンテンツ１１０１の記述言語としてＪＡＶＡ（登録商標）（プログラム言語名）を仮定している。また、そのためプログラムコンテンツ処理部１００１は、ＪＡＶＡの処理系（ＶＭ：Virtual Machine）の１つである。
【００４４】
図３Ａは、視聴履歴テンプレート１１０３（又は１０１２）の具体的な内容を示す。
【００４５】
図３Ａの視聴履歴テンプレート３００１及び図３Ｂの視聴履歴テンプレート３００２は、ＸＭＬ（eXtensible Markup Language）で表現された視聴履歴テンプレート１１０３（又は１０１２）である。なお、視聴履歴テンプレート３００１、３００２の左側の行番号は、説明のために便宜的に付加されたものであり、実際の視聴履歴テンプレート１１０３（又は１０１２）には、行番号は含まれない。
【００４６】
図４は、プログラムコンテンツ処理部１００１の動作のうち、視聴履歴生成に関わる動作部分を表現したフローチャートである。
【００４７】
図５は、プログラムコンテンツ１１０１の一例である。プログラムコンテンツ処理部１００１が、プログラムコンテンツ１１０１を処理実行していく過程で、視聴履歴生成のタイミングを見つける処理を説明するため、図５のプログラムコンテンツ１１０１は、ＪＡＶＡ言語のイメージで表現されている。なお、図５の例は、説明を簡単にするため、内容的に非常に簡略化されている。そのため、図５のＪＡＶＡ言語で表現された内容と図２で表現されている内容とは全く異なるものである。
【００４８】
図６は、本実施の形態で最終的に生成される視聴履歴１０１１である。なお、図６に示す視聴履歴６００１の左側の行番号は、説明のために便宜的に付加されたものであり、実際には、視聴履歴６００１に、行番号は含まれない。
【００４９】
図７は、図６のように表現された視聴履歴６００１を、視聴履歴テンプレート３００１に照らし合わせて解析した結果を、図２の状態遷移図に重ねて表現した図である。
【００５０】
以上の図１〜図７を用いて、光ディスクプレーヤ１０００の動作について説明する。
【００５１】
今、光ディスクプレーヤ１０００に、光ディスク１１００が挿入されたとする。通常のＢｌｕ−ｒａｙディスクプレーヤと同様に、光ディスクプレーヤ１０００にコンテンツディスクである光ディスク１１００が挿入されると、自動的に光ディスク１１００の内容が読み込まれ、コンテンツの再生が始まる。
【００５２】
本実施の形態においても、光ディスクアクセス部１００２を用いて、プログラムコンテンツ処理部１００１は、光ディスク１１００の内容、すなわちプログラムコンテンツ１１０１、映像・画像・音声コンテンツ１１０２及び視聴履歴テンプレート１１０３を読み込み、視聴履歴テンプレート１１０３をファイルシステム１０１０に視聴履歴テンプレート１０１２としてコピーする。
【００５３】
そして、次に、プログラムコンテンツ処理部１００１は、プログラムコンテンツ１１０１の実行を開始する。プログラムコンテンツ１１０１は、実体としては、コンパイルされたＪＡＶＡプログラムのバイトコードの集りであるが、以下では説明を簡単にするため、ＪＡＶＡプログラムと論理的に同値である図２の状態遷移図を用いて説明する。ただし、この図２の状態遷移図は非常に簡略化されている。また、プログラムコンテンツ処理部１００１は、実体としてはＪＡＶＡのＶＭであるが、説明を簡単にするために、状態遷移マシンとして説明する。
【００５４】
図２において、白地の四角或いは角丸四角は、プログラムコンテンツ１１０１の主な状態を示す。また、図２において、矢印は、各状態間の遷移可能性を示す。状態は、実際は何らかのきっかけ（ユーザからの入力、タイマー信号、ハードウエア割り込み等の遷移条件）で遷移する。或いは、状態は、きっかけ（遷移条件）が無くても無条件で遷移することもある。なお、図２には、状態遷移のきっかけ（遷移条件）は省略されている。
【００５５】
また、終了状態２０２０に対して矢印がないのは、終了状態２０２０へは任意の状態からの遷移が可能であるため、図が繁雑になるのを避けるために矢印を省略したことによる。
【００５６】
図２において、網掛四角（２００２、２００３、２００８、２００６、２０１１、２０１３、２０１５、２０１６、２０１８、２０１９）は、各状態につけられた名称を表している。実施の形態では、この名称は「状態ＩＤ」又は単に「ＩＤ」と呼ばれ、図２は、名称が数字で表されている例である。ただし、初期状態はｉｎｉｔｉａｌ、終了状態はｅｎｄという特別の名称を持つとする。なお、破線四角２００９は、状態グループを表す。状態グループ２００９については、後述する。
【００５７】
さて、プログラムコンテンツ処理部１００１は、光ディスク１１００が挿入されると、プログラムコンテンツ１１０１、すなわち図２の状態遷移図に従い、その状態を変更する。
【００５８】
まず、プログラムコンテンツ処理部１００１は、初期状態２００１（ＩＤ＝ｉｎｉｔｉａｌ）から開始し、その直後無条件で状態２００４（ＩＤ＝１）に遷移する。この状態で、プログラムコンテンツ処理部１００１は、主メニュー画面をディスプレー１３００に表示し、ユーザからの選択入力を待つ。主メニュー画面には、光ディスク１１００のコンテンツの内容がリスト形式で表示され、ここでユーザは、「映画の本編再生」、「本編から章を選択」、「予告編の再生」又は「ゲーム」のメニューを選択することができる。
【００５９】
そしてユーザは、映画本編をすぐに見たければ、ディスプレー１３００に表示されているリストの中からリモコン１２００を操作して「映画の本編再生」を選択し、選択操作に伴うリモコン信号が、リモコン入力部１００３及び操作部１００４を経由して、キーイベントとしてプログラムコンテンツ処理部１００１に伝えられる。プログラムコンテンツ処理部１００１が、そのキーイベントを適切に解釈すると、リンク２０２４の遷移が発生し、プログラムコンテンツ処理部１００１の状態は、本編第１章の再生状態２０１４（ＩＤ＝１００）に遷移する。そして、プログラムコンテンツ処理部１００１は、動画・音声再生部１００７に本編の再生を命じ、映画本編が再生される。
【００６０】
以下、同様に、ユーザからのキーイベントに対して、プログラムコンテンツ処理部１００１は、内部状態を変更し、その状態に応じたアクションを実行することにより、プログラムコンテンツ１１０１が実行されていく。
【００６１】
このような場合に、視聴履歴は、どのように生成されるであろうか。
【００６２】
仮に、ここでキーイベントのみを記録した場合、記録されるのは、例えば、ディスプレー１３００に表示されたＧＵＩのリストを見るための「上下キー」、或いはリストから１つを選択するための「決定キー」等だけであり、これらのキーの羅列を第三者が後に取得し視聴履歴を解析しようとしても、全く意味が分からない。更に、同じプログラムコンテンツであっても、再生機器によってＧＵＩ表現やキーイベントに相違があるため、推測さえ充分には行なえない。
【００６３】
これに対し、本実施の形態では、視聴履歴テンプレートを利用して、視聴履歴を生成する。本実施の形態における視聴履歴生成の方法は、以下の通りである。
【００６４】
まず、視聴履歴テンプレートは、次のように定義される。視聴履歴テンプレートは、プログラムコンテンツを論理的に同等の状態遷移図として捕らえた場合の全ての状態から、視聴履歴として記録したい状態だけが抜き出された集合である。そして、その視聴履歴テンプレートに含まれる状態に対しては、他の状態へのリンク、状態を説明する名称、又は、その状態で実行されるアクションを説明するための説明文等の情報を付加することができる。
【００６５】
本実施の形態では、この視聴履歴テンプレートが、図３Ａ及び図３Ｂに示したようなＸＭＬ形式で記述される場合を例に説明する。なお、視聴履歴テンプレートは、必ずしもＸＭＬ形式である必要はなく、他の形式で表現されていても問題はない。
【００６６】
図３Ａ及び図３Ｂには、２つの視聴履歴テンプレート３００１、３００２が図示されている。これら視聴履歴テンプレート３００１、３００２は、どちらもプログラムコンテンツ１１０１（又は図２の状態遷移図）に対して作成されたものである。このうち、視聴履歴テンプレート３００１は、全ての状態に対して視聴履歴を取得する場合のテンプレートであり、かつ、リンクや名称等の付加情報も充実させた、いわばフルセットの視聴履歴テンプレートである。
【００６７】
視聴履歴テンプレート３００１を詳細に見ると分かるように、視聴履歴テンプレート３００１は、図２の状態遷移図の中身とほとんど同等である。視聴履歴テンプレートは、状態及び付加情報として状態間のリンクを含むので、視聴履歴テンプレート３００１のようにフルセットの視聴履歴テンプレートが用いられる場合には、得られる視聴履歴は、当然に対応する状態遷移図と同等となる。
【００６８】
一方、視聴履歴テンプレート３００２は、図２の状態グループ２００９の範囲、すなわち映像コンテンツ（映画予告編及び映画本編）の再生範囲内だけで視聴履歴を取得しようという場合のテンプレートであり、付加情報も全て欠落されている。視聴履歴テンプレート３００２が用いられる場合には、得られる視聴履歴は、取得したい状態ＩＤの列挙と同等となる。
【００６９】
当然のこととして、視聴履歴テンプレート３００１の方が、視聴履歴テンプレート３００２に比べ情報が豊富であるため、後に視聴履歴を解析する場合に、より多くの知見が得られる。ただし、視聴履歴テンプレート３００２に比べ、視聴履歴テンプレート３００１の作成には手間がよりかかる。
【００７０】
本実施の形態では、プログラムコンテンツ処理部１００１がフルセットの視聴履歴テンプレート３００１を利用する場合を例に説明する。
【００７１】
さて、視聴履歴テンプレート３００１を与えられたプログラムコンテンツ処理部１００１は、プログラムコンテンツ１１０１を処理実行しつつ、図４に示したようなフローチャートに従い、視聴履歴を生成していく。
【００７２】
今、ユーザは、以下に示すような順序で行動し、この光ディスク１１００を視聴するとしよう。
【００７３】
（行動＃１）主選択画面（状態２００４、ＩＤ＝１）を見て、本編再生（状態２０１４、ＩＤ＝１００）を選択する。
（行動＃２）本編をしばらく見るが、本編第２章（状態２０３５、ＩＤ＝１０１）の途中で、リモコン１２００を操作して、章選択画面（状態２００７、ＩＤ＝２）に移る。
（行動＃３）更に、主選択画面（状態２００４、ＩＤ＝１）に戻る。
（行動＃４）予告編１（状態２０１０、ＩＤ＝２００）に移り、予告編１を見る。
（行動＃５）続けて予告編２（状態２０１２、ＩＤ＝２０１）を見るが、途中で「ディスク排出」を行ない、視聴を終了（状態２０２０、ＩＤ＝ｅｎｄ）する。
【００７４】
なお、図６は、これらの行動を受けて生成された視聴履歴である。
【００７５】
最初に、プログラムコンテンツ処理部１００１は、開始ＳＴ４０００を経て、イベント待ちＳＴ４００１に入る。ここでのイベントとは、ユーザからのキーイベント、ハードウエアからの割り込み、タイマイベント等である。なお、プログラムコンテンツ処理部１００１は、図４に示したフローと同時並列に、プログラムコンテンツ１１０１の実行処理をも行なっていることに注意する。
【００７６】
まず、光ディスク１１００が光ディスクプレーヤ１０００に挿入されると、ディスク挿入を伝えるハードウエア割り込みが発生し、プログラムコンテンツ処理部１００１は、視聴履歴テンプレート読み込みＳＴ４００３に入る。ここで、プログラムコンテンツ処理部１００１は、視聴履歴テンプレート１１０３を読み出し、ファイルシステム１０１０内に視聴履歴テンプレート１０１２としてコピーする。プログラムコンテンツ処理部１００１は、コピー後、ＸＭＬ形式で記述された視聴履歴テンプレート１０１２を解析し、後の利用のために視聴履歴テンプレート１０１２に検索インデックス等を付加する。
【００７７】
そして、視聴履歴生成の準備が終ると、プログラムコンテンツ処理部１００１は、視聴履歴として初期状態を通過したことを記録する。具体的には、プログラムコンテンツ処理部１００１は、視聴履歴生成部１００９に対して、初期状態を通過したことを記録せよと命ずる。そして、視聴履歴生成部１００９は、空の視聴履歴を新しく生成して、その冒頭に、時刻とともに、視聴履歴を記録する（視聴履歴６００１の１行目）。
【００７８】
視聴履歴６００１の１行目は、「発生した事象はユーザの行動起源のものであり（ディスク挿入、″ｅｖｅｎｔ″というタグで表現れている）、対応する状態ＩＤは、″ｉｎｉｔｉａｌ″（状態２００１、２００２）であり、この状態から出たこと（属性″ｏｕｔ″）、発生したタイムスタンプは、０秒」であることを意味している。
【００７９】
この後、プログラムコンテンツ処理部１００１は、再度イベント待ちＳＴ４００１に入る。
【００８０】
この間同時に、プログラムコンテンツ処理部１００１は、プログラムコンテンツ１１０１に従い、ディスプレー１３００に、主選択画面（状態２００４、ＩＤ＝１）を表示する。
【００８１】
初期状態（状態２００１、ＩＤ＝ｉｎｉｔｉａｌ）から主選択画面（状態２００４、ＩＤ＝１）に状態を変更したプログラムコンテンツ処理部１００１は、自らに状態変更のイベントを発行する。そして、プログラムコンテンツ処理部１００１は、状態変更のイベントを受信すると、図４のフローチャートに従い、イベント待ちＳＴ４００１からイベント種類分岐ＳＴ４００２に移り、ＳＴ４００５に移る。ＳＴ４００５は、視聴履歴テンプレート１１０３に照らしてこの状態変更を記録すべきかを否か判断する。
【００８２】
視聴履歴テンプレート３００１の５〜１０行目に、主選択画面（状態２００４、ＩＤ＝１）の状態を表す″ｍａｉｎ  ｍａｎｕ″があるので、検索ヒットＳＴ４００９はＹＥＳとなり、プログラムコンテンツ処理部１００１は、視聴履歴生成ＳＴ４００６に入る。このあと、プログラムコンテンツ処理部１００１は、視聴履歴生成部１００９に命じて、ＳＴ４００７に移り、適当な視聴履歴を記録し（視聴履歴６００１の２行目）、再度イベント待ちＳＴ４００１に入る。
【００８３】
なおここで、状態が遷移したことをプログラムコンテンツ処理部１００１はどのようにして知り得るか、また、視聴履歴テンプレートの作成者（通常、人間）は、どのような状態がありその名称（ＩＤ）は、何であるかをどのようにして知り得るかについて、説明をしておく。
【００８４】
プログラムコンテンツが、実装としても状態遷移図として実現されている場合、状態遷移図は、プログラム文面上でも明示されている。したがって、視聴履歴テンプレート作成者は、その状態遷移図を見ることにより視聴履歴テンプレートを作成することができる。そして、この作業は、かなりの部分まで自動化できるであろう。また、これに対応してプログラムコンテンツ処理部１００１も実装として状態遷移マシンとして実現されているであろうから、プログラムコンテンツ処理部１００１にとって、状態が遷移したことを知ることは容易である。
【００８５】
これに対して、状態遷移ではなく、ＪＡＶＡ言語のように手続的に表現されたプログラム言語とその処理系に対しては、状態が明示的に定義されているわけではないので、状態を定義し、状態が遷移したことをプログラムコンテンツ処理部１００１が知る仕組と、この状態の全体を視聴履歴テンプレート作成者が知る手段とを設ける必要がある。一番簡易な方法としては、プログラムコンテンツ作成を行なう人間が、状態を定義し、状態遷移のタイミングもプログラム文面上明示するという方法が考えられ、本実施の形態では、この方法を採用するとする。
【００８６】
図５は、非常に簡単な、リスト選択画面を表示するＪＡＶＡプログラムである。
【００８７】
図５のＪＡＶＡプログラム５０００において、クラス５００２（″Class Interpreter″）は、プログラムコンテンツ処理部１００１に対して、状態遷移イベントを発行するために用意されたクラスである。そして、クラス５００２を使って、プログラムコンテンツ処理部１００１に対する通知５００１がＪＡＶＡプログラムに埋め込まれている。
【００８８】
クラス５００２は、実はプログラム文面上は、何もしない空であるが、これは、プログラムコンテンツ処理部１００１が履歴生成に対応していない場合を考慮したものである。プログラムコンテンツ処理部１００１が履歴生成に対応している場合には、このプログラムをロードすると、″Class Interpreter″のstate()メソッドは、初めからあった実装に上書きされることになる。
【００８９】
なお、人間が視聴履歴テンプレートを作成せずに、視聴履歴テンプレートが自動生成される方法については、実施の形態３で説明する。
【００９０】
再度図４に戻り、説明を、視聴履歴生成に戻す。
【００９１】
次に、ユーザは、（行動＃１）を実行する。つまり、ユーザは、主選択画面（状態２００４、ＩＤ＝１）を見て、リモコン１２００のキーの「選択キー」を押下し、本編再生（状態２０１４、ＩＤ＝１００）を選択する。
【００９２】
選択（シンボルは、ＥＮＴＥＲ）というキーイベントが、プログラムコンテンツ処理部１００１に送られると、プログラムコンテンツ処理部１００１は、そのキーイベントを視聴履歴として記録するとともに（視聴履歴６００１の３行目）、そのキーイベントの結果発生する状態遷移（状態２００４から状態２０１４への遷移）も記録する（視聴履歴６００１の４、５行目）。
【００９３】
視聴履歴６００１の４行目は、主選択画面の表示状態（状態２００４、ＩＤ＝１）が、タイムスタンプ１４で終了したことを示す。同５行目は、本編第１章再生状態（状態２０１４、ＩＤ＝１００）にタイムスタンプ１５で移ったこと示す。
【００９４】
一方、プログラムコンテンツ処理部１００１は、本編第１章再生状態（状態２０１４、ＩＤ＝１００）に入ると、その状態に付随したアクションとして、本編第１章を再生することを、動画・音声再生部１００７に命ずる。プログラムコンテンツ処理部１００１は、動画・音声再生部１００７に何事かを命ずる場合は、その命令に応じた映像音声コンテンツイベントを自らに向けて発生させる。その結果、ＳＴ４０１０が実行されて、視聴履歴６００１の６〜１２行目が記録される。
【００９５】
プログラムコンテンツ処理部１００１が、動画・音声再生部１００７に対して命令を発行する場合、映像のタイトル名、映像の記録時間、フォーマット等のメタ情報が明確になっている場合が多いので、このようなメタ情報も同時に記録される（視聴履歴６００１の８〜１０行目）。
【００９６】
以下、同様にして、（行動＃２）から（行動＃５）までの視聴様子が記録され、最終的に図６に示したような視聴履歴が生成される。
【００９７】
そして、光ディスク１１００の再生が終了すると（この場合は、ユーザの（行動＃５）により、ユーザは光ディスク１１００を排出した）、その状態が記録されるとともに（視聴履歴６００１の４２〜４５行目）、視聴履歴１０１１は閉じられ、視聴履歴テンプレート１０１２と対にして保存される。
【００９８】
その後、必要に応じて、この視聴履歴１０１１と視聴履歴テンプレート１０１２との対は、履歴収集サーバ１５００にアップロードされ解析されたり、又は、アップロードされずに、光ディスクプレーヤ１０００の内部に保持されたまま、ユーザの利便性向上のために用いられたりすることができる。
【００９９】
図７は、図６に示した視聴履歴６００１を、視聴履歴テンプレート３００１を視覚的に表現した図２に示した状態遷移図の一部に、行動図風に表現した図である。
【０１００】
図７は、ユーザは本編を見始めてみたものの、おそらく途中で飽きてしまったのか、第２章で視聴を中断し、他の映画の予告編を少々見たものの、これもまた途中で中断してしまっていることを示している。ただし、ユーザの真意に少しでも近づくためには、タイムスタンプ、関連するキー操作又は他の視聴履歴との比較検討等が必要となるであろう。
【０１０１】
以上のように、本実施の形態では、視聴履歴テンプレート１０１２には、映像音声コンテンツの視聴履歴として記録すべきプログラムコンテンツ処理部１００１の状態及びそれら状態間のリンクが記載されており、視聴履歴生成部１００９は、プログラムコンテンツ処理部１００１が、視聴履歴テンプレート１０１２に記載された状態を遷移した時刻とその状態名とを視聴履歴１０１１として生成するようにした。
【０１０２】
これにより、音声映像コンテンツとプログラムコンテンツとが一体となったコンテンツ（ＢＤ−ｌｉｖｅ対応のＢｌｕ−ｒａｙディスクコンテンツやアドビシステムズ社のフラッシュコンテンツ等）に対しても、豊富で正確な視聴履歴を生成することができる。また、従来は、ネットワークからのダウンロード数の情報程度しか分からなかったフラッシュコンテンツに対しても、同様に視聴履歴を生成することができる。
【０１０３】
更に、収集した視聴履歴と視聴履歴テンプレートとをあわせることで、人間の恣意的な解釈と伴うことなく、機械的に一意にどの場面をどのように見たかを解析することができるようになるので、計算機による大規模かつ高速な視聴履歴解析が可能となる。
【０１０４】
（実施の形態２）
実施の形態１では、視聴履歴テンプレートが光ディスクに含まれる場合について説明した。
【０１０５】
実施の形態１で説明したように、視聴履歴テンプレートは、コンテンツ作成者が、プログラムコンテンツ或いは音声映像コンテンツの作成にあわせて同時に作り、プログラムコンテンツ或いは音声映像コンテンツと同一のコンテンツメディア中に記録して配布すれば、光ディスクプレーヤは、コンテンツ再生にあわせて視聴履歴テンプレートを確実に読み込むことができる。
【０１０６】
その反面、全ての光ディスクに視聴履歴テンプレートが記憶されるようにすると、視聴履歴テンプレートを利用しない光ディスクプレーヤで視聴する場合には無駄となったり、また、記録したい視聴履歴を後から変更したい場合には対応が困難となったりする。
【０１０７】
そこで、視聴履歴テンプレートをネットワーク上に置いて、必要な時点で光ディスクプレーヤは、ネットワーク上から視聴履歴テンプレートをダウンロードするような構成にすれば、これらの欠点は解消される。
【０１０８】
例えば、再度図１を例に用いて説明すると、光ディスク１１００には、視聴履歴テンプレート１１０３に代えて、視聴履歴テンプレート１１０３を識別することができるタグを記録し、履歴収集サーバ１５００は、視聴履歴テンプレートを多数記録するようにする。このとき、タグは、コンテンツのタイトル名或いは何らかのＩＤコード等とし、タグから視聴履歴テンプレート１１０３を検索することができるようにしておく。
【０１０９】
そして、プログラムコンテンツ処理部１００１は、光ディスク１１００を再生する場合に、履歴収集サーバ１５００から、光ディスク１１００に記録されたタグに対応する視聴履歴テンプレートを検索し、ネットワーク１４００を経由して視聴履歴テンプレートをダウンロードする。プログラムコンテンツ処理部１００１は、ダウンロードした視聴履歴テンプレートをファイルシステム１０１０上に視聴履歴テンプレート１０１２として記録しておく。
【０１１０】
このようにすれば、実施の形態１と同様の効果を得つつ、オンデマンドで、視聴履歴テンプレートを利用することができるようになる。
【０１１１】
（実施の形態３）
実施の形態１では、視聴履歴テンプレートは、コンテンツ作成者が、プログラムコンテンツ或いは音声映像コンテンツの作成にあわせて同時に作り、プログラムコンテンツ或いは音声映像コンテンツと同一のコンテンツメディア中に記録して配布する場合について説明したが、視聴履歴テンプレートは、プログラムコンテンツ或いは映像音声コンテンツから人間の手を介さずに機械的に生成することもできる。
【０１１２】
当然、人間が作成する視聴履歴テンプレートに比較すると、機械的に生成された視聴履歴テンプレートには、自動抽出できる情報の質に限界があり、後の視聴履歴の解析の点から劣る面もある。しかしその欠点があっても、人間の労力を介さずに機械的に自動的に視聴履歴テンプレートを作成できるという点は、効率面からは有用である。更に、視聴履歴テンプレートにそもそも対応していないコンテンツに対しても、ある程度の質の視聴履歴が取り得るという点からも有用である。そこで、本実施の形態では、視聴履歴テンプレートの自動生成について説明する。
【０１１３】
では、視聴履歴テンプレートの自動生成は如何にして為し得るか。実施の形態１で説明したように、視聴履歴テンプレートは、人間が理解できるように、コンテンツの構造又は動作を、プログラムコンテンツの「重要な場面」と「場面間の遷移」とに簡略化し、更に後に解析が機械的にできるような形式的言語で表現されている。
【０１１４】
これに対して、一般的なプログラムは、機械的な手続で状態遷移オートマトンに変換可能であるものの、オートマトンのいう状態を視聴履歴テンプレートの状態に置き換えようとしたところで、一意のオートマトンに定まるとは限られず、また、上記で説明したような「重要な場面」が抽出できるとも限らない。このため、何らかの意味的、経験的な方法を導入して、コンテンツから「重要な場面」を自動抽出する必要がある。
【０１１５】
本実施の形態では、プログラムコンテンツを記述する言語が、ＪＡＶＡ、Ｊａｖａｓｃｒｉｐｔ等のオブジェクト指向のプログラム言語であるとする。プログラムコンテンツがオブジェクト指向言語により記述されていることは、本実施の形態における視聴履歴テンプレートの自動生成方法に関しての前提となる。以下で詳述するが、本実施の形態における視聴履歴テンプレートの自動生成方法は、オブジェクト指向言語の特定のクラス又はメソッドに注目することで、人間にとって有用な状態（前記の「重要な場面」）を抽出するからである。
【０１１６】
まず、視聴履歴テンプレートにおいて、その履歴が欲しい重要な場面（状態）とは、ほとんどが、ユーザが選択したり、コンテンツに対して直接操作（再生、早送り、停止等）したりする場面である。また、視聴履歴で欲しい情報とは、何のコンテンツが選択されて、その選択されたコンテンツがどのように操作されたかについてであるから、これは当然のことといえる。
【０１１７】
では、その重要な場面である（１）コンテンツの選択の場面、（２）コンテンツの操作の場面は、プログラムコンテンツの構造とどう関係するか。現在のＧＵＩ全盛のソフトウェアにおいては、ユーザの行動と、画面或いは入力のユーザインタフェースの状態とが密接に関係している。つまり、（１）コンテンツ選択の場面においては、画面には何らかの選択候補が列挙されており、ユーザはリモコン等で、選択候補からの選択結果を入力することができるのが普通である。また、（２）コンテンツ操作の場面では、コンテンツに代えて、コンテンツを操作するためのＧＵＩが画面に表示されているのが普通である。
【０１１８】
そして、ＧＵＩソフトウェアの記述には、現在では、ほとんどの場合オブジェクト指向プログラム言語が用いられ、更に多くのオブジェクト指向言語は、典型的な画面表示及びユーザからの入力方法を一まとめにして、クラスライブラリとして提供している。
【０１１９】
このため、（１）コンテンツの選択の場面でも、（２）コンテンツ操作の場面でも、ある特定のクラス（プログラム言語のライブラリにより異なる）が表示されている場合が多い。
【０１２０】
例えば、実施の形態１で説明した図２のような状態遷移図のプログラムコンテンツを、例えばＪＡＶＡ言語のＡＷＴ（Abstract Window Toolkit）クラスライブラリを用いて作成する場合、ウィンドウ（画面）の外枠を生成するには、Java.awt.Frame（以下、Ｆｒａｍｅとのみ略記する場合あり）クラスを用いることが普通である。そして、このウィンドウ（画面）の外枠の中に、各種の「部品」と呼ばれるクラスを配置していく。
【０１２１】
例えば、図９は、ＪＡＶＡ言語のＡＷＴクラスライブラリを用いて作成された選択画面の典型例であり、ウィンドウ（画面）の外枠８００１は、Ｆｒａｍｅクラスで作成され、ウィンドウ（画面）内枠８００２、８００３の部品は、それぞれＬａｂｅｌクラス、Ｌｉｓｔクラスで作成されている。そして、ＪＡＶＡ言語のＡＷＴクラスライブラリの場合、Ｆｒａｍｅクラスのようなウィンドウ（画面）の外枠を作成するクラスは、１つに限られているといって良い。
【０１２２】
同様に、多くの現代的なオブジェクト指向プログラム言語の場合、ウィンドウ（画面）の外枠に対応するようなクラスは、１種類又は多くても数種類に限られている。そこで、このJava.awt.Frameクラスのように、ウィンドウ（画面）が切り替わる（ウィンドウ（画面）の外枠が変わる）ごとに用いられるような特別なクラスに注目すれば、プログラムコンテンツから、視聴履歴として記録すべき重要な場面を抽出することが可能となる。
【０１２３】
例えば、プログラム言語としてＪＡＶＡ言語を用い、ＧＵＩ用のクラスライブラリとしてＡＷＴクラスライブラリを用いた場合のプログラムコンテンツから、Ｆｒａｍｅクラスのインスタンスを抽出して、それを重要な場面（これは、視聴履歴テンプレートの状態に等しい）とし、そのＦｒａｍｅクラスが表示される時点（Frame.show()メソッドが呼ばれる箇所）をもって、その状態に突入したものと考え、非表示になったところで（hide()メソッドが呼ばれる箇所）、その状態を脱出したものと考えることで、プログラムコンテンツから、ある視聴履歴として記録すべき状態遷移を抽出することができる。
【０１２４】
つまり、視聴履歴テンプレートがなくても、これらウィンドウ（画面）の外枠を表現するようなクラスのインスタンスを全て抜き出し、それを視聴履歴テンプレートの状態とみなす。そして、そのウィンドウ（画面）の外枠を表現するようなクラスのインスタンスが、画面上で実際に表示されたとき（Frame.show()ソッドが実行されたとき）を持って、その状態に突入したとみなし、非表示になった場合（hide()メソッド等が呼ばれた場合）をもって、その状態を脱出したとみなすことにより、状態遷移を抽出することができる。
【０１２５】
以下では、実際のＪＡＶＡプログラムから、視聴履歴テンプレートの状態を抜き出し、かつ、その状態への突入点及びその状態からの脱出点を計算する例を示す。
【０１２６】
まず、この視聴履歴テンプレートの自動生成を行うための装置の構成は、基本的に実施の形態１の装置構成（図１参照）と同様である。ただし、実施の形態１では、視聴履歴テンプレート１１０３が、光ディスク１１００内に予め記録されていたのに対して、本実施の形態では、視聴履歴テンプレート１１０３が、光ディスク１１００内に記録されていない。
【０１２７】
そして、光ディスク１１００が光ディスクプレーヤ１０００に挿入され、プログラムコンテンツ処理部１００１が、光ディスクアクセス部１００２を介して光ディスク１１００の内容を読み取り、視聴履歴テンプレート１１０３が光ディスク１１００内にないことを発見した場合に、プログラムコンテンツ処理部１００１は、プログラムコンテンツ１１０１から視聴履歴テンプレート１１０３を自動生成する。そして、自動生成された視聴履歴テンプレート１１０３は、ファイルシステム１０１０に視聴履歴テンプレート１０１２として格納され、視聴履歴の生成記録及び解析に利用されることになる。
【０１２８】
次に、プログラムコンテンツ１１０１の内容を示す。
【０１２９】
図８に示すプログラムコンテンツ１１０１は、非常に簡単なＪＡＶＡプログラムの一例である。これをバイトコンパイルしたものが、本実施の形態におけるプログラムコンテンツである。
【０１３０】
このＪＡＶＡプログラムは、実施の形態１における「主選択画面」（状態２００４、ＩＤ＝１）に関連する部分において、説明に不要な要素を排除し簡略化したものである。具体的には、このプログラムコンテンツは、画面数が１つであって、章選択画面のみであり、動画コンテンツの再生のための画面も説明に不要のため省略している。また、画面が１つなので、プログラムコンテンツには、画面の非表示のためのメソッドがない。
【０１３１】
図９は、このプログラムコンテンツが実際に起動され表示された画面を模式的に表現した図である。
【０１３２】
図１０は、図８に示したプログラムコンテンツ１１０１のバイトコンパイル結果を示す。ただし、実際のバイトコンパイル結果は数字の羅列であるが、説明の便宜上、人間が読めるように、図１０は、バイトコンパイル結果をニーモニックで表現している。なお、図１０のバイトコンパイル結果９００１の左側に付された番号は、説明のために付加された行番号であり、バイトコードの一部ではない。
【０１３３】
さて、プログラムコンテンツ処理部１００１は、図１０から、Java.awt.Frameクラスのインスタンスを見つけ、また、そのshow()メソッドの実行箇所を見付けて、そこから視聴履歴テンプレートを生成する。このようにして、プログラムコンテンツ処理部１００１は、バイトコード中に存在するシンボル情報を手がかりにして、視聴履歴テンプレートを生成する。
【０１３４】
一般に、インタプリタ型の処理系の場合（ＪＡＶＡの処理系はその典型例である）、その言語実行処理のためには、クラス名、メソッド名等のように、人間にも理解容易なシンボル名がバイトコード中に残されていなければならない。そのため、バイトコード中から、Ｆｒａｍｅクラス及びshow()メソッドを見つけることは困難ではなく、そのクラス（正確には、そのインスタンス）の生成部分を見つけ、更にその部分からshow()メソッド等の表示化メソッドの位置を探せばよい。そして、見つかったＦｒａｍｅクラス（又はそのサブクラス）のインスタンスが、視聴履歴テンプレートの状態の１つになり、show()メソッドが実際に実行される時点が、その状態に突入した時刻となる。
【０１３５】
同様に、画面を非表示にするような、hide()又はdispose()等の表示終了の非表示化メソッドが見つかった場合には、それら非表示化メソッドの実行時点が、その状態を脱出した時刻と記録される。このように、表示化メソッド又は非表示化メソッドを用いることにより、状態遷移を記録することができる。
【０１３６】
なお、状態の名称又は属性には、なるべく後の解析過程に役立つように、様々な情報をできるだけ残すようにする。例えば、状態の名称又は属性には、クラスの名称又はshow()メソッド周辺にあるシンボルの名前等を残しておく。
【０１３７】
次に、プログラムコンテンツ処理部１００１が、図１０に記載された、Java.awt.Frameクラス及びそのshow()メソッドの実行箇所を見付けて、そこから、プログラムコンテンツ処理部１００１が、視聴履歴テンプレートを生成する過程を説明する。この視聴履歴テンプレートの生成は、図１１に示めすフローチャートに従って行われる。
【０１３８】
以下、視聴履歴テンプレートの生成は、図１０のプログラムコンテンツの例に従って、説明する。
【０１３９】
まず、プログラムコンテンツ処理部１００１は、注目するクラスとして、Ｆｒａｍｅクラス（及びそのサブクラス）を設定する（ＳＴ１０００２）。
【０１４０】
この後、注目すべきクラスが出現するまで（プログラム的には、インスタンスが生成されるまで）バイトコードを１命令ずつ読み進む（ＳＴ１０００３、ＳＴ１０００４、ＳＴ１０００５の繰り返し）。
【０１４１】
図１０の例では、Java.awt.Frameクラスそのものはないが、バイトコンパイル結果９００１の２行目から、ＬｉｓｔＦｒａｍｅクラスが、Java.awt.Frameを継承したクラスであることがわかる。そこで、図１０では、このＬｉｓｔＦｒａｍｅクラスに注目する。
【０１４２】
なおここで、プログラムコンテンツ処理部１００１は、バイトコートをそのまま読み進めると、５行目で、このＬｉｓｔＦｒａｍｅクラスのインスタンスを生成している部分（命令：ｎｅｗ）に行き当たる。よって、この５行目までの命令を読めば、基本的には視聴履歴テンプレートの状態として記録してよいのだが、実際のクラスの中には、生成だけして、表示されないようなものも考えられるため、表示が確定するまで状態としての記録を先延ばしし、まだ記録はしない。
【０１４３】
更に、読み進むと、次は、先ほど生成されたＬｉｓｔＦｒａｍｅクラスのインスタンスの初期化メソッドが見つかる（図１０の７行目）。
【０１４４】
ここで、ＳＴ１０００５の判断では、ＹＥＳ側に分岐し、ＬｉｓｔＦｒａｍｅクラスは、注目クラスのサブクラスであるから、ＳＴ１０００６もＹＥＳ側に分岐する。ここで、ＳＴ１０００７を実行する。まずは、飛び元をmainメソッドの４命令目（図１０の７行）と記録して、初期化メソッドの実体であるＬｉｓｔＦｒａｍｅメソッドのバイトコードの読込みに移る（注、ＪＡＶＡ言語では、初期化メソッド（コンストラクター）の名前とクラス名とが同一であるが、これはメソッドの名前である）。つまり、以降しばらく、図１０の１３行目以降を読んでいく事になる。
【０１４５】
図１０の１３行目以降の命令を読んでいくと、しばらくは、ＳＴ１０００３、ＳＴ１０００４、ＳＴ１０００８、ＳＴ１００１２、ＳＴ１００１０、ＳＴ１０００３のループで、命令を読み飛ばす。
【０１４６】
そして、図１０の５７行目まで読み飛ばしたところで、show()メソッドが見つかる。この結果、ＳＴ１０００８ではＹＥＳ側に分岐し、ここで初めて、視聴履歴テンプレートの状態が１つ生成され記録されることとなる（ＳＴ１０００９）
【０１４７】
まず、ＩＤは単なるユニークな数字であり、ここでは１とする。状態の名称は、クラス名にインスタンス同士を識別するためのユニークな識別子を付加したものとし、ここではクラス名にＩＤを付加したものとする。具体的には、ＬｉｓｔＦｒａｍｅ＃１が、ＳＴ１０００９で記録された状態の名称となる。
【０１４８】
図１２は、最終的に生成される視聴履歴テンプレートである。図１２の５行目には、ＳＴ１０００９で記憶された状態のＩＤ及び名称が付加されている。なお５行目には、状態のＩＤ及び名称以外にも、ＬｉｓｔＦｒａｍｅクラスのスーパークラス名のリスト（super属性）、ＬｉｓｔＦｒａｍｅクラスのインスタンスが生成された場所（loc属性、内容は、mainメソッドの０番命令）が、記載されている。
【０１４９】
その他、図１０のプログラムコンテンツから得られる情報として、６行目には、このインスタンスに保持されている他のグラフィックオブジェクトに関する情報（Label,List属性）が記載される。
【０１５０】
そして、８行目には、show()メソッドのプログラムコンテンツ中の位置が記録される。この位置情報は、後にプログラムコンテンツ処理部１００１が、このプログラムコンテンツを処理した場合、このプログラム位置の命令（ListFrame()メソッドの８６番命令）を実行した場合に、このＬｉｓｔＦｒａｍｅ＃１の状態に入ったと記録するためのトリガーとなる。そして、最終的には、図１０に示したプログラムコンテンツを最後まで読み終わり、この結果、図１２に示したような視聴履歴テンプレート１１０００が生成される。
【０１５１】
なお、以上の説明では、プログラムコンテンツがＪＡＶＡ言語で記述された場合を例に説明したが、他言語で記述されている場合にも、同様のことが実現できる。いずれの場合も、同種の一連の画面表示を１つの状態として考え、それを実装しているようなプログラム言語上のクラス或いはメソッドに注目して、視聴履歴を生成すればよい。
【０１５２】
以上のように、本実施の形態では、プログラムコンテンツが実装されるプログラム言語上でウィンドウ（画面）を表現するクラス及び当該クラスを表示化／非表示化するメソッドに注目し、プログラムコンテンツから、ウィンドウ（画面）を表現するクラスを視聴履歴として取得すべき状態として抽出し、当該状態に突入した時刻又は当該状態を脱出した時刻を表示化／非表示化メソッドを用いて記録するような視聴履歴テンプレートを生成するようにした。これにより、プログラムコンテンツ処理部１００１の状態及びそれら状態間のリンクが記載されている視聴履歴テンプレートを、人間の労力を介さずに機械的に自動的に作成することができる。
【０１５３】
なお、以上の説明では、コンテンツメディアの形態がＤＶＤやＢｌｕ−ｒａｙディスク等の光ディスクの場合を例に説明したが、メディアの形態は、ディスクという形態或いはレーザ光等のように光でコンテンツ内容を読み取れる形態に限定されるわけではない。メディアの形態は、ビデオカセットテープのようなテープ状のものでもよく、また、計算機ＯＳ（Operating System）のファイルシステム上のファイルのように物理的に定まった形態がないものでもよい。
【０１５４】
またコンテンツ内容の読み取り方法は、光に限られず、磁気利用等任意の方法でかまわない。例えば、コンテンツ内容の読み取り方法は、ネットワークからダウンロードしてファイルに保存した、アドビシステムズ社のフラッシュ形式やマイクロソフト社のウィンドウズ（WINDOWS（登録商標））メディアビデオ形式のコンテンツでもよい。
【０１５５】
更には、特定のＯＳでの実行形式のファイル（例えば、Ｌｉｎｕｘ（登録商標）ＯＳのＥＬＦ（Executable and Linking Format）形式やマイクロソフト社のウィンドウズＯＳのｅｘｅ形式等）でも同様の効果を得ることができる。これらの場合は、コンテンツの再生装置は、たとえば、一般のパーソナルコンピュータ上のコンテンツ再生アプリケーションとそのコンテンツ再生に必要なパーソナルコンピュータ自体や周辺機器を組みあわせたものとなるだろう。
【０１５６】
２００９年２月１３日出願の特願２００９−０３１９０９に含まれる明細書、図面及び要約書の開示内容は、すべて本願に援用される。
【産業上の利用可能性】
【０１５７】
本発明は、プログラムコンテンツが、映像音声コンテンツを提示するユーザインタフェースを含む市販のＢｌｕ−ｒａｙディスクに対しても、詳細な視聴履歴を生成することができ、例えば、ＤＶＤプレーヤ、Ｂｌｕ−ｒａｙディスクプレーヤ等に有用である。
【符号の説明】
【０１５８】
１０００  光ディスクプレーヤ
１２００  リモコン
１００１  プログラムコンテンツ処理部
１００２  光ディスクアクセス部
１００３  リモコン入力部
１００４  操作部
１００５  重畳部
１００６  ＧＵＩ表示部
１００７  動画・音声再生部
１００８  ネットワークＩ／Ｆ
１００６  ＧＵＩ表示部
１００７  動画・音声再生部
１００９  視聴履歴生成部
１０１０  ファイルシステム
１０１１、６００１  視聴履歴
１０１２、１１０３  視聴履歴テンプレート
１１００  光ディスク
１１０１  プログラムコンテンツ
１１０２  映像・画像・音声コンテンツ
１４００  ネットワーク
１５００  履歴収集サーバ
２００９  状態グループ
３００１、３００２、１１０００  視聴履歴テンプレート
８００１  ウィンドウ（画面）の外枠
８００２、８００３  ウィンドウ（画面）の内枠
【図１】
2010092763.tif 000003
【図２】
2010092763.tif 000004
【図３Ａ】
2010092763.tif 000005
【図３Ｂ】
2010092763.tif 000006
【図４】
2010092763.tif 000007
【図５】
2010092763.tif 000008
【図６】
2010092763.tif 000009
【図７】
2010092763.tif 000010
【図８】
2010092763.tif 000011
【図９】
2010092763.tif 000012
【図１０】
2010092763.tif 000013
【図１１】
2010092763.tif 000014
【図１２】
2010092763.tif 000015
【手続補正書】
【提出日】平成22年8月23日(2010.8.23)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンテンツメディア再生装置及びコンテンツメディアに関し、例えば、ＤＶＤ（正式名称、規格名）プレーヤ、Ｂｌｕ−ｒａｙ（正式名称、規格名）ディスクプレーヤ等の視聴履歴を取得するコンテンツメディア再生装置及びコンテンツメディアに関する。
【背景技術】
【０００２】
近年は、テレビ、ビデオプレーヤ、ケーブルテレビ受信機（ケーブルテレビ、セットトップボックス）等のオーディオビジュアル（ＡＶ：Audio Visual）家電機器のインターネット（登録商標）対応が進み、従来の放送やビデオコンテンツの視聴だけではなく、インターネットサービスもＡＶ家電に対して提供されるようになってきた。例えば、パナソニック（株）のＶＩＥＲＡＣａｓｔやソニー（株）のアプリキャスト（登録商標）というサービスでは、ユーザはテレビを見ながらインターネットサービスを受けることができる。
【０００３】
また同様に、ＢＤ−ＬＩＶＥ（規格名）規格に対応したブルーレイディスクプレーヤ（Blu-ray disk player）では、ＢＤ−ＬＩＶＥ規格に対応したブルーレイディスクを再生
する場合に、ユーザは、インターネットサービスを受けることができる。
【０００４】
具体的には、ユーザは、現在受信しているテレビ番組に出演中の俳優に関連した情報をインターネットから取得してテレビ画面に表示させたり、テレビ番組に関連した映画、音楽等を、インターネットを通じて購入したりすることが可能となる。また、ユーザは、再生視聴した映画の映像ディスクに関連した映画のメイキング等の映像特典をインターネットからダウンロードしたりすることも可能となる。
【０００５】
さて、このように家電機器におけるインターネットサービスを行なうための家電機器内部の仕組みや光ファイバ網等のインフラはできあがりつつあるが、その一方で、これら機能、サービスが、ユーザに広く利用されるようになってきているとはいい難い。
【０００６】
ユーザの利用を阻む原因はいくつか考えられるが、そのうちの１つは、家電機器の場合、パソコン又はインターネット対応携帯電話に比較して、ユーザの入力の自由度が低く、使い勝手が悪いということが挙げられる。
【０００７】
例えば、興味がある映画の映像ディスクを購入しようとする場合、パソコンでは、ユーザは、オンラインショッピングサイトで、自身が欲しい映画の題名をキーボード入力し、オンラインショップから提示された複数の候補から映像ディスクをマウスで選択し、後は決済すればよい。これに対し、例えば、インターネットサービスに対応したテレビには、キーボードのような文字入力手段がない。そのため、ユーザは、文字入力手段に代えて、リモコンを入力操作せねばならず、望みの商品に辿りつくまでに疲れ果ててしまう。
【０００８】
この欠点を解消するには、文字入力或いはポインティングができるテレビ用入力機器をテレビに付属させればよいように思えるが、これはハードウエアの改変追加が必要となるため、家電機器のコスト増に繋がり、必ずしも得策ではない。
【０００９】
そこで、発想を変えて、ユーザの煩雑な入力をできるかぎり削減することで、ユーザの使い勝手を向上させる方法が考えられる。つまり、家電機器側がユーザの嗜好又は望みを推測することで、ユーザは必要最低限の入力だけでユーザが望みのサービスを享受できるようにして、ユーザの使い勝手を向上させる。
【００１０】
このユーザの嗜好又は望みを推測するには、様々な手法がある。その中でも、テレビ或いは映像ディスクプレーヤとの関係で重要になるのは、ユーザがそれらＡＶ家電機器を用いて視聴した履歴である視聴履歴を獲得して統計的な解析等を用いる手法である。
【００１１】
例えば、簡単な例では、テレビにおいて、あるユーザが野球中継の番組を中心的に見ているということが分かれば、そのユーザは野球が好きなのであろうことが推測できる。その結果、ユーザがケーブルテレビ等の有料放送を選択しようとする場合、サービスを提供する側が野球中継のチャネルをいくつか推薦してあげるようにすると、ユーザは、沢山のチャネルの中からいちいち望みのチャネルを選択するという手間を省くことができる場合が多いであろう。
【００１２】
特許文献１には、視聴履歴の典型的な収集手段が開示されている。特許文献１に開示される収集手段は、まずテレビのリモコンのキーが押下された時刻の情報をあわせてリモコン信号を記録する。そして、このリモコン信号の履歴と別途取得した番組情報とが組みあわされて、視聴履歴が生成される。
【００１３】
そして、このように取得された視聴履歴を用いて、ユーザの嗜好等が解析されるようにすればよい。例えば、特許文献２には、収集した視聴履歴の分析手法（特許文献２の用語では「視聴傾向分析」）が開示されている。
【００１４】
このように、何らかの形でユーザの視聴履歴が生成取得されれば、その情報を分析することにより、家電機器は、ユーザの嗜好又は望みにあわせて自動的にサービスを提供することが可能となる。したがって、嗜好の分析を正確に詳細に行なうには、分析手法そのものを改良することはもちろんであるが、それと同時に正確でかつ豊富なユーザの視聴履歴を取得することが重要になってくる。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００４−２４８２０１号公報（第２頁の請求項１乃至請求項２、図３）
【特許文献２】特開２００５−３５２７５４号公報（第１５−１９頁の実施例）
【発明の概要】
【発明が解決しようとする課題】
【００１６】
テレビ、ケーブルテレビ或いは有線放送のような放送の場合は、チャネルと時刻さえ指定すれば、コンテンツのどの場面が再生されているのかを明確にすることができる。そのため、後はテレビ等に対するユーザの操作を時刻と共に記録さえすれば、かなり正確かつ詳細に視聴履歴を記録することができる。そして、テレビに対するユーザの操作は、テレビの操作ボタン或いはリモコンのキーの押下からほぼ曖昧さを残さずに読みとることが可能である。
【００１７】
これに対して、ビデオプレーヤ（ＤＶＤプレーヤ或いはＢｌｕ−ｒａｙディスクプレーヤ）は、放送と異なり番組表のようなものがない。そのため、例えば、ユーザのリモコン操作及び時刻から、ユーザがどのようなタイトルのビデオコンテンツを視聴して、どの場面を見ていたか等を推測することは非常に困難である。
【００１８】
したがって、ビデオプレーヤにおいて、視聴履歴を自動的に記録するためには、少なくともビデオコンテンツのタイトル或いは内容構成のようなメタ情報を、ビデオプレーヤが取得できることが必要である。例えば、ビデオプレーヤが、ビデオコンテンツのタイトルさえ分かれば、少なくともそのタイトルを見たという程度の記録を視聴履歴に残すことができる。また、ビデオプレーヤが、ビデオプレーヤの操作キー（再生、早送り、停止等）をも記録すれば、このタイトルのどの部分を何分間、何回見たというような、細かい情報も視聴履歴に記録できるであろう。これにより、視聴履歴の質はある程度高くなったかに思える。
【００１９】
しかし、近年は、ＢＤ−ｌｉｖｅ対応のＢｌｕ−ｒａｙディスクコンテンツ等のディスクに記録されている映像音声コンテンツの再生制御を、複雑なプログラムで行なえるような規格が登場している。この場合、ユーザは、従来の操作キー（再生、早送り、停止等）を用いてもコンテンツの再生操作が可能であるが、これら操作キーに加えて、ＧＵＩ（Graphical User Interface）画面を通して、コンテンツの操作を行なえるような場合も登場している。また、上記ＧＵＩ画面を提供するプログラムを再生制御にだけ使うのではなく、そのプログラム自体がコンテンツとされるような場合も考えられる。ゲーム或いはマルチエンディングの物語等が典型的な例である。
【００２０】
しかしながら、ＧＵＩ画面を提供するプログラム自体がコンテンツとされるような場合には、どの時点においても同一の意味を持つような操作キーというものが少なくなるため、単純にユーザのキー操作だけを記録しても、ユーザが何をしていたのかを把握することが難しく、そのため、視聴履歴の生成が困難となる場合が増えてくる。
【００２１】
本発明の目的は、ＢＤ−ｊａｖａ対応のＢｌｕ−ｒａｙディスク等のように動画等再生がプログラム制御されているような複雑なコンテンツおいても、利用価値が高い視聴履歴を生成することができるコンテンツメディア再生装置及びコンテンツメディアを提供することである。
【課題を解決するための手段】
【００２２】
本発明のコンテンツメディア再生装置は、映像音声コンテンツと、前記映像音声コンテンツを提示するユーザインタフェースを含むプログラムコンテンツとからなるコンテンツメディアを再生するコンテンツメディア再生装置であって、前記コンテンツメディアを読み取るアクセス部と、ユーザからの操作入力を受け付ける入力部と、前記アクセス部から前記プログラムコンテンツを読み出し、前記操作入力に従い前記プログラムコンテンツを
動作させて、前記映像音声コンテンツの再生制御を行なうプログラムコンテンツ処理部と、前記映像音声コンテンツの視聴履歴として記録すべき前記プログラムコンテンツ処理部の状態及び前記状態間のリンクが記載されている視聴履歴テンプレートを記録する記録部と、前記プログラムコンテンツ処理部が、前記視聴履歴テンプレートに記載された状態を遷移した時刻と当該状態とを前記視聴履歴として生成する生成部と、を具備する構成を採る。
【００２３】
本発明のコンテンツメディアは、映像音声コンテンツと、前記映像音声コンテンツを提示するユーザインタフェースを含むプログラムコンテンツと、前記映像音声コンテンを再生するコンテンツメディア再生装置の状態及びそれら状態間の遷移のうち、前記映像音声コンテンツの視聴履歴として記録すべき状態及びそれら状態間の遷移が記載されている視聴履歴テンプレートと、を具備する構成を採る。
【発明の効果】
【００２４】
本発明によれば、例えば、ＢＤ−Ｌｉｖｅ対応のＢｌｕ−ｒａｙディスク、アドビシステムズ社のフラッシュ（Flash、商標）コンテンツように、映像音声コンテンツと、それ
ら映像音声コンテンツを提示するユーザインタフェース（ＵＩ：User Interface）を含むプログラムコンテンツとからなるコンテンツメディアに対しても、詳細で情報量が多い視聴履歴を生成することができる。そして、視聴履歴と視聴履歴テンプレートとを対にして解析することにより、視聴履歴を機械的に解析することが可能となり、計算機を用いた大規模な視聴履歴解析に供することができる。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施の形態１に係る光ディスクプレーヤ及び光ディスクの構成図
【図２】実施の形態１におけるプログラムコンテンツの内容を表現した状態遷移図
【図３Ａ】実施の形態１における視聴履歴生成テンプレートの一例を示す図
【図３Ｂ】実施の形態１における視聴履歴生成テンプレートの別の例を示す図
【図４】実施の形態１における視聴履歴の生成方法を説明するためのフローチャート図
【図５】実施の形態１におけるプログラムコンテンツのＪＡＶＡプログラムの一例を示す図
【図６】実施の形態１における視聴履歴の一例を示す図
【図７】実施の形態１における視聴履歴を解析して得られた行動図
【図８】本発明の実施の形態３におけるＪＡＶＡプログラムの一例を示す図
【図９】実施の形態３におけるプログラムコンテンツを動作させて得られるディスプレー上の表示の模式図
【図１０】実施の形態３におけるＪＡＶＡプログラムのバイトコードの一例を示す図
【図１１】実施の形態３における視聴履歴テンプレート自動生成方法を説明するためのフローチャート
【図１２】実施の形態３における視聴履歴生成テンプレートの一例を示す図
【発明を実施するための形態】
【００２６】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【００２７】
（実施の形態１）
本実施の形態は、本発明の基本的な実施例である。以下では、コンテンツメディアのコンテンツメディア再生装置を用いて、ユーザがあるコンテンツメディアを再生した場合を例に、視聴履歴の生成方法について説明する。なお、以下では、コンテンツメディア及びコンテンツメディア再生装置として、ＤＶＤ又はＢｌｕ−ｒａｙディスク等の光ディスク及び光ディスクプレーヤに本発明を適用する場合を例に説明する。
【００２８】
まず、図１は、実施の形態１に係る光ディスクプレーヤ及び光ディスクの内部構成を示すブロック図である。
【００２９】
光ディスクプレーヤ１０００は、光ディスク上のコンテンツの再生、及び、光ディスク上のプログラムコンテンツを実行することができる装置である。光ディスクプレーヤ１０００は、プログラムコンテンツの内容及びユーザが手にしているリモコン１２００からの入力に従い動作する。再生されたコンテンツの映像音声或いはプログラムコンテンツの実行の結果生じるグラフィック表示は、ディスプレー（及びスピーカー）１３００にて表現される。
【００３０】
リモコン１２００からの入力は、リモコン入力部１００３によって受信され、操作部１００４に渡される。操作部１００４は、リモコン１２００から入力される電気的信号を、プログラムコンテンツ処理部１００１、ＧＵＩ（Graphical User Interface：グラフィカルユーザインタフェース）表示部１００６及び動画・音声再生部１００７が扱い得るプログラム言語上の入力イベント（典型的にはキーイベント、マウスイベント等）に変換する。
【００３１】
プログラムコンテンツ処理部１００１は、光ディスクアクセス部１００２を通して、光ディスク１１００内のプログラムコンテンツを読み取り、読み取ったプログラムコンテンツ及びユーザのリモコン入力（キーイベント）に従い、ＧＵＩ表示部１００６の支援を受けて、グラフィカルユーザインタフェース（ＧＵＩ）をディスプレー（及びスピーカー）１３００に表示する。また、プログラムコンテンツ処理部１００１は、ユーザからのリモコン入力（キーイベント）を待ったり、或いは、動画・音声再生部１００７に命じて映像音声コンテンツをディスプレー（及びスピーカー）１３００に表示させたりする。このプログラムコンテンツ処理部１００１の動作は、後に詳しく説明する。
【００３２】
光ディスクプレーヤ１０００は、各種情報の汎用記憶装置としてファイルシステム１０１０を持っており、光ディスクプレーヤ１０００の各部はファイルシステム１０１０にアクセスし、読み書きすることができる。
【００３３】
ファイルシステム１０１０は、記憶装置であり、ファイルシステム１０１０上に、適当な時点で視聴履歴テンプレート１０１２及び視聴履歴１０１１が書き込まれる。この視聴履歴１０１１は、視聴履歴生成部１００９によって読み書きされる。
【００３４】
更に、視聴履歴生成部１００９は、必要があればネットワークＩ／Ｆ（Inter Face）１００８を介して、光ディスクプレーヤ１０００の外部に設置された履歴収集サーバ１５００に、その視聴履歴１０１１をアップロードすることができる。
【００３５】
ネットワーク１４００は、光ディスクプレーヤ１０００と履歴収集サーバ１５００との間に存在する、家庭内のローカルエリアネットワーク或いはインターネットを便宜的にひとまとめにして表現したものである。
【００３６】
一方、光ディスク１１００には、プログラムコンテンツ１１０１、映像・画像・音声コンテンツ１１０２及び視聴履歴テンプレート１１０３が保持されており、これらを光ディスクプレーヤ１０００は、光ディスクアクセス部１００２を介して読み取ることができる。
【００３７】
プログラムコンテンツ１１０１は、何らかのプログラム言語で記述されたアプリケーションであって、映像・画像・音声コンテンツ（又は映像音声コンテンツ）１１０２の再生
制御をしたり、或いはユーザに対しＧＵＩを表示させたりする。また、プログラムコンテンツ１１０１自体が、ユーザに対するゲーム等のコンテンツであったりする場合もありうる。
【００３８】
本実施の形態におけるプログラムコンテンツ１１０１の内容については、別途、図２を用いて後に詳述する。
【００３９】
映像・画像・音声コンテンツ１１０２は、静止画像、映画或いは音楽等であって、時間的に順次再生が予定されている、狭い意味でのコンテンツである。
【００４０】
光ディスク１１００が、ある映画を主内容とする場合には、その映画そのものがコンテンツとなる。また、光ディスク１１００が、写真集のようなものであれば、写真そのものがコンテンツとなり、この写真をリスト表示させたりスライドショー表示させたりするようなプログラムがプログラムコンテンツとなる。
【００４１】
本実施の形態では、光ディスク１１００が映画を主内容とし、映像・画像・音声コンテンツ１１０２が、映画本編そのもの、及び、予告編そのものとなる場合を例に説明する。
【００４２】
図２は、プログラムコンテンツ１１０１の内容を、模式的に表現した状態遷移図である。実際のプログラムコンテンツは、プログラムコンテンツ処理部１００１が効率良く処理できるように、プログラム言語からコンパイルされており、人間には理解しづらいので、図２のように模式的に表現した。図２の各々の状態に関しては、以下の説明の流れの中で説明する。
【００４３】
なお、本実施の形態では、プログラムコンテンツ１１０１の記述言語としてＪＡＶＡ（登録商標）（プログラム言語名）を仮定している。また、そのためプログラムコンテンツ処理部１００１は、ＪＡＶＡの処理系（ＶＭ：Virtual Machine）の１つである。
【００４４】
図３Ａは、視聴履歴テンプレート１１０３（又は１０１２）の具体的な内容を示す。
【００４５】
図３Ａの視聴履歴テンプレート３００１及び図３Ｂの視聴履歴テンプレート３００２は、ＸＭＬ（eXtensible Markup Language）で表現された視聴履歴テンプレート１１０３（又は１０１２）である。なお、視聴履歴テンプレート３００１、３００２の左側の行番号は、説明のために便宜的に付加されたものであり、実際の視聴履歴テンプレート１１０３（又は１０１２）には、行番号は含まれない。
【００４６】
図４は、プログラムコンテンツ処理部１００１の動作のうち、視聴履歴生成に関わる動作部分を表現したフローチャートである。
【００４７】
図５は、プログラムコンテンツ１１０１の一例である。プログラムコンテンツ処理部１００１が、プログラムコンテンツ１１０１を処理実行していく過程で、視聴履歴生成のタイミングを見つける処理を説明するため、図５のプログラムコンテンツ１１０１は、ＪＡＶＡ言語のイメージで表現されている。なお、図５の例は、説明を簡単にするため、内容的に非常に簡略化されている。そのため、図５のＪＡＶＡ言語で表現された内容と図２で表現されている内容とは全く異なるものである。
【００４８】
図６は、本実施の形態で最終的に生成される視聴履歴１０１１である。なお、図６に示す視聴履歴６００１の左側の行番号は、説明のために便宜的に付加されたものであり、実際には、視聴履歴６００１に、行番号は含まれない。
【００４９】
図７は、図６のように表現された視聴履歴６００１を、視聴履歴テンプレート３００１に照らし合わせて解析した結果を、図２の状態遷移図に重ねて表現した図である。
【００５０】
以上の図１〜図７を用いて、光ディスクプレーヤ１０００の動作について説明する。
【００５１】
今、光ディスクプレーヤ１０００に、光ディスク１１００が挿入されたとする。通常のＢｌｕ−ｒａｙディスクプレーヤと同様に、光ディスクプレーヤ１０００にコンテンツディスクである光ディスク１１００が挿入されると、自動的に光ディスク１１００の内容が読み込まれ、コンテンツの再生が始まる。
【００５２】
本実施の形態においても、光ディスクアクセス部１００２を用いて、プログラムコンテンツ処理部１００１は、光ディスク１１００の内容、すなわちプログラムコンテンツ１１０１、映像・画像・音声コンテンツ１１０２及び視聴履歴テンプレート１１０３を読み込み、視聴履歴テンプレート１１０３をファイルシステム１０１０に視聴履歴テンプレート１０１２としてコピーする。
【００５３】
そして、次に、プログラムコンテンツ処理部１００１は、プログラムコンテンツ１１０１の実行を開始する。プログラムコンテンツ１１０１は、実体としては、コンパイルされたＪＡＶＡプログラムのバイトコードの集りであるが、以下では説明を簡単にするため、ＪＡＶＡプログラムと論理的に同値である図２の状態遷移図を用いて説明する。ただし、この図２の状態遷移図は非常に簡略化されている。また、プログラムコンテンツ処理部１００１は、実体としてはＪＡＶＡのＶＭであるが、説明を簡単にするために、状態遷移マシンとして説明する。
【００５４】
図２において、白地の四角或いは角丸四角は、プログラムコンテンツ１１０１の主な状態を示す。また、図２において、矢印は、各状態間の遷移可能性を示す。状態は、実際は何らかのきっかけ（ユーザからの入力、タイマー信号、ハードウエア割り込み等の遷移条件）で遷移する。或いは、状態は、きっかけ（遷移条件）が無くても無条件で遷移することもある。なお、図２には、状態遷移のきっかけ（遷移条件）は省略されている。
【００５５】
また、終了状態２０２０に対して矢印がないのは、終了状態２０２０へは任意の状態からの遷移が可能であるため、図が繁雑になるのを避けるために矢印を省略したことによる。
【００５６】
図２において、網掛四角（２００２、２００３、２００８、２００６、２０１１、２０１３、２０１５、２０１６、２０１８、２０１９）は、各状態につけられた名称を表している。実施の形態では、この名称は「状態ＩＤ」又は単に「ＩＤ」と呼ばれ、図２は、名称が数字で表されている例である。ただし、初期状態はｉｎｉｔｉａｌ、終了状態はｅｎｄという特別の名称を持つとする。なお、破線四角２００９は、状態グループを表す。状態グループ２００９については、後述する。
【００５７】
さて、プログラムコンテンツ処理部１００１は、光ディスク１１００が挿入されると、プログラムコンテンツ１１０１、すなわち図２の状態遷移図に従い、その状態を変更する。
【００５８】
まず、プログラムコンテンツ処理部１００１は、初期状態２００１（ＩＤ＝ｉｎｉｔｉａｌ）から開始し、その直後無条件で状態２００４（ＩＤ＝１）に遷移する。この状態で、プログラムコンテンツ処理部１００１は、主メニュー画面をディスプレー１３００に表示し、ユーザからの選択入力を待つ。主メニュー画面には、光ディスク１１００のコンテンツの内容がリスト形式で表示され、ここでユーザは、「映画の本編再生」、「本編から
章を選択」、「予告編の再生」又は「ゲーム」のメニューを選択することができる。
【００５９】
そしてユーザは、映画本編をすぐに見たければ、ディスプレー１３００に表示されているリストの中からリモコン１２００を操作して「映画の本編再生」を選択し、選択操作に伴うリモコン信号が、リモコン入力部１００３及び操作部１００４を経由して、キーイベントとしてプログラムコンテンツ処理部１００１に伝えられる。プログラムコンテンツ処理部１００１が、そのキーイベントを適切に解釈すると、リンク２０２４の遷移が発生し、プログラムコンテンツ処理部１００１の状態は、本編第１章の再生状態２０１４（ＩＤ＝１００）に遷移する。そして、プログラムコンテンツ処理部１００１は、動画・音声再生部１００７に本編の再生を命じ、映画本編が再生される。
【００６０】
以下、同様に、ユーザからのキーイベントに対して、プログラムコンテンツ処理部１００１は、内部状態を変更し、その状態に応じたアクションを実行することにより、プログラムコンテンツ１１０１が実行されていく。
【００６１】
このような場合に、視聴履歴は、どのように生成されるであろうか。
【００６２】
仮に、ここでキーイベントのみを記録した場合、記録されるのは、例えば、ディスプレー１３００に表示されたＧＵＩのリストを見るための「上下キー」、或いはリストから１つを選択するための「決定キー」等だけであり、これらのキーの羅列を第三者が後に取得し視聴履歴を解析しようとしても、全く意味が分からない。更に、同じプログラムコンテンツであっても、再生機器によってＧＵＩ表現やキーイベントに相違があるため、推測さえ充分には行なえない。
【００６３】
これに対し、本実施の形態では、視聴履歴テンプレートを利用して、視聴履歴を生成する。本実施の形態における視聴履歴生成の方法は、以下の通りである。
【００６４】
まず、視聴履歴テンプレートは、次のように定義される。視聴履歴テンプレートは、プログラムコンテンツを論理的に同等の状態遷移図として捕らえた場合の全ての状態から、視聴履歴として記録したい状態だけが抜き出された集合である。そして、その視聴履歴テンプレートに含まれる状態に対しては、他の状態へのリンク、状態を説明する名称、又は、その状態で実行されるアクションを説明するための説明文等の情報を付加することができる。
【００６５】
本実施の形態では、この視聴履歴テンプレートが、図３Ａ及び図３Ｂに示したようなＸＭＬ形式で記述される場合を例に説明する。なお、視聴履歴テンプレートは、必ずしもＸＭＬ形式である必要はなく、他の形式で表現されていても問題はない。
【００６６】
図３Ａ及び図３Ｂには、２つの視聴履歴テンプレート３００１、３００２が図示されている。これら視聴履歴テンプレート３００１、３００２は、どちらもプログラムコンテンツ１１０１（又は図２の状態遷移図）に対して作成されたものである。このうち、視聴履歴テンプレート３００１は、全ての状態に対して視聴履歴を取得する場合のテンプレートであり、かつ、リンクや名称等の付加情報も充実させた、いわばフルセットの視聴履歴テンプレートである。
【００６７】
視聴履歴テンプレート３００１を詳細に見ると分かるように、視聴履歴テンプレート３００１は、図２の状態遷移図の中身とほとんど同等である。視聴履歴テンプレートは、状態及び付加情報として状態間のリンクを含むので、視聴履歴テンプレート３００１のようにフルセットの視聴履歴テンプレートが用いられる場合には、得られる視聴履歴は、当然に対応する状態遷移図と同等となる。
【００６８】
一方、視聴履歴テンプレート３００２は、図２の状態グループ２００９の範囲、すなわち映像コンテンツ（映画予告編及び映画本編）の再生範囲内だけで視聴履歴を取得しようという場合のテンプレートであり、付加情報も全て欠落されている。視聴履歴テンプレート３００２が用いられる場合には、得られる視聴履歴は、取得したい状態ＩＤの列挙と同等となる。
【００６９】
当然のこととして、視聴履歴テンプレート３００１の方が、視聴履歴テンプレート３００２に比べ情報が豊富であるため、後に視聴履歴を解析する場合に、より多くの知見が得られる。ただし、視聴履歴テンプレート３００２に比べ、視聴履歴テンプレート３００１の作成には手間がよりかかる。
【００７０】
本実施の形態では、プログラムコンテンツ処理部１００１がフルセットの視聴履歴テンプレート３００１を利用する場合を例に説明する。
【００７１】
さて、視聴履歴テンプレート３００１を与えられたプログラムコンテンツ処理部１００１は、プログラムコンテンツ１１０１を処理実行しつつ、図４に示したようなフローチャートに従い、視聴履歴を生成していく。
【００７２】
今、ユーザは、以下に示すような順序で行動し、この光ディスク１１００を視聴するとしよう。
【００７３】
（行動＃１）主選択画面（状態２００４、ＩＤ＝１）を見て、本編再生（状態２０１４、ＩＤ＝１００）を選択する。
（行動＃２）本編をしばらく見るが、本編第２章（状態２０３５、ＩＤ＝１０１）の途中で、リモコン１２００を操作して、章選択画面（状態２００７、ＩＤ＝２）に移る。
（行動＃３）更に、主選択画面（状態２００４、ＩＤ＝１）に戻る。
（行動＃４）予告編１（状態２０１０、ＩＤ＝２００）に移り、予告編１を見る。
（行動＃５）続けて予告編２（状態２０１２、ＩＤ＝２０１）を見るが、途中で「ディスク排出」を行ない、視聴を終了（状態２０２０、ＩＤ＝ｅｎｄ）する。
【００７４】
なお、図６は、これらの行動を受けて生成された視聴履歴である。
【００７５】
最初に、プログラムコンテンツ処理部１００１は、開始ＳＴ４０００を経て、イベント待ちＳＴ４００１に入る。ここでのイベントとは、ユーザからのキーイベント、ハードウエアからの割り込み、タイマイベント等である。なお、プログラムコンテンツ処理部１００１は、図４に示したフローと同時並列に、プログラムコンテンツ１１０１の実行処理をも行なっていることに注意する。
【００７６】
まず、光ディスク１１００が光ディスクプレーヤ１０００に挿入されると、ディスク挿入を伝えるハードウエア割り込みが発生し、プログラムコンテンツ処理部１００１は、視聴履歴テンプレート読み込みＳＴ４００３に入る。ここで、プログラムコンテンツ処理部１００１は、視聴履歴テンプレート１１０３を読み出し、ファイルシステム１０１０内に視聴履歴テンプレート１０１２としてコピーする。プログラムコンテンツ処理部１００１は、コピー後、ＸＭＬ形式で記述された視聴履歴テンプレート１０１２を解析し、後の利用のために視聴履歴テンプレート１０１２に検索インデックス等を付加する。
【００７７】
そして、視聴履歴生成の準備が終ると、プログラムコンテンツ処理部１００１は、視聴履歴として初期状態を通過したことを記録する。具体的には、プログラムコンテンツ処理部１００１は、視聴履歴生成部１００９に対して、初期状態を通過したことを記録せよと
命ずる。そして、視聴履歴生成部１００９は、空の視聴履歴を新しく生成して、その冒頭に、時刻とともに、視聴履歴を記録する（視聴履歴６００１の１行目）。
【００７８】
視聴履歴６００１の１行目は、「発生した事象はユーザの行動起源のものであり（ディスク挿入、″ｅｖｅｎｔ″というタグで表現れている）、対応する状態ＩＤは、″ｉｎｉｔｉａｌ″（状態２００１、２００２）であり、この状態から出たこと（属性″ｏｕｔ″）、発生したタイムスタンプは、０秒」であることを意味している。
【００７９】
この後、プログラムコンテンツ処理部１００１は、再度イベント待ちＳＴ４００１に入る。
【００８０】
この間同時に、プログラムコンテンツ処理部１００１は、プログラムコンテンツ１１０１に従い、ディスプレー１３００に、主選択画面（状態２００４、ＩＤ＝１）を表示する。
【００８１】
初期状態（状態２００１、ＩＤ＝ｉｎｉｔｉａｌ）から主選択画面（状態２００４、ＩＤ＝１）に状態を変更したプログラムコンテンツ処理部１００１は、自らに状態変更のイベントを発行する。そして、プログラムコンテンツ処理部１００１は、状態変更のイベントを受信すると、図４のフローチャートに従い、イベント待ちＳＴ４００１からイベント種類分岐ＳＴ４００２に移り、ＳＴ４００５に移る。ＳＴ４００５は、視聴履歴テンプレート１１０３に照らしてこの状態変更を記録すべきかを否か判断する。
【００８２】
視聴履歴テンプレート３００１の５〜１０行目に、主選択画面（状態２００４、ＩＤ＝１）の状態を表す″ｍａｉｎ  ｍａｎｕ″があるので、検索ヒットＳＴ４００９はＹＥＳとなり、プログラムコンテンツ処理部１００１は、視聴履歴生成ＳＴ４００６に入る。このあと、プログラムコンテンツ処理部１００１は、視聴履歴生成部１００９に命じて、ＳＴ４００７に移り、適当な視聴履歴を記録し（視聴履歴６００１の２行目）、再度イベント待ちＳＴ４００１に入る。
【００８３】
なおここで、状態が遷移したことをプログラムコンテンツ処理部１００１はどのようにして知り得るか、また、視聴履歴テンプレートの作成者（通常、人間）は、どのような状態がありその名称（ＩＤ）は、何であるかをどのようにして知り得るかについて、説明をしておく。
【００８４】
プログラムコンテンツが、実装としても状態遷移図として実現されている場合、状態遷移図は、プログラム文面上でも明示されている。したがって、視聴履歴テンプレート作成者は、その状態遷移図を見ることにより視聴履歴テンプレートを作成することができる。そして、この作業は、かなりの部分まで自動化できるであろう。また、これに対応してプログラムコンテンツ処理部１００１も実装として状態遷移マシンとして実現されているであろうから、プログラムコンテンツ処理部１００１にとって、状態が遷移したことを知ることは容易である。
【００８５】
これに対して、状態遷移ではなく、ＪＡＶＡ言語のように手続的に表現されたプログラム言語とその処理系に対しては、状態が明示的に定義されているわけではないので、状態を定義し、状態が遷移したことをプログラムコンテンツ処理部１００１が知る仕組と、この状態の全体を視聴履歴テンプレート作成者が知る手段とを設ける必要がある。一番簡易な方法としては、プログラムコンテンツ作成を行なう人間が、状態を定義し、状態遷移のタイミングもプログラム文面上明示するという方法が考えられ、本実施の形態では、この方法を採用するとする。
【００８６】
図５は、非常に簡単な、リスト選択画面を表示するＪＡＶＡプログラムである。
【００８７】
図５のＪＡＶＡプログラム５０００において、クラス５００２（″Class Interpreter
″）は、プログラムコンテンツ処理部１００１に対して、状態遷移イベントを発行するために用意されたクラスである。そして、クラス５００２を使って、プログラムコンテンツ処理部１００１に対する通知５００１がＪＡＶＡプログラムに埋め込まれている。
【００８８】
クラス５００２は、実はプログラム文面上は、何もしない空であるが、これは、プログラムコンテンツ処理部１００１が履歴生成に対応していない場合を考慮したものである。プログラムコンテンツ処理部１００１が履歴生成に対応している場合には、このプログラムをロードすると、″Class Interpreter″のstate()メソッドは、初めからあった実装に上書きされることになる。
【００８９】
なお、人間が視聴履歴テンプレートを作成せずに、視聴履歴テンプレートが自動生成される方法については、実施の形態３で説明する。
【００９０】
再度図４に戻り、説明を、視聴履歴生成に戻す。
【００９１】
次に、ユーザは、（行動＃１）を実行する。つまり、ユーザは、主選択画面（状態２００４、ＩＤ＝１）を見て、リモコン１２００のキーの「選択キー」を押下し、本編再生（状態２０１４、ＩＤ＝１００）を選択する。
【００９２】
選択（シンボルは、ＥＮＴＥＲ）というキーイベントが、プログラムコンテンツ処理部１００１に送られると、プログラムコンテンツ処理部１００１は、そのキーイベントを視聴履歴として記録するとともに（視聴履歴６００１の３行目）、そのキーイベントの結果発生する状態遷移（状態２００４から状態２０１４への遷移）も記録する（視聴履歴６００１の４、５行目）。
【００９３】
視聴履歴６００１の４行目は、主選択画面の表示状態（状態２００４、ＩＤ＝１）が、タイムスタンプ１４で終了したことを示す。同５行目は、本編第１章再生状態（状態２０１４、ＩＤ＝１００）にタイムスタンプ１５で移ったこと示す。
【００９４】
一方、プログラムコンテンツ処理部１００１は、本編第１章再生状態（状態２０１４、ＩＤ＝１００）に入ると、その状態に付随したアクションとして、本編第１章を再生することを、動画・音声再生部１００７に命ずる。プログラムコンテンツ処理部１００１は、動画・音声再生部１００７に何事かを命ずる場合は、その命令に応じた映像音声コンテンツイベントを自らに向けて発生させる。その結果、ＳＴ４０１０が実行されて、視聴履歴６００１の６〜１２行目が記録される。
【００９５】
プログラムコンテンツ処理部１００１が、動画・音声再生部１００７に対して命令を発行する場合、映像のタイトル名、映像の記録時間、フォーマット等のメタ情報が明確になっている場合が多いので、このようなメタ情報も同時に記録される（視聴履歴６００１の８〜１０行目）。
【００９６】
以下、同様にして、（行動＃２）から（行動＃５）までの視聴様子が記録され、最終的に図６に示したような視聴履歴が生成される。
【００９７】
そして、光ディスク１１００の再生が終了すると（この場合は、ユーザの（行動＃５）により、ユーザは光ディスク１１００を排出した）、その状態が記録されるとともに（視聴履歴６００１の４２〜４５行目）、視聴履歴１０１１は閉じられ、視聴履歴テンプレー
ト１０１２と対にして保存される。
【００９８】
その後、必要に応じて、この視聴履歴１０１１と視聴履歴テンプレート１０１２との対は、履歴収集サーバ１５００にアップロードされ解析されたり、又は、アップロードされずに、光ディスクプレーヤ１０００の内部に保持されたまま、ユーザの利便性向上のために用いられたりすることができる。
【００９９】
図７は、図６に示した視聴履歴６００１を、視聴履歴テンプレート３００１を視覚的に表現した図２に示した状態遷移図の一部に、行動図風に表現した図である。
【０１００】
図７は、ユーザは本編を見始めてみたものの、おそらく途中で飽きてしまったのか、第２章で視聴を中断し、他の映画の予告編を少々見たものの、これもまた途中で中断してしまっていることを示している。ただし、ユーザの真意に少しでも近づくためには、タイムスタンプ、関連するキー操作又は他の視聴履歴との比較検討等が必要となるであろう。
【０１０１】
以上のように、本実施の形態では、視聴履歴テンプレート１０１２には、映像音声コンテンツの視聴履歴として記録すべきプログラムコンテンツ処理部１００１の状態及びそれら状態間のリンクが記載されており、視聴履歴生成部１００９は、プログラムコンテンツ処理部１００１が、視聴履歴テンプレート１０１２に記載された状態を遷移した時刻とその状態名とを視聴履歴１０１１として生成するようにした。
【０１０２】
これにより、音声映像コンテンツとプログラムコンテンツとが一体となったコンテンツ（ＢＤ−ｌｉｖｅ対応のＢｌｕ−ｒａｙディスクコンテンツやアドビシステムズ社のフラッシュコンテンツ等）に対しても、豊富で正確な視聴履歴を生成することができる。また、従来は、ネットワークからのダウンロード数の情報程度しか分からなかったフラッシュコンテンツに対しても、同様に視聴履歴を生成することができる。
【０１０３】
更に、収集した視聴履歴と視聴履歴テンプレートとをあわせることで、人間の恣意的な解釈と伴うことなく、機械的に一意にどの場面をどのように見たかを解析することができるようになるので、計算機による大規模かつ高速な視聴履歴解析が可能となる。
【０１０４】
（実施の形態２）
実施の形態１では、視聴履歴テンプレートが光ディスクに含まれる場合について説明した。
【０１０５】
実施の形態１で説明したように、視聴履歴テンプレートは、コンテンツ作成者が、プログラムコンテンツ或いは音声映像コンテンツの作成にあわせて同時に作り、プログラムコンテンツ或いは音声映像コンテンツと同一のコンテンツメディア中に記録して配布すれば、光ディスクプレーヤは、コンテンツ再生にあわせて視聴履歴テンプレートを確実に読み込むことができる。
【０１０６】
その反面、全ての光ディスクに視聴履歴テンプレートが記憶されるようにすると、視聴履歴テンプレートを利用しない光ディスクプレーヤで視聴する場合には無駄となったり、また、記録したい視聴履歴を後から変更したい場合には対応が困難となったりする。
【０１０７】
そこで、視聴履歴テンプレートをネットワーク上に置いて、必要な時点で光ディスクプレーヤは、ネットワーク上から視聴履歴テンプレートをダウンロードするような構成にすれば、これらの欠点は解消される。
【０１０８】
例えば、再度図１を例に用いて説明すると、光ディスク１１００には、視聴履歴テンプ
レート１１０３に代えて、視聴履歴テンプレート１１０３を識別することができるタグを記録し、履歴収集サーバ１５００は、視聴履歴テンプレートを多数記録するようにする。このとき、タグは、コンテンツのタイトル名或いは何らかのＩＤコード等とし、タグから視聴履歴テンプレート１１０３を検索することができるようにしておく。
【０１０９】
そして、プログラムコンテンツ処理部１００１は、光ディスク１１００を再生する場合に、履歴収集サーバ１５００から、光ディスク１１００に記録されたタグに対応する視聴履歴テンプレートを検索し、ネットワーク１４００を経由して視聴履歴テンプレートをダウンロードする。プログラムコンテンツ処理部１００１は、ダウンロードした視聴履歴テンプレートをファイルシステム１０１０上に視聴履歴テンプレート１０１２として記録しておく。
【０１１０】
このようにすれば、実施の形態１と同様の効果を得つつ、オンデマンドで、視聴履歴テンプレートを利用することができるようになる。
【０１１１】
（実施の形態３）
実施の形態１では、視聴履歴テンプレートは、コンテンツ作成者が、プログラムコンテンツ或いは音声映像コンテンツの作成にあわせて同時に作り、プログラムコンテンツ或いは音声映像コンテンツと同一のコンテンツメディア中に記録して配布する場合について説明したが、視聴履歴テンプレートは、プログラムコンテンツ或いは映像音声コンテンツから人間の手を介さずに機械的に生成することもできる。
【０１１２】
当然、人間が作成する視聴履歴テンプレートに比較すると、機械的に生成された視聴履歴テンプレートには、自動抽出できる情報の質に限界があり、後の視聴履歴の解析の点から劣る面もある。しかしその欠点があっても、人間の労力を介さずに機械的に自動的に視聴履歴テンプレートを作成できるという点は、効率面からは有用である。更に、視聴履歴テンプレートにそもそも対応していないコンテンツに対しても、ある程度の質の視聴履歴が取り得るという点からも有用である。そこで、本実施の形態では、視聴履歴テンプレートの自動生成について説明する。
【０１１３】
では、視聴履歴テンプレートの自動生成は如何にして為し得るか。実施の形態１で説明したように、視聴履歴テンプレートは、人間が理解できるように、コンテンツの構造又は動作を、プログラムコンテンツの「重要な場面」と「場面間の遷移」とに簡略化し、更に後に解析が機械的にできるような形式的言語で表現されている。
【０１１４】
これに対して、一般的なプログラムは、機械的な手続で状態遷移オートマトンに変換可能であるものの、オートマトンのいう状態を視聴履歴テンプレートの状態に置き換えようとしたところで、一意のオートマトンに定まるとは限られず、また、上記で説明したような「重要な場面」が抽出できるとも限らない。このため、何らかの意味的、経験的な方法を導入して、コンテンツから「重要な場面」を自動抽出する必要がある。
【０１１５】
本実施の形態では、プログラムコンテンツを記述する言語が、ＪＡＶＡ、Ｊａｖａｓｃｒｉｐｔ等のオブジェクト指向のプログラム言語であるとする。プログラムコンテンツがオブジェクト指向言語により記述されていることは、本実施の形態における視聴履歴テンプレートの自動生成方法に関しての前提となる。以下で詳述するが、本実施の形態における視聴履歴テンプレートの自動生成方法は、オブジェクト指向言語の特定のクラス又はメソッドに注目することで、人間にとって有用な状態（前記の「重要な場面」）を抽出するからである。
【０１１６】
まず、視聴履歴テンプレートにおいて、その履歴が欲しい重要な場面（状態）とは、ほ
とんどが、ユーザが選択したり、コンテンツに対して直接操作（再生、早送り、停止等）したりする場面である。また、視聴履歴で欲しい情報とは、何のコンテンツが選択されて、その選択されたコンテンツがどのように操作されたかについてであるから、これは当然のことといえる。
【０１１７】
では、その重要な場面である（１）コンテンツの選択の場面、（２）コンテンツの操作の場面は、プログラムコンテンツの構造とどう関係するか。現在のＧＵＩ全盛のソフトウェアにおいては、ユーザの行動と、画面或いは入力のユーザインタフェースの状態とが密接に関係している。つまり、（１）コンテンツ選択の場面においては、画面には何らかの選択候補が列挙されており、ユーザはリモコン等で、選択候補からの選択結果を入力することができるのが普通である。また、（２）コンテンツ操作の場面では、コンテンツに代えて、コンテンツを操作するためのＧＵＩが画面に表示されているのが普通である。
【０１１８】
そして、ＧＵＩソフトウェアの記述には、現在では、ほとんどの場合オブジェクト指向プログラム言語が用いられ、更に多くのオブジェクト指向言語は、典型的な画面表示及びユーザからの入力方法を一まとめにして、クラスライブラリとして提供している。
【０１１９】
このため、（１）コンテンツの選択の場面でも、（２）コンテンツ操作の場面でも、ある特定のクラス（プログラム言語のライブラリにより異なる）が表示されている場合が多い。
【０１２０】
例えば、実施の形態１で説明した図２のような状態遷移図のプログラムコンテンツを、例えばＪＡＶＡ言語のＡＷＴ（Abstract Window Toolkit）クラスライブラリを用いて作
成する場合、ウィンドウ（画面）の外枠を生成するには、Java.awt.Frame（以下、Ｆｒａｍｅとのみ略記する場合あり）クラスを用いることが普通である。そして、このウィンドウ（画面）の外枠の中に、各種の「部品」と呼ばれるクラスを配置していく。
【０１２１】
例えば、図９は、ＪＡＶＡ言語のＡＷＴクラスライブラリを用いて作成された選択画面の典型例であり、ウィンドウ（画面）の外枠８００１は、Ｆｒａｍｅクラスで作成され、ウィンドウ（画面）内枠８００２、８００３の部品は、それぞれＬａｂｅｌクラス、Ｌｉｓｔクラスで作成されている。そして、ＪＡＶＡ言語のＡＷＴクラスライブラリの場合、Ｆｒａｍｅクラスのようなウィンドウ（画面）の外枠を作成するクラスは、１つに限られているといって良い。
【０１２２】
同様に、多くの現代的なオブジェクト指向プログラム言語の場合、ウィンドウ（画面）の外枠に対応するようなクラスは、１種類又は多くても数種類に限られている。そこで、このJava.awt.Frameクラスのように、ウィンドウ（画面）が切り替わる（ウィンドウ（画面）の外枠が変わる）ごとに用いられるような特別なクラスに注目すれば、プログラムコンテンツから、視聴履歴として記録すべき重要な場面を抽出することが可能となる。
【０１２３】
例えば、プログラム言語としてＪＡＶＡ言語を用い、ＧＵＩ用のクラスライブラリとしてＡＷＴクラスライブラリを用いた場合のプログラムコンテンツから、Ｆｒａｍｅクラスのインスタンスを抽出して、それを重要な場面（これは、視聴履歴テンプレートの状態に等しい）とし、そのＦｒａｍｅクラスが表示される時点（Frame.show()メソッドが呼ばれる箇所）をもって、その状態に突入したものと考え、非表示になったところで（hide()メソッドが呼ばれる箇所）、その状態を脱出したものと考えることで、プログラムコンテンツから、ある視聴履歴として記録すべき状態遷移を抽出することができる。
【０１２４】
つまり、視聴履歴テンプレートがなくても、これらウィンドウ（画面）の外枠を表現するようなクラスのインスタンスを全て抜き出し、それを視聴履歴テンプレートの状態とみ
なす。そして、そのウィンドウ（画面）の外枠を表現するようなクラスのインスタンスが、画面上で実際に表示されたとき（Frame.show()ソッドが実行されたとき）を持って、その状態に突入したとみなし、非表示になった場合（hide()メソッド等が呼ばれた場合）をもって、その状態を脱出したとみなすことにより、状態遷移を抽出することができる。
【０１２５】
以下では、実際のＪＡＶＡプログラムから、視聴履歴テンプレートの状態を抜き出し、かつ、その状態への突入点及びその状態からの脱出点を計算する例を示す。
【０１２６】
まず、この視聴履歴テンプレートの自動生成を行うための装置の構成は、基本的に実施の形態１の装置構成（図１参照）と同様である。ただし、実施の形態１では、視聴履歴テンプレート１１０３が、光ディスク１１００内に予め記録されていたのに対して、本実施の形態では、視聴履歴テンプレート１１０３が、光ディスク１１００内に記録されていない。
【０１２７】
そして、光ディスク１１００が光ディスクプレーヤ１０００に挿入され、プログラムコンテンツ処理部１００１が、光ディスクアクセス部１００２を介して光ディスク１１００の内容を読み取り、視聴履歴テンプレート１１０３が光ディスク１１００内にないことを発見した場合に、プログラムコンテンツ処理部１００１は、プログラムコンテンツ１１０１から視聴履歴テンプレート１１０３を自動生成する。そして、自動生成された視聴履歴テンプレート１１０３は、ファイルシステム１０１０に視聴履歴テンプレート１０１２として格納され、視聴履歴の生成記録及び解析に利用されることになる。
【０１２８】
次に、プログラムコンテンツ１１０１の内容を示す。
【０１２９】
図８に示すプログラムコンテンツ１１０１は、非常に簡単なＪＡＶＡプログラムの一例である。これをバイトコンパイルしたものが、本実施の形態におけるプログラムコンテンツである。
【０１３０】
このＪＡＶＡプログラムは、実施の形態１における「主選択画面」（状態２００４、ＩＤ＝１）に関連する部分において、説明に不要な要素を排除し簡略化したものである。具体的には、このプログラムコンテンツは、画面数が１つであって、章選択画面のみであり、動画コンテンツの再生のための画面も説明に不要のため省略している。また、画面が１つなので、プログラムコンテンツには、画面の非表示のためのメソッドがない。
【０１３１】
図９は、このプログラムコンテンツが実際に起動され表示された画面を模式的に表現した図である。
【０１３２】
図１０は、図８に示したプログラムコンテンツ１１０１のバイトコンパイル結果を示す。ただし、実際のバイトコンパイル結果は数字の羅列であるが、説明の便宜上、人間が読めるように、図１０は、バイトコンパイル結果をニーモニックで表現している。なお、図１０のバイトコンパイル結果９００１の左側に付された番号は、説明のために付加された行番号であり、バイトコードの一部ではない。
【０１３３】
さて、プログラムコンテンツ処理部１００１は、図１０から、Java.awt.Frameクラスのインスタンスを見つけ、また、そのshow()メソッドの実行箇所を見付けて、そこから視聴履歴テンプレートを生成する。このようにして、プログラムコンテンツ処理部１００１は、バイトコード中に存在するシンボル情報を手がかりにして、視聴履歴テンプレートを生成する。
【０１３４】
一般に、インタプリタ型の処理系の場合（ＪＡＶＡの処理系はその典型例である）、そ
の言語実行処理のためには、クラス名、メソッド名等のように、人間にも理解容易なシンボル名がバイトコード中に残されていなければならない。そのため、バイトコード中から、Ｆｒａｍｅクラス及びshow()メソッドを見つけることは困難ではなく、そのクラス（正確には、そのインスタンス）の生成部分を見つけ、更にその部分からshow()メソッド等の表示化メソッドの位置を探せばよい。そして、見つかったＦｒａｍｅクラス（又はそのサブクラス）のインスタンスが、視聴履歴テンプレートの状態の１つになり、show()メソッドが実際に実行される時点が、その状態に突入した時刻となる。
【０１３５】
同様に、画面を非表示にするような、hide()又はdispose()等の表示終了の非表示化メ
ソッドが見つかった場合には、それら非表示化メソッドの実行時点が、その状態を脱出した時刻と記録される。このように、表示化メソッド又は非表示化メソッドを用いることにより、状態遷移を記録することができる。
【０１３６】
なお、状態の名称又は属性には、なるべく後の解析過程に役立つように、様々な情報をできるだけ残すようにする。例えば、状態の名称又は属性には、クラスの名称又はshow()メソッド周辺にあるシンボルの名前等を残しておく。
【０１３７】
次に、プログラムコンテンツ処理部１００１が、図１０に記載された、Java.awt.Frameクラス及びそのshow()メソッドの実行箇所を見付けて、そこから、プログラムコンテンツ処理部１００１が、視聴履歴テンプレートを生成する過程を説明する。この視聴履歴テンプレートの生成は、図１１に示めすフローチャートに従って行われる。
【０１３８】
以下、視聴履歴テンプレートの生成は、図１０のプログラムコンテンツの例に従って、説明する。
【０１３９】
まず、プログラムコンテンツ処理部１００１は、注目するクラスとして、Ｆｒａｍｅクラス（及びそのサブクラス）を設定する（ＳＴ１０００２）。
【０１４０】
この後、注目すべきクラスが出現するまで（プログラム的には、インスタンスが生成されるまで）バイトコードを１命令ずつ読み進む（ＳＴ１０００３、ＳＴ１０００４、ＳＴ１０００５の繰り返し）。
【０１４１】
図１０の例では、Java.awt.Frameクラスそのものはないが、バイトコンパイル結果９００１の２行目から、ＬｉｓｔＦｒａｍｅクラスが、Java.awt.Frameを継承したクラスであることがわかる。そこで、図１０では、このＬｉｓｔＦｒａｍｅクラスに注目する。
【０１４２】
なおここで、プログラムコンテンツ処理部１００１は、バイトコートをそのまま読み進めると、５行目で、このＬｉｓｔＦｒａｍｅクラスのインスタンスを生成している部分（命令：ｎｅｗ）に行き当たる。よって、この５行目までの命令を読めば、基本的には視聴履歴テンプレートの状態として記録してよいのだが、実際のクラスの中には、生成だけして、表示されないようなものも考えられるため、表示が確定するまで状態としての記録を先延ばしし、まだ記録はしない。
【０１４３】
更に、読み進むと、次は、先ほど生成されたＬｉｓｔＦｒａｍｅクラスのインスタンスの初期化メソッドが見つかる（図１０の７行目）。
【０１４４】
ここで、ＳＴ１０００５の判断では、ＹＥＳ側に分岐し、ＬｉｓｔＦｒａｍｅクラスは、注目クラスのサブクラスであるから、ＳＴ１０００６もＹＥＳ側に分岐する。ここで、ＳＴ１０００７を実行する。まずは、飛び元をmainメソッドの４命令目（図１０の７行）と記録して、初期化メソッドの実体であるＬｉｓｔＦｒａｍｅメソッドのバイトコードの
読込みに移る（注、ＪＡＶＡ言語では、初期化メソッド（コンストラクター）の名前とクラス名とが同一であるが、これはメソッドの名前である）。つまり、以降しばらく、図１０の１３行目以降を読んでいく事になる。
【０１４５】
図１０の１３行目以降の命令を読んでいくと、しばらくは、ＳＴ１０００３、ＳＴ１０００４、ＳＴ１０００８、ＳＴ１００１２、ＳＴ１００１０、ＳＴ１０００３のループで、命令を読み飛ばす。
【０１４６】
そして、図１０の５７行目まで読み飛ばしたところで、show()メソッドが見つかる。この結果、ＳＴ１０００８ではＹＥＳ側に分岐し、ここで初めて、視聴履歴テンプレートの状態が１つ生成され記録されることとなる（ＳＴ１０００９）
【０１４７】
まず、ＩＤは単なるユニークな数字であり、ここでは１とする。状態の名称は、クラス名にインスタンス同士を識別するためのユニークな識別子を付加したものとし、ここではクラス名にＩＤを付加したものとする。具体的には、ＬｉｓｔＦｒａｍｅ＃１が、ＳＴ１０００９で記録された状態の名称となる。
【０１４８】
図１２は、最終的に生成される視聴履歴テンプレートである。図１２の５行目には、ＳＴ１０００９で記憶された状態のＩＤ及び名称が付加されている。なお５行目には、状態のＩＤ及び名称以外にも、ＬｉｓｔＦｒａｍｅクラスのスーパークラス名のリスト（super属性）、ＬｉｓｔＦｒａｍｅクラスのインスタンスが生成された場所（loc属性、内容は、mainメソッドの０番命令）が、記載されている。
【０１４９】
その他、図１０のプログラムコンテンツから得られる情報として、６行目には、このインスタンスに保持されている他のグラフィックオブジェクトに関する情報（Label,List属性）が記載される。
【０１５０】
そして、８行目には、show()メソッドのプログラムコンテンツ中の位置が記録される。この位置情報は、後にプログラムコンテンツ処理部１００１が、このプログラムコンテンツを処理した場合、このプログラム位置の命令（ListFrame()メソッドの８６番命令）を
実行した場合に、このＬｉｓｔＦｒａｍｅ＃１の状態に入ったと記録するためのトリガーとなる。そして、最終的には、図１０に示したプログラムコンテンツを最後まで読み終わり、この結果、図１２に示したような視聴履歴テンプレート１１０００が生成される。
【０１５１】
なお、以上の説明では、プログラムコンテンツがＪＡＶＡ言語で記述された場合を例に説明したが、他言語で記述されている場合にも、同様のことが実現できる。いずれの場合も、同種の一連の画面表示を１つの状態として考え、それを実装しているようなプログラム言語上のクラス或いはメソッドに注目して、視聴履歴を生成すればよい。
【０１５２】
以上のように、本実施の形態では、プログラムコンテンツが実装されるプログラム言語上でウィンドウ（画面）を表現するクラス及び当該クラスを表示化／非表示化するメソッドに注目し、プログラムコンテンツから、ウィンドウ（画面）を表現するクラスを視聴履歴として取得すべき状態として抽出し、当該状態に突入した時刻又は当該状態を脱出した時刻を表示化／非表示化メソッドを用いて記録するような視聴履歴テンプレートを生成するようにした。これにより、プログラムコンテンツ処理部１００１の状態及びそれら状態間のリンクが記載されている視聴履歴テンプレートを、人間の労力を介さずに機械的に自動的に作成することができる。
【０１５３】
なお、以上の説明では、コンテンツメディアの形態がＤＶＤやＢｌｕ−ｒａｙディスク等の光ディスクの場合を例に説明したが、メディアの形態は、ディスクという形態或いは
レーザ光等のように光でコンテンツ内容を読み取れる形態に限定されるわけではない。メディアの形態は、ビデオカセットテープのようなテープ状のものでもよく、また、計算機ＯＳ（Operating System）のファイルシステム上のファイルのように物理的に定まった形態がないものでもよい。
【０１５４】
またコンテンツ内容の読み取り方法は、光に限られず、磁気利用等任意の方法でかまわない。例えば、コンテンツ内容の読み取り方法は、ネットワークからダウンロードしてファイルに保存した、アドビシステムズ社のフラッシュ形式やマイクロソフト社のウィンドウズ（WINDOWS（登録商標））メディアビデオ形式のコンテンツでもよい。
【０１５５】
更には、特定のＯＳでの実行形式のファイル（例えば、Ｌｉｎｕｘ（登録商標）ＯＳのＥＬＦ（Executable and Linking Format）形式やマイクロソフト社のウィンドウズＯＳ
のｅｘｅ形式等）でも同様の効果を得ることができる。これらの場合は、コンテンツの再生装置は、たとえば、一般のパーソナルコンピュータ上のコンテンツ再生アプリケーションとそのコンテンツ再生に必要なパーソナルコンピュータ自体や周辺機器を組みあわせたものとなるだろう。
【０１５６】
２００９年２月１３日出願の特願２００９−０３１９０９に含まれる明細書、図面及び要約書の開示内容は、すべて本願に援用される。
【産業上の利用可能性】
【０１５７】
本発明は、プログラムコンテンツが、映像音声コンテンツを提示するユーザインタフェースを含む市販のＢｌｕ−ｒａｙディスクに対しても、詳細な視聴履歴を生成することができ、例えば、ＤＶＤプレーヤ、Ｂｌｕ−ｒａｙディスクプレーヤ等に有用である。
【符号の説明】
【０１５８】
１０００  光ディスクプレーヤ
１２００  リモコン
１００１  プログラムコンテンツ処理部
１００２  光ディスクアクセス部
１００３  リモコン入力部
１００４  操作部
１００５  重畳部
１００６  ＧＵＩ表示部
１００７  動画・音声再生部
１００８  ネットワークＩ／Ｆ
１００６  ＧＵＩ表示部
１００７  動画・音声再生部
１００９  視聴履歴生成部
１０１０  ファイルシステム
１０１１、６００１  視聴履歴
１０１２、１１０３  視聴履歴テンプレート
１１００  光ディスク
１１０１  プログラムコンテンツ
１１０２  映像・画像・音声コンテンツ
１４００  ネットワーク
１５００  履歴収集サーバ
２００９  状態グループ
３００１、３００２、１１０００  視聴履歴テンプレート
８００１  ウィンドウ（画面）の外枠
８００２、８００３  ウィンドウ（画面）の内枠
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
映像音声コンテンツと、前記映像音声コンテンツを提示するユーザインタフェースを含むプログラムコンテンツとからなるコンテンツメディアを再生するコンテンツメディア再生装置であって、
前記コンテンツメディアを読み取るアクセス部と、
ユーザからの操作入力を受け付ける入力部と、
前記アクセス部から前記プログラムコンテンツを読み出し、前記操作入力に従い前記プログラムコンテンツを動作させて、前記映像音声コンテンツの再生制御を行なうプログラムコンテンツ処理部と、
前記映像音声コンテンツの視聴履歴として記録すべき前記プログラムコンテンツ処理部の状態及び前記状態間のリンクが記載されている視聴履歴テンプレートを記録する記録部と、
前記プログラムコンテンツ処理部が、前記視聴履歴テンプレートに記載された状態を遷移した時刻と当該状態とを前記視聴履歴として生成する生成部と、
を具備するコンテンツメディア再生装置。
【請求項２】
前記視聴履歴テンプレートは、前記プログラムコンテンツが記録されているコンテンツメディアに記録されており、前記コンテンツメディアから前記記録部にコピーされる、
請求項１に記載のコンテンツメディア再生装置。
【請求項３】
前記視聴履歴テンプレートは、前記コンテンツメディア再生装置がアクセス可能なネットワーク上の記録装置に記憶されており、
前記ネットワーク上の記録装置から前記記録部にダウンロードされる、
請求項１に記載のコンテンツメディア再生装置。
【請求項４】
前記プログラムコンテンツは、オブジェクト指向のプログラム言語で記述されており、
前記視聴履歴テンプレートは、前記映像音声コンテンツ及び前記プログラムコンテンツが記述されるプログラム言語の特定のクラス、メソッド、シンボル名等から生成される、
請求項１に記載のコンテンツメディア再生装置。
【請求項５】
映像音声コンテンツと、
前記映像音声コンテンツを提示するユーザインタフェースを含むプログラムコンテンツと、
前記映像音声コンテンを再生するコンテンツメディア再生装置の状態及びそれら状態間の遷移のうち、前記映像音声コンテンツの視聴履歴として記録すべき状態及びそれら状態間の遷移が記載されている視聴履歴テンプレートと、
を具備するコンテンツメディア。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2010092763.tif 000016
【図２】
2010092763.tif 000017
【図３Ａ】
2010092763.tif 000018
【図３Ｂ】
2010092763.tif 000019
【図４】
2010092763.tif 000020
【図５】
2010092763.tif 000021
【図６】
2010092763.tif 000022
【図７】
2010092763.tif 000023
【図８】
2010092763.tif 000024
【図９】
2010092763.tif 000025
【図１０】
2010092763.tif 000026
【図１１】
2010092763.tif 000027
【図１２】
2010092763.tif 000028
【国際調査報告】
2010092763.tif 000029
2010092763.tif 000030