(57)【要約】【課題】画面遷移前にユーザが意図しない処理が開始されることがなく、画面切り替え時に不完全な画面が表示されることのないコンテンツ閲覧装置を得る。【解決手段】先読み制御部１０５は、イベント制御部１０１からの制御コマンドにより、コンテンツの先読みを行う。コンテキスト制御部１０６は、先読みしたコンテンツのための先読み用コンテキストを構築する。表示制御部１０７は、先読みしたコンテンツの事前描画を行う。スクリプト実行部１０４は、先読み用コンテキストに基づいてスクリプトを実行する。画面遷移が開始されると、コンテキスト制御部１０６は通常コンテキストに再構築し、スクリプト実行部１０４は、スクリプトの遅延実行を行う。【選択図】図４
2014157549.tif 000002
【特許請求の範囲】
【請求項１】
コンテンツの先読みを行うコンテンツ閲覧装置であって、
先読みしたコンテンツの解析処理を行う先読み解析手段と、
先読みしたコンテンツのスクリプトを実行するための先読みコンテキストを構築する先読みコンテキスト構築手段と、
前記先読み解析手段によって解析された先読みしたコンテンツに関連する少なくともスクリプトとレイアウト処理とを前記先読みコンテキストに基づいて実行する事前実行手段と、
先読みしたコンテンツを非表示状態として、描画処理を実行する事前描画手段と、
現在画面から次画面に切り替わる前段で、次画面が先読みしたコンテンツのうち少なくとも一つであるかを判定する先読みコンテンツ検索手段と、
前記先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、前記先読みコンテキストの少なくとも一部を修正して通常コンテキストに再構築するコンテキスト復旧手段と、
前記先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、前記事前実行手段で実行されたスクリプトの実行結果に基づいてスクリプトの実行を行う先読みスクリプト遅延実行手段と、
前記先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、現在画面を非表示状態とすると共に、前記事前描画手段で描画された当該コンテンツの事前描画結果を表示状態とする事前描画結果画面出力手段とを備えたコンテンツ閲覧装置。
【請求項２】
先読みコンテキスト構築手段は、ある１以上の特定機能に関連する１以上の関数を別機能関数に置き換えることを特徴とする請求項１記載のコンテンツ閲覧装置。
【請求項３】
コンテキスト復旧手段は、先読みコンテキスト構築手段で別機能の関数に置き換えられた関数を、置き換えられる前の機能の関数に置き換えることを特徴とする請求項２記載のコンテンツ閲覧装置。
【請求項４】
先読みコンテキスト構築手段で置き換えられる対象となる特定機能が、タイマ起動機能、イベントハンドラ登録機能、イベント発行機能、アニメーション開始機能のうち、少なくとも一つであることを特徴とする請求項２または請求項３記載のコンテンツ閲覧装置。
【請求項５】
先読みコンテキスト構築手段である関数として置き換えられる別機能関数が、その関数の呼出しを表す機能呼出し情報を時系列順に保存可能な機能呼出し保存領域に保存する処理を行う特定関数呼出し情報保存機能を持つ関数であることを特徴とする請求項２から請求項４のうちのいずれか１項記載のコンテンツ閲覧装置。
【請求項６】
機能呼出し情報が、関数識別情報および呼出し時に与えられる引数の内容のうち少なくとも一方を保持していることを特徴とする請求項５記載のコンテンツ閲覧装置。
【請求項７】
先読みコンテキスト構築手段である関数として置き換えられる別機能関数が、
ある条件を満たした時に、その関数の呼出しを表す機能呼出し情報を機能呼出し保存領域に保存する処理を行い、前記ある条件を満たさない場合には、その関数に置き換えられる前の関数を実行する処理を行う条件付き特定関数呼出し情報保存機能を持つ関数であることを特徴とする請求項５または請求項６記載のコンテンツ閲覧装置。
【請求項８】
条件付き特定関数呼出し情報保存機能の条件が、関数の少なくとも１以上のパラメータがある範囲の値であることを条件に含むことを特徴とする請求項７記載のコンテンツ閲覧装置。
【請求項９】
条件付き特定関数呼出し情報保存機能の条件が、当該関数の実行回数がある範囲であることを条件に含むことを特徴とする請求項７記載のコンテンツ閲覧装置。
【請求項１０】
コンテンツが自身を表現するコンテンツと関連する別ファイルで構成された１以上の関連リソースで構成され、かつ、条件付き特定関数呼出し情報保存機能の条件が、前記関連リソースのダウンロードが全てもしくはその一部が完了した事を条件に含むことを特徴とする請求項７記載のコンテンツ閲覧装置。
【請求項１１】
条件付き特定関数呼出し情報保存機能の条件が、ある特定の基準処理を実行後、経過時間が一定以上であることを条件に含むことを特徴とする請求項７記載のコンテンツ閲覧装置。
【請求項１２】
ある特定の基準処理が、特定関数呼出し情報保存機能の実行１回目であることを特徴とする請求項１１記載のコンテンツ閲覧装置。
【請求項１３】
先読みスクリプト遅延実行手段は、機能呼出し保存領域に保存された機能呼出し情報に従い、特定関数の実行を行うことを特徴とする請求項５記載のコンテンツ閲覧装置。
【請求項１４】
先読みするコンテンツは、コンテンツ閲覧装置とは独立して動作する外部情報処理装置より指定されたコンテンツであることを特徴とする請求項１から請求項１３のうちのいずれか１項記載のコンテンツ閲覧装置。
【請求項１５】
コンテンツ閲覧装置における現在の負荷状況を計測する負荷計測手段と、
前記負荷計測手段における計測の結果、負荷が高い場合はコンテンツの先読みを停止する先読み制御手段とを備えた請求項１から請求項１４のうちのいずれか１項記載のコンテンツ閲覧装置。
【請求項１６】
コンテンツ閲覧装置における現在の負荷状況を計測する負荷計測手段と、
前記負荷計測手段における計測の結果、負荷が高い場合は先読みしたコンテンツに関する処理を停止させる先読み制御手段とを備えた請求項１から請求項１４のうちのいずれか１項記載のコンテンツ閲覧装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、現在表示中のコンテンツから遷移可能なコンテンツに関する情報を先読みするコンテンツ閲覧装置に関するものである。
【背景技術】
【０００２】
近年の情報通信技術およびモバイル情報通信端末の発展と普及により、ユーザがいつでもどこでもインターネット上に偏在するコンテンツを閲覧する事が可能な環境が整備されている。近年ではコンテンツを定義するための言語であるコンテンツ記述言語としてＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ（以下、ＨＴＭＬという）が主流となっており、そのコンテンツを閲覧するためのコンテンツ閲覧装置としてはウェブ・ブラウザと呼ばれるソフトウエアが利用される事が多い。
【０００３】
ＨＴＭＬはタグを用いてコンテンツの構造を記述する方法が採用されている。また、コンテンツ中のタグで記述されたオブジェクトの見た目に関する情報はＣａｓｃａｄｉｎｇ  Ｓｔｙｌｅ  Ｓｈｅｅｔｓ（以下、ＣＳＳという）等のスタイルシートによって、記述される事が多い。また、コンテンツ中で取り扱うオブジェクトの動作や制御に関する情報はＪａｖａＳｃｒｉｐｔ（登録商標／以下省略して記載）等のスクリプト言語によって記述される事が多い。
【０００４】
ところで、大容量のコンテンツを読み込む場合や通信速度の遅い環境では、ユーザが現在のコンテンツから、次のコンテンツへの画面遷移を要求しても、次のコンテンツの画面が実際に表示されるまでに長い時間がかかってしまう課題があった。
このような課題に対しては、例えば特許文献１に示すような装置では、Ｗｅｂページ上の論理的なリンク構造に基づく階層的なページ先読み機能を実現する事により、ユーザの待機時間を削減している。この方法は、現在表示中のコンテンツから遷移可能なコンテンツに関する情報をリンク構造より取得し、画面遷移の要求が出る前に、遷移可能なコンテンツを先読みしておく事で、従来では画面遷移の要求が発行されてから発生していたコンテンツの取得処理を前倒し実行する事で、画面遷移するまでの時間を短縮するようにしたものである。
【０００５】
一方で、従来では静的な表示が主流であったコンテンツは、近年のＨＴＭＬを代表とするコンテンツ記述言語の高機能化に伴い、アニメーションや３次元グラフィックス、音声や動画再複合的にコンテンツ中で取り扱い可能となり、動的なコンテンツ表示が主流となりつつある。その場合、ＪａｖａＳｃｒｉｐｔで記述される動的コンテンツの表示制御処理が複雑化する事となり、画面遷移時にその表示制御処理が発生し、長い時間がかかってしまう課題が発生する。しかし、上記特許文献１に示されているようなコンテンツの先読み方法だけでは、画面遷移時に発生する表示制御処理を短縮する事が出来ず、上記課題に対処する事が出来ない。
【０００６】
そこで、上記課題に対処するため、先読み処理でコンテンツを読み込むだけではなく、ＣＳＳおよびＪａｖａＳｃｒｉｐｔの処理までを画面遷移前に実施する方法が考えられるが、ＪａｖａＳｃｒｉｐｔの処理を画面遷移前に実施した場合、本来そのコンテンツが画面に表示された状態で動作すべき諸々の処理が画面表示前に動作開始する事になり、本来ユーザが意図していない処理が非表示状態で起動する、複数のコンテンツに関するアニメーションや動画再生と言った、断続的に発生する処理が同時に発生するため、処理負荷が高くなる、と言った課題が発生する。
【０００７】
このような課題に対して、例えば特許文献２に記載された装置では、コンテンツに記述されたリンクをユーザが選択する前に、そのリンク先に存在するコンテンツを先読みするとともに、そのコンテンツを解析して、スクリプト処理を伴う表示制御に関する情報が記述された構造単位を除き、表示制御用の第１構造化データを生成し、ユーザ操作によってそのリンクが選択された場合に、第１構造化データを用いて表示画面を表示し、除かれたスクリプト処理を伴い表示制御用の第２構造化データを生成し、その第２構造化データを用いて表示画面を表示しなおす制御を行っている。
【０００８】
この方法ではコンテンツを先読みするだけではなく、そのコンテンツを解析しスクリプト処理を伴う記述を除外した第１構造化データを生成し、画面遷移時にはその第１構造化データを用いて画面表示を行う事で画面遷移に要する時間を短縮していると共に、スクリプト処理を行った第２構造化データを生成し、画面表示をしなおす事で完全な画面を表示している。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０００−３１１１０８号公報
【特許文献２】特開２０１１−６５４９０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記特許文献２に示されたような従来の方法では、コンテンツの解析処理のみを事前に実施するため、本来画面遷移時の主要な処理負荷であるＪａｖａＳｃｒｉｐｔに関わる表示制御処理が実施出来ていないため、その処理に関する処理時間が画面遷移時に発生するという課題があった。また、画面遷移時にスクリプト処理を行っていない第１構造化データを用いて画面表示を行うため、不完全な画面表示が必ず発生するという課題もあった。
【００１１】
この発明は上記のような課題を解決するためになされたもので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することのできるコンテンツ閲覧装置を得ることを目的とする。
【課題を解決するための手段】
【００１２】
この発明に係るコンテンツ閲覧装置は、コンテンツの先読みを行うコンテンツ閲覧装置であって、先読みしたコンテンツの解析処理を行う先読み解析手段と、先読みしたコンテンツのスクリプトを実行するための先読みコンテキストを構築する先読みコンテキスト構築手段と、先読み解析手段によって解析された先読みしたコンテンツに関連する少なくともスクリプトとレイアウト処理とを先読みコンテキストに基づいて実行する事前実行手段と、先読みしたコンテンツを非表示状態として、描画処理を実行する事前描画手段と、現在画面から次画面に切り替わる前段で、次画面が先読みしたコンテンツのうち少なくとも一つであるかを判定する先読みコンテンツ検索手段と、先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、先読みコンテキストの少なくとも一部を修正して通常コンテキストに再構築するコンテキスト復旧手段と、先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、事前実行手段で実行されたスクリプトの実行結果に基づいてスクリプトの実行を行う先読みスクリプト遅延実行手段と、先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、現在画面を非表示状態とすると共に、事前描画手段で描画されたコンテンツの事前描画結果を表示状態とする事前描画結果画面出力手段とを備えたものである。
【発明の効果】
【００１３】
この発明のコンテンツ閲覧装置は、コンテンツを先読みすると共に事前描画を行い、かつ、スクリプトの遅延実行させるようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
【図面の簡単な説明】
【００１４】
【図１】通常のブラウザ処理を示すフローチャートである。
【図２】先読みブラウザ処理を示すフローチャートである。
【図３】この発明のコンテンツ閲覧装置における動作を概念的に示す説明図である。
【図４】この発明の実施の形態１によるコンテンツ閲覧装置の構成図である。
【図５】この発明の実施の形態１のコンテンツ閲覧装置におけるユーザ操作から装置内部イベント生成までの動作を示すフローチャートである。
【図６】この発明の実施の形態１のコンテンツ閲覧装置における装置内部イベントから装置内部イベント生成までの動作を示すフローチャートである。
【図７】この発明の実施の形態１のコンテンツ閲覧装置における解析実行部の処理を示すフローチャートである。
【図８】この発明の実施の形態１のコンテンツ閲覧装置における先読み制御部の処理を示すフローチャートである。
【図９】この発明の実施の形態１のコンテンツ閲覧装置における表示制御処理（その１）を示すフローチャートである。
【図１０】この発明の実施の形態１のコンテンツ閲覧装置における表示制御処理（その２）を示すフローチャートである。
【図１１】この発明の実施の形態１のコンテンツ閲覧装置におけるバッファデータ構造を示す説明図である。
【図１２】この発明の実施の形態１のコンテンツ閲覧装置におけるバッファデータの管理例を示す説明図である。
【図１３】この発明の実施の形態１のコンテンツ閲覧装置における関数識別情報と対応する関数を管理するためのデータ構造を示す説明図である。
【図１４】この発明の実施の形態１のコンテンツ閲覧装置におけるタイマ開始記録関数による記録データ例を示す説明図である。
【図１５】この発明の実施の形態１のコンテンツ閲覧装置における画面遷移処理を示すフローチャートである。
【図１６】この発明の実施の形態２によるコンテンツ閲覧装置の構成図である。
【図１７】この発明の実施の形態２のコンテンツ閲覧装置における先読み制御部の処理を示すフローチャートである。
【図１８】この発明の実施の形態２のコンテンツ閲覧装置における外部情報処理装置の処理を示すフローチャートである。
【図１９】この発明の実施の形態３によるコンテンツ閲覧装置の構成図である。
【図２０】この発明の実施の形態３のコンテンツ閲覧装置における先読み制御部の処理を示すフローチャートである。
【図２１】この発明の実施の形態３のコンテンツ閲覧装置における先読み制御部の処理を示すフローチャートである。
【発明を実施するための形態】
【００１５】
実施の形態１．
以下、本発明の具体的な実施の形態を説明する前に、本発明の適用対象の一つであるウェブ・ブラウザの基本的な処理を図１を用いて説明する。
ウェブ・ブラウザは、起動すると、デフォルトで設定されている、もしくはユーザから指定されるＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）を利用して、表示すべきコンテンツのＨＴＭＬファイルをコンテンツサーバに要求する（ステップＳＴ１０１）。ウェブ・ブラウザは、コンテンツサーバからステップＳＴ１０１で要求したＨＴＭＬファイルを受信する（ステップＳＴ１０２）と、そのコンテンツを表示するためにＨＴＭＬファイル解析処理（ステップＳＴ１０３）を開始する。その解析処理の途中で、ＨＴＭＬファイルに記述されているタグの内容によっては、そのＨＴＭＬファイルに関連付けされている外部リソースをサーバに要求する処理（ステップＳＴ１０４）や、関連付けされているＪａｖａＳｃｒｉｐｔの実行（ステップＳＴ１０５）が実施される。特にＪａｖａＳｃｒｉｐｔ処理はＨＴＭＬ解析処理の途中でブロッキング処理として行われるため、実行されるスクリプトの内容に依存した処理時間がＨＴＭＬファイル解析処理時間に反映される事になる。
【００１６】
ステップＳＴ１０３のＨＴＭＬファイル解析処理の終了後、その解析結果に対して、ＨＴＭＬファイルに関連付けされたＣＳＳを用いて、コンテンツの見た目の制御処理（ステップＳＴ１０６）および、画面上に表示するために必要な表示データの生成処理（ステップＳＴ１０７）が実行され、最終的に画面表示（ステップＳＴ１０８）される。
コンテンツの内容によっては、ステップＳＴ１０８の後もＣＳＳやＪａｖａＳｃｒｉｐｔの処理が断続的に実行され、画面表示内容の更新処理が駆動する場合もある。図１では一つの例としてＪａｖａＳｃｒｉｐｔ処理が断続的に実行された場合のフロー（ステップＳＴ１０９）を図示しており、ステップＳＴ１０８の後にステップＳＴ１０５で断続的に動作するスクリプトが起動し、ステップＳＴ１０６へと処理が繰り返される事になる。また、ユーザの操作やＪａｖａＳｃｒｉｐｔの処理によって、遷移すべきコンテンツが決定すると、その遷移すべきコンテンツのＵＲＬを用いて、ステップＳＴ１０１から処理が繰り返される。
【００１７】
以上の様に、一般的なウェブ・ブラウザは、現在表示中のコンテンツで何らかの処理によって遷移すべきコンテンツが決定してからその遷移すべきコンテンツに対する処理を行うため、画面切り替えに要する時間にステップＳＴ１０１からステップＳＴ１０７の処理に要する時間が上乗せされる事になり、画面切り替えに長い時間がかかる要因となっていた。
【００１８】
次に、例えば特許文献１を代表とするコンテンツの先読みを行うウェブ・ブラウザの基本的な処理を、図２を用いて説明する。
ウェブ・ブラウザは起動すると、デフォルトで設定されている、もしくはユーザから指定されるＵＲＬを利用して、表示すべきコンテンツのＨＴＭＬファイルをコンテンツサーバに要求し（ステップＳＴ１０１）、コンテンツサーバからＨＴＭＬファイルを受信する（ステップＳＴ１０２）と、そのコンテンツを表示するためにＨＴＭＬファイル解析処理（ステップＳＴ１０３）を開始するのは、図１の処理と同様である。一方、ウェブ・ブラウザは、取得したＨＴＭＬファイルに対して、このコンテンツから遷移可能なコンテンツ情報を抽出し、そのコンテンツを先読み処理する（ステップＳＴ２０１）。なお、この例では、先読み処理をＨＴＭＬファイル解析処理と並行して処理を行わせているが、ＨＴＭＬファイル解析処理の解析結果を用いて、先読み処理を開始させても構わない。
【００１９】
遷移可能なコンテンツ情報を抽出する具体的な方法として幾つか例示すると、ＨＴＭＬのアンカータグ（<a>）のhrefプロパティを抽出することで、遷移可能なコンテンツのＵＲＬを抽出することが可能である。また、ＪａｖａＳｃｒｉｐｔ中におけるlocation.hrefへの値変更を行っている記述の、変更する値を抽出することで、遷移可能なコンテンツのＵＲＬを抽出することが可能である。また、このような先読みされたコンテンツは先読み結果として保存する（ステップＳＴ２０２）。
【００２０】
ＨＴＭＬファイル解析処理（ステップＳＴ１０３）の途中で、ＨＴＭＬファイルに記述されているタグの内容によっては、そのＨＴＭＬファイルに関連付けされている外部リソースをサーバに要求する処理（ステップＳＴ１０４）や、関連付けされているＪａｖａＳｃｒｉｐｔの実行（ステップＳＴ１０５）が実施されることや、ステップＳＴ１０９の処理は図１に示した処理と同様である。
【００２１】
一方、ユーザの操作やＪａｖａＳｃｒｉｐｔの処理によって、遷移すべきコンテンツが決定すると、その遷移すべきコンテンツのＵＲＬを用いて、先読み反映処理（ステップＳＴ２０３）において、遷移すべきコンテンツが先読みされ、先読み結果として保存されているのかを確認し、保存されている場合には、その先読みされたコンテンツを、先読み結果（ステップＳＴ２０２）から取得してＨＴＭＬファイル解析を行う（ステップＳＴ１０３）。逆に、ステップＳＴ２０３において、先読み結果として保存されていない場合には、遷移すべきコンテンツのＵＲＬを用いて、ＨＴＭＬファイル要求（ステップＳＴ１０１）を行う。
【００２２】
このように、表示されているコンテンツから遷移可能なコンテンツを先読みすることで、画面遷移時のＨＴＭＬファイルの取得処理が発生しない分、画面遷移が高速化する。しかしながら、ＨＴＭＬファイルの解析処理や関連リソース取得処理、関連スクリプトの実行処理等は画面遷移時に発生し、その処理が画面遷移の遅延につながっている。
【００２３】
そこで、本発明では、先読み処理を行うと共にこの先読み結果に基づく事前描画を行い、かつ、事前描画を行う際に問題となる、スクリプトやイベント処理が開始されてしまうことを避けるための遅延実行処理を行うようにしている。図３は、本発明の先読み＋事前描画処理を概念的に示す説明図である。図示のように、次画面候補ソースを前画面の表示中に読み込んで事前描画を行い、次画面への画面遷移が開始されると直ちに事前描画した画面を表示するようにしている。また、先読み＋事前描画を行う際に画面切替まで処理を遅延させる独自関数で上書きしている。以下、このような処理を実現する実施の形態について説明する。
【００２４】
図４は、実施の形態１のコンテンツ閲覧装置を示す構成図である。
図示のように、コンテンツ閲覧装置１００は、イベント制御部１０１、解析実行部１０２、通信部１０３、スクリプト実行部１０４、先読み制御部１０５、コンテキスト制御部１０６、表示制御部１０７、表示部１０８を備えている。
【００２５】
イベント制御部１０１は、イベントの発生に基づき、解析実行部１０２、通信部１０３、スクリプト実行部１０４、先読み制御部１０５に対して制御コマンドを発行し、コンテンツ閲覧装置１００における各部の制御を行う制御部である。解析実行部１０２は、イベント制御部１０１からの制御コマンドを受けてコンテンツの解析を行う処理部である。通信部１０３は、イベント制御部１０１からの制御コマンドを受けて、ネットワーク２００への接続やローカルのファイルシステムへのアクセスを行ってコンテンツの取得を行う処理部である。スクリプト実行部１０４は、解析実行部１０２で解析されたスクリプトの実行を行い、また、コンテキスト制御部１０６によって構築または復旧されたコンテキストに基づいてスクリプトの実行を行う処理部である。先読み制御部１０５は、イベント制御部１０１からの制御コマンドを受けてコンテンツの先読みを行う処理部である。コンテキスト制御部１０６は、通常の表示すべきコンテンツと、先読み対象のコンテンツとで、異なる処理を解析実行部１０２やスクリプト実行部１０４および表示制御部１０７で行わせる事を目的にコンテキストを先読みコンテンツ用に変更する処理部である。表示制御部１０７は、コンテンツの表示部１０８への表示制御を行う制御部であり、画面遷移時に先読みしたコンテンツの事前描画結果を用いて表示制御を行うよう構成されている。表示部１０８は、コンテンツの表示を行う表示装置である。
【００２６】
また、実施の形態１のコンテンツ閲覧装置１００は、先読みしたコンテンツの解析処理を行う先読み解析手段と、先読みしたコンテンツのスクリプトを実行するための先読みコンテキストを構築する先読みコンテキスト構築手段と、先読み解析手段によって解析された先読みしたコンテンツに関連する少なくともスクリプトとレイアウト処理とを先読みコンテキストに基づいて実行する事前実行手段と、先読みしたコンテンツを非表示状態として、描画処理を実行する事前描画手段と、現在画面から次画面に切り替わる前段で、次画面が先読みしたコンテンツのうち少なくとも一つであるかを判定する先読みコンテンツ検索手段と、先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、先読みコンテキストの少なくとも一部を修正して通常コンテキストに再構築するコンテキスト復旧手段と、先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、事前実行手段で実行されたスクリプトの実行結果に基づいてスクリプトの実行を行う先読みスクリプト遅延実行手段と、先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、現在画面を非表示状態とすると共に、事前描画手段で描画されたそのコンテンツの事前描画結果を表示状態とする事前描画結果画面出力手段とを備えている。ここで、先読み解析手段は解析実行部１０２で、先読みコンテキスト構築手段とコンテキスト復旧手段はコンテキスト制御部１０６で、事前実行手段と先読みスクリプト遅延実行手段はスクリプト実行部１０４で、事前描画手段と先読みコンテンツ検索手段と事前描画結果画面出力手段は表示制御部１０７を用いて実現されている。
【００２７】
以下、各機能部の詳細と動作について説明する。
イベント制御部１０１には、例えば、キーボード、マウス、トラックボール等の様なユーザが直接操作する事によって装置を制御するために用いられる外部操作機器からの操作情報が入力される。イベント制御部１０１は、入力された操作情報をコンテンツ閲覧装置１００内で解釈可能な制御コマンドに変換し、解析実行部１０２、通信部１０３、スクリプト実行部１０４、先読み制御部１０５にその制御コマンドを発行する。
上記ユーザ操作から制御コマンドを発行するまでの処理を、具体的なユーザ操作例をあげ、図５を用いて説明する。
【００２８】
ユーザがブラウザの表示すべきコンテンツを指示するために設けられたＵＲＩバーに，ユーザがある特定のコンテンツを示すＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）を入力後、確定キーを入力（ステップＳＴ５０１）した場合、確定キー操作情報がイベント制御部１０１に入力される（ステップＳＴ５０２）。その入力を受けたイベント制御部１０１は、確定キーを押された対象がＵＲＩバーである事より、ＵＲＩバーに入力されたＵＲＩに示すコンテンツを読み込む処理を行う事を判定し（ステップＳＴ５０３）、その処理内容に対応する制御コマンドを生成し（ステップＳＴ５０４）、その制御コマンドを通信部１０３に発行する（ステップＳＴ５０５）。どの様な条件で、どのような操作情報が入力された時にどのモジュールに、どのような制御コマンドを発行するかはイベント制御部１０１の内部ロジックとして組み込まれている、もしくは外部のイベント制御ロジック設定ファイル等に記述されており、その内容に従って制御する事が想定される。
【００２９】
また、イベント制御部１０１は、操作情報以外に、コンテンツ閲覧装置１００内部で発生する装置内部イベントも入力される。イベント制御部１０１は入力された装置内部イベントをコンテンツ閲覧装置１００内で解釈可能な制御コマンドに変換し、解析実行部１０２、通信部１０３、スクリプト実行部１０４、先読み制御部１０５にその制御コマンドを発行する。
【００３０】
上記の装置内部イベントから制御コマンドを発行するまでの処理を、具体的な装置内部イベントを例にあげ、図６を用いて説明する。
前述のＵＲＩバーに入力されたＵＲＩに示すコンテンツを読み込む処理に対応する制御コマンドを受けた通信部１０３は、制御コマンドに従いＵＲＩが示すコンテンツを取得する。具体的にはＵＲＩが示す先がネットワーク２００上のコンテンツであれば、ネットワーク接続を行い、ネットワーク２００上の該当するコンテンツを取得する処理を行う。一方でＵＲＩが示す先がローカル上のコンテンツであれば、ローカルのファイルシステムに該当するコンテンツの取得処理を行う。いずれにせよ、ＵＲＩが指し示すコンテンツの取得が完了すると通信部１０３は、制御コマンドに対応する処理が完了した旨を意味する装置内部イベントを生成し、イベント制御部１０１に発行する（ステップＳＴ６０１）。この時、どの制御コマンドに対してどのような処理を行うのか、その処理結果に応じてどの様な装置内部イベントを発行するのかは実際に処理を行うモジュールの内部ロジックとして組み込まれている。また、装置内部イベントはどの制御コマンドに対応しているのかを示す情報を装置内部イベントに記述しても構わない。
【００３１】
以降、あるモジュールから別モジュールへ要求を発行すると記述した場合、あるモジュールからある装置内部イベントをイベント制御部１０１に発行し、その装置内部イベントに従ってイベント制御部１０１がその別モジュールへ制御コマンドを発行する一連の処理で実施する場合も含むものとする。
【００３２】
装置内部イベントを受けたイベント制御部１０１は、受信した装置内部イベントが、ＵＲＩが指し示すコンテンツの取得完了を意味すると判定し（ステップＳＴ６０２）、そのコンテンツを解析し、処理を行わせる事を意味する制御コマンドを生成し（ステップＳＴ６０３）、その制御コマンドを解析実行部１０２に発行する（ステップＳＴ６０４）。この時、どの装置内部イベントに対して、どのような制御コマンドを生成し、どのモジュールに発行を行うのかは、イベント制御部１０１の内部ロジックとして組み込まれている。
【００３３】
次に、コンテンツを解析し、処理を行わせる事を意味する制御コマンドを受けた解析実行部１０２の処理を図７を用いて説明する。
解析実行部１０２は、制御コマンドの内容とその制御コマンドに付随するパラメータ、この場合には処理対象となるコンテンツの識別子、もしくはコンテンツ自身、から指定されたコンテンツの解析処理を実行する（ステップＳＴ７０１）。具体的には取得したコンテンツがＨＴＭＬコンテンツの場合には、ＨＴＭＬコンテンツを解析し、その解析結果となるＤＯＭ（Ｄｏｃｕｍｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ）を生成する。ＤＯＭはＨＴＭＬコンテンツの内部構造を木構造で表現した内部データである。
【００３４】
コンテンツ解析処理では、その時点での未解析のコンテンツが残っているかを確認するためコンテンツの終端まで解析したかを判定する（ステップＳＴ７０２）。その結果、未解析部分が残っていない場合には、コンテンツ解析処理は終了する（ステップＳＴ７０３）。一方、ステップＳＴ７０２において未解析部分が残っている場合には、未解析部分の先頭からタグの抽出処理を行い（ステップＳＴ７０４）、その抽出結果から、タグに対応するＤＯＭ要素を生成する（ステップＳＴ７０５）。そのＤＯＭ要素の内容において、関連リソースに関する情報が記述されているかを判定し（ステップＳＴ７０６）、記述されていない場合にはステップＳＴ７０２の処理に遷移し、逆に記述されている場合には、そのリソースの取得要求を解析実行部１０２から通信部１０３に発行する（ステップＳＴ７０７）。
【００３５】
関連リソースの具体例として、画像ファイルや動画ファイル、音声ファイル、ＣＳＳファイル、ＪａｖａＳｃｒｉｐｔファイル、プラグイン用拡張データファイルなどがあげられる。関連リソースに関する情報には、通常、その関連リソースを識別するための情報としてＵＲＩが記述されている。リソース取得要求を受けた通信部１０３は、指定されたＵＲＩのリソースを取得し、その結果を解析実行部１０２に通知する。その通知を受けた解析実行部１０２は受け取ったリソースを該当する関連リソースに関する情報が記述されたＤＯＭ要素に関連付けを行い（ステップＳＴ７０８）、以降の処理でそのＤＯＭ要素から関連リソースを参照する事が出来るようにする。その後、リソースの種別によってはリソース固有処理をこの時点で実行する必要があるため、リソース固有処理を行い（ステップＳＴ７０９）、ステップＳＴ７０２の処理に遷移する。
【００３６】
リソース固有処理（ステップＳＴ７０９）の具体例として、関連リソースがＪａｖａＳｃｒｉｐｔファイルの場合には、この時点でＪａｖａＳｃｒｉｐｔの実行を行う必要があるため、そのＪａｖａＳｃｒｉｐｔファイルに記載されているＪａｖａＳｃｒｉｐｔコードの実行要求をスクリプト実行部１０４に発行し、その結果が受け取れるまで解析実行部１０２は処理権をスクリプト実行部１０４へ移譲する。
【００３７】
また、ステップＳＴ７０５において生成されたＤＯＭ要素を用いて、このコンテンツを表示した際に次に遷移する可能性のあるコンテンツの情報を抽出する先読み抽出処理（これについては後述する）も、ステップＳＴ７０５の一処理として合わせて実行しても構わない。その場合、解析実行部１０２で行った先読み抽出処理の結果と共に先読み制御部１０５へ先読み制御開始要求を発行する事で先読み制御部１０５に転送する。その場合にはＤＯＭ要素一つに対する先読み抽出処理の結果一つに対して、先読み制御開始要求を発行するとしても構わないし、コンテンツ全体で実施した先読み抽出処理の結果全てを一括して先読み制御開始要求を発行するとしても構わない。
【００３８】
具体的なＤＯＭ要素を用いた先読み抽出処理の一例を以下に示す。
ＨＴＭＬでは次のコンテンツに遷移するためのオブジェクトとしてアンカーオブジェクトが定義されており、アンカーオブジェクトをユーザがクリックする事でそのアンカータグに関連付けされているＵＲＩのコンテンツを表示する事になる。アンカーオブジェクトをＨＴＭＬコンテンツ中で表現するタグはアンカータグ<a>であり、このアンカータグに対応するＤＯＭ要素のhref属性には遷移する先のコンテンツのＵＲＩが記述されている。つまり、アンカータグに関連するＤＯＭ要素のhref属性を抽出する事で先読み対象となるコンテンツのＵＲＩを抽出する事が可能であり、この抽出処理がアンカーに対する先読み抽出処理となる。
【００３９】
また、ＪａｖａＳｃｒｉｐｔではlocationオブジェクトのhrefプロパティに対してＵＲＩを代入する事で、そのＵＲＩのコンテンツに遷移する処理を開始する。そのため、ＪａｖａＳｃｒｉｐｔを示すタグである<script>のＤＯＭ要素に対して、関連付けされているＪａｖａＳｃｒｉｐｔコード本体を解析し、locationオブジェクトのhrefプロパティに値を設定している箇所を抽出し、その値がＵＲＩである場合には、そのＵＲＩを先読み対象となるコンテンツのＵＲＩとして抽出する処理がＪａｖａＳｃｒｉｐｔに対する先読み抽出処理となる。
上記の先読み抽出処理の処理結果は先読み制御部１０５に先読み制御開始要求と共に通知する
【００４０】
さらなる先読み抽出処理として、ステップＳＴ７０９の処理において、ＪａｖａＳｃｒｉｐｔコードの実行する際に、そのＪａｖａＳｃｒｉｐｔコードに先読み抽出処理を行うとしても構わない。その場合、ＪａｖａＳｃｒｉｐｔからその時点までに生成されたＤＯＭにアクセスし、アンカータグやスクリプトタグを抽出し、前述のステップＳＴ７０５における先読み抽出処理に相当する記述を行っても構わない。その場合、通常ＨＴＭＬコンテンツに記述されている全てのタグに対応するＤＯＭ要素が生成されている事が望ましいため、通常はその先読み抽出処理を行うＪａｖａＳｃｒｉｐｔコードが記述されているスクリプトタグは最後のタグとして記述されている事が望ましい。
【００４１】
また、ステップＳＴ７０９の処理において、ＪａｖａＳｃｒｉｐｔコードの実行する際にＪａｖａＳｃｒｉｐｔコード中に先読み抽出結果に相当するデータが記述されており、そのデータに先読み対象となるコンテンツのＵＲＩが記述されており、そのデータを先読み制御部１０５に先読み制御開始要求と共に通知する方法を先読み抽出処理としても構わない。
【００４２】
次に、コンテンツ解析処理終了（ステップＳＴ７０３）後、解析実行部１０２は先読み制御部１０５に先読み制御開始要求を発行する（ステップＳＴ７１０）と共に、そのコンテンツに関する表示処理を実施するため表示制御部１０７に表示制御開始要求を発行し（ステップＳＴ７１１）、自身の処理を終了する。ただし、先読み制御開始要求は既に発行済みの場合にはこのタイミングで発行する必要はない。また、このタイミングで発行する場合にはＨＴＭＬコンテンツではloadイベントに呼応するイベントハンドラで、先読み制御開始要求を発行する（ステップＳＴ７１０）する方法が考えられる。
【００４３】
次に、先読み制御部１０５の説明を行う。
（１）解析実行部１０２で先読み抽出処理を行っていない場合
解析実行部１０２より先読み抽出結果を伴わない先読み制御開始要求を受信した場合、先読み制御部１０５は、先読み処理を行う対象となるコンテンツの抽出処理を行う。その場合、解析実行部１０２で生成したＤＯＭを利用して、そのＤＯＭの解析元となるコンテンツを表示した際に次のコンテンツとして遷移する先のコンテンツに関する情報を抽出する。具体的にはステップＳＴ７０５で実施しても構わないとした先読み抽出処理と同等の処理を実施し、先読み抽出結果を生成する。その結果を持って、以下で説明する処理を行う。
【００４４】
（２）解析実行部１０２で先読み抽出処理を行っている場合
先読み制御部１０５が先読み抽出結果を伴う先読み制御開始要求を受信した場合、もしくは、先読み抽出結果を伴わない先読み制御開始要求を受信した先読み制御部１０５が先読み抽出処理を終了後、以下の処理を実行する。この処理を図８を用いて説明する。
【００４５】
先読み制御開始要求を受信した先読み制御部１０５は、先読み制御処理を開始する（ステップＳＴ８０１）。まず、現時点までに処理を行っていない先読み抽出結果の要素が存在するかを判定し（ステップＳＴ８０２）、存在しない場合には先読み制御処理を終了する（ステップＳＴ８０３）。逆に、処理を行っていない先読み抽出結果の要素が存在する場合には、未処理の先読み抽出結果の要素から先読み対象となるコンテンツのＵＲＩを抽出し、通信部１０３にそのＵＲＩのコンテンツ取得の開始要求を発行する（ステップＳＴ８０４）。この時、通信部１０３からの取得完了通知を待って、次の先読み用コンテキスト構築処理（ステップＳＴ８０５）に遷移しても構わないが、取得完了通知を待たずにステップＳＴ８０５に遷移する方法をとる事で通信部１０３の処理を並列化させても構わない。その場合、処理を行っていない先読み抽出結果の要素がなくなった場合には、発行した全てのコンテンツ取得処理開始要求に対する取得完了通知が受信できるまで待機し、受信されるごとにその通知に対する次の先読み用コンテキスト構築処理（ステップＳＴ８０５）を実行する。
【００４６】
通信部１０３から要求したコンテンツの取得完了通知を先読み制御部１０５が受信すると、取得されたコンテンツを先読み解析処理として処理するための先読み用コンテキスト構築処理（ステップＳＴ８０５）を行う。
コンテキストとは、ブラウザが処理するために必要な情報をまとめたものである。具体的には、例えばスクリプト実行部１０４が指定されたスクリプトを実行する際に使用するグローバル変数やグローバル関数、その他グローバル変数が持つオブジェクトのプロパティを介して間接的に参照可能なその他の変数やオブジェクト、値、関数等が含まれる。また、表示制御部１０７で表示制御処理を行うための制御対象となる表示オブジェクトの構成も含めても構わない。
【００４７】
先読み用コンテキスト構築処理（ステップＳＴ８０５）では、通常の表示すべきコンテンツと、先読み対象のコンテンツとで、異なる処理を解析実行部１０２、スクリプト実行部１０４、表示制御部１０７で行わせる事を目的にコンテキストを先読みコンテンツ用に変更する処理であり、コンテキスト制御部１０６にて処理される。具体的な変更内容については後述するが、先読みコンテンツ用にコンテキストを変更するとは、コンテキストに格納されている情報の一部または全てを、通常の表示すべきコンテンツ用のコンテキストの内容とは異なる内容とする事を意味する。例えば、通常の表示すべきコンテンツ用のコンテキストには存在しない変数やオブジェクトを追加する、または、存在するが、その値やオブジェクト、関数が異なるものに置き換える等である。
【００４８】
その後、ステップＳＴ８０５で生成した先読み用コンテキストを持って先読みコンテンツの解析処理（ステップＳＴ８０６）を実行する。この処理は前述の解析実行部１０２で実行する図７で図示された処理を実行するが、従来説明した処理と異なる点として、先読み用コンテキストを利用して、処理が実施される点である。
先読みコンテンツ解析処理（ステップＳＴ８０６）が完了すると、解析実行部１０２はその結果を先読み制御部１０５に通知し、その通知を受けた先読み制御部１０５は、先読みコンテンツ解析処理結果を元に先読み用の表示制御を開始するための要求を表示制御部１０７に発行する（ステップＳＴ８０７）。
【００４９】
次に、表示制御部１０７の説明を行う。表示制御部１０７は解析実行部１０２および先読み制御部１０５からの表示制御開始要求をトリガとして処理を開始する。ただし、解析実行部１０２から発行される表示制御開始要求と、先読み制御部１０５が発行する表示制御開始要求では要求される処理内容が異なっている。以下ではそれぞれの説明を行う。
【００５０】
・通常の表示すべきコンテンツ用の表示制御処理について
以下では、解析実行部１０２から発行される表示制御開始要求を表示制御部１０７が受け取った場合の処理について図９を用いて説明する。
解析実行部１０２から発行される表示制御開始要求を受けた表示制御部１０７は、処理対象となる解析実行部１０２の処理結果であるＤＯＭを取得し、処理対象ＤＯＭに設定する（ステップＳＴ９０１）。また、その際に、関連するＣＳＳや画像等と言った関連リソースも合わせて取得しても構わないし、それらを取得するのは以降の処理で必要となった時点で取得でも構わない。
【００５１】
処理対象ＤＯＭを取得後、表示制御部１０７は処理対象のＤＯＭを描画する対象となるバッファの取得を行う（ステップＳＴ９０２）。この時、取得するバッファは必ず描画結果を画面に反映する設定がなされたバッファ（表示対象バッファ）を取得する。次に、表示対象バッファを取得した後、処理対象ＤＯＭおよび関連リソースを用いて処理対象ＤＯＭに存在するオブジェクトが、どの位置にどの大きさで配置すべきかを決定するレイアウト決定処理を行う（ステップＳＴ９０３）。このレイアウト決定処理では、ＤＯＭに存在する各オブジェクトの種別やオブジェクトが持つプロパティ値、そのオブジェクトに関連付けされているＣＳＳの内容や、画像などの関連リソースの情報を総合的に用いて決定を行う。また、改行を示す<BR>タグ等、表示する必要のないオブジェクトも存在しており、その様なオブジェクト自身に対するレイアウト決定処理はスキップする。
【００５２】
レイアウト決定処理（ステップＳＴ９０３）にて、ＤＯＭに存在する全ての表示すべきオブジェクトの配置が確定すると、次にステップＳＴ９０２で取得したバッファに対するレンダリング処理を行う（ステップＳＴ９０４）。この処理では、レイアウト決定処理（ステップＳＴ９０３）で確定した全配置の中で、どの領域が実際にバッファ上に描画すべきかを示す描画位置情報を別途管理しており、その情報に基づいて全配置から描画すべき領域をクリッピングし、バッファへの描画処理を行う。
【００５３】
ステップＳＴ９０４のバッファへのレンダリング処理が完了すると、その結果を速やかに画面に反映するため、バッファの内容を画面に反映する処理を実行し（ステップＳＴ９０５）、レンダリング結果を画面に出力する。実際の画面出力処理は表示部１０８に対してバッファの内容を表示する様に要求を発行する事で行われる。
【００５４】
・先読みコンテンツ用の表示制御処理について
以下では、先読み制御部１０５から発行される表示制御開始要求を表示制御部１０７が受け取った場合の処理について図１０を用いて説明する。
先読み制御部１０５から発行される表示制御開始要求を受けた表示制御部１０７は、処理対象となる解析実行部の処理結果であるＤＯＭを取得し、処理対象ＤＯＭに設定する（ステップＳＴ１００１）。また、その際に、関連するＣＳＳや画像等と言った関連リソースも合わせて取得しても構わないし、それらを取得するのは以降の処理で必要となった時点で取得でも構わない。
【００５５】
処理対象ＤＯＭを取得後、表示制御部１０７は処理対象のＤＯＭを描画する対象となる非表示対象のバッファのうち、未使用のものが存在するかを確認する（ステップＳＴ１００２）。確認の結果、未使用の非表示対象バッファが存在しない場合には、新規に非表示対象バッファを生成し（ステップＳＴ１００３）、その非表示対象バッファを処理対象とする（ステップＳＴ１００４）。逆に、未使用の非表示対象バッファが存在する場合には、その未使用の非表示対象バッファを処理対象とする（ステップＳＴ１００４）。
【００５６】
非表示対象バッファを取得した後、処理対象ＤＯＭおよび関連リソースを用いて処理対象ＤＯＭに存在するオブジェクトが、どの位置にどの大きさで配置すべきかを決定するレイアウト決定処理を行う（ステップＳＴ１００５）。このレイアウト決定処理では、ＤＯＭに存在する各オブジェクトの種別やオブジェクトが持つプロパティ値、そのオブジェクトに関連付けされているＣＳＳの内容や、画像などの関連リソースの情報を総合的に用いて決定を行う。また、改行を示す<BR>タグ等、表示する必要のないオブジェクトも存在しており、その様なオブジェクト自身に対するレイアウト決定処理はスキップする。
レイアウト決定処理（ステップＳＴ１００５）にて、ＤＯＭに存在する全ての表示すべきオブジェクトの配置が確定すると、次に、ステップＳＴ１００４で取得したバッファに対するレンダリング処理を行う（ステップＳＴ１００６）。この処理では、レイアウト決定処理（ステップＳＴ１００５）で確定した全配置の中で、どの領域が実際にバッファ上に描画すべきかを示す描画位置情報を別途管理しており、その情報に基づいて全配置から描画すべき領域をクリッピングし、バッファへの描画処理を行う。
【００５７】
解析実行部１０２から発行される表示制御開始要求を受けた表示制御部１０７は、バッファへのレンダリング処理（ステップＳＴ９０４）が完了すると、バッファの内容を画面に反映する処理を行う（ステップＳＴ９０５）。一方、先読み制御部１０５から発行される表示制御開始要求を受けた表示制御部１０７の処理では、処理対象のバッファが非表示対象バッファであるため、バッファの内容を画面に反映する処理は行わない。しかし、非表示対象バッファには処理対象ＤＯＭを表示する場合に必要なバッファが準備出来ており、バッファの表示設定切り替えのみで、画面の表示内容を切り替え可能なデータを準備する事が出来ている事になる。
【００５８】
次に、表示対象バッファと非表示対象バッファの管理方法について具体的な例をあげて説明する。
図１１は、バッファおよびその関連情報を含めたデータ構造を示す。このデータ構造にはこのバッファは表示すべきか、非表示とすべきかを示す情報を格納する表示設定領域１１０１，そのバッファに描画内容を書き込む元となるコンテンツの識別情報を格納するＵＲＩ領域１１０２、およびそのバッファ本体を格納するバッファ領域１１０３を保持する。
【００５９】
表示設定領域１１０１には、例えば表示すべきバッファである事を示す場合にはｔｒｕｅ、非表示とすべきバッファである事を示す場合にはｆａｌｓｅが格納されているとしても構わない。ＵＲＩ領域１１０２にはそのバッファに描画内容を書き込む元となるコンテンツを一意に識別できる情報を格納するが、ＵＲＩを用いても構わない。バッファ領域１１０３には描画領域サイズ分のメモリ領域を確保すればよい。また、描画領域サイズに関する情報やピクセルのデータサイズ等の情報をバッファ領域１１０３に含めても構わないが、それ以外にも表示設定領域１１０１に含めても構わない。
【００６０】
図１２は、図１１で示したバッファおよびその関連情報を含めたデータ構造の具体的な表現方式の一例である。この例ではコンテンツ閲覧装置１００にて取り扱うＨＴＭＬおよびＣＳＳをベースに表現した例となっている。
まず、全てのバッファを管理するための最上位ＨＴＭＬコンテンツとなるＰａｒｅｎｔ  ＨＴＭＬ（１２０１）を用意する。このＰａｒｅｎｔ  ＨＴＭＬコンテンツはコンテンツ閲覧装置で起動時にロードされるコンテンツとしても構わない。このＰａｒｅｎｔ  ＨＴＭＬコンテンツは一つ以上のｉｆｒａｍｅタグ（１２０２〜１２０５）を保持する。各ｉｆｒａｍｅタグはバッファ領域１１０３に相当するオブジェクトとして取り扱う。各ｉｆｒａｍｅタグには表示設定領域１１０１およびＵＲＩ領域１１０２に対応する情報を設定する必要がある。ＵＲＩ領域１１０２に対応する情報は各ｉｆｒａｍｅタグにどのコンテンツをロードするのかをＵＲＩで指定するためのプロパティであるｓｒｃプロパティの値として設定する事ができる。
【００６１】
一方で、表示設定領域１１０１に対応する情報は、各ｉｆｒａｍｅに独自のプロパティ、例えばｉｓＶｉｓｉｂｌｅプロパティにｔｒｕｅ値、ｆａｌｓｅ値で設定するとしてもよい。それ以外の方法としてＰａｒｅｎｔ  ＨＴＭＬコンテンツの関連リソースとして表示用ＣＳＳ（１２０６）および非表示用ＣＳＳ（１２０７）を設定し、いずれか一方と各ｉｆｒａｍｅとを関連付けするためにｃｌａｓｓプロパティ等に値を設定するとしても構わない。例えば下記の様な二種類のＣＳＳがＰａｒｅｎｔ  ＨＴＭＬの関連リソースとして設定されているとする。
【００６２】
2014157549.tif 000003
【００６３】
二種類のＣＳＳのうち、上段が表示用ＣＳＳ（１２０６），下段が非表示用ＣＳＳ（１２０７）の一例である。この時に、あるｉｆｒａｍｅタグを表示用バッファとして取り扱う場合、そのｉｆｒａｍｅタグのｃｌａｓｓプロパティには“foreground_class“がプロパティ値に含まれる値を設定する。また、あるｉｆｒａｍｅタグを非表示用バッファとして取り扱う場合、そのｉｆｒａｍｅタグのｃｌａｓｓプロパティには“background_class“がプロパティ値に含まれる値を設定する。このように設定する事で、コンテンツ閲覧装置として組み込まれている機能およびデータ構造を利用し、表示設定領域１１０１に関するデータを管理する事が可能となる。
【００６４】
解析実行部１０２から発行される表示制御開始要求を表示制御部１０７が受け取った場合、ｃｌａｓｓプロパティに“foreground_class“が含まれる値に設定される事になる。一方で、先読み制御部１０５から発行される表示制御開始要求を表示制御部１０７が受け取った場合、ｃｌａｓｓプロパティには“background_class“がプロパティ値に含まれる値に設定される事になる。また、通常はＰａｒｅｎｔ  ＨＴＭＬにはｃｌａｓｓプロパティに“foreground_class“が含まれる値を持つｉｆｒａｍｅオブジェクトは一つしか存在せず、逆に“background_class“がプロパティ値に含まれる値を持つｉｆｒａｍｅオブジェクトは０個以上存在し、複数存在する場合もある。
【００６５】
また、表示設定領域１１０１に関する情報以外にもバッファサイズ等の関連データもＣＳＳで管理するとしても構わない。例えば、下記の様なＣＳＳがＰａｒｅｎｔ  ＨＴＭＬの関連リソースとして設定されているとする。
2014157549.tif 000004
このＣＳＳは、ｃｌａｓｓプロパティに文字列“buffer_size_class”が含まれているオブジェクトをコンテンツ閲覧装置１００のウィンドウサイズと一致するサイズに設定する事を意味する。よって、バッファサイズをコンテンツ閲覧装置１００のウィンドウサイズと一致させたい場合にはｃｌａｓｓプロパティの値を文字列“buffer_size_class”が含まれる様な値に変更する事で、バッファのサイズをＣＳＳによって管理する事が可能となる。
【００６６】
以上までで説明した処理を行う事によって、現在表示すべきコンテンツのみを表示部１０８で表示した上で、先読み制御部１０５で先読みされたコンテンツを非表示対象バッファ上までは描画処理を実行可能なコンテンツ閲覧装置１００となる事が分かる。
【００６７】
次にコンテキスト制御部１０６における具体的な先読み用コンテキストの変更内容とその効果について説明を行う。
コンテキスト制御部１０６は、通常の表示すべきコンテンツと、先読み対象のコンテンツとで、異なる処理を解析実行部１０２、スクリプト実行部１０４、表示制御部１０７で行わせる事を目的にコンテキストを制御する処理部である。具体的には、コンテキストに格納されている情報の一部または全てを、通常の表示すべきコンテンツ用のコンテキストの内容とは異なる内容とする事で先読み対象のコンテンツ用コンテキストを生成する処理（以下、先読み用コンテキスト構築処理）と、逆に先読み対象のコンテンツ用コンテキストを通常の表示すべきコンテンツ用コンテキストに戻す処理（以下、通常コンテキスト復旧処理）を行う。
【００６８】
異なる処理を行わせる目的は、先読みコンテンツを通常の表示すべきコンテンツと同じ処理を行った場合、本来表示されている事を前提に記述されている処理を非表示の状態で処理しなければならなくなるため、コンテンツ閲覧装置１００のユーザが視認できない状況でユーザが想定しない処理が実行される問題、および、表示されているコンテンツで発生する処理に加えて一つ以上の先読みコンテンツで発生する処理が同時に実行されるため端末の負荷が上昇する問題を回避する事にある。
【００６９】
上記目的を達成するために、コンテキスト制御部１０６では、先読み用コンテキスト構築処理では、処理対象となるコンテキストのあるプロパティの値を他の値に変更する、あるプロパティを削除する、新規にプロパティを追加する、といった変更を一つ以上コンテキストに適用する。
【００７０】
例えば、ある特定の機能を有効・無効を切り替えるためのプロパティとしてＥｎａｂｌｅＦｕｎｃＡプロパティが存在し、このプロパティがｔｒｕｅの場合には対応する機能が有効となり、ｆａｌｓｅの場合には対応する機能が無効となるとした場合、この機能を無効にしたい場合には、処理対象となるコンテキストのＥｎａｂｌｅＦｕｎｃＡプロパティにｆａｌｓｅを設定する。このような変更を行う事で、スクリプト上特に値変更を行っていないプロパティの値に対して強制的に初期値を書き換える事が可能となる。
【００７１】
また、別の具体例として、特定の機能を別の特定の機能に置き換えたい場合、対象となるコンテキストの該当関数を値として持つプロパティ、例えばＦｕｎｃＡプロパティの値を別の特定機能を実装した関数に置き換える。このような変更を行う事で、スクリプト上ＦｕｎｃＡという同名のプロパティに対して関数実行を行う記述がなされている場合、コンテキスト上のＦｕｎｃＡプロパティの値として登録されている関数自体が異なるため、スクリプト上の記述を書き換えることなく、同一の記述で異なる関数を実行させる事が可能となる。
【００７２】
このような別の特定の機能に置き換えたい特定の機能に関する具体例を以下で説明する。ここでは特定の機能としてタイマ、アニメーション、イベントを具体例としてあげて説明する。
【００７３】
（ａ）タイマの場合の説明
特定の機能としてタイマの例を説明する。すなわち、先読み対象のコンテンツの関連スクリプトにタイマの処理が記述されている場合を考える。仮に、コンテキスト制御部１０６で先読み用コンテキスト構築処理を実施しない場合、先読みコンテンツ解析処理（ステップＳＴ８０６）にて上記関連スクリプトが実行されると、記述されたタイマ処理が開始される。しかし、本来、このタイマ処理は先読み対象コンテンツが画面上に表示される時に開始される事を前提に記述されており、先読み時に開始される事は望ましくない。
【００７４】
そのため、タイマの起動関数、ＪａｖａＳｃｒｉｐｔの場合にはsetInterval()およびsetTimeout()の２関数、を別の処理を行う関数に置き換え、先読み時にタイマの起動関数が実行されても、その時点でタイマが開始されない様にする必要がある。ただし、その時点でタイマが開始されないだけではなく、対応するコンテンツが表示された場合には速やかにそのタイマが開始出来る必要がある。そのために、置き換える関数は以下の情報
・タイマの起動関数の種別を示す関数識別情報
・関数に与えられた引数の値
を関数が呼び出された時系列順に記録する処理を行う関数（以下、タイマ開始記録関数と呼ぶ）に置き換える事が考えられ、その置き換え処理を上記情報がタイマの起動関数が実行される度に記録されれば、対応するコンテンツが表示された場合、記録された情報を時系列順に読み出し、記述されている関数識別情報を元に実行すべき関数を判別でき、かつその関数に与える引数の値が残っているため、先読み時の実行を再現して実行する事が可能となる。この処理は先読みスクリプト遅延実行機能に相当し、別途説明する。
【００７５】
図１３に関数識別情報と対応する関数を管理するためのデータ構造の一例を示す。
このデータ構造は各データに対して関数識別番号１３０１と、対応する関数自身を持つ関数１３０２の要素が存在する。関数識別番号１３０１は配列のインデックスで代用する事も可能であり、その場合には関数１３０２のみの配列として表現される。図１３では関数識別番号は０から３までの４種類が登録されており、それぞれsetInterval、setTimeout、webkitRequestAnimationFrame、addEventListenerが対応する関数として登録されている。
この時、スクリプトで以下の記述がなされている。
2014157549.tif 000005
【００７６】
先読みコンテンツ解析処理（ステップＳＴ８０６）にて上記スクリプトが実行される場合、setInterval()およびsetTimeout()はsetInterval()用タイマ開始記録関数およびsetTimeout()用タイマ開始記録関数にコンテキスト制御部１０６で置き換えられているため、各タイマ開始記録関数によって記録される情報は図１４の様な情報が考えられる。タイマ開始記録関数の実行毎に、そのタイマ開始記録関数が対応する関数識別番号１４０１，関数に与えられる第１引数１４０２、関数に与えられる第２引数１４０３に関する情報が記録される。最初に実行されるのはsetInterval()で引数にfuncAおよび１０００が与えられているので、関数識別番号に０、第１引数にfuncA、第２引数に１０００の要素（１４０４）が先頭に記録され、次に実行されるsetTimeout()に関する情報、関数識別番号に１、第１引数にfuncB、第２引数に５０の要素（１４０５）が記録される。
【００７７】
（ｂ）アニメーションの場合の説明
次に、特定の機能としてアニメーションの例を説明する。すなわち、先読み対象のコンテンツの関連スクリプトにアニメーションの処理が記述されている場合を考える。仮にコンテキスト制御部１０６で、ステップＳＴ８０５の先読み用コンテキスト構築処理を実施しない場合、先読みコンテンツ解析処理（ステップＳＴ８０６）にて上記関連スクリプトが実行されると、記述されたアニメーション処理が開始される。しかし、本来アニメーションは表示されている状況において必要とされる機能である非表示対象バッファに記述する先読み対象コンテンツの場合には先読み時にアニメーションを開始する事は、不要な負荷を発生させる要因となるため、回避する必要がある。
【００７８】
しかし、全てのアニメーション処理をタイマと同様に関数識別情報と関数に与えられた引数の値を時系列順に保存するアニメーション実行記録関数に置き換えた場合、先読み時処理でアニメーションの初回描画処理が実行されない事になり、先読み処理の本来の目的である初回描画完了までの時間短縮を達成するためには、タイマとは異なり、アニメーション処理に関する初回実行のみは従来通り実行し、２回目以降の実行からタイマと同様に関数識別情報と関数に与えられた引数の値を時系列順に保存する処理を行う関数に置き換える方が望ましい。ここで、処理の分岐条件は必ず関数実行の２回目である必要はなく、例えば３回としても構わないし、任意の回数に設定しても構わない。それ以外にも関数実行の回数を処理の分岐条件とする必要もなく、例えば処理に必要となる関連リソースのダウンロードが全てもしくは一定数以上、一定割合以上完了した事を条件としても構わない。さらに例えば初回実行からの経過時間がある一定時間以上になった等の時間経過を条件としても構わない。さらに加えて、上記条件を単独で用いる必要はなく、複数の条件を組み合わせて分岐条件としても構わない。
【００７９】
（ｃ）イベントの場合の説明
次に、特定の機能としてイベントの例を説明する。先読み対象のコンテンツの関連スクリプトにイベントの処理が記述されている場合を考える。仮にコンテキスト制御部１０６でステップＳＴ８０５の先読み用コンテキスト構築処理を実施しない場合、先読みコンテンツ解析処理（ステップＳＴ８０６）にて上記関連スクリプトが実行されると、記述されたイベント処理が開始される。しかし、本来表示されていないコンテンツにおいてイベント処理が開始されると、コンテンツ閲覧装置１００のユーザの認知出来ない状況で処理が進行するため、望ましくない。そのため、イベントに対応するコールバック関数を登録するためのイベントコールバック登録関数、ＪａｖａＳｃｒｉｐｔの場合にはaddEventListener()、を、実行されると関数識別情報と関数に与えられた引数の値を時系列順に保存するイベントコールバック登録記録関数に置き換える事によって、イベントコールバックの登録処理は行われず、関数実行の記録だけが残る状況になる。その後、表示された場合に速やかに記録された情報を元にイベントコールバックを登録する処理を行う事で、表示後のイベント処理が適切に行われるようになる。
【００８０】
また、イベントをコンテンツ内で明示的に発生される事が出来る場合にはそのイベント発生関数についても同様に関数識別情報と関数に与えられた引数の値を時系列順に保存するイベント発行記録関数に置き換える事によって、イベント発生を表示後に実行させる事が出来るようになる。
特にＨＴＭＬではコンテンツの解析が終わり、表示制御部１０７でレイアウト決定処理（ステップＳＴ９０３）が完了後に発行されるloadイベントの発行関数をイベント発行記録関数に置き換える事が考えられる。loadイベントの発行関数を置き換える事によって、先読みしたコンテンツが表示される直前にイベント発行記録関数にて記録された関数実行情報を利用して、loadイベントを発行する事が可能となり、従来のloadイベントの発行タイミングである表示直前のイベント発行タイミングまで遅延させる事が可能となる。ただし、loadイベントはＨＴＭＬの仕様上、コンテンツ閲覧装置１００が自発的に発行するため、イベント発生関数を置き換えずとも、先読みコンテンツを表示する直前に強制的にloadイベントを再度発行させるとしても構わない。その場合には、先読み処理中にloadイベントに呼応するイベントコールバック登録関数の実行をイベントコールバック登録記録関数によって記録する処理に置き換え、先読み処理中にloadイベントに呼応するイベントコールバックが実行されない様にする必要がある。この時loadイベント以外に呼応するイベントコールバック登録処理は先読み処理中に実行したい場合には、イベントコールバック登録記録関数内で、引数として与えられるイベント種別情報がloadであるか否かを条件としてloadである場合にはイベントコールバック登録を行わず記録を行い、それ以外である場合には、通常のイベントコールバック登録処理を行う様に実装する事が考えられる。
【００８１】
以上までに説明した処理をコンテンツ閲覧装置１００で実現する事によって、現在表示対象のコンテンツから遷移可能なコンテンツを先読みし、先読みしたコンテンツを非表示対象のバッファ上に描画処理まで行う事を可能としたうえで、スクリプトで記述された描画処理は実行するが、表示されていない先読み状態での継続的な処理が発生する事を抑制する事が可能となる。
【００８２】
次に、図１５を用いて実施の形態１のコンテンツ閲覧装置１００における画面遷移処理を説明する。
初めに、コンテンツ閲覧装置１００における画面遷移とは、あるＨＴＭＬコンテンツから別のＨＴＭＬコンテンツに画面の出力内容を変更する事を指す。例えば、現在表示中のＨＴＭＬコンテンツに記述されているアンカータグをユーザがクリックした場合、そのアンカータグに記載されている別のＨＴＭＬコンテンツを読み込み、画面の出力内容をそのＨＴＭＬコンテンツに置き換える。この時、表示中のコンテンツおよび置き換る別のコンテンツも厳密にはＨＴＭＬコンテンツである必要はなく、画像コンテンツや音楽コンテンツ、動画コンテンツ等であっても構わない。
画面遷移には上記の通り何らかのコンテンツ読み込み処理が伴う。その事を利用し、画面遷移トリガ検出処理を行う。
【００８３】
処理のトリガとなるコンテンツ読み込みコマンドを受け付ける通信部１０３にて、コマンドの待機を行う（ステップＳＴ１５０１）。コマンド待機時に何らかのコマンドを受けると、通信部１０３はそのコマンドがコンテンツ読み込みコマンドであるか判断する（ステップＳＴ１５０２）。その結果、コンテンツ読み込みコマンドでない場合には、そのコマンドに対応するコマンド処理を実行し（ステップＳＴ１５０３）、再度コマンド待機処理を繰り返す（ステップＳＴ１５０１）。一方、ステップＳＴ１５０２において、コンテンツ読み込みコマンドである場合には、そのコンテンツ読み込みコマンドが読み込み対象としているコンテンツに対応する先読みコンテンツが存在するか確認する先読みコンテンツ検索処理を行う（ステップＳＴ１５０４）。
【００８４】
その検索にはコンテンツ読み込みコマンドに含まれるコンテンツの識別情報であるＵＲＩと、先読み用のバッファに含まれるＵＲＩ領域（１１０２）を比較し、一致するバッファが存在する場合には先読みコンテンツがあると判定し、全てのバッファと一致しない場合には先読みコンテンツがないと判定する等が考えられる。また、ＵＲＩの比較の際に、ＵＲＩにパラメータが含まれる場合にはそのパラメータは比較対象から除外するなどしても構わない。
【００８５】
ステップＳＴ１５０４における先読みコンテンツ検索の結果から、処理分岐（ステップＳＴ１５０５）を行い、ステップＳＴ１５０５において、先読みコンテンツが存在していない場合には、そのコンテンツはまだ読み込まれていない事を意味するため、コンテンツ読み込みコマンドに対応する処理を実行するため、ステップＳＴ１５０３に遷移する。逆に、ステップＳＴ１５０５において、先読みコンテンツが存在した場合、そのコンテンツは既に読み込み済みで、かつバッファに非表示状態で保持されている事を意味するため、そのバッファを利用して画面遷移を行うため、ステップＳＴ１５０６に遷移する。
【００８６】
ステップＳＴ１５０６では、一致した先読みコンテンツのコンテキストは先読み用コンテキスト構築処理（ステップＳＴ８０５）で先読み対象のコンテンツ向けのコンテキストに置き換えられているため、そのコンテキストを通常の表示すべきコンテンツ向けのコンテキストに復旧させる先読みコンテンツのコンテキスト復旧処理を行う。具体的には、先読み用コンテキスト構築処理（ステップＳＴ８０５）で行った変更を全て変更前に戻す処理を行う。
【００８７】
ステップＳＴ１５０６のコンテキスト復旧後、先読みコンテンツのスクリプトにおいて、先読み処理中にコンテキストが先読み用コンテキストに変更されているために、実行されなかった処理を実行するための先読みスクリプトの遅延実行処理を行う（ステップＳＴ１５０７）。具体的には、前述のタイマ開始記録関数、アニメーション実行記録関数、イベントコールバック登録記録関数、イベント発行記録関数等によって時系列に記録されている実行された関数の識別情報、実行時に与えられた引数の値を利用し、関数識別情報に対応する関数を実行時に与えられた引数を利用して、実行する。また、loadイベントを明示的に先読み処理中に停止させている場合には、上記処理に加えて、loadイベントを明示的に発行する処理をここで行う。
【００８８】
次に、現在表示中コンテンツのバッファを非表示化する（ステップＳＴ１５０８）と共に、一致した先読みコンテンツのバッファを表示化する（ステップＳＴ１５０９）事で画面の出力内容を切り替え画面遷移させる事前描画結果画面出力処理を行う。一致した先読みコンテンツのバッファには既に初回描画結果が反映されているため、単純にバッファの表示設定の切り替えを行うのみで、画面遷移を実現する事が可能となる。
【００８９】
次に、一致した先読みコンテンツの先読み制御処理を開始させる（ステップＳＴ１５１０）。この処理は、loadイベントに呼応するイベントコールバックで処理させている場合には、上記ステップＳＴ１５０７で明示的に発行したloadイベントに呼応してイベントコールバックが実行される事になる。
【００９０】
最後に、これまで表示していたコンテンツ用のバッファおよび、今回の画面遷移では遷移対象とならなかった先読みコンテンツのバッファを解放し（ステップＳＴ１５１１）、画面遷移を完了する。また、この時のバッファ解放処理で、新たに表示対象となったコンテンツの先読み処理でもさらに遷移可能なコンテンツが解放対象のバッファに関連付けされている場合、そのバッファは解放しないと共に、そのコンテンツの先読み処理は行わないとしても構わない。
【００９１】
このように、実施の形態１のコンテンツ閲覧装置１００を用いる事によって、あるコンテンツから次に遷移する可能性のあるコンテンツを先読み出来ると共に、その先読みコンテンツを非表示状態の段階でバッファ上に初回描画処理を実行できる様にすると共に、スクリプトを利用した描画処理を非表示状態の段階でも実行でき、かつ断続的に発生する処理を表示状態に切り換えるタイミングまで実行を遅延させる事が出来、その結果として、画面遷移時に従来では発生していた高負荷な画面描画処理を、事前に実行しているため、画面遷移時間を短縮させる事が可能となる。
【００９２】
以上説明したように、実施の形態１のコンテンツ閲覧装置によれば、コンテンツの先読みを行うコンテンツ閲覧装置であって、先読みしたコンテンツの解析処理を行う先読み解析手段と、先読みしたコンテンツのスクリプトを実行するための先読みコンテキストを構築する先読みコンテキスト構築手段と、先読み解析手段によって解析された先読みしたコンテンツに関連する少なくともスクリプトとレイアウト処理とを先読みコンテキストに基づいて実行する事前実行手段と、先読みしたコンテンツを非表示状態として、描画処理を実行する事前描画手段と、現在画面から次画面に切り替わる前段で、次画面が先読みしたコンテンツのうち少なくとも一つであるかを判定する先読みコンテンツ検索手段と、先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、先読みコンテキストの少なくとも一部を修正して通常コンテキストに再構築するコンテキスト復旧手段と、先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、事前実行手段で実行されたスクリプトの実行結果に基づいてスクリプトの実行を行う先読みスクリプト遅延実行手段と、先読みコンテンツ検索手段で次画面が先読みしたコンテンツであると判定された場合、現在画面を非表示状態とすると共に、事前描画手段で描画されたコンテンツの事前描画結果を表示状態とする事前描画結果画面出力手段とを備えたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
【００９３】
また、実施の形態１のコンテンツ閲覧装置によれば、先読みコンテキスト構築手段は、ある１以上の特定機能に関連する１以上の関数を別機能関数に置き換えるようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
【００９４】
また、実施の形態１のコンテンツ閲覧装置によれば、コンテキスト復旧手段は、先読みコンテキスト構築手段で別機能の関数に置き換えられた関数を、置き換えられる前の機能の関数に置き換えるようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
【００９５】
また、実施の形態１のコンテンツ閲覧装置によれば、先読みコンテキスト構築手段で置き換えられる対象となる特定機能が、タイマ起動機能、イベントハンドラ登録機能、イベント発行機能、アニメーション開始機能のうち、少なくとも一つであるようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
【００９６】
また、実施の形態１のコンテンツ閲覧装置によれば、先読みコンテキスト構築手段である関数として置き換えられる別機能関数が、その関数の呼出しを表す機能呼出し情報を時系列順に保存可能な機能呼出し保存領域に保存する処理を行う特定関数呼出し情報保存機能を持つ関数であるようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
【００９７】
また、実施の形態１のコンテンツ閲覧装置によれば、機能呼出し情報が、関数識別情報および呼出し時に与えられる引数の内容のうち少なくとも一方を保持しているようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
【００９８】
また、実施の形態１のコンテンツ閲覧装置によれば、先読みコンテキスト構築手段である関数として置き換えられる別機能関数が、ある条件を満たした時に、その関数の呼び出しを表す機能呼出し情報を機能呼出し保存領域に保存する処理を行い、ある条件を満たさない場合には、その関数に置き換えられる前の関数を実行する処理を行う条件付き特定関数呼出し情報保存機能を持つ関数であるようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
【００９９】
また、実施の形態１のコンテンツ閲覧装置によれば、条件付き特定関数呼出し情報保存機能の条件が、関数の少なくとも１以上のパラメータがある範囲の値であることを条件に含むようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
【０１００】
また、実施の形態１のコンテンツ閲覧装置によれば、条件付き特定関数呼出し情報保存機能の条件が、関数の実行回数がある範囲であることを条件に含むようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
【０１０１】
また、実施の形態１のコンテンツ閲覧装置によれば、コンテンツが自身を表現するコンテンツと関連する別ファイルで構成された１以上の関連リソースで構成され、かつ、条件付き特定関数呼出し情報保存機能の条件が、関連リソースのダウンロードが全てもしくはその一部が完了した事を条件に含むようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
【０１０２】
また、実施の形態１のコンテンツ閲覧装置によれば、条件付き特定関数呼出し情報保存機能の条件が、ある特定の基準処理を実行後、経過時間が一定以上であることを条件に含むようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
【０１０３】
また、実施の形態１のコンテンツ閲覧装置によれば、ある特定の基準処理が、特定関数呼出し情報保存機能の実行１回目であるようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
【０１０４】
また、実施の形態１のコンテンツ閲覧装置によれば、先読みスクリプト遅延実行手段は、機能呼出し保存領域に保存された前記機能呼出し情報に従い、特定関数の実行を行うようにしたので、画面遷移前にユーザが意図しない処理が開始されるといったことがなく、また、画面切り替え時に不完全な画面が表示されるといったことを防止することができる。
【０１０５】
実施の形態２．
実施の形態２は、先読みするコンテンツを外部装置から指定するようにしたものである。
図１６は、実施の形態２のコンテンツ閲覧装置の構成図である。図示のコンテンツ閲覧装置１００ａは、実施の形態１のコンテンツ閲覧装置１００に対して、装置間通信部１０９を更に備えたものである。コンテンツ閲覧装置１００ａにおけるイベント制御部１０１〜表示部１０８の構成は実施の形態１と同様であるため、ここでの説明は省略する。また、外部情報処理装置３００は、コンテンツ閲覧装置１００ａとは独立して動作する情報処理装置であり、例えば、ナビゲーションシステムやテレビ受像機といった装置である。この外部情報処理装置３００は、装置間通信部３０１、情報処理部３０２、先読み管理部３０３を備えている。
【０１０６】
コンテンツ閲覧装置１００ａにおける装置間通信部１０９は、外部情報処理装置３００と通信を行うための通信インタフェースであり、外部情報処理装置３００の装置間通信部３０１は、コンテンツ閲覧装置１００ａと通信を行うための通信インタフェースである。また、外部情報処理装置３００の情報処理部３０２は、その外部情報処理装置としての情報処理を行う処理部であり、先読み管理部３０３は、外部情報処理装置３００からコンテンツ閲覧装置１００ａに対して、先読み対象となるＵＲＬの管理を行うための管理部である。
【０１０７】
なお、コンテンツ閲覧装置１００ａ一つに対して、外部情報処理装置３００が一つである必要はなく、複数存在していても構わない。複数存在する場合、外部情報処理装置３００間の相互作用は本発明では不要であり、説明を単純化するためここでは外部情報処理装置３００を一つとして説明する。
【０１０８】
また、装置間通信部１０９と装置間通信部３０１は具体的に物理的に接続された通信経路を用いて通信を行うとしても構わないが、コンテンツ閲覧装置１００ａおよび外部情報処理装置３００があるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）上で動作するプロセスとして実装されている場合には、装置間通信部１０９，３０１はそのＣＰＵ上で動作するプロセス間で確立されるプロセス間通信を行うものとしても構わない。
【０１０９】
また、装置間通信部１０９は通信部１０３とは異なる処理部として構成しているが、コンテンツ閲覧装置１００ａと外部情報処理装置３００の間の通信手段と、コンテンツ閲覧装置１００ａとネットワーク２００を介したコンテンツサーバとの間の通信手段が異なる事を想定した構成としているためである。しかし、異なる通信手段である事は本発明にとって本質的な特徴ではなく、同じ通信手段であるとしても本発明は成立する。その場合には、装置間通信部１０９と通信部１０３は同一の構成であるとしてもよい。
【０１１０】
図１７は、実施の形態２のコンテンツ閲覧装置１００ａにおける先読み制御部１０５の動作を示している。
先ず、先読み制御開始要求を受信した先読み制御部１０５は先読み制御処理を開始する（ステップＳＴ８０１）。これは図８で示した実施の形態１の動作と同様である。次に、先読み制御処理を開始した先読み制御部１０５は、装置間通信部３０１を用いて、外部情報処理装置３００に対し、先読み対象コンテンツに関する情報となる外部先読み情報の取得要求処理を行い（ステップＳＴ１７０１）、その応答が受信されるまで待機する。
【０１１１】
ここで、ステップＳＴ１７０１にて取得要求処理を行う要求先は本処理を実施するまでの間にコンテンツ閲覧装置１００ａに保存されている事を前提としている。具体的には、コンテンツ閲覧装置１００ａが固定で要求先に関する情報を保持する方法、システム全体の起動時等、ある一定のタイミングにおいてコンテンツ閲覧装置１００ａが装置間通信部１０９を用いて通信可能な全装置、もしくはその一部の装置に対して、要求先情報を要求し収集し保持する方法、コンテンツ閲覧装置１００ａと装置間通信部３０１を用いて通信可能な外部情報処理装置３００が起動時等、ある一定のタイミングにおいて自身の通信識別情報をコンテンツ閲覧装置１００ａに対して送信し保持する方法、などが考えられる。
【０１１２】
ステップＳＴ１７０１の処理にてコンテンツ閲覧装置１００ａから外部情報処理装置３００に対して送信する要求には、現在コンテンツ閲覧装置１００ａが表示処理中のコンテンツの識別情報となるＵＲＬを含む処理中コンテンツ情報をパラメータとして記載しておく。また、ステップＳＴ１７０１の処理にて要求する外部先読み情報は、外部情報処理装置３００がコンテンツ閲覧装置１００ａにて先読みすべきコンテンツに関する情報となるＵＲＬが０以上記載されている情報を指す。
【０１１３】
装置間通信部１０９が外部情報処理装置３００からの応答を受信すると、その応答が先読み制御部１０５に通知され、外部先読み情報受信処理（ステップＳＴ１７０２）が開始される。先読み制御部１０５は、ステップＳＴ１７０２で受信した外部先読み情報を解析し、そこに記載されている先読みすべきコンテンツＵＲＬを抽出する。その後、抽出したＵＲＬをコンテンツ閲覧装置１００ａで抽出した先読み抽出結果に統合する（ステップＳＴ１７０３）。以降の動作は実施の形態１におけるステップＳＴ８０２以降の動作と同様であるため、ここでの説明は省略する。
【０１１４】
このような処理を実施する事により、コンテンツ閲覧装置１００ａの外部から先読みすべきコンテンツの指示を受信し、そのコンテンツに対して先読み処理を実施する事が可能となる。
【０１１５】
次に、外部情報処理装置３００における処理を説明する。
図１８は、外部情報処理装置３００の動作を示すフローチャートである。
外部情報処理装置３００は、コンテンツ閲覧装置１００ａから外部先読み情報の取得要求を装置間通信部３０１で受信する（ステップＳＴ１８０１）と、先読み情報生成処理（ステップＳＴ１８０２）を情報処理部３０２で開始する。ステップＳＴ１８０２では、取得要求に含まれる処理中コンテンツ情報を抽出し、コンテンツ閲覧装置１００ａで現在表示中のコンテンツのＵＲＬを取得する。そのＵＲＬをキーとして先読み管理部３０３から先読みすべきコンテンツのＵＲＬ情報を引き出し、そこに含まれるＵＲＬをパラメータとして外部先読み情報に記載し、先読み情報を生成し、ステップＳＴ１８０２の処理を完了する。
【０１１６】
先読み管理部３０３では、コンテンツ閲覧装置１００ａで先読みすべきコンテンツ情報を管理している。情報処理部３０２からＵＲＬの引き出し処理によって、管理されているコンテンツ情報を提供する。その際に、キーとして与えられたＵＲＬもしくはその一部、例えばドメイン名等に関連付けされたコンテンツ情報のみを提供するとしても構わない。また、外部情報処理装置３００の内部に保持する情報、例えば内部状態等に関連付けされたコンテンツ情報のみを提供するとしても構わない。その様な動作とする事によって、コンテンツ閲覧装置１００ａで表示中のコンテンツや外部情報処理装置３００の内部情報に関連する先読みすべきコンテンツ情報のみを情報処理部３０２に提供する事が可能となり、その結果としてコンテンツ閲覧装置１００ａにて不要な先読み処理を抑制する効果が得られる。
その後、ステップＳＴ１８０３で、作成した先読み情報を装置間通信部３０１経由でコンテンツ閲覧装置１００ａに返信する。
【０１１７】
このような外部情報処理装置３００の処理によって、外部情報処理装置３００はコンテンツ閲覧装置１００ａからの要求に従い、コンテンツ閲覧装置１００ａで先読みすべきコンテンツを指示する事が可能となり、かつコンテンツ閲覧装置１００ａは外部情報処理装置３００からの指示で先読みすべきコンテンツを追加可能となる。
【０１１８】
以上説明したように、実施の形態２のコンテンツ閲覧装置によれば、先読みするコンテンツは、コンテンツ閲覧装置とは独立して動作する外部情報処理装置より指定されたコンテンツであるようにしたので、実施の形態１の効果に加えて、先読みするコンテンツとして様々なものを対象とすることができる効果がある。
【０１１９】
実施の形態３．
実施の形態３は、コンテンツ閲覧装置における負荷が高い場合は、コンテンツの先読みに関する処理を行わないようにしたものである。
図１９は、実施の形態３のコンテンツ閲覧装置１００ｂの構成図を示す。実施の形態３のコンテンツ閲覧装置１００ｂは、図４に示した実施の形態１の構成に加えて装置負荷計測部１１０を備えている。この装置負荷計測部１１０は、コンテンツ閲覧装置１００ｂにおける現在の負荷状況を計測する負荷計測手段である。また、先読み制御部１０５ａは、実施の形態１の先読み制御部１０５の機能に加えて、装置負荷計測部１１０による計測の結果、負荷が高い場合は、コンテンツの先読みを一定時間停止させる、またはキャンセルする、といった制御や、先読みしたコンテンツのコンテキスト構築処理といった先読みコンテンツに関する処理を一定時間停止させる、またはキャンセルする、といった制御を行う先読み制御手段である。
【０１２０】
装置負荷計測部１１０が計測する負荷の具体例として、コンテンツ閲覧装置１００ｂの動作に関わる演算を実施するＣＰＵの、単位時間当たりに占有する割合を示すＣＰＵ使用率、コンテンツ閲覧装置１００ｂの動作に伴い使用しているメモリ使用量、コンテンツ閲覧装置１００ｂの動作に伴い通信部１０３で発生している単位時間当たりの通信データ量などが考えられる。また、コンテンツ閲覧装置１００ｂに関するＣＰＵ使用率、メモリ使用量、通信データ量に限らず、ＣＰＵやメモリ、通信部１０３に係る全体のＣＰＵ使用率、全体のメモリ使用量、全体のデータ通信量を付加としても構わない。
【０１２１】
コンテンツ閲覧装置１００ｂは自律して定期的に負荷を計測し、その結果をイベントとしてイベント制御部１０１に通知し、その結果を必要とする各構成要素に展開する方法も考えられるが、本実施の形態では、説明を簡略化するため、負荷を必要とする構成要素が個別に装置負荷計測部１１０に取得対象となる負荷を示す識別情報をパラメータとして問い合わせる方法を説明する。
【０１２２】
なお、図１９におけるその他の構成は図４に示した実施の形態１の構成と同様であるため、対応する部分に同一符号を付してその説明を省略する。
【０１２３】
次に、実施の形態３の動作について説明する。
図２０は、コンテンツ閲覧装置１００ｂにおける先読み制御部１０５ａの動作を示している。
先読み制御開始要求を受信した先読み制御部１０５ａは、先読み制御処理を開始し（ステップＳＴ８０１）、現時点までに処理を行っていない先読み抽出結果の要素が存在するかを判定し（ステップＳＴ８０２）、存在しない場合には先読み制御処理を終了する（ステップＳＴ８０３）。これらの処理は実施の形態１と同様である。一方、ステップＳＴ８０２において、処理を行っていない先読み抽出結果の要素が存在する場合には、コンテンツ閲覧装置１００ｂが未処理の先読み抽出結果の要素を処理出来る状況にあるかどうかを判別するため、装置負荷計測部１１０から装置の負荷情報を取得する（ステップＳＴ２００１）。
【０１２４】
次に、先読み制御部１０５ａは、取得した負荷情報がコンテンツ閲覧装置１００ｂで定めた閾値以下であるかを判定する（ステップＳＴ２００２）。例えば、負荷情報がＣＰＵ使用率である場合、その閾値は例えば５０％等として設定出来る。その状況において、ＣＰＵ使用率が閾値５０％以下の場合にはその条件が成立する、つまりコンテンツ閲覧装置１００ｂは先読み処理を実施する余裕があると判定し、先読み処理を継続するため、ステップＳＴ８０４以降の処理を実施する。逆に、閾値５０％より大きい場合、その条件が成立しない、つまりコンテンツ閲覧装置１００ｂは先読み処理を実施する余裕がないと判定し、ステップＳＴ２００３に移行する。なお、ステップＳＴ８０４以降の処理は実施の形態１と同様である。
【０１２５】
ステップＳＴ２００３では、コンテンツ閲覧装置１００ｂで定めた条件により現在処理中の先読み処理をキャンセルすべきか判定する。判定の結果、キャンセルすべきでないと判定された場合には一定時間先読み処理を休眠し（ステップＳＴ２００４）、ステップＳＴ２００１の処理を再度実施する。逆に、キャンセルすべきであると判定された場合、現在処理中の先読み抽出結果の要素を処理済みに変更し（ステップＳＴ２００５）、ステップＳＴ８０２を再度実施し、次の先読み抽出結果の要素への処理を継続する。ステップＳＴ２００３における判定条件の具体例として、現在処理中の先読み抽出結果の要素に対するステップＳＴ２００３の処理の実施回数がある閾値を超えた場合にはキャンセルすべきと判定する、現在処理中の先読み抽出結果の要素に対するステップＳＴ２００３の処理の初回実行からの経過時間がある閾値を超えた場合にはキャンセルすべきと判定する、等が考えられる。
【０１２６】
上記説明では負荷情報としてＣＰＵ使用率のみを使用した場合で説明したが、扱う負荷情報は単一である必要はなく、複数の負荷情報を用いた処理としても構わない。
【０１２７】
以上説明した先読み制御部１０５ａの処理によって、ある負荷情報に基づいて、先読み処理を実施する余裕があるかどうかを判定可能となり、余裕がないと判定された場合には先読みコンテンツの取得、コンテキスト構築、コンテンツ解析、先読み表示制御開始を余裕が出来るまで延期させる事が可能となる。この効果によって、コンテンツ閲覧装置１００ｂにて表示中のコンテンツに関わる負荷が高い処理が発生している状況で先読み処理を並行して実施する事を回避する事が可能となり、表示中コンテンツの安定動作を先読み処理が阻害する事を回避可能となる。
【０１２８】
図２１は、先読み制御部１０５ａにおける他の具体例を示している。
ここでステップＳＴ８０１〜ステップＳＴ８０４までの処理は実施の形態１と同様である。即ち、先読み抽出結果の要素が存在した場合はそのコンテンツを取得する。次に、通信部１０３から要求したコンテンツの取得完了通知を先読み制御部１０５ａが受信すると、コンテンツ閲覧装置１００ｂが未処理の先読み抽出結果の要素を処理出来る状況にあるかどうかを判別するため、装置負荷計測部１１０から装置の負荷情報を取得する（ステップＳＴ２１０１）。
【０１２９】
次いで、先読み制御部１０５ａは、取得した負荷情報がコンテンツ閲覧装置１００ｂで定めた閾値以下であるかを判定する（ステップＳＴ２１０２）。例えば、負荷情報がＣＰＵ使用率である場合、その閾値は例えば５０％等として設定出来る。その状況において、ＣＰＵ使用率が閾値５０％以下の場合にはその条件が成立する、つまりコンテンツ閲覧装置１００ｂは先読み処理を実施する余裕があると判定し、先読み処理を継続するため、ステップＳＴ８０５以降の処理を実施する。逆に、閾値５０％より大きい場合、その条件が成立しない、つまりコンテンツ閲覧装置１００ｂは先読み処理を実施する余裕がないと判定し、ステップＳＴ２１０３の処理を実施する。
【０１３０】
ステップＳＴ２１０３では、コンテンツ閲覧装置１００ｂで定めた条件により現在処理中の先読み処理をキャンセルすべきか判定する。判定の結果、キャンセルすべきでないと判定された場合には一定時間先読み処理を休眠し（ステップＳＴ２１０４）、ステップＳＴ２１０１の処理を再度実施する。逆に、キャンセルすべきであると判定された場合、現在処理中の先読み抽出結果の要素を処理済みに変更し（ステップＳＴ２１０５）、ステップＳＴ８０２の処理を再度実施し、次の先読み抽出結果の要素への処理を継続する。ステップＳＴ２１０３における判定条件の具体例として、現在処理中の先読み抽出結果の要素に対するステップＳＴ２１０３の処理の実施回数がある閾値を超えた場合にはキャンセルすべきと判定する、現在処理中の先読み抽出結果の要素に対するステップＳＴ２１０３の処理の初回実行からの経過時間がある閾値を超えた場合にはキャンセルすべきと判定する、等が考えられる。
【０１３１】
上記説明では負荷情報としてＣＰＵ使用率のみを使用した場合で説明したが、扱う負荷情報は単一である必要はなく、複数の負荷情報を用いた処理としても構わない。
以上説明した先読み制御部１０５ａの処理によって、ある負荷情報に基づいて、先読み処理を実施する余裕があるかどうかを判定可能となり、余裕がないと判定された場合にはコンテキスト構築、コンテンツ解析、先読み表示制御開始を余裕が出来るまで延期させる事が可能となる。この効果によって、コンテンツ閲覧装置１００ｂにて表示中のコンテンツに関わる負荷が高い処理が発生している状況で先読み処理を並行して実施する事を回避する事が可能となり、表示中コンテンツの安定動作を先読み処理が阻害する事を回避可能となる。
【０１３２】
図２０と図２１に示した先読み制御部１０５ａの処理における違いは負荷情報に基づいて開始を延期する処理の内容の違いであり、通信部１０３における負荷情報が高い場合に先読みコンテンツ取得処理を延期できるのが図２０に示した処理であり、一方で先読みコンテンツ取得に関する通信部１０３での衝突は回避できないのが図２１に示した処理である。例えばＣＰＵ使用率を基準とした先読み処理延期を図２０に示した処理で行う場合、ＣＰＵ使用率が高いが、通信部１０３での通信データ量が少ない場合であっても、先読みコンテンツ取得処理（ステップＳＴ８０４）を延期する事になり、通信部１０３が効率的に処理出来ない場合が発生する。その課題を解決するため、通信部１０３に関する負荷情報を基準に先読みコンテンツ取得を延期するための処理方法が図２０に示されており、それ以外のコンテンツ閲覧装置の負荷情報を基準に先読みコンテンツ取得後の処理を延期するための処理方法が図２１に示されている。
【０１３３】
以上説明したように、実施の形態３のコンテンツ閲覧装置によれば、コンテンツ閲覧装置における現在の負荷状況を計測する負荷計測手段と、負荷計測手段における計測の結果、負荷が高い場合はコンテンツの先読みを停止する先読み制御手段とを備えたので、実施の形態１の効果に加えて効率的にコンテンツの先読みを行うことができる。
【０１３４】
また、実施の形態３のコンテンツ閲覧装置によれば、コンテンツ閲覧装置における現在の負荷状況を計測する負荷計測手段と、負荷計測手段における計測の結果、負荷が高い場合は先読みしたコンテンツに関する処理を停止させる先読み制御手段とを備えたので、実施の形態１の効果に加えて効率的にコンテンツの先読みを行うことができる。
【０１３５】
なお、本願発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
【符号の説明】
【０１３６】
１００，１００ａ，１００ｂ  コンテンツ閲覧装置、１０１  イベント制御部、１０２  解析実行部、１０３  通信部、１０４  スクリプト実行部、１０５，１０５ａ  先読み制御部、１０６  コンテキスト制御部、１０７  表示制御部、１０８  表示部、１０９  装置間通信部、１１０  装置負荷計測部、２００  ネットワーク、３００  外部情報処理装置、３０１  装置間通信部、３０２  情報処理部、３０３  先読み管理部。
【図１】
2014157549.tif 000006
【図２】
2014157549.tif 000007
【図３】
2014157549.tif 000008
【図４】
2014157549.tif 000009
【図５】
2014157549.tif 000010
【図６】
2014157549.tif 000011
【図７】
2014157549.tif 000012
【図８】
2014157549.tif 000013
【図９】
2014157549.tif 000014
【図１０】
2014157549.tif 000015
【図１１】
2014157549.tif 000016
【図１２】
2014157549.tif 000017
【図１３】
2014157549.tif 000018
【図１４】
2014157549.tif 000019
【図１５】
2014157549.tif 000020
【図１６】
2014157549.tif 000021
【図１７】
2014157549.tif 000022
【図１８】
2014157549.tif 000023
【図１９】
2014157549.tif 000024
【図２０】
2014157549.tif 000025
【図２１】
2014157549.tif 000026