(57)【要約】【課題】ユーザ端末がＷｅｂページの表示時間を短縮可能なスクリプトプログラムを解釈実行する方法、スクリプトプログラム及びユーザ端末を提供すること。【解決手段】ユーザ端末（１０）が、Ｗｅｂページ表示時にＨＴＭＬのコードに係るスクリプトプログラム（１）をブラウザにより解釈実行するステップと、スクリプトプログラム（１）を構成する関数をユーザ端末（１０）のメモリ上に展開する際に、当該関数が既にメモリ上に展開されているか否かを判別するステップと、関数がメモリ上に展開されていないことを条件に、この関数をメモリ上に展開するステップと、を含む。【選択図】図１
2012032938.tif 000002
【特許請求の範囲】
【請求項１】
ユーザ端末がＷｅｂページ表示時にＷｅｂブラウザによりスクリプトプログラムを解釈実行する方法であって、
前記ユーザ端末が、
前記ＷｅｂページのＨＴＭＬのコードに含まれるかあるいは呼び出されるスクリプトプログラムを、前記Ｗｅｂブラウザにより解釈実行するステップと、
前記スクリプトプログラムを構成する関数を前記ユーザ端末のメモリ上に展開する際に、当該関数が既に前記メモリ上に展開されているか否かを判別するステップと、
前記関数が前記メモリ上に展開されていないことを条件に、当該関数を前記メモリ上に展開するステップと、
を含む方法。
【請求項２】
Ｗｅｂページ表示時にユーザ端末のＷｅｂブラウザにより解釈実行されるスクリプトプログラムであって、
前記ユーザ端末に、
前記スクリプトプログラムを構成する関数を前記ユーザ端末のメモリ上に展開する際に、当該関数が既に前記メモリ上に展開されているか否かを判別するステップと、
前記関数が前記メモリ上に展開されていないことを条件に、当該関数を前記メモリ上に展開するステップと、
を含むスクリプトプログラム。
【請求項３】
前記スクリプトプログラムは、前記ＷｅｂページのＨＴＭＬコードに含まれる請求項２に記載のスクリプトプログラム。
【請求項４】
Ｗｅｂページ表示時にＷｅｂブラウザによりスクリプトプログラムを解釈実行するユーザ端末であって、
前記ＷｅｂページのＨＴＭＬのコードに含まれるかあるいは呼び出されるスクリプトプログラムを、前記Ｗｅｂブラウザにより解釈実行する手段と、
前記スクリプトプログラムを構成する関数を前記ユーザ端末のメモリ上に展開する際に、当該関数が既に前記メモリ上に展開されているか否かを判別する手段と、
前記関数が前記メモリ上に展開されていないことを条件に、当該関数を前記メモリ上に展開する手段と、
を含むユーザ端末。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｗｅｂページ表示時にユーザ端末がスクリプトプログラムを解釈実行する方法、スクリプトプログラム及びユーザ端末に関する。
【背景技術】
【０００２】
近年、コンパイル方式のプログラムと異なり、ソースコードを直接実行するスクリプトプログラムが知られている。スクリプトプログラムの一例であるＪａｖａＳｃｒｉｐｔ（登録商標）は、静的な表現しかできなかったＷｅｂページに、動きや対話性を付加することができるため、多数のＷｅｂページに用いられている。
【０００３】
コンパイルを必要としないスクリプトプログラムの性質上、スクリプトプログラムには高速化が求められ、これまでスクリプトプログラムの高速化を図る発明が多数なされている。例えば、特許文献１には、スクリプトプログラムの実行指示前に予めスクリプトプログラムを読み込んでおくことで、スクリプトプログラムで記述されたアプリケーションの起動及び切り替えを高速化するスクリプトプログラム実行装置が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１７９１５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
近年では様々なサービスを提供するポータルサイトが知られ、このようなポータルサイトのＷｅｂページには、様々なサービスを提供するため、１つのＷｅｂページの中にスクリプトプログラムで記述されたアプリケーションが複数含まれることもある。
【０００６】
そして、このようなスクリプトプログラムは、例えばツールバーやカレンダーなど、所定の機能ごとにまとめられたライブラリとして提供されることも多い。その結果、Ｗｅｂページの作成者は、このようなスクリプトプログラムを利用する機会が増えてきている。
【０００７】
このようにして、Ｗｅｂページの作成者はツールバーやカレンダーなどの機能を一からプログラムすることなく、所定のスクリプトプログラムを呼び出すための最小限の記載のみでリッチなＷｅｂページを提供できるようになっている。
【０００８】
一方、このような１つのＷｅｂページの中に含まれる複数のスクリプトプログラムには、それぞれがまとまった機能を提供するために共通する下位概念の機能が含まれることがある。そこで、スクリプトプログラムの製作者は、複数のスクリプトプログラムで共通して使用する再利用可能な関数（オブジェクト）を記述することが多くなってきている。したがって、Ｗｅｂページの作成者が複数のスクリプトプログラムを利用する場合には、共通する関数を当該複数のスクリプトプログラムで利用することになる。このように再利用可能な関数を複数のスクリプトプログラムで共通して利用することにより、スクリプトプログラム自体の生産性を高めることができる。
【０００９】
ところで、１つのＷｅｂページの中に、このような共通する関数を備えるスクリプトプログラムが複数含まれる場合、スクリプト言語はコンパイルが行われないため、ユーザ端末（ブラウザ）で複数のスクリプトプログラムを読み出すたびに、この共通の関数がユーザ端末のメモリ上に展開されるため、当該Ｗｅｂページの表示完了までの速度が遅くなるという問題があった。特に、ポータルサイトのトップページのような多数のユーザが閲覧するＷｅｂページは、ユーザから繰り返し閲覧される可能性が高く、スクリプトプログラムの更なる高速化が望まれている。
【００１０】
図４及び図５を参照して、従来のスクリプトプログラムの問題点について具体的に説明する。
図４は、スクリプトプログラムで記述されたアプリケーションを含むＷｅｂページの一例を示し、図５（１）は、当該Ｗｅｂページのソースコードを示し、図５（２）及び（３）は、アプリケーションを記述するスクリプトプログラムのソースコードを示し、図５（４）は、ユーザ端末のメモリへのスクリプトプログラムの展開状況を示す。
【００１１】
図４に示すＷｅｂページ１００には、スクリプトプログラムで記述されたアプリケーションであるツールバー１０１及びカレンダー１０２が含まれる。ユーザ端末は、Ｗｅｂページ１００の内容を記述するソースコード（ＨＴＭＬ）を読み込むことで、Ｗｅｂページ１００を閲覧する。図５（１）に示すように、Ｗｅｂページ１００のソースコードでは、ラインＬ２１においてユーザ端末にツールバー１０１を実行するためのスクリプトプログラムを読み出させるとともに、ラインＬ２２においてユーザ端末にカレンダー１０２を実行するためのスクリプトプログラムを読み出させる。
【００１２】
図５（２）に示すツールバー１０１を記述するスクリプトプログラムのソースコードを参照して、ツールバー１０１を記述するスクリプトプログラムは、関数Ａ、関数Ｂを含んで構成され、ラインＬ２３には、関数Ａの定義・処理が記述され、ラインＬ２４には、関数Ｂの定義・処理が記述されている。次に、図５（３）に示すカレンダー１０２を記述するスクリプトプログラムのソースコードを参照して、カレンダー１０２を記述するスクリプトプログラムは、関数Ａ、関数Ｃを含んで構成され、ラインＬ２５には、関数Ａの定義・処理が記述され、ラインＬ２６には、関数Ｂの定義・処理が記述されている。
【００１３】
ユーザ端末では、Ｗｅｂページ１００のソースコードのラインＬ２１において、ツールバー１０１を記述するスクリプトプログラムを読み出す際に、当該スクリプトプログラムを構成する複数の関数をユーザ端末のメモリ上に展開し、続いて、Ｗｅｂページ１００のソースコードのラインＬ２２において、カレンダー１０２を記述するスクリプトプログラムを読み出す際に、当該スクリプトプログラムを構成する複数の関数をユーザ端末のメモリ上に展開する。具体的には、ラインＬ２１においてツールバー１０１を記述するスクリプトプログラムを読み出すと、ユーザ端末のメモリ上には、当該スクリプトプログラムを構成する関数Ａ、関数Ｂが展開され、続く、ラインＬ２２においてカレンダー１０２を記述するスクリプトプログラムを読み出すと、ユーザ端末のメモリ上には、当該スクリプトプログラムを構成する関数Ａ、関数Ｃが展開される。
【００１４】
ここで、スクリプトプログラムでは、アプリケーションの種別に関わらず共通して利用される関数が多数存在する。例えば、ＤＯＭ（Ｄｏｃｕｍｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ）の準備ができたら実行する関数「ｄｏｍＲｅａｄｙ」や、イベントリスナーを登録する関数「ａｄｄＥｖｅｎｔ」などは、多くのアプリケーションで共通して用いられている。Ｗｅｂページ製作者にとってみれば、多くのアプリケーションで共通して用いられる関数の記述を揃え、再利用可能とすることは一般的であり、図５においても、関数Ａは、ツールバー１０１及びカレンダー１０２に共通して用いられ、その記述も同一となっている。
【００１５】
従来のスクリプトプログラムでは、このように共通して用いられる関数がある場合、ユーザ端末のメモリ上に一度展開された関数を上書きしている。すなわち、ラインＬ２１においてツールバー１０１を記述するスクリプトプログラムを構成する関数Ａをメモリ上に一度展開した後、ラインＬ２２においてカレンダー１０２を記述するスクリプトプログラムを構成する関数Ａをメモリ上に再度展開（上書き）している。
【００１６】
アプリケーションの種別に関わらず共通して利用される関数は多数存在し、このような関数をユーザ端末のメモリ上に逐次上書きすることは、Ｗｅｂページの表示の遅延につながっている。ユーザにとっては、Ｗｅｂページで提供されるサービスが重要であり、サービスを選択するためのＷｅｂページは、できるだけ短時間で表示されることが望ましい。
【００１７】
そこで、本発明は、ユーザ端末が、複数のスクリプトプログラムで共通して使用する関数をメモリ上で再展開することを回避することによって、Ｗｅｂページの表示時間を短縮可能なスクリプトプログラムを解釈実行する方法スクリプトプログラム及びユーザ端末を提供することを目的とする。
【課題を解決するための手段】
【００１８】
（１）  ユーザ端末がＷｅｂページ表示時にＷｅｂブラウザによりスクリプトプログラムを解釈実行する方法であって、前記ユーザ端末が、前記ＷｅｂページのＨＴＭＬコードに含まれるかあるいは呼び出されるスクリプトプログラムを前記Ｗｅｂブラウザにより解釈実行するステップと、前記スクリプトプログラムを構成する関数を前記ユーザ端末のメモリ上に展開する際に、当該関数が既に前記メモリ上に展開されているか否かを判別するステップと、前記関数が前記メモリ上に展開されていないことを条件に、当該関数を前記メモリ上に展開するステップと、を含む方法。
【００１９】
（１）の方法によれば、ユーザ端末は、スクリプトプログラムを構成する関数がユーザ端末のメモリ上に展開されているか否かを判別し、未だ展開されていない場合に限り、当該関数をメモリ上に展開する。これにより、端末が複数のスクリプトプログラムを受信する場合において、共通して利用される関数を重ねてメモリ上に展開することを回避でき、Ｗｅｂページを短時間で表示することができる。
【００２０】
（２）  Ｗｅｂページ表示時にユーザ端末のＷｅｂブラウザにより解釈実行されるスクリプトプログラムであって、前記ユーザ端末に、前記スクリプトプログラムを構成する関数を前記ユーザ端末のメモリ上に展開する際に、当該関数が既に前記メモリ上に展開されているか否かを判別するステップと、前記関数が前記メモリ上に展開されていないことを条件に、当該関数を前記メモリ上に展開するステップと、を含むスクリプトプログラム。
【００２１】
（２）のスクリプトプログラムによれば、ユーザ端末は、スクリプトプログラムを構成する関数がユーザ端末のメモリ上に展開されているか否かを判別し、未だ展開されていない場合に限り、当該関数をメモリ上に展開する。これにより、端末が複数のスクリプトプログラムを受信する場合において、共通して利用される関数を重ねてメモリ上に展開することを回避でき、Ｗｅｂページを短時間で表示することができる。
【００２２】
（３）  前記スクリプトプログラムは、前記ＷｅｂページのＨＴＭＬコードに含まれる（２）に記載のスクリプトプログラム。
【００２３】
（３）のスクリプトプログラムによれば、ユーザ端末は、スクリプトプログラムをＨＴＭＬのコードとは別にダウンロードするため、Ｗｅｂページとスクリプトプログラムとの管理が別々に行われているサイトにおいても、（２）のスクリプトプログラムによる効果と同様に、Ｗｅｂページを短時間で表示することができる。
【００２４】
（４）  Ｗｅｂページ表示時にＷｅｂブラウザによりスクリプトプログラムを解釈実行するユーザ端末であって、前記ＷｅｂページのＨＴＭＬのコードに含まれるかあるいは呼び出されるスクリプトプログラムを、前記Ｗｅｂブラウザにより解釈実行する手段と、前記スクリプトプログラムを構成する関数を前記ユーザ端末のメモリ上に展開する際に、当該関数が既に前記メモリ上に展開されているか否かを判別する手段と、前記関数が前記メモリ上に展開されていないことを条件に、当該関数を前記メモリ上に展開する手段と、を含むユーザ端末。
【００２５】
（４）のユーザ端末によれば、（１）と同様の効果を期待することができる。
【発明の効果】
【００２６】
本発明によれば、ユーザ端末が、複数のスクリプトプログラムで共通して使用する関数をメモリ上で再展開することを回避することによって、Ｗｅｂページの表示時間を短縮可能なスクリプトプログラムを実行する方法を提供することができる。
【図面の簡単な説明】
【００２７】
【図１】ユーザ端末によるスクリプトプログラムの実行方法の概要を示す図である。
【図２】スクリプトプログラムのソースコードを示す図である。
【図３】本発明のユーザ端末の処理の流れを示すフローチャートである。
【図４】スクリプトプログラムで記述されたアプリケーションを含むＷｅｂページの表示例を示す図である。
【図５】従来のスクリプトプログラムのソースコードを示す図である。
【発明を実施するための形態】
【００２８】
以下、本発明の実施形態について図１及び図２を参照して説明する。
【００２９】
図１は、本発明のスクリプトプログラムの概要を示す図である。図１を参照して、ユーザ端末１０は、Ｗｅｂサーバ１１及びライブラリサーバ１２と通信可能に接続されている。
Ｗｅｂサーバ１１は、Ｗｅｂページを構成するＨＴＭＬデータ及び各種データ（画像・音声など）を備え、ユーザ端末１０からの要求に基づいて当該データをユーザ端末１０に送信する。ライブラリサーバ１２は、Ｗｅｂページに含まれるアプリケーションデータ（スクリプトプログラムライブラリ）を備え、ユーザ端末１０からの要求に基づいて当該データをユーザ端末１０に送信する。
【００３０】
図１において、ユーザ端末１０にはＷｅｂサーバ１１からＨＴＭＬデータ２が送信されている。このＨＴＭＬデータ２のラインＬ１０には、「ｓｃｒｉｐｔＬｉｂ１．ｊｓ（以下、「スクリプトプログラム１Ａ」とする）」、「ｓｃｒｉｐｔＬｉｂ１．ｊｓ（以下、「スクリプトプログラム１Ｂ」とする）」・・・「ｓｃｒｉｐｔＬｉｂＮ．ｊｓ（以下、「スクリプトプログラム１Ｎ」とする）」を読み出すことが記述されている。ユーザ端末１０では、ＨＴＭＬデータ２に従い、ライブラリサーバ１２からスクリプトプログラム１Ａ、１Ｂ・・・１Ｎを受信し、当該スクリプトプログラム１Ａ，１Ｂ・・・１Ｎをメモリ上に展開する。ここで、スクリプトプログラム１Ａ，１Ｂ・・・１Ｎは、１つのＷｅｂページの中で同時に用いられているアプリケーションを記述するスクリプトプログラム（好適には、ＪａｖａＳｃｒｉｐｔ）であり、以下では、「スクリプトプログラム１」と総称する。
【００３１】
スクリプトプログラム１Ａは、関数Ａ，関数Ｂ，関数Ｃを含んで構成され、スクリプトプログラム１Ｂは、関数Ａ，関数Ｂ，関数Ｄを含んで構成され、スクリプトプログラム１Ｎは、関数Ａ，関数Ｃ，関数Ｄを含んで構成されている。すなわち、関数Ａはスクリプトプログラム１Ａ，１Ｂ，１Ｎに共通する関数であり、関数Ｂはスクリプトプログラム１Ａ，１Ｂに共通する関数であり、関数Ｃはスクリプトプログラム１Ａ，１Ｎに共通する関数であり、関数Ｄはスクリプトプログラム１Ｂ，１Ｎに共通する関数である。
【００３２】
本発明に係るスクリプトプログラム１は、１のＷｅｂページの中で同時に用いられている複数のスクリプトプログラムを構成する関数が共通する場合に、この共通する関数をユーザ端末１０のメモリ上に一度限り展開し、再度上書きすることのない点に特徴を有する。具体的には、スクリプトプログラム１Ｂの展開時において、スクリプトプログラム１Ａで既に展開されている関数Ａ，関数Ｂを展開することがなく、また、スクリプトプログラム１Ｎの展開時において、スクリプトプログラム１Ａ，１Ｂで既に展開されている関数Ａ，関数Ｃ，関数Ｄを展開することがない点に特徴を有する。
【００３３】
図２を参照して、本発明に係るスクリプトプログラム１について説明する。図２に、スクリプトプログラム１を、ＪａｖａＳｃｒｉｐｔで記述したソースコードを示す。スクリプトプログラム１は、ラインＬ１〜Ｌ６に示すように、関数を定義する際に既にこの関数が定義されているか否かを判別する。具体的には、ラインＬ１において、「ｉｆ  （ｔｙｐｅｏｆ  ｆｕｎｃＡ  ＝＝＝”ｕｎｄｅｆｉｎｅｄ”）」と記述し、「ｕｎｄｅｆｉｎｅｄ（ｔｒｕｅ）」である場合、すなわち、関数Ａが未定義である（ユーザ端末１０のメモリ上に展開されていない）場合に限り、関数Ａの定義・処理の記述を展開することとしている。
すなわち、スクリプトプログラム１は、スクリプトプログラム１を構成する関数をユーザ端末１０のメモリ上に展開する際に、当該関数が既にメモリ上に展開されているか否かを判別させるステップと、当該関数がメモリ上に展開されていないことを条件（ｔｒｕｅ）に、当該関数をメモリ上に展開させるステップとを、ユーザ端末１０に対して実行させる。
【００３４】
具体的には、スクリプトプログラム１ＡのソースコードのラインＬ１〜Ｌ３において、関数Ａ，関数Ｂ，関数Ｃがユーザ端末１０のメモリ上に展開されているか否かを判別している。このとき、スクリプトプログラム１Ａの読み出し時には、関数Ａ，関数Ｂ，関数Ｃは未だ展開されていないため「ｔｒｕｅ」となり、関数Ａ，関数Ｂ，関数Ｃがユーザ端末１０のメモリ上に展開される。
同様に、スクリプトプログラム１ＢのソースコードのラインＬ４〜Ｌ６において、関数Ａ，関数Ｂ，関数Ｃがユーザ端末１０のメモリ上に展開されているか否かを判別している。このとき、スクリプトプログラム１Ｂの読み出し時において、関数Ｄは未だ展開されていないため「ｔｒｕｅ」となり、関数Ｃがユーザ端末１０のメモリ上に展開される。一方で、スクリプトプログラム１Ｂの読み出し時には、関数Ａ，関数Ｂは既にユーザ端末１０のメモリ上に展開されているため、「ｆａｌｓｅ」となる。その結果、スクリプトプログラム１Ｂの読み出し時において、関数Ａ，関数Ｂはユーザ端末１０のメモリ上に展開されない。
【００３５】
このように、本発明に係るスクリプトプログラム１では、スクリプトプログラム１を構成する関数のうち、ユーザ端末１０のメモリ上に一度展開された関数が再度展開（上書き）されることが無い。そのため、１つのＷｅｂページに設けられた複数のスクリプトプログラム１に共通する多数の関数を、ユーザ端末１０のメモリ上に重ねて展開することを回避でき、Ｗｅｂページの表示時間を短縮することができる。
【００３６】
続いて、図３を参照して、ユーザ端末１０により行われる処理の流れについて説明する。
【００３７】
Ｓ１、Ｓ２：Ｗｅｂサーバ１１に対するＷｅｂページの要求に伴いＷｅｂサーバ１１からＷｅｂページを構成するＨＴＭＬデータ及び各種データが送信されると、ユーザ端末１０は、ＨＴＭＬのソースコードを解釈する（Ｓ１）。このとき、ＨＴＭＬのソースコード内にスクリプトプログラムを読み出すことが記述されていると、ユーザ端末１０は、ライブラリサーバ１２からスクリプトプログラムをダウンロードする（Ｓ２）。
【００３８】
Ｓ３〜Ｓ６：続いて、ユーザ端末１０は、スクリプトプログラムの記述どおり（ラインごとに）スクリプトプログラムを読み出し、解釈実行する（Ｓ３）。続いて、ユーザ端末１０は、スクリプトプログラムの読み出した部分（関数）が既にメモリ上に展開されているか否かを判定する（Ｓ４）。このとき、当該関数が未だメモリ上に展開されていない場合には、ユーザ端末１０は、この関数をメモリ上に展開し（Ｓ５）。Ｓ５の後、又はＳ４において当該関数が既にメモリ上に展開されていると判定された場合には、ユーザ端末１０は、続いて、スクリプトプログラムの全てを読み出したか否かを判定する（Ｓ６）。このとき、未だ読み出していない部分がある場合には、ユーザ端末１０は、スクリプトプログラムの残りの部分を読み出し、解釈実行する。他方、スクリプトプログラムの全てを読み出した場合には、ユーザ端末１０は、処理を終了する。
【００３９】
なお、ユーザ端末１０のハードウェアは、一般的なコンピュータによって構成することができる。一般的なコンピュータは、例えば、制御部として、中央処理装置（ＣＰＵ）を備える他、記憶部として、メモリ（ＲＡＭ、ＲＯＭ）、ハードディスク（ＨＤＤ）及び光ディスク（ＣＤ、ＤＶＤなど）を、ネットワーク通信装置として、各種有線及び無線ＬＡＮ装置を、表示装置として、例えば、液晶ディスプレイ、プラズマディスプレイなどの各種ディスプレイを、入力装置として、例えば、キーボード及びポインティング・デバイス（マウス、トラッキングボールなど）を適宜備え、これらは、バスラインにより接続されている。このような一般的なコンピュータにおいて、ＣＰＵは、ユーザ端末１０を統括的に制御し、各種プログラムを適宜読み出して実行することにより、上述したハードウェアと協働し、本発明に係る各種機能を実現している。
【００４０】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施例に記載されたものに限定されるものではない。
【００４１】
例えば、上記実施形態では、Ｗｅｂサーバ１１及びライブラリサーバ１２を独立した個別のサーバとしているが、Ｗｅｂサーバ１１及びライブラリサーバ１２を１つのサーバで実現することとしてもよい。
また、上記実施形態では、スクリプトプログラム１をＨＴＭＬデータ２とは別に設け、ｓｒｃタグを用いて読み出すこととしているが、スクリプトプログラム１をＨＴＭＬデータ内に記述することとしてもよい。
さらに、上記実施形態では、スクリプトプログラムをＪａｖａＳｃｒｉｐｔで記述したが、スクリプトプログラム言語であれば、ＪａｖａＳｃｒｉｐｔに限られず、例えば、ＶＢスクリプトやＸＵＬなどであってもよい。
【符号の説明】
【００４２】
１Ａ，１Ｂ，１Ｎ  スクリプトプログラム
Ｌ１，Ｌ２，Ｌ３，Ｌ４，Ｌ５，Ｌ６  ライン
１０  ユーザ端末
１１  Ｗｅｂサーバ
１２  ライブラリサーバ
【図１】
2012032938.tif 000003
【図２】
2012032938.tif 000004
【図３】
2012032938.tif 000005
【図４】
2012032938.tif 000006
【図５】
2012032938.tif 000007