JPH11184860A - 情報処理装置および情報処理方法、並びに記録媒体 - Google Patents

情報処理装置および情報処理方法、並びに記録媒体

Info

Publication number
JPH11184860A
JPH11184860A JP34902897A JP34902897A JPH11184860A JP H11184860 A JPH11184860 A JP H11184860A JP 34902897 A JP34902897 A JP 34902897A JP 34902897 A JP34902897 A JP 34902897A JP H11184860 A JPH11184860 A JP H11184860A
Authority
JP
Japan
Prior art keywords
scene
behavior
scheduling
constructed
construction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP34902897A
Other languages
English (en)
Inventor
Toru Mineyama
徹 峯山
Shinji Nanba
慎二 難波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP34902897A priority Critical patent/JPH11184860A/ja
Publication of JPH11184860A publication Critical patent/JPH11184860A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 振舞がタイムドリブンで制御されるマルチメ
ディアコンテンツの構成や振舞を容易に変更することが
できるようにする。 【解決手段】 マルチメディアコンテンツであるEPG
は、階層構造にされたシーンで構成されている。即ち、
EPGは、シーンScene0で構成され、シーンScene0は、
その子シーンとして、シーンScene01,Scene02,Scene0
3を有している。また、シーンScene02は、その子シーン
として、シーンScene021,Scene022,Scene023,Scene0
24を有しており、シーンScene03は、その子シーンとし
て、シーンScene031,Scene032を有している。なお、子
シーンを有するシーンは、その子シーンをタイムスケジ
ューリングするオブジェクトも有している。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、情報処理装置およ
び情報処理方法、並びに記録媒体に関し、特に、例え
ば、オブジェクトで構成されるマルチメディアコンテン
ツやアプリケーションプログラムなどの構築物であっ
て、その振舞がタイムドリブンで制御されるものの構成
や振舞などを、容易に変更することができるようにする
情報処理装置および情報処理方法、並びに記録媒体に関
する。
【0002】
【従来の技術】例えば、テレビジョン放送番組の概要を
紹介するEPG(Electric Program Guide)において、
各番組の紹介を、その番組名やタイトルなどのテキスト
の表示だけでなく、動画や音声などをも用いて、さらに
インタラクティブに行うことができれば便利である。即
ち、EPGを、マルチメディアコンテンツで構成すれ
ば、番組の選択にあたって、いわば、ユーザフレンドリ
なユーザインターフェイスを提供することができる。
【0003】
【発明が解決しようとする課題】ところで、マルチメデ
ィアコンテンツを構成するテキストや、動画、静止画、
音声、ボタンその他の、いわば部品を、例えば、オブジ
ェクト指向言語によるオブジェクトによって実現する場
合においては、一般に、部品としての各オブジェクト
は、自身の振舞を決めるデータと、そのデータを操作
(処理)するメソッドとの両方を持つように構成され
る。
【0004】従って、部品の振舞を拡張したり、変更し
たりする場合においては、その部品に対応するオブジェ
クトを作り直す必要があり、面倒である。
【0005】さらに、ある部品と、他の部品との振舞が
同一のものであっても、両方の部品に対応するオブジェ
クトそれぞれに、その振舞に対応するメソッドを記述す
る必要があり、冗長な作業が必要となる。
【0006】また、部品に、ある時刻において所定の振
舞をさせるには、一般に、その部品をタイムスケジュー
リングするオブジェクトを、その部品に対応するオブジ
ェクトに実装する必要があるが、各部品に、そのタイム
スケジューリングを行うためのオブジェクトを実装する
のも面倒である。
【0007】一方、マルチメディアコンテンツのオーサ
リングツールとしては、例えば、マクロメディア社の
「Macromedia Director」がある。この「Macromedia Di
rector」では、ムービーと呼ばれるマルチメディアコン
テンツが、キャストと呼ばれる部品についての、タイム
ドリブンやイベントドリブンでの振舞を、スコアと呼ば
れるシートに記述することで作成される。なお、「Macr
omedia Director」については、例えば、「NIKKE
I MULTIMEDIA」、95年11月〜96年1
月などに紹介されている。
【0008】ところで、「Macromedia Director」でオ
ーサリングされたマルチメディアコンテンツであるムー
ビーにおいては、キャストの振舞が、スコアの記述によ
って決定され、キャストと、その振舞とが静的に結合さ
れる。従って、例えば、EPGの、ある範囲に存在する
複数のキャストを変更する場合や、また、キャスト自体
は変更しなくても、それらの振舞を変更する場合などに
は、その複数のキャストや、対応するスコアをすべて記
述し直さなければならず、面倒であった。
【0009】本発明は、このような状況に鑑みてなされ
たものであり、例えば、マルチメディアコンテンツやア
プリケーションプログラムなどの構成や振舞を、容易に
変更することができるようにするものである。
【0010】
【課題を解決するための手段】請求項1に記載の情報処
理装置は、シーンが、階層構造に構成され、そのシーン
の下位階層のシーンである子シーンをタイムスケジュー
リングするオブジェクトである子シーンスケジューリン
グオブジェクトを有することを特徴とする。
【0011】請求項5に記載の情報処理方法は、階層構
造に構成されているシーンが有する子シーンスケジュー
リングオブジェクトに、子シーンをタイムスケジューリ
ングさせることを特徴とする。
【0012】請求項6に記載の記録媒体は、階層構造に
構成されているシーンが有する子シーンスケジューリン
グオブジェクトに、子シーンをタイムスケジューリング
させる処理を、コンピュータに行わせるためのコンピュ
ータプログラムが記録されていることを特徴とする。
【0013】請求項1に記載の情報処理装置において
は、シーンが、階層構造に構成され、そのシーンの下位
階層のシーンである子シーンをタイムスケジューリング
するオブジェクトである子シーンスケジューリングオブ
ジェクトを有している。
【0014】請求項5に記載の情報処理方法において
は、階層構造に構成されているシーンが有する子シーン
スケジューリングオブジェクトに、子シーンをタイムス
ケジューリングさせるようになされている。
【0015】請求項6に記載の記録媒体には、階層構造
に構成されているシーンが有する子シーンスケジューリ
ングオブジェクトに、子シーンをタイムスケジューリン
グさせる処理を、コンピュータに行わせるためのコンピ
ュータプログラムが記録されている。
【0016】
【発明の実施の形態】図1は、本発明を適用した放送シ
ステム(システムとは、複数の装置が論理的に集合した
物をいい、各構成の装置が同一筐体中にあるか否かは問
わない)の一実施の形態の構成例を示している。
【0017】放送局1においては、テレビジョン放送信
号としての電波が送信され、この電波は、衛星(通信衛
星または放送衛星)2を介して、アンテナ3で受信され
る。アンテナ3で受信された受信信号は、STB(Set
Top Box)4に供給され、所定のチャンネルのテレビジ
ョン放送信号が取り出される。このテレビジョン放送信
号は、STB4からCRT5に供給されて表示される。
【0018】なお、STB4では、放送局1以外の図示
せぬ放送局からのテレビジョン放送信号も受信すること
ができるようになされている。
【0019】ところで、STB4では、視聴者が、各チ
ャンネルにおいて放送されている番組の概要を容易に認
識することができるように、EPG(Electric Program
Guide)を、CRT5に表示させることができるように
なされている。
【0020】即ち、ここでは、EPGを、それを構成す
る各種の部品に分けて分散させておき、STB4におい
て、それらの部品を集めてEPGを構成することができ
るようになされている。
【0021】具体的には、図1の実施の形態では、EP
Gを構成する部品が、例えば、インターネット6上に分
散している。ここでは、インターネット6に、放送局
1,STB4、サーバ7が接続されており、それぞれ
に、EPGを構成する部品が記憶されている。そして、
STB4では、自身が記憶している部品の他、放送局1
やサーバ7に記憶されている部品がインターネット6を
介して集められ、EPGが構成されるようになされてい
る。
【0022】次に、図2は、図1のSTB4の構成例を
示している。
【0023】通信I/F(Interface)11は、例え
ば、モデムなどでなり、インターネット6との間の通信
制御を行うようになされている。受信処理部12は、例
えば、ダウンコンバータや、チューナ、復調回路、さら
にはデスクランブラなどで構成され、アンテナ3からの
受信信号から、所定のテレビジョン放送信号を取り出
し、必要に応じてデスクランブルして、表示制御部16
に供給するようになされている。
【0024】ROM(Read Only memory)13は、例え
ば、IPL(Initial Program Loading)のプログラム
などを記憶している。CPU(Central Processing Uni
t)14は、ハードディスク17に記憶されているOS
(Operating System)の制御の下、同じくハードディス
ク17に記憶されている各種のアプリケーションプログ
ラムを実行することで、上述したような部品を集めてリ
ンクさせ、EPGを構成する処理(この処理を、以下、
適宜、構築処理といい、また、構築処理を行うためのア
プリケーションプログラムを、以下、適宜、構築プログ
ラムという)や、そのEPGの振舞を制御する処理(こ
の処理を、以下、適宜、振舞制御処理といい、また、振
舞制御処理を行うためのアプリケーションプログラム
を、以下、適宜、振舞制御プログラムという)などを行
うようになされている。RAM(Random Access memor
y)15は、CPU14が実行するプログラムや、その
動作上必要なデータなどを一時記憶するようになされて
いる。表示制御部16は、そこに供給されるデータを、
CRT5に表示させるための表示制御を行うようになさ
れている。
【0025】ハードディスク17は、OSやアプリケー
ションプログラム、さらには、EPGを構成する部品
を、必要に応じて記憶している。なお、EPGを構成す
る部品は、例えば、通信I/F11に、インターネット
6を介して放送局1やサーバ7と通信を行わせることに
より入手することができる。また、例えば、放送局1
に、EPGを構成する部品を放送させ、これを受信処理
部12において受信することなどによっても入手するこ
とができる。なお、ハードディスク17は、その他、C
PU14が処理を行うのに必要なデータや、処理を行っ
た結果得られるデータなども、必要に応じて記憶するよ
うになされている。
【0026】CD−ROM(Compact Disc ROM)18に
は、例えば、EPGを構成する部品などが記憶されてい
る。操作部19は、例えば、キーボードや、マウス、そ
の他の各種のボタンなどで構成され、データやコマンド
を入力するときに操作される。
【0027】なお、以上の各ブロックは、バスを介して
相互に接続されている。
【0028】以上のように構成されるSTB4では、例
えば、操作部19が、所定のチャンネルを受信するよう
に操作されると、受信処理部12において、アンテナ3
からの受信信号から、その操作に対応したチャンネルの
テレビジョン放送信号が抽出され、表示制御部16を介
してCRT5に供給されて表示される。
【0029】また、例えば、操作部19が、EPGを表
示するように操作されると、CPU14では、ハードデ
ィスク17に記憶された構築プログラムが実行されるこ
とで、構築処理が行われ、これにより、EPGが構成さ
れる。即ち、EPGを構成する部品が、ハードディスク
17やCD−ROM18から読み出されたり、通信I/
F11において、インターネット6を介して、放送局1
やサーバ7と通信が行われることにより取得される。そ
して、CPU14は、その取得した部品どうしをリンク
させ、EPGを構成する。このEPGは、表示制御部1
6を介してCRT5に供給されて表示される。さらに、
CPU14では、ハードディスク17に記憶された振舞
制御プログラムが実行されることで、振舞制御処理が行
われ、EPGの振舞が制御される。
【0030】なお、ここでは、構築プログラムおよび振
舞制御プログラム、さらには、マルチメディアコンテン
ツとしてのEPGは、オブジェクト指向言語の1つであ
る、例えば、Java言語で記述されている(Javaは商
標)。また、それに対応して、以下に示すプログラムリ
ストは、Java言語で記述してある。なお、Java言語の詳
細については、例えば、「Java APIプログラミングガイ
ド」、青柳龍也、工学図書や、「Javaパワープログラミ
ング」、Paul Tyma/Gabriel Torok/Troy Dowing、Soft
Bank、「The Java Language Specification」、Java So
ft、「Java Core Reflecion, API and Specificatio
n」、Java Softなどに開示されているので、これらを参
照されたい。
【0031】次に、図3は、構築処理によって構成され
るEPGの例を示している。この実施の形態では、EP
Gは、例えば、ニュース番組についてのものとなってお
り、8つの部品P1乃至P8から構成されている。
【0032】部品P1は、EPGの背景(バックグラウ
ンド)で、他の部品P2乃至P5が張り付けられてい
る。部品P2乃至P4は、ニュースのジャンルを選択す
るためのボタンで、ここでは、部品P2乃至P4を操作
することにより、部品P6乃至P8が変化するようにな
されている。即ち、部品P2乃至P4が操作された場合
(例えば、マウスでクリックされた場合)、部品P6乃
至P8は、例えば、政治、国際、社会それぞれについて
のニュースに関係する内容に変化するようになされてい
る。部品P5は、部品P6乃至P8が張り付けられる背
景を構成している。部品P6乃至P8は、テキストデー
タ、動画データ、静止画データで、それぞれには、ボタ
ンとしての部品P2乃至P4の操作に対応したジャンル
内容がテキスト、動画、静止画で表示されるようになさ
れている。
【0033】なお、例えば、部品P6乃至P8に、ある
ジャンルのニュースについての情報が表示されている場
合において、そのうちのいずれかがクリックされると、
そのジャンルのニュース番組が、図3のEPGに代えて
表示されるようになされている。
【0034】いま、EPGを構成する部品P1乃至P8
は、オブジェクト(被構築オブジェクト)obj1乃至
obj8でそれぞれ構成され、ここでは、例えば、図4
に示すように、ネットワーク上に分散しているとする。
即ち、ここでは、被構築オブジェクトobj1およびo
bj2はサーバSV1上に、被構築オブジェクトobj
3乃至obj5はサーバSV2上に、被構築オブジェク
トobj6はサーバSV3上に、被構築オブジェクトo
bj7およびobj8はユーザ端末UT上に、それぞれ
記憶されている。また、被構築オブジェクトobj1乃
至obj8は、互いに、静的にリンクされていない状態
(いわば独立の状態)で記憶されている。
【0035】なお、図4におけるサーバSV1乃至SV
3は、図1におけるインターネット6上のサーバ(例え
ば、サーバ7など)に相当し、図4におけるユーザ端末
UTは、図1におけるSTB4に相当する。
【0036】この場合において、ユーザ端末UT上にお
いて、構築プログラムが実行されることにより、ネット
ワーク上に分散している被構築オブジェクトobj1乃
至obj8が取得されて、リンク(参照関係)が形成さ
れ、これにより、構築物としてのEPGが構成(構築)
される。
【0037】このため、構築プログラムでは、被構築オ
ブジェクトが、自身のフィールドを設定することによ
り、その初期化を行うフィールド設定メソッドを有する
場合に、そのフィールド設定メソッドをコールして、被
構築オブジェクト間の参照関係を構築する構築メソッド
を有する構築クラス、被構築オブジェクトを取得する取
得メソッドを有する、構築オブジェクトの所有が可能な
取得クラス、および取得オブジェクトが取得した被構築
オブジェクトを登録するメソッドを有する登録クラスが
定義されている。
【0038】即ち、取得クラスは、ネットワーク上に分
散する被構築オブジェクトを取得するための取得メソッ
ドgetObject()を有し、その取得メソッドgetObject()を
実行することにより、所定の被構築オブジェクトを取得
して、戻り値として返すようになされている。さらに、
取得クラスにおいては、そのインスタンスである取得オ
ブジェクトが、取得メソッドgetObject()を実行するこ
とにより取得した被構築オブジェクトの初期化を行うた
めの、構築クラスのインスタンスである構築オブジェク
トを所有することができるように、定義がなされてい
る。即ち、取得クラスでは、構築クラスの型を、例え
ば、Builderと表すと、Builder型のフィールドが定義さ
れている。
【0039】構築クラスは、被構築オブジェクト間の参
照関係の構築、即ち、被構築オブジェクトの初期化を行
うための構築メソッドbuild(Object resolved)を有して
いる。ここで、構築メソッドbuild(Object resolved)の
引数であるresolvedは、初期化対象の被構築オブジェク
トを表している。また、その型であるObjectは、Javaに
おいて、最上位階層のクラスとして定義されているクラ
スである。
【0040】構築クラスにおいては、そのインスタンス
である構築オブジェクトが、構築メソッドbuild(Object
resolved)を実行するのに必要な被構築オブジェクトを
取得するための取得オブジェクトを所有することができ
るように、定義がなされている。即ち、例えば、ある被
構築オブジェクトresolvedAを取得した後、その被構築
オブジェクトresolvedAから、他の被構築オブジェクトr
esolvedBに対して参照関係がある場合には、被構築オブ
ジェクトresolvedAの初期化には、被構築オブジェクトr
esolvedBの参照が必要であり、従って、被構築オブジェ
クトresolvedBを取得する必要がある。このため、構築
クラスでは、取得クラスの型を、例えば、Getterと表す
と、Getter型のフィールドが定義されている。
【0041】従って、取得クラスと構築クラスとは、図
5に示すような関係を有する。なお、図5においては、
縦方向に3分割された長方形全体がクラスを表してい
る。また、図6(A)に示すように、クラスを表す長方
形の最も上の段には、クラス名が、上から2番目の段に
は、そのクラスで定義されているメソッド名が、最も下
の段には、そのクラスで定義されているフィールド名
が、それぞれ配置されている。
【0042】上述したように、取得クラスGetterは、取
得メソッドgetObject()と、Builder型のフィールドbuil
ders[]を有している。ここで、Builder型のフィールド
が配列になっているが、これについては後述する。
【0043】また、構築クラスBuilderは、構築メソッ
ドbuild(Object resolved)と、Getter型のフィールドge
tterを有している。
【0044】なお、図5における矢印は、その矢印の始
端のクラスのインスタンス(ここでは、取得オブジェク
トまたは構築オブジェクト)が、その終端のクラスのイ
ンスタンス(ここでは、構築オブジェクトまたは取得オ
ブジェクト)を、フィールドとして所有可能なことを意
味している。また、図6(B)に示すように、その終端
に●印がある矢印は、その始端のクラスのインスタンス
が、その終端のクラスのインスタンスを、複数所有可能
であることを表し、●印のない矢印は、その始端のクラ
スのインスタンスが、その終端のクラスのインスタンス
を、1つだけ所有可能であることを表している。従っ
て、ここでは、取得オブジェクトは、複数の構築オブジ
ェクトを所有可能であるが、構築オブジェクトは、1の
取得オブジェクトだけを所有可能なようになされてい
る。
【0045】次に、取得クラスにおいて定義されている
取得メソッドgetObject()は、ここでは、いわゆるポリ
モーフィック(polymorphic:多様的)なメソッド(例
えば、あるスーパクラスにおいて定義されているメソッ
ドであって、その2以上のサブクラスそれぞれにおいて
実装が与えられており、いずれの実装を有するメソッド
としても利用可能なもの)とされており、これにより、
そのサブクラスにおいて、種々の実装を与えて、所望の
実装が与えられたものを利用することができるようにな
されている。
【0046】即ち、ここでは、取得メソッドgetObjec
t()は、取得クラスではなく、そのサブクラスにおいて
実装が与えられている。具体的には、例えば、図7に示
すように、取得クラスのサブクラスとして、ネットワー
ク取得クラスNetGetter、ファイル取得クラスFileGette
r、オブジェクト保持取得クラスSaveGetter、スタブ取
得クラスStubGetter、および生成取得クラスConstructG
etterの5つが定義されている。
【0047】ネットワーク取得クラスNetGetterでは、
リモートのホストコンピュータとしての、例えば、サー
バSV1乃至SV3においてシリアライズされて(バイ
ト列にされて)ファイルに書き込まれている被構築オブ
ジェクトをロードし、そのデシリアライズ(シリアライ
ズによってバイト列にされている被構築オブジェクトを
使用可能な状態にすること)を行う取得メソッドgetObj
ect()が実装されている。また、ネットワーク取得クラ
スNetGetterには、シリアライズされてファイルに書き
込まれている被構築オブジェクトを、そこに実装されて
いる取得メソッドgetObject()に取得させるために必要
な、その被構築オブジェクトのURL(Uniform Resour
ce Locator)が格納されるフィールド(URL型のフィー
ルド)urlも定義されている。
【0048】ファイル取得クラスFileGetterでは、ユー
ザ端末UTにおいてシリアライズされてファイル(ロー
カルファイル)に書き込まれている被構築オブジェクト
をロードし、そのデシリアライズを行う取得メソッドge
tObject()が実装されている。また、ファイル取得クラ
スFileGetterには、シリアライズされてファイルに書き
込まれている被構築オブジェクトを、そこに実装されて
いる取得メソッドgetObject()に取得させるために必要
な、そのファイルのファイル名を与えるフィールド(St
ring型のフィールド)fileNameも定義されている。
【0049】オブジェクト保持取得クラスSaveGetter
は、被構築オブジェクトを所有しており、そこでは、そ
の被構築オブジェクトを取得する取得メソッドgetObjec
t()が実装されている。オブジェクト保持取得クラスSav
eGetterには、自身で所有している被構築オブジェクト
を、そこに実装されている取得メソッドGetObject()に
取得させるために必要な、その被構築オブジェクトを識
別するための値を与えるフィールド(Object型のフィー
ルド)valueも定義されている。
【0050】スタブ取得クラスStubGetterでは、リモー
トのホストコンピュータとしての、例えば、サーバSV
1乃至SV3において、スタブとして提供される被構築
オブジェクトを取得する取得メソッドgetObject()が実
装されている。また、スタブ取得クラスStubGetterに
は、被構築オブジェクトを、スタブとして提供するサー
バから、その被構築オブジェクトを、そこに実装されて
いる取得メソッドgetObject()に取得させるために必要
な、そのサーバのIP(Internet Protocol)アドレス
が格納されるフィールド(IPAddress server long型の
フィールド)objectIDも定義されている。
【0051】生成取得クラスConstructGetterでは、所
定のクラスのインスタンスである被構築オブジェクト
を、そのコンストラクタをコールすることにより生成さ
せて取得する取得メソッドgetObject()が実装されてい
る。また、生成取得クラスConstructGetterには、コン
ストラクタをコールすることにより生成される被構築オ
ブジェクトを、そこに実装されている取得メソッドgetO
bject()に取得させるために必要な、その被構築オブジ
ェクトのクラス名が格納されるフィールド(String型の
フィールド)classNameも定義されている。
【0052】以上のように、取得メソッドgetObject()
をポリモーフィックなメソッドとし、取得クラスのサブ
クラスにおいて、取得メソッドgetObject()の実装を与
えるようにすることで、各種の被構築オブジェクトを、
それぞれの取得方法に対応した、スーパクラスとしての
取得クラスを用意しなくても、容易に取得することが可
能となる。
【0053】なお、取得クラスのサブクラスは、上述し
たものに限定されるものではなく、必要な取得メソッド
getObject()を実装した種々のサブクラスを定義するこ
とが可能である。
【0054】以上のような取得クラスのインスタンスで
ある取得オブジェクトでは、それが有する取得メソッド
getObject()によって、対応する被構築オブジェクトが
取得される。このようにして取得された被構築オブジェ
クトは、そこに定義されているフィールドに、他の被構
築オブジェクトの参照を設定することにより、その初期
化を行う必要がある場合がある。即ち、例えば、ある取
得オブジェクトによって、次のように定義されるクラス
ResolvedCのインスタンスとしての被構築オブジェクトr
esolvedCが取得されたとする。
【0055】 class ResolvedC extends Object{ private int fieldA; private int fieldB; public void setFieldA(int f){ fieldA=f; } public void setFieldB(int f){ fieldB=f; } ・・・ } ・・・(1)
【0056】ここで、クラスResolvedCは、クラスObjec
tをスーパクラスとするサブクラスとされている。ま
た、クラスResolvedCには、フィールドfieldA,fieldB
が定義されており、さらに、それぞれのフィールドを設
定することにより、その初期化を行うためのフィールド
設定メソッドsetFieldA(int f),setFieldB(int f)も定
義されている。なお、本実施の形態では、フィールド設
定メソッドは、公開されているものとする。
【0057】この場合、被構築オブジェクトresolvedC
を取得した取得オブジェクトは、その被構築オブジェク
トresolvedCを初期化するための構築オブジェクトを所
有しており、即ち、フィールド設定メソッドsetFieldA
(int f),setFieldB(int f)をコールする構築メソッド
を有する構築オブジェクトを所有しており、被構築オブ
ジェクトresolvedCの取得後は、その構築オブジェクト
が有する構築メソッドがコールされる。これにより、そ
の構築メソッドによって、フィールド設定メソッドsetF
ieldA(int f),setFieldB(int f)がコールされ、その結
果、フィールドfieldA,fieldBが設定される。
【0058】なお、プログラムリスト(1)に示したク
ラスResolvedCの被構築オブジェクトresolvedCは、設定
が必要なフィールドとして、2つのフィールドfieldA,
fieldBを有するが、このように、被構築オブジェクト
が、複数の初期化すべきフィールドを有する場合には、
取得オブジェクトに所有させる構築オブジェクトを、配
列で宣言しておくと、その初期化を、容易に行うことが
可能となる。
【0059】即ち、被構築オブジェクトresolvedCを取
得する取得オブジェクトにおいて、フィールド設定メソ
ッドsetFieldA(int f),setFieldB(int f)をコールする
構築メソッドを有する構築オブジェクトを、Builder型
の配列builders[]に所有させる。この場合、その取得オ
ブジェクトに、例えば、次のようなプログラムを記述し
ておくことで、取得した被構築オブジェクトの初期化を
行うことができる。
【0060】 for(int j=0; j<builders.length; j++) builders[j].build(resolved); ・・・(2) ここで、builders.lengthは、配列であるフィールドbui
lders[]の長さ(要素数)を表す。また、構築メソッドb
uild(resolved)の引数resolvedは、上述したように、初
期化対象の被構築オブジェクトの参照、即ち、ここで
は、被構築オブジェクトresolvedCの参照を表す。
【0061】なお、被構築オブジェクトの初期化が必要
ない場合(フィールドを有していない場合や、有してい
ても、それが初期化すべきフィールドではない場合)に
は、その被構築オブジェクトを取得する取得オブジェク
トには、初期化のための構築オブジェクトを所有させる
必要はない。
【0062】また、例えば、被構築オブジェクトを取得
する取得オブジェクトに、その被構築オブジェクトが有
するフィールドの数と同一の数の構築オブジェクトを所
有させる必要は、必ずしもない。即ち、例えば、被構築
オブジェクトが有するフィールドのうちの1以上が、そ
の取得時に、何らかの理由により、既に初期化されてい
る場合には、その被構築オブジェクトを取得する取得オ
ブジェクトには、初期化されていないフィールドを初期
化するための構築オブジェクトだけを所有させれば充分
である。
【0063】さらに、被構築オブジェクトが、複数の初
期化すべきフィールドを有する場合には、上述したよう
に、取得オブジェクトに所有させる構築オブジェクト
を、配列で宣言しておく他、例えば、いわゆるコンテナ
クラスを、構築クラスのサブクラスとしておき、そのコ
ンテナクラスを利用することによっても、複数のフィー
ルドの初期化を、容易に行うことが可能となる。
【0064】次に、例えば、ある取得オブジェクトによ
って、次のように定義されるクラスResolvedAのインス
タンスとしての被構築オブジェクトresolvedAが取得さ
れたとする。
【0065】 class ResolvedA extends Object{ private ResolvedB fieldA; private Object painters[]; public void setFieldA(ResolvedB f){ fieldA=f; } public void addPainter(Object p,int index){ painters[index]=p; } ・・・ } ・・・(3)
【0066】ここで、クラスResolvedAは、クラスObjec
tをスーパクラスとするサブクラスとされている。ま
た、クラスResolvedAには、フィールドとして、Resolve
dB型のfieldAと、Object型の配列painters[]が定義され
ており、さらに、それぞれのフィールドを設定すること
により、その初期化を行うためのフィールド設定メソッ
ドsetFieldA(ResolvedB f),addPainter(Object p,int
index)も定義されている。
【0067】なお、ResolvedBは、ある被構築オブジェ
クトresolvedBのクラスとして定義されているものとす
る。
【0068】プログラムリスト(3)に示す被構築オブ
ジェクトresolvedAを取得した取得オブジェクトは、そ
の初期化をするための構築オブジェクト、即ち、まず、
フィールドfieldAを設定するためのフィールド設定メソ
ッドsetFieldA(ResolvedB f)を
コールする構築メソッドを有する構築オブジェクトを有
しており、その構築オブジェクトの構築メソッドbui
ld(resolvedA)がコールされることによ
り、フィールドfieldAが初期化される。
【0069】しかしながら、この場合、フィールドfiel
dAを初期化するには、クラスResolvedBのインスタンス
である被構築オブジェクトresolvedBの参照が必要であ
る。
【0070】そこで、フィールド設定メソッドsetField
A(ResolvedB f)をコールする構築メソッドを有する構築
オブジェクトは、被構築オブジェクトresolvedBを取得
する取得メソッドgetObject()を有する、取得クラスの
取得オブジェクトを所有している。
【0071】そして、フィールド設定メソッドsetField
A(ResolvedB f)をコールする構築メソッドを有する構築
オブジェクトにおいて、それが所有する取得オブジェク
トの取得メソッドgetObject()がコールされることによ
り、被構築オブジェクトresolvedBが取得され、これに
より、その被構築オブジェクトresolvedBの参照を用
い、フィールド設定メソッドsetFieldA(ResolvedB f)に
よって、フィールドfieldAが初期化される。
【0072】なお、被構築オブジェクトresolvedBの初
期化が必要な場合は、被構築オブジェクトresolvedBを
取得した取得オブジェクトが、その初期化のための構築
オブジェクトを所有しており、その構築オブジェクトに
よって、被構築オブジェクトresolvedBの初期化が行わ
れる。即ち、ある被構築オブジェクトの取得後、その初
期化に必要な被構築オブジェクトがある場合には、その
被構築オブジェクトの取得が行われ、以下、同様に、初
期化に必要な被構築オブジェクトの取得が行われる。そ
して、初期化に必要な被構築オブジェクトすべてが取得
されると、各被構築オブジェクトの初期化が行われてい
く(これについては、さらに後述する)。
【0073】ところで、構築クラスにおいて定義されて
いる構築メソッドbuild(Object resolved)を、その構築
クラスに実装させると、初期化の処理が異なる被構築オ
ブジェクトごとに、構築クラスを用意する必要が生じ
る。そこで、上述の取得クラスの取得メソッドgetObjec
t()における場合と同様に、構築クラスにおいて定義さ
れている構築メソッドbuild(Object resolved)も、ポリ
モーフィックなメソッドとし、そのサブクラスにおい
て、種々の実装を与えて、所望の実装が与えられたもの
を利用するようにすることができる。ここでは、例え
ば、図8に示すように、構築クラスBuilderのサブクラ
スとして、セットメソッド構築クラスSetBuilderおよび
アドメソッド構築クラスAddBuilderの2つが定義されて
いる。
【0074】即ち、例えば、プログラムリスト(3)に
示したフィールド設定メソッドsetFieldA(ResolvedB f)
によって、フィールドfieldAを初期化するためには、例
えば、次のようなクラス(セットメソッド構築クラス)
SetBuilderを、構築クラスBuilderのサブクラスとして
定義しておく。
【0075】 class SetBuilder extends Builder{ String fieldName; String methodName; Getter getter; void build(Object resolved){ Method method=getSetMethod(fieldName,methodName,resolved ); Object objs[]={getter.getObject()}; method.invoke(resolved,objs); } } ・・・(4)
【0076】ここで、メソッドgetSetMethod(fieldNam
e,methodName,resolved)は、fieldNameで表されるフィ
ールドの初期化を行う、methodNameで表されるフィール
ド設定メソッドを有するオブジェクトを生成するもの
で、プログラムリスト(4)では、そのオブジェクト
が、Method型のフィールドmethodに設定されるようにな
されている。なお、メソッドgetSetMethod(fieldName,m
ethodName,resolved)では、fieldNameおよびresolvedか
ら、methodNameで表されるフィールド設定メソッドを有
するオブジェクトの型を認識し、それに対応するクラス
を探すことで、methodNameで表されるフィールド設定メ
ソッドを見つけ出すようになされている。
【0077】また、プログラムリスト(4)では、Obje
ct型の配列(フィールド)objs[]に、取得オブジェクト
getterが有する取得メソッドgetObject()が取得する被
構築オブジェクトが1つだけ、配列の要素として設定さ
れるようになされている。
【0078】さらに、クラスMethodでは、resolvedで表
される被構築オブジェクトを、objsで表される被構築オ
ブジェクトで初期化するメソッドinvoke(resolved,obj
s)が定義されており、プログラムリスト(4)では、オ
ブジェクトmethodにおけるメソッドinvoke(resolved,ob
js)をコールすることで、被構築オブジェクトresolved
を、被構築オブジェクトobjsの参照で初期化する、オブ
ジェクトmethodが有するフィールド設定メソッド(ここ
では、methodNameで表されるメソッド)がコールされる
ようになされている。なお、メソッドinvoke(resolved,
objs)の第2引数(2番目の引数)は、配列とすること
が規定されているため、objsは配列にされている。
【0079】プログラムリスト(4)に示したように、
サブクラスSetBuilderにおいて、取得メソッドbuild(Ob
ject resolved)を、リフレクション(クラスなどの定義
構造を言語体系に反映させること)を使用して実装する
ことで、即ち、初期化すべきフィールドのフィールド名
fieldNameと、その初期化を行うためのフィールド設定
メソッドのメソッド名methodNameを与えることによっ
て、オブジェクトmethodが有するフィールド設定
メソッド(これは、取得メソッドgetObjec
t()によって取得される被構築オブジェクトのフィー
ルド設定メソッドに等しい)がコールされるようにする
ことで、種々の被構築オブジェクトの初期化が可能とな
る。なお、プログラムリスト(4)におけるfieldName
およびmethodNameは、例えば、コンストラクタによって
与えるようにすることができる。
【0080】また、例えば、プログラムリスト(3)に
示したフィールド設定メソッドaddPainter(Object p,in
t index)によって、配列型のフィールドpainters[]を初
期化するためには、例えば、次のようなクラス(アドメ
ソッド構築クラス)AddBuilderを、構築クラスBuilder
のサブクラスとして定義しておく。
【0081】 class AddBuilder extends Builder{ String fieldName; String methodName; int index; Getter getter; void build(Object resolved){ Method mehtod=getAddMethod(fieldName,methodName,resolove d); Object objs[]={getter.getObject(),new Integer(index)}; method.invoke(resolved,objs); } } ・・・(5)
【0082】ここで、メソッドgetAddMethod(fieldNam
e,methodName,resolved)は、プログラムリスト(4)に
おけるメソッドgetSetMethod(fieldName,methodName,re
solved)と同様に、fieldNameで表されるフィールドの初
期化を行う、methodNameで表されるフィールド設定メソ
ッドを有するオブジェクトを生成するものであるが、fi
eldNameおよびresolvedから、methodNameで表されるフ
ィールド設定メソッドを有するオブジェクトの型が、何
らかのクラスの配列であることを認識し、さらに、その
配列のクラスを認識してから、methodNameで表されるフ
ィールド設定メソッドを見つけ出す点が、メソッドgetS
etMethod(fieldName,methodName,resolved)と異なる。
なお、ここでは、methodNameで表されるフィールド設定
メソッドは、例えば、プログラムリスト(3)に示した
addPainter(Object p,int index)のように、第2引数に
int型のフィールドをとるものと、あらかじめ決められ
ており、これにより、上述の配列のクラスを認識するこ
とができるようになされている(ここでは、第2引数に
int型のフィールドをとるものと認識される)。
【0083】また、プログラムリスト(5)では、Obje
ct型の配列(フィールド)objs[]に、取得オブジェクト
getterが有する取得メソッドgetObject()が取得する被
構築オブジェクトと、コンストラクタInteger(index)に
よって生成されるインスタンス(indexの値に対応す
る、Integer型のインスタンス)との2つが、配列の要
素として設定されるようになされている。
【0084】そして、プログラムリスト(5)でも、プ
ログラムリスト(4)における場合と同様に、オブジェ
クトmethodにおけるメソッドinvoke(resolved,objs)を
コールすることで、被構築オブジェクトresolvedを、被
構築オブジェクトobjsの参照で初期化する、オブジェク
トmethodが有するフィールド設定メソッド(ここでは、
methodNameで表されるメソッド)がコールされるように
なされている。
【0085】プログラムリスト(5)に示したように、
サブクラスAddBuilderにおいて、取得メソッドbuild(Ob
ject resolved)を、リフレクションを使用して実装する
ことで、プログラムリスト(4)に示したサブクラスSe
tbuilderでは対応できない、painters[]のような配列型
のフィールドを有する、種々の被構築オブジェクトの初
期化が可能となる。
【0086】なお、プログラムリスト(5)におけるfi
eldNameおよびmethodNameも、プログラムリスト(4)
における場合と同様に、例えば、コンストラクタによっ
て与えるようにすることができる。
【0087】次に、登録クラスについて説明する。
【0088】登録クラスは、取得オブジェクトが取得し
た被構築オブジェクトを登録するためのクラスで、図9
に示すように、被構築オブジェクトresolvedを、それに
名前(文字列や数字など)nameを付して登録する登録メ
ソッドbind(String name,Object resolved)と、名前nam
eから、登録した被構築オブジェクトを探し出す検索メ
ソッドlookup(String name)を有する。従って、登録ク
ラスのインスタンスである登録オブジェクトにおいて、
ある取得オブジェクトが取得した被構築オブジェクト
を、登録メソッドbind(String name,Object resolved)
によって登録しておくことにより、その被構築オブジェ
クトの参照が再度必要となったときには、検索メソッド
lookup(String name)によって、その被構築オブジェク
トを探し出すことができる。
【0089】具体的には、例えば、図10に示すよう
に、3つの被構築オブジェクトA乃至Cから構成(構
築)される構築物(例えば、マルチメディアコンテン
ツ)がある場合において、被構築オブジェクトAのフィ
ールドfieldAを、被構築オブジェクトBの参照によって
初期化し、その被構築オブジェクトBのフィールドfiel
dBを、被構築オブジェクトCの参照によって初期化し、
さらに、その被構築オブジェクトCのフィールドfieldC
を、被構築オブジェクトBの参照によって初期化すると
きには、被構築オブジェクトBの参照は、被構築オブジ
ェクトAの初期化を行った後、被構築オブジェクトCの
初期化を行うにも必要となる。
【0090】そこで、このような場合には、被構築オブ
ジェクトAの初期化のために、被構築オブジェクトBを
取得したときに、登録オブジェクトにおいて、登録メソ
ッドbind(String name,Object resolved)によって、被
構築オブジェクトBを登録(bind)しておく。そして、
被構築オブジェクトCの初期化の際に、登録オブジェク
トにおいて、検索メソッドlookup(String name)によっ
て、被構築オブジェクトBを探し出す(look up)こと
で、その参照によって、被構築オブジェクトCの初期化
を行うことが可能となる。
【0091】次に、図11のフローチャートを参照し
て、ユーザ端末UT上において、構築プログラムが実行
されることにより行われる構築処理について、さらに説
明する。
【0092】構築処理では、まず最初に、ステップS1
01において、取得クラス、構築クラス、または登録ク
ラスのインスタンスである、所定の構築物を構成する被
構築オブジェクトを取得するための取得オブジェクト、
それらの参照関係を構築するための構築オブジェクト、
または再度参照される被構築オブジェクトを登録するた
めの登録オブジェクトが、それぞれ生成され(ユーザ端
末UTの内蔵するメモリ上に展開され)、ステップS1
02に進む。ステップS102では、ステップS101
で生成された取得オブジェクトおよび構築オブジェク
ト、さらには、必要に応じて、登録オブジェクトによっ
て、所定の構築物を構成する被構築オブジェクトが取得
され、その参照関係が構築される。これにより、所定の
構築物が構成され、処理を終了する。
【0093】次に、所定の構築物として、例えば、図1
2に示すような参照関係のある、8つの被構築オブジェ
クトobj1乃至obj8からなるアプリケーションプ
ログラムまたはマルチメディアコンテンツその他のデー
タが構成される場合を例に、構築処理につき、さらに説
明する。なお、図12において、被構築オブジェクトを
表す四角形の下の段には、その被構築オブジェクトが有
するフィールドを図示してある。
【0094】図12では、構築物であるアプリケーショ
ンプログラムまたはマルチメディアコンテンツその他の
データが、被構築オブジェクトobj1乃至obj8か
ら構成されるため、まず、その8つの被構築オブジェク
トobj1乃至obj8を得るための取得オブジェクト
(取得クラスのインスタンス)が必要となる。いま、こ
の8つの被構築オブジェクトobj1乃至obj8を取
得するための取得オブジェクトを、それぞれGetter1,G
etter2,Getter3-1,Getter4,Getter5,Getter6,Gett
er7,Getter8とする。さらに、図12では、被構築オブ
ジェクトobj1によって参照される被構築オブジェク
トobj3が、被構築オブジェクトobj3よりも後に
取得される被構築オブジェクトobj8によっても参照
される。従って、被構築オブジェクトobj8を初期化
するときに必要となる被構築オブジェクトobj3を取
得する取得オブジェクトが必要であり、これを、Getter
3-2とする。なお、Getter3-2は、登録オブジェクト(登
録クラスのインスタンス)が有する検索メソッドlookup
(String name)をコールすることによって、被構築オブ
ジェクトobj3を探し出す(被構築オブジェクトob
j3の参照を取得する)ようになされている。
【0095】また、図12の実施の形態では、被構築オ
ブジェクトobj1がフィールドpPart11およびpPart12
を、被構築オブジェクトobj2がフィールドPpart21
を、被構築オブジェクトobj3がフィールドpPart31
を、被構築オブジェクトobj4がフィールドpPart41
およびpPart42を、被構築オブジェクトobj6がフィ
ールドpPart61およびpPart62を、被構築オブジェクトo
bj7がフィールドpPart71を、被構築オブジェクトo
bj8がフィールドpPart81を、それぞれ有している。
【0096】そして、図12の実施の形態では、被構築
オブジェクトobj1のフィールドpPart11,pPart12
は、被構築オブジェクトobj3,obj6それぞれの
参照によって、被構築オブジェクトobj2のフィール
ドPpart21は、被構築オブジェクトobj7の参照によ
って、被構築オブジェクトobj4のフィールドpPart4
1,pPart42は、被構築オブジェクトobj5,obj8
それぞれの参照によって、被構築オブジェクトobj6
のフィールドpPart61,pPart62は、被構築オブジェクト
obj4,obj2それぞれの参照によって、被構築オ
ブジェクトobj8のフィールドpPart81は、被構築オ
ブジェクトobj3の参照によって、それぞれ初期化す
る必要がある。
【0097】従って、初期化すべきフィールドとして
は、pPart11,pPart12,pPart21,pPart41,pPart42,p
Part61,pPart62,pPart81があり、これらを初期化する
構築オブジェクトを、それぞれBuilder1-1,Builder1-
2,Builder2,Builder4-1,Builder4-2,Builder6-1,B
uilder6-2,Builder8とすると、ここでは、この8つの
構築オブジェクトが必要となる。
【0098】なお、図12では、被構築オブジェクトo
bj3が、フィールドpPart31を有し、また、被構築オ
ブジェクトobj7が、フィールドpPart71を有してい
るが、これらは、他の被構築オブジェクトの参照によっ
て初期化されるようにはなされていないから、その初期
化のための構築オブジェクトは必要ない。
【0099】以上から、図12の構築物を構成するに
は、図13に示すような9の取得オブジェクト(取得ク
ラスのインスタンス)と、8の構築オブジェクト(構築
クラスのインスタンス)が必要となる。
【0100】そして、これらの9の取得オブジェクト
と、8つの構築オブジェクトとの関係は、図14に示す
ようになっており、これらのオブジェクトにおいてメソ
ッド(取得メソッドgetObject()、構築メソッドbuild(O
bject resolved))が実行されることにより、図12の
構築物を構成(構築)する構築処理が行われる。
【0101】即ち、まず最初に、取得オブジェクトGett
er1によって(取得オブジェクトGetter1が有する取得メ
ソッドgetObject()がコールされることによって)、被
構築オブジェクトobj1が取得される。取得オブジェ
クトGetter1は、被構築オブジェクトobj1が有する
フィールドpPart11,pPart12それぞれを初期化する構築
オブジェクトBuilder1-1,Builder1-2を有しており(Bu
ilder型の配列builders[]の要素として、Builder1-1,B
uilder1-2の2つを有しており)、それぞれによって初
期化が行われる。
【0102】即ち、まず、取得オブジェクトGetter1で
は、それが有するBuilder型の配列builders[]の2つの
要素Builder1-1,Builder1-2のうちの1番目のBuilder1
-1における構築メソッドbuild(Object resolved)がコー
ルされる。構築オブジェクトBuilder1-1は、フィールド
pPart11を被構築オブジェクトobj3の参照によって
初期化するために、その被構築オブジェクトobj3を
取得する取得オブジェクトGetter3-1を有しており、取
得オブジェクトGetter3-1は、被構築オブジェクトob
j3を取得する(Builder1-1における構築メソッドbuil
d(Object resolved)において、取得オブジェクトGetter
3-1が有する取得メソッドgetObject()がコールされるこ
とにより、被構築オブジェクトobj3が取得され
る)。
【0103】被構築オブジェクトobj3は初期化する
必要がないため、取得オブジェクトGetter3-1は、その
初期化のための構築オブジェクトを有しておらず(取得
オブジェクトGetter3-1が有する、Builder型の配列buil
ders[]の要素がnullになっており)、これにより、取得
オブジェクトGetter3-1における取得メソッドgetObject
()の処理が完結し、リターンする。
【0104】このとき、取得オブジェクトGetter3-1に
おける取得メソッドgetObject()は、取得した被構築オ
ブジェクトobj3の参照を、戻り値として、構築オブ
ジェクトBuilder1-1に返し、構築オブジェクトBuilder1
-1は、その被構築オブジェクトobj3の参照によっ
て、被構築オブジェクトobj1のフィールドpPart11
を初期化する。そして、フィールドpPart11の初期化が
終了すると、構築オブジェクトBuilder1-1における構築
メソッドbuild(Object resolved)の処理が完結し、リタ
ーンする。
【0105】構築オブジェクトBuilder1-1における構築
メソッドbuild(Object resolved)が完結すると、取得オ
ブジェクトGetter1では、それが有するBuilder型の配列
builders[]の2つの要素Builder1-1,Builder1-2のうち
の2番目のBuilder1-2における構築メソッドbuild(Obje
ct resolved)がコールされる。
【0106】構築オブジェクトBuilder1-2は、フィール
ドpPart12を被構築オブジェクトobj6の参照によっ
て初期化するために、その被構築オブジェクトobj6
を取得する取得オブジェクトGetter6を有しており、取
得オブジェクトGetter6は、被構築オブジェクトobj
6を取得する(Builder1-2における構築メソッドbuild
(Object resolved)において、取得オブジェクトGetter6
が有する取得メソッドgetObject()がコールされること
により、被構築オブジェクトobj6が取得される)。
【0107】取得オブジェクトGetter6は、被構築オブ
ジェクトobj6が有するフィールドpPart61,pPart62
それぞれを初期化する構築オブジェクトBuilder6-1,Bu
ilder6-2を有しており(Builder型の配列builders[]の
要素として、Builder1-1,Builder1-2の2つを有してお
り)、それぞれによって初期化が行われる。
【0108】即ち、まず、取得オブジェクトGetter6で
は、それが有するBuilder型の配列builders[]の2つの
要素Builder6-1,Builder6-2のうちの1番目のBuilder6
-1における構築メソッドbuild(Object resolved)がコー
ルされる。構築オブジェクトBuilder6-1は、フィールド
pPart61を被構築オブジェクトobj4の参照によって
初期化するために、その被構築オブジェクトobj4を
取得する取得オブジェクトGetter4を有しており、取得
オブジェクトGetter4は、被構築オブジェクトobj4
を取得する(Builder6-1における構築メソッドbuild(Ob
ject resolved)において、取得オブジェクトGetter4が
有する取得メソッドgetObject()がコールされることに
より、被構築オブジェクトobj4が取得される)。
【0109】取得オブジェクトGetter4は、被構築オブ
ジェクトobj4が有するフィールドpPart41,pPart42
それぞれを初期化する構築オブジェクトBuilder4-1,Bu
ilder4-2を有しており(Builder型の配列builders[]の
要素として、Builder4-1,Builder4-2の2つを有してお
り)、それぞれによって初期化が行われる。
【0110】即ち、まず、取得オブジェクトGetter4で
は、それが有するBuilder型の配列builders[]の2つの
要素Builder4-1,Builder4-2のうちの1番目のBuilder4
-1における構築メソッドbuild(Object resolved)がコー
ルされる。構築オブジェクトBuilder4-1は、フィールド
pPart41を被構築オブジェクトobj5の参照によって
初期化するために、その被構築オブジェクトobj5を
取得する取得オブジェクトGetter5を有しており、取得
オブジェクトGetter5は、被構築オブジェクトobj5
を取得する。
【0111】被構築オブジェクトobj5は初期化する
必要がないため、取得オブジェクトGetter5は、その初
期化のための構築オブジェクトを有しておらず(取得オ
ブジェクトGetter5が有する、Builder型の配列builders
[]の要素がnullになっており)、これにより、取得オブ
ジェクトGetter5における取得メソッドgetObject()の処
理が完結し、リターンする。
【0112】このとき、取得オブジェクトGetter5にお
ける取得メソッドgetObject()は、取得した被構築オブ
ジェクトobj5の参照を、戻り値として、構築オブジ
ェクトBuilder4-1に返し、構築オブジェクトBuilder4-1
は、その被構築オブジェクトobj5の参照によって、
被構築オブジェクトobj4のフィールドpPart41を初
期化する。そして、フィールドpPart41の初期化が終了
すると、構築オブジェクトBuilder4-1における構築メソ
ッドbuild(Object resolved)の処理が完結し、リターン
する。
【0113】構築オブジェクトBuilder4-1における構築
メソッドbuild(Object resolved)が完結すると、取得オ
ブジェクトGetter4では、それが有するBuilder型の配列
builders[]の2つの要素Builder4-1,Builder4-2のうち
の2番目のBuilder4-2における構築メソッドbuild(Obje
ct resolved)がコールされる。
【0114】構築オブジェクトBuilder4-2は、フィール
ドpPart42を被構築オブジェクトobj8の参照によっ
て初期化するために、その被構築オブジェクトobj8
を取得する取得オブジェクトGetter8を有しており、取
得オブジェクトGetter8は、被構築オブジェクトobj
8を取得する。
【0115】取得オブジェクトGetter8は、被構築オブ
ジェクトobj8が有するフィールドpPart81を初期化
する構築オブジェクトBuilder8を有しており(Builder
型の配列builders[]の要素として、Builder8の1つだけ
を有しており)、それによって初期化が行われる。
【0116】即ち、取得オブジェクトGetter8では、そ
れが有するBuilder型の配列builders[]の要素Builder8
における構築メソッドbuild(Object resolved)がコール
される。構築オブジェクトBuilder8は、フィールドpPar
t81を被構築オブジェクトobj3の参照によって初期
化するために、その被構築オブジェクトobj3を取得
する取得オブジェクトGetter3-2を有しており、取得オ
ブジェクトGetter3-2は、被構築オブジェクトobj3
を取得する(Builder8における構築メソッドbuild(Obje
ct resolved)において、取得オブジェクトGetter3-2が
有する取得メソッドgetObject()がコールされることに
より、被構築オブジェクトobj3が取得される)。
【0117】ここで、被構築オブジェクトobj1によ
って参照される被構築オブジェクトobj3が、被構築
オブジェクトobj3よりも後に取得される被構築オブ
ジェクトobj8によっても参照されることは、あらか
じめ分かっている。このため、取得オブジェクトGetter
3-1が被構築オブジェクトobj3を取得すると、登録
オブジェクトの登録メソッドbind(String name,Object
resolved)がコールされ、取得オブジェクトGetter3-1が
取得した被構築オブジェクトobj3が登録されるよう
になされている。そして、取得オブジェクトGetter3-2
は、その登録オブジェクトの検索メソッドlookup(Strin
g name)をコールすることで、既に取得されている被構
築オブジェクトobj3の参照を取得するようになされ
ている。
【0118】既に取得されている被構築オブジェクトo
bj3は初期化する必要がないため(図12の実施の形
態では、被構築オブジェクトobj3は、最初から、初
期化すべきフィールドを有しないが、仮に有していたと
しても、その初期化は、取得オブジェクトGetter3-1が
有する構築オブジェクトによって行われるべきものであ
るから、ここでは行う必要がない)、取得オブジェクト
Getter3-2は、その初期化のための構築オブジェクトを
有しておらず(取得オブジェクトGetter3-2が有する、B
uilder型の配列builders[]の要素がnullになってお
り)、これにより、取得オブジェクトGetter3-2におけ
る取得メソッドgetObject()の処理が完結し、リターン
する。
【0119】このとき、取得オブジェクトGetter3-2に
おける取得メソッドgetObject()は、取得した被構築オ
ブジェクトobj3の参照を、戻り値として、構築オブ
ジェクトBuilder8に返し、構築オブジェクトBuilder8
は、その被構築オブジェクトobj3の参照によって、
被構築オブジェクトobj8のフィールドpPart81を初
期化する。そして、フィールドpPart81の初期化が終了
すると、構築オブジェクトBuilder8における構築メソッ
ドbuild(Object resolved)の処理が完結し、リターンす
る。
【0120】構築オブジェクトBuilder8における構築メ
ソッドbuild(Object resolved)が完結すると、取得オブ
ジェクトGetter8における取得メソッドgetObject()が完
結し、それが取得した被構築オブジェクトobj8の参
照が、戻り値として、構築オブジェクトBuilder4-2に返
される。構築オブジェクトBuilder4-2は、この戻り値で
ある被構築オブジェクトobj8の参照によって、被構
築オブジェクトobj4のフィールドpPart42を初期化
し、これにより、構築オブジェクトBuilder4-2における
構築メソッドbuild(Object resolved)の処理が完結し、
リターンする。
【0121】構築オブジェクトBuilder4-2における構築
メソッドbuild(Object resolved)が完結すると、取得オ
ブジェクトGetter4における取得メソッドgetObject()が
完結し、それが取得した被構築オブジェクトobj4の
参照が、戻り値として、構築オブジェクトBuilder6-1に
返される。構築オブジェクトBuilder6-1は、この戻り値
である被構築オブジェクトobj4の参照によって、被
構築オブジェクトobj6のフィールドpPart61を初期
化し、これにより、構築オブジェクトBuilder6-1におけ
る構築メソッドbuild(Object resolved)の処理が完結
し、リターンする。
【0122】構築オブジェクトBuilder6-1における構築
メソッドbuild(Object resolved)が完結すると、取得オ
ブジェクトGetter6では、それが有するBuilder型の配列
builders[]の2つの要素Builder6-1,Builder6-2のうち
の2番目のBuilder6-2における構築メソッドbuild(Obje
ct resolved)がコールされる。
【0123】構築オブジェクトBuilder6-2は、フィール
ドpPart62を被構築オブジェクトobj2の参照によっ
て初期化するために、その被構築オブジェクトobj2
を取得する取得オブジェクトGetter2を有しており、取
得オブジェクトGetter2は、被構築オブジェクトobj
2を取得する。
【0124】さらに、取得オブジェクトGetter2は、被
構築オブジェクトobj2が有するフィールドpPart21
を初期化する構築オブジェクトBuilder2を有しており、
それによって初期化が行われる。
【0125】即ち、取得オブジェクトGetter2では、そ
れが有するBuilder型の配列builders[]の要素Builder2
における構築メソッドbuild(Object resolved)がコール
される。構築オブジェクトBuilder2は、フィールドpPar
t21を被構築オブジェクトobj7の参照によって初期
化するために、その被構築オブジェクトobj7を取得
する取得オブジェクトGetter7を有しており、取得オブ
ジェクトGetter7は、被構築オブジェクトobj7を取
得する。
【0126】被構築オブジェクトobj7は初期化する
必要がないため、取得オブジェクトGetter7は、その初
期化のための構築オブジェクトを有しておらず(取得オ
ブジェクトGetter7が有する、Builder型の配列builders
[]の要素がnullになっており)、これにより、取得オブ
ジェクトGetter7における取得メソッドgetObject()の処
理が完結し、リターンする。
【0127】このとき、取得オブジェクトGetter7にお
ける取得メソッドgetObject()は、取得した被構築オブ
ジェクトobj7の参照を、戻り値として、構築オブジ
ェクトBuilder2に返し、構築オブジェクトBuilder2は、
その被構築オブジェクトobj7の参照によって、被構
築オブジェクトobj2のフィールドpPart21を初期化
する。そして、フィールドpPart21の初期化が終了する
と、構築オブジェクトBuilder2における構築メソッドbu
ild(Object resolved)の処理が完結し、リターンする。
【0128】構築オブジェクトBuilder2における構築メ
ソッドbuild(Object resolved)が完結すると、取得オブ
ジェクトGetter2における取得メソッドgetObject()が完
結し、それが取得した被構築オブジェクトobj2の参
照が、戻り値として、構築オブジェクトBuilder6-2に返
される。構築オブジェクトBuilder6-2は、この戻り値で
ある被構築オブジェクトobj2の参照によって、被構
築オブジェクトobj6のフィールドpPart62を初期化
し、これにより、構築オブジェクトBuilder6-2における
構築メソッドbuild(Object resolved)の処理が完結し、
リターンする。
【0129】構築オブジェクトBuilder6-2における構築
メソッドbuild(Object resolved)が完結すると、取得オ
ブジェクトGetter6における取得メソッドgetObject()が
完結し、それが取得した被構築オブジェクトobj6の
参照が、戻り値として、構築オブジェクトBuilder1-2に
返される。構築オブジェクトBuilder1-2は、この戻り値
である被構築オブジェクトobj6の参照によって、被
構築オブジェクトobj1のフィールドpPart12を初期
化し、これにより、構築オブジェクトBuilder1-2におけ
る構築メソッドbuild(Object resolved)の処理が完結
し、リターンする。
【0130】構築オブジェクトBuilder1-2における構築
メソッドbuild(Object resolved)が完結すると、取得オ
ブジェクトGetter1における取得メソッドgetObject()が
完結し、これにより、図12に示した構築物が構成され
る。
【0131】以上のように、マルチメディアコンテンツ
(ここでは、EPG)を構成する部品に対応する被構築
オブジェクトを、取得オブジェクトによって取得し、さ
らに、それらの被構築オブジェクトの参照関係を、構築
オブジェクトによって構築するようにしたので、被構築
オブジェクトを、例えば、ネットワーク上に分散させて
おき、必要なときに、必要な被構築オブジェクトだけを
集めてリンクさせ(参照関係を構築し)、マルチメディ
アコンテンツを構成することが可能となる。
【0132】次に、以上のようにして構築処理により構
成されたマルチメディアコンテンツとしてのEPGの振
舞を制御する振舞制御処理について説明する。
【0133】ここで、上述の構築処理の説明において
は、説明を簡単にするために、EPGが、動画や、静止
画、テキスト、ボタンなどの部品に対応するオブジェク
トだけで構成されるものとしたが、本実施の形態では、
マルチメディアコンテンツとしてのEPGは、そのよう
な部品に対応するオブジェクトだけでなく、部品に対応
するオブジェクトを操作するオブジェクトや、タイムス
ケジューリングを行うオブジェクトなどをも含んで構成
されている。
【0134】即ち、本実施の形態では、EPGは、シー
ンと呼ばれるオブジェクトが1以上集まって構成されて
いる。そして、シーンは、アクタおよびビヘイビアスケ
ジューラと呼ばれるオブジェクトから構成されている。
【0135】アクタ(データホルダオブジェクト)は、
上述の動画や、静止画、テキスト、ボタンなどの部品に
対応する動作可能なオブジェクトで、その振舞(例え
ば、画面上における自身の表示位置や、表示する大き
さ、色、画面上において移動するかしないか、移動する
なら、その移動方向や移動速度、移動量、自身が有する
動画や静止画、音声などのコンテンツを再生するとか、
一時停止するとかなど)を決めるデータを有している。
また、アクタは、基本的には、ユニークなものであるた
め、クラスの継承関係は持っていない(但し、Javaで
は、いずれのオブジェクトも、最終的には、オブジェク
トクラス(Object型)を継承している)。但し、アクタ
は、後述するビヘイビアに、自身が有するデータを操作
させるためのインターフェイス(以下、適宜、操作イン
ターフェイスという)(Java言語やC++で規定されて
いるインターフェイス)を実装しており、これにより、
クラスの継承関係がなくても、ビヘイビアは、その操作
インターフェイスを利用して、アクタが有するデータに
対してアクセスすることができるようになされている。
【0136】なお、オブジェクト指向プログラミングに
よって、シミュレーションを行う場合に、並列処理が可
能な計算モデルとして、自立的に振る舞うオブジェクト
から構成されるものを考えることがある。この場合に、
その自立的に振る舞うオブジェクトは、一般に、アクタ
と呼ばれるが、シーンを構成するアクタは、計算モデル
を構成するアクタとは異なる。即ち、いずれのアクタ
も、自身の振舞を決めるデータを有する点では共通する
が、シーンを構成するアクタは、基本的に、そのデータ
を操作するメソッドを有しない点で、そのようなメソッ
ドを有する、計算モデルを構成するアクタとは異なる。
但し、シーンを構成するアクタに、それが有するデータ
を操作するメソッドを持たせることも可能である(シー
ンを構成するアクタを、計算モデルを構成するアクタと
同様に構成することも可能である)。
【0137】ビヘイビアスケジューラ(データ操作オブ
ジェクトスケジューリングオブジェクト)は、アクタが
有するデータを操作するビヘイビア(behavior)(デー
タ操作オブジェクト)と呼ばれるオブジェクトを有し、
そのビヘイビアをタイムスケジューリングする。即ち、
ビヘイビアスケジューラは、タイムスケジューリングの
対象であるビヘイビアと、そのビヘイビアにアクタのデ
ータを操作させるための時間的な制約条件とを対応付け
て登録しているテーブルを管理しており、そのテーブル
の登録情報に基づいて、ビヘイビアにタイムドリブンで
処理を行わせる(アクタが有するデータを操作させ
る)。
【0138】ここで、ビヘイビアは、上述の操作インタ
ーフェイスを用いて、その操作インターフェイスを実装
するアクタのデータを読み出して処理し、その処理後の
データを、再び、アクタに設定する。アクタは、その設
定されたデータにしたがって振る舞う。また、ビヘイビ
アは、基本的には、アクタと同様に、ユニークなもので
あり、クラスの継承関係は持っていない。さらに、ビヘ
イビアは、それを有するビヘイビアスケジューラを、親
ビヘイビアスケジューラとして、その親ビヘイビアスケ
ジューラに従属するビヘイビアスケジューラである子ビ
ヘイビアスケジューラを有することが可能となされてい
る。この場合、親ビヘイビアスケジューラが有するビヘ
イビア(以下、適宜、親ビヘイビアという)と、その子
ビヘイビアスケジューラが有するビヘイビア(以下、適
宜、子ビヘイビアという)の両方によって、アクタのデ
ータが操作され、そのアクタの振舞が制御される。即
ち、これにより、アクタは、親ビヘイビアによるデータ
の操作と、子ビヘイビアによるデータの操作との両方の
操作を組合せた(合成した)ような振舞をする。
【0139】なお、ビヘイビアは、ビヘイビアスケジュ
ーラが有し、ビヘイビアスケジューラは、シーンを構成
するから、シーンは、アクタおよびビヘイビアスケジュ
ーラに、ビヘイビアを加えた3種類のオブジェクトを含
んで構成されているということもできる。
【0140】また、ビヘイビア(ビヘイビアスケジュー
ラ)には、親と子の2階層だけでなく、3階層以上の階
層構造を持たせることも可能である。
【0141】さらに、ビヘイビアは、基本的には、ビヘ
イビアスケジューラによってタイムスケジューリングさ
れることにより、タイムドリブンで処理を行うが、必要
に応じて、イベントドリブンででも処理を行わせること
が可能である。
【0142】以上のように構成されるシーンでは、ビヘ
イビアにおいて、ビヘイビアスケジューラによるタイム
スケジューリングにしたがい、アクタのデータが操作さ
れ、これにより、そのアクタの振舞がタイムドリブンで
制御される。従って、アクタのデータの操作が、アクタ
とは別のビヘイビアによって行われるので(アクタが有
するデータを操作するメソッドが、アクタとは別のビヘ
イビアに実装されているので)、ビヘイビアだけを作り
直し、あるいは、ビヘイビアを交換、追加などするだけ
で、アクタを作成し直すことなく、その振舞を拡張(変
更)することが可能となる。
【0143】さらに、ビヘイビア(ビヘイビアスケジュ
ーラ)は、それに従属する子ビヘイビア(子ビヘイビア
スケジューラ)を有することが可能であるから、即ち、
ビヘイビア(ビヘイビアスケジューラ)は階層構造にす
ることができるから、単純な振舞に対応するビヘイビア
を複数組み合わせることで、容易に、複雑な振舞を実現
することが可能となる。
【0144】なお、ビヘイビアをタイムスケジューリン
グするオブジェクトであるビヘイビアスケジューラが、
別個に用意されているので、そのビヘイビアスケジュー
ラによって、ビヘイビアをタイムスケジューリングする
だけで、容易に、複数のビヘイビアを組み合わせること
ができる。
【0145】以上のように、ビヘイビアスケジューラ
が、自身の有するビヘイビアをタイムスケジューリング
し、そのようにタイムスケジューリングされたビヘイビ
アによってアクタの振舞がタイムドリブンで制御され、
これにより、一場面(シーン)が形成されることから、
アクタとビヘイビアスケジューラとの組み合わせを含む
ものを、シーンと呼んでいる。
【0146】ところで、本実施の形態では、シーンは、
そのシーンを親シーンとして、それに従属するシーンで
ある子シーン(サブシーン)を持つことができるように
なされており、即ち、シーンも、ビヘイビア(ビヘイビ
アスケジューラ)と同様に階層構造をとることができる
ようになされており、この場合、親シーンは、その子シ
ーンをタイムスケジューリングする、ビヘイビアスケジ
ューラと同様に構成されるオブジェクトであるシーンス
ケジューラ(子シーンスケジューリングオブジェクト)
をさらに含んで構成される。
【0147】シーンが子シーンを有する場合、その子シ
ーンは、対応するシーンスケジューラによってタイムス
ケジューリングされたタイミングに実行される。即ち、
子シーンは、親シーンと同様に、アクタ、ビヘイビア、
およびビヘイビアスケジューラを有し(さらに、その孫
シーンを有することもあり、この場合、その孫シーンを
タイムスケジューリングするシーンスケジューラも有す
る)、子シーンのシーンスケジューラは、その子シーン
が有するビヘイビアスケジューラに処理を行わせる(子
シーンが、孫シーンと、そのシーンスケジューラを有す
る場合には、さらに、その孫シーンのシーンスケジュー
ラにも処理を行わせる)。これにより、子シーンでは、
その子シーンが有するビヘイビアにおいて、その子シー
ンが有するビヘイビアスケジューラによるタイムスケジ
ューリングにしたがい、その子シーンが有するアクタの
データが操作され、そのアクタの振舞が制御される。
【0148】ここで、ビヘイビアスケジューラとシーン
スケジューラとは、上述のように同様に構成されるの
で、以下、適宜、両方あわせて、単に、スケジューラと
いう。
【0149】スケジューラは、時間に関してスケジュー
リング(タイムスケジューリング)を行うためのメソッ
ドを実装しており、タイムスケジューリングされるため
のインターフェイス(以下、適宜、スケジュールドイン
ターフェイスという)(Java言語やC++で規定されて
いるインターフェイス)を実装する他のスケジューラ
や、ビヘイビア、シーンを、タイムスケジューリングの
対象とするようになされている。従って、本実施の形態
では、タイムスケジューリングされるシーン、スケジュ
ーラ、およびビヘイビアは、スケジュールドインターフ
ェイスを実装しており、また、スケジューラは、スケジ
ュールドインターフェイスを使用して、シーン、スケジ
ューラ、およびビヘイビアのタイムスケジューリングを
行う。
【0150】なお、スケジューラは、上述のように、他
のスケジューラをタイムスケジューリングすることがで
きるので、他のスケジューラにおいて、あるスケジュー
ラによるタイムスケジューリングのタイミングを基準と
して、タイムスケジューリングを行うような、いわばタ
イムスケジューリングの組合せ(合成)が可能となる。
【0151】ここで、本実施の形態では、スケジューラ
として、2つの異なる機能を有するものが用意されてい
る。1つはパラレルスケジューラと呼ばれるスケジュー
ラで、これは、自身のテーブルに、実行可能なオブジェ
クトが複数登録されている場合に、その複数のオブジェ
クトすべてを並列に実行することが可能なものである。
また、他の1つはシーケンシャルスケジューラと呼ばれ
るスケジューラで、これは、自身のテーブルに、実行可
能なオブジェクトが複数登録されている場合に、そのう
ちの1つだけを優先的に実行可能なものである。
【0152】シーケンシャルスケジューラにおいて、自
身のテーブルに、実行可能なオブジェクトが複数登録さ
れている場合に、そのうちのいずれを優先して実行する
かは、種々の方法が考えられるが、例えば、その複数の
オブジェクトが、テーブルに登録された順番を優先させ
ることができる。また、オブジェクトの実行開始時刻が
規定されている場合には、例えば、その実行開始時刻の
最も早いものを優先させることができる。さらに、オブ
ジェクトの実行時間(実行開始時刻から実行終了時刻ま
での時間)が規定されている場合には、例えば、その実
行時間が最も長いものを優先させることなども可能であ
る。
【0153】なお、オブジェクトを実行するとは、その
オブジェクトが有するメソッドをコールすることを意味
する。
【0154】上述した構築処理では、シーンを構成す
る、以上のようなアクタ、ビヘイビア、スケジューラ
が、被構築オブジェクトとして取得され、その参照関係
が構築されることにより、マルチメディアコンテンツと
してのEPGが構成されるようになされている。
【0155】なお、シーンは、いわばコンテナに相当
し、そのシーンを構成するアクタやビヘイビアスケジュ
ーラ、子シーンは、そのコンテナのコンポーネントに相
当する。
【0156】次に、図15は、以上のようなシーンで構
成されるEPGを模式的に表している。
【0157】図15の実施の形態では、まず同図(A)
に示すようなEPGが構成され、その後、そのEPG
が、所定のタイミングにおいて、同図(B)に示すよう
なものに変化するようになされている。なお、図15
(A)に示すEPGは、アクタとして、背景31、イメ
ージ32、背景33、ボタン34乃至37を有し、同図
(B)に示すEPGは、そのうちの背景33およびボタ
ン34乃至37に代えて、背景41、ボタン42、およ
び43を、アクタとして有している。
【0158】図15に示すようなEPGの振舞(同図
(A)から同図(B)に示すようなEPGの変化)は、
シーンが、例えば図16に示すように再生(実行)され
ることで(シーンを構成するビヘイビアスケジューラの
メソッドがコールされ、また、シーンが子シーンと、そ
の子シーンをタイムスケジューリングするシーンスケジ
ューラを有する場合には、そのシーンスケジューラのメ
ソッドがコールされることで)実現される。
【0159】即ち、図15のEPGは、シーンScene0で
構成され、シーンScene0は、EPGの背景31をアクタ
として有し、かつ、その子シーンとして、シーンScene0
1,Scene02,Scene03を有している。さらに、シーンSce
ne0は、その子シーンScene01乃至Scene03を、時刻t0
至t0’,t0乃至t1,t1乃至t0’においてそれぞれ
再生するようにタイムスケジューリングするスケジュー
ラ(シーンスケジューラ)も有している。なお、図16
の実施の形態では、シーンScene0は、時刻t0乃至t0
において再生されるようにタイムスケジューリングされ
ているが、シーンScene0は、最も上位の階層のシーンで
あるため、そのタイムスケジューリングは、例えば、ス
レッドクラスを継承するディレクタ(あるいはシナリ
オ)と呼ばれるオブジェクトにおいて行われるようにな
されている。ここで、ディレクタは、EPGを再生する
ために割り当てられたスレッド(例えば、30ms周期
のスレッドなど)において、最上位階層のシーンの再生
を行う他、例えば、図14で説明した構築処理を行う場
合に、最初のオブジェクトである被構築オブジェクトo
bj1を取得するための、取得オブジェクトGetter1が
有する取得メソッドgetObject()のコールなども行う。
即ち、ディレクタは、EPGを再生するための、いわば
指揮をとる。
【0160】シーンScene01は、イメージ32をアクタ
として有している。
【0161】シーンScene02は、ボタン34乃至37が
配置される部分の背景33をアクタとして有し、かつ、
その子シーンとして、シーンScene021,Scene022,Scen
e023,Scene024を有している。さらに、シーンScene02
は、その子シーンScene021乃至Scene024のいずれをも、
時刻t0乃至t1において再生するようにタイムスケジュ
ーリングするスケジューラを有している。そして、シー
ンScene021乃至Scene024は、ボタン34乃至37をアク
タとしてそれぞれ有している。
【0162】シーンScene03は、ボタン42および43
が配置される部分の背景41をアクタとして有し、か
つ、その子シーンとして、シーンScene031,Scene032を
有している。さらに、シーンScene03は、その子シーンS
cene031,Scene032のいずれをも、時刻t1乃至t0’に
おいて再生するようにタイムスケジューリングするスケ
ジューラを有している。そして、シーンScene031,Scen
e032は、ボタン42,43をアクタとしてそれぞれ有し
ている。
【0163】従って、時刻t0において、シーンScene0
の再生が開始されると、シーンScene0が有するアクタと
しての背景31が表示される。さらに、シーンScene0が
有するスケジューラにおいて、シーンScene01およびSce
ne02の再生が開始され、これにより、シーンScene01ま
たはScene02がそれぞれ有するアクタとしてのイメージ
32または背景33が表示される。また、シーンScene0
2が有するスケジューラにおいて、シーンScene021乃至S
cene024の再生が開始され、これにより、シーンScene02
1乃至Scene024がそれぞれ有するアクタとしてのボタン
34乃至37が表示される。
【0164】その結果、図15(A)に示すEPGが表
示される。なお、シーンScene0,Scene01,Scene02,Sc
ene021乃至Scene024は、それぞれが有するアクタとして
の背景31、イメージ32、背景33、ボタン34乃至
37が有するデータを操作するビヘイビアを有してお
り、その表示の仕方(大きさ、色、表示位置など)(振
舞)は、このビヘイビアが、各アクタの有するデータを
操作することで制御される。
【0165】その後、現在時刻が時刻t1となると(但
し、t0<t1<t0’)、シーンScene0が有するスケジ
ューラにおいて、シーンScene02の再生が終了され、さ
らに、シーンScene02が有するスケジューラにおいて、
シーンScene021乃至Scene024の再生が終了される。これ
により、シーンScene02が有するアクタとしてのイメー
ジ32、およびシーンScene021乃至Scene024がそれぞれ
有するアクタとしてのボタン34乃至37の表示が消去
される。
【0166】また、時刻t1では、シーンScene0が有す
るスケジューラにおいて、シーンScene03の再生が開始
され、これにより、シーンScene03が有するアクタとし
ての背景41が表示される。また、シーンScene03が有
するスケジューラにおいて、シーンScene031およびScen
e032の再生が開始され、これにより、シーンScene031ま
たはScene032がそれぞれ有するアクタとしてのボタン4
2または43が表示される。
【0167】その結果、図15(A)に示すEPGに代
えて、図15(B)に示すEPGが表示される。なお、
シーンScene03,Scene031,Scene032は、それぞれが有
するアクタとしての背景41、ボタン42,43が有す
るデータを操作するビヘイビアを有しており、その表示
の仕方は、このビヘイビアが、各アクタの有するデータ
を操作することで制御される。
【0168】その後、現在時刻が時刻t0’となると、
シーンScene0の再生が終了され、さらに、シーンScene0
が有するスケジューラにおいて、シーンScene01およびS
cene03の再生が終了されるとともに、シーンScene03が
有するスケジューラにおいて、シーンScene031およびSc
ene032の再生が終了される。これにより、シーンScene0
が有するアクタとしての背景31、シーンScene01が有
するアクタとしてのイメージ32、シーンScene03が有
するアクタとしての背景41、シーンScene031,Scene0
32がそれぞれ有するアクタとしてのボタン42,43の
表示が消去される。
【0169】即ち、図15(B)に示すEPGは消去さ
れる。
【0170】EPGを構成するシーンは、階層構造にさ
れているので、EPGを構成するアクタや、その振舞を
容易に変更することができる。
【0171】即ち、例えば、図15に示したようなEP
Gの変更は、アクタである背景33、ボタン34乃至3
7を、1つずつ消去するとともに、アクタとしての背景
41、ボタン42,43を1つずつ表示するような制御
を行うのではなく、シーンScene02を、シーンScene03に
切り替えるだけで行うことができる。
【0172】次に、ビヘイビアも、上述したように、シ
ーンと同様に階層構造にすることができ、これにより、
アクタの複雑な振舞を、容易に実現することができる。
【0173】即ち、例えば、いま、図17に示すよう
に、あるビヘイビアBehavior0に、ビヘイビアBehavior0
1およびBehavior02が従属しており、さらに、ビヘイビ
アBehavior01に、ビヘイビアBehavior011およびBehavio
r012が従属しているとする。また、ビヘイビアBehavior
0,Behavior01,Behavior02,Behavior011,Behavior01
2は、時刻t0乃至t0’,t0乃至t5,t5乃至t0’,
0乃至t3,t2乃至t4それぞれにおいて、アクタの振
舞を制御するようにタイムスケジューリングされている
ものとする(但し、t0<t2<t3<t4<t5
0’)。さらに、例えば、ビヘイビアBehavior0は、ア
クタの表示色を赤から緑に変更する操作を、ビヘイビア
Behavior01は、アクタを、傾き2の直線上を移動させる
操作を、ビヘイビアBehavior02は、アクタを、傾き−2
の直線上を移動させる操作を、ビヘイビアBehavior011
は、アクタの大きさを、1ずつ拡大する操作を、ビヘイ
ビアBehavior012は、アクタを、半径5の円の円周上を
移動させる操作を、それぞれ行うものとする。また、ビ
ヘイビアBehavior0は、図18に示すようなボタンとし
てのアクタの振舞を制御するものとする。なお、ビヘイ
ビアBehavior0,Behavior01,Behavior02,Behavior01
1,Behavior012は、1の階層構造を構成しているから、
ビヘイビアBehavior0の子ビヘイビアであるビヘイビアB
ehavior01,Behavior02、さらには、ビヘイビアBehavio
r01の子ビヘイビアであるビヘイビアBehavior011,Beha
vior012は、ビヘイビアBehavior0と同一のアクタの振舞
を制御する。
【0174】この場合、現在時刻が、時刻t0になる
と、ビヘイビアBehavior0は、アクタの表示色を、赤か
ら緑に変更する(従って、アクタの元の表示色は、ここ
では、赤になっている)。さらに、ビヘイビアBehavior
01は、傾き2の直線に沿ってのアクタの移動を開始さ
せ、ビヘイビアBehavior011は、アクタの大きさを1ず
つ拡大させる。そして、現在時刻がt2になると、ビヘ
イビアBehavior012は、半径5の円の円周に沿ってのア
クタの移動を開始させ、その後、現在時刻が、時刻t3
になると、ビヘイビアBehavior011は、アクタの拡大を
停止させ、さらに、現在時刻が、時刻t4となると、ビ
ヘイビアBehavior012は、半径5の円の円周に沿っての
アクタの移動を停止させる。
【0175】そして、現在時刻が、時刻t5になると、
ビヘイビアBehavior01は、傾き2の直線に沿ってのアク
タの移動を停止させ、ビヘイビアBehavior02は、傾−2
の直線に沿ってのアクタの移動を開始させる。その後、
現在時刻が、時刻t0’になると、ビヘイビアBehavior0
2は、傾き−2の直線に沿ってのアクタの移動を停止さ
せ、さらに、ビヘイビアBehavior0によるアクタの表示
色の制御が終了する。
【0176】その結果、アクタとしてのボタンは、図1
8に示すように、時刻t0において、その表示色を赤か
ら緑に変更し(同図においては、赤色を無模様で、緑色
を斜線で、それぞれ表してある)、傾き2の直線上を移
動しながら(同図においてAで示す部分)、そのサイズ
を1ずつ拡大していく(同図においてCで示す部分)。
さらに、アクタは、時刻t2において、傾き2の直線上
を移動することに加えて、半径5の円周上を移動するこ
とを開始し(同図においてBで示す部分)、時刻t3
おいて、傾き2の直線上を移動することを停止する。そ
の後、アクタは、時刻t4において、半径5の円周上を
移動することを停止し、時刻t5において、傾き−2の
直線上を移動することを開始する(同図においてDで示
す部分)。そして、時刻t0’になると、アクタは、あ
らゆる動作を停止する。
【0177】以上のように、ビヘイビアを階層構造にす
ることができるので、各ビヘイビアによる振舞を組み合
わせた複雑な振舞を、容易に実現することが可能とな
る。
【0178】また、振舞の変更も容易に行うことが可能
となる。即ち、例えば、図17および図18の実施の形
態において、アクタに、傾き2の直線上の移動、サイズ
の拡大、および半径5の円周上の移動を行わせないよう
にするには、ビヘイビアBehavior01,Behavior011,Beh
avior012を1つずつ取り除く必要はなく、そのうちの最
も上位階層のビヘイビアであるビヘイビアBehavior01を
取り除くだけで済む。
【0179】次に、図19のフローチャートを参照し
て、EPGを再生する指揮をとるディレクタ(シナリ
オ)の処理について説明する。
【0180】ディレクタでは、まず最初に、ステップS
1において、例えば、30msなどの所定の待ち時間が
おかれる。そして、待ち時間が経過すると、ステップS
2に進み、最上位階層のシーンを実行する。即ち、ディ
レクタは、上述したスケジューラと同様に、タイムスケ
ジューリングの対象である最上位階層のシーンと、その
シーンを実行すべき時間的な制約条件とを対応付けて登
録しているテーブルを管理しており、そのテーブルの登
録情報に基づいて、いま実行すべきシーンを認識して実
行する。具体的には、最上位階層のシーンがビヘイビア
スケジューラを有する場合には、そのメソッドがコール
される。また、最上位階層のシーンが、子シーンと、そ
の子シーンをタイムスケジューリングするシーンスケジ
ューラを有する場合には、そのシーンスケジューラのメ
ソッドがコールされる。そして、ステップS1に戻り、
以下、同様の処理を繰り返す。
【0181】次に、スケジューラの処理について説明す
る。
【0182】まず、図20のフローチャートを参照し
て、スケジューラのうちのビヘイビアスケジューラの処
理(ビヘイビアスケジューラのメソッドがコールされた
ときに行われる処理)について説明する。
【0183】ビヘイビアスケジューラでは、まず最初
に、ステップS11において、自身のテーブルに、ビヘ
イビアが登録されているかどうかが判定され、登録され
ていないと判定された場合、処理を終了する。また、ス
テップS11において、テーブルに、ビヘイビアが登録
されていると判定された場合、ステップS12に進み、
テーブルに登録されているビヘイビアの中に、制約条件
に合致するものがあるかどうかが判定される。ステップ
S12において、テーブルに登録されているビヘイビア
の中に、制約条件に合致するものがないと判定された場
合、即ち、テーブルに登録されているビヘイビアの中
に、いまのタイミングで実行すべきものがない場合、処
理を終了する。また、ステップS12において、テーブ
ルに登録されているビヘイビアの中に、制約条件に合致
するものがあると判定された場合、即ち、テーブルに登
録されているビヘイビアの中に、いまのタイミングで実
行すべきものがある場合、ステップS13に進み、その
実行すべきビヘイビアが、子ビヘイビアを有するかどう
かが判定される。
【0184】ステップS13において、実行すべきビヘ
イビアが子ビヘイビアを有すると判定された場合、ステ
ップS14に進み、その子ビヘイビアをタイムスケジュ
ーリングする子ビヘイビアスケジューラによるスケジュ
ール処理が行われ、ステップS15に進む。即ち、ステ
ップS14では、子ビヘイビアスケジューラにおいて、
図20のフローチャートにしたがった処理と同様の処理
が行われる。
【0185】一方、ステップS13において、実行すべ
きビヘイビアが子ビヘイビアを有しないと判定された場
合、ステップS14をスキップして、ステップS15に
進み、そのビヘイビアのメソッド(アクタが有するデー
タを操作するメソッド)がコールされ、処理を終了す
る。
【0186】ここで、図21のフローチャートを参照し
て、図20のステップS15において、ビヘイビアスケ
ジューラによって、ビヘイビアのメソッドがコールされ
たときに行われる、そのビヘイビアの処理について説明
する。
【0187】ビヘイビアでは、まず最初に、ステップS
21において、操作対象のアクタから、そのアクタの振
舞を決めるデータが取得され、ステップS22に進み、
そのデータに対して、所定の処理が施され、ステップS
23に進む。ステップS23では、ステップS22で所
定の処理を施されたデータが、元のアクタに設定され、
処理を終了する。これにより、所定の処理を施されたデ
ータが設定されたアクタでは、そのデータにしたがい、
例えば、表示色を変更したり、移動したりするなどの所
定の動作が行われる。なお、アクタは、振舞を決めるデ
ータが設定されただけでは動作せず、EPGの振舞制御
処理に割り当てられたスレッドにおいて、例えば、リド
ロウ(redraw)などの、設定されたデータに対応する動
作を行うように指示するメソッドがコールされることに
より、実際に動作する。
【0188】次に、図22のフローチャートを参照し
て、スケジューラのうちのシーンスケジューラの処理
(シーンスケジューラのメソッドがコールされたときに
行われる処理)について説明する。
【0189】シーンスケジューラでは、まず最初に、ス
テップS31において、自身のテーブルに、子シーン
(サブシーン)が登録されているかどうかが判定され、
登録されていないと判定された場合、処理を終了する。
また、ステップS31において、テーブルに、子シーン
が登録されていると判定された場合、ステップS32に
進み、テーブルに登録されている子シーンの中に、制約
条件に合致するものがあるかどうかが判定される。ステ
ップS32において、テーブルに登録されている子シー
ンの中に、制約条件に合致するものがないと判定された
場合、即ち、テーブルに登録されている子シーンの中
に、いまのタイミングで実行すべきものがない場合、処
理を終了する。また、ステップS32において、テーブ
ルに登録されている子シーンの中に、制約条件に合致す
るものがあると判定された場合、即ち、テーブルに登録
されている子シーンの中に、いまのタイミングで実行す
べきものがある場合、ステップS33に進み、その実行
すべき子シーンが実行され、処理を終了する。
【0190】次に、図23は、構築処理により構成さ
れ、振舞制御処理によりその振舞が制御される実際のE
PGの例を示している。
【0191】この実施の形態では、EPGは、13のア
クタact1乃至act13で構成されている。アクタ
act1は、EPGの背景を構成しており、アクタac
t2は、所定のイメージを構成している。アクタact
3は、アクタact2上を、右から左方向にスクロール
するテキストで、その内容は、ボタンとしてのアクタa
ct4乃至act7のうちの、カーソルとしてのアクタ
act12によって選択されていないものについての説
明になっている。即ち、図23の実施の形態では、ボタ
ンとしてのアクタact4乃至act7のうち、アクタ
act4が選択されており、従って、テキストであるア
クタact3の内容は、アクタact5乃至act7の
説明になっている。
【0192】アクタact4乃至act7は、番組のカ
テゴリを選択するためのボタンで、図23の実施の形態
では、それぞれ、野球番組、陸上番組、オートレース番
組、バスケットボール番組を選択するためのボタンにな
っている。
【0193】アクタact8は、カーソルとしてのアク
タact12によって選択されているカテゴリの番組の
うちの1の番組のリアルタイム画像の縮小画面で、アク
タact9は、その番組を説明するテキストを表示する
画面である。また、アクタact10は、カーソルとし
てのアクタact12によって選択されているカテゴリ
の番組のうちの、他の1の番組のリアルタイム画像の縮
小画面で、アクタact11は、その番組を説明するテ
キストを表示する画面である。
【0194】なお、番組のリアルタイム画像の縮小画面
と、その番組を説明するテキストとの組は、カーソルと
してのアクタact12によって選択されているカテゴ
リに分類される放送番組に対応するだけ表示されるよう
になされている。従って、図23の実施の形態では、野
球番組が2つ放送されている。
【0195】また、番組を説明するテキストを表示する
画面としてのアクタact9およびact11では、そ
のテキストが、例えば、下から上方向に、いわゆる巡回
スクロールして表示されるようになされている。
【0196】アクタact12は、ボタンとしてのアク
タact4乃至act7を選択するための枠状のカーソ
ルで、アクタact13は、番組のリアルタイム画像の
縮小画面と、その番組を説明するテキストとの組であ
る、アクタact8およびact9や、act10およ
びact11を選択するための枠状のカーソルである。
図23の実施の形態では、カーソルであるアクタact
13によって、番組のリアルタイム画像の縮小画面と、
その番組を説明するテキストとの組を選択し、その選択
を確定すると、その番組の画面が、アクタact2乃至
act13に代えて、アクタact1上に表示されるよ
うになされている。
【0197】図23のEPGは、上述したように、構築
処理により構成され、振舞制御処理によりその振舞が制
御されるため、このEPGには、例えば、動的なレイア
ウトをとらせるなどの、動的な振舞をさせることができ
る。即ち、例えば、構築処理において取得する、アクタ
act8乃至act11の振舞としての表示位置や大き
さその他のレイアウトを決めるデータを操作するビヘイ
ビアを変更することで、番組のリアルタイム画像の縮小
画面と、その番組を説明するテキストとの組の数を増減
させたり、また、その大きさや表示位置を変更すること
ができる。さらに、例えば、構築処理において取得す
る、アクタact9やact11の振舞を決めるデータ
を操作するビヘイビアを変更することで、アクタact
9やact11におけるテキストのスクロールの仕方を
変更することができる。
【0198】以上のように、シーンが、階層構造に構成
され、そのシーンの下位階層のシーンである子シーンを
タイムスケジューリングするシーンスケジューラを有す
るので、振舞がタイムドリブンで制御されるマルチメデ
ィアコンテンツやアプリケーションプログラムなどの構
築物の構成や振舞を、そのようなシーン単位で、容易に
変更することが可能となる。
【0199】さらに、構築処理と組み合わせることで、
シーンの実行中に、即ち、動的に、シーン単位で、構築
物の構成や振舞を変更することが可能となる。即ち、シ
ーンの実行中に、構築処理によって、新たなシーン(シ
ーンを構成するオブジェクト)を取得して参照関係を構
築し、その新たなシーンを実行することで、動的に、構
築物の構成や振舞を変更することが可能となる。これに
より、構築物を、1つのストーリ(物語)とすれば、そ
のストーリを構成する一部または全部のシーンの変更
を、動的に行うことが可能となる。
【0200】また、シーンを階層構造にすることで、階
層化したストーリの提供が可能となる。
【0201】さらに、シーン間の関係の記述も、容易に
行うことが可能となる。
【0202】また、構築処理によれば、実行の終了した
シーンの使い回しが可能となり、そのようなシーンを含
む構築物を構成することが可能となる。
【0203】さらに、自身の振舞を決めるデータを有す
るオブジェクト(アクタ)と、そのデータを操作するオ
ブジェクト(ビヘイビア)とを、別個に構成するように
したので、ビヘイビアを変更するだけで、アクタを作り
直すことなく、その振舞を変更することが可能となる。
【0204】また、アクタを異なるものに変更するだけ
で、その異なるアクタに、変更前のアクタと同一の動作
をさせることができる。即ち、振舞は同一であるが、ア
クタの異なるシーンを、容易に構成することができる。
【0205】さらに、ビヘイビアを組み合わせること
で、複雑な振舞を実現することができるようになる。
【0206】また、ビヘイビアの組合せが可能であるこ
とから、ビヘイビアを幾つか追加するだけでも、アクタ
の振舞のバリエーションを豊富にすることができる。
【0207】さらに、オブジェクトに、自身の振舞を決
めるデータと、そのデータを操作するメソッドとの両方
を所有させる場合に比較して、個々のオブジェクトを小
型に構成することが可能となる。
【0208】また、ビヘイビア、さらには、階層構造に
されたビヘイビア群を集めてライブラリ化することが可
能となる。
【0209】さらに、異なるアクタに、同一の動作をさ
せるには、同一のビヘイビアを用いれば良く、異なるビ
ヘイビアを用意する必要がなくなる。
【0210】また、ビヘイビアにアクタが有するデータ
を操作させるためのインターフェイス(操作インターフ
ェイス)を規定し、ビヘイビアには、この操作インター
フェイスを利用してデータを操作せるようにしたので、
ビヘイビアは、操作インターフェイスを実装しているア
クタについては、ビヘイビアによって、その振舞を制御
することができる。
【0211】さらに、オブジェクトのタイムスケジュー
リングを行うオブジェクト(スケジューラ)を別に構成
するようにしたので、多くのオブジェクトのタイムスケ
ジューリングを、容易に行うことが可能となる。
【0212】また、アクタやビヘイビアでは、時刻の管
理をする必要がなくなる。
【0213】なお、本実施の形態では、被構築オブジェ
クト(アクタ、ビヘイビア、スケジューラ)が、ネット
ワーク上に分散している場合、即ち、場所的に分散して
いる場合を例に説明したが、本発明は、被構築オブジェ
クトが時間的に分散している場合にも適用可能である。
さらに、本発明は、被構築オブジェクトが分散している
場合だけでなく、ある1カ所(例えば、図2におけるS
TB4のハードディスク17など)に集中している場合
にも適用可能である。
【0214】また、本実施の形態では、構築プログラム
および振舞制御プログラムが、あらかじめ、STB4の
ハードディスク17に記憶されているものとしたが、構
築プログラムおよび振舞制御プログラムは、必要なとき
に、必要な構築物を構成し、その構築物に所望の振舞を
させるためのものを、インターネット6から入手するよ
うにすることが可能である。
【0215】さらに、本実施の形態では、本発明を、E
PGの構築および振舞制御に適用した場合について説明
したが、本発明は、EPG以外のマルチメディアコンテ
ンツや、アプリケーションプログラムその他のデータに
も適用可能である。
【0216】また、本実施の形態では、構築プログラム
や、振舞制御プログラム、被構築オブジェクトを、Java
言語で記述するようにしたが、本発明は、その他のコン
ピュータ言語を用いることも可能である。但し、Java
や、C++、smalltalkなどの、いわゆるオブジェクト
指向言語を用いる方が好ましい。
【0217】
【発明の効果】請求項1に記載の情報処理装置および請
求項5に記載の情報処理方法、並びに請求項6に記載の
記録媒体によれば、階層構造に構成されているシーンが
有する子シーンスケジューリングオブジェクトにおい
て、子シーンがタイムスケジューリングされる。従っ
て、シーンで構成される構築物を、振舞がタイムドリブ
ンで制御されるシーン単位で変更することが可能とな
る。
【図面の簡単な説明】
【図1】本発明を適用した放送システムの一実施の形態
の構成例を示す図である。
【図2】図1のSTB4の構成例を示すブロック図であ
る。
【図3】EPGを示す図である。
【図4】図3のEPGを構成する各部品がネットワーク
上に分散している様子を示す図である。
【図5】取得クラスと構築クラスとの関係を示す図であ
る。
【図6】図5を説明するための図である。
【図7】取得クラスのサブクラスを示す図である。
【図8】構築クラスのサブクラスを示す図である。
【図9】登録クラスを示す図である。
【図10】登録クラスの役割を説明するための図であ
る。
【図11】構築処理を説明するためのフローチャートで
ある。
【図12】構築処理によって構築される構築物を構成す
る被構築オブジェクトどうしの参照関係を示す図であ
る。
【図13】図12の構築物を構成するのに必要な取得オ
ブジェクトと構築オブジェクトを示す図である。
【図14】図12の構築物を構成するのに必要な取得オ
ブジェクトと構築オブジェクトとの関係を示す図であ
る。
【図15】1以上のシーンで構成されるEPGを示す図
である。
【図16】図15のEPGを構成するシーンの再生を説
明するための図である。
【図17】ビヘイビアの階層構造を説明するための図で
ある。
【図18】階層構造にされたビヘイビアによって制御さ
れたアクタの振舞を示す図である。
【図19】ディレクタ(シナリオ)の処理を説明するた
めのフローチャートである。
【図20】ビヘイビアスケジューラの処理を説明するた
めのフローチャートである。
【図21】ビヘイビアの処理を説明するためのフローチ
ャートである。
【図22】シーンスケジューラの処理を説明するための
フローチャートである。
【図23】EPGを示す、ディスプレイ上に表示される
中間調画像の写真である。
【符号の説明】
1 放送局, 2 衛星, 3 アンテナ, 4 ST
B, 5 CRT,6 インターネット, 7 サー
バ, 11 通信I/F, 12 受信処理部, 13
ROM, 14 CPU, 15 RAM, 16
表示制御部,17 ハードディスク, 18 CD−R
OM, 19 操作部

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 1以上のシーンで構成される構築物の振
    舞をタイムドリブンで制御する処理を行う情報処理装置
    であって、 前記シーンは、階層構造に構成され、そのシーンの下位
    階層のシーンである子シーンをタイムスケジューリング
    するオブジェクトである子シーンスケジューリングオブ
    ジェクトを有することを特徴とする情報処理装置。
  2. 【請求項2】 前記シーンは、 自身の振舞を決めるデータを有するオブジェクトである
    データホルダオブジェクトと、 前記データホルダオブジェクトが有するデータを操作す
    るオブジェクトであるデータ操作オブジェクトを有し、
    そのデータ操作オブジェクトをタイムスケジューリング
    するオブジェクトであるデータ操作オブジェクトスケジ
    ューリングオブジェクトとをさらに有し、 前記データ操作オブジェクトが、前記データ操作オブジ
    ェクトスケジューリングオブジェクトによるタイムスケ
    ジューリングにしたがい、前記データホルダオブジェク
    トのデータを操作することにより、そのデータホルダオ
    ブジェクトの振舞を制御することを特徴とする請求項1
    に記載の情報処理装置。
  3. 【請求項3】 所定の前記データ操作オブジェクトスケ
    ジューリングオブジェクトを親データ操作オブジェクト
    スケジューリングオブジェクトとして、その親データ操
    作オブジェクトスケジューリングオブジェクトが有する
    前記データ操作オブジェクトが、前記親データ操作オブ
    ジェクトスケジューリングオブジェクトに従属する前記
    データ操作オブジェクトスケジューリングオブジェクト
    である子データ操作オブジェクトスケジューリングオブ
    ジェクトを有し、 前記親データ操作オブジェクトスケジューリングオブジ
    ェクトが有する前記データ操作オブジェクト、および前
    記子データ操作オブジェクトスケジューリングオブジェ
    クトが有する前記データ操作オブジェクトの両方が、前
    記データホルダオブジェクトのデータを操作することに
    より、そのデータホルダオブジェクトの振舞を制御する
    ことを特徴とする請求項2に記載の情報処理装置。
  4. 【請求項4】 前記シーンを構成する前記データホルダ
    オブジェクト、データ操作オブジェクト、およびデータ
    操作オブジェクトスケジューリングオブジェクトを被構
    築オブジェクトとする場合において、 前記被構築オブジェクトが、自身のフィールドを設定す
    ることにより、その初期化を行うフィールド設定メソッ
    ドを有するときに、そのフィールド設定メソッドをコー
    ルして、前記被構築オブジェクト間の参照関係を構築す
    る構築メソッドを有する構築オブジェクトと、 前記被構築オブジェクトを取得する取得メソッドを有す
    る、前記構築オブジェクトの所有が可能な取得オブジェ
    クトとを備え、 前記取得オブジェクトが、前記取得メソッドによって前
    記被構築オブジェクトを取得し、 その取得オブジェクトが所有する前記構築オブジェクト
    が、前記構築メソッドによって、前記取得オブジェクト
    が取得した前記被構築オブジェクトを初期化することに
    より、前記シーンを構成することを特徴とする請求項2
    に記載の情報処理装置。
  5. 【請求項5】 1以上のシーンで構成される構築物の振
    舞をタイムドリブンで制御する処理を行う情報処理方法
    であって、 前記シーンが、階層構造に構成され、そのシーンの下位
    階層のシーンである子シーンをタイムスケジューリング
    するオブジェクトである子シーンスケジューリングオブ
    ジェクトを有している場合に、 前記子シーンスケジューリングオブジェクトに、前記子
    シーンをタイムスケジューリングさせることを特徴とす
    る情報処理方法。
  6. 【請求項6】 コンピュータに実行させるコンピュータ
    プログラムが記録されている記録媒体において、 1以上のシーンで構成される構築物の振舞をタイムドリ
    ブンで制御する処理を、前記コンピュータに行わせるた
    めのコンピュータプログラムであって、 前記シーンが、階層構造に構成され、そのシーンの下位
    階層のシーンである子シーンをタイムスケジューリング
    するオブジェクトである子シーンスケジューリングオブ
    ジェクトを有している場合に、 前記子シーンスケジューリングオブジェクトに、前記子
    シーンをタイムスケジューリングさせる処理を行わせる
    ためのコンピュータプログラムが記録されていることを
    特徴とする記録媒体。
JP34902897A 1997-12-18 1997-12-18 情報処理装置および情報処理方法、並びに記録媒体 Pending JPH11184860A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP34902897A JPH11184860A (ja) 1997-12-18 1997-12-18 情報処理装置および情報処理方法、並びに記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP34902897A JPH11184860A (ja) 1997-12-18 1997-12-18 情報処理装置および情報処理方法、並びに記録媒体

Publications (1)

Publication Number Publication Date
JPH11184860A true JPH11184860A (ja) 1999-07-09

Family

ID=18401009

Family Applications (1)

Application Number Title Priority Date Filing Date
JP34902897A Pending JPH11184860A (ja) 1997-12-18 1997-12-18 情報処理装置および情報処理方法、並びに記録媒体

Country Status (1)

Country Link
JP (1) JPH11184860A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001024048A1 (en) * 1999-09-30 2001-04-05 Koninklijke Philips Electronics N.V. Video tape hierarchical indexing system
JP2006236328A (ja) * 2005-02-24 2006-09-07 Microsoft Corp ファイルシステムアイテムおよび関連エンティティのシリアライゼーション

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001024048A1 (en) * 1999-09-30 2001-04-05 Koninklijke Philips Electronics N.V. Video tape hierarchical indexing system
JP2006236328A (ja) * 2005-02-24 2006-09-07 Microsoft Corp ファイルシステムアイテムおよび関連エンティティのシリアライゼーション

Similar Documents

Publication Publication Date Title
US8589871B2 (en) Metadata plug-in application programming interface
US5680619A (en) Hierarchical encapsulation of instantiated objects in a multimedia authoring system
JP5123169B2 (ja) 対話型ユーザインターフェイスのためのアプリケーションおよび相補的機能の登録
Smith et al. Android recipes: a problem-solution approach
WO2021189697A1 (zh) 视频展示方法、终端及服务器
KR20080057187A (ko) 복수 개의 스크린 설정을 위한 멀티스크린 관리 방법 및장치
KR100975457B1 (ko) Gui 어플리케이션 개발 지원 장치, gui 어플리케이션 프로그램 생성 방법 및 컴퓨터 판독가능한 기록매체
KR20010080210A (ko) 구성 가능한 기능을 갖는 텔레비전 셋톱박스
GB2374777A (en) Defining parameters as locked or unlocked and setting access levels accordingly
CN113891113A (zh) 视频剪辑合成方法及电子设备
CN113038160B (zh) 一种显示设备及音视频数据的播放方法
CN101365082A (zh) 一种基于对等计算技术机顶盒在屏显示系统的实现方法
US20060059458A1 (en) Creating software applications
CN112380420A (zh) 一种搜索方法及显示设备
US20080126938A1 (en) Customizing application page loading in a discovery interface
Weaver et al. Pro JavaFX 2: A Definitive Guide to Rich Clients with Java Technology
Weaver et al. Pro javafx 8: a definitive guide to building desktop, mobile, and embedded java clients
JPH11184860A (ja) 情報処理装置および情報処理方法、並びに記録媒体
JPH11184859A (ja) 情報処理装置および情報処理方法、並びに記録媒体
CN114915810B (zh) 一种媒资推送方法及智能终端
Pravin et al. Set top box system with android support using Embedded Linux operating systempaper
KR100717175B1 (ko) 데이터 방송 애플리케이션 저작 시스템 및 그 방법,저작툴, 컴포넌트 개발 에디터, 컴포넌트 생성방법 및 방법프로그램을 기록한 저장매체
CN114915818B (zh) 一种媒资推送方法及智能终端
Williams Xamarin Blueprints
US20240020135A1 (en) System and method for generating customized user interface with multi-application functionality

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040426

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070118

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070319

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070830