説明

ユーザ端末がスクリプトプログラムを解釈実行する方法、スクリプトプログラム及びユーザ端末

【課題】ユーザ端末がWebページの表示時間を短縮可能なスクリプトプログラムを解釈実行する方法、スクリプトプログラム及びユーザ端末を提供すること。
【解決手段】ユーザ端末(10)が、Webページ表示時にHTMLのコードに係るスクリプトプログラム(1)をブラウザにより解釈実行するステップと、スクリプトプログラム(1)を構成する関数をユーザ端末(10)のメモリ上に展開する際に、当該関数が既にメモリ上に展開されているか否かを判別するステップと、関数がメモリ上に展開されていないことを条件に、この関数をメモリ上に展開するステップと、を含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、Webページ表示時にユーザ端末がスクリプトプログラムを解釈実行する方法、スクリプトプログラム及びユーザ端末に関する。
【背景技術】
【0002】
近年、コンパイル方式のプログラムと異なり、ソースコードを直接実行するスクリプトプログラムが知られている。スクリプトプログラムの一例であるJavaScript(登録商標)は、静的な表現しかできなかったWebページに、動きや対話性を付加することができるため、多数のWebページに用いられている。
【0003】
コンパイルを必要としないスクリプトプログラムの性質上、スクリプトプログラムには高速化が求められ、これまでスクリプトプログラムの高速化を図る発明が多数なされている。例えば、特許文献1には、スクリプトプログラムの実行指示前に予めスクリプトプログラムを読み込んでおくことで、スクリプトプログラムで記述されたアプリケーションの起動及び切り替えを高速化するスクリプトプログラム実行装置が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−179153号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
近年では様々なサービスを提供するポータルサイトが知られ、このようなポータルサイトのWebページには、様々なサービスを提供するため、1つのWebページの中にスクリプトプログラムで記述されたアプリケーションが複数含まれることもある。
【0006】
そして、このようなスクリプトプログラムは、例えばツールバーやカレンダーなど、所定の機能ごとにまとめられたライブラリとして提供されることも多い。その結果、Webページの作成者は、このようなスクリプトプログラムを利用する機会が増えてきている。
【0007】
このようにして、Webページの作成者はツールバーやカレンダーなどの機能を一からプログラムすることなく、所定のスクリプトプログラムを呼び出すための最小限の記載のみでリッチなWebページを提供できるようになっている。
【0008】
一方、このような1つのWebページの中に含まれる複数のスクリプトプログラムには、それぞれがまとまった機能を提供するために共通する下位概念の機能が含まれることがある。そこで、スクリプトプログラムの製作者は、複数のスクリプトプログラムで共通して使用する再利用可能な関数(オブジェクト)を記述することが多くなってきている。したがって、Webページの作成者が複数のスクリプトプログラムを利用する場合には、共通する関数を当該複数のスクリプトプログラムで利用することになる。このように再利用可能な関数を複数のスクリプトプログラムで共通して利用することにより、スクリプトプログラム自体の生産性を高めることができる。
【0009】
ところで、1つのWebページの中に、このような共通する関数を備えるスクリプトプログラムが複数含まれる場合、スクリプト言語はコンパイルが行われないため、ユーザ端末(ブラウザ)で複数のスクリプトプログラムを読み出すたびに、この共通の関数がユーザ端末のメモリ上に展開されるため、当該Webページの表示完了までの速度が遅くなるという問題があった。特に、ポータルサイトのトップページのような多数のユーザが閲覧するWebページは、ユーザから繰り返し閲覧される可能性が高く、スクリプトプログラムの更なる高速化が望まれている。
【0010】
図4及び図5を参照して、従来のスクリプトプログラムの問題点について具体的に説明する。
図4は、スクリプトプログラムで記述されたアプリケーションを含むWebページの一例を示し、図5(1)は、当該Webページのソースコードを示し、図5(2)及び(3)は、アプリケーションを記述するスクリプトプログラムのソースコードを示し、図5(4)は、ユーザ端末のメモリへのスクリプトプログラムの展開状況を示す。
【0011】
図4に示すWebページ100には、スクリプトプログラムで記述されたアプリケーションであるツールバー101及びカレンダー102が含まれる。ユーザ端末は、Webページ100の内容を記述するソースコード(HTML)を読み込むことで、Webページ100を閲覧する。図5(1)に示すように、Webページ100のソースコードでは、ラインL21においてユーザ端末にツールバー101を実行するためのスクリプトプログラムを読み出させるとともに、ラインL22においてユーザ端末にカレンダー102を実行するためのスクリプトプログラムを読み出させる。
【0012】
図5(2)に示すツールバー101を記述するスクリプトプログラムのソースコードを参照して、ツールバー101を記述するスクリプトプログラムは、関数A、関数Bを含んで構成され、ラインL23には、関数Aの定義・処理が記述され、ラインL24には、関数Bの定義・処理が記述されている。次に、図5(3)に示すカレンダー102を記述するスクリプトプログラムのソースコードを参照して、カレンダー102を記述するスクリプトプログラムは、関数A、関数Cを含んで構成され、ラインL25には、関数Aの定義・処理が記述され、ラインL26には、関数Bの定義・処理が記述されている。
【0013】
ユーザ端末では、Webページ100のソースコードのラインL21において、ツールバー101を記述するスクリプトプログラムを読み出す際に、当該スクリプトプログラムを構成する複数の関数をユーザ端末のメモリ上に展開し、続いて、Webページ100のソースコードのラインL22において、カレンダー102を記述するスクリプトプログラムを読み出す際に、当該スクリプトプログラムを構成する複数の関数をユーザ端末のメモリ上に展開する。具体的には、ラインL21においてツールバー101を記述するスクリプトプログラムを読み出すと、ユーザ端末のメモリ上には、当該スクリプトプログラムを構成する関数A、関数Bが展開され、続く、ラインL22においてカレンダー102を記述するスクリプトプログラムを読み出すと、ユーザ端末のメモリ上には、当該スクリプトプログラムを構成する関数A、関数Cが展開される。
【0014】
ここで、スクリプトプログラムでは、アプリケーションの種別に関わらず共通して利用される関数が多数存在する。例えば、DOM(Document Object Model)の準備ができたら実行する関数「domReady」や、イベントリスナーを登録する関数「addEvent」などは、多くのアプリケーションで共通して用いられている。Webページ製作者にとってみれば、多くのアプリケーションで共通して用いられる関数の記述を揃え、再利用可能とすることは一般的であり、図5においても、関数Aは、ツールバー101及びカレンダー102に共通して用いられ、その記述も同一となっている。
【0015】
従来のスクリプトプログラムでは、このように共通して用いられる関数がある場合、ユーザ端末のメモリ上に一度展開された関数を上書きしている。すなわち、ラインL21においてツールバー101を記述するスクリプトプログラムを構成する関数Aをメモリ上に一度展開した後、ラインL22においてカレンダー102を記述するスクリプトプログラムを構成する関数Aをメモリ上に再度展開(上書き)している。
【0016】
アプリケーションの種別に関わらず共通して利用される関数は多数存在し、このような関数をユーザ端末のメモリ上に逐次上書きすることは、Webページの表示の遅延につながっている。ユーザにとっては、Webページで提供されるサービスが重要であり、サービスを選択するためのWebページは、できるだけ短時間で表示されることが望ましい。
【0017】
そこで、本発明は、ユーザ端末が、複数のスクリプトプログラムで共通して使用する関数をメモリ上で再展開することを回避することによって、Webページの表示時間を短縮可能なスクリプトプログラムを解釈実行する方法スクリプトプログラム及びユーザ端末を提供することを目的とする。
【課題を解決するための手段】
【0018】
(1) ユーザ端末がWebページ表示時にWebブラウザによりスクリプトプログラムを解釈実行する方法であって、前記ユーザ端末が、前記WebページのHTMLコードに含まれるかあるいは呼び出されるスクリプトプログラムを前記Webブラウザにより解釈実行するステップと、前記スクリプトプログラムを構成する関数を前記ユーザ端末のメモリ上に展開する際に、当該関数が既に前記メモリ上に展開されているか否かを判別するステップと、前記関数が前記メモリ上に展開されていないことを条件に、当該関数を前記メモリ上に展開するステップと、を含む方法。
【0019】
(1)の方法によれば、ユーザ端末は、スクリプトプログラムを構成する関数がユーザ端末のメモリ上に展開されているか否かを判別し、未だ展開されていない場合に限り、当該関数をメモリ上に展開する。これにより、端末が複数のスクリプトプログラムを受信する場合において、共通して利用される関数を重ねてメモリ上に展開することを回避でき、Webページを短時間で表示することができる。
【0020】
(2) Webページ表示時にユーザ端末のWebブラウザにより解釈実行されるスクリプトプログラムであって、前記ユーザ端末に、前記スクリプトプログラムを構成する関数を前記ユーザ端末のメモリ上に展開する際に、当該関数が既に前記メモリ上に展開されているか否かを判別するステップと、前記関数が前記メモリ上に展開されていないことを条件に、当該関数を前記メモリ上に展開するステップと、を含むスクリプトプログラム。
【0021】
(2)のスクリプトプログラムによれば、ユーザ端末は、スクリプトプログラムを構成する関数がユーザ端末のメモリ上に展開されているか否かを判別し、未だ展開されていない場合に限り、当該関数をメモリ上に展開する。これにより、端末が複数のスクリプトプログラムを受信する場合において、共通して利用される関数を重ねてメモリ上に展開することを回避でき、Webページを短時間で表示することができる。
【0022】
(3) 前記スクリプトプログラムは、前記WebページのHTMLコードに含まれる(2)に記載のスクリプトプログラム。
【0023】
(3)のスクリプトプログラムによれば、ユーザ端末は、スクリプトプログラムをHTMLのコードとは別にダウンロードするため、Webページとスクリプトプログラムとの管理が別々に行われているサイトにおいても、(2)のスクリプトプログラムによる効果と同様に、Webページを短時間で表示することができる。
【0024】
(4) Webページ表示時にWebブラウザによりスクリプトプログラムを解釈実行するユーザ端末であって、前記WebページのHTMLのコードに含まれるかあるいは呼び出されるスクリプトプログラムを、前記Webブラウザにより解釈実行する手段と、前記スクリプトプログラムを構成する関数を前記ユーザ端末のメモリ上に展開する際に、当該関数が既に前記メモリ上に展開されているか否かを判別する手段と、前記関数が前記メモリ上に展開されていないことを条件に、当該関数を前記メモリ上に展開する手段と、を含むユーザ端末。
【0025】
(4)のユーザ端末によれば、(1)と同様の効果を期待することができる。
【発明の効果】
【0026】
本発明によれば、ユーザ端末が、複数のスクリプトプログラムで共通して使用する関数をメモリ上で再展開することを回避することによって、Webページの表示時間を短縮可能なスクリプトプログラムを実行する方法を提供することができる。
【図面の簡単な説明】
【0027】
【図1】ユーザ端末によるスクリプトプログラムの実行方法の概要を示す図である。
【図2】スクリプトプログラムのソースコードを示す図である。
【図3】本発明のユーザ端末の処理の流れを示すフローチャートである。
【図4】スクリプトプログラムで記述されたアプリケーションを含むWebページの表示例を示す図である。
【図5】従来のスクリプトプログラムのソースコードを示す図である。
【発明を実施するための形態】
【0028】
以下、本発明の実施形態について図1及び図2を参照して説明する。
【0029】
図1は、本発明のスクリプトプログラムの概要を示す図である。図1を参照して、ユーザ端末10は、Webサーバ11及びライブラリサーバ12と通信可能に接続されている。
Webサーバ11は、Webページを構成するHTMLデータ及び各種データ(画像・音声など)を備え、ユーザ端末10からの要求に基づいて当該データをユーザ端末10に送信する。ライブラリサーバ12は、Webページに含まれるアプリケーションデータ(スクリプトプログラムライブラリ)を備え、ユーザ端末10からの要求に基づいて当該データをユーザ端末10に送信する。
【0030】
図1において、ユーザ端末10にはWebサーバ11からHTMLデータ2が送信されている。このHTMLデータ2のラインL10には、「scriptLib1.js(以下、「スクリプトプログラム1A」とする)」、「scriptLib1.js(以下、「スクリプトプログラム1B」とする)」・・・「scriptLibN.js(以下、「スクリプトプログラム1N」とする)」を読み出すことが記述されている。ユーザ端末10では、HTMLデータ2に従い、ライブラリサーバ12からスクリプトプログラム1A、1B・・・1Nを受信し、当該スクリプトプログラム1A,1B・・・1Nをメモリ上に展開する。ここで、スクリプトプログラム1A,1B・・・1Nは、1つのWebページの中で同時に用いられているアプリケーションを記述するスクリプトプログラム(好適には、JavaScript)であり、以下では、「スクリプトプログラム1」と総称する。
【0031】
スクリプトプログラム1Aは、関数A,関数B,関数Cを含んで構成され、スクリプトプログラム1Bは、関数A,関数B,関数Dを含んで構成され、スクリプトプログラム1Nは、関数A,関数C,関数Dを含んで構成されている。すなわち、関数Aはスクリプトプログラム1A,1B,1Nに共通する関数であり、関数Bはスクリプトプログラム1A,1Bに共通する関数であり、関数Cはスクリプトプログラム1A,1Nに共通する関数であり、関数Dはスクリプトプログラム1B,1Nに共通する関数である。
【0032】
本発明に係るスクリプトプログラム1は、1のWebページの中で同時に用いられている複数のスクリプトプログラムを構成する関数が共通する場合に、この共通する関数をユーザ端末10のメモリ上に一度限り展開し、再度上書きすることのない点に特徴を有する。具体的には、スクリプトプログラム1Bの展開時において、スクリプトプログラム1Aで既に展開されている関数A,関数Bを展開することがなく、また、スクリプトプログラム1Nの展開時において、スクリプトプログラム1A,1Bで既に展開されている関数A,関数C,関数Dを展開することがない点に特徴を有する。
【0033】
図2を参照して、本発明に係るスクリプトプログラム1について説明する。図2に、スクリプトプログラム1を、JavaScriptで記述したソースコードを示す。スクリプトプログラム1は、ラインL1〜L6に示すように、関数を定義する際に既にこの関数が定義されているか否かを判別する。具体的には、ラインL1において、「if (typeof funcA ===”undefined”)」と記述し、「undefined(true)」である場合、すなわち、関数Aが未定義である(ユーザ端末10のメモリ上に展開されていない)場合に限り、関数Aの定義・処理の記述を展開することとしている。
すなわち、スクリプトプログラム1は、スクリプトプログラム1を構成する関数をユーザ端末10のメモリ上に展開する際に、当該関数が既にメモリ上に展開されているか否かを判別させるステップと、当該関数がメモリ上に展開されていないことを条件(true)に、当該関数をメモリ上に展開させるステップとを、ユーザ端末10に対して実行させる。
【0034】
具体的には、スクリプトプログラム1AのソースコードのラインL1〜L3において、関数A,関数B,関数Cがユーザ端末10のメモリ上に展開されているか否かを判別している。このとき、スクリプトプログラム1Aの読み出し時には、関数A,関数B,関数Cは未だ展開されていないため「true」となり、関数A,関数B,関数Cがユーザ端末10のメモリ上に展開される。
同様に、スクリプトプログラム1BのソースコードのラインL4〜L6において、関数A,関数B,関数Cがユーザ端末10のメモリ上に展開されているか否かを判別している。このとき、スクリプトプログラム1Bの読み出し時において、関数Dは未だ展開されていないため「true」となり、関数Cがユーザ端末10のメモリ上に展開される。一方で、スクリプトプログラム1Bの読み出し時には、関数A,関数Bは既にユーザ端末10のメモリ上に展開されているため、「false」となる。その結果、スクリプトプログラム1Bの読み出し時において、関数A,関数Bはユーザ端末10のメモリ上に展開されない。
【0035】
このように、本発明に係るスクリプトプログラム1では、スクリプトプログラム1を構成する関数のうち、ユーザ端末10のメモリ上に一度展開された関数が再度展開(上書き)されることが無い。そのため、1つのWebページに設けられた複数のスクリプトプログラム1に共通する多数の関数を、ユーザ端末10のメモリ上に重ねて展開することを回避でき、Webページの表示時間を短縮することができる。
【0036】
続いて、図3を参照して、ユーザ端末10により行われる処理の流れについて説明する。
【0037】
S1、S2:Webサーバ11に対するWebページの要求に伴いWebサーバ11からWebページを構成するHTMLデータ及び各種データが送信されると、ユーザ端末10は、HTMLのソースコードを解釈する(S1)。このとき、HTMLのソースコード内にスクリプトプログラムを読み出すことが記述されていると、ユーザ端末10は、ライブラリサーバ12からスクリプトプログラムをダウンロードする(S2)。
【0038】
S3〜S6:続いて、ユーザ端末10は、スクリプトプログラムの記述どおり(ラインごとに)スクリプトプログラムを読み出し、解釈実行する(S3)。続いて、ユーザ端末10は、スクリプトプログラムの読み出した部分(関数)が既にメモリ上に展開されているか否かを判定する(S4)。このとき、当該関数が未だメモリ上に展開されていない場合には、ユーザ端末10は、この関数をメモリ上に展開し(S5)。S5の後、又はS4において当該関数が既にメモリ上に展開されていると判定された場合には、ユーザ端末10は、続いて、スクリプトプログラムの全てを読み出したか否かを判定する(S6)。このとき、未だ読み出していない部分がある場合には、ユーザ端末10は、スクリプトプログラムの残りの部分を読み出し、解釈実行する。他方、スクリプトプログラムの全てを読み出した場合には、ユーザ端末10は、処理を終了する。
【0039】
なお、ユーザ端末10のハードウェアは、一般的なコンピュータによって構成することができる。一般的なコンピュータは、例えば、制御部として、中央処理装置(CPU)を備える他、記憶部として、メモリ(RAM、ROM)、ハードディスク(HDD)及び光ディスク(CD、DVDなど)を、ネットワーク通信装置として、各種有線及び無線LAN装置を、表示装置として、例えば、液晶ディスプレイ、プラズマディスプレイなどの各種ディスプレイを、入力装置として、例えば、キーボード及びポインティング・デバイス(マウス、トラッキングボールなど)を適宜備え、これらは、バスラインにより接続されている。このような一般的なコンピュータにおいて、CPUは、ユーザ端末10を統括的に制御し、各種プログラムを適宜読み出して実行することにより、上述したハードウェアと協働し、本発明に係る各種機能を実現している。
【0040】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施例に記載されたものに限定されるものではない。
【0041】
例えば、上記実施形態では、Webサーバ11及びライブラリサーバ12を独立した個別のサーバとしているが、Webサーバ11及びライブラリサーバ12を1つのサーバで実現することとしてもよい。
また、上記実施形態では、スクリプトプログラム1をHTMLデータ2とは別に設け、srcタグを用いて読み出すこととしているが、スクリプトプログラム1をHTMLデータ内に記述することとしてもよい。
さらに、上記実施形態では、スクリプトプログラムをJavaScriptで記述したが、スクリプトプログラム言語であれば、JavaScriptに限られず、例えば、VBスクリプトやXULなどであってもよい。
【符号の説明】
【0042】
1A,1B,1N スクリプトプログラム
L1,L2,L3,L4,L5,L6 ライン
10 ユーザ端末
11 Webサーバ
12 ライブラリサーバ

【特許請求の範囲】
【請求項1】
ユーザ端末がWebページ表示時にWebブラウザによりスクリプトプログラムを解釈実行する方法であって、
前記ユーザ端末が、
前記WebページのHTMLのコードに含まれるかあるいは呼び出されるスクリプトプログラムを、前記Webブラウザにより解釈実行するステップと、
前記スクリプトプログラムを構成する関数を前記ユーザ端末のメモリ上に展開する際に、当該関数が既に前記メモリ上に展開されているか否かを判別するステップと、
前記関数が前記メモリ上に展開されていないことを条件に、当該関数を前記メモリ上に展開するステップと、
を含む方法。
【請求項2】
Webページ表示時にユーザ端末のWebブラウザにより解釈実行されるスクリプトプログラムであって、
前記ユーザ端末に、
前記スクリプトプログラムを構成する関数を前記ユーザ端末のメモリ上に展開する際に、当該関数が既に前記メモリ上に展開されているか否かを判別するステップと、
前記関数が前記メモリ上に展開されていないことを条件に、当該関数を前記メモリ上に展開するステップと、
を含むスクリプトプログラム。
【請求項3】
前記スクリプトプログラムは、前記WebページのHTMLコードに含まれる請求項2に記載のスクリプトプログラム。
【請求項4】
Webページ表示時にWebブラウザによりスクリプトプログラムを解釈実行するユーザ端末であって、
前記WebページのHTMLのコードに含まれるかあるいは呼び出されるスクリプトプログラムを、前記Webブラウザにより解釈実行する手段と、
前記スクリプトプログラムを構成する関数を前記ユーザ端末のメモリ上に展開する際に、当該関数が既に前記メモリ上に展開されているか否かを判別する手段と、
前記関数が前記メモリ上に展開されていないことを条件に、当該関数を前記メモリ上に展開する手段と、
を含むユーザ端末。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate