(57)【特許請求の範囲】
【請求項１】
クライアント側にキャッシュされたコンテンツのソースを取得するソース取得部と、
前記取得されたソースに基づいて前記コンテンツを出力するコンテンツ出力部と、
中間形式に変換されていないソースを前記中間形式に変換するソース変換部と、
を備え、
前記ソース変換部は、前記中間形式に変換されていないソースのうち、コンテンツの出力に利用される可能性が高いと推定されるソースを選択的に前記中間形式に変換する、
情報処理装置。
【請求項２】
前記ソース変換部は、前記中間形式に変換されていないソースが前記コンテンツの出力に利用された回数に基づいて、前記中間形式に変換されていないソースを前記中間形式に変換する、請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、外部装置と通信する通信部をさらに備え、
前記ソース変換部は、前記中間形式に変換されていないソースを前記中間形式に変換する処理を、前記通信部を介して前記外部装置に依頼する、請求項２に記載の情報処理装置。
【請求項４】
前記ソース取得部は、前記ソースが前記クライアント側にキャッシュされているか否かを、前記ソースの内容ごとに一意な識別子に基づいて判定する、請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記ソースは、ドキュメントを含み、
前記中間形式に変換されたソースは、前記ドキュメントをパースすることによって得られるデータ構造を含む、請求項１〜４のいずれか１項に記載の情報処理装置。
【請求項６】
前記ソースは、スクリプトを含み、
前記中間形式に変換されたソースは、前記スクリプトをコンパイルすることによって得られるマシンコードを含む、請求項１〜５のいずれか１項に記載の情報処理装置。
【請求項７】
前記ソースは、カスケード構造を有する設定情報を含み、
前記中間形式に変換されたソースは、前記カスケード構造を解決した状態の設定情報を含む、請求項１〜６のいずれか１項に記載の情報処理装置。
【請求項８】
前記コンテンツは、エンコードされた画像データまたは音声データを含み、
前記中間形式に変換されたソースは、デコードされた前記画像データまたは前記音声データを含む、請求項１〜３のいずれか７項に記載の情報処理装置。
【請求項９】
クライアント側にキャッシュされたコンテンツのソースを取得する機能と、
前記取得されたソースに基づいて前記コンテンツを出力する機能と、
中間形式に変換されていないソースを前記中間形式に変換する機能と、
をコンピュータに実現させるためのプログラムが記録された記録媒体であって、
前記変換する機能は、前記中間形式に変換されていないソースのうち、コンテンツの出力に利用される可能性が高いと推定されるソースを選択的に前記中間形式に変換する、
記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理装置および記録媒体に関する。
【背景技術】
【０００２】
クライアントからのリクエストに応じてサーバがコンテンツを提供するシステムは、例えばＨＴＭＬ（Hyper  Text  Markup  Language）ドキュメントを提供するＷＷＷ（World  Wide  Web）のように、今日広く普及している。こうしたシステムにおいて、コンテンツをクライアントに提供するための所要時間、より具体的にはクライアントがリクエストを送信してからコンテンツがクライアントで出力されるまでの時間を短縮することは、長年取り組まれてきた課題である。例えば、特許文献１には、メモリリソースやウェブサービスへのアクセスが制限されている場合でもキャッシュを効率よく利用するために、ウェブサーバにおいてコンテンツをキャッシュする技術が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１０８１０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、例えばＨＴＭＬにおける画像／動画やスクリプトなどのように、様々なリソースを参照するリッチなドキュメントが増加する傾向にあり、上記のような高速化技術のさらなる進歩が求められている。また、サーバやクライアントの処理能力を向上させることも高速化に寄与するが、例えばクライアントがモバイル装置やウェアラブル装置であるような場合には、処理能力の向上は必ずしも容易ではない。【０００５】
そこで、本開示では、コンテンツのソースを適切な形式でキャッシュすることによって、コンテンツの出力のための処理を最適化することを可能にする、新規かつ改良された情報処理装置および記録媒体を提案する。
【課題を解決するための手段】
【０００６】
本開示によれば、コンテンツのソースを取得するソース取得部と、上記取得されたソースに基づいて上記コンテンツを出力するコンテンツ出力部とを備え、上記ソースは、クライアント側にキャッシュされたソースを含み、上記キャッシュされたソースは、中間形式に変換されたソースを含む情報処理装置が提供される。【０００７】
また、本開示によれば、コンテンツのソースを取得する機能と、上記取得されたソースに基づいて上記コンテンツを出力する機能とをコンピュータに実現させるためのプログラムが記録された記録媒体であって、上記ソースは、クライアント側にキャッシュされたソースを含み、上記キャッシュされたソースは、中間形式に変換されたソースを含む記録媒体が提供される。
【発明の効果】
【０００８】
以上説明したように本開示によれば、コンテンツのソースを適切な形式でキャッシュすることによって、コンテンツの出力のための処理を最適化することができる。【０００９】
なお、上記の効果は必ずしも限定的なものではなく、上記の効果とともに、または上記の効果に代えて、本明細書に示されたいずれかの効果、または本明細書から把握され得る他の効果が奏されてもよい。
【図面の簡単な説明】
【００１０】
【図１】本開示の一実施形態に係るシステムの例を示す図である。
【図２】本開示の一実施形態に係る端末装置の機能構成例を示すブロック図である。
【図３】本開示の一実施形態に係る端末装置におけるコンテンツ出力時の処理の例を示すフローチャートである。
【図４】本開示の一実施形態に係る端末装置におけるソースの形式変換の処理の例を示すフローチャートである。
【図５】本開示の一実施形態においてキャッシュとして格納される情報の例を示す図である。
【図６】本開示の一実施形態における装置間のデータのやりとりの例を示すシーケンス図である。
【図７】本開示の実施形態に係る情報処理装置のハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書および図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１２】
なお、説明は以下の順序で行うものとする。
１．システム構成
２．端末装置の機能構成
３．処理フロー
４．格納される情報の例
５．データのやりとりの例
６．変形例
７．ハードウェア構成
８．補足
【００１３】
（１．システム構成）
図１は、本開示の一実施形態に係るシステムの例を示す図である。図１を参照すると、システム１０は、端末装置１００とサーバ３００とを含む。
【００１４】
端末装置１００は、ユーザにコンテンツを出力する各種の装置でありうる。端末装置１００は、例えば、スマートフォン１００ａやタブレットのようなモバイル装置であってもよいし、アイウェア１００ｂやスマートウォッチ１００ｃのようなウェアラブル装置であってもよい。あるいは、端末装置１００は、パーソナルコンピュータやテレビ１００ｄのような他のＣＥ（Consumer  Electronics）機器であってもよい。
【００１５】
サーバ３００は、端末装置１００を介してユーザにさまざまなサービスを提供する。サーバ３００は、例えば、ウェブサーバやファイルサーバ、データベースサーバ、アプリケーションサーバなど、さまざまなサーバ機能を提供する１または複数のサーバ装置を含む。なお、端末装置１００、およびサーバ３００を構成するサーバ装置は、例えば後述する情報処理装置のハードウェア構成によって実現されうる。
【００１６】
端末装置１００とサーバ３００とは、ネットワーク２００によって接続される。また、システム１０に複数の端末装置１００が含まれる場合、これらの端末装置１００はネットワーク２００によって相互に接続されている。ネットワーク２００は、インターネットや家庭内ＬＡＮなどの有線または無線のネットワークでありうる。
【００１７】
（２．端末装置の機能構成）
図２は、本開示の一実施形態に係る端末装置の機能構成例を示すブロック図である。図２を参照すると、端末装置１００は、入力装置１１０と、リクエスト取得部１２０と、ソース取得部１３０と、キャッシュ１４０と、通信装置１５０と、コンテンツ出力部１６０と、出力装置１７０と、ソース変換部１８０とを含む。なお、リクエスト取得部１２０、ソース取得部１３０、コンテンツ出力部１６０、およびソース変換部１８０の機能は、端末装置１００が備えるＣＰＵなどのプロセッサがプログラムに従って動作することによって実現されうる。
【００１８】
入力装置１１０は、端末装置１００に対するユーザの操作入力を取得する装置である。入力装置１１０は、例えばタッチパネルやハードウェアボタン、キーボード、マウスなどといった入力のための装置によって実現されてもよい。また、入力装置１１０は、マイクロフォンやカメラなど、ユーザが音声やジェスチャなどとして与えた入力をキャプチャするための装置によって実現されてもよい。あるいは、入力装置１１０は、リモートコントローラとして機能する外部装置から操作信号を受信する装置（有線接続のためのポートを含む）によって実現されてもよい。入力装置１１０が取得する入力は、例えば、ＧＵＩ（Graphical  User  Interface）、ＮＵＩ（Natural  User  Interface）、またはＣＬＩ（Command  Line  Interface）を介して与えられる。
【００１９】
リクエスト取得部１２０は、入力装置１１０からコンテンツ出力のリクエストを取得する。リクエスト取得部１２０は、入力装置１１０が取得するさまざまな操作入力の中からリクエストを抽出する。ユーザは、例えば、入力装置１１０を介して表示されたアイコンを選択したり、ＵＲＬ（Uniform  Resource  Locater）を入力したりすることによって、特定のコンテンツの出力をリクエストする。ここで、コンテンツは、例えばＨＴＭＬドキュメントのようなドキュメントであってもよい。この場合、コンテンツには、ドキュメントを出力（表示）するにあたって使用されるスクリプト、スタイルシートなどの設定情報、および／またはドキュメントに組み込まれた画像や音声のコンテンツが含まれうる。あるいは、コンテンツは、画像や音声を独立して提供してもよい。
【００２０】
ソース取得部１３０は、リクエスト取得部１２０が取得したリクエストに応じて、コンテンツのソースを取得する。ソースは、コンテンツを出力するために用いられるデータであり、より具体的には、例えば、ドキュメント、スクリプト、および／または設定情報などを記述したテキストファイルや、画像や音声などを記録したバイナリファイルなどを含みうる。例えば、コンテンツが初めて出力される場合、ソース取得部１３０は、通信装置１５０およびネットワーク２００を介してサーバ３００にリクエストを送信し、リクエストに応じてサーバ３００が送信したソースを取得する。また、ソース取得部１３０は、キャッシュ１４０からソースを取得する場合もある。キャッシュ１４０から取得されるソース（キャッシュされたソース）は、既にサーバ３００から取得され、コンテンツの出力に利用されたソースでありうる。
【００２１】
さらに、ソース取得部１３０は、取得したソースを、必要に応じて中間形式（intermediate  format）に変換した上で、コンテンツ出力部１６０に提供する。より具体的には、ソース取得部１３０は、取得されたソースに基づいて中間形式のデータをメモリ上に展開し、コンテンツ出力部１６０が展開されたデータに基づいて出力装置１７０を制御することによってコンテンツを出力する。後述するように、本実施形態では、キャッシュ１４０から取得されるソースの少なくとも一部が既に中間形式に変換されている。そのようなソースについては、ソース取得部１３０は中間形式への変換をせず、そのままコンテンツ出力部１６０に提供することができる。
【００２２】
あるいは、キャッシュ１４０から取得されるソースが既に変換されている中間形式と、コンテンツ出力部１６０に提供されるソースの中間形式とは、異なっていてもよい。つまり、キャッシュ１４０から取得されるソースが既に中間形式に変換されている場合でも、ソース取得部１３０は、当該ソースの形式をさらに別の中間形式に変換した上で、コンテンツ出力部１６０に提供してもよい。この場合も、キャッシュ１４０から取得されるソースの中間形式が、ソースがコンテンツ出力部１６０に提供されるときの中間形式への変換を部分的に実施したような形式であれば、コンテンツ出力時のソース取得部１３０の処理を簡略化することができる。
【００２３】
コンテンツ出力部１６０は、ソース取得部１３０から提供されたソースに基づいてコンテンツを出力する。上記の通り、より具体的には、コンテンツ出力部１６０は、ソース取得部１３０がメモリ上に展開した中間形式のデータに基づいて出力装置１７０を制御することによってコンテンツを出力する。
【００２４】
出力装置１７０は、端末装置１００からユーザに向けて各種の情報を出力する装置である。出力装置１７０は、例えばディスプレイや導光部材、スピーカ、ヘッドフォンなどといった出力のための装置によって実現されてもよい。また、出力装置１７０は、上記のような出力のための装置を備える外部装置にデータを送信する装置（有線接続のためのポートを含む）によって実現されてもよい。出力装置１７０による出力は、例えば、画像、音声、発光パターン、またはバイブレーションなどを含みうる。コンテンツは、例えば画像や音声として出力されるが、例えばこれらにバイブレーションなどが組み合わされてもよい。
【００２５】
キャッシュ１４０は、例えば端末装置１００が備えるメモリまたはストレージによって実現され、コンテンツのソースを格納する。上記の通り、キャッシュ１４０に格納されるソースは、既に通信装置１５０およびネットワーク２００を介してサーバ３００から取得され、コンテンツの出力に利用されたソースでありうる。さらに、キャッシュ１４０に格納されるソースの少なくとも一部は、中間形式に変換されている。なお、本明細書では、キャッシュ１４０に格納されたソースを、キャッシュされたソースともいう。
【００２６】
ここで、中間形式（intermediate  format）は、コンテンツのソースから、出力のための画像データや音声データなどを生成するにあたり、中間的に生成されるデータの形式を意味する。ソースは、通信装置１５０を介してサーバ３００から取得されたときの形式（以下、元の形式ともいう）から、コンテンツ出力部１６０によってコンテンツの出力に利用されるまでの間に、所定の手順によって中間形式に変換される。以下、いくつかのコンテンツの例における中間形式とその変換の処理について説明する。
【００２７】
例えば、ソースの元の形式がＨＴＭＬやＸＭＬなどを用いたドキュメントである場合、ＤＯＭ（Document  Object  Model）に従ってドキュメントをパースすることによって得られるデータ構造が中間形式にあたる。一般的にドキュメントは出力時にパースされるが、予めパースによってデータ構造を生成し、データ構造をソースとしてキャッシュ１４０に格納することも可能である。
【００２８】
また、例えば、ソースの元の形式がJavascriptなどのスクリプトである場合、スクリプトをコンパイルすることによって生成されるマシンコードが中間形式にあたる。一般的にスクリプトは実行時にＪＩＴ（Just-In-Time）コンパイラによってコンパイルされるが、予めスクリプトをコンパイルしてマシンコードを生成し、マシンコードをソースとしてキャッシュ１４０に格納することも可能である。
【００２９】
また、例えば、ソースの元の形式がＣＳＳ（Cascading  Style  Sheet）のような設定情報、より具体的にはカスケード構造を有する設定情報である場合、カスケード構造を解決した状態の設定情報が中間形式にあたる。カスケード構造に含まれる設定情報の間では、個々の設定がオーバーライドされている。それゆえ、一般的にはドキュメントの出力時に設定情報のカスケード構造が解決され、実際に適用される設定が特定されるが、予めカスケード構造を解決したものをソースとしてキャッシュ１４０に格納することも可能である。
【００３０】
また、例えば、ソースがドキュメントに含まれる画像または音声、または単独で提供される画像または音声のデータである場合、所定の形式でエンコードされたデータをデコードしたものが中間形式にあたる。一般的にエンコードされている画像や音声のデータは出力時にデコードされるが、予めデコードしてＲＡＷデータなどに変換したものをソースとしてキャッシュ１４０に格納することも可能である。
【００３１】
通信装置１５０は、ネットワーク２００を介して、端末装置１００と外部装置との間の通信を実行する装置である。通信装置１５０は、例えばＷｉ−Ｆｉ、モバイルネットワーク、またはＢｌｕｅｔｏｏｔｈ（登録商標）などの無線通信や、ＬＡＮ（Local  Area  Network）などの有線通信を実行する各種の通信回路によって実現される。例えば、通信装置１５０は、ネットワーク２００を介してサーバ３００と通信し、ソース取得部１３０によって提供されるソースのリクエストをサーバ３００に送信するとともに、リクエストに応じてサーバ３００が送信したソースを受信する。
【００３２】
ここで、通信装置１５０を介したサーバ３００へのリクエストの送信およびソースの受信は、ソース取得部１３０によって、コンテンツの出力のために必要なソースがキャッシュ１４０に格納されていないと判断された場合に実行される。この場合、コンテンツを出力するためには、ソース取得部１３０やコンテンツ出力部１６０によるソースの処理に加えて、通信装置１５０によるサーバ３００との通信が必要である。キャッシュ１４０は、既にサーバ３００から取得され、コンテンツの出力に利用されたソースを格納しておくことによって、通信のための処理時間や処理負荷を低減し、コンテンツを出力するのにかかる時間や電力を削減することを可能にする。さらに、本実施形態では、キャッシュ１４０に格納されるソースの少なくとも一部が中間形式に変換されることによって、コンテンツ出力時にソースを中間形式に変換するための処理時間や処理負荷を低減し、コンテンツを出力するのにかかる時間や電力をさらに削減することができる。
【００３３】
ただし、ソースを中間形式に変換した場合、中間形式は実行のために最適化されたものであるために、ソースのサイズは元の形式に比べて大きくなりうる。従って、中間形式でキャッシュ１４０に格納されるソースが多くなるほど、キャッシュ１４０に格納できるソースの数は少なくなる。それゆえ、キャッシュ１４０に格納されるソースを中間形式に変換するにあたっては、所定の条件、例えばソースが再度コンテンツの出力に利用される可能性の高さを示す条件を設定し、条件を満たすソースを中間形式に変換してキャッシュ１４０に格納するとともに、それ以外のソースについては元の形式のままでキャッシュ１４０に格納することが望ましい。なお、端末装置１００のメモリやストレージの容量がキャッシュ１４０の容量に比べて十分に大きいような場合には、キャッシュ１４０に格納されるソースのすべてが中間形式に変換されていてもよい。
【００３４】
キャッシュ１４０に格納するソースを中間形式に変換する場合、いくつかの方法がある。第１の例は、ソース取得部１３０がコンテンツ出力部１６０に提供するために生成した中間形式のデータをキャッシュ１４０に格納する方法である。
【００３５】
第２の例は、コンテンツ出力部１６０に提供するために生成されるデータとは別に、ソース変換部１８０がソースを中間形式に変換したうえでキャッシュ１４０に格納する方法である。ソース変換部１８０を設ける場合、コンテンツの出力のための処理とは別に、バックグラウンドでソースを中間形式に変換する処理を実行することによって、端末装置１００の処理能力を有効利用できる。また、キャッシュ１４０に格納するソースの中間形式と、コンテンツ出力部１６０に提供されるソースの中間形式とを、異なる形式にすることが可能である。より具体的には、例えば、変換後のソースのサイズを考慮し、ソースがコンテンツ出力部１６０に提供されるときの中間形式への変換を部分的に実施したような形式のソースをキャッシュ１４０に格納することも可能である。
【００３６】
第３の例は、上記のソース変換部１８０が、通信装置１５０を介してソースを中間形式に変換することを外部装置に依頼する方法である。上記のようにバックグラウンドでソースを中間形式に変換する処理を実行するような場合、処理自体を処理能力に余裕のある外部装置に依頼することによって、より短い時間で処理を完了させたり、端末装置１００のバッテリーの消費を抑制したりすることができる。
【００３７】
例えば、上記で図１を参照して説明したシステム１０の場合、処理能力があまり高くなく、またバッテリー容量も限られているアイウェア１００ｂやスマートウォッチ１００ｃのようなウェアラブル装置、および／またはスマートフォン１００ａのようなモバイル装置が、処理能力が高く、バッテリー容量に余裕がある（電源接続されている）テレビ１００ｄのような装置に、キャッシュ１４０に格納するソースを中間形式に変換する処理を依頼してもよい。
【００３８】
（３．処理フロー）
図３は、本開示の一実施形態に係る端末装置におけるコンテンツ出力時の処理の例を示すフローチャートである。図３は、図２に示した端末装置１００において、リクエスト取得部１２０がコンテンツ出力のリクエストを取得した場合に実行される一連の処理を示す。この処理では、まず、ソース取得部１３０が、リクエストされたコンテンツを出力するために必要なソースがキャッシュ１４０に格納されているか否かを判定する（Ｓ１０１）。ここで、ソースは、元の形式であってもよいし、中間形式でのキャッシュであってもよい。
【００３９】
Ｓ１０１の判定において、キャッシュ１４０にソースが格納されていない場合（ＮＯ）、通信装置１５０がサーバ３００にソースのリクエストを送信する（Ｓ１０３）。さらに、通信装置１５０は、サーバ３００から、リクエストに応じて提供されたソースを受信する（Ｓ１０５）。通信装置１５０は受信されたソースをソース取得部１３０に提供し、ソース取得部１３０およびコンテンツ出力部１６０が提供されたソースを利用してコンテンツを出力する（Ｓ１０７）。Ｓ１０７に続いて、またはこれと並行して、受信されたソースがキャッシュ１４０に格納される（Ｓ１０９）。これによって、キャッシュ１４０に、（中間形式ではなく）元の形式でソースが格納される。
【００４０】
一方、Ｓ１０１の判定において、キャッシュ１４０にソースが格納されていた場合（ＹＥＳ）、さらに、ソース取得部１３０は、キャッシュ１４０に格納されているソースが中間形式であるか否かを判定する（Ｓ１１１）。ここで、ソースが中間形式であった場合（ＹＥＳ）、ソース取得部１３０およびコンテンツ出力部１６０は、キャッシュ１４０から取得した中間形式のソースを利用してコンテンツを出力する（Ｓ１１３）。一方、Ｓ１１１の判定において、ソースが中間形式ではなく元の形式であった場合（ＮＯ）、ソース取得部１３０およびコンテンツ出力部１６０は、キャッシュ１４０から取得した元の形式のソースを利用してコンテンツを出力する（Ｓ１１５）。
【００４１】
さらに、元の形式のソースを利用してコンテンツを出力した場合、ソース取得部１３０は、キャッシュ１４０にソースと関連付けて格納されるキャッシュ利用回数をインクリメントする（Ｓ１１７）。図示された例において、キャッシュ利用回数は、ソースを中間形式でキャッシュ１４０に格納するか否かを判定するための条件として、次に説明するソースの形式変換の処理で使用される。
【００４２】
以上で図３を参照して説明したようなコンテンツ出力時の処理によれば、コンテンツを出力するために必要なソースがキャッシュ１４０に格納されているか否か、および、キャッシュ１４０に格納されたソースが中間形式に変換されているか否かに応じて適切な処理によってソースが利用され、より短い処理時間および／またはより低い処理負荷でコンテンツを出力することができる。
【００４３】
図４は、本開示の一実施形態に係る端末装置におけるソースの形式変換の処理の例を示すフローチャートである。図４は、図２に示した端末装置１００において、コンテンツ出力のリクエストが取得されていない場合にバックグラウンドで実行される一連の処理を示す。これらの処理は、例えば、定期的に実行されてもよいし、端末装置１００（または処理を依頼される外部装置）の処理能力に余裕があることが検出された場合に適時実行されてもよい。あるいは、これらの処理は、コンテンツの出力後に引き続いて、またはコンテンツの出力と並行して実行されてもよい。
【００４４】
この処理には、キャッシュ１４０に格納されたソースごとのループ処理が含まれる（Ｓ２０１）。それぞれのソースについて、ソース変換部１８０は、当該ソースが中間形式であるか否かを判定する（Ｓ２０３）。ここで、既にソースが中間形式である場合（ＹＥＳ）、返還の必要はないため処理は次のソースに移行する。一方、ソースが中間形式ではなかった場合（ＮＯ）、ソース変換部１８０は、キャッシュ１４０にソースと関連付けて格納されたキャッシュ利用回数が閾値を超えているか否かを判定する（Ｓ２０５）。
【００４５】
Ｓ２０５の判定において、キャッシュ利用回数が閾値を超えていた場合（ＹＥＳ）、ソース変換部１８０は、ソースを中間形式に変換する（Ｓ２０７）。これ以降、当該ソースは予め中間形式に変換された状態でキャッシュ１４０に格納される。一方、キャッシュ利用回数が閾値を超えていなかった場合（ＮＯ）、ソースの形式は変換されない。すなわち、この場合、ソースは引き続き元の形式でキャッシュ１４０に格納される。
【００４６】
以上で図４を参照して説明したようなソースの形式変換の処理によれば、キャッシュ利用回数を基準にして、今後もコンテンツの出力に利用される可能性が高いと推定されるソースを選択的に中間形式に変換することができる。上述の通り、中間形式に変換されたソースは、コンテンツを迅速に出力することを可能にするものの、データサイズなどの面で扱いやすいとは必ずしもいえない。従って、上記の例のように、中間形式に変換する価値のあるソースを選択的に中間形式に変換することが望ましい。
【００４７】
なお、ソースを中間形式に変換するか否かを決定するための基準はキャッシュ利用回数には限られず、他にもさまざまな例がありうる。例えば、ウェブポータル（またはユーザが任意に設定したホームページ）を表示するためのＨＴＭＬドキュメントやスクリプト、設定情報、画像などのソースは、再利用される可能性が高いことが推測されるため、キャッシュ利用回数にかかわらず中間形式に変換されてもよい。また、ブラウザやメディアプレーヤなどのブックマークに含まれるドキュメントや画像、音声などのコンテンツのソースも、同様に、再利用される可能性が高いことが推測されるため、キャッシュ利用回数にかかわらず中間形式に変換されてもよい。
【００４８】
また、上記で図４を参照して説明した例では、端末装置１００にソース変換部１８０が設けられ、コンテンツの出力のための処理とは別にソースの形式変換の処理が実行されたが、上述のように、ソース取得部１３０がコンテンツ出力部１６０に提供するために生成した中間形式のデータがキャッシュ１４０に格納されるような場合には、必ずしもソース変換部１８０は設けられない。この場合、図４に示された処理は、ソース取得部１３０によって実行されうる。つまり、ソース取得部１３０は、コンテンツの出力に利用したソースのそれぞれについてループ処理を実行し、ソースがまだ中間形式でキャッシュ１４０に格納されておらず、また当該ソースのキャッシュ利用回数が閾値を超えた場合には、コンテンツの出力のために展開された中間形式のソースをキャッシュ１４０に格納する。
【００４９】
また、これも上述したように、ソース変換部１８０は、自らソースの形式を変換する代わりに、または自らソースの形式を変換するのと並行して、通信装置１５０を介して外部装置にソースの変換を依頼してもよい。この場合、ソース変換部１８０は、キャッシュ１４０に格納されたソースのそれぞれについてループ処理を実行し、ソースがまだ中間形式でキャッシュ１４０に格納されておらず、また当該ソースのキャッシュ利用回数が閾値を超えた場合には、通信装置１５０を介して外部装置にソースを中間形式に変換することを依頼する。さらに、ソース変換部１８０は、外部装置から受信された中間形式のソースで、キャッシュ１４０に格納された元の形式のソースを置換する。
【００５０】
（４．格納される情報の例）
図５は、本開示の一実施形態においてキャッシュとして格納される情報の例を示す図である。図５を参照すると、キャッシュ管理情報１４００には、ソースＵＲＬ１４０１と、ソース種類１４０２と、使用回数１４０３と、中間形式フラグ１４０４と、キャッシュパス１４０５と、識別子１４０６とが含まれる。以下、それぞれの項目によって示される情報についてさらに説明する。
【００５１】
ソースＵＲＬ１４０１は、例えば、それぞれのソースをサーバ３００から取得するときに指定されるＵＲＬ（Uniform  Resource  Locator）である。少なくともソースＵＲＬ１４０１が同一であれば、ソースは同一である。ソース種類１４０２は、それぞれのソースの種類を示す。図５では、ＨＴＭＬドキュメント、Javascript、ＣＳＳ、およびＪＰＥＧ画像が例示されているが、他にもさまざまな種類のソースがありうる。使用回数１４０３は、上記で図３および図４を参照して説明された処理の例におけるキャッシュ利用回数と同様の回数である。
【００５２】
中間形式フラグ１４０４は、それぞれのソースが中間形式でキャッシュ１４０に格納されているか否かを示す。図示された例では、Javascriptのソース（def.js）とＪＰＥＧ画像のソース（jkl.jpg）が中間形式で格納されている（Available）。キャッシュパス１４０５は、それぞれのソースのデータ実体への参照パスを示す。例えば、ソース取得部１３０は、キャッシュパス１４０５を参照して、キャッシュ１４０に格納されたソースを読み出す。なお、ソースのデータ実体を参照するための方法は図示された例には限られず、公知のさまざまな技術を利用することが可能である。
【００５３】
識別子１４０６は、付加的な項目である。識別子１４０６は、それぞれのソースの内容ごとに一意な識別子である。例えば、識別子１４０６は、ソースを種類にかかわらずバイナリデータとみなし、ハッシュ関数を適用することによって生成される。例えば、いくつかの異なるウェブページで共通して利用されている画像や音声があった場合、ソースＵＲＬ１４０１は、これらの画像や音声のソースのそれぞれについて異なりうる（格納されているサーバ３００の場所が異なるため）。しかし、識別子１４０６を利用すれば、ソースＵＲＬ１４０１が異なる場合であっても、ソースの内容が同一であれば、これらのソースを同一のソースとして扱うことが可能である。
【００５４】
上記のように、識別子１４０６を用いて、ソースＵＲＬ１４０１が異なるが内容が同一であるソースを同一のソースとして扱うことによって、例えば、あるコンテンツを初めて出力するときであっても、別のコンテンツの出力に利用されてキャッシュ１４０に格納されたソースを再利用することができ、キャッシュを利用してコンテンツの出力を高速化できるケースが増える。また、使用回数１４０３を識別子１４０６ごとにカウントすることによって、ソースＵＲＬ１４０１にかかわらず、同じ内容のソースがよく利用されるか否かを判定することができ、中間形式でキャッシュ１４０に格納するソースをより適切に選択することができる。
【００５５】
なお、識別子１４０６を生成するためのハッシュ関数としては、例えばＭＤ５、ＳＨＡ−１、またはＳＨＡ−２５６などを利用できる。さらに、１つのソースについて、複数のハッシュ関数を利用して複数の識別子１４０６を生成し、これらの識別子がすべて一致した場合にソースを同一と判定することで、識別子の一意性をより高めてもよい識別子１４０６を生成する処理も、ソースの形式を変換する処理と同様に、端末装置１００のプロセッサによって実行されてもよいし、外部装置に依頼されてもよい。
【００５６】
（５．データのやりとりの例）
図６は、本開示の一実施形態における装置間のデータのやりとりの例を示すシーケンス図である。図６は、図１に示したシステム１０において、アイウェア１００ｂが、コンテンツのソースを中間形式に変換する処理をスマートフォン１００ａに依頼する例を示す。
【００５７】
図示された例では、まず、ユーザからのドキュメント出力のリクエストを受け付けたアイウェア１００ｂが、サーバ３００に対してソースのリクエストを送信する（Ｓ３０１）。既に説明したように、ここでリクエストされるソースは、アイウェア１００ｂにおいてキャッシュ１４０に格納されていないソースでありうる。さらに、アイウェア１００ｂは、サーバ３００がリクエストに応じて送信したソースを受信する（Ｓ３０３）。
【００５８】
続いて、アイウェア１００ｂは、受信されたソースおよび／またはキャッシュ１４０に格納されたソースを利用して、ユーザに向けてコンテンツを出力する（Ｓ３０５）。このとき、例えば上記で図３を参照して説明したような処理によって、ソースのキャッシュ利用回数がインクリメントされうる。
【００５９】
コンテンツの出力後、またはコンテンツの出力と並行して、アイウェア１００ｂは、スマートフォン１００ａに、キャッシュ１４０に格納されるソースを中間形式に変換する処理を依頼する（Ｓ３０７）。ここでは、上記で図４を参照して説明したような処理によって、ソースのキャッシュ利用回数に基づいて、中間形式に変換するソースが決定されうる。スマートフォン１００ａは、中間形式に変換されたソースをアイウェア１００ｂに送信し（Ｓ３０９）、アイウェア１００ｂでは中間形式のソースによって元の形式のソースが置き換えられる（Ｓ３１１）。
【００６０】
（６．変形例）
本実施形態の変形例として、例えば、コンテンツのソースは、必ずしも端末装置１００の内部にあるキャッシュ１４０に格納されなくてもよい。より具体的には、例えばアイウェア１００ｂについて、キャッシュとして保持されるソースの実体はスマートフォン１００ａなどの外部装置のメモリまたはストレージに格納され、アイウェア１００ｂのキャッシュ１４０には例えば図５を参照して説明したような管理情報だけが格納されてもよい。この場合、アイウェア１００ｂは、コンテンツを出力するためのソースを、サーバ３００から取得するか、スマートフォン１００ａにあるキャッシュから取得する。スマートフォン１００ａで保持されるキャッシュは、上記で説明した例と同様に、所定の条件に基づいて中間形式に変換されていてもよい。
【００６１】
つまり、本開示の実施形態において、ソースのキャッシュは必ずしもコンテンツの出力を実行する端末装置１００に格納されていなくてもよく、外部装置に格納されて必要に応じて端末装置１００に提供されてもよい。この場合も、例えば端末装置１００と外部装置とがＷｉ−ＦｉやＢｌｕｅｔｏｏｔｈ（登録商標）などで通信する場合、ネットワーク通信を介してサーバ３００からソースを取得するよりも短い時間でコンテンツを出力することができる。このような場合も含めて、本明細書では、端末装置１００または外部装置にキャッシュされたソースを、「クライアント側にキャッシュされたソース」という。
【００６２】
（７．ハードウェア構成）
次に、図７を参照して、本開示の実施形態に係る情報処理装置のハードウェア構成について説明する。図７は、本開示の実施形態に係る情報処理装置のハードウェア構成例を示すブロック図である。図示された情報処理装置９００は、例えば、上記の実施形態における端末装置１００および／またはサーバ３００を実現しうる。
【００６３】
情報処理装置９００は、ＣＰＵ（Central  Processing  unit）９０１、ＲＯＭ（Read  Only  Memory）９０３、およびＲＡＭ（Random  Access  Memory）９０５を含む。また、情報処理装置９００は、ホストバス９０７、ブリッジ９０９、外部バス９１１、インターフェース９１３、入力装置９１５、出力装置９１７、ストレージ装置９１９、ドライブ９２１、接続ポート９２３、通信装置９２５を含んでもよい。さらに、情報処理装置９００は、必要に応じて、撮像装置９３３、およびセンサ９３５を含んでもよい。情報処理装置９００は、ＣＰＵ９０１に代えて、またはこれとともに、ＤＳＰ（Digital  Signal  Processor）またはＡＳＩＣ（Application  Specific  Integrated  Circuit）と呼ばれるような処理回路を有してもよい。
【００６４】
ＣＰＵ９０１は、演算処理装置および制御装置として機能し、ＲＯＭ９０３、ＲＡＭ９０５、ストレージ装置９１９、またはリムーバブル記録媒体９２７に記録された各種プログラムに従って、情報処理装置９００内の動作全般またはその一部を制御する。ＲＯＭ９０３は、ＣＰＵ９０１が使用するプログラムや演算パラメータなどを記憶する。ＲＡＭ９０５は、ＣＰＵ９０１の実行において使用するプログラムや、その実行において適宜変化するパラメータなどを一次記憶する。ＣＰＵ９０１、ＲＯＭ９０３、およびＲＡＭ９０５は、ＣＰＵバスなどの内部バスにより構成されるホストバス９０７により相互に接続されている。さらに、ホストバス９０７は、ブリッジ９０９を介して、ＰＣＩ（Peripheral  Component  Interconnect/Interface）バスなどの外部バス９１１に接続されている。
【００６５】
入力装置９１５は、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチおよびレバーなど、ユーザによって操作される装置である。入力装置９１５は、例えば、赤外線やその他の電波を利用したリモートコントロール装置であってもよいし、情報処理装置９００の操作に対応した携帯電話などの外部接続機器９２９であってもよい。入力装置９１５は、ユーザが入力した情報に基づいて入力信号を生成してＣＰＵ９０１に出力する入力制御回路を含む。ユーザは、この入力装置９１５を操作することによって、情報処理装置９００に対して各種のデータを入力したり処理動作を指示したりする。
【００６６】
出力装置９１７は、取得した情報をユーザに対して視覚的または聴覚的に通知することが可能な装置で構成される。出力装置９１７は、例えば、ＬＣＤ（Liquid  Crystal  Display）、ＰＤＰ（Plasma  Display  Panel）、有機ＥＬ（Electro-Luminescence）ディスプレイなどの表示装置、スピーカおよびヘッドフォンなどの音声出力装置、ならびにプリンタ装置などでありうる。出力装置９１７は、情報処理装置９００の処理により得られた結果を、テキストまたは画像などの映像として出力したり、音声または音響などの音声として出力したりする。
【００６７】
ストレージ装置９１９は、情報処理装置９００の記憶部の一例として構成されたデータ格納用の装置である。ストレージ装置９１９は、例えば、ＨＤＤ（Hard  Disk  Drive）などの磁気記憶部デバイス、半導体記憶デバイス、光記憶デバイス、または光磁気記憶デバイスなどにより構成される。このストレージ装置９１９は、ＣＰＵ９０１が実行するプログラムや各種データ、および外部から取得した各種のデータなどを格納する。
【００６８】
ドライブ９２１は、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブル記録媒体９２７のためのリーダライタであり、情報処理装置９００に内蔵、あるいは外付けされる。ドライブ９２１は、装着されているリムーバブル記録媒体９２７に記録されている情報を読み出して、ＲＡＭ９０５に出力する。また、ドライブ９２１は、装着されているリムーバブル記録媒体９２７に記録を書き込む。
【００６９】
接続ポート９２３は、機器を情報処理装置９００に直接接続するためのポートである。接続ポート９２３は、例えば、ＵＳＢ（Universal  Serial  Bus）ポート、ＩＥＥＥ１３９４ポート、ＳＣＳＩ（Small  Computer  System  Interface）ポートなどでありうる。また、接続ポート９２３は、ＲＳ−２３２Ｃポート、光オーディオ端子、ＨＤＭＩ（登録商標）（High-Definition  Multimedia  Interface）ポートなどであってもよい。接続ポート９２３に外部接続機器９２９を接続することで、情報処理装置９００と外部接続機器９２９との間で各種のデータが交換されうる。
【００７０】
通信装置９２５は、例えば、通信ネットワーク９３１に接続するための通信デバイスなどで構成された通信インターフェースである。通信装置９２５は、例えば、有線または無線ＬＡＮ（Local  Area  Network）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、またはＷＵＳＢ（Wireless  USB）用の通信カードなどでありうる。また、通信装置９２５は、光通信用のルータ、ＡＤＳＬ（Asymmetric  Digital  Subscriber  Line）用のルータ、または、各種通信用のモデムなどであってもよい。通信装置９２５は、例えば、インターネットや他の通信機器との間で、ＴＣＰ／ＩＰなどの所定のプロトコルを用いて信号などを送受信する。また、通信装置９２５に接続される通信ネットワーク９３１は、有線または無線によって接続されたネットワークであり、例えば、インターネット、家庭内ＬＡＮ、赤外線通信、ラジオ波通信または衛星通信などである。
【００７１】
撮像装置９３３は、例えば、ＣＣＤ（Charge  Coupled  Device）またはＣＭＯＳ（Complementary  Metal  Oxide  Semiconductor）などの撮像素子、および撮像素子への被写体像の結像を制御するためのレンズなどの各種の部材を用いて実空間を撮像し、撮像画像を生成する装置である。撮像装置９３３は、静止画を撮像するものであってもよいし、また動画を撮像するものであってもよい。
【００７２】
センサ９３５は、例えば、加速度センサ、ジャイロセンサ、地磁気センサ、光センサ、音センサなどの各種のセンサである。センサ９３５は、例えば情報処理装置９００の筐体の姿勢など、情報処理装置９００自体の状態に関する情報や、情報処理装置９００の周辺の明るさや騒音など、情報処理装置９００の周辺環境に関する情報を取得する。また、センサ９３５は、ＧＰＳ（Global  Positioning  System）信号を受信して装置の緯度、経度および高度を測定するＧＰＳセンサを含んでもよい。
【００７３】
以上、情報処理装置９００のハードウェア構成の一例を示した。上記の各構成要素は、汎用的な部材を用いて構成されていてもよいし、各構成要素の機能に特化したハードウェアにより構成されていてもよい。かかる構成は、実施する時々の技術レベルに応じて適宜変更されうる。
【００７４】
（８．補足）
本開示の実施形態は、例えば、上記で説明したような情報処理装置、システム、情報処理装置またはシステムで実行される情報処理方法、情報処理装置を機能させるためのプログラム、およびプログラムが記録された一時的でない有形の媒体を含みうる。
【００７５】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【００７６】
また、本明細書に記載された効果は、あくまで説明的または例示的なものであって限定的ではない。つまり、本開示に係る技術は、上記の効果とともに、または上記の効果に代えて、本明細書の記載から当業者には明らかな他の効果を奏しうる。
【００７７】
なお、以下のような構成も本開示の技術的範囲に属する。
（１）コンテンツのソースを取得するソース取得部と、
前記取得されたソースに基づいて前記コンテンツを出力するコンテンツ出力部と
を備え、
前記ソースは、クライアント側にキャッシュされたソースを含み、
前記キャッシュされたソースは、中間形式に変換されたソースを含む
情報処理装置。
（２）前記キャッシュされたソースは、中間形式に変換されていないソースを含み、
前記情報処理装置は、前記中間形式に変換されていないソースを前記中間形式に変換するソース変換部をさらに備える、前記（１）に記載の情報処理装置。
（３）前記ソース変換部は、前記中間形式に変換されていないソースが前記コンテンツの出力に利用された回数に基づいて、前記中間形式に変換されていないソースを前記中間形式に変換する、前記（２）に記載の情報処理装置。
（４）前記情報処理装置は、外部装置と通信する通信部をさらに備え、
前記ソース変換部は、前記中間形式に変換されていないソースを前記中間形式に変換する処理を、前記通信部を介して前記外部装置に依頼する、前記（３）に記載の情報処理装置。
（５）前記ソース取得部は、前記ソースが前記クライアント側にキャッシュされているか否かを、前記ソースの内容ごとに一意な識別子に基づいて判定する、前記（１）〜（４）のいずれか１項に記載の情報処理装置。
（６）前記ソースは、ドキュメントを含み、
前記中間形式に変換されたソースは、前記ドキュメントをパースすることによって得られるデータ構造を含む、前記（１）〜（５）のいずれか１項に記載の情報処理装置。
（７）前記ソースは、スクリプトを含み、
前記中間形式に変換されたソースは、前記スクリプトをコンパイルすることによって得られるマシンコードを含む、前記（１）〜（６）のいずれか１項に記載の情報処理装置。
（８）前記ソースは、カスケード構造を有する設定情報を含み、
前記中間形式に変換されたソースは、前記カスケード構造を解決した状態の設定情報を含む、前記（１）〜（７）のいずれか１項に記載の情報処理装置。
（９）前記コンテンツは、エンコードされた画像データまたは音声データを含み、
前記中間形式に変換されたソースは、デコードされた前記画像データまたは前記音声データを含む、前記（１）〜（８）のいずれか１項に記載の情報処理装置。
（１０）コンテンツのソースを取得する機能と、
前記取得されたソースに基づいて前記コンテンツを出力する機能と
をコンピュータに実現させるためのプログラムが記録された記録媒体であって、
前記ソースは、クライアント側にキャッシュされたソースを含み、
前記キャッシュされたソースは、中間形式に変換されたソースを含む
記録媒体。
【符号の説明】
【００７８】
１０    システム
１００    端末装置
１１０    入力装置
１２０    リクエスト取得部
１３０    ソース取得部
１４０    キャッシュ
１５０    通信装置
１６０    コンテンツ出力部
１７０    出力装置
１８０    ソース変換部
２００    ネットワーク
３００    サーバ
【図１】
0006500894.tif 000002
【図２】
0006500894.tif 000003
【図３】
0006500894.tif 000004
【図４】
0006500894.tif 000005
【図５】
0006500894.tif 000006
【図６】
0006500894.tif 000007
【図７】
0006500894.tif 000008