JP2014157549A - コンテンツ閲覧装置 - Google Patents

コンテンツ閲覧装置 Download PDF

Info

Publication number
JP2014157549A
JP2014157549A JP2013028996A JP2013028996A JP2014157549A JP 2014157549 A JP2014157549 A JP 2014157549A JP 2013028996 A JP2013028996 A JP 2013028996A JP 2013028996 A JP2013028996 A JP 2013028996A JP 2014157549 A JP2014157549 A JP 2014157549A
Authority
JP
Japan
Prior art keywords
content
function
prefetch
processing
context
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
JP2013028996A
Other languages
English (en)
Other versions
JP6057764B2 (ja
Inventor
Junpei Hado
淳平 羽藤
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2013028996A priority Critical patent/JP6057764B2/ja
Publication of JP2014157549A publication Critical patent/JP2014157549A/ja
Application granted granted Critical
Publication of JP6057764B2 publication Critical patent/JP6057764B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Digital Computer Display Output (AREA)
  • Information Transfer Between Computers (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

【課題】画面遷移前にユーザが意図しない処理が開始されることがなく、画面切り替え時に不完全な画面が表示されることのないコンテンツ閲覧装置を得る。
【解決手段】先読み制御部105は、イベント制御部101からの制御コマンドにより、コンテンツの先読みを行う。コンテキスト制御部106は、先読みしたコンテンツのための先読み用コンテキストを構築する。表示制御部107は、先読みしたコンテンツの事前描画を行う。スクリプト実行部104は、先読み用コンテキストに基づいてスクリプトを実行する。画面遷移が開始されると、コンテキスト制御部106は通常コンテキストに再構築し、スクリプト実行部104は、スクリプトの遅延実行を行う。
【選択図】図4

Description

本発明は、現在表示中のコンテンツから遷移可能なコンテンツに関する情報を先読みするコンテンツ閲覧装置に関するものである。
近年の情報通信技術およびモバイル情報通信端末の発展と普及により、ユーザがいつでもどこでもインターネット上に偏在するコンテンツを閲覧する事が可能な環境が整備されている。近年ではコンテンツを定義するための言語であるコンテンツ記述言語としてHyperText Markup Language(以下、HTMLという)が主流となっており、そのコンテンツを閲覧するためのコンテンツ閲覧装置としてはウェブ・ブラウザと呼ばれるソフトウエアが利用される事が多い。
HTMLはタグを用いてコンテンツの構造を記述する方法が採用されている。また、コンテンツ中のタグで記述されたオブジェクトの見た目に関する情報はCascading Style Sheets(以下、CSSという)等のスタイルシートによって、記述される事が多い。また、コンテンツ中で取り扱うオブジェクトの動作や制御に関する情報はJavaScript(登録商標/以下省略して記載)等のスクリプト言語によって記述される事が多い。
ところで、大容量のコンテンツを読み込む場合や通信速度の遅い環境では、ユーザが現在のコンテンツから、次のコンテンツへの画面遷移を要求しても、次のコンテンツの画面が実際に表示されるまでに長い時間がかかってしまう課題があった。
このような課題に対しては、例えば特許文献1に示すような装置では、Webページ上の論理的なリンク構造に基づく階層的なページ先読み機能を実現する事により、ユーザの待機時間を削減している。この方法は、現在表示中のコンテンツから遷移可能なコンテンツに関する情報をリンク構造より取得し、画面遷移の要求が出る前に、遷移可能なコンテンツを先読みしておく事で、従来では画面遷移の要求が発行されてから発生していたコンテンツの取得処理を前倒し実行する事で、画面遷移するまでの時間を短縮するようにしたものである。
一方で、従来では静的な表示が主流であったコンテンツは、近年のHTMLを代表とするコンテンツ記述言語の高機能化に伴い、アニメーションや3次元グラフィックス、音声や動画再複合的にコンテンツ中で取り扱い可能となり、動的なコンテンツ表示が主流となりつつある。その場合、JavaScriptで記述される動的コンテンツの表示制御処理が複雑化する事となり、画面遷移時にその表示制御処理が発生し、長い時間がかかってしまう課題が発生する。しかし、上記特許文献1に示されているようなコンテンツの先読み方法だけでは、画面遷移時に発生する表示制御処理を短縮する事が出来ず、上記課題に対処する事が出来ない。
そこで、上記課題に対処するため、先読み処理でコンテンツを読み込むだけではなく、CSSおよびJavaScriptの処理までを画面遷移前に実施する方法が考えられるが、JavaScriptの処理を画面遷移前に実施した場合、本来そのコンテンツが画面に表示された状態で動作すべき諸々の処理が画面表示前に動作開始する事になり、本来ユーザが意図していない処理が非表示状態で起動する、複数のコンテンツに関するアニメーションや動画再生と言った、断続的に発生する処理が同時に発生するため、処理負荷が高くなる、と言った課題が発生する。
このような課題に対して、例えば特許文献2に記載された装置では、コンテンツに記述されたリンクをユーザが選択する前に、そのリンク先に存在するコンテンツを先読みするとともに、そのコンテンツを解析して、スクリプト処理を伴う表示制御に関する情報が記述された構造単位を除き、表示制御用の第1構造化データを生成し、ユーザ操作によってそのリンクが選択された場合に、第1構造化データを用いて表示画面を表示し、除かれたスクリプト処理を伴い表示制御用の第2構造化データを生成し、その第2構造化データを用いて表示画面を表示しなおす制御を行っている。
この方法ではコンテンツを先読みするだけではなく、そのコンテンツを解析しスクリプト処理を伴う記述を除外した第1構造化データを生成し、画面遷移時にはその第1構造化データを用いて画面表示を行う事で画面遷移に要する時間を短縮していると共に、スクリプト処理を行った第2構造化データを生成し、画面表示をしなおす事で完全な画面を表示している。
特開2000−311108号公報 特開2011−65490号公報
しかしながら、上記特許文献2に示されたような従来の方法では、コンテンツの解析処理のみを事前に実施するため、本来画面遷移時の主要な処理負荷であるJavaScriptに関わる表示制御処理が実施出来ていないため、その処理に関する処理時間が画面遷移時に発生するという課題があった。また、画面遷移時にスクリプト処理を行っていない第1構造化データを用いて画面表示を行うため、不完全な画面表示が必ず発生するという課題もあった。
この発明は上記のような課題を解決するためになされたもので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することのできるコンテンツ閲覧装置を得ることを目的とする。
この発明に係るコンテンツ閲覧装置は、コンテンツの先読みを行うコンテンツ閲覧装置であって、先読みしたコンテンツの解析処理を行う先読み解析手段と、先読みしたコンテンツのスクリプトを実行するための先読みコンテキストを構築する先読みコンテキスト構築手段と、先読み解析手段によって解析された先読みしたコンテンツに関連する少なくともスクリプトとレイアウト処理とを先読みコンテキストに基づいて実行する事前実行手段と、先読みしたコンテンツを非表示状態として、描画処理を実行する事前描画手段と、現在画面から次画面に切り替わる前段で、次画面が先読みしたコンテンツのうち少なくとも一つであるかを判定する先読みコンテンツ検索手段と、先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、先読みコンテキストの少なくとも一部を修正して通常コンテキストに再構築するコンテキスト復旧手段と、先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、事前実行手段で実行されたスクリプトの実行結果に基づいてスクリプトの実行を行う先読みスクリプト遅延実行手段と、先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、現在画面を非表示状態とすると共に、事前描画手段で描画されたコンテンツの事前描画結果を表示状態とする事前描画結果画面出力手段とを備えたものである。
この発明のコンテンツ閲覧装置は、コンテンツを先読みすると共に事前描画を行い、かつ、スクリプトの遅延実行させるようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
通常のブラウザ処理を示すフローチャートである。 先読みブラウザ処理を示すフローチャートである。 この発明のコンテンツ閲覧装置における動作を概念的に示す説明図である。 この発明の実施の形態1によるコンテンツ閲覧装置の構成図である。 この発明の実施の形態1のコンテンツ閲覧装置におけるユーザ操作から装置内部イベント生成までの動作を示すフローチャートである。 この発明の実施の形態1のコンテンツ閲覧装置における装置内部イベントから装置内部イベント生成までの動作を示すフローチャートである。 この発明の実施の形態1のコンテンツ閲覧装置における解析実行部の処理を示すフローチャートである。 この発明の実施の形態1のコンテンツ閲覧装置における先読み制御部の処理を示すフローチャートである。 この発明の実施の形態1のコンテンツ閲覧装置における表示制御処理(その1)を示すフローチャートである。 この発明の実施の形態1のコンテンツ閲覧装置における表示制御処理(その2)を示すフローチャートである。 この発明の実施の形態1のコンテンツ閲覧装置におけるバッファデータ構造を示す説明図である。 この発明の実施の形態1のコンテンツ閲覧装置におけるバッファデータの管理例を示す説明図である。 この発明の実施の形態1のコンテンツ閲覧装置における関数識別情報と対応する関数を管理するためのデータ構造を示す説明図である。 この発明の実施の形態1のコンテンツ閲覧装置におけるタイマ開始記録関数による記録データ例を示す説明図である。 この発明の実施の形態1のコンテンツ閲覧装置における画面遷移処理を示すフローチャートである。 この発明の実施の形態2によるコンテンツ閲覧装置の構成図である。 この発明の実施の形態2のコンテンツ閲覧装置における先読み制御部の処理を示すフローチャートである。 この発明の実施の形態2のコンテンツ閲覧装置における外部情報処理装置の処理を示すフローチャートである。 この発明の実施の形態3によるコンテンツ閲覧装置の構成図である。 この発明の実施の形態3のコンテンツ閲覧装置における先読み制御部の処理を示すフローチャートである。 この発明の実施の形態3のコンテンツ閲覧装置における先読み制御部の処理を示すフローチャートである。
実施の形態1.
以下、本発明の具体的な実施の形態を説明する前に、本発明の適用対象の一つであるウェブ・ブラウザの基本的な処理を図1を用いて説明する。
ウェブ・ブラウザは、起動すると、デフォルトで設定されている、もしくはユーザから指定されるURL(Uniform Resource Locator)を利用して、表示すべきコンテンツのHTMLファイルをコンテンツサーバに要求する(ステップST101)。ウェブ・ブラウザは、コンテンツサーバからステップST101で要求したHTMLファイルを受信する(ステップST102)と、そのコンテンツを表示するためにHTMLファイル解析処理(ステップST103)を開始する。その解析処理の途中で、HTMLファイルに記述されているタグの内容によっては、そのHTMLファイルに関連付けされている外部リソースをサーバに要求する処理(ステップST104)や、関連付けされているJavaScriptの実行(ステップST105)が実施される。特にJavaScript処理はHTML解析処理の途中でブロッキング処理として行われるため、実行されるスクリプトの内容に依存した処理時間がHTMLファイル解析処理時間に反映される事になる。
ステップST103のHTMLファイル解析処理の終了後、その解析結果に対して、HTMLファイルに関連付けされたCSSを用いて、コンテンツの見た目の制御処理(ステップST106)および、画面上に表示するために必要な表示データの生成処理(ステップST107)が実行され、最終的に画面表示(ステップST108)される。
コンテンツの内容によっては、ステップST108の後もCSSやJavaScriptの処理が断続的に実行され、画面表示内容の更新処理が駆動する場合もある。図1では一つの例としてJavaScript処理が断続的に実行された場合のフロー(ステップST109)を図示しており、ステップST108の後にステップST105で断続的に動作するスクリプトが起動し、ステップST106へと処理が繰り返される事になる。また、ユーザの操作やJavaScriptの処理によって、遷移すべきコンテンツが決定すると、その遷移すべきコンテンツのURLを用いて、ステップST101から処理が繰り返される。
以上の様に、一般的なウェブ・ブラウザは、現在表示中のコンテンツで何らかの処理によって遷移すべきコンテンツが決定してからその遷移すべきコンテンツに対する処理を行うため、画面切り替えに要する時間にステップST101からステップST107の処理に要する時間が上乗せされる事になり、画面切り替えに長い時間がかかる要因となっていた。
次に、例えば特許文献1を代表とするコンテンツの先読みを行うウェブ・ブラウザの基本的な処理を、図2を用いて説明する。
ウェブ・ブラウザは起動すると、デフォルトで設定されている、もしくはユーザから指定されるURLを利用して、表示すべきコンテンツのHTMLファイルをコンテンツサーバに要求し(ステップST101)、コンテンツサーバからHTMLファイルを受信する(ステップST102)と、そのコンテンツを表示するためにHTMLファイル解析処理(ステップST103)を開始するのは、図1の処理と同様である。一方、ウェブ・ブラウザは、取得したHTMLファイルに対して、このコンテンツから遷移可能なコンテンツ情報を抽出し、そのコンテンツを先読み処理する(ステップST201)。なお、この例では、先読み処理をHTMLファイル解析処理と並行して処理を行わせているが、HTMLファイル解析処理の解析結果を用いて、先読み処理を開始させても構わない。
遷移可能なコンテンツ情報を抽出する具体的な方法として幾つか例示すると、HTMLのアンカータグ(<a>)のhrefプロパティを抽出することで、遷移可能なコンテンツのURLを抽出することが可能である。また、JavaScript中におけるlocation.hrefへの値変更を行っている記述の、変更する値を抽出することで、遷移可能なコンテンツのURLを抽出することが可能である。また、このような先読みされたコンテンツは先読み結果として保存する(ステップST202)。
HTMLファイル解析処理(ステップST103)の途中で、HTMLファイルに記述されているタグの内容によっては、そのHTMLファイルに関連付けされている外部リソースをサーバに要求する処理(ステップST104)や、関連付けされているJavaScriptの実行(ステップST105)が実施されることや、ステップST109の処理は図1に示した処理と同様である。
一方、ユーザの操作やJavaScriptの処理によって、遷移すべきコンテンツが決定すると、その遷移すべきコンテンツのURLを用いて、先読み反映処理(ステップST203)において、遷移すべきコンテンツが先読みされ、先読み結果として保存されているのかを確認し、保存されている場合には、その先読みされたコンテンツを、先読み結果(ステップST202)から取得してHTMLファイル解析を行う(ステップST103)。逆に、ステップST203において、先読み結果として保存されていない場合には、遷移すべきコンテンツのURLを用いて、HTMLファイル要求(ステップST101)を行う。
このように、表示されているコンテンツから遷移可能なコンテンツを先読みすることで、画面遷移時のHTMLファイルの取得処理が発生しない分、画面遷移が高速化する。しかしながら、HTMLファイルの解析処理や関連リソース取得処理、関連スクリプトの実行処理等は画面遷移時に発生し、その処理が画面遷移の遅延につながっている。
そこで、本発明では、先読み処理を行うと共にこの先読み結果に基づく事前描画を行い、かつ、事前描画を行う際に問題となる、スクリプトやイベント処理が開始されてしまうことを避けるための遅延実行処理を行うようにしている。図3は、本発明の先読み+事前描画処理を概念的に示す説明図である。図示のように、次画面候補ソースを前画面の表示中に読み込んで事前描画を行い、次画面への画面遷移が開始されると直ちに事前描画した画面を表示するようにしている。また、先読み+事前描画を行う際に画面切替まで処理を遅延させる独自関数で上書きしている。以下、このような処理を実現する実施の形態について説明する。
図4は、実施の形態1のコンテンツ閲覧装置を示す構成図である。
図示のように、コンテンツ閲覧装置100は、イベント制御部101、解析実行部102、通信部103、スクリプト実行部104、先読み制御部105、コンテキスト制御部106、表示制御部107、表示部108を備えている。
イベント制御部101は、イベントの発生に基づき、解析実行部102、通信部103、スクリプト実行部104、先読み制御部105に対して制御コマンドを発行し、コンテンツ閲覧装置100における各部の制御を行う制御部である。解析実行部102は、イベント制御部101からの制御コマンドを受けてコンテンツの解析を行う処理部である。通信部103は、イベント制御部101からの制御コマンドを受けて、ネットワーク200への接続やローカルのファイルシステムへのアクセスを行ってコンテンツの取得を行う処理部である。スクリプト実行部104は、解析実行部102で解析されたスクリプトの実行を行い、また、コンテキスト制御部106によって構築または復旧されたコンテキストに基づいてスクリプトの実行を行う処理部である。先読み制御部105は、イベント制御部101からの制御コマンドを受けてコンテンツの先読みを行う処理部である。コンテキスト制御部106は、通常の表示すべきコンテンツと、先読み対象のコンテンツとで、異なる処理を解析実行部102やスクリプト実行部104および表示制御部107で行わせる事を目的にコンテキストを先読みコンテンツ用に変更する処理部である。表示制御部107は、コンテンツの表示部108への表示制御を行う制御部であり、画面遷移時に先読みしたコンテンツの事前描画結果を用いて表示制御を行うよう構成されている。表示部108は、コンテンツの表示を行う表示装置である。
また、実施の形態1のコンテンツ閲覧装置100は、先読みしたコンテンツの解析処理を行う先読み解析手段と、先読みしたコンテンツのスクリプトを実行するための先読みコンテキストを構築する先読みコンテキスト構築手段と、先読み解析手段によって解析された先読みしたコンテンツに関連する少なくともスクリプトとレイアウト処理とを先読みコンテキストに基づいて実行する事前実行手段と、先読みしたコンテンツを非表示状態として、描画処理を実行する事前描画手段と、現在画面から次画面に切り替わる前段で、次画面が先読みしたコンテンツのうち少なくとも一つであるかを判定する先読みコンテンツ検索手段と、先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、先読みコンテキストの少なくとも一部を修正して通常コンテキストに再構築するコンテキスト復旧手段と、先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、事前実行手段で実行されたスクリプトの実行結果に基づいてスクリプトの実行を行う先読みスクリプト遅延実行手段と、先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、現在画面を非表示状態とすると共に、事前描画手段で描画されたそのコンテンツの事前描画結果を表示状態とする事前描画結果画面出力手段とを備えている。ここで、先読み解析手段は解析実行部102で、先読みコンテキスト構築手段とコンテキスト復旧手段はコンテキスト制御部106で、事前実行手段と先読みスクリプト遅延実行手段はスクリプト実行部104で、事前描画手段と先読みコンテンツ検索手段と事前描画結果画面出力手段は表示制御部107を用いて実現されている。
以下、各機能部の詳細と動作について説明する。
イベント制御部101には、例えば、キーボード、マウス、トラックボール等の様なユーザが直接操作する事によって装置を制御するために用いられる外部操作機器からの操作情報が入力される。イベント制御部101は、入力された操作情報をコンテンツ閲覧装置100内で解釈可能な制御コマンドに変換し、解析実行部102、通信部103、スクリプト実行部104、先読み制御部105にその制御コマンドを発行する。
上記ユーザ操作から制御コマンドを発行するまでの処理を、具体的なユーザ操作例をあげ、図5を用いて説明する。
ユーザがブラウザの表示すべきコンテンツを指示するために設けられたURIバーに,ユーザがある特定のコンテンツを示すURI(Uniform Resource Identifier)を入力後、確定キーを入力(ステップST501)した場合、確定キー操作情報がイベント制御部101に入力される(ステップST502)。その入力を受けたイベント制御部101は、確定キーを押された対象がURIバーである事より、URIバーに入力されたURIに示すコンテンツを読み込む処理を行う事を判定し(ステップST503)、その処理内容に対応する制御コマンドを生成し(ステップST504)、その制御コマンドを通信部103に発行する(ステップST505)。どの様な条件で、どのような操作情報が入力された時にどのモジュールに、どのような制御コマンドを発行するかはイベント制御部101の内部ロジックとして組み込まれている、もしくは外部のイベント制御ロジック設定ファイル等に記述されており、その内容に従って制御する事が想定される。
また、イベント制御部101は、操作情報以外に、コンテンツ閲覧装置100内部で発生する装置内部イベントも入力される。イベント制御部101は入力された装置内部イベントをコンテンツ閲覧装置100内で解釈可能な制御コマンドに変換し、解析実行部102、通信部103、スクリプト実行部104、先読み制御部105にその制御コマンドを発行する。
上記の装置内部イベントから制御コマンドを発行するまでの処理を、具体的な装置内部イベントを例にあげ、図6を用いて説明する。
前述のURIバーに入力されたURIに示すコンテンツを読み込む処理に対応する制御コマンドを受けた通信部103は、制御コマンドに従いURIが示すコンテンツを取得する。具体的にはURIが示す先がネットワーク200上のコンテンツであれば、ネットワーク接続を行い、ネットワーク200上の該当するコンテンツを取得する処理を行う。一方でURIが示す先がローカル上のコンテンツであれば、ローカルのファイルシステムに該当するコンテンツの取得処理を行う。いずれにせよ、URIが指し示すコンテンツの取得が完了すると通信部103は、制御コマンドに対応する処理が完了した旨を意味する装置内部イベントを生成し、イベント制御部101に発行する(ステップST601)。この時、どの制御コマンドに対してどのような処理を行うのか、その処理結果に応じてどの様な装置内部イベントを発行するのかは実際に処理を行うモジュールの内部ロジックとして組み込まれている。また、装置内部イベントはどの制御コマンドに対応しているのかを示す情報を装置内部イベントに記述しても構わない。
以降、あるモジュールから別モジュールへ要求を発行すると記述した場合、あるモジュールからある装置内部イベントをイベント制御部101に発行し、その装置内部イベントに従ってイベント制御部101がその別モジュールへ制御コマンドを発行する一連の処理で実施する場合も含むものとする。
装置内部イベントを受けたイベント制御部101は、受信した装置内部イベントが、URIが指し示すコンテンツの取得完了を意味すると判定し(ステップST602)、そのコンテンツを解析し、処理を行わせる事を意味する制御コマンドを生成し(ステップST603)、その制御コマンドを解析実行部102に発行する(ステップST604)。この時、どの装置内部イベントに対して、どのような制御コマンドを生成し、どのモジュールに発行を行うのかは、イベント制御部101の内部ロジックとして組み込まれている。
次に、コンテンツを解析し、処理を行わせる事を意味する制御コマンドを受けた解析実行部102の処理を図7を用いて説明する。
解析実行部102は、制御コマンドの内容とその制御コマンドに付随するパラメータ、この場合には処理対象となるコンテンツの識別子、もしくはコンテンツ自身、から指定されたコンテンツの解析処理を実行する(ステップST701)。具体的には取得したコンテンツがHTMLコンテンツの場合には、HTMLコンテンツを解析し、その解析結果となるDOM(Document Object Model)を生成する。DOMはHTMLコンテンツの内部構造を木構造で表現した内部データである。
コンテンツ解析処理では、その時点での未解析のコンテンツが残っているかを確認するためコンテンツの終端まで解析したかを判定する(ステップST702)。その結果、未解析部分が残っていない場合には、コンテンツ解析処理は終了する(ステップST703)。一方、ステップST702において未解析部分が残っている場合には、未解析部分の先頭からタグの抽出処理を行い(ステップST704)、その抽出結果から、タグに対応するDOM要素を生成する(ステップST705)。そのDOM要素の内容において、関連リソースに関する情報が記述されているかを判定し(ステップST706)、記述されていない場合にはステップST702の処理に遷移し、逆に記述されている場合には、そのリソースの取得要求を解析実行部102から通信部103に発行する(ステップST707)。
関連リソースの具体例として、画像ファイルや動画ファイル、音声ファイル、CSSファイル、JavaScriptファイル、プラグイン用拡張データファイルなどがあげられる。関連リソースに関する情報には、通常、その関連リソースを識別するための情報としてURIが記述されている。リソース取得要求を受けた通信部103は、指定されたURIのリソースを取得し、その結果を解析実行部102に通知する。その通知を受けた解析実行部102は受け取ったリソースを該当する関連リソースに関する情報が記述されたDOM要素に関連付けを行い(ステップST708)、以降の処理でそのDOM要素から関連リソースを参照する事が出来るようにする。その後、リソースの種別によってはリソース固有処理をこの時点で実行する必要があるため、リソース固有処理を行い(ステップST709)、ステップST702の処理に遷移する。
リソース固有処理(ステップST709)の具体例として、関連リソースがJavaScriptファイルの場合には、この時点でJavaScriptの実行を行う必要があるため、そのJavaScriptファイルに記載されているJavaScriptコードの実行要求をスクリプト実行部104に発行し、その結果が受け取れるまで解析実行部102は処理権をスクリプト実行部104へ移譲する。
また、ステップST705において生成されたDOM要素を用いて、このコンテンツを表示した際に次に遷移する可能性のあるコンテンツの情報を抽出する先読み抽出処理(これについては後述する)も、ステップST705の一処理として合わせて実行しても構わない。その場合、解析実行部102で行った先読み抽出処理の結果と共に先読み制御部105へ先読み制御開始要求を発行する事で先読み制御部105に転送する。その場合にはDOM要素一つに対する先読み抽出処理の結果一つに対して、先読み制御開始要求を発行するとしても構わないし、コンテンツ全体で実施した先読み抽出処理の結果全てを一括して先読み制御開始要求を発行するとしても構わない。
具体的なDOM要素を用いた先読み抽出処理の一例を以下に示す。
HTMLでは次のコンテンツに遷移するためのオブジェクトとしてアンカーオブジェクトが定義されており、アンカーオブジェクトをユーザがクリックする事でそのアンカータグに関連付けされているURIのコンテンツを表示する事になる。アンカーオブジェクトをHTMLコンテンツ中で表現するタグはアンカータグ<a>であり、このアンカータグに対応するDOM要素のhref属性には遷移する先のコンテンツのURIが記述されている。つまり、アンカータグに関連するDOM要素のhref属性を抽出する事で先読み対象となるコンテンツのURIを抽出する事が可能であり、この抽出処理がアンカーに対する先読み抽出処理となる。
また、JavaScriptではlocationオブジェクトのhrefプロパティに対してURIを代入する事で、そのURIのコンテンツに遷移する処理を開始する。そのため、JavaScriptを示すタグである<script>のDOM要素に対して、関連付けされているJavaScriptコード本体を解析し、locationオブジェクトのhrefプロパティに値を設定している箇所を抽出し、その値がURIである場合には、そのURIを先読み対象となるコンテンツのURIとして抽出する処理がJavaScriptに対する先読み抽出処理となる。
上記の先読み抽出処理の処理結果は先読み制御部105に先読み制御開始要求と共に通知する
さらなる先読み抽出処理として、ステップST709の処理において、JavaScriptコードの実行する際に、そのJavaScriptコードに先読み抽出処理を行うとしても構わない。その場合、JavaScriptからその時点までに生成されたDOMにアクセスし、アンカータグやスクリプトタグを抽出し、前述のステップST705における先読み抽出処理に相当する記述を行っても構わない。その場合、通常HTMLコンテンツに記述されている全てのタグに対応するDOM要素が生成されている事が望ましいため、通常はその先読み抽出処理を行うJavaScriptコードが記述されているスクリプトタグは最後のタグとして記述されている事が望ましい。
また、ステップST709の処理において、JavaScriptコードの実行する際にJavaScriptコード中に先読み抽出結果に相当するデータが記述されており、そのデータに先読み対象となるコンテンツのURIが記述されており、そのデータを先読み制御部105に先読み制御開始要求と共に通知する方法を先読み抽出処理としても構わない。
次に、コンテンツ解析処理終了(ステップST703)後、解析実行部102は先読み制御部105に先読み制御開始要求を発行する(ステップST710)と共に、そのコンテンツに関する表示処理を実施するため表示制御部107に表示制御開始要求を発行し(ステップST711)、自身の処理を終了する。ただし、先読み制御開始要求は既に発行済みの場合にはこのタイミングで発行する必要はない。また、このタイミングで発行する場合にはHTMLコンテンツではloadイベントに呼応するイベントハンドラで、先読み制御開始要求を発行する(ステップST710)する方法が考えられる。
次に、先読み制御部105の説明を行う。
(1)解析実行部102で先読み抽出処理を行っていない場合
解析実行部102より先読み抽出結果を伴わない先読み制御開始要求を受信した場合、先読み制御部105は、先読み処理を行う対象となるコンテンツの抽出処理を行う。その場合、解析実行部102で生成したDOMを利用して、そのDOMの解析元となるコンテンツを表示した際に次のコンテンツとして遷移する先のコンテンツに関する情報を抽出する。具体的にはステップST705で実施しても構わないとした先読み抽出処理と同等の処理を実施し、先読み抽出結果を生成する。その結果を持って、以下で説明する処理を行う。
(2)解析実行部102で先読み抽出処理を行っている場合
先読み制御部105が先読み抽出結果を伴う先読み制御開始要求を受信した場合、もしくは、先読み抽出結果を伴わない先読み制御開始要求を受信した先読み制御部105が先読み抽出処理を終了後、以下の処理を実行する。この処理を図8を用いて説明する。
先読み制御開始要求を受信した先読み制御部105は、先読み制御処理を開始する(ステップST801)。まず、現時点までに処理を行っていない先読み抽出結果の要素が存在するかを判定し(ステップST802)、存在しない場合には先読み制御処理を終了する(ステップST803)。逆に、処理を行っていない先読み抽出結果の要素が存在する場合には、未処理の先読み抽出結果の要素から先読み対象となるコンテンツのURIを抽出し、通信部103にそのURIのコンテンツ取得の開始要求を発行する(ステップST804)。この時、通信部103からの取得完了通知を待って、次の先読み用コンテキスト構築処理(ステップST805)に遷移しても構わないが、取得完了通知を待たずにステップST805に遷移する方法をとる事で通信部103の処理を並列化させても構わない。その場合、処理を行っていない先読み抽出結果の要素がなくなった場合には、発行した全てのコンテンツ取得処理開始要求に対する取得完了通知が受信できるまで待機し、受信されるごとにその通知に対する次の先読み用コンテキスト構築処理(ステップST805)を実行する。
通信部103から要求したコンテンツの取得完了通知を先読み制御部105が受信すると、取得されたコンテンツを先読み解析処理として処理するための先読み用コンテキスト構築処理(ステップST805)を行う。
コンテキストとは、ブラウザが処理するために必要な情報をまとめたものである。具体的には、例えばスクリプト実行部104が指定されたスクリプトを実行する際に使用するグローバル変数やグローバル関数、その他グローバル変数が持つオブジェクトのプロパティを介して間接的に参照可能なその他の変数やオブジェクト、値、関数等が含まれる。また、表示制御部107で表示制御処理を行うための制御対象となる表示オブジェクトの構成も含めても構わない。
先読み用コンテキスト構築処理(ステップST805)では、通常の表示すべきコンテンツと、先読み対象のコンテンツとで、異なる処理を解析実行部102、スクリプト実行部104、表示制御部107で行わせる事を目的にコンテキストを先読みコンテンツ用に変更する処理であり、コンテキスト制御部106にて処理される。具体的な変更内容については後述するが、先読みコンテンツ用にコンテキストを変更するとは、コンテキストに格納されている情報の一部または全てを、通常の表示すべきコンテンツ用のコンテキストの内容とは異なる内容とする事を意味する。例えば、通常の表示すべきコンテンツ用のコンテキストには存在しない変数やオブジェクトを追加する、または、存在するが、その値やオブジェクト、関数が異なるものに置き換える等である。
その後、ステップST805で生成した先読み用コンテキストを持って先読みコンテンツの解析処理(ステップST806)を実行する。この処理は前述の解析実行部102で実行する図7で図示された処理を実行するが、従来説明した処理と異なる点として、先読み用コンテキストを利用して、処理が実施される点である。
先読みコンテンツ解析処理(ステップST806)が完了すると、解析実行部102はその結果を先読み制御部105に通知し、その通知を受けた先読み制御部105は、先読みコンテンツ解析処理結果を元に先読み用の表示制御を開始するための要求を表示制御部107に発行する(ステップST807)。
次に、表示制御部107の説明を行う。表示制御部107は解析実行部102および先読み制御部105からの表示制御開始要求をトリガとして処理を開始する。ただし、解析実行部102から発行される表示制御開始要求と、先読み制御部105が発行する表示制御開始要求では要求される処理内容が異なっている。以下ではそれぞれの説明を行う。
・通常の表示すべきコンテンツ用の表示制御処理について
以下では、解析実行部102から発行される表示制御開始要求を表示制御部107が受け取った場合の処理について図9を用いて説明する。
解析実行部102から発行される表示制御開始要求を受けた表示制御部107は、処理対象となる解析実行部102の処理結果であるDOMを取得し、処理対象DOMに設定する(ステップST901)。また、その際に、関連するCSSや画像等と言った関連リソースも合わせて取得しても構わないし、それらを取得するのは以降の処理で必要となった時点で取得でも構わない。
処理対象DOMを取得後、表示制御部107は処理対象のDOMを描画する対象となるバッファの取得を行う(ステップST902)。この時、取得するバッファは必ず描画結果を画面に反映する設定がなされたバッファ(表示対象バッファ)を取得する。次に、表示対象バッファを取得した後、処理対象DOMおよび関連リソースを用いて処理対象DOMに存在するオブジェクトが、どの位置にどの大きさで配置すべきかを決定するレイアウト決定処理を行う(ステップST903)。このレイアウト決定処理では、DOMに存在する各オブジェクトの種別やオブジェクトが持つプロパティ値、そのオブジェクトに関連付けされているCSSの内容や、画像などの関連リソースの情報を総合的に用いて決定を行う。また、改行を示す<BR>タグ等、表示する必要のないオブジェクトも存在しており、その様なオブジェクト自身に対するレイアウト決定処理はスキップする。
レイアウト決定処理(ステップST903)にて、DOMに存在する全ての表示すべきオブジェクトの配置が確定すると、次にステップST902で取得したバッファに対するレンダリング処理を行う(ステップST904)。この処理では、レイアウト決定処理(ステップST903)で確定した全配置の中で、どの領域が実際にバッファ上に描画すべきかを示す描画位置情報を別途管理しており、その情報に基づいて全配置から描画すべき領域をクリッピングし、バッファへの描画処理を行う。
ステップST904のバッファへのレンダリング処理が完了すると、その結果を速やかに画面に反映するため、バッファの内容を画面に反映する処理を実行し(ステップST905)、レンダリング結果を画面に出力する。実際の画面出力処理は表示部108に対してバッファの内容を表示する様に要求を発行する事で行われる。
・先読みコンテンツ用の表示制御処理について
以下では、先読み制御部105から発行される表示制御開始要求を表示制御部107が受け取った場合の処理について図10を用いて説明する。
先読み制御部105から発行される表示制御開始要求を受けた表示制御部107は、処理対象となる解析実行部の処理結果であるDOMを取得し、処理対象DOMに設定する(ステップST1001)。また、その際に、関連するCSSや画像等と言った関連リソースも合わせて取得しても構わないし、それらを取得するのは以降の処理で必要となった時点で取得でも構わない。
処理対象DOMを取得後、表示制御部107は処理対象のDOMを描画する対象となる非表示対象のバッファのうち、未使用のものが存在するかを確認する(ステップST1002)。確認の結果、未使用の非表示対象バッファが存在しない場合には、新規に非表示対象バッファを生成し(ステップST1003)、その非表示対象バッファを処理対象とする(ステップST1004)。逆に、未使用の非表示対象バッファが存在する場合には、その未使用の非表示対象バッファを処理対象とする(ステップST1004)。
非表示対象バッファを取得した後、処理対象DOMおよび関連リソースを用いて処理対象DOMに存在するオブジェクトが、どの位置にどの大きさで配置すべきかを決定するレイアウト決定処理を行う(ステップST1005)。このレイアウト決定処理では、DOMに存在する各オブジェクトの種別やオブジェクトが持つプロパティ値、そのオブジェクトに関連付けされているCSSの内容や、画像などの関連リソースの情報を総合的に用いて決定を行う。また、改行を示す<BR>タグ等、表示する必要のないオブジェクトも存在しており、その様なオブジェクト自身に対するレイアウト決定処理はスキップする。
レイアウト決定処理(ステップST1005)にて、DOMに存在する全ての表示すべきオブジェクトの配置が確定すると、次に、ステップST1004で取得したバッファに対するレンダリング処理を行う(ステップST1006)。この処理では、レイアウト決定処理(ステップST1005)で確定した全配置の中で、どの領域が実際にバッファ上に描画すべきかを示す描画位置情報を別途管理しており、その情報に基づいて全配置から描画すべき領域をクリッピングし、バッファへの描画処理を行う。
解析実行部102から発行される表示制御開始要求を受けた表示制御部107は、バッファへのレンダリング処理(ステップST904)が完了すると、バッファの内容を画面に反映する処理を行う(ステップST905)。一方、先読み制御部105から発行される表示制御開始要求を受けた表示制御部107の処理では、処理対象のバッファが非表示対象バッファであるため、バッファの内容を画面に反映する処理は行わない。しかし、非表示対象バッファには処理対象DOMを表示する場合に必要なバッファが準備出来ており、バッファの表示設定切り替えのみで、画面の表示内容を切り替え可能なデータを準備する事が出来ている事になる。
次に、表示対象バッファと非表示対象バッファの管理方法について具体的な例をあげて説明する。
図11は、バッファおよびその関連情報を含めたデータ構造を示す。このデータ構造にはこのバッファは表示すべきか、非表示とすべきかを示す情報を格納する表示設定領域1101,そのバッファに描画内容を書き込む元となるコンテンツの識別情報を格納するURI領域1102、およびそのバッファ本体を格納するバッファ領域1103を保持する。
表示設定領域1101には、例えば表示すべきバッファである事を示す場合にはtrue、非表示とすべきバッファである事を示す場合にはfalseが格納されているとしても構わない。URI領域1102にはそのバッファに描画内容を書き込む元となるコンテンツを一意に識別できる情報を格納するが、URIを用いても構わない。バッファ領域1103には描画領域サイズ分のメモリ領域を確保すればよい。また、描画領域サイズに関する情報やピクセルのデータサイズ等の情報をバッファ領域1103に含めても構わないが、それ以外にも表示設定領域1101に含めても構わない。
図12は、図11で示したバッファおよびその関連情報を含めたデータ構造の具体的な表現方式の一例である。この例ではコンテンツ閲覧装置100にて取り扱うHTMLおよびCSSをベースに表現した例となっている。
まず、全てのバッファを管理するための最上位HTMLコンテンツとなるParent HTML(1201)を用意する。このParent HTMLコンテンツはコンテンツ閲覧装置で起動時にロードされるコンテンツとしても構わない。このParent HTMLコンテンツは一つ以上のiframeタグ(1202〜1205)を保持する。各iframeタグはバッファ領域1103に相当するオブジェクトとして取り扱う。各iframeタグには表示設定領域1101およびURI領域1102に対応する情報を設定する必要がある。URI領域1102に対応する情報は各iframeタグにどのコンテンツをロードするのかをURIで指定するためのプロパティであるsrcプロパティの値として設定する事ができる。
一方で、表示設定領域1101に対応する情報は、各iframeに独自のプロパティ、例えばisVisibleプロパティにtrue値、false値で設定するとしてもよい。それ以外の方法としてParent HTMLコンテンツの関連リソースとして表示用CSS(1206)および非表示用CSS(1207)を設定し、いずれか一方と各iframeとを関連付けするためにclassプロパティ等に値を設定するとしても構わない。例えば下記の様な二種類のCSSがParent HTMLの関連リソースとして設定されているとする。
Figure 2014157549
二種類のCSSのうち、上段が表示用CSS(1206),下段が非表示用CSS(1207)の一例である。この時に、あるiframeタグを表示用バッファとして取り扱う場合、そのiframeタグのclassプロパティには“foreground_class“がプロパティ値に含まれる値を設定する。また、あるiframeタグを非表示用バッファとして取り扱う場合、そのiframeタグのclassプロパティには“background_class“がプロパティ値に含まれる値を設定する。このように設定する事で、コンテンツ閲覧装置として組み込まれている機能およびデータ構造を利用し、表示設定領域1101に関するデータを管理する事が可能となる。
解析実行部102から発行される表示制御開始要求を表示制御部107が受け取った場合、classプロパティに“foreground_class“が含まれる値に設定される事になる。一方で、先読み制御部105から発行される表示制御開始要求を表示制御部107が受け取った場合、classプロパティには“background_class“がプロパティ値に含まれる値に設定される事になる。また、通常はParent HTMLにはclassプロパティに“foreground_class“が含まれる値を持つiframeオブジェクトは一つしか存在せず、逆に“background_class“がプロパティ値に含まれる値を持つiframeオブジェクトは0個以上存在し、複数存在する場合もある。
また、表示設定領域1101に関する情報以外にもバッファサイズ等の関連データもCSSで管理するとしても構わない。例えば、下記の様なCSSがParent HTMLの関連リソースとして設定されているとする。
Figure 2014157549
このCSSは、classプロパティに文字列“buffer_size_class”が含まれているオブジェクトをコンテンツ閲覧装置100のウィンドウサイズと一致するサイズに設定する事を意味する。よって、バッファサイズをコンテンツ閲覧装置100のウィンドウサイズと一致させたい場合にはclassプロパティの値を文字列“buffer_size_class”が含まれる様な値に変更する事で、バッファのサイズをCSSによって管理する事が可能となる。
以上までで説明した処理を行う事によって、現在表示すべきコンテンツのみを表示部108で表示した上で、先読み制御部105で先読みされたコンテンツを非表示対象バッファ上までは描画処理を実行可能なコンテンツ閲覧装置100となる事が分かる。
次にコンテキスト制御部106における具体的な先読み用コンテキストの変更内容とその効果について説明を行う。
コンテキスト制御部106は、通常の表示すべきコンテンツと、先読み対象のコンテンツとで、異なる処理を解析実行部102、スクリプト実行部104、表示制御部107で行わせる事を目的にコンテキストを制御する処理部である。具体的には、コンテキストに格納されている情報の一部または全てを、通常の表示すべきコンテンツ用のコンテキストの内容とは異なる内容とする事で先読み対象のコンテンツ用コンテキストを生成する処理(以下、先読み用コンテキスト構築処理)と、逆に先読み対象のコンテンツ用コンテキストを通常の表示すべきコンテンツ用コンテキストに戻す処理(以下、通常コンテキスト復旧処理)を行う。
異なる処理を行わせる目的は、先読みコンテンツを通常の表示すべきコンテンツと同じ処理を行った場合、本来表示されている事を前提に記述されている処理を非表示の状態で処理しなければならなくなるため、コンテンツ閲覧装置100のユーザが視認できない状況でユーザが想定しない処理が実行される問題、および、表示されているコンテンツで発生する処理に加えて一つ以上の先読みコンテンツで発生する処理が同時に実行されるため端末の負荷が上昇する問題を回避する事にある。
上記目的を達成するために、コンテキスト制御部106では、先読み用コンテキスト構築処理では、処理対象となるコンテキストのあるプロパティの値を他の値に変更する、あるプロパティを削除する、新規にプロパティを追加する、といった変更を一つ以上コンテキストに適用する。
例えば、ある特定の機能を有効・無効を切り替えるためのプロパティとしてEnableFuncAプロパティが存在し、このプロパティがtrueの場合には対応する機能が有効となり、falseの場合には対応する機能が無効となるとした場合、この機能を無効にしたい場合には、処理対象となるコンテキストのEnableFuncAプロパティにfalseを設定する。このような変更を行う事で、スクリプト上特に値変更を行っていないプロパティの値に対して強制的に初期値を書き換える事が可能となる。
また、別の具体例として、特定の機能を別の特定の機能に置き換えたい場合、対象となるコンテキストの該当関数を値として持つプロパティ、例えばFuncAプロパティの値を別の特定機能を実装した関数に置き換える。このような変更を行う事で、スクリプト上FuncAという同名のプロパティに対して関数実行を行う記述がなされている場合、コンテキスト上のFuncAプロパティの値として登録されている関数自体が異なるため、スクリプト上の記述を書き換えることなく、同一の記述で異なる関数を実行させる事が可能となる。
このような別の特定の機能に置き換えたい特定の機能に関する具体例を以下で説明する。ここでは特定の機能としてタイマ、アニメーション、イベントを具体例としてあげて説明する。
(a)タイマの場合の説明
特定の機能としてタイマの例を説明する。すなわち、先読み対象のコンテンツの関連スクリプトにタイマの処理が記述されている場合を考える。仮に、コンテキスト制御部106で先読み用コンテキスト構築処理を実施しない場合、先読みコンテンツ解析処理(ステップST806)にて上記関連スクリプトが実行されると、記述されたタイマ処理が開始される。しかし、本来、このタイマ処理は先読み対象コンテンツが画面上に表示される時に開始される事を前提に記述されており、先読み時に開始される事は望ましくない。
そのため、タイマの起動関数、JavaScriptの場合にはsetInterval()およびsetTimeout()の2関数、を別の処理を行う関数に置き換え、先読み時にタイマの起動関数が実行されても、その時点でタイマが開始されない様にする必要がある。ただし、その時点でタイマが開始されないだけではなく、対応するコンテンツが表示された場合には速やかにそのタイマが開始出来る必要がある。そのために、置き換える関数は以下の情報
・タイマの起動関数の種別を示す関数識別情報
・関数に与えられた引数の値
を関数が呼び出された時系列順に記録する処理を行う関数(以下、タイマ開始記録関数と呼ぶ)に置き換える事が考えられ、その置き換え処理を上記情報がタイマの起動関数が実行される度に記録されれば、対応するコンテンツが表示された場合、記録された情報を時系列順に読み出し、記述されている関数識別情報を元に実行すべき関数を判別でき、かつその関数に与える引数の値が残っているため、先読み時の実行を再現して実行する事が可能となる。この処理は先読みスクリプト遅延実行機能に相当し、別途説明する。
図13に関数識別情報と対応する関数を管理するためのデータ構造の一例を示す。
このデータ構造は各データに対して関数識別番号1301と、対応する関数自身を持つ関数1302の要素が存在する。関数識別番号1301は配列のインデックスで代用する事も可能であり、その場合には関数1302のみの配列として表現される。図13では関数識別番号は0から3までの4種類が登録されており、それぞれsetInterval、setTimeout、webkitRequestAnimationFrame、addEventListenerが対応する関数として登録されている。
この時、スクリプトで以下の記述がなされている。
Figure 2014157549
先読みコンテンツ解析処理(ステップST806)にて上記スクリプトが実行される場合、setInterval()およびsetTimeout()はsetInterval()用タイマ開始記録関数およびsetTimeout()用タイマ開始記録関数にコンテキスト制御部106で置き換えられているため、各タイマ開始記録関数によって記録される情報は図14の様な情報が考えられる。タイマ開始記録関数の実行毎に、そのタイマ開始記録関数が対応する関数識別番号1401,関数に与えられる第1引数1402、関数に与えられる第2引数1403に関する情報が記録される。最初に実行されるのはsetInterval()で引数にfuncAおよび1000が与えられているので、関数識別番号に0、第1引数にfuncA、第2引数に1000の要素(1404)が先頭に記録され、次に実行されるsetTimeout()に関する情報、関数識別番号に1、第1引数にfuncB、第2引数に50の要素(1405)が記録される。
(b)アニメーションの場合の説明
次に、特定の機能としてアニメーションの例を説明する。すなわち、先読み対象のコンテンツの関連スクリプトにアニメーションの処理が記述されている場合を考える。仮にコンテキスト制御部106で、ステップST805の先読み用コンテキスト構築処理を実施しない場合、先読みコンテンツ解析処理(ステップST806)にて上記関連スクリプトが実行されると、記述されたアニメーション処理が開始される。しかし、本来アニメーションは表示されている状況において必要とされる機能である非表示対象バッファに記述する先読み対象コンテンツの場合には先読み時にアニメーションを開始する事は、不要な負荷を発生させる要因となるため、回避する必要がある。
しかし、全てのアニメーション処理をタイマと同様に関数識別情報と関数に与えられた引数の値を時系列順に保存するアニメーション実行記録関数に置き換えた場合、先読み時処理でアニメーションの初回描画処理が実行されない事になり、先読み処理の本来の目的である初回描画完了までの時間短縮を達成するためには、タイマとは異なり、アニメーション処理に関する初回実行のみは従来通り実行し、2回目以降の実行からタイマと同様に関数識別情報と関数に与えられた引数の値を時系列順に保存する処理を行う関数に置き換える方が望ましい。ここで、処理の分岐条件は必ず関数実行の2回目である必要はなく、例えば3回としても構わないし、任意の回数に設定しても構わない。それ以外にも関数実行の回数を処理の分岐条件とする必要もなく、例えば処理に必要となる関連リソースのダウンロードが全てもしくは一定数以上、一定割合以上完了した事を条件としても構わない。さらに例えば初回実行からの経過時間がある一定時間以上になった等の時間経過を条件としても構わない。さらに加えて、上記条件を単独で用いる必要はなく、複数の条件を組み合わせて分岐条件としても構わない。
(c)イベントの場合の説明
次に、特定の機能としてイベントの例を説明する。先読み対象のコンテンツの関連スクリプトにイベントの処理が記述されている場合を考える。仮にコンテキスト制御部106でステップST805の先読み用コンテキスト構築処理を実施しない場合、先読みコンテンツ解析処理(ステップST806)にて上記関連スクリプトが実行されると、記述されたイベント処理が開始される。しかし、本来表示されていないコンテンツにおいてイベント処理が開始されると、コンテンツ閲覧装置100のユーザの認知出来ない状況で処理が進行するため、望ましくない。そのため、イベントに対応するコールバック関数を登録するためのイベントコールバック登録関数、JavaScriptの場合にはaddEventListener()、を、実行されると関数識別情報と関数に与えられた引数の値を時系列順に保存するイベントコールバック登録記録関数に置き換える事によって、イベントコールバックの登録処理は行われず、関数実行の記録だけが残る状況になる。その後、表示された場合に速やかに記録された情報を元にイベントコールバックを登録する処理を行う事で、表示後のイベント処理が適切に行われるようになる。
また、イベントをコンテンツ内で明示的に発生される事が出来る場合にはそのイベント発生関数についても同様に関数識別情報と関数に与えられた引数の値を時系列順に保存するイベント発行記録関数に置き換える事によって、イベント発生を表示後に実行させる事が出来るようになる。
特にHTMLではコンテンツの解析が終わり、表示制御部107でレイアウト決定処理(ステップST903)が完了後に発行されるloadイベントの発行関数をイベント発行記録関数に置き換える事が考えられる。loadイベントの発行関数を置き換える事によって、先読みしたコンテンツが表示される直前にイベント発行記録関数にて記録された関数実行情報を利用して、loadイベントを発行する事が可能となり、従来のloadイベントの発行タイミングである表示直前のイベント発行タイミングまで遅延させる事が可能となる。ただし、loadイベントはHTMLの仕様上、コンテンツ閲覧装置100が自発的に発行するため、イベント発生関数を置き換えずとも、先読みコンテンツを表示する直前に強制的にloadイベントを再度発行させるとしても構わない。その場合には、先読み処理中にloadイベントに呼応するイベントコールバック登録関数の実行をイベントコールバック登録記録関数によって記録する処理に置き換え、先読み処理中にloadイベントに呼応するイベントコールバックが実行されない様にする必要がある。この時loadイベント以外に呼応するイベントコールバック登録処理は先読み処理中に実行したい場合には、イベントコールバック登録記録関数内で、引数として与えられるイベント種別情報がloadであるか否かを条件としてloadである場合にはイベントコールバック登録を行わず記録を行い、それ以外である場合には、通常のイベントコールバック登録処理を行う様に実装する事が考えられる。
以上までに説明した処理をコンテンツ閲覧装置100で実現する事によって、現在表示対象のコンテンツから遷移可能なコンテンツを先読みし、先読みしたコンテンツを非表示対象のバッファ上に描画処理まで行う事を可能としたうえで、スクリプトで記述された描画処理は実行するが、表示されていない先読み状態での継続的な処理が発生する事を抑制する事が可能となる。
次に、図15を用いて実施の形態1のコンテンツ閲覧装置100における画面遷移処理を説明する。
初めに、コンテンツ閲覧装置100における画面遷移とは、あるHTMLコンテンツから別のHTMLコンテンツに画面の出力内容を変更する事を指す。例えば、現在表示中のHTMLコンテンツに記述されているアンカータグをユーザがクリックした場合、そのアンカータグに記載されている別のHTMLコンテンツを読み込み、画面の出力内容をそのHTMLコンテンツに置き換える。この時、表示中のコンテンツおよび置き換る別のコンテンツも厳密にはHTMLコンテンツである必要はなく、画像コンテンツや音楽コンテンツ、動画コンテンツ等であっても構わない。
画面遷移には上記の通り何らかのコンテンツ読み込み処理が伴う。その事を利用し、画面遷移トリガ検出処理を行う。
処理のトリガとなるコンテンツ読み込みコマンドを受け付ける通信部103にて、コマンドの待機を行う(ステップST1501)。コマンド待機時に何らかのコマンドを受けると、通信部103はそのコマンドがコンテンツ読み込みコマンドであるか判断する(ステップST1502)。その結果、コンテンツ読み込みコマンドでない場合には、そのコマンドに対応するコマンド処理を実行し(ステップST1503)、再度コマンド待機処理を繰り返す(ステップST1501)。一方、ステップST1502において、コンテンツ読み込みコマンドである場合には、そのコンテンツ読み込みコマンドが読み込み対象としているコンテンツに対応する先読みコンテンツが存在するか確認する先読みコンテンツ検索処理を行う(ステップST1504)。
その検索にはコンテンツ読み込みコマンドに含まれるコンテンツの識別情報であるURIと、先読み用のバッファに含まれるURI領域(1102)を比較し、一致するバッファが存在する場合には先読みコンテンツがあると判定し、全てのバッファと一致しない場合には先読みコンテンツがないと判定する等が考えられる。また、URIの比較の際に、URIにパラメータが含まれる場合にはそのパラメータは比較対象から除外するなどしても構わない。
ステップST1504における先読みコンテンツ検索の結果から、処理分岐(ステップST1505)を行い、ステップST1505において、先読みコンテンツが存在していない場合には、そのコンテンツはまだ読み込まれていない事を意味するため、コンテンツ読み込みコマンドに対応する処理を実行するため、ステップST1503に遷移する。逆に、ステップST1505において、先読みコンテンツが存在した場合、そのコンテンツは既に読み込み済みで、かつバッファに非表示状態で保持されている事を意味するため、そのバッファを利用して画面遷移を行うため、ステップST1506に遷移する。
ステップST1506では、一致した先読みコンテンツのコンテキストは先読み用コンテキスト構築処理(ステップST805)で先読み対象のコンテンツ向けのコンテキストに置き換えられているため、そのコンテキストを通常の表示すべきコンテンツ向けのコンテキストに復旧させる先読みコンテンツのコンテキスト復旧処理を行う。具体的には、先読み用コンテキスト構築処理(ステップST805)で行った変更を全て変更前に戻す処理を行う。
ステップST1506のコンテキスト復旧後、先読みコンテンツのスクリプトにおいて、先読み処理中にコンテキストが先読み用コンテキストに変更されているために、実行されなかった処理を実行するための先読みスクリプトの遅延実行処理を行う(ステップST1507)。具体的には、前述のタイマ開始記録関数、アニメーション実行記録関数、イベントコールバック登録記録関数、イベント発行記録関数等によって時系列に記録されている実行された関数の識別情報、実行時に与えられた引数の値を利用し、関数識別情報に対応する関数を実行時に与えられた引数を利用して、実行する。また、loadイベントを明示的に先読み処理中に停止させている場合には、上記処理に加えて、loadイベントを明示的に発行する処理をここで行う。
次に、現在表示中コンテンツのバッファを非表示化する(ステップST1508)と共に、一致した先読みコンテンツのバッファを表示化する(ステップST1509)事で画面の出力内容を切り替え画面遷移させる事前描画結果画面出力処理を行う。一致した先読みコンテンツのバッファには既に初回描画結果が反映されているため、単純にバッファの表示設定の切り替えを行うのみで、画面遷移を実現する事が可能となる。
次に、一致した先読みコンテンツの先読み制御処理を開始させる(ステップST1510)。この処理は、loadイベントに呼応するイベントコールバックで処理させている場合には、上記ステップST1507で明示的に発行したloadイベントに呼応してイベントコールバックが実行される事になる。
最後に、これまで表示していたコンテンツ用のバッファおよび、今回の画面遷移では遷移対象とならなかった先読みコンテンツのバッファを解放し(ステップST1511)、画面遷移を完了する。また、この時のバッファ解放処理で、新たに表示対象となったコンテンツの先読み処理でもさらに遷移可能なコンテンツが解放対象のバッファに関連付けされている場合、そのバッファは解放しないと共に、そのコンテンツの先読み処理は行わないとしても構わない。
このように、実施の形態1のコンテンツ閲覧装置100を用いる事によって、あるコンテンツから次に遷移する可能性のあるコンテンツを先読み出来ると共に、その先読みコンテンツを非表示状態の段階でバッファ上に初回描画処理を実行できる様にすると共に、スクリプトを利用した描画処理を非表示状態の段階でも実行でき、かつ断続的に発生する処理を表示状態に切り換えるタイミングまで実行を遅延させる事が出来、その結果として、画面遷移時に従来では発生していた高負荷な画面描画処理を、事前に実行しているため、画面遷移時間を短縮させる事が可能となる。
以上説明したように、実施の形態1のコンテンツ閲覧装置によれば、コンテンツの先読みを行うコンテンツ閲覧装置であって、先読みしたコンテンツの解析処理を行う先読み解析手段と、先読みしたコンテンツのスクリプトを実行するための先読みコンテキストを構築する先読みコンテキスト構築手段と、先読み解析手段によって解析された先読みしたコンテンツに関連する少なくともスクリプトとレイアウト処理とを先読みコンテキストに基づいて実行する事前実行手段と、先読みしたコンテンツを非表示状態として、描画処理を実行する事前描画手段と、現在画面から次画面に切り替わる前段で、次画面が先読みしたコンテンツのうち少なくとも一つであるかを判定する先読みコンテンツ検索手段と、先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、先読みコンテキストの少なくとも一部を修正して通常コンテキストに再構築するコンテキスト復旧手段と、先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、事前実行手段で実行されたスクリプトの実行結果に基づいてスクリプトの実行を行う先読みスクリプト遅延実行手段と、先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、現在画面を非表示状態とすると共に、事前描画手段で描画されたコンテンツの事前描画結果を表示状態とする事前描画結果画面出力手段とを備えたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
また、実施の形態1のコンテンツ閲覧装置によれば、先読みコンテキスト構築手段は、ある1以上の特定機能に関連する1以上の関数を別機能関数に置き換えるようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
また、実施の形態1のコンテンツ閲覧装置によれば、コンテキスト復旧手段は、先読みコンテキスト構築手段で別機能の関数に置き換えられた関数を、置き換えられる前の機能の関数に置き換えるようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
また、実施の形態1のコンテンツ閲覧装置によれば、先読みコンテキスト構築手段で置き換えられる対象となる特定機能が、タイマ起動機能、イベントハンドラ登録機能、イベント発行機能、アニメーション開始機能のうち、少なくとも一つであるようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
また、実施の形態1のコンテンツ閲覧装置によれば、先読みコンテキスト構築手段である関数として置き換えられる別機能関数が、その関数の呼出しを表す機能呼出し情報を時系列順に保存可能な機能呼出し保存領域に保存する処理を行う特定関数呼出し情報保存機能を持つ関数であるようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
また、実施の形態1のコンテンツ閲覧装置によれば、機能呼出し情報が、関数識別情報および呼出し時に与えられる引数の内容のうち少なくとも一方を保持しているようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
また、実施の形態1のコンテンツ閲覧装置によれば、先読みコンテキスト構築手段である関数として置き換えられる別機能関数が、ある条件を満たした時に、その関数の呼び出しを表す機能呼出し情報を機能呼出し保存領域に保存する処理を行い、ある条件を満たさない場合には、その関数に置き換えられる前の関数を実行する処理を行う条件付き特定関数呼出し情報保存機能を持つ関数であるようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
また、実施の形態1のコンテンツ閲覧装置によれば、条件付き特定関数呼出し情報保存機能の条件が、関数の少なくとも1以上のパラメータがある範囲の値であることを条件に含むようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
また、実施の形態1のコンテンツ閲覧装置によれば、条件付き特定関数呼出し情報保存機能の条件が、関数の実行回数がある範囲であることを条件に含むようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
また、実施の形態1のコンテンツ閲覧装置によれば、コンテンツが自身を表現するコンテンツと関連する別ファイルで構成された1以上の関連リソースで構成され、かつ、条件付き特定関数呼出し情報保存機能の条件が、関連リソースのダウンロードが全てもしくはその一部が完了した事を条件に含むようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
また、実施の形態1のコンテンツ閲覧装置によれば、条件付き特定関数呼出し情報保存機能の条件が、ある特定の基準処理を実行後、経過時間が一定以上であることを条件に含むようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
また、実施の形態1のコンテンツ閲覧装置によれば、ある特定の基準処理が、特定関数呼出し情報保存機能の実行1回目であるようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
また、実施の形態1のコンテンツ閲覧装置によれば、先読みスクリプト遅延実行手段は、機能呼出し保存領域に保存された前記機能呼出し情報に従い、特定関数の実行を行うようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
実施の形態2.
実施の形態2は、先読みするコンテンツを外部装置から指定するようにしたものである。
図16は、実施の形態2のコンテンツ閲覧装置の構成図である。図示のコンテンツ閲覧装置100aは、実施の形態1のコンテンツ閲覧装置100に対して、装置間通信部109を更に備えたものである。コンテンツ閲覧装置100aにおけるイベント制御部101〜表示部108の構成は実施の形態1と同様であるため、ここでの説明は省略する。また、外部情報処理装置300は、コンテンツ閲覧装置100aとは独立して動作する情報処理装置であり、例えば、ナビゲーションシステムやテレビ受像機といった装置である。この外部情報処理装置300は、装置間通信部301、情報処理部302、先読み管理部303を備えている。
コンテンツ閲覧装置100aにおける装置間通信部109は、外部情報処理装置300と通信を行うための通信インタフェースであり、外部情報処理装置300の装置間通信部301は、コンテンツ閲覧装置100aと通信を行うための通信インタフェースである。また、外部情報処理装置300の情報処理部302は、その外部情報処理装置としての情報処理を行う処理部であり、先読み管理部303は、外部情報処理装置300からコンテンツ閲覧装置100aに対して、先読み対象となるURLの管理を行うための管理部である。
なお、コンテンツ閲覧装置100a一つに対して、外部情報処理装置300が一つである必要はなく、複数存在していても構わない。複数存在する場合、外部情報処理装置300間の相互作用は本発明では不要であり、説明を単純化するためここでは外部情報処理装置300を一つとして説明する。
また、装置間通信部109と装置間通信部301は具体的に物理的に接続された通信経路を用いて通信を行うとしても構わないが、コンテンツ閲覧装置100aおよび外部情報処理装置300があるCPU(Central Processing Unit)上で動作するプロセスとして実装されている場合には、装置間通信部109,301はそのCPU上で動作するプロセス間で確立されるプロセス間通信を行うものとしても構わない。
また、装置間通信部109は通信部103とは異なる処理部として構成しているが、コンテンツ閲覧装置100aと外部情報処理装置300の間の通信手段と、コンテンツ閲覧装置100aとネットワーク200を介したコンテンツサーバとの間の通信手段が異なる事を想定した構成としているためである。しかし、異なる通信手段である事は本発明にとって本質的な特徴ではなく、同じ通信手段であるとしても本発明は成立する。その場合には、装置間通信部109と通信部103は同一の構成であるとしてもよい。
図17は、実施の形態2のコンテンツ閲覧装置100aにおける先読み制御部105の動作を示している。
先ず、先読み制御開始要求を受信した先読み制御部105は先読み制御処理を開始する(ステップST801)。これは図8で示した実施の形態1の動作と同様である。次に、先読み制御処理を開始した先読み制御部105は、装置間通信部301を用いて、外部情報処理装置300に対し、先読み対象コンテンツに関する情報となる外部先読み情報の取得要求処理を行い(ステップST1701)、その応答が受信されるまで待機する。
ここで、ステップST1701にて取得要求処理を行う要求先は本処理を実施するまでの間にコンテンツ閲覧装置100aに保存されている事を前提としている。具体的には、コンテンツ閲覧装置100aが固定で要求先に関する情報を保持する方法、システム全体の起動時等、ある一定のタイミングにおいてコンテンツ閲覧装置100aが装置間通信部109を用いて通信可能な全装置、もしくはその一部の装置に対して、要求先情報を要求し収集し保持する方法、コンテンツ閲覧装置100aと装置間通信部301を用いて通信可能な外部情報処理装置300が起動時等、ある一定のタイミングにおいて自身の通信識別情報をコンテンツ閲覧装置100aに対して送信し保持する方法、などが考えられる。
ステップST1701の処理にてコンテンツ閲覧装置100aから外部情報処理装置300に対して送信する要求には、現在コンテンツ閲覧装置100aが表示処理中のコンテンツの識別情報となるURLを含む処理中コンテンツ情報をパラメータとして記載しておく。また、ステップST1701の処理にて要求する外部先読み情報は、外部情報処理装置300がコンテンツ閲覧装置100aにて先読みすべきコンテンツに関する情報となるURLが0以上記載されている情報を指す。
装置間通信部109が外部情報処理装置300からの応答を受信すると、その応答が先読み制御部105に通知され、外部先読み情報受信処理(ステップST1702)が開始される。先読み制御部105は、ステップST1702で受信した外部先読み情報を解析し、そこに記載されている先読みすべきコンテンツURLを抽出する。その後、抽出したURLをコンテンツ閲覧装置100aで抽出した先読み抽出結果に統合する(ステップST1703)。以降の動作は実施の形態1におけるステップST802以降の動作と同様であるため、ここでの説明は省略する。
このような処理を実施する事により、コンテンツ閲覧装置100aの外部から先読みすべきコンテンツの指示を受信し、そのコンテンツに対して先読み処理を実施する事が可能となる。
次に、外部情報処理装置300における処理を説明する。
図18は、外部情報処理装置300の動作を示すフローチャートである。
外部情報処理装置300は、コンテンツ閲覧装置100aから外部先読み情報の取得要求を装置間通信部301で受信する(ステップST1801)と、先読み情報生成処理(ステップST1802)を情報処理部302で開始する。ステップST1802では、取得要求に含まれる処理中コンテンツ情報を抽出し、コンテンツ閲覧装置100aで現在表示中のコンテンツのURLを取得する。そのURLをキーとして先読み管理部303から先読みすべきコンテンツのURL情報を引き出し、そこに含まれるURLをパラメータとして外部先読み情報に記載し、先読み情報を生成し、ステップST1802の処理を完了する。
先読み管理部303では、コンテンツ閲覧装置100aで先読みすべきコンテンツ情報を管理している。情報処理部302からURLの引き出し処理によって、管理されているコンテンツ情報を提供する。その際に、キーとして与えられたURLもしくはその一部、例えばドメイン名等に関連付けされたコンテンツ情報のみを提供するとしても構わない。また、外部情報処理装置300の内部に保持する情報、例えば内部状態等に関連付けされたコンテンツ情報のみを提供するとしても構わない。その様な動作とする事によって、コンテンツ閲覧装置100aで表示中のコンテンツや外部情報処理装置300の内部情報に関連する先読みすべきコンテンツ情報のみを情報処理部302に提供する事が可能となり、その結果としてコンテンツ閲覧装置100aにて不要な先読み処理を抑制する効果が得られる。
その後、ステップST1803で、作成した先読み情報を装置間通信部301経由でコンテンツ閲覧装置100aに返信する。
このような外部情報処理装置300の処理によって、外部情報処理装置300はコンテンツ閲覧装置100aからの要求に従い、コンテンツ閲覧装置100aで先読みすべきコンテンツを指示する事が可能となり、かつコンテンツ閲覧装置100aは外部情報処理装置300からの指示で先読みすべきコンテンツを追加可能となる。
以上説明したように、実施の形態2のコンテンツ閲覧装置によれば、先読みするコンテンツは、コンテンツ閲覧装置とは独立して動作する外部情報処理装置より指定されたコンテンツであるようにしたので、実施の形態1の効果に加えて、先読みするコンテンツとして様々なものを対象とすることができる効果がある。
実施の形態3.
実施の形態3は、コンテンツ閲覧装置における負荷が高い場合は、コンテンツの先読みに関する処理を行わないようにしたものである。
図19は、実施の形態3のコンテンツ閲覧装置100bの構成図を示す。実施の形態3のコンテンツ閲覧装置100bは、図4に示した実施の形態1の構成に加えて装置負荷計測部110を備えている。この装置負荷計測部110は、コンテンツ閲覧装置100bにおける現在の負荷状況を計測する負荷計測手段である。また、先読み制御部105aは、実施の形態1の先読み制御部105の機能に加えて、装置負荷計測部110による計測の結果、負荷が高い場合は、コンテンツの先読みを一定時間停止させる、またはキャンセルする、といった制御や、先読みしたコンテンツのコンテキスト構築処理といった先読みコンテンツに関する処理を一定時間停止させる、またはキャンセルする、といった制御を行う先読み制御手段である。
装置負荷計測部110が計測する負荷の具体例として、コンテンツ閲覧装置100bの動作に関わる演算を実施するCPUの、単位時間当たりに占有する割合を示すCPU使用率、コンテンツ閲覧装置100bの動作に伴い使用しているメモリ使用量、コンテンツ閲覧装置100bの動作に伴い通信部103で発生している単位時間当たりの通信データ量などが考えられる。また、コンテンツ閲覧装置100bに関するCPU使用率、メモリ使用量、通信データ量に限らず、CPUやメモリ、通信部103に係る全体のCPU使用率、全体のメモリ使用量、全体のデータ通信量を付加としても構わない。
コンテンツ閲覧装置100bは自律して定期的に負荷を計測し、その結果をイベントとしてイベント制御部101に通知し、その結果を必要とする各構成要素に展開する方法も考えられるが、本実施の形態では、説明を簡略化するため、負荷を必要とする構成要素が個別に装置負荷計測部110に取得対象となる負荷を示す識別情報をパラメータとして問い合わせる方法を説明する。
なお、図19におけるその他の構成は図4に示した実施の形態1の構成と同様であるため、対応する部分に同一符号を付してその説明を省略する。
次に、実施の形態3の動作について説明する。
図20は、コンテンツ閲覧装置100bにおける先読み制御部105aの動作を示している。
先読み制御開始要求を受信した先読み制御部105aは、先読み制御処理を開始し(ステップST801)、現時点までに処理を行っていない先読み抽出結果の要素が存在するかを判定し(ステップST802)、存在しない場合には先読み制御処理を終了する(ステップST803)。これらの処理は実施の形態1と同様である。一方、ステップST802において、処理を行っていない先読み抽出結果の要素が存在する場合には、コンテンツ閲覧装置100bが未処理の先読み抽出結果の要素を処理出来る状況にあるかどうかを判別するため、装置負荷計測部110から装置の負荷情報を取得する(ステップST2001)。
次に、先読み制御部105aは、取得した負荷情報がコンテンツ閲覧装置100bで定めた閾値以下であるかを判定する(ステップST2002)。例えば、負荷情報がCPU使用率である場合、その閾値は例えば50%等として設定出来る。その状況において、CPU使用率が閾値50%以下の場合にはその条件が成立する、つまりコンテンツ閲覧装置100bは先読み処理を実施する余裕があると判定し、先読み処理を継続するため、ステップST804以降の処理を実施する。逆に、閾値50%より大きい場合、その条件が成立しない、つまりコンテンツ閲覧装置100bは先読み処理を実施する余裕がないと判定し、ステップST2003に移行する。なお、ステップST804以降の処理は実施の形態1と同様である。
ステップST2003では、コンテンツ閲覧装置100bで定めた条件により現在処理中の先読み処理をキャンセルすべきか判定する。判定の結果、キャンセルすべきでないと判定された場合には一定時間先読み処理を休眠し(ステップST2004)、ステップST2001の処理を再度実施する。逆に、キャンセルすべきであると判定された場合、現在処理中の先読み抽出結果の要素を処理済みに変更し(ステップST2005)、ステップST802を再度実施し、次の先読み抽出結果の要素への処理を継続する。ステップST2003における判定条件の具体例として、現在処理中の先読み抽出結果の要素に対するステップST2003の処理の実施回数がある閾値を超えた場合にはキャンセルすべきと判定する、現在処理中の先読み抽出結果の要素に対するステップST2003の処理の初回実行からの経過時間がある閾値を超えた場合にはキャンセルすべきと判定する、等が考えられる。
上記説明では負荷情報としてCPU使用率のみを使用した場合で説明したが、扱う負荷情報は単一である必要はなく、複数の負荷情報を用いた処理としても構わない。
以上説明した先読み制御部105aの処理によって、ある負荷情報に基づいて、先読み処理を実施する余裕があるかどうかを判定可能となり、余裕がないと判定された場合には先読みコンテンツの取得、コンテキスト構築、コンテンツ解析、先読み表示制御開始を余裕が出来るまで延期させる事が可能となる。この効果によって、コンテンツ閲覧装置100bにて表示中のコンテンツに関わる負荷が高い処理が発生している状況で先読み処理を並行して実施する事を回避する事が可能となり、表示中コンテンツの安定動作を先読み処理が阻害する事を回避可能となる。
図21は、先読み制御部105aにおける他の具体例を示している。
ここでステップST801〜ステップST804までの処理は実施の形態1と同様である。即ち、先読み抽出結果の要素が存在した場合はそのコンテンツを取得する。次に、通信部103から要求したコンテンツの取得完了通知を先読み制御部105aが受信すると、コンテンツ閲覧装置100bが未処理の先読み抽出結果の要素を処理出来る状況にあるかどうかを判別するため、装置負荷計測部110から装置の負荷情報を取得する(ステップST2101)。
次いで、先読み制御部105aは、取得した負荷情報がコンテンツ閲覧装置100bで定めた閾値以下であるかを判定する(ステップST2102)。例えば、負荷情報がCPU使用率である場合、その閾値は例えば50%等として設定出来る。その状況において、CPU使用率が閾値50%以下の場合にはその条件が成立する、つまりコンテンツ閲覧装置100bは先読み処理を実施する余裕があると判定し、先読み処理を継続するため、ステップST805以降の処理を実施する。逆に、閾値50%より大きい場合、その条件が成立しない、つまりコンテンツ閲覧装置100bは先読み処理を実施する余裕がないと判定し、ステップST2103の処理を実施する。
ステップST2103では、コンテンツ閲覧装置100bで定めた条件により現在処理中の先読み処理をキャンセルすべきか判定する。判定の結果、キャンセルすべきでないと判定された場合には一定時間先読み処理を休眠し(ステップST2104)、ステップST2101の処理を再度実施する。逆に、キャンセルすべきであると判定された場合、現在処理中の先読み抽出結果の要素を処理済みに変更し(ステップST2105)、ステップST802の処理を再度実施し、次の先読み抽出結果の要素への処理を継続する。ステップST2103における判定条件の具体例として、現在処理中の先読み抽出結果の要素に対するステップST2103の処理の実施回数がある閾値を超えた場合にはキャンセルすべきと判定する、現在処理中の先読み抽出結果の要素に対するステップST2103の処理の初回実行からの経過時間がある閾値を超えた場合にはキャンセルすべきと判定する、等が考えられる。
上記説明では負荷情報としてCPU使用率のみを使用した場合で説明したが、扱う負荷情報は単一である必要はなく、複数の負荷情報を用いた処理としても構わない。
以上説明した先読み制御部105aの処理によって、ある負荷情報に基づいて、先読み処理を実施する余裕があるかどうかを判定可能となり、余裕がないと判定された場合にはコンテキスト構築、コンテンツ解析、先読み表示制御開始を余裕が出来るまで延期させる事が可能となる。この効果によって、コンテンツ閲覧装置100bにて表示中のコンテンツに関わる負荷が高い処理が発生している状況で先読み処理を並行して実施する事を回避する事が可能となり、表示中コンテンツの安定動作を先読み処理が阻害する事を回避可能となる。
図20と図21に示した先読み制御部105aの処理における違いは負荷情報に基づいて開始を延期する処理の内容の違いであり、通信部103における負荷情報が高い場合に先読みコンテンツ取得処理を延期できるのが図20に示した処理であり、一方で先読みコンテンツ取得に関する通信部103での衝突は回避できないのが図21に示した処理である。例えばCPU使用率を基準とした先読み処理延期を図20に示した処理で行う場合、CPU使用率が高いが、通信部103での通信データ量が少ない場合であっても、先読みコンテンツ取得処理(ステップST804)を延期する事になり、通信部103が効率的に処理出来ない場合が発生する。その課題を解決するため、通信部103に関する負荷情報を基準に先読みコンテンツ取得を延期するための処理方法が図20に示されており、それ以外のコンテンツ閲覧装置の負荷情報を基準に先読みコンテンツ取得後の処理を延期するための処理方法が図21に示されている。
以上説明したように、実施の形態3のコンテンツ閲覧装置によれば、コンテンツ閲覧装置における現在の負荷状況を計測する負荷計測手段と、負荷計測手段における計測の結果、負荷が高い場合はコンテンツの先読みを停止する先読み制御手段とを備えたので、実施の形態1の効果に加えて効率的にコンテンツの先読みを行うことができる。
また、実施の形態3のコンテンツ閲覧装置によれば、コンテンツ閲覧装置における現在の負荷状況を計測する負荷計測手段と、負荷計測手段における計測の結果、負荷が高い場合は先読みしたコンテンツに関する処理を停止させる先読み制御手段とを備えたので、実施の形態1の効果に加えて効率的にコンテンツの先読みを行うことができる。
なお、本願発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
100,100a,100b コンテンツ閲覧装置、101 イベント制御部、102 解析実行部、103 通信部、104 スクリプト実行部、105,105a 先読み制御部、106 コンテキスト制御部、107 表示制御部、108 表示部、109 装置間通信部、110 装置負荷計測部、200 ネットワーク、300 外部情報処理装置、301 装置間通信部、302 情報処理部、303 先読み管理部。

Claims (16)

  1. コンテンツの先読みを行うコンテンツ閲覧装置であって、
    先読みしたコンテンツの解析処理を行う先読み解析手段と、
    先読みしたコンテンツのスクリプトを実行するための先読みコンテキストを構築する先読みコンテキスト構築手段と、
    前記先読み解析手段によって解析された先読みしたコンテンツに関連する少なくともスクリプトとレイアウト処理とを前記先読みコンテキストに基づいて実行する事前実行手段と、
    先読みしたコンテンツを非表示状態として、描画処理を実行する事前描画手段と、
    現在画面から次画面に切り替わる前段で、次画面が先読みしたコンテンツのうち少なくとも一つであるかを判定する先読みコンテンツ検索手段と、
    前記先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、前記先読みコンテキストの少なくとも一部を修正して通常コンテキストに再構築するコンテキスト復旧手段と、
    前記先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、前記事前実行手段で実行されたスクリプトの実行結果に基づいてスクリプトの実行を行う先読みスクリプト遅延実行手段と、
    前記先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、現在画面を非表示状態とすると共に、前記事前描画手段で描画された当該コンテンツの事前描画結果を表示状態とする事前描画結果画面出力手段とを備えたコンテンツ閲覧装置。
  2. 先読みコンテキスト構築手段は、ある1以上の特定機能に関連する1以上の関数を別機能関数に置き換えることを特徴とする請求項1記載のコンテンツ閲覧装置。
  3. コンテキスト復旧手段は、先読みコンテキスト構築手段で別機能の関数に置き換えられた関数を、置き換えられる前の機能の関数に置き換えることを特徴とする請求項2記載のコンテンツ閲覧装置。
  4. 先読みコンテキスト構築手段で置き換えられる対象となる特定機能が、タイマ起動機能、イベントハンドラ登録機能、イベント発行機能、アニメーション開始機能のうち、少なくとも一つであることを特徴とする請求項2または請求項3記載のコンテンツ閲覧装置。
  5. 先読みコンテキスト構築手段である関数として置き換えられる別機能関数が、その関数の呼出しを表す機能呼出し情報を時系列順に保存可能な機能呼出し保存領域に保存する処理を行う特定関数呼出し情報保存機能を持つ関数であることを特徴とする請求項2から請求項4のうちのいずれか1項記載のコンテンツ閲覧装置。
  6. 機能呼出し情報が、関数識別情報および呼出し時に与えられる引数の内容のうち少なくとも一方を保持していることを特徴とする請求項5記載のコンテンツ閲覧装置。
  7. 先読みコンテキスト構築手段である関数として置き換えられる別機能関数が、
    ある条件を満たした時に、その関数の呼出しを表す機能呼出し情報を機能呼出し保存領域に保存する処理を行い、前記ある条件を満たさない場合には、その関数に置き換えられる前の関数を実行する処理を行う条件付き特定関数呼出し情報保存機能を持つ関数であることを特徴とする請求項5または請求項6記載のコンテンツ閲覧装置。
  8. 条件付き特定関数呼出し情報保存機能の条件が、関数の少なくとも1以上のパラメータがある範囲の値であることを条件に含むことを特徴とする請求項7記載のコンテンツ閲覧装置。
  9. 条件付き特定関数呼出し情報保存機能の条件が、当該関数の実行回数がある範囲であることを条件に含むことを特徴とする請求項7記載のコンテンツ閲覧装置。
  10. コンテンツが自身を表現するコンテンツと関連する別ファイルで構成された1以上の関連リソースで構成され、かつ、条件付き特定関数呼出し情報保存機能の条件が、前記関連リソースのダウンロードが全てもしくはその一部が完了した事を条件に含むことを特徴とする請求項7記載のコンテンツ閲覧装置。
  11. 条件付き特定関数呼出し情報保存機能の条件が、ある特定の基準処理を実行後、経過時間が一定以上であることを条件に含むことを特徴とする請求項7記載のコンテンツ閲覧装置。
  12. ある特定の基準処理が、特定関数呼出し情報保存機能の実行1回目であることを特徴とする請求項11記載のコンテンツ閲覧装置。
  13. 先読みスクリプト遅延実行手段は、機能呼出し保存領域に保存された機能呼出し情報に従い、特定関数の実行を行うことを特徴とする請求項5記載のコンテンツ閲覧装置。
  14. 先読みするコンテンツは、コンテンツ閲覧装置とは独立して動作する外部情報処理装置より指定されたコンテンツであることを特徴とする請求項1から請求項13のうちのいずれか1項記載のコンテンツ閲覧装置。
  15. コンテンツ閲覧装置における現在の負荷状況を計測する負荷計測手段と、
    前記負荷計測手段における計測の結果、負荷が高い場合はコンテンツの先読みを停止する先読み制御手段とを備えた請求項1から請求項14のうちのいずれか1項記載のコンテンツ閲覧装置。
  16. コンテンツ閲覧装置における現在の負荷状況を計測する負荷計測手段と、
    前記負荷計測手段における計測の結果、負荷が高い場合は先読みしたコンテンツに関する処理を停止させる先読み制御手段とを備えた請求項1から請求項14のうちのいずれか1項記載のコンテンツ閲覧装置。
JP2013028996A 2013-02-18 2013-02-18 コンテンツ閲覧装置 Expired - Fee Related JP6057764B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013028996A JP6057764B2 (ja) 2013-02-18 2013-02-18 コンテンツ閲覧装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013028996A JP6057764B2 (ja) 2013-02-18 2013-02-18 コンテンツ閲覧装置

Publications (2)

Publication Number Publication Date
JP2014157549A true JP2014157549A (ja) 2014-08-28
JP6057764B2 JP6057764B2 (ja) 2017-01-11

Family

ID=51578369

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013028996A Expired - Fee Related JP6057764B2 (ja) 2013-02-18 2013-02-18 コンテンツ閲覧装置

Country Status (1)

Country Link
JP (1) JP6057764B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014206797A (ja) * 2013-04-11 2014-10-30 富士通フロンテック株式会社 Htmlドキュメントの画面切替制御方法、プログラム及びクライアント装置
CN117215787A (zh) * 2023-09-14 2023-12-12 北京中水科水电科技开发有限公司 抽水蓄能机组流程执行的人机交互方法、系统、相关设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090019105A1 (en) * 2007-07-12 2009-01-15 Viasat, Inc. Methods and systems for java script parsing
JP2011065490A (ja) * 2009-09-17 2011-03-31 Sony Corp 情報処理装置、データ取得方法及びプログラム
JP2011096201A (ja) * 2009-11-02 2011-05-12 Dentsu Inc Webページ表示プログラム、Webページ表示方法、Webページ表示装置、及びWebページ表示システム
US20120030305A1 (en) * 2010-07-31 2012-02-02 Openwave Systems Inc. Method and system for delivering embedded objects in a webpage to a user agent using a network device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090019105A1 (en) * 2007-07-12 2009-01-15 Viasat, Inc. Methods and systems for java script parsing
JP2011065490A (ja) * 2009-09-17 2011-03-31 Sony Corp 情報処理装置、データ取得方法及びプログラム
JP2011096201A (ja) * 2009-11-02 2011-05-12 Dentsu Inc Webページ表示プログラム、Webページ表示方法、Webページ表示装置、及びWebページ表示システム
US20120030305A1 (en) * 2010-07-31 2012-02-02 Openwave Systems Inc. Method and system for delivering embedded objects in a webpage to a user agent using a network device

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014206797A (ja) * 2013-04-11 2014-10-30 富士通フロンテック株式会社 Htmlドキュメントの画面切替制御方法、プログラム及びクライアント装置
CN117215787A (zh) * 2023-09-14 2023-12-12 北京中水科水电科技开发有限公司 抽水蓄能机组流程执行的人机交互方法、系统、相关设备

Also Published As

Publication number Publication date
JP6057764B2 (ja) 2017-01-11

Similar Documents

Publication Publication Date Title
CN105339932B (zh) 浏览器驱动的功率节省
US8924943B2 (en) Browser emulator system
US20170329862A1 (en) Infinite Scrolling
US20190058667A1 (en) Apparatus, hybrid apparatus, and method for network resource access
US20110119602A1 (en) Web server, web browser and web system
CN103914205B (zh) 一种智能终端的文件缩略图展示方法和装置
WO2016107325A1 (zh) 基于移动终端的页面资源加载方法及装置
CN107590228B (zh) 一种页面内容处理方法及移动终端
US20140365861A1 (en) Prefetching binary data for use by a browser plugin
JP2016517108A (ja) ページスナップショットの作成
JP2009211190A (ja) 情報処理装置
US10082937B2 (en) Intelligent rendering of webpages
CN110309463B (zh) 落地页优化方法、装置、计算机存储介质及网络设备
CN106294463B (zh) 一种动态曲线的数据点更新方法和设备
CN105786455A (zh) 一种数据处理方法、装置及终端
WO2021057325A1 (zh) 内容的缓存和读取方法、客户端及存储介质
WO2020177519A1 (zh) 在智能终端上执行的调试方法以及软件调试器
JP6057764B2 (ja) コンテンツ閲覧装置
Everts Rules for mobile performance optimization
US20210334113A1 (en) Method and device for lazy loading of js scripts
JP5538584B2 (ja) コンテンツサーバの待ち時間の決定
US20140331117A1 (en) Application-based dependency graph
CN116627521A (zh) 业务模块预加载方法、跳转方法、装置及存储介质
CN113885996A (zh) 用户界面的生成方法及装置
CN114257575B (zh) 一种客户端数据的处理方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151201

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161028

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161206

R150 Certificate of patent or registration of utility model

Ref document number: 6057764

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees