JP5914594B2 - 通信装置およびその動作方法、クライアント装置およびその動作方法、ならびにコンテンツデータ - Google Patents

通信装置およびその動作方法、クライアント装置およびその動作方法、ならびにコンテンツデータ Download PDF

Info

Publication number
JP5914594B2
JP5914594B2 JP2014165122A JP2014165122A JP5914594B2 JP 5914594 B2 JP5914594 B2 JP 5914594B2 JP 2014165122 A JP2014165122 A JP 2014165122A JP 2014165122 A JP2014165122 A JP 2014165122A JP 5914594 B2 JP5914594 B2 JP 5914594B2
Authority
JP
Japan
Prior art keywords
script
unit
client device
content data
data
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.)
Active
Application number
JP2014165122A
Other languages
English (en)
Other versions
JP2016042227A (ja
Inventor
徹郎 徳永
徹郎 徳永
宮崎 泰彦
泰彦 宮崎
田中 清
清 田中
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
Priority to JP2014165122A priority Critical patent/JP5914594B2/ja
Publication of JP2016042227A publication Critical patent/JP2016042227A/ja
Application granted granted Critical
Publication of JP5914594B2 publication Critical patent/JP5914594B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、通信装置およびその動作方法、クライアント装置およびその動作方法、ならびにコンテンツデータに関する。
Webコンテンツ(以下、コンテンツデータ)をよりダイナミックにするために、コンテンツデータにJavaScript(登録商標)と呼ばれるスクリプトを記述することが知られている。コンテンツデータに記述されたJavaScriptコードは、コンテンツデータを取得して表示するWebブラウザに内蔵されたJavaScript実行部によって実行される。
非特許文献1では、コンテンツデータの一部を複数のデバイス(以下、クライアント装置)のブラウザに表示させることが提案されている。非特許文献1では、Webサーバとクライアント装置の間に中間ブラウザ(以下、中間ブラウザサーバ装置)を配置し、中間ブラウザサーバ装置がクライアント装置間の通信やJavaScriptコードを実行することで、複数のクライアント装置を連携させている。コンテンツデータの一部を複数のクライアント装置のブラウザに表示させることで、例えば、コンテンツデータ中に動画を表示する部分と動画を操作する部分が含まれる場合、動画の表示をテレビのブラウザで行い、動画の操作をスマートフォンのブラウザで行うことが可能となる。この場合、スマートフォン上の操作が中間ブラウザサーバ装置に送られて、中間ブラウザサーバ装置がテレビにその操作結果を表示させる。
中茂睦裕、他4名、"中間ブラウザによるマルチデバイス連携技術の提案"、第87回GN研究発表会、情報処理学会、2013年3月、第2013-GN-87巻、第6号、p.1-6
非特許文献1の技術では、中間ブラウザサーバ装置がコンテンツデータに含まれるJavaScriptコードを実行し、その結果をコンテンツデータに反映し、そのコンテンツデータの一部あるいは全部が各クライアント装置のブラウザで表示される。クライアント装置のブラウザにはJavaScriptコードが配置されないため、クライアント装置のブラウザでJavaScriptコードを実行することはできない。
しかし、同じJavaScriptコードであっても、実行する環境に応じて実行結果が異なることがある。
例えば、getCurrentPositionというメソッドでJavaScriptコードが動作している端末の現在位置を取得できる場合、利用者の端末で実行すると利用者の現在位置が取得されるが、非特許文献1の技術を用いてJavaScriptコードを中間ブラウザサーバ装置で実行すると、中間ブラウザサーバ装置の設置位置が取得される。クライアント装置でJavaScriptコードを実行することができないと利用者の現在位置を取得することができない。
また、例えば、getUserMediaというメソッドでJavaScriptが動作している端末のマイクから音声取得や、カメラからの映像取得ができる場合、利用者の端末で実行すると利用者の付近の音声や映像が取得されるが、非特許文献1の技術を用いてJavaScriptコードを中間ブラウザサーバ装置で実行すると、中間ブラウザサーバ装置の設置されている場所の音声や映像が取得される。クライアント装置でJavaScriptコードを実行することができないと利用者の付近の音声や映像を取得することができない。
本発明は、上記に鑑みてなされたものであり、サーバに配置された1つのコンテンツデータおよびコンテンツデータに含まれるスクリプトを、サーバからコンテンツデータおよびスクリプトを取得した中間ブラウザサーバ装置が自身で実行するだけでなく、中間ブラウザサーバ装置がコンテンツデータを表示させるクライアント装置においてもスクリプトを実行させることを目的とする。
第1の本発明は、受信したコンテンツデータをクライアント装置に送信する通信装置であって、コンテンツデータを受信するコンテンツ取得部と、当該コンテンツデータから前記通信装置で実行すべきスクリプトを示す予め設定された第1のタグで記述された部分を抽出するスクリプト抽出部と、前記抽出された部分に含まれるスクリプト又は当該部分に含まれるURIにより得たスクリプトを実行するスクリプト実行部と、前記スクリプトの実行結果を前記コンテンツデータに反映させるDOM記憶部と、前記コンテンツデータから前記第1のタグで記述された部分を削除し、前記クライアント装置で実行されるクライアントスクリプトを示す予め設定された第2のタグを、前記第1のタグに変換するデータ変換部と、前記データ変換部による処理後のコンテンツデータを前記クライアント装置に送信するデータ通信部とを備えることを特徴とする。
例えば、前記データ変換部は、前記第2のタグで記述された部分に複数のクライアント装置の1つを示す値が含まれる場合、当該値に対応するクライアント装置に送信するコンテンツデータについては、受信されたコンテンツデータから前記第1のタグで記述された部分を削除し、前記第2のタグを前記第1のタグに変換し、前記データ通信部は、当該変換後のコンテンツデータを当該値に対応するクライアント装置に送信する一方、前記データ変換部は、当該値に対応するクライアント装置以外のクライアント装置に送信するコンテンツデータについては、受信されたコンテンツデータから前記第1のタグで記述された部分と前記第2のタグで記述された部分を削除し、前記データ通信部は、当該削除後のコンテンツデータを当該値に対応するクライアント装置以外のクライアント装置に送信する。
の本発明は、受信したコンテンツデータをクライアント装置に送信する通信装置の動作方法であって、前記通信装置のコンテンツ取得部が、コンテンツデータを受信し、前記通信装置のスクリプト抽出部が、当該コンテンツデータから前記通信装置で実行すべきスクリプトを示す予め設定された第1のタグで記述された部分を抽出し、前記通信装置のスクリプト実行部が、前記抽出された部分に含まれるスクリプト又は当該部分に含まれるURIにより得たスクリプトを実行し、前記通信装置のDOM記憶部が、前記スクリプトの実行結果を前記コンテンツデータに反映させ、前記通信装置のデータ変換部が、前記コンテンツデータから前記第1のタグで記述された部分を削除し、前記クライアント装置で実行されるクライアントスクリプトを示す予め設定された第2のタグを、前記第1のタグに変換し、前記通信装置のデータ通信部が、前記データ変換部による処理後のコンテンツデータを前記クライアント装置に送信することを特徴とする。
第5の本発明は、クライアント装置の動作方法であって、前記クライアント装置のデータ通信部が、コンテンツデータを受信し、前記クライアント装置のデータ変換部が、前記コンテンツデータに含まれる予め設定されたタグを、スクリプトを示すタグに変換し、前記クライアント装置のスクリプト抽出部が、前記変換後のタグで記述された部分を抽出し、前記クライアント装置のスクリプト実行部が、前記抽出された部分に含まれるスクリプト又は当該部分に含まれるURIにより得たスクリプトを実行し、前記クライアント装置のDOM記憶部が、前記スクリプトの実行結果を前記コンテンツデータに反映させることを特徴とする。
本発明によれば、サーバに配置された1つのコンテンツデータおよびコンテンツデータに含まれるスクリプトを、サーバからコンテンツデータおよびスクリプトを取得した中間ブラウザサーバ装置が自身で実行するだけでなく、中間ブラウザサーバ装置がコンテンツデータを表示させるクライアント装置においてもスクリプトを実行させることができる。
第1の実施形態における全体構成図 第1の実施形態におけるコンテンツデータの例 第1の実施形態におけるJavaScriptコードの例 図4(a)は、第1の実施形態におけるクライアント装置2A用に変換後のコンテンツデータの例、図4(b)は、第1の実施形態におけるクライアント装置2B用に変換後のコンテンツデータの例 第1の実施形態におけるクライアントスクリプトのJavaScriptコードの例 第1の実施形態における中間ブラウザサーバ装置が表示部を備える場合の全体構成図 第2の実施形態における全体構成図 第3の実施形態における全体構成図 第3の実施形態におけるJavaScriptコードの例 第3の実施形態におけるクライアントスクリプトのJavaScriptコードの例 第4の実施形態における全体構成図 第5の実施形態における全体構成図 第5の実施形態におけるコンテンツデータの例 第5の実施形態におけるクライアント装置2Cが受け取るコンテンツデータの例 第6の実施形態における全体構成図 ブラウザグループルールの例 グループ毎要素選択ルールの例 第7の実施形態における全体構成図
[第1の実施形態]
以下、第1の実施形態について図面を用いて説明する。
図1は、第1の実施形態における中間ブラウザサーバ装置およびクライアント装置を含む全体構成図である。
中間ブラウザサーバ装置1(通信装置)は、コンテンツ配信装置3からコンテンツデータを取得し、取得したコンテンツデータからスクリプトを抽出および実行し、その結果をDOM(Document Object Model)に反映し、DOMからクライアント装置で実行するスクリプト(以下、クライアントスクリプトと呼ぶ)を抽出および変換し、クライアント装置に送信する。クライアント装置2は受信したDOMからスクリプトを抽出および実行し、その結果をDOMに反映し、DOMを表示する。
同図に示す中間ブラウザサーバ装置1は、コンテンツ取得部11、スクリプト抽出部12、スクリプト実行部13、DOM記憶部14、データ変換部15、データ通信部16を備える。
以下、中間ブラウザサーバ装置1の各部について説明する。
コンテンツ取得部11は、コンテンツ配信装置3に接続し、HTTP等の公知のプロトコルによって、コンテンツデータをダウンロードする。コンテンツ取得部11により取得されたコンテンツデータはスクリプト抽出部12に送られる。
図2にクライアントスクリプトを含むコンテンツデータの例を示す。この例では、クライアントスクリプトはcscript要素で指定されているファイル内に記述されている。
スクリプト抽出部12は、コンテンツデータをDOM記憶部14に送信する一方、コンテンツデータを解析して、JavaScriptコードを抽出する。JavaScriptコードを取得する際には、HTMLのscript要素の属性として記述されているJavaScriptファイルのURIを取得し、URIに示されるロケーションのJavaScriptファイルを取得する方法と、HTMLのscript要素の内容として記述されているJavaScriptコードを読み取る方法がある。別のファイルが指定されている場合はコンテンツ取得部11に指定ファイルの取得を指示し、抽出する。抽出されたJavaScriptコードはスクリプト実行部13へ送られ、コンテンツデータはDOM記憶部14に送られる。
図3にJavaScriptコードの例を示す。
スクリプト実行部13はJavaScriptコードを解釈して実行する。これは、一般にはJavaScriptエンジンと呼ばれる公知の技術であり、オープンソースソフトウェアとして広く利用可能なJavaScriptエンジンも存在する(例えば、http://code.google.com/p/v8/)。スクリプト実行部13は、JavaScriptコードの実行結果をDOM記憶部14に送信する。
DOM記憶部14は、スクリプト抽出部12から受信したコンテンツデータを解析して、ツリー状のデータ構造であるDOMに展開して記憶する。また、DOM記憶部14は、JavaScriptコードの実行結果をDOMに反映し、DOMをデータ変換部15に送信する。
データ変換部15は、DOM記憶部14から受信したDOMからクライアントスクリプトを示す記述部分を抽出し、その記述部分を、HTMLにJavaScriptコードを記載する際と同様の書式に変換する。また、データ変換部15は、DOMから、スクリプト抽出部12で抽出されるscript要素を削除する。データ変換部15は、書式変換、script要素削除後のDOM(以下、コンテンツデータ)をデータ通信部16に送信する。
データ通信部16は、データ変換部15から受信したコンテンツデータをクライアント装置2(2A、2B)に送信する。
図4にデータ通信部16がクライアント装置2に送信するコンテンツデータの例を示す。
図4(a)は、クライアント装置2Aに送信されるコンテンツデータの例であり、図4(b)は、クライアント装置2Bに送信されるコンテンツデータの例である。
図1に示す中間ブラウザサーバ装置1の各部は一般的なWebブラウザを用いて構成できる。データ変換部15についてはJavaScriptで実装して構成することができる。例えば、cscriptという新たなHTML要素を定義する処理と、HTML内のcscript要素を取得して、その要素それぞれに対してscript要素を作成し、各script要素の属性値に対応するcscript要素の属性値を代入し、代入が終わったらcscript要素を削除する処理と、script要素を削除する処理を記載したJavaScriptコードを中間ブラウザサーバ装置1のスクリプト実行部13が実行することで、データ変換部15を機能させることができる。
データ通信部16についてはWebSocketサーバを作成して、複数のWebSocketクライアント装置から接続を受け付ける処理と、クライアント識別子等で指定されたWebSocketクライアント装置へのデータ送信処理を記載したJavaScriptコードを中間ブラウザサーバ装置1のスクリプト実行部13が実行することで、データ通信部16を機能させることができる。
次に、クライアント装置2について説明する。クライアント装置2Aとクライアント装置2Bは同じ構成である。
クライアント装置2は、データ通信部21、スクリプト抽出部22、スクリプト実行部23、DOM記憶部24、表示部25、コンテンツ取得部26を備える。
データ通信部21は、中間ブラウザサーバ装置1のデータ通信部16から送信されるコンテンツデータを受信し、コンテンツデータをスクリプト抽出部22に送信する。
スクリプト抽出部22は、コンテンツデータをDOM記憶部14に送信する一方、コンテンツデータを解析して、クライアントスクリプトであるJavaScriptコードを抽出する。JavaScriptを取得する際には、HTMLのscript要素の属性として記述されているJavaScriptファイルのURIを取得し、URIに示されるロケーションのJavaScriptファイルを取得する方法と、HTMLのscript要素の内容として記述されているJavaScriptのコードを読み取る方法がある。別のファイルが指定されている場合はコンテンツ取得部26に指定ファイルの取得を指示し、抽出する。抽出されたJavaScriptコードはスクリプト実行部23へ送られ、コンテンツデータはDOM記憶部24に送られる。
図5にクライアントスクリプトであるJavaScriptコードの例を示す。
スクリプト実行部23はクライアントスクリプト(JavaScriptコード)を解釈して実行する。これは、一般にはJavaScriptエンジンと呼ばれる公知の技術である。スクリプト実行部23は、クライアントスクリプト(JavaScriptコード)の実行結果をDOM記憶部24に送信する。
DOM記憶部24は、スクリプト抽出部22から受信したコンテンツデータを解析して、ツリー状のデータ構造であるDOMに展開して記憶する。また、DOM記憶部24は、クライアントスクリプト(JavaScriptコード)の実行結果をDOMに反映する。
表示部25は、DOM記憶部24に記憶されているDOMを描画してクライアント装置の表示機能に表示する。この表示機能はクライアント装置内にディスプレイがあってもよいし、有線無線を問わず接続された別の表示専用装置であってもよい。
コンテンツ取得部26は、スクリプト抽出部22よりファイル取得の指示を受け、ファイルを取得しスクリプト抽出部22にわたす。
これらクライアント装置2の各部は一般的なWebブラウザを用いて構成できる。データ通信部21についてはJavaScriptで実装して構成することができる。例えば、WebSocketクライアント装置を作成して中間ブラウザサーバ装置1のWebSocketサーバへ接続する処理と、WebSocketサーバからのデータ受信時の処理としてon_receive関数を登録する処理を記載したJavaScriptコードをクライアント装置2のスクリプト実行部23が実行することで、データ通信部21を機能させることができる。
次に、第1の実施形態における中間ブラウザサーバ装置1の動作について説明する。
まず、図2に示すコンテンツデータを取得した時の動作について説明する。
コンテンツ取得部11は、図2のコンテンツデータをHTTPによりコンテンツ配信装置3から取得し、スクリプト抽出部12へコンテンツデータをわたす。
スクリプト抽出部12は、受け取ったコンテンツデータのHTMLに含まれている、<script type="text/javascript" src="sample.js">というタグがスクリプトを示すことを認識し、コンテンツ取得部11に対してscript要素のsrc属性が示すURIのsample.jsを取得するよう指示する。取得されたsample.js(図3)はスクリプト実行部13にわたされる。一方、<cscript type=“text/javascript” src=“sample-client.js” clientid=“A2”>というタグがあるが、HTMLタグとして標準ではないcscript要素に対しては何も行わない。スクリプト抽出後に、コンテンツデータはDOM記憶部14にわたされる。
スクリプト実行部13は、受け取ったsample.jsである図3のJavaScriptコードを実行し、実行結果をDOM記憶部14に反映させる。
DOM記憶部14は、スクリプト抽出部12から受信したコンテンツデータを解析して、ツリー状のデータ構造であるDOMに展開して記憶する。また、DOM記憶部14は、JavaScriptコードの実行結果をDOMに反映する。
ここで、コンテンツ取得部11がDOM記憶部14へコンテンツデータをわたしDOMとして保持し、DOM記憶部14からスクリプト抽出部12がスクリプトを抽出し、スクリプト実行部13がスクリプトを実行し結果をDOM記憶部14に反映するという処理の順番としてもよい。
データ変換部15は、DOM記憶部14に保持されているDOMに、(A)共通的な処理と、(B)各クライアント装置に合わせて変換する処理を行う。
(A)共通的な処理としては、(A1)cscriptという新たなHTML要素を定義する処理、(A2)script要素を削除する処理を行う。
cscript要素を定義する処理により、HTMLタグとして標準ではないcscript要素をHTMLの要素と同等に取り扱うことができる。cscript要素が持つ属性はscript要素と同じ属性を少なくとも持つように定義する。script要素を削除する処理により、中間ブラウザサーバ装置で実行されるスクリプトは削除される。
(B)各クライアント装置に合わせて変換する処理は、データ通信部16で保持するクライアント識別子に応じて行う。共通的な処理を先に実行することで、cscript要素はHTML要素と同等に取り扱うことができるようになっている。図2のコンテンツデータのclientid属性に2Aという値が指定されている。この場合、クライアント装置2Aに対して、このcscript要素がクライアントスクリプトとして有効となり、他のクライアント装置に対しては無効となる。
(B1)有効なクライアント装置に向けてのデータ変換では、cscript要素に対応してscript要素を作成し、そのscript要素の各属性には対応するcscript要素の属性値を設定する。script要素に対応する属性がないcscript要素の属性は特に処理を行なわない。属性値の設定が終わったら元のcscript要素を削除する。
このデータ変換処理の実行結果を、図4(a)に示す。コンテンツ取得部11が取得した時点でのscript要素の内容であるJavaScriptコードは実行され、その結果が反映され、id属性がgreetingのdiv要素に、Hello worldという文字列が挿入されている。また、コンテンツ取得部11が取得した時点ではcscript要素であったものがscript要素となっており、もともとあったscript要素は削除されている。このコンテンツデータがクライアント装置2Aに送信されるものとなる。
(B2)無効なクライアント装置に向けてのデータ変換では、cscript要素を削除する処理を行う。
このデータ変換処理の実行結果を、図4(b)に示す。コンテンツ取得部11が取得した時点でのscript要素の内容であるJavaScriptコードは実行され、その結果が反映されている。もともとあったscript要素とcscript要素は削除されている。このコンテンツデータがクライアント装置2Bに送信されるものとなる。
データ変換部15は、DOM記憶部14がDOMを保持するとすぐにDOMを取得し、処理を開始してもよいし、DOM記憶部14はDOMを保持した状況で、データ通信部16とクライアント装置2Aまたは2Bのデータ通信部21が通信可能となることを契機として、DOM記憶部14からDOMを取得し、処理を開始してもよい。
データ通信部16はデータ変換部15から受け取ったコンテンツデータを対応するクライアント装置に送信する。すなわち、クライアント装置2A用のコンテンツデータをクライアント装置2Aに送信し、クライアント装置2B用のコンテンツデータをクライアント装置2Bに送信する。
次にクライアント装置2A、2Bの動作について説明する。
データ通信部21が図4AのコンテンツデータをWebSocketにより中間ブラウザサーバ装置1から受信し、スクリプト抽出部22へコンテンツデータをわたす。
クライアント装置2Aにおいては、スクリプト抽出部22は、受け取ったコンテンツデータのHTMLに含まれている、<script type="text/javascript" src="sample-client.js">というタグがスクリプトを示すことを認識し、コンテンツ取得部26に対してscript要素のsrc属性が示すURIのsample‐client.jsを取得するよう指示する。取得されたsample‐client.js(図5)はスクリプト実行部23にわたされる。スクリプト抽出後に、コンテンツデータはDOM記憶部24にわたされる。
クライアント装置2Bにおいては、スクリプト抽出部22は、受け取ったコンテンツデータのHTMLにスクリプトを示すタグが含まれていないため、そのままコンテンツデータをDOM記憶部24にわたす。
スクリプト実行部23は、受け取ったsample‐client.jsである図5のJavaScriptコードを実行し、実行結果をDOM記憶部24に反映させる。
DOM記憶部24は、スクリプト抽出部22より受け取ったコンテンツデータを解析して、ツリー状のデータ構造であるDOMに展開して記憶する。また、スクリプト抽出部22で抽出されたJavaScriptがスクリプト実行部23で実行された結果も反映する。
ここで、データ通信部21がDOM記憶部24へコンテンツデータをわたしDOMツリーとして保持し、DOM記憶部24からスクリプト抽出部22がスクリプトを抽出し、スクリプト実行部23がスクリプトを実行し結果をDOM記憶部24に反映するという処理の順番としてもよい。
表示部25は、DOM記憶部24に記憶されているDOMを描画してクライアント装置の表示機能に表示する。
以上、中間ブラウザサーバ装置1がコンテンツデータ内のスクリプトを実行し、クライアント装置2がコンテンツデータ内のクライアントスクリプトを実行する実施例について説明したが、これは一例である。
図6に示すように、中間ブラウザサーバ装置1が表示部17を備えてDOM記憶部14に記憶されているDOMを描画して表示してもよい。
クライアントスクリプトを示す要素において、clientid属性などによってクライアント識別子を直接記述せずに、クライアント装置の有する特徴や情報と適合するか否かで、クライアントスクリプトの有効性を制御してもよい。例えば、client_useragent=”Android”という記述がある場合、クライアント装置のUserAgent情報にAndroidという文字列が含まれるクライアント装置についてはクライアントスクリプトが有効となるようにしてもよい。
クライアントスクリプトを示す要素において、clientid属性の指定がない場合は、クライアント装置を識別せずに、すべてのクライアント装置に対してクライアントスクリプトを有効となるようにしてもよい。
以上、第1の実施形態によれば、中間ブラウザサーバ装置1のコンテンツ取得部11が取得したコンテンツデータからスクリプト抽出部12がscript要素のスクリプトを抽出し、スクリプト実行部13がそのスクリプトを実行し、その結果のコンテンツデータがDOM記憶部14に保存され、データ変換部15がDOM記憶部14に保存されているコンテンツデータのscript要素を削除し、クライアント装置に応じて、cscript要素の属性の記述で該当するクライアント装置に対しては、cscript要素をscript要素に変換する処理を行い、cscript要素の属性の記述で該当しないクライアント装置に対しては、cscript要素を削除する処理を行い、データ通信部16からデータ通信部21にコンテンツデータがわたされ、スクリプト抽出部22がscript要素のスクリプトを抽出し、スクリプト実行部23がそのスクリプトを実行することにより、1つのコンテンツデータに含まれるスクリプトを中間ブラウザサーバ装置で実行するだけでなく、クライアント装置でも実行させることができる。
これにより、WebサーバからコンテンツデータおよびJavaScriptを取得した中間ブラウザサーバ装置1がJavaScriptを自身で実行するだけでなく、中間ブラウザサーバ装置1がコンテンツデータを表示させるクライアント装置においてもJavaScriptを実行させることができる。
そのためには、一次クライアント装置に配信するのと同等のコンテンツデータを用意し、コンテンツデータのHTMLデータ内にクライアント装置で実行させたいスクリプトをcscript要素として記述することで、サーバに配置された1つのコンテンツデータに含まれるスクリプトを中間ブラウザサーバ装置で実行するだけでなく、クライアント装置でも実行させることができる。
なお、第1の実施形態では、中間ブラウザサーバ装置で実行するスクリプトの抽出、実行、DOMへの反映は必要時に行えばよく、そうでない場合は、これらの処理を実行しなくてよい。その場合、スクリプト抽出部12、スクリプト実行部13も不要となる。
[第2の実施形態]
以下、第2の実施形態について図面を用いて説明する。
図7は、第2の実施形態における中間ブラウザサーバ装置およびクライアント装置を含む全体構成図である。中間ブラウザサーバ装置1、クライアント装置2A、2Bの各部について、第1の実施形態との差分のみ説明する。
中間ブラウザサーバ装置1のデータ通信部16は、データ変換部15より受け取ったコンテンツデータをクライアント装置2A、2Bに送信する。また、データ通信部16は、クライアント装置2A、2BからコンテンツデータのURIを受信し、コンテンツ取得部11に受信したURIのコンテンツデータを取得するよう指示する。
クライアント装置2A、2Bのデータ通信部21は、中間ブラウザサーバ装置1のデータ通信部16からコンテンツデータを受信する。コンテンツデータはスクリプト抽出部22に送られる。また、クライアント装置2A、2Bの操作者あるいはスクリプト実行部23からの指示あるいはコンテンツ取得部26より取得したいコンテンツデータのURIを受け取り中間ブラウザサーバ装置1に送信する。
このクライアント装置2のデータ通信部21は一般的なWebブラウザを用いて構成できる。データ通信部21についてはJavaScriptで実装して構成することができる。
例えば、WebSocketクライアント装置を作成して中間ブラウザサーバ装置1のWebSocketサーバへ接続する処理と、WebSocketサーバからのデータ受信時の処理としてon_receive関数を登録する処理に加えて、WebSocketサーバへのデータ送信時の処理としてsend関数を登録する処理を記載したJavaScriptコードをクライアント装置2のスクリプト実行部23が実行することで、データ通信部21を機能させることができる。
次に、第2の実施形態における、クライアント装置2から中間ブラウザサーバ装置1に対してコンテンツ配信装置3のコンテンツデータの取得を要求する際の動作について、第1の実施形態との差分のみ説明する。
クライアント装置2A、2Bのデータ通信部21に、クライアント装置2の操作者あるいはスクリプト実行部23からの指示あるいはコンテンツ取得部26により、取得したいコンテンツデータのURIが渡される。
データ通信部21は取得したい旨とURIをデータ通信部16へ送信する。データ通信部16はコンテンツ取得部11に取得したいURIをわたす。
コンテンツ取得部11がコンテンツデータをHTTPによりコンテンツ配信装置3から取得し、スクリプト抽出部12へコンテンツデータをわたすところからは第1の実施形態と同様である。
以上、第2の実施形態によれば、サーバに配置された1つのコンテンツデータに含まれるスクリプトを中間ブラウザサーバ装置で実行するだけでなく、クライアント装置でも実行させることができる場合において、ライアント装置のコンテンツ取得部26あるいはスクリプト実行部23より、データ通信部21に、取得するコンテンツデータのURIが渡され、データ通信部21は、そのURIを中間ブラウザサーバ装置のデータ通信部16へ送信し、データ通信部16はコンテンツ取得部11にURIをわたすことにより、クライアント装置から中間ブラウザサーバ装置へURIをわたすことができる。
これにより、クライアント装置が、コンテンツデータのURIを指定するために、操作者の操作による指示あるいはスクリプトの実行結果による指示によって、クライアント装置の操作者またはクライアントスクリプトの実行結果によって、取得するコンテンツデータのURIを中間ブラウザサーバ装置に指定することができる。
[第3の実施形態]
以下、第3の実施形態について図面を用いて説明する。
図8は、第3の実施形態における中間ブラウザサーバ装置およびクライアント装置を含む全体構成図である。中間ブラウザサーバ装置1、クライアント装置2A、2Bの各部について、第2の実施形態との差分のみ説明する。
中間ブラウザサーバ装置1のスクリプト実行部13は、実行するJavaScriptコード内にクライアント装置のJavaScriptへデータを送信する旨が記述されている場合、スクリプト間通信受付部18に、送信内容と送信宛先のクライアント識別子をわたす。また、スクリプト間通信受付部18からの受信内容を実行中のJavaScriptコードに適用する。
スクリプト間通信受付部18は、スクリプト実行部13より受け取った送信内容と送信宛先のクライアント識別子より通信文を生成し、データ通信部16に指定のクライアント識別子宛てに通信文を送信するように指示する。また、データ通信部16から受け取った通信文から受信内容を抽出して、スクリプト実行部13にわたす。
データ通信部16は、スクリプト間通信受付部18からわたされた通信文を、該当クライアント識別子のクライアント装置に送信する。また、受信した通信文がスクリプト実行部への通信文である場合、スクリプト間通信受付部18に通信文をわたす。
これら中間ブラウザサーバ装置1のデータ通信部16を除く各部は一般的なWebブラウザを用いて構成できる。第2の実施形態との差分であるスクリプト間通信受付部18についてはJavaScriptで実装して構成することができる。
例えば、送信内容とクライアント装置の宛先とを組み合わせ通信オブジェクトを生成し、データ通信部16が確保しているWebSocket通信路を経由して、クライアント装置に送信する処理と、受け取った通信オブジェクトから送信元と受信内容を抽出する処理とを記載したJavaScriptコードを中間ブラウザサーバ装置1のスクリプト実行部13が実行することで、スクリプト間通信受付部18を機能させることができる。
クライアント装置のデータ通信部21は、受信した通信文がスクリプト実行部23への通信文である場合、スクリプト間通信受付部27に通信文をわたす。また、スクリプト間通信受付部27からわたされた通信文を、中間ブラウザサーバ装置に送信する。
スクリプト間通信受付部27は、データ通信部21から受け取った通信文から受信内容を抽出して、スクリプト実行部23にわたす。また、スクリプト実行部23より受け取った送信内容と送信宛先より通信文を生成し、データ通信部21に中間ブラウザサーバ装置宛てに通信文を送信するように指示する。
スクリプト実行部23は、スクリプト間通信受付部27からの受信内容を実行中のJavaScriptコードに適用する。また、実行するJavaScriptコード内に中間ブラウザサーバ装置1のJavaScriptへデータを送信する旨が記述されている場合、スクリプト間通信受付部27に、送信内容と送信宛先をわたす。
これらクライアント装置2の各部は一般的なWebブラウザを用いて構成できる。第2の実施形態との差分であるスクリプト間通信受付部27についてはJavaScriptで実装して構成することができる。
例えば、送信内容と、クライアント装置の宛先とを組み合わせ通信オブジェクトを生成し、データ通信部21が確保しているWebSocket通信路を経由して、クライアント装置に送信する処理と、受け取った通信オブジェクトから送信元と受信内容を抽出する処理とを記載したJavaScriptコードをクライアント装置2A、2Bのスクリプト実行部23が実行することで、スクリプト間通信受付部27を機能させることができる。
次に、第3の実施形態における第2の実施形態との差分である、中間ブラウザサーバ装置1のスクリプト実行部13で実行されるスクリプトからクライアント装置2A、2Bのスクリプト実行部23で実行されるスクリプトに送信する動作、および、クライアント装置2A、2Bのスクリプト実行部23で実行されるスクリプトから中間ブラウザサーバ装置1のスクリプト実行部13で実行されるスクリプトに送信する動作について具体例を用いて説明する。
図9にスクリプト実行部13で実行されるJavaScriptコード例を示す。このコードが実行されると、クライアント装置2Aから通信文を受信した場合にid属性がgreetingの要素の内容に受信内容を表示するように登録し、クライアント装置2Aに対して「hello from 1 to 2A」という文字列を送信する。
図10にスクリプト実行部23で実行されるJavaScriptコード例を示す。このコードが実行されると、中間ブラウザサーバ装置1から通信文を受信した場合にid属性がgreetingの要素の内容に受信内容を表示するように登録し、中間ブラウザサーバ装置1に対して「hello from 2A to 1」という文字列を送信する。
中間ブラウザサーバ装置1のスクリプト実行部13が図9に示すJavaScriptコードを実行し、クライアント装置2Aに「hello from 1 to 2A」の文字列を送信する際には、スクリプト間通信受付部18は受け取った送信内容と送信宛先のクライアント識別子より通信文を生成し、データ通信部16に指定のクライアント識別子宛てに通信文を送信するように指示する。
データ通信部16は、スクリプト間通信受付部18からわたされた通信文を、該当クライアント識別子のクライアント装置に送信する。
クライアント装置のデータ通信部21は、受信した通信文がスクリプト実行部23への通信文である場合、スクリプト間通信受付部27に通信文をわたす。
スクリプト間通信受付部27は、データ通信部21から受け取った通信文から受信内容を抽出して、スクリプト実行部23にわたす。
スクリプト実行部23は、スクリプト間通信受付部27からの受信内容を実行中のJavaScriptコードに適用する。図10のJavaScriptコード例においては、id属性がgreetingの要素の内容に、受信内容「hello from 1 to 2A」の文字列を挿入しDOM記憶部24に保存する。
また、クライアント装置2Aのスクリプト実行部23が図10に示すJavaScriptコードを実行し、中間ブラウザサーバ装置1に「hello from 2A to 1」の文字列を送信する際には、スクリプト間通信受付部27は、スクリプト実行部23より受け取った送信内容と送信宛先のクライアント識別子より通信文を生成し、データ通信部21に指定のクライアント識別子宛てに通信文を送信するように指示する。
データ通信部21は、スクリプト間通信受付部27からわたされた通信文を、該当クライアント識別子のクライアント装置に送信する。
中間ブラウザサーバ装置1のデータ通信部16は、受信した通信文がスクリプト実行部への通信文である場合、スクリプト間通信受付部18に通信文をわたす。
スクリプト間通信受付部18は、データ通信部16から受け取った通信文から受信内容を抽出して、スクリプト実行部13にわたす。
スクリプト実行部13は、スクリプト間通信受付部18からの受信内容を実行中のJavaScriptコードに適用する。図9のJavaScriptコード例においては、id属性がgreetingの要素の内容に、受信内容「hello from 2A to 1」の文字列を挿入しDOM記憶部14に保存する。
以上、第2の実施形態との差分として説明したが、第1の実施形態に本差分を加えることで構成することもできる。
以上、第3の実施形態によれば、サーバに配置された1つのコンテンツデータに含まれるスクリプトを中間ブラウザサーバ装置で実行するだけでなく、クライアント装置でも実行させることができる場合において、中間ブラウザサーバ装置1のスクリプト実行部13で実行されるスクリプトにクライアント装置のスクリプトへデータを渡す指示がある場合、スクリプト実行部13はスクリプト間通信受付部18に宛先と送信内容をわたし、スクリプト間通信受付部18はデータ通信部16に宛先と送信内容からなる通信文をわたし、データ通信部16はクライアント装置のデータ通信部21に通信文を送信し、データ通信部21はスクリプト間通信受付部27に通信文をわたし、スクリプト間通信受付部27はスクリプト実行部23に受信内容をわたし、スクリプト実行部23は受信内容を実行中のスクリプトに適用することと、クライアント装置のスクリプト実行部23で実行されるスクリプトに中間ブラウザサーバ装置1のスクリプトへデータを渡す指示がある場合、スクリプト実行部23はスクリプト間通信受付部27に宛先と送信内容をわたし、スクリプト間通信受付部27はデータ通信部21に宛先と送信内容からなる通信文をわたし、データ通信部21は中間ブラウザサーバ装置のデータ通信部16に通信文を送信し、データ通信部16はスクリプト間通信受付部18に通信文をわたし、スクリプト間通信受付部18はスクリプト実行部13に受信内容をわたし、スクリプト実行部13は受信内容を実行中のスクリプトに適用することにより、中間ブラウザサーバ装置1のスクリプト実行部13とクライアント装置2のスクリプト実行部23の間で相互にメッセージを送ることができる。
これにより、中間ブラウザサーバ装置1のスクリプト実行部とクライアント装置のスクリプト実行部が連携して動作するために、中間ブラウザサーバ装置1のスクリプト実行部で実行されるスクリプトにクライアント装置のスクリプトと通信する旨を記述すること、クライアント装置のスクリプト実行部で実行されるスクリプトに中間ブラウザサーバ装置1のスクリプトと通信する旨を記述することで、中間ブラウザサーバ装置1のスクリプト実行部とクライアント装置のスクリプト実行部が連携して動作することができる。
[第4の実施形態]
以下、第4の実施形態について図面を用いて説明する。
図11は、第4の実施形態における中間ブラウザサーバ装置およびクライアント装置を含む全体構成図である。中間ブラウザサーバ装置1、クライアント装置2A、2Bの各部について、第1の実施形態との差分のみ説明する。
中間ブラウザサーバ装置1の、DOM記憶部14は、スクリプト抽出部12より受け取ったコンテンツデータを解析して、ツリー状のデータ構造であるDOMに展開して記憶する。また、スクリプト実行部13の結果も反映する。
データ通信部16は、DOM記憶部14より受け取ったデータをクライアント装置2A、2Bに送信する。
クライアント装置2A、2Bの、データ変換部28は、データ通信部21より受け取ったコンテンツデータからスクリプト抽出部22で抽出されるscript要素を削除する。続いてクライアントスクリプトを示す記述部分を抽出し、その記述部分をHTMLにJavaScriptコードを記載する際と同様の書式に変換する。変換後のコンテンツデータはスクリプト抽出部22に送られる。
これらクライアント装置2A、2Bの各部は一般的なWebブラウザを用いて構成できる。データ変換部28についてはJavaScriptで実装して構成することができる。例えば、cscriptという新たなDOM要素を定義する処理と、DOM内のcscript要素を取得して、その要素それぞれに対してscript要素を作成し、各script要素の属性値に対応するcscript要素の属性値を代入し、代入が終わったらcscript要素を削除する処理と、script要素を削除する処理を記載したJavaScriptコードをクライアント装置2A、2Bのスクリプト実行部23が実行することで、データ変換部28を機能させることができる。
次に、第4の実施形態における、中間ブラウザサーバ装置1とクライアント装置2A、2Bの動作について、第1の実施形態との差分のみ説明する。
中間ブラウザサーバ装置1のDOM記憶部14は第1の実施形態と同様にDOMを保持する。
中間ブラウザサーバ装置1のデータ通信部16は第1の実施形態と同様にDOM記憶部14から受け取ったコンテンツデータをクライアント装置2A、2Bに送信する。
次にクライアント装置2A、2Bの動作について説明する。
クライアント装置2A、2Bの、データ通信部21は中間ブラウザサーバ装置1から受け取ったコンテンツデータをデータ変換部28にわたす。
データ変換部28は、データ通信部21から受け取ったコンテンツデータを変換する処理を行う。
データ変換部28は、データ通信部21から受け取ったデータを、(A)共通的に変換する処理と、(B)各クライアント装置に合わせて変換する処理を行う。
(A)共通的に変換する処理としては、(A1)cscriptという新たなDOM要素を定義する処理、(A2)script要素を削除する処理を行う。これにより、HTMLタグとして標準ではないcscript要素をDOMの要素として取り扱うことができ、cscript要素の定義ではscript要素と同じ属性を少なくともcscript要素が持つように定義する。
(B)各クライアント装置に合わせて変換する処理は、データ通信部21で保持するクライアント識別子に応じて行う。共通的に変換する処理を先に実行することで、cscript要素はDOM要素として取り扱うことができるようになっている。図2のコンテンツデータのclientid属性に2Aという値が指定されている。この場合、クライアント装置2Aに対して、このcscript要素がクライアントスクリプトとして有効となり、他のクライアント装置に対しては無効となる。
(B1)有効なクライアント装置でのデータ変換では、cscript要素に対応してscript要素を作成し、その属性には対応するcscript要素の属性値を代入する。script要素に対応する属性がないものは特に代入処理を行なわず、属性値の代入が終わったらcscript要素を削除する処理を行う。
(B2)無効なクライアント装置でのデータ変換では、cscript要素を削除する処理を行う。
変換後のコンテンツデータはスクリプト抽出部22に送られる。スクリプト抽出部22の処理以降は第1の実施形態と同様である。
以上、第1の実施形態との差分として説明したが、第2の実施形態および第3の実施形態に本差分を加えることで構成することもできる。
以上、第4の実施形態によれば、中間ブラウザサーバ装置1のコンテンツ取得部11が取得したコンテンツデータからスクリプト抽出部12がscript要素のスクリプトを抽出し、スクリプト実行部13がそのスクリプトを実行し、その結果のコンテンツデータがDOM記憶部14に保存され、データ通信部16からデータ通信部21にコンテンツデータがわたされ、データ変換部28がDOM記憶部14に保存されているコンテンツデータのscript要素を削除し、自クライアント装置がcscript要素の属性の記述で該当する場合は、cscript要素をscript要素に変換する処理を行い、自クライアント装置がcscript要素の属性の記述で該当しない場合は、cscript要素を削除する処理を行い、スクリプト抽出部22がscript要素のスクリプトを抽出し、スクリプト実行部23がそのスクリプトを実行することにより、1つのコンテンツデータに含まれるスクリプトを中間ブラウザサーバ装置で実行するだけでなく、クライアント装置でも実行させることができる。
これにより、WebサーバからコンテンツデータおよびJavaScriptを取得した中間ブラウザサーバ装置1がJavaScriptを自身で実行するだけでなく、中間ブラウザサーバ装置1がコンテンツデータを表示させるクライアント装置においてもJavaScriptを実行させるために、
一次クライアント装置に配信するのと同等のコンテンツデータを用意し、コンテンツデータのHTMLデータ内にクライアント装置で実行させたいスクリプトをcscript要素として記述することで、
サーバに配置された1つのコンテンツデータに含まれるスクリプトを中間ブラウザサーバ装置で実行するだけでなく、クライアント装置でも実行させることができる。
[第5の実施形態]
以下、第5の実施形態について図面を用いて説明する。
図12は、第5の実施形態における中間ブラウザサーバ装置、一次のクライアント装置および二次のクライアント装置を含む全体構成図である。中間ブラウザサーバ装置1、一次のクライアント装置2A、二次のクライアント装置2Cの各部について、第4の実施形態との差分のみ説明する。
クライアント装置2A、クライアント装置2Bの有する各部は第4の実施形態のクライアント装置2Aと同様である。
クライアント装置2AのDOM記憶部24はスクリプト抽出部22より受け取ったデータを解析して、ツリー状のデータ構造であるDOMに展開して記憶する。また、スクリプト抽出部22で抽出されたJavaScriptがスクリプト実行部23で実行された結果も反映する。
クライアント装置2Aのデータ通信部29は、DOM記憶部24から受け取ったコンテンツデータを対応する二次クライアント装置に送信する。
クライアント装置2Cのデータ通信部21は、一時クライアント装置2Aのデータ通信部29から送信されるデータを受信する。受信したデータはデータ変換部28に送られる。
次に、第5の実施形態における、クライアント装置2A、クライアント装置2Cの動作について具体例を用いて説明する。第4の実施形態との差分のみ説明する。
図13に示すコンテンツデータを、第4の実施形態と同様に、クライアント装置2Aのデータ通信部21が取得し、データ変換部28でデータが変換され、クライアントスクリプトを実行され、実行結果がDOM記憶部24に反映される。
データ変換部28は、データ通信部21から受け取ったデータを変換する処理を行う。
データ変換部28は、データ通信部21から受け取ったデータを、共通的に変換する処理と、各クライアント装置に合わせて変換する処理を行う。
(A)共通的に変換する処理としては、(A1)cscriptという新たなDOM要素を定義する処理、(A2)script要素を削除する処理、を行う。これにより、HTMLタグとして標準ではないcscript要素をDOMの要素として取り扱うことができ、cscript要素の定義ではscript要素と同じ属性を少なくともcscript要素が持つように定義する。
(B)各クライアント装置に合わせて変換する処理は、データ通信部21で保持するクライアント識別子に応じて行う。共通的に変換する処理を先に実行することで、cscript要素はDOM要素として取り扱うことができるようになっている。図13のコンテンツデータには、cscript要素が2つあり、clientid属性が2A、2Cという値が指定されている。この場合、クライアント装置2Aに対しては、clientid属性が2Aとなっているcscript要素がクライアントスクリプトとして有効となる。
(B1)有効なcscript要素のデータ変換では、cscript要素に対応してscript要素を作成し、その属性には対応するcscript要素の属性値を代入する。script要素に対応する属性がないものは特に代入処理を行なわない。
(B2)有効ではないcscript要素は、データ変換を行わない。
データ通信部29は、DOM記憶部24からコンテンツデータを受け取り、クライアント装置2Cに送信する。
クライアント装置2Cのデータ変換部28が受け取るコンテンツデータを図14に示す。クライアント装置2Cのデータ変換部28も、クライアント装置2Bのデータ変換部28と同様に動作する。
すなわち、(A1)cscriptという新たなDOM要素を定義する処理、(A2)script要素を削除する処理を行い、cscript要素のclientid属性と自装置のクライアント識別子を比較、判別し、有効なcscript要素であれば、cscript要素に対応するscript要素を作成し、そのscript要素の属性に、対応するcscript要素の属性値を代入する。
ここまで、中間ブラウザサーバ装置、一次のクライアント装置、二次のクライアント装置の構成で説明したが、本手法により、より多段構成であっても、スクリプトを指定の装置のみで実行させることが可能となる。また、各段階でのクライアント装置の数が複数であっても、本手法によりスクリプトを指定の装置で実行させることが可能となる。
以上、第5の実施形態によれば、中間ブラウザサーバ装置1のコンテンツ取得部11が取得したコンテンツデータからスクリプト抽出部12がscript要素のスクリプトを抽出し、スクリプト実行部13がそのスクリプトを実行し、その結果のコンテンツデータがDOM記憶部14に保存され、データ通信部16からデータ通信部21にコンテンツデータがわたされ、データ変換部28がDOM記憶部14に保存されているコンテンツデータのscript要素を削除し、自クライアント装置がcscript要素の属性の記述で該当する場合は、cscript要素をscript要素に変換する処理を行い、自クライアント装置がcscript要素の属性の記述で該当しない場合は、cscript要素を削除する処理を行い、スクリプト抽出部22がscript要素のスクリプトを抽出し、スクリプト実行部23がそのスクリプトを実行することにより、1つのコンテンツデータに含まれるスクリプトを中間ブラウザサーバ装置で実行するだけでなく、クライアント装置でも実行させることができる。
これにより、WebサーバからコンテンツデータおよびJavaScriptを取得した中間ブラウザサーバ装置(中間ブラウザサーバ装置)がJavaScriptを自身で実行するだけでなく、中間ブラウザサーバ装置(中間ブラウザサーバ装置)がコンテンツデータを表示させるクライアント装置においてもJavaScriptを実行させるために、
一次のクライアント装置に配信するのと同等のコンテンツデータを用意し、コンテンツデータのHTMLデータ内にクライアント装置で実行させたいスクリプトをcscript要素として記述することで、
サーバに配置された1つのコンテンツデータに含まれるスクリプトを中間ブラウザサーバ装置で実行するだけでなく、一次のクライアント装置、二次のクライアント装置といった多段階のクライアント装置でも実行させることができる。
[第6の実施形態]
以下、第6の実施形態について図面を用いて説明する。
図15は、第6の実施形態における中間ブラウザサーバ装置およびクライアント装置を含む全体構成図である。中間ブラウザサーバ装置1、クライアント装置2A、2Bの各部について、第1の実施形態との差分のみ説明する。
中間ブラウザサーバ装置1のデータ通信部16は、データ変換部15より受け取ったデータをクライアント装置2A、2Bに送信する。その際、配信ルール記憶部19にクライアント装置の情報をわたす。データ通信部16は、配信ルール記憶部19から返却されてきたコンテンツデータの要素の情報とデータ変換部15より受け取ったデータを照らし合わせて合致するものをクライアント装置2A、2Bへ送信する。
配信ルール記憶部19は、データ通信部16からクライアント装置の情報を受け取ると、そのクライアント装置の情報に合わせて配信するコンテンツデータの要素の情報をデータ通信部16に返却する。
次に、第6の実施形態における中間ブラウザサーバ装置の動作について、第1の実施形態との差分のみ説明する。
データ通信部16は、データ変換部15から受け取ったコンテンツデータを対応するクライアント装置に送信する。ここで、どのコンテンツデータをどのクライアント装置に送信すべきかを判別するために、配信ルール記憶部19にクライアント装置の情報を送る。
配信ルール記憶部19は、あらかじめルールが定義されている。配信ルール記憶部19は、クライアント装置の情報を受け取ると、このルールに従ってそのクライアント装置を特定するコンテンツデータ特定情報を返却する。
図16に1つめのルールであるブラウザグループルールの例を示す。クライアント装置の情報に応じて必ずどれか1つのグループに属するようにルールを定義する。例えば、画面の横幅が500ピクセル以下の場合「小型端末グループ」とし、500ピクセルより大きい場合「大型端末グループ」とするようにルールを定義する。
図17に2つめのルールであるグループ毎要素選択ルールの例を示す。クライアント装置の属するグループに応じた、送信すべきコンテンツデータ特定情報のルールを定義する。例えば、小型端末グループにはclass属性の値がsmallとなっている要素を送信し、大型端末グループにはclass属性の値がlargeとなっている要素を送信するようにルールを定義する。
この例の場合、配信ルール記憶部19は、データ通信部16より受け取ったクライアント装置の情報から画面の横幅の情報を用いて、各クライアント装置に送信するコンテンツデータを特定するためにclass属性の条件を返却する。
データ通信部16は、送信するコンテンツデータ特定情報を受け取り、そのコンテンツデータ特定情報にある方法をコンテンツデータに適用する。例えば、class属性の値を比較しコンテンツデータ特定情報と一致する要素をクライアント装置に送信する。
ここでのコンテンツデータは、データ変換部15にて、cscriptという新たなHTML要素を定義する処理、script要素を削除する処理を行っており、cscript要素を定義する処理により、HTMLタグとして標準ではないcscript要素をHTMLの要素と同等に取り扱うことができるため、cscript要素にclass属性が設定されている場合、他の要素と同様に、コンテンツデータ特定情報と一致するcscript要素をクライアント装置に送信する。
以上、第1の実施形態との差分として説明したが、第2乃至第5の実施形態に本差分を加えることで構成することもできる。
以上、中間ブラウザサーバ装置1が配信ルール記憶部19を用いて、クライアント装置に応じたコンテンツデータを送信する実施例について説明したが、これは一例である。
クライアント装置の情報を配信ルール記憶部19はデータ通信部16より受け取るとしたが、外部のクライアント装置の認証システムから受け取るとしてもよいし、利用者の操作から情報を受け取るとしてもよい。
配信ルール記憶部19を、ファイル参照で実施してもよいし、メモリ参照で実施してもよいし、データベース参照で実施してもよい。
以上、第6の実施形態によれば、中間ブラウザサーバ装置1のコンテンツ取得部11が取得したコンテンツデータからスクリプト抽出部12がscript要素のスクリプトを抽出し、スクリプト実行部13がそのスクリプトを実行し、その結果のコンテンツデータがDOM記憶部14に保存され、データ変換部15がDOM記憶部14に保存されているコンテンツデータを変換し、データ通信部16が、通信相手のクライアント装置の情報を配信ルール記憶部19にわたし、配信ルール記憶部19は、記憶しているルールに従って、クライアント装置に応じたコンテンツデータの送信範囲を決定し、コンテンツデータの送信範囲をデータ通信部16に返却し、データ通信部16からデータ通信部21に配信ルール記憶部19で決められた範囲のコンテンツデータがわたされ、スクリプト抽出部22がscript要素のスクリプトを抽出し、スクリプト実行部23がそのスクリプトを実行することにより、1つのコンテンツデータに含まれるスクリプトを中間ブラウザサーバ装置で実行するだけでなく、クライアント装置でも実行させることができる。
これにより、中間ブラウザサーバ装置が、どのクライアント装置にコンテンツデータのどこを送信するかを判別する際に、クライアント識別子やクライアント適合性以上の自由度をもたせるために、クライアント装置の情報とコンテンツデータの配信範囲の決定ルールを、コンテンツデータ以外の場所で記述し、それを記憶し、ルールを適用する手段をもつことで、
サーバに配置された1つのコンテンツデータに含まれるスクリプトを中間ブラウザサーバ装置で実行するだけでなく、クライアント識別子やクライアント適合性以上の自由度をもった指定方法でクライアント装置を指定し、クライアント装置でも実行させることができる。
[第7の実施形態]
以下、第7の実施形態について図面を用いて説明する。
図18は、第7の実施形態における中間ブラウザサーバ装置およびクライアント装置を含む全体構成図である。中間ブラウザサーバ装置1、クライアント装置2A、2Bの各部について、第1の実施形態との差分のみ説明する。
中間ブラウザサーバ装置1のデータ通信部16は、クライアント装置権限管理部101にクライアント装置2A、2Bとの通信状況の情報をわたし、クライアント装置権限管理部101は、データ通信部16より中間ブラウザサーバ装置1と通信しているクライアント装置の情報を受け取り、通信状況情報を保存する。
次に、第7の実施形態における中間ブラウザサーバ装置の動作について、第1の実施形態との差分のみ説明する。
クライアント装置2Aが中間ブラウザサーバ装置1と通信を開始すると、データ通信部16はクライアント装置権限管理部101に、クライアント装置2Aとの通信開始の旨の情報をわたし、クライアント装置権限管理部101はその情報を保存する。この情報の中には、クライアント装置2Aがこの接続空間の代表権を持つ旨が含まれている。
クライアント装置2Bが中間ブラウザサーバ装置1と通信を開始し、クライアント装置2Aの接続空間に参加すると、データ通信部16はクライアント装置権限管理部101に、クライアント装置2Bとの通信開始およびクライアント装置2A接続空間への参加の旨の情報をわたし、クライアント装置権限管理部101はその情報を保存する。
同一の接続空間に参加するクライアント装置は、1つのコンテンツデータを中間ブラウザサーバ装置で展開したものを共有することができる。したがって、いずれかのクライアント装置の表示部25内の操作がすべてのクライアント装置の表示に反映される。
ここで代表権の有無による違いを説明する。代表権を持つクライアント装置2Aが利用を終了すると、接続空間の利用が終了となり、そこに参加しているクライアント装置2Bの利用も強制的に終了となる。代表権を持たないクライアント装置2Bが利用を終了しても接続空間の利用は終了とならず、代表権を持つクライアント装置2Aの利用は終了しない。
以上、第1の実施形態との差分として説明したが、第2乃至第5の実施形態に本差分を加えることで構成することもできる。
以上、中間ブラウザサーバ装置1がクライアント装置権限管理部101を用いて、クライアント装置に応じたクライアント装置の接続状態を制御する実施例について説明したが、これは一例である。
代表権の有無によって、他の制御を行ってもよい。
以上、第7の実施形態によれば、中間ブラウザサーバ装置1のコンテンツ取得部11が取得したコンテンツデータからスクリプト抽出部12がscript要素のスクリプトを抽出し、スクリプト実行部13がそのスクリプトを実行し、その結果のコンテンツデータがDOM記憶部14に保存され、データ変換部15がDOM記憶部14に保存されているコンテンツデータを変換し、データ通信部16は、クライアント装置権限管理部101にクライアント装置との通信状況の情報をわたし、クライアント装置権限管理部101はクライアント装置の通信状況の情報を保存し、データ通信部16はクライアント装置が切断した時には。代表権の有無をクライアント装置権限管理部101の情報を参照して、代表権がある場合はすべてのクライアント装置を切断し、代表権がない場合は特に処理をおこなわず、データ通信部16からデータ通信部21にコンテンツデータをわたし、スクリプト抽出部22がscript要素のスクリプトを抽出し、スクリプト実行部23がそのスクリプトを実行することにより、1つのコンテンツデータに含まれるスクリプトを中間ブラウザサーバ装置で実行するだけでなく、クライアント装置でも実行させることができる。
これにより、同じ接続空間に接続しているクライアント装置の利用者が異なる場合に、利用を開始した者が利用していない状況で、別の利用者が継続利用することを防ぐために、クライアント装置に代表権という属性をもたせることで、サーバに配置された1つのコンテンツデータに含まれるスクリプトを中間ブラウザサーバ装置で実行するだけでなく、クライアント装置でも実行させることができ、クライアント装置の利用者が異なる場合でも、クライアント装置の権限に応じた制御ができる。
なお、各実施の形態の中間ブラウザサーバ装置やクライアント装置としてコンピュータを機能させるためのコンピュータプログラムは、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスク、磁気テープなどのコンピュータ読み取り可能な記録媒体に記録でき、また、インターネットなどの通信網を介して伝送させて、広く流通させることができる。
1…中間ブラウザサーバ装置
3…コンテンツ配信装置
2A、2B、2C…クライアント装置
11…コンテンツ取得部
12…スクリプト抽出部
13…スクリプト実行部
14…DOM記憶部
15…データ変換部
16…データ通信部
17…表示部
18…スクリプト間通信受付部
19…配信ルール記憶部
21…データ通信部
22…スクリプト抽出部
23…スクリプト実行部
24…DOM記憶部
25…表示部
26…コンテンツ取得部
27…スクリプト間通信受付部
28…データ変換部
29…データ通信部
101…クライアント装置権限管理部

Claims (3)

  1. 受信したコンテンツデータをクライアント装置に送信する通信装置であって、
    コンテンツデータを受信するコンテンツ取得部と、
    当該コンテンツデータから前記通信装置で実行すべきスクリプトを示す予め設定された第1のタグで記述された部分を抽出するスクリプト抽出部と、
    前記抽出された部分に含まれるスクリプト又は当該部分に含まれるURIにより得たスクリプトを実行するスクリプト実行部と、
    前記スクリプトの実行結果を前記コンテンツデータに反映させるDOM記憶部と、
    前記コンテンツデータから前記第1のタグで記述された部分を削除し、前記クライアント装置で実行されるクライアントスクリプトを示す予め設定された第2のタグを、前記第1のタグに変換するデータ変換部と、
    前記データ変換部による処理後のコンテンツデータを前記クライアント装置に送信するデータ通信部と
    を備えることを特徴とする通信装置。
  2. 前記データ変換部は、前記第2のタグで記述された部分に複数のクライアント装置の1つを示す値が含まれる場合、当該値に対応するクライアント装置に送信するコンテンツデータについては、受信されたコンテンツデータから前記第1のタグで記述された部分を削除し、前記第2のタグを前記第1のタグに変換し、前記データ通信部は、当該変換後のコンテンツデータを当該値に対応するクライアント装置に送信する一方、
    前記データ変換部は、当該値に対応するクライアント装置以外のクライアント装置に送信するコンテンツデータについては、受信されたコンテンツデータから前記第1のタグで記述された部分と前記第2のタグで記述された部分を削除し、前記データ通信部は、当該削除後のコンテンツデータを当該値に対応するクライアント装置以外のクライアント装置に送信する
    ことを特徴とする請求項1記載の通信装置。
  3. 受信したコンテンツデータをクライアント装置に送信する通信装置の動作方法であって、
    前記通信装置のコンテンツ取得部が、コンテンツデータを受信し、
    前記通信装置のスクリプト抽出部が、当該コンテンツデータから前記通信装置で実行すべきスクリプトを示す予め設定された第1のタグで記述された部分を抽出し、
    前記通信装置のスクリプト実行部が、前記抽出された部分に含まれるスクリプト又は当該部分に含まれるURIにより得たスクリプトを実行し、
    前記通信装置のDOM記憶部が、前記スクリプトの実行結果を前記コンテンツデータに反映させ、
    前記通信装置のデータ変換部が、前記コンテンツデータから前記第1のタグで記述された部分を削除し、前記クライアント装置で実行されるクライアントスクリプトを示す予め設定された第2のタグを、前記第1のタグに変換し、
    前記通信装置のデータ通信部が、前記データ変換部による処理後のコンテンツデータを前記クライアント装置に送信する
    ことを特徴とする通信装置の動作方法。
JP2014165122A 2014-08-14 2014-08-14 通信装置およびその動作方法、クライアント装置およびその動作方法、ならびにコンテンツデータ Active JP5914594B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014165122A JP5914594B2 (ja) 2014-08-14 2014-08-14 通信装置およびその動作方法、クライアント装置およびその動作方法、ならびにコンテンツデータ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014165122A JP5914594B2 (ja) 2014-08-14 2014-08-14 通信装置およびその動作方法、クライアント装置およびその動作方法、ならびにコンテンツデータ

Publications (2)

Publication Number Publication Date
JP2016042227A JP2016042227A (ja) 2016-03-31
JP5914594B2 true JP5914594B2 (ja) 2016-05-11

Family

ID=55591973

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014165122A Active JP5914594B2 (ja) 2014-08-14 2014-08-14 通信装置およびその動作方法、クライアント装置およびその動作方法、ならびにコンテンツデータ

Country Status (1)

Country Link
JP (1) JP5914594B2 (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7398055B2 (en) * 2003-02-14 2008-07-08 Ntt Docomo, Inc. Electronic device and program
JP3907056B2 (ja) * 2003-02-14 2007-04-18 株式会社エヌ・ティ・ティ・ドコモ 電子機器およびプログラム
JP2006243829A (ja) * 2005-02-28 2006-09-14 Toshiba Corp ウェブコンテンツ変換方法およびウェブコンテンツ変換システム
JP2011065385A (ja) * 2009-09-16 2011-03-31 Access Co Ltd マークアップ言語文書変換装置、マークアップ言語文書変換方法、およびマークアップ言語文書変換プログラム

Also Published As

Publication number Publication date
JP2016042227A (ja) 2016-03-31

Similar Documents

Publication Publication Date Title
KR102109985B1 (ko) 애플리케이션 디스커버리
JP2017517063A (ja) インスタントメッセージングシステムおよび方法
JP5258861B2 (ja) Gui処理装置、gui処理方法およびgui処理プログラム
US20110294490A1 (en) Remote control of a telephone
JP5601843B2 (ja) コミュニティ・ウィジェット提供方法及びその装置
US20150188983A1 (en) Dynamically launching a server-based application on a mobile device
CN106878460B (zh) 通信处理方法及装置
JP2013097398A (ja) 通信システム及びその制御方法
US10021165B2 (en) Method of sharing browsing on a web page displayed by a web browser
CN102272747A (zh) 用于管理远程用户界面的状态信息的方法和装置
JP2014182411A (ja) 情報処理装置、ネットワークシステム、処理実行方法及び処理実行プログラム
KR20130065777A (ko) 인스펙터 스크립트 삽입을 통한 웹 콘텐츠 공유 장치 및 방법
JP2015141473A (ja) サーバーシステム、サーバーシステムを制御する方法、プログラム
JP2013254404A (ja) データ通信システムおよび方法
JP2012173801A (ja) 通信装置、その制御方法及びプログラム
JP5914594B2 (ja) 通信装置およびその動作方法、クライアント装置およびその動作方法、ならびにコンテンツデータ
US20130218955A1 (en) System and method for providing a virtual collaborative environment
KR102414429B1 (ko) 모바일 메신저에서의 웹링크 제공 단말, 웹링크 제공 방법 및 웹링크 제공 서버
KR20120094281A (ko) 캔버스 오브젝트를 이용하는 그래픽 기반의 원격 사용자 인터페이스를 저장 및 복원하는 방법 및 그 서버, 캔버스 오브젝트를 이용하는 그래픽 기반의 원격 사용자 인터페이스를 저장 및 복원하는 방법 및 그 클라이언트
KR20190069284A (ko) 인터넷 서비스의 ocf 리소스 변환 및 연동 방법, 및 이를 수행하는 장치
CN103227827A (zh) 请求资源的方法和装置
JP6157444B2 (ja) 字幕送出装置及びその制御プログラム、並びに字幕配信システム
JP6436762B2 (ja) 情報処理装置およびサービス提供方法
JP7205129B2 (ja) 情報処理システム、クライアント装置及び情報処理プログラム
US20160100217A1 (en) System and method for optimizing delivery of video content in native mobile applications

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160209

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160307

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: 20160329

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160404

R150 Certificate of patent or registration of utility model

Ref document number: 5914594

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150