JP2016076224A - コンテンツ表示装置、コンテンツ表示システム、データ構造、コンテンツ表示方法及びコンテンツ表示プログラム - Google Patents

コンテンツ表示装置、コンテンツ表示システム、データ構造、コンテンツ表示方法及びコンテンツ表示プログラム Download PDF

Info

Publication number
JP2016076224A
JP2016076224A JP2015203914A JP2015203914A JP2016076224A JP 2016076224 A JP2016076224 A JP 2016076224A JP 2015203914 A JP2015203914 A JP 2015203914A JP 2015203914 A JP2015203914 A JP 2015203914A JP 2016076224 A JP2016076224 A JP 2016076224A
Authority
JP
Japan
Prior art keywords
child
content
browser
child browser
tree
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.)
Granted
Application number
JP2015203914A
Other languages
English (en)
Other versions
JP6068592B2 (ja
Inventor
清 田中
Kiyoshi Tanaka
清 田中
泰彦 宮崎
Yasuhiko Miyazaki
泰彦 宮崎
徹郎 徳永
Tetsuo Tokunaga
徹郎 徳永
睦裕 中茂
Mutsuhiro Nakashige
睦裕 中茂
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Publication of JP2016076224A publication Critical patent/JP2016076224A/ja
Application granted granted Critical
Publication of JP6068592B2 publication Critical patent/JP6068592B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9577Optimising the visualization of content, e.g. distillation of HTML documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/954Navigation, e.g. using categorised browsing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Software Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

【課題】デジタルコンテンツデータを分割して複数のデバイスで表示するコンテンツ表示装置、コンテンツ表示システム、データ構造、コンテンツ表示方法及びコンテンツ表示プログラムを提供する。【解決手段】コンテンツ表示方法であって、コンテンツ表示装置1のコンテンツ取得部11が、スクリプトを含む木構造データに展開可能なコンテンツデータを取得する取得ステップと、複数の子ブラウザのうちの何れか1つである第1子ブラウザ2A又は2Bが、木構造データの一部である部分木に基づくデジタルコンテンツを表示する第1表示ステップと、部分木に基づくデジタルコンテンツを第1子ブラウザが表示しなくなるのを契機に、複数の子ブラウザのうちの第1子ブラウザとは異なる第2子ブラウザが、取得ステップで取得したコンテンツデータの木構造データを用いて、部分木に基づくデジタルコンテンツを表示する第2表示ステップと、を有する。【選択図】図1

Description

本発明は、デジタルコンテンツを複数のデバイスで連携して表示する技術に関する。
近年、通信ネットワークを通じた情報提供の技術は、Webテクノロジと呼ばれる一連の技術により大きく進化している。Webテクノロジによる情報提供では、デジタル化されたコンテンツがHTML(Hyper Text Markup Language)と呼ばれる形式で通信ネットワークを介して配信され、Webブラウザと呼ばれるソフトウェアにより利用者に対して表示され、利用者の操作を受け付ける。Webブラウザは主に次に述べる動作を行なっている。
1.HTMLデータをDOM(Document Object Model)形式と呼ばれる木構造データに変換する。
2.CSS(Cascading Style Sheets)データに基づいて、各DOM内のエレメントに対して表示デザインを適用して画面上に表示する。
3.JavaScript(登録商標)と呼ばれる(ECMAscriptとも呼ばれる)スクリプト言語により、初期表示時および各種イベント発生時(ユーザによるポインタ操作、キーボード入力、ボタンなどのDOM上のエレメントクリック、タイマー、非同期通信受信など)に、動的にDOM操作(エレメントの生成/削除/移動、属性の設定/参照、プロパティの設定/参照、メソッドの呼出など)を行うことにより、利用者とのインタラクションや画面の動的な変更を行う。
このように、HTMLデータ、JavaScriptコード、およびCSSデータが一体となってデジタルコンテンツデータを構成している。
Webテクノロジは情報提供技術として非常に多く実施されており、Webテクノロジをより使いやすくするためのライブラリやツールは幅広く知られている。例えば、jQueryとして公開されているライブラリを利用することで、DOM操作処理や、イベントに対する処理の設定を行うためのJavaScriptを簡易に実装することが可能となっている。
また、Webテクノロジを用いて複数のデバイスにデジタルコンテンツを配信する技術が開発されている。例えば、非特許文献1には、テレビ受像機とタブレット端末でWebブラウザを動作させ、テレビ受像機に表示される映像コンテンツに連動させて、タブレット端末に関連コンテンツを提示する技術が開示されている。図34を用いてWebブラウザを連携させる技術について説明する。テレビ受像機上で動作するWebブラウザ100Aに動画を再生するvideoエレメントを含むHTMLデータを配信し、タブレット端末上で動作するWebブラウザ100Bに関連情報を表示するエレメントを含むHTMLデータを配信する。Webブラウザ100A,100Bそれぞれに配信するHTMLデータに、WebSocketサーバ200を介して必要な情報を通信するためのJavaScriptを用意する。Webブラウザ100Aが再生される動画に合わせて動画に埋め込まれたメタデータをWebSocketサーバ200に送信し、WebSocketサーバ200が受信したメタデータに関連する情報をWebブラウザ100Bに送信して、Webブラウザ100Bに再生される動画に関連した情報が表示される。
茂木、他2名、「TVコンテンツとライフログ情報の連携を考慮したセカンドスクリーンの検討」、信学技報、社団法人電子情報通信学会、2011年7月、LOIS2011-9、pp.1-5
従来の方法で複数のデバイスを連携させたデジタルコンテンツを配信するためには、HTMLデータやJavaScriptなどのデジタルコンテンツデータをデバイスごとに作成する必要があり、情報提供者にとって負担となるという問題があった。図34の例では、動画を再生するWebブラウザ100A用のデジタルコンテンツデータと動画に関連した情報を受信して表示するWebブラウザ100B用のデジタルコンテンツデータを別々に用意する必要がある。デジタルコンテンツデータが複数になるとJavaScriptの実行空間が異なるため、JavaScriptは別のデジタルコンテンツデータに含まれるHTMLデータのエレメントを容易に参照することができなくなる。このように、複数のデバイスを連携させるデジタルコンテンツを提供する場合は、概念的には1つのデジタルコンテンツであったとしても、デバイスごとにデジタルコンテンツデータを分けて用意する必要が生じ、さらにデバイス間の連携手段を考慮しなければならないという問題があった。一方、通常のWebブラウザなど1つのデバイスで利用するデジタルコンテンツを提供する場合は、デジタルコンテンツデータを1つだけ用意すればよく、従来のライブラリやツールなどを利用できる。
本発明は、上記に鑑みてなされたものであり、デジタルコンテンツデータを分割して複数のデバイスで表示させることを目的とする。
第1の本発明に係るコンテンツ表示装置は、デジタルコンテンツを複数の子ブラウザに表示させるコンテンツ表示装置であって、スクリプトを含むコンテンツデータを取得するコンテンツ取得手段と、前記コンテンツデータを木構造データに展開して記憶する記憶手段と、前記木構造データから前記複数の子ブラウザそれぞれに表示させるデジタルコンテンツの一部に対応する部分木を判定して対応する子ブラウザに送信する判定手段と、前記スクリプトを実行する実行手段と、前記実行手段が前記木構造データにアクセスする処理を実行する場合に、当該処理をアクセス対象の部分木を保持する子ブラウザに通知して当該子ブラウザに処理を行わせ、前記子ブラウザからイベントの発生通知を受信した場合に、当該イベントに対応する処理を前記実行手段に実行させるアクセス手段と、前記子ブラウザと通信する通信手段と、を有することを特徴とする。
第2の本発明に係るコンテンツ表示システムは、コンテンツ表示装置がデジタルコンテンツを複数の子ブラウザにして表示させるコンテンツ表示システムであって、前記コンテンツ表示装置は、スクリプトを含むコンテンツデータを取得するコンテンツ取得手段と、前記コンテンツデータを木構造データに展開して記憶する記憶手段と、前記木構造データから前記複数の子ブラウザそれぞれに表示させるデジタルコンテンツの一部に対応する部分木を判定して対応する子ブラウザに送信する判定手段と、前記スクリプトを実行する実行手段と、前記実行手段が前記木構造データにアクセスする処理を実行する場合に、当該処理をアクセス対象の部分木を保持する子ブラウザに通知して当該子ブラウザに処理を行わせ、前記子ブラウザからイベントの発生通知を受信した場合に、当該イベントに対応する処理を前記実行手段に実行させるアクセス手段と、前記子ブラウザと通信する通信手段と、を有し、前記子ブラウザは、前記部分木を受信して記憶する記憶手段と、前記部分木に基づいて画面を表示し、操作を受け付ける表示手段と、前記コンテンツ表示装置から前記通知を受信し、当該通知に基づいて前記部分木にアクセスする受信手段と、前記部分木でイベントが発生した場合に、当該イベントの発生通知を前記コンテンツ表示装置に通知する通知手段と、を有することを特徴とする。
第3の本発明に係るデータ構造は、デジタルコンテンツを複数の子ブラウザに表示させるコンテンツ表示装置が取得するコンテンツデータのデータ構造であって、デジタルコンテンツを構成するエレメントが木構造で配置され、前記複数の子ブラウザそれぞれに送信する部分木のルートとなるエレメントに前記子ブラウザに対応する属性値が設定されていることを特徴とする。
第4の本発明に係るコンテンツ表示方法は、デジタルコンテンツを複数の子ブラウザに表示させるコンテンツ表示方法であって、スクリプトを含むコンテンツデータを取得するステップと、前記コンテンツデータを木構造データに展開して記憶するステップと、前記木構造データから前記複数の子ブラウザそれぞれに表示させるデジタルコンテンツの一部に対応する部分木を判定して対応する子ブラウザに送信するステップと、前記スクリプトを実行するステップと、前記スクリプトを実行するステップで前記木構造データにアクセスする処理を実行する場合に、当該処理をアクセス対象の部分木を保持する子ブラウザに通知して当該子ブラウザに処理を行わせるステップと前記子ブラウザからイベントの発生通知を受信した場合に、当該イベントに対応する処理を実行するステップと、前記子ブラウザと通信するステップと、を有することを特徴とする。
第5の本発明に係るコンテンツ表示方法は、コンテンツ表示装置がデジタルコンテンツを複数の子ブラウザに表示させるコンテンツ表示方法であって、前記コンテンツ表示装置による、スクリプトを含むコンテンツデータを取得するステップと、前記コンテンツデータを木構造データに展開して記憶するステップと、前記木構造データから前記複数の子ブラウザそれぞれに表示させるデジタルコンテンツの一部に対応する部分木を判定して対応する子ブラウザに送信するステップと、前記スクリプトを実行するステップと、前記スクリプトを実行するステップで前記木構造データにアクセスする処理を実行する場合に、当該処理をアクセス対象の部分木を保持する子ブラウザに通知して当該子ブラウザに処理を行わせるステップと、前記子ブラウザからイベントの発生通知を受信した場合に、当該イベントに対応する処理を実行するステップと、前記子ブラウザと通信するステップと、を有し、前記子ブラウザによる、前記部分木を受信して記憶するステップと、前記部分木に基づいて画面を表示し、操作を受け付けるステップと、前記コンテンツ表示装置から前記通知を受信し、当該通知に基づいて前記部分木にアクセスするステップと、前記部分木でイベントが発生した場合に、当該イベントの発生通知を前記コンテンツ表示装置に通知するステップと、を有することを特徴とする。
第6の本発明に係るコンテンツ表示プログラムは、上記コンテンツ表示装置あるいは子ブラウザとしてコンピュータを動作させることを特徴とする。
本発明によれば、デジタルコンテンツデータを分割して複数のデバイスで表示させることができる。
第1の実施の形態におけるコンテンツ表示装置を含む全体構成図である。 上記コンテンツ表示装置が取得するHTMLデータの例を示す図である。 上記コンテンツ表示装置が取得するJavaScriptコードの例を示す図である。 上記デジタルコンテンツを単一のブラウザで表示した例を示す図である。 上記HTMLデータを変換したDOMの木構造を示す図である。 上記DOMで子ブラウザそれぞれに送信する部分木を示す図である。 上記の部分木の表示例を示す図である。 上記の別の部分木の表示例を示す図である。 上記DOMにコールバックを登録した様子を示す図である。 コンテンツ表示装置に表示部を備えたブラウザを含む全体構成図である。 第2の実施の形態におけるコンテンツ表示装置が取得するHTMLデータの例を示す図である。 上記HTMLデータを変換したDOMの木構造を示す図である。 上記の部分木の表示例を示す図である。 上記の別の部分木の表示例を示す図である。 変更後のHTMLデータを示す図である。 変更後のHTMLデータを変換したDOMの木構造を示す図である。 変更後の部分木の表示例を示す図である。 変更後の別の部分木の表示例を示す図である。 第3の実施の形態におけるコンテンツ表示装置が取得するHTMLデータの例を示す図である。 上記HTMLデータを変換したDOMの木構造を示す図である。 上記の部分木の表示例を示す図である。 上記の別の部分木の表示例を示す図である。 別の子ブラウザが通信可能となった様子を示す図である。 上記のDOMを3つの子ブラウザに割り当てた様子を示す図である。 上記の部分木の表示例を示す図である。 上記の別の部分木の表示例を示す図である。 上記のさらに別の部分木の表示例を示す図である。 第4の実施の形態におけるコンテンツ表示装置が上記のDOMを3つの子ブラウザに割り当てた様子を示す図である。 上記の部分木の表示例を示す図である。 上記の別の部分木の表示例を示す図である。 上記のさらに別の部分木の表示例を示す図である。 DOMのエレメントが備える配列を説明する図である。 第5の実施の形態におけるコンテンツ表示装置がエレメントから返却値を取得する処理の流れを示すフローチャートである。 従来のWebブラウザを連携させる技術を説明する図である。
[第1の実施の形態]
以下、第1の実施の形態について図面を用いて説明する。
図1は、本実施の形態におけるコンテンツ表示装置を含む全体構成図である。コンテンツ表示装置1は、Webサーバからデジタルコンテンツデータを取得し、取得したデジタルコンテンツデータを分割して子ブラウザ2A,2Bそれぞれに送信し、子ブラウザ2A,2Bそれぞれにデジタルコンテンツの一部を表示させる。同図に示すコンテンツ表示装置1は、コンテンツ取得部11、DOM記憶部12、子ブラウザ判定部13、アプリケーションスクリプト実行部14、DOMアクセス部15、および子ブラウザ通信部16を備える。コンテンツ表示装置1が備える各部は、演算処理装置、記憶装置等を備えたコンピュータにより構成して、各部の処理がプログラムによって実行されるものとしてもよい。このプログラムはコンテンツ表示装置1が備える記憶装置に記憶されており、磁気ディスク、光ディスク、半導体メモリ等の記録媒体に記録することも、ネットワークを通して提供することも可能である。以下、コンテンツ表示装置1の各部について説明する。
コンテンツ取得部11は、Webサーバに接続し、HTTP等の公知のプロトコルによって、デジタルコンテンツデータをダウンロードする。デジタルコンテンツデータは、後述するDOM記憶部12の処理によってツリー状のデータ構造に展開可能なものであれば形式は問わない。また、本発明で扱うデジタルコンテンツデータは、元来1つのデバイス(または1つのブラウザ)で利用することを意図した形式で作成されたデジタルコンテンツデータであってもよい。デジタルコンテンツデータをHTMLで作成する場合、デジタルコンテンツデータは、例えば、HTMLデータ、JavaScriptコード、およびCSSデータを含み、これらのデータが一体となってデジタルコンテンツを構成する。HTMLデータの中にJavaScriptコード,CSSデータが記載されている場合もあるが、別のファイルが指定されて他のデータソースから取得されることもある。例えば、<link rel="stylesheet" href="style.css" type="text/css">というようなlinkタグでデータソースを指定するものや、<script type="text/javascript" src="script.js"></script>というようなsrc属性でデータソースを指定するものがある。別のファイルが指定されている場合は、これらを含めて取得する。コンテンツ取得部11により取得されたデジタルコンテンツデータのうち、scriptタグにより指定されるJavaScriptコードはアプリケーションスクリプト実行部14に送られ、その他のデータはDOM記憶部12に送られる。
図2にHTMLデータの例、図3にJavaScriptコードの例を示し、図4に図2,3のデジタルコンテンツを単一のブラウザで表示した例を示す。図2,3が示すデジタルコンテンツは、セレクトボックスで選択された動画を表示するものである。本実施の形態におけるコンテンツ表示装置1を用いると、動画の表示、セレクトボックスの表示を子ブラウザ2A,2Bに分散させて、一方の子ブラウザ2Aでは動画を表示し、別の子ブラウザ2Bではセレクトボックスを表示して動画の選択を受け付ける。
DOM記憶部12は、コンテンツ取得部11が取得したHTMLデータを解析して、ツリー状のデータ構造であるDOMに展開して記憶する。また、DOM記憶部12はコンテンツ取得部11が取得したCSSデータも記憶する。図5に、図2のHTMLデータを変換したDOMの木構造を示す。図5中の四角い枠それぞれはDOMのエレメントを示す。
図2,5に示すように、HTMLデータの1つのタグが1つのエレメントを構成し、タグで囲われた部分が子のエレメントとなる。なお、図5では説明に必要な属性を記載し、全ての属性については記載していない。
さらに、DOM記憶部12は、DOMの全てのエレメントを一意に識別するエレメント識別機能を備える。例えば、エレメントのID属性値を使用することが可能である。ただし、HTMLデータで各エレメントにIDが必ずしも指定されているとは限らないので、ID属性値が指定されていないエレメントに対しては一意の文字列を発行して付与し、DOM記憶部12に記憶させる。あるいは、固有の属性を設け、払い出される連番を文字列化して各エレメントに付与してDOM記憶部12に記憶させてもよい。
子ブラウザ判定部13は、DOM記憶部12に記憶されたDOMから子ブラウザ2A,2Bそれぞれに表示させるデジタルコンテンツの一部に対応する部分木を判定し、そのDOMの部分木を対応する子ブラウザ2A,2Bに送信する。子ブラウザ2A,2BにDOMの部分木を送信する際にはCSSデータも送信する。本実施の形態では、子ブラウザ2A,2Bに送信する部分木を判定する方法として、HTMLデータ中に属性値を記載しておく方法を用いる。具体的には、部分木のルートとなるエレメントにdeviceという属性を設け、その属性値に基いて子ブラウザ2A,2Bに送信するDOMの部分木を特定する。部分木のルートとなるエレメントが特定できれば、ルートから木構造データをたどることにより、ルートとなるエレメントの配下のエレメントを検索し部分木を特定することは容易である。
図5に示したDOMには、deviceの属性値に“TV”,“Phone”が設定されているエレメントが存在する。よって、図6に示すように、device属性に“TV”が設定されているエレメントをルートとする部分木Aとdevice属性に“Phone”が設定されているエレメントをルートとする部分木Bが存在する。子ブラウザ2A,2Bそれぞれの属性(子ブラウザ2A,2Bの表示能力など)に基いて、これらの部分木A,Bを送信する子ブラウザ2A,2Bを判定して部分木A,Bを送信する。例えば、子ブラウザ2Aがテレビで実行されているブラウザであり、子ブラウザ2Bがタブレット端末で実行されているブラウザである場合は、部分木Aを子ブラウザ2Aに送信し、部分木Bを子ブラウザ2Bに送信する。
また、DOMの部分木のルートとなるエレメントを指定する方法としては、部分木のルートとなるエレメントと子ブラウザ識別子をパラメータとしてとるJavaScript APIを設けて設定する方法がある。なお、HTMLデータにdevice属性を設定する方法とAPIで設定する方法の両方を用いてもよい。
本実施の形態では、DOM記憶部12に記憶されたDOMのエレメントはいずれかの部分木に属する(device属性が設定されている)ことを前提としているが、device属性が設定されていないエレメントについてはいずれの子ブラウザ2A,2Bでも表示されないものとしてもよい。あるいは、特定の子ブラウザを1つ決めて、device属性が設定されていないエレメントについてはその子ブラウザで表示するようにしてもよい。
アプリケーションスクリプト実行部14は、JavaScriptコードを解釈して実行する。一般にはJavaScriptエンジンと呼ばれる公知の技術であり、OSS(Open Source Software)として広く利用可能なJavaScriptエンジンも存在する(例えば、http://code.google.com/p/v8/)。なお、本実施の形態におけるアプリケーションスクリプト実行部14は、実行されるJavaScriptコードがDOM APIを通じてDOMにアクセスする際には、後述するDOMアクセス部15を経由する。JavaScriptでは、prototypeを拡張する、という手法により、特定のオブジェクトに対するアクセス(メソッド呼出、プロパティ参照/設定、イベントリスナー設定)を独自の処理モジュールにより処理させることが可能であり、本実施の形態では、DOMへのアクセスをDOMアクセス部15で処理するようにアプリケーションスクリプト実行部14を設定した。
DOMアクセス部15は、アプリケーションスクリプト実行部14がJavaScriptコードによりDOMにアクセスする際に、アクセス対象のDOM(部分木)を保持する子ブラウザ2A,2Bに通知して子ブラウザ2A,2B自身が保持するDOMへアクセスさせ、戻り値がある場合は戻り値を受け取る。また、DOMアクセス部15は、子ブラウザ2A,2Bでイベントが発生した場合に、子ブラウザ2A,2Bからイベント発生通知を受信し、DOM記憶部12のDOMでイベントを発生させて登録されたコールバック関数を実行させる。DOMアクセス部15の構成方法としては、DOMにアクセスするDOM APIを分類し、それぞれに応じた処理を行うプログラムを本来のDOM APIを拡張するprototypeの実装とする方法がある。具体的なDOM APIの分類とそれぞれの処理内容については後述する。
子ブラウザ通信部16は、子ブラウザ2A,2Bとの間で通信を行いデータを送受信する。例えば、WebSocketとして知られている技術などを利用し、子ブラウザ通信部16をWebSocketサーバとして構築しておき、子ブラウザ2A,2Bとの間にWebSocketコネクションを確立してデータの送受信を行う。子ブラウザ2A,2Bとの間でのデータの送受信には、子ブラウザ判定部13によるDOMの部分木の送信、DOMアクセス部15による子ブラウザ2A,2BへのDOMアクセス要求、子ブラウザ2A,2Bからの戻り値の受信、および子ブラウザ2A,2Bからのイベント発生通知の受信がある。DOMの部分木の送信については、DOMの部分木をテキスト化したHTML断片データとCSSデータをパラメータとして子ブラウザ2A,2Bに送信する。DOMアクセス部15による子ブラウザへのDOMアクセス要求については、各処理について予め電文形式を決めておき、エレメントの指定などの必要な情報をパラメータとして子ブラウザに送信する。子ブラウザからの戻り値の受信は、戻り値をパラメータとして受信する。子ブラウザからのイベント発生通知の受信については、発生したイベントの種別、イベントが発生したエレメントの識別子などの必要な情報をパラメータとして受信する。
次に、子ブラウザについて説明する。
子ブラウザ2A,2Bは、受信部21、通知部22、DOM記憶部23、および表示部24を備える。
受信部21は、コンテンツ表示装置1の子ブラウザ通信部16から送信されるデータを受信し、受信したデータに応じた処理を行う。子ブラウザ通信部16がWebSocketサーバとして構築されている場合は、受信部21をWebSocketクライアントとして構築する。受信したデータに応じた処理としては、DOMの部分木のデータを受信してDOM記憶部23に記憶させる処理、DOM記憶部23に記憶させたDOMに対するアクセスに関する処理がある。
受信部21がDOMの部分木のデータ(HTML断片データとCSSデータ)を受信した場合は、DOM記憶部23を初期状態、具体的には、空のHTMLドキュメント(<html><body></body></html>のみからなるHTML)のみを記憶する状態にし、CSSデータもクリアされた状態にする。そして、受信したHTML断片データを空のHTMLドキュメントに付加してDOMを作成する。受信したCSSデータもDOM記憶部23に蓄積する。
受信部21がDOMに対するアクセスに関するデータを受信した場合は、受信したデータに基いてDOMにアクセス(DOMの変更、属性の変更・参照、プロパティの変更・参照、メソッド呼出、イベントリスナーの登録・解除など)する。DOMに対するアクセスの戻り値がある場合は戻り値をコンテンツ表示装置1に返却する。
通知部22は、DOM記憶部23のDOMで発生したイベントをコンテンツ表示装置1に通知する。コンテンツ表示装置1からイベントリスナー登録の要求を受信した際に、イベント発生通知をコンテンツ表示装置1に送信する処理を登録することで、DOM記憶部23のDOMでイベントが発生したとき、通知部22がイベント発生通知を送信する処理が起動される。
DOM記憶部23は、受信したDOMの部分木を記憶し、受信部21が受信したデータに応じてアクセスされる。また、CSSデータを記憶する。
表示部24は、DOM記憶部23に記憶されたDOMに対してCSSを適用して画面に表示し、利用者とのインタラクションを行う。
これら子ブラウザ2A,2Bの各部は一般的なWebブラウザを用いて構成できる。受信部21、通知部22についてはJavaScriptで実装して構成することができる。例えば、WebSocketクライアントを作成してコンテンツ表示装置1のWebSocketサーバへ接続する処理と、WebSocketサーバからのデータ受信時の処理としてon_receive関数を登録する処理をロード時に実行するHTMLデータ、具体的には、上記の処理をinit関数内に記載し、onloadイベントでinit関数を実行するHTMLデータを予め用意しておき、このHTMLデータを子ブラウザ2A,2Bが取得することで受信部21、通知部22を機能させることができる。on_receive関数には、コンテンツ表示装置1から受信したデータに基づくそれぞれの処理を記載して、受信部21に相当する機能を実現する。なお、on_receive関数内に記載する処理で、イベントリスナーを登録する処理については、イベントリスナーを登録する指定されたエレメント、イベント種別に対してon_event関数を登録する。on_event関数には、発生したイベント種別と自エレメントの識別子を求め、求めた値をパラメータとしたイベント発生通知をコンテンツ表示装置1に送信する処理を記載して、通知部22に相当する機能を実現する。
次に、DOMアクセス部15が処理するDOM APIを分類し、処理内容について説明する。
(1)DOMの変更(エレメントの追加・削除・移動)
DOM記憶部12のDOMに変更(エレメントの追加・削除・移動)を加える。また、対応する子ブラウザ2A,2Bに対して、追加、削除、移動するエレメントを指定し、指定したDOMの位置にエレメントを挿入、エレメントの削除、あるいはエレメントを移動させる。
(2)エレメントの属性変更(setAttribute)
DOM記憶部12のエレメントの属性を変更する。また、対応する子ブラウザ2A,2Bに対して、エレメントを指定し、属性を変更させる。
(3)エレメントの属性参照(getAttribute)
子ブラウザ2A,2B上での表示内容に合わせて取得が必要なデータ(例えば、optionエレメントに対し、現在選択状態であることを示すselectedなど)については、対応する子ブラウザ2A,2Bに対して、エレメントを指定し、属性を参照させて、参照結果を戻させる。その他の場合は、DOM記憶部12のエレメントの属性を参照する。
(4)エレメントのプロパティ変更(elem.prop=val)
DOM記憶部12のエレメント(elem)の対応するプロパティ(prop)に値(val)を設定する。また、対応する子ブラウザ2A,2Bのエレメントのプロパティにも値を設定させる。この処理は、JavaScriptのsetter(Object.defineProperty関数など)として定義を拡張する。なお、イベントリスナーのためのプロパティ(onchangeやonclickなど)については、後述するイベントリスナー登録の処理を行う。
(5)エレメントのプロパティ参照(var x=elem.prop)
子ブラウザ2A,2B上での表示内容に合わせて取得が必要なデータ(例えば、videoエレメントに対し、再生中のタイムスタンプを取得するvideo_elm.currentTimeなど)については、対応する子ブラウザ2A,2Bに対して、該当エレメントのプロパティを取得して戻り値として返却させる。その他の場合は、DOM記憶部12のエレメントからプロパティ値を取得する。この処理は、JavaScriptのgetter(Object.defineProperty関数など)として定義を拡張する。
(6)エレメントのメソッド呼出
対応する子ブラウザ2A,2Bに対して、エレメントのメソッドを呼び出させる。戻り値が必要な場合は、子ブラウザ2A,2Bに戻り値を取得させて返却させる。
(7)イベントリスナー登録
DOM記憶部12のエレメントに指定されたコールバック関数を登録する。また、対応する子ブラウザ2A,2Bに対して、該当エレメントにイベント発生通知処理を登録させる。ただし、指定されたイベント種別に関するイベントリスナーがすでに登録されている場合は、追加登録は不要である。イベント発生通知処理は、子ブラウザ2A,2Bのエレメントにイベントが発生した際に、発生したイベント種別とイベントが発生したエレメントの識別子をコンテンツ表示装置1に通知する処理である。
(8)イベントリスナー解除
DOM記憶部12のエレメントに登録されたコールバック関数を解除する。また、対応する子ブラウザ2A,2Bについては、登録されたコールバックが1つも存在しなくなった場合に、イベント発生通知処理を解除する。
以上(1)〜(8)は、子ブラウザ2A,2Bが保持するDOMへのアクセスを含む処理である。DOMアクセス部15は、対応する子ブラウザ2A,2Bに対して適切な電文を送信し、子ブラウザ2A,2Bに自身が保持するDOMへのアクセスを要求する。なお、どの部分木をどの子ブラウザ2A,2Bに送信したのかをDOM記憶部12で保持することで、対応する子ブラウザ2A,2Bを判断することができる。エレメントを識別する方法としては、DOM記憶部12のエレメント識別機能により付与されたID属性値を用いることができる。
続いて、子ブラウザ2A,2Bが保持するDOMへのアクセスを含まない、DOMアクセス部15によるDOM記憶部12のDOMへのアクセス処理を列挙する。
(9)DOM内のトラバース(検索処理)
DOM記憶部12のDOM上でトラバース(エレメントの検索など)する。
(10)イベント発生
子ブラウザからイベント発生通知を受信したとき、DOM記憶部12内の対応するエレメントにイベントを発生させる。エレメントにイベントが発生すると、そのエレメントに登録されたコールバック関数が実行される。
次に、本実施の形態におけるコンテンツ表示装置1の動作について説明する。
まず、図2,3に示すデジタルコンテンツデータを取得したときの動作について説明する。
コンテンツ取得部11が図2のHTMLデータをHTTPプロトコルによりWebサーバから取得すると、取得したHTMLデータには、<script type="text/javascript" src="Sample.js">というタグがあるので、図3のJavaScriptコードも取得する。
取得したHTMLデータは解析されてDOMに変換されてDOM記憶部12に格納される。
そして、子ブラウザ判定部13が、DOM記憶部12に記憶されたDOMから子ブラウザ2A,2Bに送信する部分木を判定する。図6の部分木A,Bが子ブラウザ2A,2Bそれぞれに送信する部分木として判定される。
子ブラウザ判定部13により判定された部分木A,Bは、子ブラウザ通信部16を通じて対応する子ブラウザ2A,2Bに送信される。ここでは部分木Aを子ブラウザ2Aに、部分木Bを子ブラウザ2Bに送信するものとする。子ブラウザ2A,2Bのそれぞれは、送信されたDOMの部分木を受信してDOM記憶部23に格納し、表示部24で表示する。図7に部分木Aを受信した子ブラウザ2Aで表示される画面を示し、図8に部分木Bを受信した子ブラウザ2Bで表示される画面を示す。
また、コンテンツ表示装置1のアプリケーションスクリプト実行部14では、HTMLデータのロード時に図3のinit関数が起動される。init関数では、addEventListener関数により、ID属性が“sel”のエレメントに、changeイベントに対してchangeVideoとして定義されたコールバック関数が登録される。このaddEventListener関数は、DOMアクセス部15で拡張された動作を実行する。具体的には、図9に示すように、DOM記憶部12のID属性が“sel”のエレメントe1に、changeイベントに対してchangeVideo関数がコールバック関数として登録され、部分木Bを受信した子ブラウザ2BのDOM記憶部23のエレメントe1にはchangeイベントに対してイベント発生通知処理が登録される。なお、図9では、後述の利用者がリストボックスを操作したときの動作の説明に用いるselectedIndexプロパティ、srcプロパティ、loadメソッド,およびplayメソッドを図示している。
続いて、利用者が子ブラウザ2Bに表示されたリストボックスを操作し、別の選択肢を選択した場合の動作について説明する。
利用者が子ブラウザ2Bに表示されたリストボックスを操作して別の選択肢を選択すると、子ブラウザ2BのDOM記憶部23のエレメントe1にchangeイベントが発生してイベント発生通知処理が起動され、イベント発生通知がコンテンツ表示装置1に送信される。
子ブラウザ通信部16がイベント発生通知を受信すると、DOMアクセス部15は、DOM記憶部12のエレメントe1にchangeイベントを発生させる。このイベント発生により、DOM記憶部12のエレメントe1にコールバック関数として登録されていたchangeVideo関数が起動され、アプリケーションスクリプト実行部14が図3のchangeVideo関数を実行する。
changeVideo関数には、エレメントe1からselectedIndexというプロパティの取得を行う処理が記載されている。この処理はDOMアクセス部15により拡張されたgetterにより実行され、エレメントe1を保持する子ブラウザ2Bに対して、エレメントe1のselectedIndexプロパティを取得して返却させる要求を送信する。この処理により、コンテンツ表示装置1が、利用者の操作により子ブラウザ2Bで選択されたselectedIndexを取得する。
さらに、changeVideo関数には、ID属性が“video”のエレメントe2のsrcというプロパティに取得したselectedIndexの値に対応する動画を設定する処理が記載されている。この処理はDOMアクセス部15により拡張されたsetterにより実行され、エレメントe2を保持する子ブラウザ2Aに対して、エレメントe2のsrcプロパティに選択した動画を設定させる要求を送信する。
また、続けて、エレメントe2のloadメソッド,playメソッドを呼び出す処理が記載されている。これらの処理は、DOMアクセス部15が、エレメントe2を保持する子ブラウザ2Aに対して、エレメントe2のloadメソッド,playメソッドを呼び出させる要求を送信することで実行される。メソッド呼出の要求を受信した子ブラウザ2Aの表示部24では、子ブラウザ2Bで選択された動画がロードされて再生が開始する。
以上、コンテンツ表示装置1がデジタルコンテンツデータを分割して子ブラウザ2A,2Bそれぞれに送信し、表示させる実施例について説明したが、図10に示すように、コンテンツ表示装置1に表示部31を備えてブラウザ3を構成し、DOM記憶部12にアクセスしてコンテンツを表示する子ブラウザの一つとして動作してもよい。この場合、表示部31は、DOM記憶部12のDOMにイベントを発生させてコールバック関数を実行させる。
また、表示部31では、device属性が指定されたエレメントとその配下のエレメント以外のエレメント、つまり子ブラウザに送信する部分木に属さないエレメントを表示するとしてもよい。あるいは、device属性が指定されたエレメントとその配下のエレメントは子ブラウザで表示すべき部分であるので、表示部31では強制的に非表示にしてもよい。このように、コンテンツ表示装置1が実装されるデバイスは、図1に示すようにコンテンツの表示制御のみを行うデバイスであってもよく、あるいは、図10に示すコンテンツ表示装置1の変形例のように、コンテンツの表示制御を行うとともにコンテンツを表示する子ブラウザとして動作するデバイスであってもよい。図1の場合、子ブラウザ2A,2Bは、コンテンツ表示装置1とは別筐体のデバイスとなる。子ブラウザ2A,2Bは、ブラウザを搭載することで実現される。なお、複数の子ブラウザ2A,2Bは、それぞれ別のデバイスで動作してもよく、また、複数の子ブラウザ2A,2Bは1つのデバイスで動作してもよい。図10のコンテンツ表示装置1の変形例の場合においても、ブラウザ3は、1つの子ブラウザとして動作してもよく、また、複数の子ブラウザとして動作してもよい。
以上説明したように、本実施の形態によれば、HTMLデータをDOMに展開してDOM記憶部12に記憶し、DOMから子ブラウザ2A,2Bそれぞれに表示させるデジタルコンテンツの一部に対応する部分木を判定して対応する子ブラウザ2A,2Bに送信し、アプリケーションスクリプト実行部14がJavaScriptコードによりDOMにアクセスする処理を実行する場合に、DOMアクセス部15がアクセス対象の部分木を保持する子ブラウザ2A,2BにDOMへのアクセスを要求し、子ブラウザ2A,2Bからイベント発生通知を受信した場合に、DOM記憶部12のDOMでイベントを発生させてコールバック関数を実行することにより、1つのコンテンツデータを複数の子ブラウザ2A,2Bに分割して表示させることができる。これにより、複数の子ブラウザ2A,2Bを連携させるデジタルコンテンツを配信するために、単一のブラウザに配信するのと同等のデジタルコンテンツデータを用意し、デジタルコンテンツデータのHTMLデータのどこを子ブラウザ2A,2Bに表示させるかを指定するだけで、複数の子ブラウザ2A,2Bを連携させるデジタルコンテンツを配信することができる。
[第2の実施の形態]
第2の実施の形態として、コンテンツ表示装置1のDOM記憶部12に記憶されたDOMに変更(エレメントの追加・削除・移動)が加えられたときの動作について具体例を用いて説明する。
コンテンツ表示装置1に、図11に示すJavaScriptコード(一般的に知られるJavaScriptのライブラリ「jQuery」を利用した例)を含むHTMLデータがダウンロードされると、scriptタグにより指定されたJavaScriptコードはアプリケーションスクリプト実行部14に送られ、その他のHTMLデータはDOMに変換されてDOM記憶部12に格納される。図12に、図11のHTMLデータを変換したDOMの木構造を示す。
コンテンツ表示装置1に子ブラウザ2A,2Bが接続されて、device属性に“BigScreen”が設定されているエレメントをルートとする部分木A2が子ブラウザ2Aに送信され、device属性に“PersonalTerminal”が設定されているエレメントをルートとする部分木B2が子ブラウザ2Bに送信される。図13に部分木A2を受信した子ブラウザ2Aで表示される画面を示し、図14に部分木B2を受信した子ブラウザ2Bで表示される画面を示す。
DOM記憶部12の<button>エレメントe3に、act_post関数がクリックイベントに対するコールバック関数として登録され、子ブラウザ2BのDOM記憶部23の対応する<button>エレメントe3にはクリックイベントに対してイベント発生通知処理が登録される。
子ブラウザ2Bで<button>エレメントe3、つまり「POST」ボタンがクリックされると、コンテンツ表示装置1でact_post関数が実行される。act_post関数では、ID属性が“proposal”のエレメントe4をID属性が“list”のエレメントe5の配下に移動する処理が行われて、DOM記憶部12に記憶したDOMの木構造が変更される。図15に変更後のHTMLデータを示し、図16に変更後のDOMの木構造を示す。図16の木構造に示すように、エレメントe4はエレメントe5の配下に移動される。
子ブラウザ判定部13は、DOMの変更を検知し、子ブラウザ2Bに対しては部分木B2の一部であるエレメントe4を削除する要求、子ブラウザ2Aに対してはエレメントe4をエレメントe5の配下に追加する要求を送信する。その結果、子ブラウザ2AのDOM記憶部23に記憶したDOMにエレメントe4が追加されて、コンテンツ表示装置1のDOM記憶部12に記憶したDOMの部分木A2’と同じになり、子ブラウザ2BのDOM記憶部23に記憶したDOMからエレメントe4が削除されて、コンテンツ表示装置1のDOM記憶部12に記憶したDOMの部分木B2’と同じになる。図17に子ブラウザ2Aで表示される画面を示し、図18に子ブラウザ2Bで表示される画面を示す。図17,18に示すように、子ブラウザ2Bから子ブラウザ2Aにデジタルコンテンツの一部(エレメントe4)がデバイスをまたいで移動したように見せることが可能となる。
なお、移動するエレメントe4にコールバック関数が指定されている場合は、子ブラウザ2Bに対してはイベントリスナー解除の処理、子ブラウザ2Aに対してはイベントリスナー登録の処理を要求する。
エレメントを追加する処理、エレメントを削除する処理も上記と同様に動作する。エレメントを追加した場合は、追加されたエレメントが子ブラウザの画面に新たに出現したように見せることが可能となる。エレメントを削除した場合は、子ブラウザの画面からエレメントが消えたように見せることが可能となる。
本実施の形態では、子ブラウザ2BのDOM記憶部23に記憶した部分木B2の一部(エレメントe4)を子ブラウザ2Aに移動する例を説明したが、部分木B2の全部を子ブラウザ2Aに移動する場合も同様である。以上説明した本実施の形態における、デジタルコンテンツを複数の子ブラウザに表示させるコンテンツ表示方法では、スクリプトを含むコンテンツデータを取得して木構造データに展開するステップと、前記複数の子ブラウザのうちの一つである第1子ブラウザが前記木構造データの全部または一部の部分木に対応するデジタルコンテンツを表示するステップと、前記第1子ブラウザが前記部分木の全部または一部に対応するデジタルコンテンツを表示しなくなるとともに、前記第1子ブラウザとは異なる第2子ブラウザが当該部分木の全部または一部に対応するデジタルコンテンツを表示するステップと、を行う。
[第3の実施の形態]
第3の実施の形態として、子ブラウザで表示しているDOMの部分木の一部を別の子ブラウザに移動して表示させるときの動作について説明する。
本実施の形態では、子ブラウザ通信部16は、子ブラウザそれぞれとの通信状態を検知し、検知した結果を子ブラウザ判定部13に通信状態として通知する。通信状態の検知については、特定のデータ、例えば通信開始を示すデータを通信開始時に、通信終了を示すデータを通信終了時に子ブラウザから受信することで検知してもよい。
子ブラウザ判定部13は、子ブラウザ通信部16から子ブラウザそれぞれとの通信状態の通知を受けて、通知された通信状態を子ブラウザ毎に記憶する。子ブラウザが新たに通信可能となった場合、あるいは、子ブラウザが通信不可能となった場合に、子ブラウザに割り当てる部分木を判定する。
以下、子ブラウザ2A,2Bが通信可能な状態でデジタルコンテンツを表示しているときに、新たに子ブラウザ2Cが通信可能な状態となり、子ブラウザ2Bで表示していたデジタルコンテンツの一部を子ブラウザ2Cに移動して表示させる例について説明する。
最初は、コンテンツ表示装置1と子ブラウザ2A,2Bが通信可能で、子ブラウザ2Cとは通信不可能な状態であるとする。図19に示すHTMLデータがコンテンツ表示装置1にダウンロードされて、図20に示すようにHTMLデータがDOMの木構造に変換される。device属性に“TV”が設定されているエレメントをルートとする部分木A3が子ブラウザ2Aに送信され、device属性に“phone”が設定されているエレメントをルートとする部分木B3が子ブラウザ2Bに送信される。図21に部分木A3を受信した子ブラウザ2Aで表示される画面を示し、図22に部分木B3を受信した子ブラウザ2Bで表示される画面を示す。
続いて、図23に示すように、子ブラウザ2Cがコンテンツ表示装置1と通信可能な状態になった場合、子ブラウザ通信部16が子ブラウザ2Cと通信可能になったことを検知し、その通信状態を子ブラウザ判定部13に通知する。
子ブラウザ判定部13は、通信可能になった子ブラウザ2Cに対応する部分木C3を判定し、部分木C3を子ブラウザ通信部16を通じて子ブラウザ2Cに送信する。本実施例では、device属性に“tablet”が設定されているエレメントをルートとする部分木C3を子ブラウザ2Cに送信する部分木として判定した。なお、部分木C3のエレメントにコールバック関数が指定されている場合は、子ブラウザ2Cに対してイベントリスナー登録の処理を要求する。
部分木B3の一部である部分木C3が子ブラウザ2Cに送信されるので、子ブラウザ判定部13は、子ブラウザ通信部16を通じて、部分木B3を既に送信した子ブラウザ2Bに部分木C3の非表示を要求、つまり部分木C3を削除する要求を送信する。
図24に、子ブラウザ2A,2B,2Cそれぞれに割り当てられた部分木A3,B3’,C3を示す。図25に部分木A3を受信した子ブラウザ2Aで表示される画面を示し、図26に部分木B3’を受信した子ブラウザ2Bで表示される画面を示し、図27に部分木C3を受信した子ブラウザ2Cで表示される画面を示す。図22と図26,27を比べて分かるように、子ブラウザ2Bに表示されていた部分木C3に対応するデジタルコンテンツが子ブラウザ2Bから消えて子ブラウザ2Cに表示されることから、デジタルコンテンツの一部がデバイスをまたいで移動したように見える。デジタルコンテンツの一部がデバイス間を移動したように見える点では、第2の実施の形態と同じであるが、第3の実施の形態では、コンテンツ表示装置1のDOM記憶部12に記憶したDOMの木構造に変更が加えられていない点で異なる。
次に、コンテンツ表示装置1と子ブラウザ2A,2B,2Cが通信可能な状態であるときに、子ブラウザ2Cが通信不可能な状態になったときの動作について説明する。
コンテンツ表示装置1と子ブラウザ2A,2B,2Cが通信可能な状態で、子ブラウザ2A,2B,2Cでは、図25〜27に示すようにデジタルコンテンツが表示されていたとする。
このとき、子ブラウザ2Cが通信不可能な状態になった場合、子ブラウザ通信部16が子ブラウザ2Cと通信不可能になったことを検知し、その通信状態を子ブラウザ判定部13に通知する。
子ブラウザ判定部13は、DOM記憶部12に記憶したDOMから子ブラウザ2Cに送信した部分木C3を判定する。
そして、子ブラウザ判定部13は、部分木C3の直上のエレメントを表示している子ブラウザ2Bを判定し、子ブラウザ通信部16を通じて、部分木C3を追加する要求を子ブラウザ2Bに送信する。
この処理が行われた後は、子ブラウザ2Bで表示される画面は図22で示した画面となる。子ブラウザ2Cで表示されていた部分木C3に対応するデジタルコンテンツが子ブラウザ2Cから消えて子ブラウザ2Bに表示されることから、デジタルコンテンツの一部がデバイスをまたいで移動したように見える。以上説明した本実施の形態における、デジタルコンテンツを複数の子ブラウザに表示させるコンテンツ表示方法では、スクリプトを含むコンテンツデータを取得して木構造データに展開するステップと、前記複数の子ブラウザのうちの一つである第1子ブラウザが前記木構造データの全部または一部の部分木に対応するデジタルコンテンツを表示するステップと、前記第1子ブラウザが前記部分木の全部または一部に対応するデジタルコンテンツを表示しなくなるとともに、前記第1子ブラウザとは異なる第2子ブラウザが当該部分木の全部または一部に対応するデジタルコンテンツを表示するステップと、を行う。
[第4の実施の形態]
第4の実施の形態として、DOMの部分木を複数の子ブラウザで共有して表示させるときの動作について具体例を用いて説明する。第3の実施の形態では、新たに子ブラウザ2Cが通信可能となった場合に、子ブラウザ2Bで表示されていたデジタルコンテンツの一部(部分木C3)を子ブラウザ2Bから削除して子ブラウザ2Cに表示させたが、第4の実施の形態では、子ブラウザ2Bの表示はそのままで、子ブラウザ2Cに部分木C3を表示させる例について説明する。
最初は、第3の実施の形態と同様に、コンテンツ表示装置1と子ブラウザ2A,2Bとは通信可能で、子ブラウザ2Cとは通信不可能な状態であり、図19に示すHTMLデータがコンテンツ表示装置1にダウンロードされて、図20に示す部分木A2,B2が子ブラウザ2A,2Bに送信され、図21,22に示すように、子ブラウザ2A,2Bでデジタルコンテンツが表示されていたとする。
続いて、図23に示すように、子ブラウザ2Cがコンテンツ表示装置1と通信可能な状態になった場合、子ブラウザ判定部13は、子ブラウザ2Cに対応する部分木C3を判定し、部分木C3を子ブラウザ通信部16を通じて子ブラウザ2Cに送信する。このとき、子ブラウザ判定部13は、部分木B3の一部である部分木C3を削除する要求を子ブラウザ2Bに送信しない。これにより、部分木C3は子ブラウザ2B,2Cで共有されることになる。
図28に、子ブラウザ2A,2B,2Cそれぞれに割り当てられた部分木A3,B3,C3を示す。図29に部分木A3を受信した子ブラウザ2Aで表示される画面を示し、図30に部分木B3を受信した子ブラウザ2Bで表示される画面を示し、図31に部分木C3を受信した子ブラウザ2Cで表示される画面を示す。図30,31で分かるように、子ブラウザ2B,2Cの両方で、部分木C3に対応するデジタルコンテンツが表示されている。
なお、部分木C3を子ブラウザ2Cに送信した後、子ブラウザ2Cが通信不可能となった場合でも、子ブラウザ2Bに対して何も行わない。以上説明した本実施の形態における、デジタルコンテンツを複数の子ブラウザに表示させるコンテンツ表示方法では、スクリプトを含むコンテンツデータを取得して木構造データに展開するステップと、前記複数の子ブラウザのうちの一つである第1子ブラウザが前記木構造データの全部または一部の部分木に対応するデジタルコンテンツを表示するステップと、前記第1子ブラウザとは異なる第2子ブラウザが前記部分木の全部または一部に対応するデジタルコンテンツを表示するステップと、を行う。
なお、本実施の形態では、コンテンツ表示装置1と子ブラウザとの通信状態の変化を契機とする、部分木に基づくデジタルコンテンツの共有(複製)を説明した。しかしながら、本発明は、これに限定されるものではなく、部分木に基づくデジタルコンテンツを、共有先(複製先)の子ブラウザにも表示させる様々なイベント(動作など)を契機に、当該子ブラウザが部分木に基づくデジタルコンテンツを表示する。共有先の子ブラウザにも表示させるイベントとしては、例えば、以下のものが挙げられる。ここでは、デジタルコンテンツの共有元(複製元)の子ブラウザ(本実施の形態の子ブラウザ2B)を「第1子ブラウザ」とし、共有先の子ブラウザ(本実施の形態の子ブラウザ2C)を「第2子ブラウザ」とし、第1子ブラウザおよび第2子ブラウザ以外の子ブラウザを「第3子ブラウザ」とする。
(1)第1子ブラウザからの指示
第1子ブラウザは、利用者が入力した操作指示を受け付けて、第2子ブラウザでの表示指示を、子ブラウザ通信部16を介して子ブラウザ判定部13に通知する。これにより、子ブラウザ判定部13は、第2子ブラウザに対応する部分木を第2子ブラウザに送信し、第2子ブラウザが部分木に基づくデジタルコンテンツを表示することとしてもよい。例えば、第1子ブラウザが表示しているデジタルコンテンツの中、または、第1子ブラウザ自体に、第2子ブラウザにも表示させるためのボタンなどのトリガーがあり、利用者は当該トリガーをONにする。これにより、第1子ブラウザは、第2子ブラウザへの表示指示を子ブラウザ判定部13に通知する。
また、第1子ブラウザは、自身がデジタルコンテンツを表示してから所定の時間が経過したタイミングで、第2子ブラウザへの表示指示を子ブラウザ判定部13に自動で通知し、これを契機に第2子ブラウザが部分木に基づくデジタルコンテンツを表示することとしてもよい。
(2)第2子ブラウザからの指示
第2子ブラウザは、利用者が入力した操作指示を受け付けて、自身の第2子ブラウザでの表示指示を子ブラウザ判定部13に通知する。これにより、子ブラウザ判定部13は、第2子ブラウザに対応する部分木を第2子ブラウザに送信し、第2子ブラウザが部分木に基づくデジタルコンテンツを表示することとしてもよい。例えば、第2子ブラウザが表示しているデジタルコンテンツの中、または、第2子ブラウザ自体に、第2子ブラウザにも表示させるためのボタンなどのトリガーがあり、利用者は当該トリガーをONにする。これにより、第2子ブラウザは、自身の第2子ブラウザでの表示指示を子ブラウザ判定部13に通知する。
また、第2子ブラウザは、自身がデジタルコンテンツの表示が可能な状態になったことを検知したタイミングで、自身の第2子ブラウザでの表示指示を子ブラウザ判定部13に通知し、これを契機に第2子ブラウザが部分木に基づくデジタルコンテンツを表示することとしてもよい。デジタルコンテンツの表示が可能となったタイミングとしては、例えば、ネットワークに第2子ブラウザが接続されたタイミング、ディスプレイに第2子ブラウザが接続されたタイミング(ディスプレイの電源ON、ケーブル接続、スリープ状態からアクティブ状態への移行等)がある。
また、第2子ブラウザは、スクリーンセーバーのように、所定の時間、利用者の操作がなかったタイミングで、自身の第2子ブラウザでの表示指示を子ブラウザ判定部13に通知し、これを契機に第2子ブラウザが部分木に基づくデジタルコンテンツを表示することとしてもよい。
(3)第3子ブラウザからの指示
第3子ブラウザは、利用者が入力した操作指示を受け付けて、第2子ブラウザへの表示指示を子ブラウザ判定部13に通知する。これにより、子ブラウザ判定部13は、第2子ブラウザに対応する部分木を第2子ブラウザに送信し、第2子ブラウザが部分木に基づくデジタルコンテンツを表示することとしてもよい。例えば、第3子ブラウザが表示しているデジタルコンテンツの中、または、第3子ブラウザ自体に、第2子ブラウザにも表示させるためのボタンなどのトリガーがあり、利用者は当該トリガーをONにする。これにより、第3子ブラウザは、第2子ブラウザへの表示指示を子ブラウザ判定部13に通知する。
また、第3子ブラウザは、自身の第3子ブラウザでデジタルコンテンツが非表示になるタイミングで(例えば、第3子ブラウザの「×(閉じる)ボタン」を利用者が押下するなど)、第2子ブラウザへの表示指示を子ブラウザ判定部13に通知し、これを契機に第2子ブラウザが部分木に基づくデジタルコンテンツを表示することとしてもよい。
[第5の実施の形態]
第5の実施の形態では、DOMの部分木(エレメント)を複数の子ブラウザで共有して表示した場合について、エレメントを共有している子ブラウザを特定するデータ構造と、複数の子ブラウザで共有されているエレメントに対する操作について説明する。
本実施の形態におけるコンテンツ表示装置1は、複数の子ブラウザに共有されたエレメントがどの子ブラウザで共有されているのかを特定するために、DOMの各エレメントに複数の子ブラウザ識別子を記憶するための記憶領域として配列を備える。この記憶領域は子ブラウザ判定部13が備えてもよいし、DOM記憶部12に記憶領域を設けて子ブラウザ判定部13が参照してもよい。
図32は、各エレメントが備える配列を説明するための図である。図32の例では、図2,3で示したデジタルコンテンツについて、ID属性が“dv”のエレメントをルートとする部分木Aを子ブラウザ2A、ID属性が“dc”のエレメントをルートとする部分木Bを子ブラウザ2B、<body>エレメントをルートとする部分木C(DOMの全体)を子ブラウザ2Cに割り当てて表示させた。エレメントの横に付与した枠が配列を示し、枠内の文字列(2A,2B,2C)は、子ブラウザ2A,2B,2Cそれぞれの子ブラウザ識別子を示す。図32の例では、部分木Aは、子ブラウザ2A,2Cで共有されているので、部分木Aに属する各エレメントの配列には子ブラウザ2A,2Cの子ブラウザ識別子「2A」「2C」が記憶される。同様に、部分木Bは、子ブラウザ2B,2Cで共有されているので、部分木Bに属する各エレメントの配列には子ブラウザ2B,2Cの子ブラウザ識別子「2B」「2C」が記憶される。<body>エレメントは子ブラウザ2Cのみに割り当てられているので、<body>エレメントの配列には子ブラウザ2Cの子ブラウザ識別子「2C」のみが記憶される。
子ブラウザ判定部13による上記の配列に対する処理には、「割当」「解除」および「参照」の3つがある。
「割当」の処理では、エレメントの識別子と子ブラウザ識別子をパラメータとして受け取り、エレメントの識別子で指定されたエレメント(以下、「指定エレメント」と称する)配下の全エレメントの配列に、指定された子ブラウザ識別子(以下、「指定子ブラウザ識別子」と称する)を追加する。
「解除」の処理では、エレメントの識別子と子ブラウザ識別子をパラメータとして受け取り、指定エレメント配下の全エレメントの配列から指定子ブラウザ識別子を削除する。
「参照」の処理では、エレメントの識別子をパラメータとして受け取り、指定エレメントの配列に記憶された子ブラウザ識別子を返却する。
指定エレメント配下の全エレメントの配列に対して指定子ブラウザ識別子を追加、削除することで、子ブラウザ判定部13による、あるエレメントがどの子ブラウザに割り当てられたかを判定する処理の効率化を図ることができる。
他にも、「割当」の処理では、指定エレメントの配列のみに指定子ブラウザ識別子を記憶させ、「解除」の処理では、指定エレメントの配列から指定子ブラウザ識別子を削除し、「参照」の処理では、指定エレメントからDOMの木構造データをルートへ向かってたどりながら、エレメントの配列に記憶されている子ブラウザ識別子を収集して返却する、という方法でも配列に対する処理を実現できる。
子ブラウザ判定部13による上記の配列に対する処理は、子ブラウザ判定部13が子ブラウザに送信するDOMの部分木を判定したときや、JavaScript APIにより子ブラウザに送信するDOMの部分木のルートとなるエレメントを指定するときなどに呼び出される。JavaScript APIにより子ブラウザ判定部13に対してDOMの部分木のルートとなるエレメントを指定することで、システム構築者が予め決めた条件やシステム利用者の操作に応じてDOM内のエレメントと子ブラウザの対応を決定するシステムの構築が可能となる。具体的な例としては、接続可能な子ブラウザとDOM記憶部12に記憶されたDOMのエレメントの識別子を画面上に表示し、子ブラウザに割り当てるエレメントを利用者に決定させるアプリケーションプログラムや、子ブラウザの持つ能力(画面サイズや表示可能な動画の形式など)に応じて割り当てるエレメントを決定するアプリケーションプログラムを構築し、子ブラウザ判定部13に部分木のルートとなるエレメントの識別子と子ブラウザ識別子を渡して上記の処理を実行する。
次に、複数の子ブラウザで共有されているエレメントに対する操作について説明する。第1の実施の形態において、DOMアクセス部15が提供するDOM APIについて説明したが、ここではDOM APIの処理において、複数のブラウザで共有されているエレメントに対する操作で異なる点について説明する。
(1)DOMの変更
(2)エレメントの属性変更
(4)エレメントのプロパティ変更
(6)エレメントのメソッド呼出(返却値がない場合)
(7)イベントリスナー登録
(8)イベントリスナー解除
以上の返却値がない処理については、操作対象のエレメントの配列に記憶されているすべての子ブラウザに対して要求を送信し、すべての子ブラウザ上で同じ動作をさせる。
(3)エレメントの属性参照
(5)エレメントのプロパティ参照
(6)エレメントのメソッド呼出(返却値がある場合)
以上の返却値がある処理については、操作対象のエレメントの配列から子ブラウザを1つ選択し、選択した子ブラウザのDOM記憶部23のエレメントから返却値を取得する。以下、子ブラウザを選択して返却値を取得する処理について説明する。
図33は、共有されているエレメントから返却値を取得する処理の流れを示すフローチャートである。
この処理を行う前提として、イベント発生元の子ブラウザの識別子をDOMアクセス部15が記憶しておく必要がある。具体的には、子ブラウザ通信部16がイベント発生通知を受信したときに、そのイベント発生通知を送信した子ブラウザの識別子を取得し、取得した子ブラウザ識別子をパラメータとして付加してDOMアクセス部15にイベントの発生を通知し、DOMアクセス部15がその子ブラウザ識別子を一時記憶域に記憶した状態でイベントを発生させてコールバック関数を起動する。コールバック関数内で上記の(3)(5)(6)の返却値があるDOM APIが呼び出されたときに、以下で説明する処理が行われる。
まず、子ブラウザ判定部13に操作対象エレメントの識別子を渡して操作対象エレメントの配列Aを取得し(ステップS11)、配列Aに1つ以上の子ブラウザ識別子が記憶されているか否か判定する(ステップS12)。
配列Aに子ブラウザ識別子が記憶されていない場合(ステップS12のNo)、操作対象のエレメントはどの子ブラウザにも割り当てられていないので、DOM記憶部12上の該当エレメントに対して情報取得を行って、返却値valに設定し(ステップS19)、返却値valを返す(ステップS18)。
配列Aに子ブラウザ識別子が記憶されている場合(ステップS12のYes)、イベント発生元の子ブラウザ識別子(S_ID)を取得する(ステップS13)。なお、タイマーイベントによる契機など、子ブラウザがイベント発生元でない場合はS_ID=nullとする。
S_IDが配列Aに含まれるか否か判定し(ステップS14)、配列AにS_IDが含まれない場合は、配列Aの最後に追加された子ブラウザ識別子をS_IDとする(ステップS15)。
S_IDが示す子ブラウザに情報取得のための要求を送信し(ステップS16)、応答の内容を返却値valに設定し(ステップS17)、返却値valを返す(ステップS18)。
DOMアクセス部15は、起動されたコールバック関数が終了した時点で、S_IDを記憶した一時記憶域をクリアする。そのため、タイマーイベントなどのように、子ブラウザからのイベント発生通知を契機としないイベント処理時には、一時記憶域がクリアされた状態でコールバック関数が起動されるので、ステップS13においてS_ID=nullとすることができる。
なお、DOMアクセス部15が提供するDOM APIのうち、(9)DOM内のトラバース、および(10)イベント発生については変更する必要はない。
次に、本実施の形態の動作について具体例を用いて説明する。
まず、図2,3で示したデジタルコンテンツを3つの子ブラウザ2A,2B,2Cで共有して表示させるときの動作について説明する。
コンテンツ表示装置1が図2,3で示したデジタルコンテンツを読み込んだ状態で、タブレット端末として実装された子ブラウザ2Cが接続されたとする。子ブラウザ2Cの能力(比較的大きな画面サイズとタッチパネル操作可能な入力機能)から、子ブラウザ2Cには読み込んだデジタルコンテンツのすべてを表示すべきとアプリケーションプログラムが判断し、子ブラウザ2Cに<body>エレメント以下の部分木C(デジタルコンテンツの全体)を割り当てて、部分木Cに属するすべてのエレメントの配列に子ブラウザ2Cの識別子「2C」が記憶される。そして、部分木Cが子ブラウザ2Cに送信されて、図4に示した画面つまりビデオを表示するビデオ表示部とビデオを選択するセレクトボックスの両方が子ブラウザ2Cで表示される。
続いて、テレビ端末として実装された子ブラウザ2Aが接続されたとする。子ブラウザ2Aの能力(大きな画面サイズや赤外線リモコンなどの限定的な入力機能)から、子ブラウザ2Aにはビデオ表示部のみ表示すべきとアプリケーションプログラムが判断し、子ブラウザ2AにID属性が“dv”のエレメントをルートとする部分木Aを割り当てて、部分木Aに属するすべてのエレメントの配列に子ブラウザ2Aの識別子「2A」が記憶される。そして、部分木Aが子ブラウザ2Aに送信されて、図7で示した画面つまりビデオを表示するビデオ表示部のみが子ブラウザ2Aで表示される。このとき子ブラウザ2Cの表示はそのままである。利用者にとっては、子ブラウザ2Cに表示されていたビデオ表示部が子ブラウザ2Aにも共有されたように見える。
さらに、携帯端末として実装された子ブラウザ2Bが接続されたとする。子ブラウザ2Bの能力(小さな画面サイズやタッチパネル操作可能な入力機能)から、子ブラウザ2Bにはビデオコントロール部のみ表示すべきとアプリケーションプログラムが判断し、子ブラウザ2BにID属性が“dc”のエレメントをルートとする部分木Bを割り当てて、部分木Bに属するすべてのエレメントの配列に子ブラウザ2Bの識別子「2B」が記憶される。そして、部分木Bが子ブラウザ2Bに送信されて、図8で示した画面つまりビデオコントロール部のみが子ブラウザ2Bで表示される。このとき子ブラウザ2A,2Cの表示はそのままである。利用者にとっては、子ブラウザ2Cに表示されていたリストボックスが子ブラウザ2Bにも共有されたように見える。
以上の動作により、子ブラウザ2A,2B,2Cにおいてデジタルコンテンツの一部が共有されて表示される。
続いて、上記のように子ブラウザ2A,2B,2Cそれぞれにデジタルコンテンツが表示された状態で、利用者が子ブラウザ2Cに表示されたリストボックスから動画を選択したときの動作について説明する。
利用者が子ブラウザ2Cに表示されたリストボックスを操作して別の動画を選択すると、子ブラウザ2Cでchangeイベントが発生し、子ブラウザ2Cからイベント発生通知がコンテンツ表示装置1に送信される。
子ブラウザ通信部16は、イベント発生通知を受信すると、発生元の子ブラウザ識別子「2C」、対象エレメントのID「sel」、およびイベント種別「change」のパラメータとともに、イベントの発生をDOMアクセス部15に通知する。
DOMアクセス部15は、発生元の子ブラウザ識別子「2C」を一時記憶域に記憶した状態で、DOM記憶部12内のID属性が“sel”であるエレメントにchangeイベントを発生させる。このイベント発生により、DOM記憶部12内のエレメントに登録されていた図3のchangeVideo関数が起動される。
changeVideo関数では、ID属性が“sel”のエレメントからselectedIndexというプロパティを取得する処理が実行される。ID属性が“sel”のエレメントの配列には、図32に示すように、2つの子ブラウザ識別子(2B,2C)が記憶されている。図33のフローチャートを用いて説明した処理により、DOMアクセス部15の一時記憶域に記憶された子ブラウザ識別子「2C」の示す子ブラウザ2Cに対してselectedIndexの値を取得する要求が送信され、子ブラウザ2Cから利用者により選択されたselectedIndexの値を記載した応答が返却される。
続いて、ID属性が“video”のエレメントのsrcというプロパティにselectedIndexに対応する動画を設定する処理が実行される。ID属性が“video”のエレメントの配列には、図32に示すように、2つの子ブラウザ識別子(2A,2C)が記憶されているので、2つの子ブラウザ2A,2Cそれぞれに対して、ID属性が“video”のエレメントのsrcプロパティにselectedIndexに対応する動画を設定する要求が送信される。そして、子ブラウザ2A,2Cそれぞれで、ID属性が“video”のエレメントのsrcプロパティにselectedIndexに対応する動画が設定される。
続いて、ID属性が“video”のエレメントのloadメソッド、playメソッドを呼び出す処理が実行される。この処理でも上記と同様に、ID属性が“video”のエレメントの配列に記憶された2つの子ブラウザ識別子(2A,2C)の示す2つの子ブラウザ2A,2Cそれぞれに対して、ID属性が“video”のエレメントのloadメソッド、playメソッドを呼び出させる要求が送信される。これにより、子ブラウザ2A,2Cそれぞれで、子ブラウザ2Aで選択されたselectedIndexに対応する動画の再生が行われる。
なお、利用者が子ブラウザ2Bでリストボックスを操作した場合も同様に、子ブラウザ2BのselectedIndexが評価され、子ブラウザ2A,2Cそれぞれで利用者が子ブラウザ2Bで選択したselectedIndexに対応する動画の再生が行われる。
このように、子ブラウザ2A,2Cでビデオ表示部を共有し、子ブラウザ2B,2Cでリストボックスを共有して表示させた場合に、子ブラウザ2B,2Cのどちらのリストボックスで動画を選択しても子ブラウザ2A,2Cの両方のビデオ表示部に反映させることができる。つまり、単にデジタルコンテンツが複数の子ブラウザで共有されているだけでなく、JavaScriptにより指定されていた動作についても複数の子ブラウザで共有させることができる。以上説明した本実施の形態における、デジタルコンテンツを複数の子ブラウザに表示させるコンテンツ表示方法では、スクリプトを含むコンテンツデータを取得して木構造データに展開するステップと、前記複数の子ブラウザそれぞれで前記木構造データの全部または一部の部分木に対応するデジタルコンテンツを表示するとともに、操作を受け付けるステップと、前記複数の子ブラウザの少なくとも1つで受け付けられた操作を操作の対象となる前記木構造データの全部または一部の部分木を表示している前記複数の子ブラウザの少なくとも1つに反映させて実行するステップと、を行う。
なお、複数の子ブラウザでそれぞれ操作を受け付けた場合、受け付けた各操作に基づく処理を、操作の発生順に実行し、当該受け付けた操作の対象となるデジタルコンテンツを表示している子ブラウザに実行結果を反映させる。例えば、子ブラウザ2B,2Cでリストボックスを共有して表示させている場合に、子ブラウザ2B,2Cのそれぞれで動画を選択すると、子ブラウザ2B,2Cからそれぞれイベント発生通知がコンテンツ表示装置1に送信される。イベント発生通知には、操作を受け付けた時刻情報(すなわち、イベントが発生した時刻情報)が含まれていてもよい。
子ブラウザ通信部16は、イベント発生通知を受信すると、当該イベント発生通知を受信した順に、または、イベント発生通知に操作を受け付けた時刻情報が含まれている場合は時刻情報が古い順に、当該イベント発生通知をDOMアクセス部15に送出する。DOMアクセス部15は、子ブラウザ通信部16からイベント発生通知を受け付けた順に、DOM記憶部12内にイベントを発生させる。このようにイベントを発生させることにより、DOM記憶部12内のエレメントに登録されていた関数は、子ブラウザ2Bおよび2Cにおいて、操作が発生した順に起動される。
すなわち、子ブラウザ2Cのリストボックスで選択し、その後、子ブラウザ2Bのリストボックスで選択する場合、子ブラウザ2A,2Cの両方のビデオ表示部には、はじめに子ブラウザ2Cで選択された動画の再生が開始され、その後、子ブラウザ2Bで選択された動画に切り替わり再生が開始される。
1…コンテンツ表示装置
11…コンテンツ取得部
12…DOM記憶部
13…子ブラウザ判定部
14…アプリケーションスクリプト実行部
15…DOMアクセス部
16…子ブラウザ通信部
2A,2B,2C…子ブラウザ
21…受信部
22…通知部
23…DOM記憶部
24…表示部
3…ブラウザ
31…表示部
100A,100B…Webブラウザ
200…WebSocketサーバ

Claims (19)

  1. デジタルコンテンツを複数の子ブラウザに表示させるコンテンツ表示装置が取得するコンテンツデータのデータ構造であって、
    デジタルコンテンツを構成するエレメントが木構造で配置され、
    前記複数の子ブラウザそれぞれに送信する部分木のルートとなるエレメントに前記子ブラウザに対応する属性値が設定され、
    前記属性値は、前記コンテンツ表示装置が該属性値に対応する子ブラウザに前記コンテンツデータを送信する処理に用いられること
    を特徴とするデータ構造。
  2. デジタルコンテンツを複数の子ブラウザに表示させるコンテンツ表示装置が取得するコンテンツデータのデータ構造であって、
    デジタルコンテンツを構成するエレメントが木構造で配置され、
    前記複数の子ブラウザそれぞれに送信する部分木のルートとなるエレメントに前記子ブラウザに対応する属性値が設定され、
    前記属性値は、前記コンテンツ表示装置が前記複数の子ブラウザそれぞれに送信する部分木を判定する処理に用いられること
    を特徴とするデータ構造。
  3. 請求項1または2に記載のデータ構造であって、
    前記コンテンツデータは、前記コンテンツ表示装置の記憶部に記憶されること
    を特徴とするデータ構造。
  4. スクリプトを含む木構造データに展開可能なコンテンツデータに基づくデジタルコンテンツを、複数の子ブラウザに表示させるコンテンツ表示方法であって、
    コンテンツ取得手段が、スクリプトを含む木構造データに展開可能なコンテンツデータを取得する取得ステップと、
    前記複数の子ブラウザのうちの何れか1つである第1子ブラウザが、前記木構造データの一部である部分木に基づくデジタルコンテンツを表示する第1表示ステップと、
    前記部分木に基づくデジタルコンテンツを前記第1子ブラウザが表示しなくなるのを契機に、前記複数の子ブラウザのうちの前記第1子ブラウザとは異なる第2子ブラウザが、前記取得ステップで取得したコンテンツデータの木構造データを用いて、当該部分木に基づくデジタルコンテンツを表示する第2表示ステップと、
    を含むことを特徴とするコンテンツ表示方法。
  5. スクリプトを含む木構造データに展開可能なコンテンツデータに基づくデジタルコンテンツを、複数の子ブラウザに表示させるコンテンツ表示方法であって、
    コンテンツ取得手段が、スクリプトを含む木構造データに展開可能なコンテンツデータを取得する取得ステップと、
    前記木構造データから前記複数の子ブラウザそれぞれに表示させるデジタルコンテンツの一部に対応する部分木を判定して対応する子ブラウザに送信する判定ステップと、
    前記複数の子ブラウザのうちの何れか1つである第1子ブラウザが、前記木構造データの一部である部分木に基づくデジタルコンテンツを表示する第1表示ステップと、
    前記部分木に基づくデジタルコンテンツを前記第1子ブラウザが表示しなくなるのを契機に、前記複数の子ブラウザのうちの前記第1子ブラウザとは異なる第2子ブラウザが、当該部分木に基づくデジタルコンテンツを表示する第2表示ステップと、
    を含むことを特徴とするコンテンツ表示方法。
  6. スクリプトを含む木構造データに展開可能なコンテンツデータに基づくデジタルコンテンツを複数の子ブラウザに表示させるコンテンツ表示方法であって、
    コンテンツ取得手段が、スクリプトを含む木構造データに展開可能なコンテンツデータを取得する取得ステップと、
    前記複数の子ブラウザのうちの何れか1つである第1子ブラウザが、前記木構造データの一部である部分木に基づくデジタルコンテンツを表示する第1表示ステップと、
    前記部分木に基づくデジタルコンテンツを、前記複数の子ブラウザのうちの前記第1子ブラウザとは異なる第2子ブラウザにも表示させるイベントを契機に、前記第2子ブラウザが、前記取得ステップで取得したコンテンツデータの木構造データを用いて、当該部分木に基づくデジタルコンテンツを表示する第2表示ステップと、
    を含むことを特徴とするコンテンツ表示方法。
  7. スクリプトを含む木構造データに展開可能なコンテンツデータに基づくデジタルコンテンツを複数の子ブラウザに表示させるコンテンツ表示方法であって、
    コンテンツ取得手段が、スクリプトを含む木構造データに展開可能なコンテンツデータを取得する取得ステップと、
    前記木構造データから前記複数の子ブラウザそれぞれに表示させるデジタルコンテンツの一部に対応する部分木を判定して対応する子ブラウザに送信する判定ステップと、
    前記複数の子ブラウザのうちの何れか1つである第1子ブラウザが、前記木構造データの一部である部分木に基づくデジタルコンテンツを表示する第1表示ステップと、
    前記部分木に基づくデジタルコンテンツを、前記複数の子ブラウザのうちの前記第1子ブラウザとは異なる第2子ブラウザにも表示させるイベントを契機に、前記第2子ブラウザが、当該部分木に基づくデジタルコンテンツを表示する第2表示ステップと、
    を含むことを特徴とするコンテンツ表示方法。
  8. スクリプトを含む木構造データに展開可能なコンテンツデータに基づくデジタルコンテンツを、複数の子ブラウザに表示させるコンテンツ表示装置であって、
    スクリプトを含む木構造データに展開可能なコンテンツデータを取得するコンテンツ取得手段と、
    前記複数の子ブラウザのうちの何れか1つである第1子ブラウザに、前記木構造データの一部である部分木に基づくデジタルコンテンツを表示させる判定手段と、を有し、
    前記判定手段は、前記部分木に基づくデジタルコンテンツを前記第1子ブラウザが表示しなくなるのを契機に、前記複数の子ブラウザのうちの前記第1子ブラウザとは異なる第2子ブラウザに、前記コンテンツ取得手段が取得したコンテンツデータの木構造データを用いて、当該部分木に基づくデジタルコンテンツを表示させること
    を特徴とするコンテンツ表示装置。
  9. スクリプトを含む木構造データに展開可能なコンテンツデータに基づくデジタルコンテンツを、複数の子ブラウザに表示させるコンテンツ表示装置であって、
    スクリプトを含む木構造データに展開可能なコンテンツデータを取得するコンテンツ取得手段と、
    前記複数の子ブラウザのうちの何れか1つである第1子ブラウザに、前記木構造データの一部である部分木に基づくデジタルコンテンツを表示させる判定手段と、を有し、
    前記判定手段は、前記部分木に基づくデジタルコンテンツを、前記複数の子ブラウザのうちの前記第1子ブラウザとは異なる第2子ブラウザにも表示させるイベントを契機に、前記第2子ブラウザに、前記コンテンツ取得手段が取得したコンテンツデータの木構造データを用いて、当該部分木に基づくデジタルコンテンツを表示させること
    を特徴とするコンテンツ表示装置。
  10. 請求項8または9に記載のコンテンツ表示装置としてコンピュータを機能させることを特徴とするコンテンツ表示プログラム。
  11. スクリプトを含む木構造データに展開可能なコンテンツデータに基づくデジタルコンテンツを複数の子ブラウザに表示させるコンテンツ表示方法であって、
    コンテンツ取得手段が、スクリプトを含む木構造データに展開可能なコンテンツデータを取得する取得ステップと、
    前記複数の子ブラウザのうちの少なくとも2つの子ブラウザが、前記木構造データの一部である部分木に基づくデジタルコンテンツをそれぞれ表示するとともに、操作を受け付けるステップと、
    実行手段が、前記受け付けた操作に基づく処理を操作の発生順に実行し、前記受け付けた操作の対象となるデジタルコンテンツを表示している子ブラウザに実行結果を反映させる実行ステップと、を含み、
    前記実行ステップにおいて前記実行結果を反映させる子ブラウザは、前記操作を受け付けるステップで前記操作を受け付けた子ブラウザとは異なる子ブラウザであること
    を特徴とするコンテンツ表示方法。
  12. デジタルコンテンツを複数の子ブラウザに表示させるコンテンツ表示装置であって、
    スクリプトを含む木構造データに展開可能なコンテンツデータを取得するコンテンツ取得手段と、
    前記木構造データから前記複数の子ブラウザそれぞれに表示させるデジタルコンテンツの一部に対応する部分木を判定して対応する子ブラウザに送信する判定手段と、
    前記スクリプトを実行する実行手段と、
    前記実行手段が前記木構造データにアクセスする処理を実行する場合に、当該処理をアクセス対象の部分木を保持する子ブラウザに通知して当該子ブラウザに処理を行わせ、前記子ブラウザからイベントの発生通知を受信した場合に、当該イベントに対応する処理を前記実行手段に実行させるアクセス手段と、
    前記子ブラウザと通信する通信手段と、
    を有することを特徴とするコンテンツ表示装置。
  13. デジタルコンテンツを複数の子ブラウザに表示させるコンテンツ表示装置であって、
    スクリプトを含む木構造データに展開可能なコンテンツデータを取得するコンテンツ取得手段と、
    前記木構造データから前記複数の子ブラウザそれぞれに表示させるデジタルコンテンツに対応する部分木を判定して対応する子ブラウザに送信し、状況に応じて、前記複数の子ブラウザのうちの一つである第1子ブラウザに前記部分木の全部または一部の非表示を要求するとともに、前記第1子ブラウザとは異なる第2子ブラウザに当該部分木の全部または一部を送信する判定手段と、
    前記スクリプトを実行する実行手段と、
    前記実行手段が前記木構造データにアクセスする処理を実行する場合に、当該処理をアクセス対象の部分木を保持する子ブラウザに通知して当該子ブラウザに処理を行わせるアクセス手段と、
    前記子ブラウザと通信する通信手段と、
    を有することを特徴とするコンテンツ表示装置。
  14. デジタルコンテンツを複数の子ブラウザに表示させるコンテンツ表示装置であって、
    スクリプトを含む木構造データに展開可能なコンテンツデータを取得するコンテンツ取得手段と、
    前記木構造データから前記複数の子ブラウザそれぞれに表示させるデジタルコンテンツに対応する部分木を判定して対応する子ブラウザに送信し、状況に応じて、前記複数の子ブラウザのうちの一つである第1子ブラウザに既に送信した前記部分木の全部または一部を前記第1子ブラウザとは異なる第2子ブラウザに送信する判定手段と、
    前記スクリプトを実行する実行手段と、
    前記実行手段が前記木構造データにアクセスする処理を実行する場合に、当該処理をアクセス対象の部分木を保持する子ブラウザに通知して当該子ブラウザに処理を行わせるアクセス手段と、
    前記子ブラウザと通信する通信手段と、
    を有することを特徴とするコンテンツ表示装置。
  15. デジタルコンテンツを複数の子ブラウザに表示させるコンテンツ表示装置であって、
    スクリプトを含む木構造データに展開可能なコンテンツデータを取得するコンテンツ取得手段と、
    前記木構造データから前記複数の子ブラウザそれぞれに表示させるデジタルコンテンツに対応する部分木を判定して対応する子ブラウザに送信する判定手段と、
    前記スクリプトを実行する実行手段と、
    前記実行手段が前記木構造データにアクセスする処理を実行する場合に、アクセス対象の部分木を保持する子ブラウザの少なくとも1つに通知して処理を行わせ、前記子ブラウザの何れかからイベントの発生通知を受信した場合に、当該イベントに対応する処理を前記実行手段に実行させるアクセス手段と、
    前記子ブラウザと通信する通信手段と、
    を有することを特徴とするコンテンツ表示装置。
  16. コンテンツ表示装置がデジタルコンテンツを複数の子ブラウザに表示させるコンテンツ表示システムであって、
    前記コンテンツ表示装置は、
    スクリプトを含む木構造データに展開可能なコンテンツデータを取得するコンテンツ取得手段と、
    前記木構造データから前記複数の子ブラウザそれぞれに表示させるデジタルコンテンツの一部に対応する部分木を判定して対応する子ブラウザに送信する判定手段と、
    前記スクリプトを実行する実行手段と、
    前記実行手段が前記木構造データにアクセスする処理を実行する場合に、当該処理をアクセス対象の部分木を保持する子ブラウザに通知して当該子ブラウザに処理を行わせ、前記子ブラウザからイベントの発生通知を受信した場合に、当該イベントに対応する処理を前記実行手段に実行させるアクセス手段と、
    前記子ブラウザと通信する通信手段と、を有し、
    前記子ブラウザは、
    前記部分木を受信して記憶する記憶手段と、
    前記部分木に基づいて画面を表示し、操作を受け付ける表示手段と、
    前記コンテンツ表示装置から前記通知を受信し、当該通知に基づいて前記部分木にアクセスする受信手段と、
    前記部分木でイベントが発生した場合に、当該イベントの発生通知を前記コンテンツ表示装置に通知する通知手段と、を有すること
    を特徴とするコンテンツ表示システム。
  17. デジタルコンテンツを複数の子ブラウザに表示させるコンテンツ表示方法であって、
    スクリプトを含む木構造データに展開可能なコンテンツデータを取得するステップと、
    前記木構造データから前記複数の子ブラウザそれぞれに表示させるデジタルコンテンツの一部に対応する部分木を判定して対応する子ブラウザに送信するステップと、
    前記スクリプトを実行するステップと、
    前記スクリプトを実行するステップで前記木構造データにアクセスする処理を実行する場合に、当該処理をアクセス対象の部分木を保持する子ブラウザに通知して当該子ブラウザに処理を行わせるステップと、
    前記子ブラウザからイベントの発生通知を受信した場合に、当該イベントに対応する処理を実行するステップと、
    前記子ブラウザと通信するステップと、
    を有することを特徴とするコンテンツ表示方法。
  18. コンテンツ表示装置がデジタルコンテンツを複数の子ブラウザに表示させるコンテンツ表示方法であって、
    前記コンテンツ表示装置による、
    スクリプトを含む木構造データに展開可能なコンテンツデータを取得するステップと、
    前記木構造データから前記複数の子ブラウザそれぞれに表示させるデジタルコンテンツの一部に対応する部分木を判定して対応する子ブラウザに送信するステップと、
    前記スクリプトを実行するステップと、
    前記スクリプトを実行するステップで前記木構造データにアクセスする処理を実行する場合に、当該処理をアクセス対象の部分木を保持する子ブラウザに通知して当該子ブラウザに処理を行わせるステップと、
    前記子ブラウザからイベントの発生通知を受信した場合に、当該イベントに対応する処理を実行するステップと、
    前記子ブラウザと通信するステップと、を有し、
    前記子ブラウザによる、
    前記部分木を受信して記憶するステップと、
    前記部分木に基づいて画面を表示し、操作を受け付けるステップと、
    前記コンテンツ表示装置から前記通知を受信し、当該通知に基づいて前記部分木にアクセスするステップと、
    前記部分木でイベントが発生した場合に、当該イベントの発生通知を前記コンテンツ表示装置に通知するステップと、を有すること
    を特徴とするコンテンツ表示方法。
  19. 請求項12乃至15のいずれかに記載のコンテンツ表示装置としてコンピュータを機能させることを特徴とするコンテンツ表示プログラム。
JP2015203914A 2012-09-11 2015-10-15 コンテンツ表示装置、コンテンツ表示システム、データ構造、コンテンツ表示方法及びコンテンツ表示プログラム Active JP6068592B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2012199135 2012-09-11
JP2012199135 2012-09-11
JP2013021313 2013-02-06
JP2013021313 2013-02-06

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2014535555A Division JP5841260B2 (ja) 2012-09-11 2013-09-10 コンテンツ表示装置、コンテンツ表示システム、コンテンツ表示方法及びコンテンツ表示プログラム

Publications (2)

Publication Number Publication Date
JP2016076224A true JP2016076224A (ja) 2016-05-12
JP6068592B2 JP6068592B2 (ja) 2017-01-25

Family

ID=50278269

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2014535555A Active JP5841260B2 (ja) 2012-09-11 2013-09-10 コンテンツ表示装置、コンテンツ表示システム、コンテンツ表示方法及びコンテンツ表示プログラム
JP2015203914A Active JP6068592B2 (ja) 2012-09-11 2015-10-15 コンテンツ表示装置、コンテンツ表示システム、データ構造、コンテンツ表示方法及びコンテンツ表示プログラム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2014535555A Active JP5841260B2 (ja) 2012-09-11 2013-09-10 コンテンツ表示装置、コンテンツ表示システム、コンテンツ表示方法及びコンテンツ表示プログラム

Country Status (3)

Country Link
US (1) US10275398B2 (ja)
JP (2) JP5841260B2 (ja)
WO (1) WO2014042158A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015191505A (ja) * 2014-03-28 2015-11-02 富士通株式会社 情報処理端末、表示端末、表示方法、及びプログラム
WO2015154043A2 (en) * 2014-04-04 2015-10-08 Systems And Software Enterprises, Llc Mobile device in-flight entertainment connection
JP6178764B2 (ja) * 2014-07-29 2017-08-09 日本電信電話株式会社 情報処理方法、通信端末およびコンピュータプログラム
CN105677658B (zh) * 2014-11-19 2020-07-28 阿里巴巴集团控股有限公司 页面展现方法及装置
US11194885B1 (en) * 2015-07-07 2021-12-07 Google Llc Incremental document object model updating
WO2017216953A1 (ja) * 2016-06-17 2017-12-21 三菱電機株式会社 コンテンツ表示装置、コンテンツ表示システム、コンテンツ表示方法、及びコンテンツ表示プログラム
US10521106B2 (en) 2017-06-27 2019-12-31 International Business Machines Corporation Smart element filtering method via gestures
US10956658B2 (en) * 2018-06-21 2021-03-23 Adobe Inc. Digital content editing of a document object model (DOM) based on object model comparison
US11748120B1 (en) * 2021-12-07 2023-09-05 Amazon Technologies, Inc. Server-based user interface rendering

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006195675A (ja) * 2005-01-12 2006-07-27 Osaka Univ ブラウジングシステム

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933826A (en) * 1997-03-21 1999-08-03 Novell, Inc. Method and apparatus for securing and storing executable content
US6263332B1 (en) * 1998-08-14 2001-07-17 Vignette Corporation System and method for query processing of structured documents
JP2001236283A (ja) * 2000-02-21 2001-08-31 Fankul Systems Inc インターネットへのアクセス方法及びシステム、ならびにインターネットへのアクセス処理を記憶した記憶媒体
JP3852742B2 (ja) * 2000-11-02 2006-12-06 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理システム、端末装置、情報処理方法および記憶媒体
JP2004046642A (ja) * 2002-07-12 2004-02-12 Nippon Telegr & Teleph Corp <Ntt> 構造化文書の部分指定・抽出方法及び装置及び構造化文書の部分指定・抽出プログラム及び構造化文書の部分指定・抽出プログラムを格納した記憶媒体
EP1376408B1 (en) 2002-06-28 2007-07-11 Nippon Telegraph and Telephone Corporation Extraction of information from structured documents
EP1406183A3 (en) * 2002-10-01 2004-04-14 Sap Ag Method and system for refreshing browser pages
US7177918B2 (en) * 2002-12-20 2007-02-13 International Business Machines Corporation Method and system for efficiently processing multiframe data in a client/server computing environment
WO2004068320A2 (en) * 2003-01-27 2004-08-12 Vincent Wen-Jeng Lue Method and apparatus for adapting web contents to different display area dimensions
EP1927922A1 (en) * 2005-09-22 2008-06-04 JustSystems Corporation Data managing apparatus, data editing apparatus, data browsing apparatus, data managing method, data editing method, and data browsing method
JP2007116669A (ja) * 2005-09-22 2007-05-10 Sharp Corp サブコンテンツ再生装置及びコンテンツ関連サービス提供システム
US20070288854A1 (en) * 2006-06-13 2007-12-13 Nokia Corporation Reusable XForms processor
US8564544B2 (en) 2006-09-06 2013-10-22 Apple Inc. Touch screen device, method, and graphical user interface for customizing display of content category icons
US8181107B2 (en) * 2006-12-08 2012-05-15 Bytemobile, Inc. Content adaptation
EP2117693B1 (en) * 2007-01-11 2014-03-26 Dow Global Technologies LLC Alkoxylate blend surfactants
US20080282150A1 (en) * 2007-05-10 2008-11-13 Anthony Wayne Erwin Finding important elements in pages that have changed
US8375086B2 (en) * 2007-05-31 2013-02-12 International Business Machines Corporation Shared state manager and system and method for collaboration
US20090037517A1 (en) 2007-08-02 2009-02-05 Randall Wayne Frei Method and system to share content between web clients
US20090077091A1 (en) * 2007-09-18 2009-03-19 Gilad Khen System for development and hosting of network applications
JP5194673B2 (ja) * 2007-09-26 2013-05-08 株式会社日立製作所 携帯端末、及び情報の送受信方法
US9280402B2 (en) * 2007-12-20 2016-03-08 Sap Se System and method for updating a dual layer browser
JP2011217316A (ja) 2010-04-02 2011-10-27 Funai Electric Co Ltd 携帯情報処理装置
US9179198B2 (en) * 2010-10-01 2015-11-03 Sony Corporation Receiving apparatus, receiving method, and program

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006195675A (ja) * 2005-01-12 2006-07-27 Osaka Univ ブラウジングシステム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6016034875; 前川 卓也 Takuya MAEKAWA: '複数のモバイルユーザのためのWebページ分割を用いた協調Webブラウジングシステム A Collaborative' 情報処理学会研究報告 Vol.2004 No.114 IPSJ SIG Technical Reports 第2004巻, 20041112, p.1-7, 社団法人情報処理学会 Information Processing Socie *

Also Published As

Publication number Publication date
JPWO2014042158A1 (ja) 2016-08-18
JP6068592B2 (ja) 2017-01-25
WO2014042158A1 (ja) 2014-03-20
JP5841260B2 (ja) 2016-01-13
US10275398B2 (en) 2019-04-30
WO2014042158A8 (ja) 2015-03-12
US20150227566A1 (en) 2015-08-13

Similar Documents

Publication Publication Date Title
JP6068592B2 (ja) コンテンツ表示装置、コンテンツ表示システム、データ構造、コンテンツ表示方法及びコンテンツ表示プログラム
JP5258861B2 (ja) Gui処理装置、gui処理方法およびgui処理プログラム
JP5483965B2 (ja) ウェブアプリケーションの操作記録・再生方法およびシステム
CN101611422A (zh) web数据使用平台
KR20060015705A (ko) 사용자 인터페이스 자동화 프레임워크 클래스 및 인터페이스
US20100058118A1 (en) Storage medium recording information reacquisition procedure generation program and information reacquisition procedure generation apparatus
US8954489B2 (en) Widget activation and communication method
US20130198333A1 (en) Method and device for recording and reproducing web operation
JP6332533B2 (ja) 情報処理装置、その処理方法及びプログラム
CN112612449A (zh) 一种网页页面的同步方法及装置、设备、存储介质
US11558329B2 (en) Systems and methods for context development
JP2007310596A (ja) サービス提供装置、コンピュータプログラム及び記録媒体
Heinrich et al. Reusable awareness widgets for collaborative web applications–a non-invasive approach
US10165036B1 (en) Network resource remote process execution
US20110072369A1 (en) Remote controller supporting system and method for displaying function of key being mapped with remote controller
JP4807411B2 (ja) 別ドメインの情報を利用する方法、別ドメインの情報を利用するためのプログラム及び情報転送プログラム
JP2010262548A (ja) データ提供方法およびサーバ
JP6148625B2 (ja) コンテンツ分散制御システム、コンテンツ分散制御装置、機器、コンテンツ分散制御方法およびコンテンツ分散制御プログラム
JP6607136B2 (ja) 画面構成制御装置および画面構成制御プログラム
US20070288549A1 (en) Information Processing System, Server Device, Client Device, and Program
KR101966548B1 (ko) 다수의 이질적인 센서 네트워크 플랫폼을 위한 센서 메타 데이터 생성 시스템
JP6109443B1 (ja) コンテンツ表示装置、コンテンツ表示システム、コンテンツ表示方法、及びコンテンツ表示プログラム
JP4204493B2 (ja) データ中継プログラム
US20240111410A1 (en) Drag and drop interactions for a browser software application
JPWO2017187469A1 (ja) 電子マニュアルに関連するサービスを提供するためのプログラム、サーバおよびシステム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160913

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161109

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161220

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161222

R150 Certificate of patent or registration of utility model

Ref document number: 6068592

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150