(57)【特許請求の範囲】
【請求項１】
動作処理を記述するスクリプト言語のプログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部と、
実行予定の前記プログラムの識別情報と前記判定情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する取得先抽出部と、
前記取得先抽出部が抽出した取得先から前記代替プログラムを取得する取得部と、
を有する情報処理装置であって、
前記判定情報記憶部は、
前記プログラムの内容と前記代替プログラムの取得先とを対応付けた判定情報とを記憶し、
前記取得先抽出部は、
前記判定情報記憶部が記憶するプログラムの内容のうち、前記取得部が取得した代替プログラムの内容と一致しているプログラムの内容に対応する代替プログラムの取得先をさらに抽出し、
前記取得部は、
前記取得先抽出部が抽出した取得先から他の代替プログラムを取得し、
前記実行予定のプログラムを、前記取得部が取得した他の代替プログラムに置き換え、置き換えた代替プログラムを実行する制御部と、
を備えることを特徴とする情報処理装置。
【請求項２】
動作処理を記述するスクリプト言語のプログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部と、
実行予定の前記プログラムの識別情報と前記判定情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する取得先抽出部と、
前記取得先抽出部が抽出した取得先から前記代替プログラムを取得する取得部と、
を有する情報処理装置であって、
前記判定情報記憶部は、
所定の命令文で用いられる対象の名称と前記代替プログラムの取得先とを対応付けた判定情報とを記憶し、
前記取得先抽出部は、
前記判定情報記憶部が記憶する対象の名称のうち、前記取得部が取得した代替プログラムから抽出された対象の名称に対応する代替プログラムの取得先をさらに抽出し、
前記取得部は、
前記取得先抽出部が抽出した取得先から他の代替プログラムを取得し、
前記実行予定のプログラムを、前記取得部が取得した他の代替プログラムに置き換え、置き換えた代替プログラムを実行する制御部と、
を備えることを特徴とする情報処理装置。
【請求項３】
前記代替プログラムは、情報処理装置の情報処理能力に応じたプログラムであることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記代替プログラムは、情報処理装置の種類に応じたプログラムであることを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記情報処理装置は、プログラムを実行して画像を表示する表示装置であり、
前記代替プログラムは、情報処理装置の動画の再生能力に応じたプログラムであることを特徴とする請求項３に記載の情報処理装置。
【請求項６】
前記判定情報記憶部が記憶するプログラムの内容は、当該プログラムの内容を変換した文字列で表され、
前記取得先抽出部は、
前記判定情報記憶部が記憶するプログラムの内容のうち、前記取得部が取得した代替プログラムの内容を変換した変換データと一致している変換データに対応する代替プログラムの取得先をさらに抽出することを特徴とする請求項１に記載の情報処理装置。
【請求項７】
前記命令文は、変数に値を代入する代入文であることを特徴とする請求項２に記載の情報処理装置。
【請求項８】
前記命令文は、関数を定義する定義文であることを特徴とする請求項２に記載の情報処理装置。
【請求項９】
前記判定情報を更新することを特徴とする請求項１から８のいずれかに記載の情報処理装置。
【請求項１０】
前記取得部は、外部の装置から前記代替プログラムを取得することを特徴とする請求項１から９のいずれかに記載の情報処理装置。
【請求項１１】
前記プログラムは、ライブラリで提供されるプログラムであることを特徴とする請求項１から１０のいずれかに記載の情報処理装置。
【請求項１２】
前記プログラムは、Ｊａｖａｓｃｒｉｐｔ言語のプログラムであることを特徴とする請求項１から１１のいずれかに記載の情報処理装置。
【請求項１３】
動作処理を記述するスクリプト言語のプログラムを実行する情報処理装置における情報処理方法において、
前記情報処理装置が、
前記プログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部に記憶された判定情報と、実行予定の前記プログラムの識別情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する過程と、
前記抽出された取得先から前記代替プログラムを取得する過程と、
前記プログラムの内容と前記代替プログラムの取得先とを対応付けた判定情報とを記憶する判定情報記憶部が記憶するプログラムの内容のうち、前記取得した代替プログラムの内容と一致しているプログラムの内容に対応する代替プログラムの取得先をさらに抽出する過程と、
さらに抽出された取得先から他の代替プログラムを取得する過程と、
前記実行予定のプログラムを、前記他の代替プログラムに置き換え、置き換えた代替プログラムを実行する過程と、
を有することを特徴とする情報処理方法。
【請求項１４】
動作処理を記述するスクリプト言語のプログラムを実行する情報処理装置における情報処理方法において、
前記情報処理装置が、
前記プログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部に記憶された判定情報と、実行予定の前記プログラムの識別情報と前記判定情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する過程と、
前記抽出された取得先から前記代替プログラムを取得する過程と、
所定の命令文で用いられる対象の名称と前記代替プログラムの取得先とを対応付けた判定情報とを記憶する判定情報記憶部が記憶する対象の名称のうち、前記取得された代替プログラムから抽出された対象の名称に対応する代替プログラムの取得先をさらに抽出する過程と、
さらに抽出された取得先から他の代替プログラムを取得する過程と、
前記実行予定のプログラムを、前記抽出された他の代替プログラムに置き換え、置き換えた代替プログラムを実行する過程と、
を有することを特徴とする情報処理方法。
【請求項１５】
動作処理を記述するスクリプト言語のプログラムを実行する情報処理装置のコンピュータに、
前記プログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部に記憶された判定情報と、実行予定の前記プログラムの識別情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する手順、
前記抽出された取得先から前記代替プログラムを取得する手順、
前記プログラムの内容と前記代替プログラムの取得先とを対応付けた判定情報とを記憶する判定情報記憶部が記憶するプログラムの内容のうち、前記取得した代替プログラムの内容と一致しているプログラムの内容に対応する代替プログラムの取得先をさらに抽出する手順、
さらに抽出された取得先から他の代替プログラムを取得する手順、
前記実行予定のプログラムを、前記他の代替プログラムに置き換え、置き換えた代替プログラムを実行する手順、
を実行させるための情報処理プログラム。
【請求項１６】
動作処理を記述するスクリプト言語のプログラムを実行する情報処理装置のコンピュータに、
前記プログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部に記憶された判定情報と、実行予定の前記プログラムの識別情報と前記判定情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する手順、
前記抽出された取得先から前記代替プログラムを取得する手順、
所定の命令文で用いられる対象の名称と前記代替プログラムの取得先とを対応付けた判定情報とを記憶する判定情報記憶部が記憶する対象の名称のうち、前記取得された代替プログラムから抽出された対象の名称に対応する代替プログラムの取得先をさらに抽出する手順、
さらに抽出された取得先から他の代替プログラムを取得する手順、
前記実行予定のプログラムを、前記抽出された他の代替プログラムに置き換え、置き換えた代替プログラムを実行する手順、
を実行させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【０００２】
従来、情報処理装置では、予め情報処理装置にインストールされたソフトウエアを実行して様々なアプリケーション（ローカルアプリケーション）を提供していた。しかし、近年では、情報処理装置がＷｅｂサーバ等と通信し、Ｗｅｂサーバと情報処理装置とが一体となってアプリケーション（Ｗｅｂアプリケーション）を提供することがある。
具体的に、Ｗｅｂアプリケーションは、従来のローカルアプリケーションにおけるソフトウエアに代えて、Ｗｅｂサーバ側のソフトウエアとＷｅｂクライアント（情報処理装置、例えば、Ｗｅｂブラウザ機能を有するＷｅｂブラウザ端末）側のソフトウエアを実行することによって提供される。提供に際しては、Ｗｅｂサーバ側のソフトウエアは主にデータ処理を実行し、Ｗｅｂクライアント側のソフトウエアは画面表示やユーザによる操作に関する処理を実行する分担になっていることが多い。
ここで、Ｗｅｂクライアント側のソフトウエアは、Ｗｅｂブラウザ端末で実行されるソフトウエアである。なお、Ｗｅｂクライアント側のソフトウエアには、従来の静的なＨＴＭＬコンテンツと異なり、アプリケーションとして動作するための動的なコンテンツを提供するソフトウエアが含まれる。また、Ｗｅｂクライアント側のソフトウエアは、例えばＪａｖａｓｃｒｉｐｔ（登録商標。以下同じ）言語のようなスクリプト言語で記述されたプログラム（ＪＳプログラムという）を、Ｗｅｂブラウザ機能の一部として実行する。具体的には、ＪＳプログラムは、Ｗｅｂサーバ側で保持され、Ｗｅｂアプリケーション実行時にＷｅｂクライアント側へダウンロードされた後、Ｗｅｂブラウザ機能の一部として実行される。
【０００３】
以上のように、Ｗｅｂアプリケーションを作成する場合、Ｗｅｂクライアント側のソフトウエアとしてＪａｖａｓｃｒｉｐｔ言語を用いてアプリケーションの機能を実装するが、その際、複数のＷｅｂアプリケーション間で流用が可能な機能を実装することが多くなっている。このため、共通利用できる機能を「ライブラリ」としてまとめ、再利用による作成の効率化が図られている。Ｊａｖａｓｃｒｉｐｔ言語で作成された汎用のライブラリとしては、例えばｐｒｏｔｏｔｙｐｅ．ｊｓ（ｈｔｔｐ：／／ｗｗｗ．ｐｒｏｔｏｔｙｐｅｊｓ．ｏｒｇ）やｊｑｕｅｒｙ．ｊｓ（ｈｔｔｐ：／／ｊｑｕｅｒｙ．ｃｏｍ）などが存在する。
これらライブラリとして用意されたＪＳプログラムを利用する際には、ライブラリ毎に定められたＡＰＩ(Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ)を用いる。ＡＰＩとは、命令や関数の集合を利用するためのプログラム上の手続きを定めた規約の集合であり、ＪＳプログラムでは規約に従ってライブラリが提供する機能を呼び出す。例えば、上述のｐｒｏｔｏｔｙｐｅ．ｊｓやｊｑｕｅｒｙ．ｊｓなどのライブラリについても、その機能を利用するＡＰＩが定められ、公開されている。
【０００４】
ところで、例えば、ＰＣ（パーソナルコンピュータ）上のＷｅｂブラウザで実行する事を想定したＪＳプログラムを、ＰＣと機能（画面の大きさや情報処理能力等）が異なる携帯電話装置上のＷｅｂブラウザ機能の一部として実行する場合を考える。このとき、ＪＳプログラムの作成時に携帯電話装置での利用が想定されていなかった場合、表示画面の大きさや画面描画速度の違い、入力操作手段の差などによって、Ｗｅｂアプリケーションを快適に利用できない場合が発生することがある。
この問題に対して、Ｗｅｂアプリケーションの画面表示内容については、従来の静的なＨＴＭＬコンテンツの場合と同様に、携帯電話装置上のＷｅｂブラウザで「ユーザＣＳＳ（Ｃａｓｃａｄｉｎｇ  Ｓｔｙｌｅ  Ｓｈｅｅｔｓ）」を設定することで、その携帯電話装置の表示画面のサイズに応じた表示に合わせて修正することが知られている。ＣＣＳとは、ＨＴＭＬやＸＭＬで記載されたプログラムをどのように修飾して表示するかを指示する仕様である。
【０００５】
しかし、例えばＰＣ上のＷｅｂブラウザで実行する際にはユーザ操作における利便性を提供していたアニメーション処理なども、描画速度が遅い情報処理装置上のＷｅｂブラウザで実行すると、操作における反応性の低下を引き起こしてしまう。また、例えばＰＣ上のＷｅｂブラウザで実行する際には画面上にポップアップ表示する情報提示の方法も、表示画面が狭い携帯電話装置上のＷｅｂブラウザで実行すると、画面の表示範囲をはみ出してしまい情報提示としての役目を果せない場合がある。
この問題に対して、特許文献１には、個々の端末がそれぞれ異なる処理性能、表示能力、ネット通信頻度を持ち、サーバが個々の端末の前記情報を保持管理するシステムについて記載されている。このシステムでは、サーバが保持管理している個々の端末の情報に基づいて個々の端末毎に適切な処理スクリプトを供給し、端末は供給された処理スクリプトをサーバからダウンロードして実行する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２００４−５０６２８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１記載の技術では、アプリケーションを提供する装置各々が、情報処理装置の種類に応じて異なる処理スクリプトを供給する必要があるという欠点があった。特にＷｅｂアプリケーションの提供者と情報処理装置の製造者とが異なる場合、Ｗｅｂアプリケーション提供者が情報処理装置の製造者の要望に応えた動作をするＷｅｂアプリケーションを提供できない場合がある。
【０００８】
本発明は上記の点に鑑みてなされたものであり、情報処理装置に応じた動作をするアプリケーションを提供することができる情報処理装置、情報処理方法、及び情報処理プログラムを提供する。
【課題を解決するための手段】
【０００９】
（１）本発明は上記の課題を解決するためになされたものであり、本発明は、動作処理を記述するスクリプト言語のプログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部と、実行予定の前記プログラムの識別情報と前記判定情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する取得先抽出部と、前記取得先抽出部が抽出した取得先から前記代替プログラムを取得する取得部と、を有する情報処理装置であって、前記判定情報記憶部は、前記プログラムの内容と前記代替プログラムの取得先とを対応付けた判定情報とを記憶し、前記取得先抽出部は、前記判定情報記憶部が記憶するプログラムの内容のうち、前記取得部が取得した代替プログラムの内容と一致しているプログラムの内容に対応する代替プログラムの取得先をさらに抽出し、前記取得部は、前記取得先抽出部が抽出した取得先から他の代替プログラムを取得し、前記実行予定のプログラムを、前記取得部が取得した他の代替プログラムに置き換え、置き換えた代替プログラムを実行する制御部と、を備えることを特徴とする情報処理装置である。
【００１０】
（２）また、本発明は、動作処理を記述するスクリプト言語のプログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部と、実行予定の前記プログラムの識別情報と前記判定情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する取得先抽出部と、前記取得先抽出部が抽出した取得先から前記代替プログラムを取得する取得部と、を有する情報処理装置であって、前記判定情報記憶部は、所定の命令文で用いられる対象の名称と前記代替プログラムの取得先とを対応付けた判定情報とを記憶し、前記取得先抽出部は、前記判定情報記憶部が記憶する対象の名称のうち、前記取得部が取得した代替プログラムから抽出された対象の名称に対応する代替プログラムの取得先をさらに抽出し、前記取得部は、前記取得先抽出部が抽出した取得先から他の代替プログラムを取得し、前記実行予定のプログラムを、前記取得部が取得した他の代替プログラムに置き換え、置き換えた代替プログラムを実行する制御部と、を備えることを特徴とする情報処理装置である。
【００１１】
（３）また、本発明は、上記の情報処理装置において、前記代替プログラムは、情報処理装置の情報処理能力に応じたプログラムであることを特徴とする。
【００１２】
（４）また、本発明は、上記の情報処理装置において、前記代替プログラムは、情報処理装置の種類に応じたプログラムであることを特徴とする。
【００１３】
（５）また、本発明は、上記の情報処理装置において、前記情報処理装置は、プログラムを実行して画像を表示する表示装置であり、前記代替プログラムは、情報処理装置の動画の再生能力に応じたプログラムであることを特徴とする。
【００１４】
（６）また、本発明は、上記の情報処理装置において、前記判定情報記憶部が記憶するプログラムの内容は、当該プログラムの内容を変換した文字列で表され、前記取得先抽出部は、前記判定情報記憶部が記憶するプログラムの内容のうち、前記取得部が取得した代替プログラムの内容を変換した変換データと一致している変換データに対応する代替プログラムの取得先をさらに抽出することを特徴とする。
【００１５】
（７）また、本発明は、上記の情報処理装置において、前記命令文は、変数に値を代入する代入文であることを特徴とする。
【００１６】
（８）また、本発明は、上記の情報処理装置において、前記命令文は、関数を定義する定義文であることを特徴とする。
【００１７】
（９）また、本発明は、上記の情報処理装置において、前記判定情報を更新することを特徴とする。
【００１８】
（１０）また、本発明は、上記の情報処理装置において、前記取得部は、外部の装置から前記代替プログラムを取得することを特徴とする。
【００１９】
（１１）また、本発明は、上記の情報処理装置において、前記プログラムは、ライブラリで提供されるプログラムであることを特徴とする。
【００２０】
（１２）また、本発明は、上記の情報処理装置において、前記プログラムは、Ｊａｖａｓｃｒｉｐｔ言語のプログラムであることを特徴とする。
【００２１】
（１３）また、本発明は、動作処理を記述するスクリプト言語のプログラムを実行する情報処理装置における情報処理方法において、前記情報処理装置が、前記プログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部に記憶された判定情報と、実行予定の前記プログラムの識別情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する過程と、前記抽出された取得先から前記代替プログラムを取得する過程と、前記プログラムの内容と前記代替プログラムの取得先とを対応付けた判定情報とを記憶する判定情報記憶部が記憶するプログラムの内容のうち、前記取得した代替プログラムの内容と一致しているプログラムの内容に対応する代替プログラムの取得先をさらに抽出する過程と、さらに抽出された取得先から他の代替プログラムを取得する過程と、前記実行予定のプログラムを、前記他の代替プログラムに置き換え、置き換えた代替プログラムを実行する過程と、を有することを特徴とする情報処理方法である。
【００２２】
（１４）また、本発明は、動作処理を記述するスクリプト言語のプログラムを実行する情報処理装置における情報処理方法において、前記情報処理装置が、前記プログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部に記憶された判定情報と、実行予定の前記プログラムの識別情報と前記判定情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する過程と、前記抽出された取得先から前記代替プログラムを取得する過程と、所定の命令文で用いられる対象の名称と前記代替プログラムの取得先とを対応付けた判定情報とを記憶する判定情報記憶部が記憶する対象の名称のうち、前記取得された代替プログラムから抽出された対象の名称に対応する代替プログラムの取得先をさらに抽出する過程と、さらに抽出された取得先から他の代替プログラムを取得する過程と、前記実行予定のプログラムを、前記抽出された他の代替プログラムに置き換え、置き換えた代替プログラムを実行する過程と、を有することを特徴とする情報処理方法である。
【００２３】
（１５）また、本発明は、動作処理を記述するスクリプト言語のプログラムを実行する情報処理装置のコンピュータに、前記プログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部に記憶された判定情報と、実行予定の前記プログラムの識別情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する手順、前記抽出された取得先から前記代替プログラムを取得する手順、前記プログラムの内容と前記代替プログラムの取得先とを対応付けた判定情報とを記憶する判定情報記憶部が記憶するプログラムの内容のうち、前記取得した代替プログラムの内容と一致しているプログラムの内容に対応する代替プログラムの取得先をさらに抽出する手順、さらに抽出された取得先から他の代替プログラムを取得する手順、前記実行予定のプログラムを、前記他の代替プログラムに置き換え、置き換えた代替プログラムを実行する手順、を実行させるための情報処理プログラムである。
【００２４】
（１６）また、本発明は、動作処理を記述するスクリプト言語のプログラムを実行する情報処理装置のコンピュータに、前記プログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部に記憶された判定情報と、実行予定の前記プログラムの識別情報と前記判定情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する手順、前記抽出された取得先から前記代替プログラムを取得する手順、所定の命令文で用いられる対象の名称と前記代替プログラムの取得先とを対応付けた判定情報とを記憶する判定情報記憶部が記憶する対象の名称のうち、前記取得された代替プログラムから抽出された対象の名称に対応する代替プログラムの取得先をさらに抽出する手順、さらに抽出された取得先から他の代替プログラムを取得する手順、前記実行予定のプログラムを、前記抽出された他の代替プログラムに置き換え、置き換えた代替プログラムを実行する手順、を実行させるための情報処理プログラムである。
【発明の効果】
【００３１】
本発明によれば、情報処理装置各々に応じた動作をするアプリケーションを提供することができる。
【図面の簡単な説明】
【００３２】
【図１】本発明の第１の実施形態に係る情報処理システムを示す概念図である。
【図２】本実施形態に係るＷｅｂブラウザ端末のハードウェア構成を示す概略ブロック図である。
【図３】本実施形態に係るＷｅｂブラウザ端末の論理的な構成を示す概略ブロック図である。
【図４】本実施形態に係る代替ＪａｖａｓｃｒｉｐｔファイルのＪＳプログラムの一例を示す概略図である。
【図５】本実施形態に係るＷｅｂブラウザアプリケーションを表わすオブジェクト図である。
【図６】Ｗｅｂブラウザアプリケーションの実行動作の一例を示すシーケンス図である。
【図７】本実施形態に係るＷｅｂブラウザアプリケーションの実行動作の一例を示すシーケンス図である。
【図８】本実施形態に係るＵＲＩ判定情報テーブルの一例を示す概略図である。
【図９】本実施形態に係る代替ＵＲＩ処理の一例を示すフローチャートである。
【図１０】本実施形態の変形例１に係るＵＲＩ判定情報テーブルの一例を示す概略図である。
【図１１】本実施形態の変形例２に係るＵＲＩ判定情報テーブルの一例を示す概略図である。
【図１２】本発明の第２の実施形態に係るＷｅｂブラウザ端末の論理的な構成を示す概略ブロック図である。
【図１３】本実施形態に係るＷｅｂブラウザアプリケーションを表わすオブジェクト図である。
【図１４】本実施形態に係るＷｅｂブラウザアプリケーションの実行動作の一例を示すシーケンス図である。
【図１５】本実施形態に係るデータ判定情報テーブルの一例を示す概略図である。
【図１６】本実施形態に係るデータファイルの一例を示す概略図である。
【図１７】本実施形態に係るデータファイルの別の一例を示す概略図である。
【図１８】本実施形態に係る代替データ処理の一例を示すフローチャートである。
【図１９】本実施形態の変形例３に係るデータ判定情報テーブルの一例を示す概略図である。
【図２０】本発明の第３の実施形態に係るＷｅｂブラウザ端末の論理的な構成を示す概略ブロック図である。
【図２１】本実施形態に係るＷｅｂブラウザアプリケーションを表わすオブジェクト図である。
【図２２】本実施形態に係る本実施形態に係るＷｅｂブラウザアプリケーションの実行動作の一例を示すシーケンス図である。
【図２３】本実施形態に係るモジュール判定情報テーブルの一例を示す概略図である。
【図２４】本実施形態に係る代替モジュール処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００３３】
（第１の実施形態）
以下、図面を参照しながら本発明の実施形態について詳しく説明する。
図１は、本発明の第１の実施形態に係る情報処理システムを示す概念図である。図１において、情報処理システムは、ＷｅｂサーバＡ１、ＷｅｂサーバＢ１、Ｗｅｂブラウザ端末Ｃ１１、Ｃ１２、・・・（各々をＷｅｂブラウザ端末Ｃ１という）を具備する。ネットワークＮ１はインターネットやＬＡＮ等のネットワークであり、ＷｅｂサーバＡ１、ＷｅｂサーバＢ１、及びＷｅｂブラウザ端末Ｃ１はネットワークＮ１を介して無線又は有線で接続され、互いに通信を行う。
【００３４】
ＷｅｂサーバＡ１は、Ｗｅｂサイトａ１として提供するサイト情報を記憶する。具体的には、ＷｅｂサーバＡ１は、サイト情報として、ＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）で記述されたプログラムが記載されたｈｔｍｌファイルａ１１、ＨＴＭＬファイルをどのように修飾して表示するかを指示する仕様のプログラムが記載されたＣＳＳ（Ｃａｓｃａｄｉｎｇ  Ｓｔｙｌｅ  Ｓｈｅｅｔｓ）ファイルａ１２、及び、主にＷｅｂブラウザ上での動的処理（例えば、ＨＴＭＬの動的書き換えや入力フォームでの入力文字の自動補完）を記述するプログラムが記載されたＪａｖａｓｃｒｉｐｔファイル（以下、ＪＳファイルという）ａ１３を記憶する。
【００３５】
なお、ＪＳファイルａ１３のプログラムは、Ｊａｖａｓｃｒｉｐｔ言語で記載されている（以下、Ｊａｖａｓｃｒｉｐｔ言語で記載されたプログラムをＪＳプログラムという）。ＪＳファイルは、複数の共通利用できるＪＳプログラムをまとめた汎用のライブラリ（ＪＳライブラリという）として用いられる。ＪＳライブラリとして用意されたＪＳプログラムを利用する際には、ＪＳライブラリ毎に定められたＡＰＩ(Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ)を用いる。ＡＰＩとは、命令や関数の集合を利用するためのプログラム上の手続きを定めた規約の集合である。また、ＷｅｂサーバＡ１が提供するＷｅｂサイトａ１は、一般的なＷｅｂアプリケーションを提供しているＷｅｂサイトである。
なお、ＨＴＭＬとは、Ｗｅｂページを記述するためのマークアップ言語でありＷ３Ｃが規格を作成している。また、ＣＳＳファイルａ１２も複数の共通利用できるプログラムをまとめた汎用のライブラリであり、ＡＰＩを用いて利用される。
【００３６】
ＷｅｂサーバＡ１は、Ｗｅｂブラウザ端末Ｃ１からの要求に応じて、記憶するサイト情報をネットワークＮ１を介してＷｅｂブラウザ端末Ｃ１へ送信する。具体的には、Ｗｅｂブラウザ端末Ｃ１は、Ｗｅｂサイトａ１に割り当てられているＵＲＩ(Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ；統一書式資源識別子)を指定し、ＷｅｂサーバＡ１にサイト情報を要求する。ここで、ＵＲＩとは、ネットワーク上であるか端末上であるかを問わず、統一した書式でファイルなどのリソースの所在を記述する方法である。例えば、インターネットで広く用いられているＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）がＵＲＩに含まれる。
【００３７】
ＷｅｂサーバＢ１は、Ｗｅｂサイトｂ１として提供する代替ＪＳファイル（ＷｅｂサーバＢ１が記憶する代替ＪＳファイルを、Ｗｅｂ代替ＪＳファイルｂ１１という）を記憶する。ここで、代替ＪＳファイルは、複数の共通利用できるＪＳプログラムをまとめた汎用のＪＳライブラリ（代替ライブラリという）として用いられる。ただし、この代替ライブラリの利用に用いるＡＰＩはＪＳライブラリの利用に用いるＡＰＩと同等のインタフェースであるが、それぞれのＡＰＩが提供するＪＳプログラムの内容は異なり（図３参照）、それぞれのＪＳプログラムが実行された場合の動作処理も異なる。
【００３８】
ＷｅｂサーバＢ１は、Ｗｅｂブラウザ端末Ｃ１からのＡＰＩを用いた要求に応じて、代替ライブラリからＪＳプログラムを読み出し、ネットワークＮ１を介してＷｅｂブラウザ端末Ｃ１へ送信する。ここで、Ｗｅｂブラウザ端末Ｃ１は、Ｗｅｂサイトｂ１に割り当てられているＵＲＩ（このＵＲＩはＷｅｂサイトａ１のものと異なる）を指定して、Ｗｅｂサイトｂ１が提供するＡＰＩを利用する。
【００３９】
Ｗｅｂブラウザ端末Ｃ１は、Ｗｅｂブラウザ機能を有する端末である。ここで、Ｗｅｂブラウザ機能とは、ＨＴＭＬやＪａｖａｓｃｒｉｐｔ等で記載されたＷｅｂページを表示する機能である。Ｗｅｂブラウザ端末Ｃ１は、ＷｅｂサーバＡ１からＨＴＭＬファイルをダウンロードし、ＡＰＩを用いてダウンロードしたＣＳＳのプログラムやＪＳプログラムを利用して、Ｗｅｂページを表示する。
ここで、Ｗｅｂブラウザ端末Ｃ１は、ＡＰＩを用いるとき、ＪＳライブラリのＡＰＩを用いるか、代替ライブラリのＡＰＩを用いるかを判定し、判定結果に基づいて、ＷｅｂサーバＡ１又はＢ１のいずれかが提供するＡＰＩを用いてＪＳプログラムを利用する。
【００４０】
＜Ｗｅｂブラウザ端末Ｃ１の構成について＞
図２は、本実施形態に係るＷｅｂブラウザ端末Ｃ１のハードウェア構成を示す概略ブロック図である。この図において、Ｗｅｂブラウザ端末Ｃ１は、ＣＰＵ（央演算処理装置）ｃ１０１、メモリ（主記憶装置）ｃ１０２、外部記憶部ｃ１０３、入力部ｃ１０４、表示部ｃ１０５、通信部ｃ１０６、及びデータバスｃ１０７を含んで構成される。
【００４１】
ＣＰＵ  ｃ１０１は、メモリｃ１０２から読み出した情報を実行し、各部を制御する。例えば、ＣＰＵ  ｃ１０１は、メモリｃ１０２からＷｅｂブラウザアプリケーションｆ１を読み出して実行することで、通信部ｃ１０６から入力されたＷｅｂページ（例えば、図１のｈｔｍｌファイルａ１１）の表示データを生成して表示部ｃ１０５へ出力する。また、入力部ｃ１０４から入力されたデータを演算処理し、通信部ｃ１０６からネットワークＮ１を介して外部の装置（例えば、図１のＷｅｂサーバＡ１）に送信する。
【００４２】
メモリｃ１０２は、ＣＰＵ  ｃ１０１が実行をするソフトウエアプログラムやこのプログラムが使用するデータ等の情報を一時的に記憶する。メモリｃ１０２が記憶する情報は、予め記憶する情報、又は、外部記憶部ｃ１０３、入力部ｃ１０４、或いは通信部ｃ１０６から書き込まれる。メモリｃ１０２は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の半導体記憶装置である。
外部記憶部ｃ１０３は、ソフトウエアプログラムやこのプログラムが使用するデータファイル等の情報を記憶する。例えば、外部記憶部ｃ１０３は、代替ＪＳファイル（Ｗｅｂブラウザ端末Ｃ１が記憶する代替ＪＳファイルをローカル代替ＪＳファイルｆ２という）を予め記憶する。外部記憶部ｃ１０３は、例えば、不揮発性半導体記憶装置や、ハードディスク装置である。
【００４３】
入力部ｃ１０４は、Ｗｅｂブラウザ端末Ｃ１を操作するユーザからの入力を受け付ける。入力部ｃ１０４は、受け付けた入力に基づいて生成した情報をメモリｃ１０２に書き込む。入力部ｃ１０４は、例えば、キーボードやマウス、タッチパネル等である。
表示部ｃ１０５は、ＣＰＵ  ｃ１０１の演算処理結果の情報（表示データ）を取得し、その情報をＷｅｂブラウザで表示する。表示部ｃ１０５は、例えば、液晶ディスプレイやＣＲＴ（カソード・レイ・チューブ）モニタである。
【００４４】
通信部ｃ１０６は、ＣＰＵ  ｃ１０１の演算処理結果の情報をネットワークＮ１を介して他の装置に送信する。また、通信部ｃ１０６は、他の装置からネットワークＮ１を介して受信した情報をメモリｃ１０２又は外部記憶部ｃ１０３に書き込む。通信部ｃ１０６は、有線又は無線の送受信装置である。
データバスｃ１０７は、ＣＰＵ  ｃ１０１、メモリｃ１０２、外部記憶部ｃ１０３、入力部ｃ１０４、表示部ｃ１０５、及び通信部ｃ１０６を相互に接続し、情報を交換するための経路である。
【００４５】
図３は、本実施形態に係るＷｅｂブラウザ端末Ｃ１の論理的な構成を示す概略ブロック図である。この図において、Ｗｅｂブラウザ端末Ｃ１（情報処理装置）は、入力部ｃ１０４、通信部ｃ１０６、表示制御部ｃ１１１（制御部）、表示部ｃ１０５、スクリプト取得部ｃ１１２（取得部）、外部記憶部ｃ１０３、及び代替判定部ｃ１２を含んで構成される。ここで、代替判定部ｃ１２は、判定情報記憶部ｃ１２１（取得先抽出部）及びＵＲＩ判定部ｃ１２２を含んで構成される。なお、図３において図２と同じ符号を付した構成は、図２と同じ機能を有する。
【００４６】
通信部ｃ１０６は、入力部ｃ１０４から入力された情報（例えば、ＵＲＩ）に基づいて、他の通信装置と通信を行う。通信部ｃ１０６は、通信で取得したファイル（ｈｔｍｌファイルａ１１等）を表示制御部ｃ１１１に出力する。
また、通信部ｃ１０６は、スクリプト取得部ｃ１１２から入力されたリソース取得先ＵＲＩが示す通信装置へアクセスし、図１のＷｅｂ代替ＪＳファイルｂ１１又はＪＳファイルａ１３を取得する。通信部ｃ１０６は、取得したＷｅｂ代替ＪＳファイルｂ１１及びＪＳファイルａ１３をスクリプト取得部ｃ１１２に出力する。
【００４７】
表示制御部ｃ１１１は、通信部ｃ１０６から入力されたファイルから、ＪＳファイルａ１３等の所在を示すＵＲＩ（リソースＵＲＩ；プログラムの識別情報）を抽出（例えば、ＨＴＭＬファイル中の「ｓｃｒｉｐｔ」タグの属性「ｓｒｃ」の値を抽出）してＵＲＩ判定部ｃ１２２に出力する。
表示制御部ｃ１１１は、ＵＲＩ判定部ｃ１２２から入力されたリソース取得先ＵＲＩをスクリプト取得部ｃ１１２に出力する。表示制御部ｃ１１１は、スクリプト取得部ｃ１１２から入力されたＷｅｂ代替ＪＳファイルｂ１１、ＪＳファイルａ１３、又は、ローカル代替ＪＳファイルｆ２のＪＳプログラムを用いて、通信部ｃ１０６から入力されたファイルのプログラムを実行する。表示制御部ｃ１１１は、プログラムの実行結果の画像情報を表示部ｃ１０５に出力する。
【００４８】
判定情報記憶部ｃ１２１は、ＵＲＩ判定情報テーブル（図８）を記憶する。ＵＲＩ判定情報テーブルは、リソースＵＲＩ、及び、Ｗｅｂ代替ＪＳファイルｂ１１、又はローカル代替ＪＳファイルｆ２の所在を示す代替ＵＲＩを対応付けたテーブルである。なお、リソースＵＲＩに対応付けられた代替ＵＲＩの代替ＪＳファイルのＪＳプログラムは、Ｗｅｂブラウザ端末Ｃ１各々の情報処理能力（Ｗｅｂブラウザ端末Ｃ１の種類や動画の再生能力（Ｗｅｂブラウザの種類））に応じたプログラムである。
ＵＲＩ判定部ｃ１２２は、判定情報記憶部ｃ１２１が記憶するＵＲＩ判定情報テーブルの情報と、表示制御部ｃ１１１から入力されたリソースＵＲＩに基づいて、このリソースＵＲＩを置き換える代替ＵＲＩがあるか否かを判定する。代替ＵＲＩがあると判定した場合、ＵＲＩ判定部ｃ１２２は、代替ＵＲＩをリソース取得先ＵＲＩとして表示制御部ｃ１１１に出力する。一方、代替ＵＲＩがないと判定した場合、ＵＲＩ判定部ｃ１２２は、入力されたリソースＵＲＩをリソース取得先ＵＲＩとして表示制御部ｃ１１１に出力する。なお、代替判定部ｃ１２（判定情報記憶部ｃ１２１及びＵＲＩ判定部ｃ１２２）が行う処理を代替ＵＲＩ処理という。
【００４９】
スクリプト取得部ｃ１１２は、ＵＲＩ判定部ｃ１２２から入力されたリソース取得先ＵＲＩに基づいて、このＵＲＩが示すファイルが外部装置が記憶するファイルであるか、又は自装置の外部記憶部ｃ１０３が記憶するファイルであるかを判定する。リソース取得先ＵＲＩが外部装置が記憶するファイルを示すと判定した場合、スクリプト取得部ｃ１１２は、通信部ｃ１０６にリソース取得先ＵＲＩを出力する。一方、リソース取得先ＵＲＩが外部記憶部ｃ１０３が記憶するファイルを示すと判定した場合、スクリプト取得部ｃ１１２は、外部記憶部ｃ１０３からローカル代替ＪＳファイルｆ２を読み出す。
スクリプト取得部ｃ１１２は、通信部ｃ１０６から入力されたＷｅｂ代替ＪＳファイルｂ１１、ＪＳファイルａ１３、及び、読み出したローカル代替ＪＳファイルｆ２を、リソースＵＲＩのＪＳファイルに代えて、表示制御部ｃ１１１に出力する。
【００５０】
表示部ｃ１０５は、表示制御部ｃ１１１から入力された画像情報の画像を表示する。ここで表示される画像は、ＵＲＩ判定部ｃ１２２が代替ＵＲＩがあると判定した場合には、表示制御部ｃ１１１がリソースＵＲＩのＪＳファイルのＪＳプログラムに代えて、代替ＵＲＩの代替ＪＳファイルのＪＳプログラムを実行し、その結果、表示部ｃ１０５が表示する画像である。
【００５１】
＜代替ＪＳファイルについて＞
ここで、代替ＪＳファイルについて詳細を説明する。
リソースＵＲＩのＪＳファイルを用いてアニメーション表示などの画像表示を行うと、例えば、画面表示能力が低いＷｅｂブラウザ端末等では、画面表示処理が高負荷となり表示に要する時間が長く掛かって操作性が低下する、又は頻繁な画像書換えにより表示が見え難くなるといった、不都合が発生する場合がある。
Ｗｅｂブラウザ端末Ｃ１では、リソースＵＲＩのＪＳファイルに代えて、Ｗｅｂブラウザ端末Ｃ１毎に代替ＵＲＩを判定し、その代替ＵＲＩから取得した代替ＪＳファイルを用いて画像表示を行う。これにより、そのＷｅｂブラウザ端末Ｃ１では、例えば、画面表示能力に応じたＪＳプログラムを実行することができる。
【００５２】
次に、その代替ＪＳファイルの具体例を示す。
図４は、本実施形態に係る代替ＪＳファイルのＪＳプログラムの一例を示す概略図である。この図においては、説明のため、プログラムに行番号を付している。なお、この図は、リソースＵＲＩのＪＳファイル（元ファイルという）にｊＱｕｅｒｙのＶｅｒｓｉｏｎ１．３．２を用いている場合に、画面上の視覚効果が高い表示を行うことを強制的に抑止し、画面表示処理が高負荷となることを防止するような修正変更を加えた代替ＪＳファイルの一例である。
【００５３】
図４において、行番号が「３９７６」〜「３９７８」行目のプログラムが修正されている。「３９７６」、「３９７７」行目の「／／」以降のプログラムは、元ファイルに記載されたプログラムであり、「／／」という文字を付与することによりこのプログラムを実行しないように記載されている（コメントアウトしている）。また、図４の一例では、元ファイルに「３９７８」行目のプログラムが追加されている。
【００５４】
「３９７６」、「３９７７」行目の元ファイルのプログラムでは、変数ｊＱｕｅｒｙ．ｆｘ．ｏｆｆの値によって画面上の視覚効果が高い表示を行うか否かの切替が行われる。具体的に、視覚効果を実行した場合には、初期画像が表示され最終画像が表示されるまでの間に、時間に沿って複数の中間画像が表示される。
一方、「３９７８」行目のプログラムでは、変数ｏｐｔ．ｄｕｒａｔｉｏｎに「０」を代入している。この変数ｏｐｔ．ｄｕｒａｔｉｏｎはアニメーション表示などの画面上の視覚効果の実行時間を指定する変数である。この変数ｏｐｔ．ｄｕｒａｔｉｏｎに「０」を代入すると、初期画像が表示された直後に最終画像が表示され、中間画像が表示されない。つまり、画面上の視覚効果が高い表示を行うことを強制的に抑止し、情報処理能力が低いＷｅｂブラウザ端末Ｃ１で、画面表示処理が高負荷となることを防止する。
このように、例えば、情報処理能力が低いＷｅｂブラウザ端末Ｃ１は、動画処理のＪＳプログラムに代えて、動画処理を省略した動作を実現する代替ＪＳプログラムを実行する。つまり、代替ＪＳファイルのＪＳプログラムは、Ｗｅｂブラウザ端末Ｃ１の情報処理能力に応じたプログラムである。
なお、情報処理能力が低いＷｅｂブラウザ端末Ｃ１は、動画処理のＪＳプログラムに代えて或いは加えて、動画のコマ数を少なくする代替ＪＳプログラム、又は画像中で移動する画像や文字の移動間隔を小さくする代替ＪＳプログラム等に置き換えてもよい。
【００５５】
図５は、本実施形態に係るＷｅｂブラウザアプリケーションｆ１を表わすオブジェクト図である。この図のオブジェクト図は、ＵＭＬ（Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ；統一モデリング言語）を用いて表わした図である。
なお、ＵＲＩ判定オブジェクトは図３のＵＲＩ判定部ｃ１１２で実装され、ローダーオブジェクトｏ１２１及びスキーム別ローダーオブジェクトはスクリプト取得部ｃ１１２で実装される。その他のオブジェクトは表示制御部ｃ１１１で実装される。
【００５６】
ブラウザオブジェクトｏ１０１は、Ｗｅｂブラウザアプリケーションｆ１のトップレベルとなるオブジェクトである。ブラウザオブジェクトは１枚の表示画面ごとに１個の画面リソースオブジェクトｏ１１１を生成して対応付ける。
リソースオブジェクトｏ１１は、Ｗｅｂブラウザで表示する画面を構成するオブジェクトである。構成要素の種類により個々のリソースオブジェクトｏ１１が存在する。具体的に図５では、リソースオブジェクトｏ１１には、画面リソースオブジェクトｏ１１１、ｈｔｍｌリソースオブジェクトｏ１１２及びＪａｖａｓｃｒｉｐｔリソースオブジェクト（ＪＳリソースオブジェクトという）ｏ１１３等が含まれる。なお、図５において、ｈｔｍｌリソースオブジェクトｏ１１２は、リソースビルダーオブジェクトｏ１２へリソースオブジェクト生成命令（リソースＵＲＩを含む命令）を送付することにより行う。また、１つの画面に含まれるリソースオブジェクトｏ１１として、画面リソースオブジェクトｏ１１１のほかにｈｔｍｌリソースオブジェクトｏ１１２及びＪＳリソースオブジェクトｏ１１３について説明を行うが、例えば画像データのように、その他にも画面を構成するリソースオブジェクトは存在する（図５では、「○○リソースオブジェクト」として示す）。
【００５７】
画面リソースオブジェクトｏ１１１は、Ｗｅｂブラウザの表示画面に対応したリソースオブジェクトである。画面リソースオブジェクトｏ１１１は自身の子オブジェクトとして自身の画面に含まれる構成要素のリソースオブジェクトを関係付ける。具体的に、図５の例では、画面リソースオブジェクトｏ１１１の子オブジェクトとしてｈｔｍｌリソースオブジェクトｏ１１２が１個、関係付けられている。
このｈｔｍｌリソースオブジェクトｏ１１２の生成に際しては、画面リソースオブジェクトｏ１１１がリソースビルダーオブジェクトｏ１２へリソースオブジェクト生成命令を送り、このリソースオブジェクト生成命令に基づいて生成されたｈｔｍｌリソースオブジェクトを画面リソースオブジェクトｏ１１１自身の子オブジェクトとして関係付ける。
【００５８】
ｈｔｍｌリソースオブジェクトｏ１１２は、ｈｔｍｌファイルを元にして生成されたリソースオブジェクトである。また、ｈｔｍｌリソースオブジェクトｏ１１２は、ｈｔｍｌファイルの文書構成に基づくＤＯＭ（Ｄｏｃｕｍｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ）ツリーでｈｔｍｌファイルの内容を管理する。ｈｔｍｌリソースオブジェクトは自身の子オブジェクトとして自身の表示内容に含まれる他のリソース、例えばｈｔｍｌファイルに記載されているＪＳファイルや画像ファイルなどを、自身の子オブジェクトとして関係付ける。具体的に、図５の例では、ｈｔｍｌリソースオブジェクトｏ１１２の子オブジェクトとしてＪＳリソースオブジェクトｏ１１３が関係付けられている。
このＪＳリソースオブジェクトｏ１１３の生成に際しては、ｈｔｍｌリソースオブジェクトｏ１１２がリソースビルダーオブジェクトｏ１２へリソースオブジェクト生成命令を送り、このリソースオブジェクト生成命令に基づいて生成されたＪＳリソースオブジェクトｏ１１３をｈｔｍｌリソースオブジェクトｏ１１２自身の子オブジェクトとして関係付ける。
【００５９】
ＪＳリソースオブジェクトｏ１１３は、ＪＳファイルを元にして生成されたリソースオブジェクトである。またＪａｖａｓｃｒｉｐｔリソースオブジェクトｏ１１３は、ＪＳファイルのプログラムコードに基づく実行コードを管理する。
【００６０】
リソースビルダーオブジェクトｏ１２は、リソースオブジェクトの生成を行う。具体的には、リソースビルダーオブジェクトｏ１２は、ローダーオブジェクトｏ１２１を呼び出す前にＵＲＩ判定オブジェクトｏ１２３を呼び出し、リソースオブジェクト生成命令のリソースＵＲＩを送付する。
ＵＲＩ判定オブジェクトｏ１２３は、代替ＵＲＩ処理を行って、送付されたリソースＵＲＩに対するリソース取得先ＵＲＩをリソースビルダーオブジェクトｏ１２に返却する。なお、ＵＲＩ判定オブジェクトｏ１２３が行う代替ＵＲＩ処理については、後述する。
リソースビルダーオブジェクトｏ１２は、ＵＲＩ判定オブジェクトｏ１２３から返却されたリソース取得先ＵＲＩを含むリソース取得メッセージを、ローダーオブジェクトｏ１２１に送付する。リソースビルダーオブジェクトｏ１２は、ローダーオブジェクトｏ１２１がリソース取得メッセージに基づいて取得したリソースデータを含むレンダリング命令を生成し、レンダラーオブジェクトｏ１２２に送付する。リソースビルダーオブジェクトｏ１２は、レンダラーオブジェクトｏ１２２がレンダリング命令に基づいて生成したリソースオブジェクトを、リソースオブジェクト生成命令の返値として返却する。
【００６１】
ローダーオブジェクトｏ１２１は、リソースビルダーオブジェクトｏ１２からリソース取得メッセージを取得する。ここで、ローダーオブジェクトｏ１２１は、リソース取得メッセージのリソース取得先ＵＲＩを取得する。ローダーオブジェクトは、リソース取得先ＵＲＩが示すスキームを元に、スキーム別ローダを呼出す。このスキームとは、ＵＲＩの一部で示されたリソースに到達する（典型的にはリソースを取得する）ための手段（例えば、ｈｔｔｐ、ｈｔｔｐｓ、ｆｔｐのプロトコルを用いた手段）を表す。
【００６２】
ここで、スキーム別ローダとして、ｈｔｔｐローダーオブジェクトｏ１２１１及びｆｉｌｅローダーオブジェクトｏ１２１２について説明を行う。なお、その他のスキームについても個々のスキーム別ローダブジェクト（図５では、「●●ローダーオブジェクト」として示す）がある。
ｈｔｔｐローダーオブジェクトｏ１２１１はスキームがｈｔｔｐの場合に対応するスキーム別ローダブジェクトである。ｈｔｔｐローダーオブジェクトｏ１２１１は、ｈｔｔｐプロトコルを用いて、取得先ＵＲＩで指定されたリソースデータを取得する。ｆｉｌｅローダーオブジェクトｏ１２１２は、スキームがｆｉｌｅの場合に対応するスキーム別ローダブジェクトである。例えば、ｆｉｌｅローダーオブジェクトｏ１２１２は、外部記憶部ｃ１０３からＵＲＩで指定された場所に格納されているリソースデータを取得する。
ローダーオブジェクトｏ１２１は、スキーム別ローダが取得したリソースデータをリソースビルダーオブジェクトｏ１２へ返却する。返却するリソースデータには、データ種別を表すｍｉｍｅ−ｔｙｐｅ値とデータ実体を表すｄａｔａ値を含まれる。
【００６３】
レンダラーオブジェクトｏ１２２は、ローダーオブジェクトｏ１２１が取得したレンダリング命令のリソースデータを用いて画面を構成するリソースオブジェクトを生成する（レンダリング）。レンダラーオブジェクトｏ１２２は、どの種類のリソースオブジェクトを生成するかを、リソースデータに含まれるｍｉｍｅ−ｔｙｐｅ値を用いて決定し、ｍｉｍｅ−ｔｙｐｅ別レンダラーを呼出す。
【００６４】
ここで、ｍｉｍｅ−ｔｙｐｅ別レンダラーとして、ｈｔｍｌレンダラーオブジェクトｏ１２２１及びＪａｖａｓｃｒｉｐｔレンダラーオブジェクト（ＪＳレンダラーオブジェクトという）ｏ１２２２について説明を行う。なお、その他のｍｉｍｅ−ｔｙｐｅについても個々のｍｉｍｅ−ｔｙｐｅ別レンダラーオブジェクト（図５では、「○○レンダラーオブジェクト」として示す）がある。
ｈｔｍｌレンダラーオブジェクトｏ１２２１は、ｍｉｍｅ−ｔｙｐｅ値がｈｔｍｌデータであることを示す「ｔｅｘｔ／ｈｔｍｌ」の場合に呼び出され、ｈｔｍｌリソースオブジェクトを生成する。具体的には、ｈｔｍｌレンダラーオブジェクトｏ１２２１は、ｈｔｍｌファイルの文書構成を解析しｈｔｍｌリソースオブジェクトｏ１１２内にＤＯＭツリーを生成する。
【００６５】
ＪＳレンダラーオブジェクトｏ１２２２は、ｍｉｍｅ−ｔｙｐｅ値がＪａｖａｓｃｒｉｐｔデータであることを示す「ｔｅｘｔ／Ｊａｖａｓｃｒｉｐｔ」の場合に呼び出され、ＪＳリソースオブジェクトｏ１１３を生成する。具体的には、ＪＳレンダラーオブジェクトｏ１２２２は、ＪＳファイルのＪＳプログラムのプログラムコードを解析して実行コードを生成し、生成した実行コードが書き込まれたＪＳリソースオブジェクトｏ１１３を生成する。
【００６６】
以下、本実施形態に係るＷｅｂブラウザアプリケーションｆ１の動作について説明をする。まず、図６を用いてＵＲＩ判定オブジェクトｏ１２３がない場合のＷｅｂブラウザアプリケーションの動作について説明をし、次に、図７を用いてＵＲＩ判定オブジェクトｏ１２３がある場合（本実施形態）のＷｅｂブラウザアプリケーションｆ１の動作について説明をする。本実施形態に係るＷｅｂブラウザ端末は、後者（ＵＲＩ判定オブジェクトｏ１２３がある場合）のＷｅｂブラウザアプリケーションｆ１を記憶して実行する。
【００６７】
図６は、Ｗｅｂブラウザアプリケーションの実行動作の一例を示すシーケンス図である。この図は、ｈｔｍｌリソースオブジェクトｏ１１２が生成された後、ｈｔｍｌファイルに記載されているＪＳファイルの処理（ＪＳファイル処理という）を行う際のＵＭＬにおけるシーケンス図である。
なお、ＪＳファイル処理は、以下のように行われる。ｈｔｍｌファイルに基づいて生成されたｈｔｍｌリソースオブジェクトｏ１１２は、リソースオブジェクト生成命令をリソースビルダーオブジェクトｏ１２に対して送付する。ｈｔｍｌファイル内に、例えば、「＜ｓｃｒｉｐｔ  ｔｙｐｅ＝”ｔｅｘｔ／ｊａｖａｓｃｒｉｐｔ”  ｓｒｃ＝”ｈｔｔｐ：／／ｗｗｗ．ＸＸＸ・・・．ｃｏｍ／ｅｘａｍｐｌｅ．ｊｓ”＞＜／ｓｃｒｉｐｔ＞」という記述があった場合に、このリソースオブジェクト生成命令には、リソース取得先ＵＲＩとして、「ｓｃｒｉｐｔ」タグの属性「ｓｒｃ」の値であるＵＲＩ値（この例では”ｈｔｔｐ：／／ｗｗｗ．ＸＸＸ・・・．ｃｏｍ／ｅｘａｍｐｌｅ．ｊｓ”）が含まれる。リソースビルダーオブジェクトｏ１２は、リソース取得先ＵＲＩからＪＳファイルを取得し、ＪＳリソースオブジェクトｏ１１３を生成する。ｈｔｍｌリソースオブジェクトｏ１１２は、リソースビルダーオブジェクトｏ１２が生成したＪＳリソースオブジェクトｏ１１３を自身の子オブジェクトとして関係付ける。
【００６８】
以下、具体的なＪＳファイル処理の詳細について説明をする。
（ステップＳ１０１）ｈｔｍｌリソースオブジェクトｏ１１２は、リソースビルダーオブジェクトｏ１２に対し、新たに取得するＪａｖａｓｃｒｉｐｔリソースの所在を表すＵＲＩ（リソースＵＲＩ）を含むリソースオブジェクト生成命令を、リソースビルダーオブジェクトｏ１２に送付する。その後、ステップＳ１０２へ進む。
（ステップＳ１０２）リソースビルダーオブジェクトｏ１２は、ステップＳ１０１で送付されたリソースオブジェクト生成命令を取得する。リソースビルダーオブジェクトｏ１２は、取得したリソースオブジェクト生成命令のリソースＵＲＩをリソース取得先ＵＲＩとして、このリソース取得先ＵＲＩを含むリソース取得メッセージを、ローダーオブジェクトｏ１２１に送付する。その後、ステップＳ１０３へ進む。
【００６９】
（ステップＳ１０３）ローダーオブジェクトｏ１２１は、ステップＳ１０２で送付されたリソース取得メッセージを取得し、取得したリソース取得メッセージのリソース取得先ＵＲＩに基づいてスキームを判定する。例えば、ローダーオブジェクトｏ１２１は、上述の例のリソース取得先ＵＲＩ（”ｈｔｔｐ：／／ｗｗｗ．ｆｏｏｂａａ．ｃｏｍ／ｅｘａｍｐｌｅ．ｊｓ”）の場合、先頭部分の「ｈｔｔｐ」という文字列より、スキームがｈｔｔｐと判定する（以下、ｈｔｔｐと判定した場合について説明をする）。その後、ステップＳ１０４へ進む。
（ステップＳ１０４）ローダーオブジェクトｏ１２１は、ステップＳ１０３で判定したスキームのスキーム別ローダーオブジェクト（ｈｔｔｐローダーオブジェクトｏ１２１１）に対して、リソース取得先ＵＲＩを含むデータ取得メッセージを送付する。ｈｔｔｐローダーオブジェクトｏ１２１１は、送付されたデータ取得メッセージを取得し、取得したデータ取得メッセージのリソース取得先ＵＲＩからｈｔｔｐプロトコルを用いてリソースデータを取得する。その後、ステップＳ１０５へ進む。
【００７０】
（ステップＳ１０５）ｈｔｔｐローダーオブジェクトｏ１２１１は、データ取得メッセージの返値として、ｍｉｍｅ−ｔｙｐｅ値（以下、この値が「ｔｅｘｔ／ｊａｖａｓｃｒｉｐｔ」の場合について説明をする）とｄａｔａ値からなるリソースデータをローダーオブジェクトｏ１２１に返却する。その後、ステップＳ１０６へ進む。
（ステップＳ１０６）ローダーオブジェクトｏ１２１は、ステップＳ１０５で返却されたリソースデータを、リソースビルダーオブジェクトｏ１２に返却する。その後、ステップＳ１０７へ進む。
【００７１】
（ステップＳ１０７）リソースビルダーオブジェクトｏ１２は、ステップＳ１０６で返却されたリソースデータを含むレンダリング命令を生成し、レンダラーオブジェクトｏ１２２に送付する。その後、ステップＳ１０８へ進む。
（ステップＳ１０８）レンダラーオブジェクトｏ１２２は、ステップＳ１０７で送付されたレンダリング命令を取得し、取得したレンダリング命令のリソースデータからｍｉｍｅ−ｔｙｐｅ値及びｄａｔａ値を抽出する。その後、ステップＳ１０９へ進む。
（ステップＳ１０９）レンダラーオブジェクトｏ１２２は、ステップＳ１０８で抽出したｍｉｍｅ−ｔｙｐｅ値のレンダラーオブジェクト（ＪＳレンダラーオブジェクトｏ１２２２）に対して、ステップＳ１０８で抽出したｄａｔａ値を送付する。
【００７２】
（ステップＳ１１０）ＪＳレンダラーオブジェクトｏ１２２２は、新規のＪＳリソースオブジェクトｏ１１３を生成する。その後、ステップＳ１１１へ進む。
（ステップＳ１１１）ＪＳレンダラーオブジェクトｏ１２２２は、ステップＳ１０９で送付されたｄａｔａ値を取得し、取得したｄａｔａ値に対して命令文解析処理を行う。この命令文解析処理は、ｄａｔａ値をＪＳプログラムのプログラムコードとみなしてその言語の文法に沿って内容を解析する処理である。その後、ステップＳ１１２へ進む。
（ステップＳ１１２）ＪＳレンダラーオブジェクトｏ１２２２は、ステップＳ１１１での命令文解析処理の結果、ＪＳプログラムの実行コードを生成し、生成した実行コードを生成したＪＳリソースオブジェクトｏ１１３に書き込む。その後、ステップＳ１１３へ進む。このステップＳ１１０〜Ｓ１１２の処理によって、ＪＳリソースオブジェクトｏ１１３が生成される。その後、ステップＳ１１３へ進む。
【００７３】
（ステップＳ１１３）ＪＳレンダラーオブジェクトｏ１２２２は、生成したＪＳリソースオブジェクトｏ１１３を、レンダラーオブジェクトｏ１２２に返却する。その後、ステップＳ１１４へ進む。
（ステップＳ１１４）レンダラーオブジェクトｏ１２２は、ステップＳ１１３で返却されたＪＳリソースオブジェクトｏ１１３を、リソースビルダーオブジェクトｏ１２に返却する。その後、ステップＳ１１５へ進む。
（ステップＳ１１５）リソースビルダーオブジェクトｏ１２は、ステップＳ１１４で返却されたＪＳリソースオブジェクトｏ１１３を、ｈｔｍｌリソースオブジェクトｏ１１２に返却する。その後、ステップＳ１１６へ進む。
（ステップＳ１１６）ｈｔｍｌリソースオブジェクトｏ１１２は、ステップＳ１１５で返却されたＪＳリソースオブジェクトｏ１１３を、自身の子オブジェクトに追加して関係付ける。
【００７４】
図７は、本実施形態に係るＷｅｂブラウザアプリケーションｆ１の実行動作の一例を示すシーケンス図である。この図は、本実施形態に係るＪＳファイル処理を行う際のＵＭＬにおけるシーケンス図である。図７と図６を比較すると、図７ではステップＳ２１及びＳ２２の処理が追加されている点、及び、ステップＳ１０２の処理がステップＳ２０２の処理に変更されている点が異なる。しかし、他の処理（ステップＳ１０１、Ｓ１０３〜Ｓ１１６の処理）は図６の処理と同じである。図６と同じ処理の説明は省略する。
【００７５】
（ステップＳ２１）リソースビルダーオブジェクトｏ１２は、ステップＳ１０１で送付されたリソースオブジェクト生成命令を取得し、取得したリソースオブジェクト生成命令のリソースＵＲＩを含む代替ＵＲＩ存在チェックメッセージをＵＲＩ判定オブジェクトｏ１２３に送付する。
ＵＲＩ判定オブジェクトｏ１２３は、ステップＳ２１で送付された代替ＵＲＩ存在チェックメッセージを取得し、取得した代替ＵＲＩ存在チェックメッセージのリソースＵＲＩに基づいて代替ＵＲＩが存在するか否かを判定する。また、代替ＵＲＩが存在すると判定した場合、ＵＲＩ判定オブジェクトｏ１２３は、その代替ＵＲＩを読み出す。その後、ステップＳ２１２へ進む。
【００７６】
（ステップＳ２２）ステップＳ２１で代替ＵＲＩが存在すると判定した場合、ＵＲＩ判定オブジェクトｏ１２３は、ステップＳ２１で読み出した代替ＵＲＩをリソース取得先ＵＲＩとして、リソースビルダーオブジェクトｏ１２に返却する。一方、ステップＳ２１で代替ＵＲＩ存在しないと判定した場合、ステップＳ２１で取得したリソースオブジェクト生成命令のリソースＵＲＩを、そのままリソース取得先ＵＲＩとして、リソースビルダーオブジェクトｏ１２に返却する。その後、ステップＳ２０２へ進む。
（ステップＳ２０２）リソースビルダーオブジェクトｏ１２は、ステップＳ２２で返却されたＵＲＩを含むリソース取得メッセージを、ローダーオブジェクトｏ１２１に送付する。その後、ステップＳ１０３へ進む。
なお、ＵＲＩ判定オブジェクトｏ１２３が行うステップＳ２１、Ｓ２２の処理が代替ＵＲＩ処理である。
【００７７】
以下、代替判定部ｃ１２が行う代替ＵＲＩ処理の詳細について説明をする。
図８は、本実施形態に係るＵＲＩ判定情報テーブルの一例を示す概略図である。図示するようにＵＲＩ判定情報テーブルは、リソースＵＲＩ及び代替ＵＲＩの各項目の列を有している。ＵＲＩ判定情報テーブルは、行毎にＵＲＩ判定情報が格納される行と列からなる２次元の表形式のデータである。
【００７８】
例えば、図８の１行目のＵＲＩ判定情報は、符号１００１を付したリソースＵＲＩ「ｈｔｔｐ：／／ＹＹＹ・・・．ｃｏｍ／ａｊａｘ／ｌｉｂｓ／ｊｑｕｅｒｙ／１．３．2／ｊｑｕｅｒｙ．ｍｉｎ．ｊｓ」（ＵＲＩ１００１）に対する代替ＵＲＩとして、符号１１０１を付した「ｆｉｌｅ：／／ｓｃｒｉｐｔ／ｊｑｕｅｒｙ−１．３．２．ｍｉｎ．ｊｓ」（ＵＲＩ１１０１）が対応付けられていることを示す。また、例えば、図８の４行目のＵＲＩ判定情報は、符号１００４を付したリソースＵＲＩ「ｈｔｔｐ：／／ＺＺＺ・・・．ｏｒｇ／ａｓｓｅｔｓ／２００８／９／２９／ｐｒｏｔｏｔｙｐｅ−１．６．０．３．ｊｓ」（ＵＲＩ１００４）に対する代替ＵＲＩとして、符号１１０４を付した「ｈｔｔｐ：／／ＸＸＸ・・・．ｃｏ．ｊｐ／ｆｉｌｅｓ／ｐｒｏｔｏｔｙｐｅ−１．６．０．３．ｊｓ」（ＵＲＩ１１０４）が対応付けられていることを示す。
なお、ＵＲＩ１１０４のように「ｈｔｔｐ：／／」という文字列で始まるファイルは、例えば図１のＷｅｂ代替ＪＳファイルｂ１１であり、自装置以外の装置からｈｔｔｐプロトコルを用いて取得するファイルである。一方、ＵＲＩ１１０１のように「ｆｉｌｅ：／／」という文字列で始まるファイルは、例えば図２のローカル代替ＪＳファイルｆ２であり、自装置内の記憶部から取得するファイルである。ローダーオブジェクトｏ１２１は、このようにＵＲＩの先頭部分の文字列でスキームを判定し、Ｗｅｂ代替ＪＳファイルｂ１１、又はローカル代替ＪＳファイルｆ２を取得する。
【００７９】
図９は、本実施形態に係る代替ＵＲＩ処理の一例を示すフローチャートである。
（ステップＳ２１１）図３のＵＲＩ判定部ｃ１２２（ＵＲＩ判定オブジェクトｏ１２３）は、取得した代替ＵＲＩ存在チェックメッセージのリソースＵＲＩ（チェック対象ＵＲＩ）を文字列として文字列変数ＩＮに代入する。その後、ステップＳ２１２へ進む。
（ステップＳ２１２）ＵＲＩ判定部ｃ１２２は、整数変数Ｎに「１」を代入する。また、なお、この変数Ｎは配列Ｔ及び配列Ｒの添え字として用いられる。また、ＵＲＩ判定部ｃ１２２は、判定情報記憶部ｃ１２１が記憶するＵＲＩ判定情報テーブル（図８）でのｎ行目のリソースＵＲＩを配列Ｔのｎ番目の要素に代入する。また、ＵＲＩ判定部ｃ１２２は、判定情報記憶部ｃ１２１が記憶するＵＲＩ判定情報テーブルでのｎ行目の代替ＵＲＩを配列Ｒのｎ番目の要素に代入する。その後、ステップＳ２１３へ進む。
【００８０】
（ステップＳ２１３）ＵＲＩ判定部ｃ１２２は、配列ＴのＮ番目の内容の文字列と変数ＩＮの文字列を比較する。この比較は、配列ＴのＮ番目の要素である文字列と変数ＩＮの文字列とが完全一致しているか否かを比較する。その後、ステップＳ２１４へ進む。
（ステップＳ２１４）ＵＲＩ判定部ｃ１２２は、ステップＳ２１３の比較の結果、文字列が完全に一致したか否かを判定する。判定の結果、文字列が完全に一致したと判定した場合、ステップＳ２１８へ進む。一方、文字列が完全に一致しないと判定した場合、ステップＳ２１５へ進む。
（ステップＳ２１５）ＵＲＩ判定部ｃ１２２は、変数Ｎの値を１増やす。その後、ステップＳ２１６へ進む。
【００８１】
（ステップＳ２１６）ＵＲＩ判定部ｃ１２２は、変数Ｎの値が配列Ｔの要素数を超えたか否かを判定する。判定の結果、変数Ｎの値が配列Ｔの要素数を超えたと判定した場合（はい）は、配列Ｔの全ての要素について比較が完了しているので、ステップＳ２１７へ進む。一方、変数Ｎの値が配列Ｔの要素数を超えていないと判定した場合（いいえ）は、配列Ｔに比較する要素がまだ残っているので、ステップＳ２１３へ戻る。
（ステップＳ２１７）ＵＲＩ判定部ｃ１２２は、配列ＩＮの内容、つまり、ステップＳ２１１で取得したリソースＵＲＩをそのまま、リソース取得先ＵＲＩ（リソースビルダーオブジェクトｏ１２への返値）に設定する。その後、動作を終了する。
（ステップＳ２１８）ＵＲＩ判定部ｃ１２２は、配列ＲのＮ番目の内容を、つまり、配列ＲのＮ番目の要素である代替ＵＲＩの文字列（図８でのＮ行目の代替ＵＲＩ）を、スクリプト取得部ｃ１１２の出力値（リソースビルダーオブジェクトｏ１２への返値）に設定する。つまり、この場合は、配列ＴのＮ番目の要素との比較結果が一致した場合であり、配列ＴのＮ番目の要素に対応する配列ＲのＮ番目の内容（代替ＵＲＩ）を、リソース取得先ＵＲＩに設定する。その後、動作を終了する。
なお、ＵＲＩ判定部ｃ１２２は、ステップＳ２１７又はＳ２１８で設定したリソース取得先ＵＲＩを表示制御部ｃ１１１に出力する。
【００８２】
このように、本実施形態によれば、Ｗｅｂブラウザ端末Ｃ１は、リソースＵＲＩに基づいて、ＪＳファイルを他の代替ＪＳファイルに置き換え、置き換えた代替ＪＳファイルのＪＳプログラムを実行する。これにより、情報処理装置に応じた動作をするアプリケーションを提供することができる。より具体的には、Ｗｅｂアプリケーション提供者側の事情に影響を受けることなく、Ｗｅｂブラウザ端末Ｃ１の製造者（又はＷｅｂブラウザアプリケーションｆ１の作成者）のみの対応によって、Ｗｅｂブラウザ端末Ｃ１での提供を想定していないＷｅｂアプリケーションでも、Ｗｅｂブラウザ端末Ｃ１で快適に利用させることができる。
【００８３】
また、本実施形態によれば、Ｗｅｂブラウザ端末Ｃ１は、代替ＪＳファイルのＪＳプログラムは、Ｗｅｂブラウザ端末Ｃ１１、Ｃ１２、・・・の情報処理能力（Ｗｅｂブラウザ端末Ｃ１の種類や動画の再生能力（Ｗｅｂブラウザの種類））に応じたプログラムであるので、Ｗｅｂブラウザ端末Ｃ１の情報処理能力に応じたＷｅｂアプリケーションを提供することができ、Ｗｅｂアプリケーションを快適に利用させることができる。
【００８４】
また、従来技術では、Ｗｅｂサーバは、個々の情報処理装置の種類を識別し、情報処理装置の種類毎に異なる処理スクリプトを供給する必要があるので、情報処理装置の種類や台数が増える程、Ｗｅｂサーバの管理コストが増加するという欠点があった。
本実施形態によれば、個々のＷｅｂブラウザ端末Ｃ１に合わせた代替ＪＳファイルを個々のＷｅｂブラウザ端末Ｃ１が記憶する場合、管理用サーバでの管理コストを削減することができる。
また、従来技術では、各情報処理装置は処理スクリプトを必ずサーバからダウンロードして取得する必要があるので、実行時にはファイルをダウンロードする時間を要するという欠点があった。なお、仮にファイルキャッシュの仕組みを備えていたとしても、その効果は２回目の実行時以降にのみ発生し、初回の実行時にはダウンロードに要する時間の発生は避けられない。
本実施形態によれば、個々のＷｅｂブラウザ端末Ｃ１に合わせた代替ＪＳファイルを個々のＷｅｂブラウザ端末Ｃ１が記憶する場合、実行時にサーバから代替ＪＳファイルをダウンロードしないため、初回の実行時であってもダウンロードに要する時間が発生しない。
【００８５】
以下、本実施形態の変形例について説明をする。
本実施形態では、Ｗｅｂブラウザ端末Ｃ１がリソースＵＲＩの全文字列に基づいて代替ＵＲＩ処理を行う場合について説明をした。しかし、本発明はこれに限らず、Ｗｅｂブラウザ端末Ｃ３はリソースＵＲＩの一部の文字列に基づいて代替ＵＲＩ処理を行ってもよい。
【００８６】
＜変形例１＞
変形例１では、ＵＲＩ判定部ｃ１２２は、リソースＵＲＩのファイル名に基づいて、代替ＵＲＩが存在するか否かを判定する。
【００８７】
図１０は、本実施形態の変形例１に係るＵＲＩ判定情報テーブルの一例を示す概略図である。図示するようにＵＲＩ判定情報テーブルは、リソースＵＲＩのファイル名及び代替ＵＲＩの各項目の列を有している。ＵＲＩ判定情報テーブルは、行毎にＵＲＩ判定情報が格納される行と列からなる２次元の表形式のデータである。
例えば、図１０の２行目のＵＲＩ判定情報は、符号１２０２を付したファイル名「ｊｑｕｅｒｙ．ｊｓ」（ファイル名１２０２）に対する代替ＵＲＩとして、符号１１０２を付した「ｆｉｌｅ：／／ｓｃｒｉｐｔ／ｊｑｕｅｒｙ−１．３．２．ｍｉｎ．ｊｓ」（ＵＲＩ１１０２）が対応付けられていることを示す。
【００８８】
具体的に、Ｗｅｂブラウザ端末Ｃ１では、以下の処理を行う。
ＵＲＩ判定部ｃ１２２（ＵＲＩ判定オブジェクト）は、リソースＵＲＩの文字列において、文字列の後ろから順に「／」という文字を検索する。ＵＲＩ判定部ｃ１２２は、検索した「／」の直後の文字列から「＆」という文字、又は「＆」という文字がない場合には文字列まで、文字列を抽出する。なお、「＆」という文字までに限るのは、ＵＲＩでは「＆」の後に変数等のファイル名とは関係ないパラメータが付与されるので、「＆」の後の文字列は抽出しない。
例えば、リソースＵＲＩが「ｈｔｔｐ：／／ＹＹＹ・・・．ｃｏｍ／ａｊａｘ／ｌｉｂｓ／ｊｑｕｅｒｙ／１．３．２／ｊｑｕｅｒｙ．ｍｉｎ．ｊｓ」である場合には、ＵＲＩ判定部ｃ１２２は、「ｊｑｕｅｒｙ．ｍｉｎ．ｊｓ」をファイル名として抽出する。
【００８９】
以下、図９を用いて代替ＵＲＩ処理について説明をする。
変形例１では、ＵＲＩ判定部ｃ１２２は、配列ＴのリソースＵＲＩに変えてファイル名を代入する。また、ステップＳ２１３の比較において、ＵＲＩ判定部ｃ１２２は、変数ＩＮの文字列に変えて、変数ＩＮの文字列から上述のように抽出したファイル名を用いて比較を行う。
例えば、変数ＩＮが「ｈｔｔｐ：／／ＹＹＹ・・・．ｃｏｍ／ａｊａｘ／ｌｉｂｓ／ｊｑｕｅｒｙ／１．３．２／ｊｑｕｅｒｙ．ｊｓ」である場合、ステップＳ２１３では、ＵＲＩ判定部ｃ１２２は、ファイル名「ｊｑｕｅｒｙ．ｊｓ」を抽出して比較する。一方、配列Ｔの２番目（ｎ＝２）の要素には「ｊｑｕｅｒｙ．ｊｓ」が代入されている（図１０参照）ので、２回目（Ｎ＝２）のステップＳ２１４で、抽出したファイル名「ｊｑｕｅｒｙ．ｊｓ」と一致した（完全一致）と判定する。この場合、ＵＲＩ判定部ｃ１２２は、ステップＳ２１８で、配列ＲのＮ番目（Ｎ＝２）の内容である「ｆｉｌｅ：／／ｓｃｒｉｐｔ／ｊｑｕｅｒｙ−１．３．２．ｍｉｎ．ｊｓ」を代替ＵＲＩとして、リソース取得先ＵＲＩに設定する。
同様に、例えば、変数ＩＮが「ｈｔｔｐ：／／ＹＹＹ・・・．ｃｏｍ／ａｊａｘ／ｌｉｂｓ／ｊｑｕｅｒｙ／１．３．２／ｊｑｕｅｒｙ．ｊｓ」である場合も、ＵＲＩ判定部ｃ１２２は、「ｊｑｕｅｒｙ．ｍｉｎ．ｊｓ」をファイル名として抽出し、一致すると判定する。この場合も、ＵＲＩ判定部ｃ１２２は、ステップＳ２１８で、配列ＲのＮ番目（Ｎ＝２）の内容である「ｆｉｌｅ：／／ｓｃｒｉｐｔ／ｊｑｕｅｒｙ−１．３．２．ｍｉｎ．ｊｓ」を代替ＵＲＩとして、リソース取得先ＵＲＩに設定する。
【００９０】
このように、本変形例１では、Ｗｅｂブラウザ端末Ｃ１は、リソースＵＲＩと、リソースＵＲＩの一部（ファイル名）が部分一致する場合に、リソースＵＲＩのＪＳファイルを代替ＪＳファイルに置き換え、置き換えた代替ＪＳファイルのＪＳプログラムを実行する。特に著名なＪＳライブラリの場合、同一のファイルが複数のＷｅｂサイト上に存在し、個々に利用されていることが多い。本変形例によれば、それらのＪＳファイルのリソースＵＲＩ全てについてそのＵＲＩ判定情報を書き込まなくても、代替ＵＲＩと対応付けることができる。また、これにより、配列Ｔの設定個数の増加を防止することができる。
【００９１】
＜変形例２＞
変形例２では、ＵＲＩ判定部ｃ１２２は、リソースＵＲＩの先頭部分の文字列（ＵＲＩ部分文字列という）及びファイル名に基づいて、代替ＵＲＩが存在するか否かを判定する。
【００９２】
図１１は、本実施形態の変形例２に係るＵＲＩ判定情報テーブルの一例を示す概略図である。図示するようにＵＲＩ判定情報テーブルは、リソースＵＲＩのＵＲＩ部分文字列、リソースＵＲＩのファイル名、及び代替ＵＲＩの各項目の列を有している。ＵＲＩ判定情報テーブルは、行毎にＵＲＩ判定情報が格納される行と列からなる２次元の表形式のデータである。
例えば、図１１の１行目のＵＲＩ判定情報は、符号１３０２を付したＵＲＩ部分文字列「ｈｔｔｐ：／／ＹＹＹ・・・．ｃｏｍ／ａｊａｘ／ｌｉｂｓ／ｊｑｕｅｒｙ／」及びファイル名「ｊｑｕｅｒｙ．ｊｓ」（ファイル名１２０２）に対する代替ＵＲＩとして、「ｆｉｌｅ：／／ｓｃｒｉｐｔ／ｊｑｕｅｒｙ−１．３．２．ｍｉｎ．ｊｓ」（ＵＲＩ１１０２）が対応付けられていることを示す。
【００９３】
具体的に、Ｗｅｂブラウザ端末Ｃ１では、以下の処理を行う。
ＵＲＩ判定部ｃ１２２（ＵＲＩ判定オブジェクト）は、リソースＵＲＩの先頭部分の文字列と、ＵＲＩ判定情報テーブルのＵＲＩ部分文字列を比較し、代替ＵＲＩが存在するか否かを判定する。例えば、ＵＲＩ判定部ｃ１２２は、リソースＵＲＩが「ｈｔｔｐ：／／ＹＹＹ・・・．ｃｏｍ／ａｊａｘ／ｌｉｂｓ／ｊｑｕｅｒｙ／１．３．２／ｊｑｕｅｒｙ．ｍｉｎ．ｊｓ」である場合には、ＵＲＩ判定情報テーブルのＵＲＩ部分文字列が「ｈｔｔｐ：／／ＹＹＹ・・・．ｃｏｍ」や「ｈｔｔｐ：／／ＹＹＹ・・・．ｃｏｍ／ａｊａｘ／ｌｉｂｓ／ｊｑｕｅｒｙ」である場合、代替ＵＲＩが存在すると判定する。
なお、ＵＲＩ判定部ｃ１２２は、変形例１と同様にしてファイル名を抽出する。
【００９４】
以下、図９を用いて代替ＵＲＩ処理について説明をする。
変形例２では、ＵＲＩ判定部ｃ１２２は、判定情報記憶部ｃ１２１が記憶するＵＲＩ判定情報テーブル（図１０）でのｎ行目のＵＲＩ部分文字列及びファイル名を、それぞれ、配列Ｔ１、Ｔ２のｎ番目の要素に、代入する。ＵＲＩ判定部ｃ１２２は、ＵＲＩ判定部ｃ１２２は、配列Ｔに変えて配列Ｔ１及びＴ２を用いて代替ＵＲＩ処理を行う。
ステップＳ２１３の比較において、ＵＲＩ判定部ｃ１２２は、リソースＵＲＩの先頭部分の文字列と配列Ｔ１のＵＲＩ部分文字列とを比較する（先頭一致比較という）。ここで、先頭一致比較とは、２個の文字列を先頭から１文字づつ順番に比較し、先にどちらかの文字列が文字列終端に達した時点で、もう片方の文字列の残りは比較せず、２個の文字列は一致したとする比較方法である。
また、ＵＲＩ判定部ｃ１２２は、変数ＩＮの文字列から抽出したファイル名と、配列Ｔ２のファイル名とを比較する（ファイル名比較という）。この２つの比較（先頭一致比較、ファイル名比較）において、いずれの比較でも一致すると判定した場合、ステップＳ２１４で一致したと判定する。なお、それ以外の場合は、一致しないと判定する。
【００９５】
例えば、変数ＩＮが「ｈｔｔｐ：／／ＹＹＹ・・・．ｃｏｍ／ａｊａｘ／ｌｉｂｓ／ｊｑｕｅｒｙ／１．３．２／ｊｑｕｅｒｙ．ｊｓ」である場合、ステップＳ２１３では、ＵＲＩ判定部ｃ１２２は、先頭一致比較と、ファイル名「ｊｑｕｅｒｙ．ｊｓ」を抽出してファイル名比較を行う。これらの比較において、配列Ｔ１の２番目（ｎ＝２）の要素には「ｈｔｔｐ：／／ＹＹＹ・・・．ｃｏｍ／ａｊａｘ／ｌｉｂｓ／ｊｑｕｅｒｙ／」、配列Ｔ２の２番目の要素には「ｊｑｕｅｒｙ．ｊｓ」が代入されている（図１１参照）ので、２回目（Ｎ＝２）のステップＳ２１４で、先頭一致比較でもファイル名比較でも一致すると判定する。この場合、ＵＲＩ判定部ｃ１２２は、ステップＳ２１８で、配列ＲのＮ番目（Ｎ＝２）の内容である「ｆｉｌｅ：／／ｓｃｒｉｐｔ／ｊｑｕｅｒｙ−１．３．２．ｍｉｎ．ｊｓ」を代替ＵＲＩとして、リソース取得先ＵＲＩに設定する。
同様に、例えば、変数ＩＮが「ｈｔｔｐ：／／ＹＹＹ・・・．ｃｏｍ／ａｊａｘ／ｌｉｂｓ／ｊｑｕｅｒｙ／１．３．０／ｊｑｕｅｒｙ．ｊｓ」である場合も、ＵＲＩ判定部ｃ１２２は、先頭一致比較（「ｈｔｔｐ：／／ＹＹＹ・・・．ｃｏｍ／ａｊａｘ／ｌｉｂｓ／ｊｑｕｅｒｙ／」）でもファイル名比較でも一致すると判定する。この場合も、ＵＲＩ判定部ｃ１２２は、ステップＳ２１８で、配列ＲのＮ番目（Ｎ＝２）の内容である「ｆｉｌｅ：／／ｓｃｒｉｐｔ／ｊｑｕｅｒｙ−１．３．２．ｍｉｎ．ｊｓ」を代替ＵＲＩとして、リソース取得先ＵＲＩに設定する。
なお、上記変形例２において、ＵＲＩ部分文字列は、リソースＵＲＬのドメイン名を用いてもよい。
【００９６】
このように、本変形例２では、Ｗｅｂブラウザ端末Ｃ１は、リソースＵＲＩと、リソースＵＲＩの一部（ＵＲＩ部分文字列）が部分一致する場合に、リソースＵＲＩのＪＳファイルを代替ＪＳファイルに置き換え、置き換えた代替ＪＳファイルのＪＳプログラムを実行する。
これにより、同一のＷｅｂサイトにおいて、例えばリソースＵＲＩ文字列の一部にに含まれる「／１．３．２／」のようなバージョン情報や「／２００９．０８．１１／」のようなリリース日付けを意味する部分のみが異なっていても、Ｗｅｂブラウザ端末Ｃ１は、適切な代替ＪＳファイルのＪＳプログラムで置き換えることができる。
また、バージョンやリリース日付けが異なるＪＳファイルのリソースＵＲＩ毎に、そのＵＲＩ判定情報を書き込まなくても、代替ＵＲＩと対応付けることができる。また、これにより、配列Ｔの設定個数の増加を防止することができる。
特に著名なＪＳライブラリの開発を行っているＷｅｂサイトでは、同一Ｗｅｂサイト上に過去のものを含む複数バージョンのＪＳファイルが存在しており、且つ、開発が進むにつれてそのＪＳファイルの種類が増えていくため、それらＪＳファイルについて全てを個々に指定することなく代替URIを設定できる。
また、リソースＵＲＩとファイル名以外のＵＲＩとで部分一致の判定を行うので、偶然ファイル名が同一だったことによって目的とするＪＳライブラリに対する意図しない置き換えが行われることを防止することができる。
【００９７】
（第２の実施形態）
上記第１の実施形態において、Ｗｅｂブラウザ端末Ｃ１は、ＵＲＩに基づいて代替ＵＲＩ処理を行った。本実施形態では、Ｗｅｂブラウザ端末は、リソースＵＲＬから取得したＪＳファイルのリソースデータに基づいて、このリソースデータを代替ＪＳファイルのリソースデータに変更する代替データ処理を行う。以下、本実施形態に係るＷｅｂブラウザ端末Ｃ２という。
本実施形態に係る情報処理システムを示す概念図は、図１と同じであるので説明は省略する。なお、この図のＷｅｂブラウザ端末Ｃ１１、Ｃ１２各々がＷｅｂブラウザ端末Ｃ２である。また、Ｗｅｂブラウザ端末Ｃ２のハードウェア構成を示す概略ブロック図は、図２と同じであるので説明は省略する。ただし、本実施形態に係るＷｅｂブラウザアプリケーションｆ２の機能はＷｅｂブラウザアプリケーションｆ１とは異なる。
【００９８】
図１２は、本発明の第２の実施形態に係るＷｅｂブラウザ端末Ｃ２の論理的な構成を示す概略ブロック図である。本実施形態に係るＷｅｂブラウザ端末Ｃ２（図１２）と第１の実施形態に係るＷｅｂブラウザ端末Ｃ１（図３）とを比較すると、表示制御部ｃ２１１、代替判定部ｃ２２の判定情報記憶部ｃ２２１及びデータ判定部ｃ２２２（取得先抽出部）が異なる。しかし、他の構成要素（入力部ｃ１０４、通信部ｃ１０６、表示部ｃ１０５、スクリプト取得部ｃ１１２、外部記憶部ｃ１０３）が有する機能は第１の実施形態と同じである。第１の実施形態と同じ機能の説明は省略する。
【００９９】
表示制御部ｃ２１１は、通信部ｃ１０６から入力されたファイルから、リソースＵＲＩを抽出してスクリプト取得部ｃ１１２に出力する。表示制御部ｃ２１１は、スクリプト取得部ｃ１１２から入力されたリソースＵＲＩのＪａｖａｓｃｒｉｔｐファイルａ１３のリソースデータをデータ判定部ｃ２２２に出力する。
表示制御部ｃ２１１は、データ判定部ｃ２２２から入力された代替ＵＲＩのＷｅｂ代替ＪＳファイルｂ１１、或いはローカル代替ＪＳファイルｆ２、又は、（データ判定部ｃ２２２からＮＵＬＬ値が入力された場合）スクリプト取得部ｃ１１２から入力されたリソースＵＲＩのＪａｖａｓｃｒｉｔｐファイルａ１３のＪＳプログラムを用いて、通信部ｃ１０６から入力されたファイルのプログラムを実行する。表示制御部ｃ２１１は、プログラムの実行結果の画像情報を表示部ｃ１０５に出力する。
【０１００】
判定情報記憶部ｃ２２１は、データ判定情報テーブル（図１５）を記憶する。データ判定情報テーブルは、データファイル名、及び代替ＵＲＩを対応付けたテーブルである。また、判定情報記憶部ｃ２２１は、データファイル名のデータファイルを記憶する。
データ判定部ｃ２２２は、判定情報記憶部ｃ２２１が記憶するデータ判定情報テーブルの情報と、表示制御部ｃ２１１から入力されたリソースデータに基づいて、代替ＵＲＩがあるか否かを判定する。
代替ＵＲＩがあると判定した場合、データ判定部ｃ２２２は、代替ＵＲＩをリソース取得先ＵＲＩとしてスクリプト取得部ｃ１１２に出力する。データ判定部ｃ２２２は、スクリプト取得部ｃ１１２が取得した代替ＵＲＩのＷｅｂ代替ＪＳファイルｂ１１、或いはローカル代替ＪＳファイルｆ２のリソースデータ（代替リソースデータという）を表示制御部ｃ２１１に出力する。一方、代替ＵＲＩがないと判定した場合、データ判定部ｃ２２２は、ＮＵＬＬ値を表示制御部ｃ２１１に出力する。ここでＮＵＬＬ値とは、通常の文字列とは異なる文字列であり、例えば長さが０の文字列である。
【０１０１】
図１３は、本実施形態に係るＷｅｂブラウザアプリケーションｆ２を表わすオブジェクト図である。この図のオブジェクト図は、ＵＭＬを用いて表わした図である。本実施形態に係るＷｅｂブラウザアプリケーションｆ２（図１３）と第１の実施形態に係るＷｅｂブラウザアプリケーションｆ１（図５）とを比較すると、リソースビルダーオブジェクトｏ２２、及びｄａｔａ判定オブジェクトｏ２２３が異なる。しかし、他のオブジェクトは第１の実施形態と同じである。第１の実施形態と同じオブジェクトの説明は省略する。
なお、ｄａｔａ判定オブジェクトｏ２２３は図１２のデータ判定部ｃ２１２で実装され、ローダーオブジェクトｏ１２１及びスキーム別ローダーオブジェクトはスクリプト取得部ｃ１１２で実装される。その他のオブジェクトは表示制御部ｃ２１１で実装される。
【０１０２】
リソースビルダーオブジェクトｏ２２は、リソースオブジェクトの生成を行う。具体的には、ローダーオブジェクトｏ１２１を呼び出し、リソースオブジェクト生成命令のリソースＵＲＩをリソース取得先ＵＲＩとして、このリソース取得先ＵＲＩを含むリソース取得メッセージを、ローダーオブジェクトｏ１２１に送付する。リソースビルダーオブジェクトｏ２２は、ローダーオブジェクトｏ１２１が取得したリソースＵＲＩのリソースデータをｄａｔａ判定オブジェクトｏ２２３に送付する。
ｄａｔａ判定オブジェクトｏ２２３は、送付されたリソースデータに対する代替リソースデータをリソースビルダーオブジェクトｏ２２に返却する。
リソースビルダーオブジェクトｏ２２は、ｄａｔａ判定オブジェクトｏ２２３から返却された代替リソースデータを含むレンダリング命令を生成し、レンダラーオブジェクトｏ１２２に送付する。
【０１０３】
図１４は、本実施形態に係るＷｅｂブラウザアプリケーションｆ２の実行動作の一例を示すシーケンス図である。この図は、本実施形態に係るＪＳファイル処理を行う際のＵＭＬにおけるシーケンス図である。図１４と図６を比較すると、図１４ではステップＳ３１１〜Ｓ３１７の処理が追加されている点、及び、ステップＳ１０７の処理がステップＳ３０７の処理に変更されている点が異なる。しかし、他の処理（ステップＳ１０１〜Ｓ１０６、Ｓ１０８〜Ｓ１１６の処理）は図６の処理と同じである。図６と同じ処理の説明は省略する。
【０１０４】
（ステップＳ３１１）リソースビルダーオブジェクトｏ２２は、ステップＳ１０６で返却されたリソースデータのｍｉｍｅ−ｔｙｐｅ値が「ｔｅｘｔ／ｊａｖａｓｃｒｉｐｔ」であるか否かを判定する。ｍｉｍｅ−ｔｙｐｅ値が「ｔｅｘｔ／ｊａｖａｓｃｒｉｐｔ」であると判定した場合、ステップＳ１０６で返却されたリソースデータを含む代替データ存在チェックメッセージをｄａｔａ判定オブジェクトｏ２２３に送付する。その後、ステップＳ３１２へ進む。
【０１０５】
（ステップＳ３１２）ｄａｔａ判定オブジェクトｏ２２３は、ステップＳ３１１で送付された代替データ存在チェックメッセージを取得し、取得した代替データ存在チェックメッセージのリソースデータに基づいて代替ＵＲＩが存在するか否かを判定する。また、代替ＵＲＩが存在すると判定した場合、ｄａｔａ判定オブジェクトｏ２２３は、その代替ＵＲＩを読み出す。その後、ステップＳ３１３へ進む。
（ステップＳ３１３）ステップＳ３１３で代替ＵＲＩが存在すると判定した場合、ｄａｔａ判定オブジェクトｏ２２３は、ステップＳ３１２で読み出した代替ＵＲＩをリソース取得先ＵＲＩとし、このリソース取得先ＵＲＩを含むリソース取得メッセージを、ローダーオブジェクトｏ１２１に送付する。その後、ステップＳ３１４へ進む。
一方、ステップＳ３１３で代替ＵＲＩが存在しないと判定した場合は、ステップＳ３１７へ進む。
【０１０６】
（ステップＳ３１４）ローダーオブジェクトｏ１２１は、ステップ３１３で送付されたリソース取得メッセージを取得し、取得したリソース取得メッセージのリソース取得先ＵＲＩに基づいてスキームを判定する。ローダーオブジェクトｏ１２１は、判定したスキームのスキーム別ローダーオブジェクト（ｆｉｌｅローダーオブジェクトｏ１２１２）に対して、リソース取得先ＵＲＩを含むデータ取得メッセージを送付する。その後、ステップＳ３１５へ進む。
【０１０７】
（ステップＳ３１５）ｆｉｌｅローダーオブジェクトｏ１２１２は、ステップＳ３１４で送付されたデータ取得メッセージを取得し、取得したデータ取得メッセージのリソース取得先ＵＲＩからリソースデータを取得する。ｆｉｌｅローダーオブジェクトｏ１２１２は、取得したリソースデータをデータ取得メッセージの返値としてローダーオブジェクトｏ１２１に返却する。その後、ステップＳ３１６へ進む。
（ステップＳ３１６）リソースデータをローダーオブジェクトｏ１２１は、ステップＳ３１５で返却されたリソースデータを、リソース取得メッセージの返値としてｄａｔａ判定オブジェクトｏ２２３に返却する。その後、ステップＳ３１７へ進む。
【０１０８】
（ステップＳ３１７）ｄａｔａ判定オブジェクトｏ２２３は、ステップＳ３１１で送付された代替データ存在チェックメッセージの返値として、ステップＳ３１６で返却されたリソースデータをリソースビルダーオブジェクトｏ２２に返却する。ここで、ステップＳ３１３で代替ＵＲＩが存在しないと判定した場合には、ｄａｔａ判定オブジェクトｏ２２３は、ＮＵＬＬ値をデータ取得メッセージの返値としてリソースビルダーオブジェクトｏ２２に返却する。その後、ステップＳ３０７へ進む。
（ステップＳ３０７）リソースビルダーオブジェクトｏ２２は、ステップＳ３１７で返却されたリソースデータを含むレンダリング命令を生成し、レンダラーオブジェクトｏ１２２に送付する。ここで、ステップＳ３１６でＮＵＬＬ値が返却された場合には、リソースビルダーオブジェクトｏ２２は、ステップＳ１０６で返却されたリソースデータを含むレンダリング命令を生成し、レンダラーオブジェクトｏ１２２に送付する。その後、ステップＳ１０８へ進む。
なお、ローダーオブジェクトｏ１２１、リソースビルダーオブジェクトｏ２２及びｄａｔａ判定オブジェクトｏ２２３が行うステップＳ３１１〜Ｓ３１７、Ｓ３０７の処理が代替データ処理である。
【０１０９】
以下、代替データ処理の詳細について説明をする。
図１５は、本実施形態に係るデータ判定情報テーブルの一例を示す概略図である。図示するようにデータ判定情報テーブルは、データファイル名及び代替ＵＲＩの各項目の列を有している。データ判定情報テーブルは、行毎にデータ判定情報が格納される行と列からなる２次元の表形式のデータである。
例えば、図１５の１行目のデータ判定情報は、符号２００１を付したデータファイル名「ファイル１」に対する代替ＵＲＩとして、符号２１０１を付した「ｆｉｌｅ：／／ｓｃｒｉｐｔ／ｊｑｕｅｒｙ−１．３．２．ｍｉｎ．ｊｓ」が対応付けられていることを示す。
例えば、データファイル名「ファイル１」のデータファイルは図１６に示す内容であり、また、データファイル名「ファイル２」のデータファイルは図１７に示す内容である。図１６、図１７はデータファイルの一例を示す概略図であり、これらのデータファイルはＪａｃａｓｃｒｉｐｔコード（ＪＳプログラム）を表わす文字列で記載されている。
【０１１０】
図１８は、本実施形態に係る代替データ処理の一例を示すフローチャートである。
（ステップＳ４１１）図１２のデータ判定部ｃ２２２（ｄａｔａ判定オブジェクトｏ２２３）は、取得した代替データ存在チェックメッセージのリソースデータのｄａｔａ値（チェック対象テキストデータ）を文字列として文字列変数ＴＥＸＴに代入する。その後、ステップＳ４１２へ進む。
（ステップＳ４１２）データ判定部ｃ２２２は、整数変数Ｎに「１」を代入する。また、この変数Ｎは配列Ｆ及び配列Ｒの添え字として用いられる。また、データ判定部ｃ２２２は、判定情報記憶部ｃ２２１が記憶するデータ判定情報テーブル（図１５）でのｎ行目のデータファイル名のデータファイルの内容（テキストデータ；プログラムの識別情報）を配列Ｆのｎ番目の要素に代入する。また、データ判定部ｃ２２２は、判定情報記憶部ｃ２２１が記憶するデータ判定情報テーブルでのｎ行目の代替ＵＲＩを配列Ｒのｎ番目の要素に代入する。その後、ステップＳ４１３へ進む。
【０１１１】
（ステップＳ４１３）データ判定部ｃ２２２は、配列ＦのＮ番目の内容の文字列と変数ＴＥＸＴの文字列を比較する。この比較は、配列ＦのＮ番目の要素である文字列と変数ＴＥＸＴの文字列とが完全一致しているか否かを比較する。その後、ステップＳ４１４へ進む。
（ステップＳ４１４）データ判定部ｃ２２２は、ステップＳ４１３の比較の結果、文字列が完全に一致したか否かを判定する。判定の結果、文字列が完全に一致したと判定した場合、ステップＳ４１８へ進む。一方、文字列が完全に一致しないと判定した場合、ステップＳ４１５へ進む。
（ステップＳ４１５）データ判定部ｃ２２２は、変数Ｎの値を１増やす。その後、ステップＳ４１６へ進む。
【０１１２】
（ステップＳ４１６）データ判定部ｃ２２２は、変数Ｎの値が配列Ｆの要素数を超えたか否かを判定する。判定の結果、変数Ｎの値が配列Ｆの要素数を超えたと判定した場合（はい）は、配列Ｆの全ての要素について比較が完了しているので、ステップＳ４１７へ進む。一方、変数Ｎの値が配列Ｆの要素数を超えていないと判定した場合（いいえ）は、配列Ｆに比較する要素がまだ残っているので、ステップＳ４１３へ戻る。
（ステップＳ４１７）データ判定部ｃ２２２は、ＮＵＬＬ値を代替データ存在チェックメッセージの返値（リソースビルダーオブジェクトｏ２２への返値）に設定する。その後、動作を終了する。
（ステップＳ４１８）データ判定部ｃ２２２は、配列ＲのＮ番目の内容を、つまり、配列ＲのＮ番目の要素である代替ＵＲＩの文字列（図８でのＮ行目の代替ＵＲＩ）を、スクリプト取得部ｃ１１２に出力する。その後、ステップＳ４１９へ進む。
（ステップＳ４１９）スクリプト取得部ｃ１１２は、ステップＳ４１８で出力された代替ＵＲＩから代替ＪＳファイルを取得し、データ判定部ｃ２２２に出力する。データ判定部ｃ２２２は、入力された代替ＪＳファイルからｍｉｍｅ−ｔｙｐｅ値とｄａｔａ値と抽出し、抽出した値をリソースデータとして、代替データ存在チェックメッセージの返値（リソースビルダーオブジェクトｏ２２への返値）に設定する。その後、動作を終了する。
なお、データ判定部ｃ２２２は、ステップＳ４１７又はＳ４１９で設定したリソースデータを表示制御部ｃ２１１に出力する。
【０１１３】
このように、本実施形態によれば、Ｗｅｂブラウザ端末Ｃ２は、リソースＵＲＩのＪＳファイルの内容と、記憶するデータファイルの内容とが一致する場合に、ＪＳファイルを他の代替ＪＳファイルに置き換え、置き換えた代替ＪＳファイルのＪＳプログラムを実行する。これにより、ＪＳファイルのリソースＵＲＩやファイル名が変更された場合でもＪＳファイルの内容によって、ＪＳファイルを識別することができ、適切な代替ＪＳファイルで置き換えることができる。
【０１１４】
＜変形例３＞
以下、本実施形態の変形例について説明をする。
本実施形態では、Ｗｅｂブラウザ端末Ｃ２がＪａｃａｓｃｒｉｐｔコード（ＪＳプログラム）を表わす文字列で記載されたファイルのデータに基づいて代替データ処理を行う場合について説明をした。しかし、本発明はこれに限らず、ファイルの内容を数値等の他の文字列に変換し、変換した文字列（変換データという）に基づいてＷｅｂブラウザ端末Ｃ２が代替データ処理を行ってもよい。ここで、変数ＴＥＸＴの内容を数値化には、例えば、文字列の文字数を数値化の値としてもよいし、また、文字列の各文字を８ビットの数値としてその総和を求めるチェックサム（Ｃｈｅｃｋ  Ｓｕｍ）を数値化の値としてもよい、また、文字列の各文字を８ビットの数値としてそのハッシュ関数の値を数値化の値してもよい。なお、ハッシュ関数としては例えばＳＨＡ（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）−１やＭＤ（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ  Ａｌｇｏｒｉｔｈｍ）５などがある。
【０１１５】
図１９は、本実施形態の変形例３に係るデータ判定情報テーブルの一例を示す概略図である。図示するようにデータ判定情報テーブルは、変換データ及び代替ＵＲＩの各項目の列を有している。データ判定情報テーブルは、行毎にデータ判定情報が格納される行と列からなる２次元の表形式のデータである。
図１８において、符号２１０１、２１０２を付した変換データ（変換データ２１０１、２１０２という）は、それぞれ、ハッシュ関数としてＭＤ５を用いて、図１６、図１７のデータファイルを変換した変換データである。なお、これらの変換データは、１６進数で標記したハッシュ値である。
【０１１６】
このように、本変形例３によれば、Ｗｅｂブラウザ端末Ｃ２は、ＪＳファイルの内容を変換した変換データに基づいて、ＪＳファイルを他の代替ＪＳファイルに置き換え、置き換えた代替ＪＳファイルのＪＳプログラムを実行する。これにより、ＪＳファイルの内容をそのまま比較する場合と比較して、メモリｃ１０２及び外部記憶部ｃ１０３で使用する記憶容量を低減することができる。
また、文字列を数値化する方法としてハッシュ関数を用いると、異なるＪＳファイルの内容に対して偶然同一の値になる可能性が大幅に減るため、目的とするＪＳライブラリに対する意図しない代替が行われることを防止することができる。
【０１１７】
（第３の実施形態）
ＪＳライブラリを作成する際、グローバルオブジェクトの名称（グローバルオブジェクト名という）、例えばＪＳライブラリ毎に固有のグローバル変数を１個定義する。そのグローバル変数に値を指定することで、その値に対応付けられたグローバルオブジェクトのメソッドを呼び出すことができる。このように、グローバル変数とその値を、ＪＳライブラリのＡＰＩとして用いることがある。その際、グローバルオブジェクトに値を設定する命令文（グローバルオブジェクト値設定命令文という。例えば、グローバルオブジェクトに値を設定するｖａｒ文）が用いられる。ここで、グローバルオブジェクト値設定命令文には、グローバルオブジェクト名が含まれている。
例えば、ＪＳライブラリが「ｐｒｏｔｏｔｙｐｅ．ｊｓ」であれば、使用するグローバル変数の名前は「Ｐｒｏｔｏｔｙｐｅ」と決められている。したがって、グローバルオブジェクト名からどのＪＳライブラリを利用しようとしているかの判定をすることができるので、そのＪＳライブラリに変わる代替ライブラリを選択することできる。
【０１１８】
本実施形態では、Ｗｅｂブラウザ端末は、リソースＵＲＬから取得したＪＳファイルのリソースデータからグローバルオブジェクト名を抽出し、抽出したグローバルオブジェクト名に基づいて、代替ＪＳファイルのＪＳプログラムの実行コードを生成する代替モジュール（ＡＰＩ）処理を行う。以下、本実施形態に係るＷｅｂブラウザ端末Ｃ３という。
本実施形態に係る情報処理システムを示す概念図は、図１と同じであるので説明は省略する。なお、この図のＷｅｂブラウザ端末Ｃ１１、Ｃ１２各々がＷｅｂブラウザ端末Ｃ３である。また、Ｗｅｂブラウザ端末Ｃ３のハードウェア構成を示す概略ブロック図は、図２と同じであるので説明は省略する。ただし、本実施形態に係るＷｅｂブラウザアプリケーションｆ３の機能はＷｅｂブラウザアプリケーションｆ１とは異なる。
【０１１９】
図２０は、本発明の第３の実施形態に係るＷｅｂブラウザ端末Ｃ３の論理的な構成を示す概略ブロック図である。本実施形態に係るＷｅｂブラウザ端末Ｃ３（図２０）と第１の実施形態に係るＷｅｂブラウザ端末Ｃ１（図３）とを比較すると、表示制御部ｃ３１１、代替判定部ｃ３２の判定情報記憶部ｃ３２１及びモジュール判定部ｃ３２２（取得先抽出部）が異なる。しかし、他の構成要素（入力部ｃ１０４、通信部ｃ１０６、表示部ｃ１０５、スクリプト取得部ｃ１１２、外部記憶部ｃ１０３）が有する機能は第１の実施形態と同じである。第１の実施形態と同じ機能の説明は省略する。
【０１２０】
表示制御部ｃ３１１は、通信部ｃ１０６から入力されたファイルから、リソースＵＲＩを抽出してスクリプト取得部ｃ１１２に出力する。表示制御部ｃ３１１は、スクリプト取得部ｃ１１２から入力されたリソースＵＲＩのＪａｖａｓｃｒｉｔｐファイルａ１３のリソースデータからグローバルオブジェクト名を抽出し、抽出したグローバルオブジェクト名をモジュール判定部ｃ３２２に出力する。
表示制御部ｃ３１１は、モジュール判定部ｃ３２２から入力された代替ＵＲＩをリソース取得先ＵＲＩとしてスクリプト取得部ｃ１１２に出力する。表示制御部ｃ１１１は、スクリプト取得部ｃ１１２から入力されたＷｅｂ代替ＪＳファイルｂ１１、或いはローカル代替ＪＳファイルｆ２、又は、（モジュール判定部ｃ３２２からＮＵＬＬ値が入力された場合）スクリプト取得部ｃ１１２から入力されたリソースＵＲＩのＪａｖａｓｃｒｉｔｐファイルａ１３のリソースデータを用いて、ＪＳプログラムの実行コードを生成する。表示制御部ｃ３１１は、生成した実行コードを実行して、通信部ｃ１０６から入力されたファイルのプログラムを実行する。表示制御部ｃ３１１は、プログラムの実行結果の画像情報を表示部ｃ１０５に出力する。
【０１２１】
判定情報記憶部ｃ３２１は、モジュール判定情報テーブル（図２３）を記憶する。モジュール判定情報テーブルは、グローバルオブジェクト名、及び代替ＵＲＩを対応付けたテーブルである。
モジュール判定部ｃ３２２は、判定情報記憶部ｃ３２１が記憶するモジュール判定情報テーブルの情報と、表示制御部ｃ３１１から入力されたグローバルオブジェクト名に基づいて、代替ＵＲＩがあるか否かを判定する。
代替ＵＲＩがあると判定した場合、モジュール判定部ｃ３２２は、代替ＵＲＩを表示制御部ｃ３１１に出力する。一方、代替ＵＲＩがないと判定した場合、モジュール判定部ｃ３２２は、ＮＵＬＬ値を表示制御部ｃ３１１に出力する。
【０１２２】
図２１は、本実施形態に係るＷｅｂブラウザアプリケーションｆ３を表わすオブジェクト図である。この図のオブジェクト図は、ＵＭＬを用いて表わした図である。本実施形態に係るＷｅｂブラウザアプリケーションｆ３（図２１）と第１の実施形態に係るＷｅｂブラウザアプリケーションｆ１（図５）とを比較すると、ＪＳレンダラーオブジェクトｏ３２２２、及びＡＰＩ判定オブジェクトｏ３２３が異なる。しかし、他のオブジェクトは第１の実施形態と同じである。第１の実施形態と同じオブジェクトの説明は省略する。
なお、ＡＰＩ判定オブジェクトｏ３２３は、図１２のデータ判定部ｃ２１２で実装され、ローダーオブジェクトｏ１２１及びスキーム別ローダーオブジェクトはスクリプト取得部ｃ１１２で実装される。ＪＳレンダラーオブジェクトｏ３２２２等のその他のオブジェクトは表示制御部ｃ３１１で実装される。
【０１２３】
ＪＳレンダラーオブジェクトｏ３２２２は、ＪＳファイルのＪＳプログラムから、グローバルオブジェクト値設定命令文を検出する。ＪＳレンダラーオブジェクトｏ３２２２は、グローバルオブジェクト値設定命令文を検出した場合、検出したグローバルオブジェクト値設定命令文から、グローバルオブジェクト名を抽出してＡＰＩ判定オブジェクトｏ３２３に送付する。
ＡＰＩ判定オブジェクトｏ３２３は、送付されたグローバルオブジェクト名に対する代替ＵＲＩをＪＳレンダラーオブジェクトｏ３２２２に返却する。
ＪＳレンダラーオブジェクトｏ３２２２は、ＡＰＩ判定オブジェクトｏ３２３から返却された代替ＵＲＩをローダーオブジェクトｏ１２１に送付する。ＪＳレンダラーオブジェクトｏ３２２２は、ローダーオブジェクトｏ１２１から返却された代替ＵＲＩのＪＳファイルのＪＳプログラムのプログラムコードを解析して実行コードを抽出し、抽出した実行コードが書き込まれたＪＳリソースオブジェクトｏ１１３を生成する。
【０１２４】
図２２は、本実施形態に係るＷｅｂブラウザアプリケーションｆ３の実行動作の一例を示すシーケンス図である。この図は、本実施形態に係るＪＳファイル処理を行う際のＵＭＬにおけるシーケンス図である。図２１と図６を比較すると、図２１ではステップＳ１１１の処理がステップＳ５１１の処理に変更されている点、及び、ステップＳ５１１〜Ｓ５１９の処理が追加されている点が異なる。しかし、他の処理（ステップＳ１０１〜Ｓ１１０、Ｓ１１３〜Ｓ１１６の処理）は図６の処理と同じである。図６と同じ処理の説明は省略する。
【０１２５】
（ステップＳ５１１）ＪＳレンダラーオブジェクトｏ３２２２は、ステップＳ１０９で送付されたｄａｔａ値を取得し、取得したｄａｔａ値に対して命令文解析処理を行う。ＪＳレンダラーオブジェクトｏ３２２２は、この命令文解析処理で、グローバルオブジェクト値設定命令文を検出した場合、ステップＳ５１２へ進む。
（ステップＳ５１２）ＪＳレンダラーオブジェクトｏ３２２２は、ステップＳ５１１で検出したグローバルオブジェクト値設定命令文からグローバルオブジェクト名を抽出し、抽出したグローバルオブジェクト名を含む代替モジュール存在チェックメッセージを、ＡＰＩ判定オブジェクトｏ３２３に送付する。その後、ステップＳ５１３へ進む。
【０１２６】
（ステップＳ５１３）ＡＰＩ判定オブジェクトｏ３２３は、ステップＳ５１２で送付された代替モジュール存在チェックメッセージを取得し、取得した代替モジュール存在チェックメッセージのオブジェクト名に基づいて代替ＵＲＩが存在するか否かを判定する。代替ＵＲＩが存在すると判定した場合、ＡＰＩ判定オブジェクトｏ３２３は、代替ＵＲＩを読み出し、読み出した代替ＵＲＩを代替モジュール存在チェックメッセージの返値として、ＪＳレンダラーオブジェクトｏ３２２２に返却する。一方、ステップＳ３１３で代替ＵＲＩが存在しないと判定した場合、ＡＰＩ判定オブジェクトｏ３２３は、ＮＵＬＬ値を代替モジュール存在チェックメッセージの返値としてＪＳレンダラーオブジェクトｏ３２２２に返却する。その後、ステップＳ５１４へ進む。
【０１２７】
（ステップＳ５１４）ＪＳレンダラーオブジェクトｏ３２２２は、ステップＳ５１３で返却された代替ＵＲＩをリソース取得先ＵＲＩとし、このリソース取得先ＵＲＩを含むリソース取得メッセージを、ローダーオブジェクトｏ１２１に送付する。
リソース取得先ＵＲＩとして、このリソース取得先ＵＲＩを含むリソース取得メッセージを、ローダーオブジェクトｏ１２１に送付する。その後、ステップＳ５１５へ進む。一方、ステップＳ５１４でＮＵＵＬ値が返却された場合は、ステップＳ５１８へ進む。
（ステップＳ５１５）ローダーオブジェクトｏ１２１は、ステップ５１４で送付されたリソース取得メッセージを取得し、取得したリソース取得メッセージのリソース取得先ＵＲＩに基づいてスキームを判定する。ローダーオブジェクトｏ１２１は、判定したスキームのスキーム別ローダーオブジェクト（ｆｉｌｅローダーオブジェクトｏ１２１２）に対して、リソース取得先ＵＲＩを含むデータ取得メッセージを送付する。その後、ステップＳ５１６へ進む。
【０１２８】
（ステップＳ５１６）ｆｉｌｅローダーオブジェクトｏ１２１２は、ステップＳ５１５で送付されたデータ取得メッセージを取得し、取得したデータ取得メッセージのリソース取得先ＵＲＩからリソースデータを取得する。なお、このリソースデータは、代替ＪＳファイルのリソースデータである。ｆｉｌｅローダーオブジェクトｏ１２１２は、取得したリソースデータをデータ取得メッセージの返値としてローダーオブジェクトｏ１２１に返却する。その後、ステップＳ５１７へ進む。
（ステップＳ５１７）リソースデータをローダーオブジェクトｏ１２１は、ステップＳ５１６で返却されたリソースデータを、リソース取得メッセージの返値としてｄａｔａ判定オブジェクトｏ２２３に返却する。その後、ステップＳ５１８へ進む。
【０１２９】
（ステップＳ５１８）ＪＳレンダラーオブジェクトｏ３２２２は、実行コードに用いる予定たったｄａｔａ値であってステップＳ１０９で送付されたｄａｔａ値を破棄し、代わりに、ステップＳ５１７で返却されたリソースデータのｄａｔａ値を取得する。ＪＳレンダラーオブジェクトｏ３２２２は、取得したｄａｔａ値に対して命令文解析処理を行う。一方、ステップＳ５１４でＮＵＵＬ値が返却された場合は、ＪＳレンダラーオブジェクトｏ３２２２は、ステップＳ１０９で送付されたｄａｔａ値に対して命令文解析処理を行う。その後、ステップＳ５１９へ進む。
（ステップＳ５１９）ＪＳレンダラーオブジェクトｏ３２２２は、ステップＳ５１１での命令文解析処理の結果、ＪＳプログラムの実行コードを生成し、生成した実行コードを生成したＪＳリソースオブジェクトｏ１１３に書き込む。その後、ステップＳ１１３へ進む。
なお、ＪＳレンダラーオブジェクトｏ３２２２及びＡＰＩ判定オブジェクトｏ３２３が行うステップＳ５１１〜Ｓ３１９の処理が代替モジュール処理である。
【０１３０】
以下、代替モジュール処理の詳細について説明をする。
図２３は、本実施形態に係るモジュール判定情報テーブルの一例を示す概略図である。図示するようにモジュール判定情報テーブルルは、グローバルオブジェクト名及び代替ＵＲＩの各項目の列を有している。モジュール判定情報テーブルは、行毎にデータ判定情報が格納される行と列からなる２次元の表形式のデータである。
例えば、図２３の１行目のデータ判定情報は、符号３００１を付したグローバルオブジェクト名「ｊＱｕｅｒｙ」に対する代替ＵＲＩとして、符号３１０１を付した「ｆｉｌｅ：／／ｓｃｒｉｐｔ／ｊｑｕｅｒｙ−１．３．２．ｍｉｎ．ｊｓ」が対応付けられていることを示す。
【０１３１】
図２４は、本実施形態に係る代替モジュール処理の一例を示すフローチャートである。
（ステップＳ６１１）図２０のモジュール判定部ｃ３２２（ＡＰＩ判定オブジェクトｏ３２３）は、取得した代替モジュール存在チェックメッセージのグローバルオブジェクト名（チェック対象テキストデータ）を文字列として文字列変数ＮＡＭＥに代入する。その後、ステップＳ６１２へ進む。
（ステップＳ６１２）モジュール判定部ｃ３２２は、整数変数Ｎに「１」を代入する。また、この変数Ｎは配列Ｍ及び配列Ｒの添え字として用いられる。また、モジュール判定部ｃ３２２は、判定情報記憶部ｃ３２１が記憶するモジュール判定情報テーブル（図２３）でのｎ行目のグローバルオブジェクト名を配列Ｍのｎ番目の要素に代入する。また、モジュール判定部ｃ３２２は、判定情報記憶部ｃ３２１が記憶するモジュール判定情報テーブルでのｎ行目の代替ＵＲＩを配列Ｒのｎ番目の要素に代入する。その後、ステップＳ６１３へ進む。
【０１３２】
（ステップＳ６１３）モジュール判定部ｃ３２２は、配列ＭのＮ番目の内容の文字列と変数ＮＡＭＥの文字列を比較する。この比較は、配列ＭのＮ番目の要素である文字列と変数ＮＡＭＥの文字列とが完全一致しているか否かを比較する。その後、ステップＳ６１４へ進む。
（ステップＳ６１４）モジュール判定部ｃ３２２は、ステップＳ６１３の比較の結果、文字列が完全に一致したか否かを判定する。判定の結果、文字列が完全に一致したと判定した場合、ステップＳ６１９へ進む。一方、文字列が完全に一致しないと判定した場合、ステップＳ６１５へ進む。
（ステップＳ６１５）モジュール判定部ｃ３２２は、変数Ｎの値を１増やす。その後、ステップＳ６１６へ進む。
【０１３３】
（ステップＳ６１６）モジュール判定部ｃ３２２は、変数Ｎの値が配列Ｍの要素数を超えたか否かを判定する。判定の結果、変数Ｎの値が配列Ｍの要素数を超えたと判定した場合（はい）は、配列Ｍの全ての要素について比較が完了しているので、ステップＳ６１７へ進む。一方、変数Ｎの値が配列Ｍの要素数を超えていないと判定した場合（いいえ）は、配列Ｍに比較する要素がまだ残っているので、ステップＳ６１３へ戻る。
（ステップＳ６１７）モジュール判定部ｃ３２２は、ＮＵＬＬ値を代替データ存在チェックメッセージの返値（リソースビルダーオブジェクトｏ２２への返値）に設定する。その後、ステップＳ６１８へ進む。
（ステップＳ６１８）表示制御部ｃ３１１は、グローバルオブジェクト名を含むグローバルオブジェクト値設定命令文に従い、元のＪＳファイルを用いて実行コードを生成する。その後、動作を終了する。
【０１３４】
（ステップＳ６１９）モジュール判定部ｃ３２２は、配列ＲのＮ番目の内容を、つまり、配列ＲのＮ番目の要素である代替ＵＲＩの文字列（図８でのＮ行目の代替ＵＲＩ）を、表示制御部ｃ３１１に出力する。その後、ステップＳ６２０へ進む。
（ステップＳ６２０）表示制御部ｃ３１１は、スクリプト取得部ｃ１１２を介して、ステップＳ６１８で出力された代替ＵＲＩから代替ＪＳファイルを取得する。その後、ステップＳ６２１へ進む。
（ステップＳ６２１）表示制御部ｃ３１１（ＪＳレンダラーオブジェクトｏ３２２２）は、ステップＳ６２０で取得した代替ＪＳファイルを用いて実行コードを生成する。その後、動作を終了する。
【０１３５】
このように、本実施形態によれば、Ｗｅｂブラウザ端末Ｃ３は、プログラム内に記載された代入文に用いられるグローバル変数名に基づいて、ＪＳファイルを他の代替ＪＳファイルに置き換え、置き換えた代替ＪＳファイルのＪＳプログラムを実行する。これにより、情報処理装置に応じた動作をするアプリケーションを提供することができる。
【０１３６】
なお、上記第３の実施形態において、代替ＪＳファイルのＡＰＩとして使用しているグローバルオブジェクト名が複数ある場合は、それら全てのグローバルオブジェクト名が含まれているかを判定することで、代替する対象かどうかの判別を行ってもよい。例えば、ｐｒｏｔｏｔｙｐｅ．ｊｓであれば使用するグローバルオブジェクト名として「Ｐｒｏｔｏｔｙｐｅ」以外にも、「ＰｅｒｉｏｄｉｃａｌＥｘｅｃｕｔｅｒ」、「Ｔｅｍｐｌａｔｅ」、「Ａｂｓｔｒａｃｔ」、「Ｅｎｕｍｅｒａｂｌｅ」、「Ａｊａｘ」、「Ｈａｓｈ」等が利用されている。これら全てがリソースＵＲＩのＪＳファイルに含まれている場合にｐｒｏｔｏｔｙｐｅ．ｊｓであると判定し、このファイルに対応付けた代替ＵＲＩから代替ＪＳファイルを取得して置き換えることで、１つのグローバルオブジェクト名でｐｒｏｔｏｔｙｐｅ．ｊｓであると判定する場合と比較して、判定する際の誤り発生を防ぐことができる。
【０１３７】
＜変形例４＞
以下、本実施形態の変形例について説明をする。
本実施形態では、モジュール判定部ｃ３２２がグローバルオブジェクト名に基づいて代替モジュール処理を行う場合について説明をした。しかし、本発明はこれに限らず、関数オブジェクトに基づいて代替モジュール処理を行ってもよい。
【０１３８】
以下、モジュールに関係するＪａｃａｓｃｒｉｐｔ言語の機能について説明をする。
まず、Ｊａｃａｓｃｒｉｐｔ言語の関数オブジェクトには、関数スコープ機能がある。スコープとは、ある変数や関数が特定の名称で参照される範囲のことである。この機能により、関数内部で定義された変数やパラメータについては、関数外部からアクセスすることができない。この機能を利用してＪＳライブラリ固有の処理を関数内部にカプセル化し、それ以外の処理との間で変数名や関数名の衝突を避けている。
次に、Ｊａｃａｓｃｒｉｐｔ言語の関数オブジェクトには、クロージャ機能がある。クロージャはプログラム内で環境を共有するための仕組みである。この機能により、ＪＳライブラリに相当する関数Ａの内部で別の関数Ｂを定義した場合、関数Ｂを実行する際には関数Ａの内部にある変数やパラメータへアクセスすることができる。さらに、関数Ｂは関数Ａの外部で実行することもでき、その場合も関数Ａの内部にある変数やパラメータへアクセスできる。これを利用してＪＳライブラリ内部の処理をＪＳライブラリの外部から呼出すことができる。
【０１３９】
この機能を用いると、ＪＳライブラリに相当する関数Ａ（ライブラリＡという）の内部でグローバルオブジェクトに関数オブジェクトである関数Ｂ（関数オブジェクトＢという）を代入した場合に、ライブラリＡの外部からグローバルオブジェクトを介して関数Ｂを呼出すことができる。
このようにした場合、Ｊａｃａｓｃｒｉｐｔ言語によるライブラリＡを作成した場合、ライブラリＡは名称を持つ必要が無い。そのためライブラリＡを無名関数とすることができる。また、この場合、ライブラリＡを定義した後に実行することで内部の関数Ｂが定義されるため、ライブラリＡを、その関数定義と同時に実行することもできる。さらに、この場合、関数オブジェクトＢを代入するグローバルオブジェクトとして、ＪＳライブラリ固有のグローバル変数を指定せず、関数内部のパラメータ「ｔｈｉｓ」にセットされているグローバルオブジェクトに対して、ＪＳライブラリ固有のメソッドとして設定することもできる。
【０１４０】
以上より、上述の場合において、Ｊａｃａｓｃｒｉｐｔ言語における記述は、例えば、「（ｆｕｎｃｔｉｏｎ（）｛  ｖａｒ  ｔｈｉｓ．ａｐｉ  ＝  ｆｕｎｃｔｉｏｎ（）｛  〜  ｝；  〜  ｝）（）；」と記述される。外側のｆｕｎｃｔｉｏｎ式（前から１番目の「ｆｕｎｃｔｉｏｎ」）が上述の関数Ａ（無名関数）に相当し、内側のｆｕｎｃｔｉｏｎ式（前から２番目の「ｆｕｎｃｔｉｏｎ」）が上述の関数Ｂに相当する。例えば、実際のＪＳライブラリであるｊｑｕｅｒｙ．ｊｓの場合も、この形式となっている。
また、関数オブジェクトＢを代入している「ｖａｒ文」は、関数Ａの定義内容の冒頭部分に位置する。関数オブジェクトＢ内の処理を行う「命令文」は、「ｖａｒ文」の後に位置する。
【０１４１】
本変形例４では、Ｗｅｂブラウザ端末Ｃ３は、グローバルオブジェクト名に代えて、「ｖａｒ文」で代入対象となっている変数名（上記の例では「ｔｈｉｓ．ａｐｉ」）に基づいて代替モジュール処理を行う。
具体的に、この場合、表示制御部ｃ３１１は、スクリプト取得部ｃ１１２から入力されたリソースＵＲＩのＪａｖａｓｃｒｉｔｐファイルａ１３のリソースデータから「無名関数を用いたｆｕｎｃｔｉｏｎ式」（「（ｆｕｎｃｔｉｏｎ（）｛」と「｝）（）；」の組み合わせの文字列）を選択する。表示制御部ｃ３１１は、選択した無名関数の定義内容の冒頭部分で「ｖａｒ文」で代入対象となっている変数名を抽出し（「（ｆｕｎｃｔｉｏｎ（）｛」と「｝）（）；」との間で、先頭の「ｖａｒ」から「＝」までの文字列）、抽出した変数名をモジュール判定部ｃ３２２に出力する。
モジュール判定部ｃ３２２は、判定情報記憶部ｃ３２１が記憶するモジュール判定情報テーブルの情報（変数名及び代替ＵＲＩの対応情報）と、表示制御部ｃ３１１から入力された変数名に基づいて、代替ＵＲＩがあるか否かを判定する。
【０１４２】
このように、本変形例４によれば、Ｗｅｂブラウザ端末Ｃ３は、プログラム内に記載された定義文に用いられる変数名に基づいて、ＪＳファイルを他の代替ＪＳファイルに置き換え、置き換えた代替ＪＳファイルのＪＳプログラムを実行する。具体的には、変数名を調べる範囲を「無名関数を用いたｆｕｎｃｔｉｏｎ式」の「関数の定義内容」の冒頭部部分に並ぶ「ｖａｒ文」に限定することで、Ｊａｖａｓｃｒｉｐｔ言語におけるモジュールを用いている場合にのみ、代替する対象かどうかの判断を行っている。そのため、偶然、Ｊａｖａｓｃｒｉｐｔ言語における「関数オブジェクト」の内部で、著名なＪＳライブラリと同一の変数名のセットを使用していても、判定を誤ることを防止することができる。
【０１４３】
なお、上記各実施形態において、ＵＲＩ判定情報テーブル、データ判定情報テーブル、及びモジュール判定情報テーブルは、Ｗｅｂブラウザ端末Ｃ１〜Ｃ３の製造時に記憶されてもよいし、ソフトウエアのインストール時に記憶されてもよい。また、Ｗｅｂブラウザ端末Ｃ１〜Ｃ３がネットワークを介して新しいＵＲＩ判定情報テーブル、データ判定情報テーブル、及びモジュール判定情報テーブルをダウンロードし、更新してもよい。これにより、これらのテーブルも更新することができ、代替ＪＳファイルの変更にも柔軟に対応することができる。
また、上記各実施形態において、ＵＲＩ判定情報テーブル、データ判定情報テーブル、モジュール判定情報テーブルが、それぞれ、リソースＵＲＩ及び代替ＵＲＩ、データファイル名（或いは変換データ）及び代替ＵＲＩ、グローバルオブジェクト名及びＵＲＩを対応付けて記憶している場合について説明をしたが、それぞれの項目を別のファイルに記憶してもよい（例えば、リソースＵＲＩを記憶するファイルと代替ＵＲＩを記憶するファイル）。この場合は、例えば、ファイル内の情報の対応付けを順序によって対応付け、それぞれ配列に代入する（例えば、一方のファイルで図８のＵＲＩ１００１を１番目、ＵＲＩ１００４を４番目の順に記憶し、もう一方のファイルでＵＲＩ１１０１を１番目、ＵＲＩ１１０４を４番目に記憶する）。また、上記第２の実施形態において、データ判定情報テーブルでデータファイル名を記憶し、そのデータファイル名のデータファイルを配列Ｆに代入したが、データ判定情報テーブルで、データファイル名に代えて、データファイルの内容を記憶してもよい。この場合、データファイルの内容を直接配列Ｆに代入する。
【０１４４】
また、上記各実施形態において、Ｗｅｂブラウザ端末Ｃ１〜Ｃ３は、Ｗｅｂ代替ＪＳファイルを取得するため代替ＵＲＩにアクセスする際、Ｗｅｂブラウザ端末Ｃ１、Ｃ２、Ｃ３やＷｅｂブラウザアプリケーションｆ１〜ｆ３固有の情報（固有情報という）、例えば、機種情報やＷｅｂブラウザのバージョン等をＷｅｂサーバＢ１に送信してもよい。この場合、ＷｅｂサーバＢ１は、受信した固有情報に応じて異なるＷｅｂ代替ＪＳファイルを、Ｗｅｂブラウザ端末Ｃ１〜Ｃ３に提供してもよい。
【０１４５】
この場合、具体的には、以下のような処理を行う。
例えば、Ｗｅｂブラウザ端末Ｃ１〜Ｃ３がＷｅｂサーバＢ１に、ｈｔｔｐプロトコルを用いてアクセスする場合、Ｕｓｅｒ−Ａｇｅｎｔリクエストヘッダフィールドに固有情報を含めればよい。このＵｓｅｒ−Ａｇｅｎｔリクエストヘッダフィールドは、リクエストを生成したユーザエージェントについての情報を含むものである。このフィールドは、統計目的、プロトコル違反の追跡、特定のユーザエージェントの制限を回避するようなレスポンスを作成するためのユーザエージェントの自動認識のために利用される。このフィールドには、複数の製品トークンや、エージェントやユーザエージェントの重要な付属製品を識別するためのコメントを含める事ができ、慣習によれば、製品トークンはアプリケーションを識別するために重要な順に列挙される。
また、例えば、Ｗｅｂブラウザ端末Ｃ１〜Ｃ３は、任意のユーザ拡張ヘッダフィールドを用いて固有情報を送信してもよい。具体的には、「Ｘ−ＰｒｏｄｕｃｔＩＤ」のように「Ｘ−」で始まるフィールド名はｈｔｔｐの仕様書で定義される事は無く、常にユーザ定義ヘッダとして使用できるので、このようなフィールド名のフィールドを用いて固有情報を送信すればよい。
また、例えば、Ｗｅｂブラウザ端末Ｃ１〜Ｃ３は、問合せ構成要素（ｑｕｅｒｙ部分）を代替ＵＲＩに追加し、代替ＵＲＩの一部として固有情報を送信してもよい。具体的には、代替ＵＲＩが「ｈｔｔｐ：／／ＸＸＸ・・・．ｃｏｍ／ｅｘａｍｐｌｅ．ｊｓ」である場合、このＵＲＩにｑｕｅｒｙ部分「ＰｒｏｄｕｃｔＩＤ＝ｍｏｄｅｌ１０」（ｍｏｄｅｌ１０が固有情報）を追加した代替ＵＲＩ「ｈｔｔｐ：／／ＸＸＸ・・・．ｃｏｍ／ｅｘａｍｐｌｅ．ｊｓ？ＰｒｏｄｕｃｔＩＤ＝ｍｏｄｅｌ１０」を用いてアクセスしてもよい。
【０１４６】
以上のように、Ｗｅｂブラウザ端末Ｃ１〜Ｃ３は固有情報を送信し、ＷｅｂサーバＢ１は、受信した固有情報に応じて異なるＷｅｂ代替ＪＳファイルをＷｅｂブラウザ端末Ｃ１〜Ｃ３に提供する。これにより、例えば複数機種のＷｅｂブラウザ端末Ｃ１〜Ｃ３に対して当初は同一の代替ＪＳファイルを同一の代替ＵＲＩで提供していたが、その後、機種毎に別の代替ＪＳファイルを提供するように変更する事態が発生した場合でも、Ｗｅｂブラウザ端末Ｃ１〜Ｃ３はそのまま同一の代替ＵＲＩにアクセスしても、機種に応じた代替ＪＳファイルを取得することができる。すなわち、Ｗｅｂブラウザ端末Ｃ１〜Ｃ３では、機種毎の代替ＵＲＩに変更を行わなくてもよく、機種毎の保守の手間を軽減できる。
【０１４７】
また、上記各実施形態において、Ｗｅｂブラウザ端末Ｃ１〜Ｃ３の構成を組み合わせてもよい。例えば、Ｗｅｂブラウザ端末Ｃ１に表示制御部ｃ２１１及び代替判定部ｃ２２を加えてもよいし、Ｗｅｂブラウザ端末Ｃ１に表示制御部ｃ３１１及び代替判定部ｃ３２を加えてもよいし、その両方を加えてもよい。また、Ｗｅｂブラウザ端末Ｃ２に
表示制御部ｃ３１１及び代替判定部ｃ３２を加えてもよい。
【０１４８】
この場合、表示制御部ｃ１１１及び代替判定部ｃ１２の処理（代替ＵＲＩ処理）、表示制御部ｃ２１１及び代替判定部ｃ２２の処理（代替データ処理）、表示制御部ｃ３１１及び代替判定部ｃ３２の処理（代替モジュール処理）、の順に処理をすることが好ましい。
なお、代替ＵＲＩ処理及び代替データ処理で判定対象となるＪＳファイル（リソースＵＲＩのＪＳファイル）と、代替モジュール処理で判定対象となるＪＳファイルを異なる種類のＪＳファイルとしてもよい。具体的には、ＵＲＩ判定情報テーブル及びデータ判定情報テーブルには「ｐｒｏｔｏｔｙｐｅ−１．６．０．３．ｊｓ」のＵＲＩ、ファイルデータを含めず、モジュール判定情報テーブルのみに「ｐｒｏｔｏｔｙｐｅ−１．６．０．３．ｊｓ」のオブジェクト名（「Ｐｒｏｔｏｔｙｐｅ」）を含ませる。これにより、既に代替ＵＲＩ処理で取得した代替ＪＳファイルに対して、代替モジュール処理を行うことを防止うることができる。
【０１４９】
また、上記各実施形態において、代替ＪＳファイルにおいて、その実行処理でＪａｖａｓｃｒｉｐｔ言語を用いて実行する代わりに、Ｗｅｂブラウザ端末Ｃ１〜Ｃ３が内蔵し直接実行可能なバイナリコードで実行してもよい。
これは元のＪＳファイルの動作と代替したバイナリコードの動作が同じ場合に実施する。これは例えば、元のＪＳファイルの動作が動的に変化するものではない場合である。
この場合、「ｊｓ−ｃｔｙｐｅｓ」拡張を用いて代替したバイナリコードの呼び出しを行う。「ｊｓ−ｃｔｙｐｅｓ」拡張では、予めＪａｖａｓｃｒｉｐｔ実行部を拡張し、オブジェクト「ｃｔｙｐｅｓ」の処理を組み込んでおく。このオブジェクトはメソッド「ｎａｍｅ」をもち、「ｃｔｙｐｅｓ．ｎａｍｅ（〜）」の形式で引数として呼出したいバイナリコードを含む動的ライブラリのファイル名を指定する。このメソッドの実行結果として、ライブラリオブジェクト（「ｌｉｂ」という）が得られる。このライブラリオブジェクトｌｉｂはメソッド「ｄｅｃｌａｒｅ」を持ち、「ｌｉｂ．ｄｅｃｌａｒｅ（〜）」の形式で引数として呼出したいバイナリコードのライブラリに含まれる関数名を指定する。このメソッドの実行結果として、Ｊａｖａｓｃｒｉｐｔ言語における関数オブジェクトが得られる。
そして、このＪａｖａｓｃｒｉｐｔ言語における関数オブジェクトをＪＳプログラム内で呼出すことで、呼出したいバイナリコードを含む動的ライブラリ内の指定の関数が呼出される。このように、取得した代替ＪＳファイル内でこの「ｊｓ−ｃｔｙｐｅｓ」拡張を用いてＷｅｂブラウザ端末が内蔵し直接実行可能なバイナリコードを実行する。これにより、ＪＳファイルを代替ＪＳファイルに置き換えるだけでなく、実行に際してもＪａｖａｓｃｒｉｐｔ言語による実行よりも効率的な内蔵するバイナリコードによる実行が行える。
【０１５０】
なお、上述した実施形態におけるＷｅｂブラウザ端末Ｃ１、Ｃ２、Ｃ３の一部、例えば、通信部ｃ１０６、表示制御部ｃ１１１、スクリプト取得部ｃ１１２、ＵＲＩ判定部ｃ１２２、データ判定部ｃ２２２、及びモジュール判定部ｃ３２２をコンピュータで実現するようにしても良い。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、Ｗｅｂブラウザ端末Ｃ１、Ｃ２、Ｃ３に内蔵されたコンピュータシステムであって、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【０１５１】
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
【符号の説明】
【０１５２】
Ａ１・・・Ｗｅｂサーバ、Ｂ１・・・Ｗｅｂサーバ、Ｃ１、Ｃ２、Ｃ３・・・Ｗｅｂブラウザ端末（情報処理装置）、ｃ１０４・・・入力部、ｃ１０６・・・通信部、ｃ１１１・・・表示制御部（制御部）、ｃ１０５・・・表示部、ｃ１１２・・・スクリプト取得部（取得部）、ｃ１０３・・・外部記憶部、ｃ１２、ｃ２２、ｃ３２・・・代替判定部、ｃ１２１、ｃ２２１、ｃ３２１・・・判定情報記憶部、ｃ１２２・・・ＵＲＩ判定部（取得先抽出部）、ｃ２２２・・・データ判定部（取得先抽出部）、ｃ３２２・・・モジュール判定部（取得先抽出部）、ｏ１０１・・・ブラウザオブジェクト、ｏ１１１・・・画面リソースオブジェクト、ｏ１１２・・・ｈｔｍｌリソースオブジェクト、ｏ１１３・・・Ｊａｖａｓｃｒｉｐｔリソースオブジェクト、ｏ１２、ｏ２２・・・リソースビルダーオブジェクト、ｏ１２１・・・ローダーオブジェクト、ｏ１２１１・・・ｈｔｔｐローダーオブジェクト、ｏ１２１２・・・ｆｉｌｅローダーオブジェクト、ｏ１２２・・・レンダラーオブジェクト、ｏ１２２１・・・ｈｔｍｌレンダラーオブジェクト、ｏ１２２２、ｏ３２２２・・・Ｊａｖａｓｃｒｉｐｔレンダラーオブジェクト、ｏ１２３・・・ＵＲＩ判定オブジェクト、ｏ２２３・・・ｄａｔａ判定オブジェクト、ｏ３２３・・・ＡＰＩ判定オブジェクト
【図１】
0005500968.tif 000002
【図２】
0005500968.tif 000003
【図３】
0005500968.tif 000004
【図４】
0005500968.tif 000005
【図５】
0005500968.tif 000006
【図６】
0005500968.tif 000007
【図７】
0005500968.tif 000008
【図８】
0005500968.tif 000009
【図９】
0005500968.tif 000010
【図１０】
0005500968.tif 000011
【図１１】
0005500968.tif 000012
【図１２】
0005500968.tif 000013
【図１３】
0005500968.tif 000014
【図１４】
0005500968.tif 000015
【図１５】
0005500968.tif 000016
【図１６】
0005500968.tif 000017
【図１７】
0005500968.tif 000018
【図１８】
0005500968.tif 000019
【図１９】
0005500968.tif 000020
【図２０】
0005500968.tif 000021
【図２１】
0005500968.tif 000022
【図２２】
0005500968.tif 000023
【図２３】
0005500968.tif 000024
【図２４】
0005500968.tif 000025