JP5500968B2 - 情報処理装置、情報処理方法、及び情報処理プログラム - Google Patents

情報処理装置、情報処理方法、及び情報処理プログラム Download PDF

Info

Publication number
JP5500968B2
JP5500968B2 JP2009285018A JP2009285018A JP5500968B2 JP 5500968 B2 JP5500968 B2 JP 5500968B2 JP 2009285018 A JP2009285018 A JP 2009285018A JP 2009285018 A JP2009285018 A JP 2009285018A JP 5500968 B2 JP5500968 B2 JP 5500968B2
Authority
JP
Japan
Prior art keywords
program
alternative
acquisition
uri
resource
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009285018A
Other languages
English (en)
Other versions
JP2011128762A (ja
Inventor
隆夫 乾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sharp Corp
Original Assignee
Sharp Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sharp Corp filed Critical Sharp Corp
Priority to JP2009285018A priority Critical patent/JP5500968B2/ja
Publication of JP2011128762A publication Critical patent/JP2011128762A/ja
Application granted granted Critical
Publication of JP5500968B2 publication Critical patent/JP5500968B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Description

本発明は、情報処理装置、情報処理方法、及び情報処理プログラムに関する。
従来、情報処理装置では、予め情報処理装置にインストールされたソフトウエアを実行して様々なアプリケーション(ローカルアプリケーション)を提供していた。しかし、近年では、情報処理装置がWebサーバ等と通信し、Webサーバと情報処理装置とが一体となってアプリケーション(Webアプリケーション)を提供することがある。
具体的に、Webアプリケーションは、従来のローカルアプリケーションにおけるソフトウエアに代えて、Webサーバ側のソフトウエアとWebクライアント(情報処理装置、例えば、Webブラウザ機能を有するWebブラウザ端末)側のソフトウエアを実行することによって提供される。提供に際しては、Webサーバ側のソフトウエアは主にデータ処理を実行し、Webクライアント側のソフトウエアは画面表示やユーザによる操作に関する処理を実行する分担になっていることが多い。
ここで、Webクライアント側のソフトウエアは、Webブラウザ端末で実行されるソフトウエアである。なお、Webクライアント側のソフトウエアには、従来の静的なHTMLコンテンツと異なり、アプリケーションとして動作するための動的なコンテンツを提供するソフトウエアが含まれる。また、Webクライアント側のソフトウエアは、例えばJavascript(登録商標。以下同じ)言語のようなスクリプト言語で記述されたプログラム(JSプログラムという)を、Webブラウザ機能の一部として実行する。具体的には、JSプログラムは、Webサーバ側で保持され、Webアプリケーション実行時にWebクライアント側へダウンロードされた後、Webブラウザ機能の一部として実行される。
以上のように、Webアプリケーションを作成する場合、Webクライアント側のソフトウエアとしてJavascript言語を用いてアプリケーションの機能を実装するが、その際、複数のWebアプリケーション間で流用が可能な機能を実装することが多くなっている。このため、共通利用できる機能を「ライブラリ」としてまとめ、再利用による作成の効率化が図られている。Javascript言語で作成された汎用のライブラリとしては、例えばprototype.js(http://www.prototypejs.org)やjquery.js(http://jquery.com)などが存在する。
これらライブラリとして用意されたJSプログラムを利用する際には、ライブラリ毎に定められたAPI(Application Program Interface)を用いる。APIとは、命令や関数の集合を利用するためのプログラム上の手続きを定めた規約の集合であり、JSプログラムでは規約に従ってライブラリが提供する機能を呼び出す。例えば、上述のprototype.jsやjquery.jsなどのライブラリについても、その機能を利用するAPIが定められ、公開されている。
ところで、例えば、PC(パーソナルコンピュータ)上のWebブラウザで実行する事を想定したJSプログラムを、PCと機能(画面の大きさや情報処理能力等)が異なる携帯電話装置上のWebブラウザ機能の一部として実行する場合を考える。このとき、JSプログラムの作成時に携帯電話装置での利用が想定されていなかった場合、表示画面の大きさや画面描画速度の違い、入力操作手段の差などによって、Webアプリケーションを快適に利用できない場合が発生することがある。
この問題に対して、Webアプリケーションの画面表示内容については、従来の静的なHTMLコンテンツの場合と同様に、携帯電話装置上のWebブラウザで「ユーザCSS(Cascading Style Sheets)」を設定することで、その携帯電話装置の表示画面のサイズに応じた表示に合わせて修正することが知られている。CCSとは、HTMLやXMLで記載されたプログラムをどのように修飾して表示するかを指示する仕様である。
しかし、例えばPC上のWebブラウザで実行する際にはユーザ操作における利便性を提供していたアニメーション処理なども、描画速度が遅い情報処理装置上のWebブラウザで実行すると、操作における反応性の低下を引き起こしてしまう。また、例えばPC上のWebブラウザで実行する際には画面上にポップアップ表示する情報提示の方法も、表示画面が狭い携帯電話装置上のWebブラウザで実行すると、画面の表示範囲をはみ出してしまい情報提示としての役目を果せない場合がある。
この問題に対して、特許文献1には、個々の端末がそれぞれ異なる処理性能、表示能力、ネット通信頻度を持ち、サーバが個々の端末の前記情報を保持管理するシステムについて記載されている。このシステムでは、サーバが保持管理している個々の端末の情報に基づいて個々の端末毎に適切な処理スクリプトを供給し、端末は供給された処理スクリプトをサーバからダウンロードして実行する。
特表2004−506282号公報
しかしながら、特許文献1記載の技術では、アプリケーションを提供する装置各々が、情報処理装置の種類に応じて異なる処理スクリプトを供給する必要があるという欠点があった。特にWebアプリケーションの提供者と情報処理装置の製造者とが異なる場合、Webアプリケーション提供者が情報処理装置の製造者の要望に応えた動作をするWebアプリケーションを提供できない場合がある。
本発明は上記の点に鑑みてなされたものであり、情報処理装置に応じた動作をするアプリケーションを提供することができる情報処理装置、情報処理方法、及び情報処理プログラムを提供する。
(1)本発明は上記の課題を解決するためになされたものであり、本発明は、動作処理を記述するスクリプト言語のプログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部と、実行予定の前記プログラムの識別情報と前記判定情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する取得先抽出部と、前記取得先抽出部が抽出した取得先から前記代替プログラムを取得する取得部と、を有する情報処理装置であって、前記判定情報記憶部は、前記プログラムの内容と前記代替プログラムの取得先とを対応付けた判定情報とを記憶し、前記取得先抽出部は、前記判定情報記憶部が記憶するプログラムの内容のうち、前記取得部が取得した代替プログラムの内容と一致しているプログラムの内容に対応する代替プログラムの取得先をさらに抽出し、前記取得部は、前記取得先抽出部が抽出した取得先から他の代替プログラムを取得し、前記実行予定のプログラムを、前記取得部が取得した他の代替プログラムに置き換え、置き換えた代替プログラムを実行する制御部と、を備えることを特徴とする情報処理装置である。
(2)また、本発明は、動作処理を記述するスクリプト言語のプログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部と、実行予定の前記プログラムの識別情報と前記判定情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する取得先抽出部と、前記取得先抽出部が抽出した取得先から前記代替プログラムを取得する取得部と、を有する情報処理装置であって、前記判定情報記憶部は、所定の命令文で用いられる対象の名称と前記代替プログラムの取得先とを対応付けた判定情報とを記憶し、前記取得先抽出部は、前記判定情報記憶部が記憶する対象の名称のうち、前記取得部が取得した代替プログラムから抽出された対象の名称に対応する代替プログラムの取得先をさらに抽出し、前記取得部は、前記取得先抽出部が抽出した取得先から他の代替プログラムを取得し、前記実行予定のプログラムを、前記取得部が取得した他の代替プログラムに置き換え、置き換えた代替プログラムを実行する制御部と、を備えることを特徴とする情報処理装置である。
(3)また、本発明は、上記の情報処理装置において、前記代替プログラムは、情報処理装置の情報処理能力に応じたプログラムであることを特徴とする。
(4)また、本発明は、上記の情報処理装置において、前記代替プログラムは、情報処理装置の種類に応じたプログラムであることを特徴とする。
(5)また、本発明は、上記の情報処理装置において、前記情報処理装置は、プログラムを実行して画像を表示する表示装置であり、前記代替プログラムは、情報処理装置の動画の再生能力に応じたプログラムであることを特徴とする。
(6)また、本発明は、上記の情報処理装置において、前記判定情報記憶部が記憶するプログラムの内容は、当該プログラムの内容を変換した文字列で表され、前記取得先抽出部は、前記判定情報記憶部が記憶するプログラムの内容のうち、前記取得部が取得した代替プログラムの内容を変換した変換データと一致している変換データに対応する代替プログラムの取得先をさらに抽出することを特徴とする。
(7)また、本発明は、上記の情報処理装置において、前記命令文は、変数に値を代入する代入文であることを特徴とする。
(8)また、本発明は、上記の情報処理装置において、前記命令文は、関数を定義する定義文であることを特徴とする。
(9)また、本発明は、上記の情報処理装置において、前記判定情報を更新することを特徴とする。
(10)また、本発明は、上記の情報処理装置において、前記取得部は、外部の装置から前記代替プログラムを取得することを特徴とする。
(11)また、本発明は、上記の情報処理装置において、前記プログラムは、ライブラリで提供されるプログラムであることを特徴とする。
(12)また、本発明は、上記の情報処理装置において、前記プログラムは、Javascript言語のプログラムであることを特徴とする。
(13)また、本発明は、動作処理を記述するスクリプト言語のプログラムを実行する情報処理装置における情報処理方法において、前記情報処理装置が、前記プログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部に記憶された判定情報と、実行予定の前記プログラムの識別情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する過程と、前記抽出された取得先から前記代替プログラムを取得する過程と、前記プログラムの内容と前記代替プログラムの取得先とを対応付けた判定情報とを記憶する判定情報記憶部が記憶するプログラムの内容のうち、前記取得した代替プログラムの内容と一致しているプログラムの内容に対応する代替プログラムの取得先をさらに抽出する過程と、さらに抽出された取得先から他の代替プログラムを取得する過程と、前記実行予定のプログラムを、前記他の代替プログラムに置き換え、置き換えた代替プログラムを実行する過程と、を有することを特徴とする情報処理方法である
(14)また、本発明は、動作処理を記述するスクリプト言語のプログラムを実行する情報処理装置における情報処理方法において、前記情報処理装置が、前記プログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部に記憶された判定情報と、実行予定の前記プログラムの識別情報と前記判定情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する過程と、前記抽出された取得先から前記代替プログラムを取得する過程と、所定の命令文で用いられる対象の名称と前記代替プログラムの取得先とを対応付けた判定情報とを記憶する判定情報記憶部が記憶する対象の名称のうち、前記取得された代替プログラムから抽出された対象の名称に対応する代替プログラムの取得先をさらに抽出する過程と、さらに抽出された取得先から他の代替プログラムを取得する過程と、前記実行予定のプログラムを、前記抽出された他の代替プログラムに置き換え、置き換えた代替プログラムを実行する過程と、を有することを特徴とする情報処理方法である
(15)また、本発明は、動作処理を記述するスクリプト言語のプログラムを実行する情報処理装置のコンピュータに、前記プログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部に記憶された判定情報と、実行予定の前記プログラムの識別情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する手順、前記抽出された取得先から前記代替プログラムを取得する手順、前記プログラムの内容と前記代替プログラムの取得先とを対応付けた判定情報とを記憶する判定情報記憶部が記憶するプログラムの内容のうち、前記取得した代替プログラムの内容と一致しているプログラムの内容に対応する代替プログラムの取得先をさらに抽出する手順、さらに抽出された取得先から他の代替プログラムを取得する手順、前記実行予定のプログラムを、前記他の代替プログラムに置き換え、置き換えた代替プログラムを実行する手順、を実行させるための情報処理プログラムである。
(16)また、本発明は、動作処理を記述するスクリプト言語のプログラムを実行する情報処理装置のコンピュータに、前記プログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部に記憶された判定情報と、実行予定の前記プログラムの識別情報と前記判定情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する手順、前記抽出された取得先から前記代替プログラムを取得する手順、所定の命令文で用いられる対象の名称と前記代替プログラムの取得先とを対応付けた判定情報とを記憶する判定情報記憶部が記憶する対象の名称のうち、前記取得された代替プログラムから抽出された対象の名称に対応する代替プログラムの取得先をさらに抽出する手順、さらに抽出された取得先から他の代替プログラムを取得する手順、前記実行予定のプログラムを、前記抽出された他の代替プログラムに置き換え、置き換えた代替プログラムを実行する手順、を実行させるための情報処理プログラムである
本発明によれば、情報処理装置各々に応じた動作をするアプリケーションを提供することができる。
本発明の第1の実施形態に係る情報処理システムを示す概念図である。 本実施形態に係るWebブラウザ端末のハードウェア構成を示す概略ブロック図である。 本実施形態に係るWebブラウザ端末の論理的な構成を示す概略ブロック図である。 本実施形態に係る代替JavascriptファイルのJSプログラムの一例を示す概略図である。 本実施形態に係るWebブラウザアプリケーションを表わすオブジェクト図である。 Webブラウザアプリケーションの実行動作の一例を示すシーケンス図である。 本実施形態に係るWebブラウザアプリケーションの実行動作の一例を示すシーケンス図である。 本実施形態に係るURI判定情報テーブルの一例を示す概略図である。 本実施形態に係る代替URI処理の一例を示すフローチャートである。 本実施形態の変形例1に係るURI判定情報テーブルの一例を示す概略図である。 本実施形態の変形例2に係るURI判定情報テーブルの一例を示す概略図である。 本発明の第2の実施形態に係るWebブラウザ端末の論理的な構成を示す概略ブロック図である。 本実施形態に係るWebブラウザアプリケーションを表わすオブジェクト図である。 本実施形態に係るWebブラウザアプリケーションの実行動作の一例を示すシーケンス図である。 本実施形態に係るデータ判定情報テーブルの一例を示す概略図である。 本実施形態に係るデータファイルの一例を示す概略図である。 本実施形態に係るデータファイルの別の一例を示す概略図である。 本実施形態に係る代替データ処理の一例を示すフローチャートである。 本実施形態の変形例3に係るデータ判定情報テーブルの一例を示す概略図である。 本発明の第3の実施形態に係るWebブラウザ端末の論理的な構成を示す概略ブロック図である。 本実施形態に係るWebブラウザアプリケーションを表わすオブジェクト図である。 本実施形態に係る本実施形態に係るWebブラウザアプリケーションの実行動作の一例を示すシーケンス図である。 本実施形態に係るモジュール判定情報テーブルの一例を示す概略図である。 本実施形態に係る代替モジュール処理の一例を示すフローチャートである。
(第1の実施形態)
以下、図面を参照しながら本発明の実施形態について詳しく説明する。
図1は、本発明の第1の実施形態に係る情報処理システムを示す概念図である。図1において、情報処理システムは、WebサーバA1、WebサーバB1、Webブラウザ端末C11、C12、・・・(各々をWebブラウザ端末C1という)を具備する。ネットワークN1はインターネットやLAN等のネットワークであり、WebサーバA1、WebサーバB1、及びWebブラウザ端末C1はネットワークN1を介して無線又は有線で接続され、互いに通信を行う。
WebサーバA1は、Webサイトa1として提供するサイト情報を記憶する。具体的には、WebサーバA1は、サイト情報として、HTML(HyperText Markup Language)で記述されたプログラムが記載されたhtmlファイルa11、HTMLファイルをどのように修飾して表示するかを指示する仕様のプログラムが記載されたCSS(Cascading Style Sheets)ファイルa12、及び、主にWebブラウザ上での動的処理(例えば、HTMLの動的書き換えや入力フォームでの入力文字の自動補完)を記述するプログラムが記載されたJavascriptファイル(以下、JSファイルという)a13を記憶する。
なお、JSファイルa13のプログラムは、Javascript言語で記載されている(以下、Javascript言語で記載されたプログラムをJSプログラムという)。JSファイルは、複数の共通利用できるJSプログラムをまとめた汎用のライブラリ(JSライブラリという)として用いられる。JSライブラリとして用意されたJSプログラムを利用する際には、JSライブラリ毎に定められたAPI(Application Program Interface)を用いる。APIとは、命令や関数の集合を利用するためのプログラム上の手続きを定めた規約の集合である。また、WebサーバA1が提供するWebサイトa1は、一般的なWebアプリケーションを提供しているWebサイトである。
なお、HTMLとは、Webページを記述するためのマークアップ言語でありW3Cが規格を作成している。また、CSSファイルa12も複数の共通利用できるプログラムをまとめた汎用のライブラリであり、APIを用いて利用される。
WebサーバA1は、Webブラウザ端末C1からの要求に応じて、記憶するサイト情報をネットワークN1を介してWebブラウザ端末C1へ送信する。具体的には、Webブラウザ端末C1は、Webサイトa1に割り当てられているURI(Uniform Resource Identifier;統一書式資源識別子)を指定し、WebサーバA1にサイト情報を要求する。ここで、URIとは、ネットワーク上であるか端末上であるかを問わず、統一した書式でファイルなどのリソースの所在を記述する方法である。例えば、インターネットで広く用いられているURL(Uniform Resource Locator)がURIに含まれる。
WebサーバB1は、Webサイトb1として提供する代替JSファイル(WebサーバB1が記憶する代替JSファイルを、Web代替JSファイルb11という)を記憶する。ここで、代替JSファイルは、複数の共通利用できるJSプログラムをまとめた汎用のJSライブラリ(代替ライブラリという)として用いられる。ただし、この代替ライブラリの利用に用いるAPIはJSライブラリの利用に用いるAPIと同等のインタフェースであるが、それぞれのAPIが提供するJSプログラムの内容は異なり(図3参照)、それぞれのJSプログラムが実行された場合の動作処理も異なる。
WebサーバB1は、Webブラウザ端末C1からのAPIを用いた要求に応じて、代替ライブラリからJSプログラムを読み出し、ネットワークN1を介してWebブラウザ端末C1へ送信する。ここで、Webブラウザ端末C1は、Webサイトb1に割り当てられているURI(このURIはWebサイトa1のものと異なる)を指定して、Webサイトb1が提供するAPIを利用する。
Webブラウザ端末C1は、Webブラウザ機能を有する端末である。ここで、Webブラウザ機能とは、HTMLやJavascript等で記載されたWebページを表示する機能である。Webブラウザ端末C1は、WebサーバA1からHTMLファイルをダウンロードし、APIを用いてダウンロードしたCSSのプログラムやJSプログラムを利用して、Webページを表示する。
ここで、Webブラウザ端末C1は、APIを用いるとき、JSライブラリのAPIを用いるか、代替ライブラリのAPIを用いるかを判定し、判定結果に基づいて、WebサーバA1又はB1のいずれかが提供するAPIを用いてJSプログラムを利用する。
<Webブラウザ端末C1の構成について>
図2は、本実施形態に係るWebブラウザ端末C1のハードウェア構成を示す概略ブロック図である。この図において、Webブラウザ端末C1は、CPU(央演算処理装置)c101、メモリ(主記憶装置)c102、外部記憶部c103、入力部c104、表示部c105、通信部c106、及びデータバスc107を含んで構成される。
CPU c101は、メモリc102から読み出した情報を実行し、各部を制御する。例えば、CPU c101は、メモリc102からWebブラウザアプリケーションf1を読み出して実行することで、通信部c106から入力されたWebページ(例えば、図1のhtmlファイルa11)の表示データを生成して表示部c105へ出力する。また、入力部c104から入力されたデータを演算処理し、通信部c106からネットワークN1を介して外部の装置(例えば、図1のWebサーバA1)に送信する。
メモリc102は、CPU c101が実行をするソフトウエアプログラムやこのプログラムが使用するデータ等の情報を一時的に記憶する。メモリc102が記憶する情報は、予め記憶する情報、又は、外部記憶部c103、入力部c104、或いは通信部c106から書き込まれる。メモリc102は、例えば、RAM(Random Access Memory)等の半導体記憶装置である。
外部記憶部c103は、ソフトウエアプログラムやこのプログラムが使用するデータファイル等の情報を記憶する。例えば、外部記憶部c103は、代替JSファイル(Webブラウザ端末C1が記憶する代替JSファイルをローカル代替JSファイルf2という)を予め記憶する。外部記憶部c103は、例えば、不揮発性半導体記憶装置や、ハードディスク装置である。
入力部c104は、Webブラウザ端末C1を操作するユーザからの入力を受け付ける。入力部c104は、受け付けた入力に基づいて生成した情報をメモリc102に書き込む。入力部c104は、例えば、キーボードやマウス、タッチパネル等である。
表示部c105は、CPU c101の演算処理結果の情報(表示データ)を取得し、その情報をWebブラウザで表示する。表示部c105は、例えば、液晶ディスプレイやCRT(カソード・レイ・チューブ)モニタである。
通信部c106は、CPU c101の演算処理結果の情報をネットワークN1を介して他の装置に送信する。また、通信部c106は、他の装置からネットワークN1を介して受信した情報をメモリc102又は外部記憶部c103に書き込む。通信部c106は、有線又は無線の送受信装置である。
データバスc107は、CPU c101、メモリc102、外部記憶部c103、入力部c104、表示部c105、及び通信部c106を相互に接続し、情報を交換するための経路である。
図3は、本実施形態に係るWebブラウザ端末C1の論理的な構成を示す概略ブロック図である。この図において、Webブラウザ端末C1(情報処理装置)は、入力部c104、通信部c106、表示制御部c111(制御部)、表示部c105、スクリプト取得部c112(取得部)、外部記憶部c103、及び代替判定部c12を含んで構成される。ここで、代替判定部c12は、判定情報記憶部c121(取得先抽出部)及びURI判定部c122を含んで構成される。なお、図3において図2と同じ符号を付した構成は、図2と同じ機能を有する。
通信部c106は、入力部c104から入力された情報(例えば、URI)に基づいて、他の通信装置と通信を行う。通信部c106は、通信で取得したファイル(htmlファイルa11等)を表示制御部c111に出力する。
また、通信部c106は、スクリプト取得部c112から入力されたリソース取得先URIが示す通信装置へアクセスし、図1のWeb代替JSファイルb11又はJSファイルa13を取得する。通信部c106は、取得したWeb代替JSファイルb11及びJSファイルa13をスクリプト取得部c112に出力する。
表示制御部c111は、通信部c106から入力されたファイルから、JSファイルa13等の所在を示すURI(リソースURI;プログラムの識別情報)を抽出(例えば、HTMLファイル中の「script」タグの属性「src」の値を抽出)してURI判定部c122に出力する。
表示制御部c111は、URI判定部c122から入力されたリソース取得先URIをスクリプト取得部c112に出力する。表示制御部c111は、スクリプト取得部c112から入力されたWeb代替JSファイルb11、JSファイルa13、又は、ローカル代替JSファイルf2のJSプログラムを用いて、通信部c106から入力されたファイルのプログラムを実行する。表示制御部c111は、プログラムの実行結果の画像情報を表示部c105に出力する。
判定情報記憶部c121は、URI判定情報テーブル(図8)を記憶する。URI判定情報テーブルは、リソースURI、及び、Web代替JSファイルb11、又はローカル代替JSファイルf2の所在を示す代替URIを対応付けたテーブルである。なお、リソースURIに対応付けられた代替URIの代替JSファイルのJSプログラムは、Webブラウザ端末C1各々の情報処理能力(Webブラウザ端末C1の種類や動画の再生能力(Webブラウザの種類))に応じたプログラムである。
URI判定部c122は、判定情報記憶部c121が記憶するURI判定情報テーブルの情報と、表示制御部c111から入力されたリソースURIに基づいて、このリソースURIを置き換える代替URIがあるか否かを判定する。代替URIがあると判定した場合、URI判定部c122は、代替URIをリソース取得先URIとして表示制御部c111に出力する。一方、代替URIがないと判定した場合、URI判定部c122は、入力されたリソースURIをリソース取得先URIとして表示制御部c111に出力する。なお、代替判定部c12(判定情報記憶部c121及びURI判定部c122)が行う処理を代替URI処理という。
スクリプト取得部c112は、URI判定部c122から入力されたリソース取得先URIに基づいて、このURIが示すファイルが外部装置が記憶するファイルであるか、又は自装置の外部記憶部c103が記憶するファイルであるかを判定する。リソース取得先URIが外部装置が記憶するファイルを示すと判定した場合、スクリプト取得部c112は、通信部c106にリソース取得先URIを出力する。一方、リソース取得先URIが外部記憶部c103が記憶するファイルを示すと判定した場合、スクリプト取得部c112は、外部記憶部c103からローカル代替JSファイルf2を読み出す。
スクリプト取得部c112は、通信部c106から入力されたWeb代替JSファイルb11、JSファイルa13、及び、読み出したローカル代替JSファイルf2を、リソースURIのJSファイルに代えて、表示制御部c111に出力する。
表示部c105は、表示制御部c111から入力された画像情報の画像を表示する。ここで表示される画像は、URI判定部c122が代替URIがあると判定した場合には、表示制御部c111がリソースURIのJSファイルのJSプログラムに代えて、代替URIの代替JSファイルのJSプログラムを実行し、その結果、表示部c105が表示する画像である。
<代替JSファイルについて>
ここで、代替JSファイルについて詳細を説明する。
リソースURIのJSファイルを用いてアニメーション表示などの画像表示を行うと、例えば、画面表示能力が低いWebブラウザ端末等では、画面表示処理が高負荷となり表示に要する時間が長く掛かって操作性が低下する、又は頻繁な画像書換えにより表示が見え難くなるといった、不都合が発生する場合がある。
Webブラウザ端末C1では、リソースURIのJSファイルに代えて、Webブラウザ端末C1毎に代替URIを判定し、その代替URIから取得した代替JSファイルを用いて画像表示を行う。これにより、そのWebブラウザ端末C1では、例えば、画面表示能力に応じたJSプログラムを実行することができる。
次に、その代替JSファイルの具体例を示す。
図4は、本実施形態に係る代替JSファイルのJSプログラムの一例を示す概略図である。この図においては、説明のため、プログラムに行番号を付している。なお、この図は、リソースURIのJSファイル(元ファイルという)にjQueryのVersion1.3.2を用いている場合に、画面上の視覚効果が高い表示を行うことを強制的に抑止し、画面表示処理が高負荷となることを防止するような修正変更を加えた代替JSファイルの一例である。
図4において、行番号が「3976」〜「3978」行目のプログラムが修正されている。「3976」、「3977」行目の「//」以降のプログラムは、元ファイルに記載されたプログラムであり、「//」という文字を付与することによりこのプログラムを実行しないように記載されている(コメントアウトしている)。また、図4の一例では、元ファイルに「3978」行目のプログラムが追加されている。
「3976」、「3977」行目の元ファイルのプログラムでは、変数jQuery.fx.offの値によって画面上の視覚効果が高い表示を行うか否かの切替が行われる。具体的に、視覚効果を実行した場合には、初期画像が表示され最終画像が表示されるまでの間に、時間に沿って複数の中間画像が表示される。
一方、「3978」行目のプログラムでは、変数opt.durationに「0」を代入している。この変数opt.durationはアニメーション表示などの画面上の視覚効果の実行時間を指定する変数である。この変数opt.durationに「0」を代入すると、初期画像が表示された直後に最終画像が表示され、中間画像が表示されない。つまり、画面上の視覚効果が高い表示を行うことを強制的に抑止し、情報処理能力が低いWebブラウザ端末C1で、画面表示処理が高負荷となることを防止する。
このように、例えば、情報処理能力が低いWebブラウザ端末C1は、動画処理のJSプログラムに代えて、動画処理を省略した動作を実現する代替JSプログラムを実行する。つまり、代替JSファイルのJSプログラムは、Webブラウザ端末C1の情報処理能力に応じたプログラムである。
なお、情報処理能力が低いWebブラウザ端末C1は、動画処理のJSプログラムに代えて或いは加えて、動画のコマ数を少なくする代替JSプログラム、又は画像中で移動する画像や文字の移動間隔を小さくする代替JSプログラム等に置き換えてもよい。
図5は、本実施形態に係るWebブラウザアプリケーションf1を表わすオブジェクト図である。この図のオブジェクト図は、UML(Unified Modeling Language;統一モデリング言語)を用いて表わした図である。
なお、URI判定オブジェクトは図3のURI判定部c112で実装され、ローダーオブジェクトo121及びスキーム別ローダーオブジェクトはスクリプト取得部c112で実装される。その他のオブジェクトは表示制御部c111で実装される。
ブラウザオブジェクトo101は、Webブラウザアプリケーションf1のトップレベルとなるオブジェクトである。ブラウザオブジェクトは1枚の表示画面ごとに1個の画面リソースオブジェクトo111を生成して対応付ける。
リソースオブジェクトo11は、Webブラウザで表示する画面を構成するオブジェクトである。構成要素の種類により個々のリソースオブジェクトo11が存在する。具体的に図5では、リソースオブジェクトo11には、画面リソースオブジェクトo111、htmlリソースオブジェクトo112及びJavascriptリソースオブジェクト(JSリソースオブジェクトという)o113等が含まれる。なお、図5において、htmlリソースオブジェクトo112は、リソースビルダーオブジェクトo12へリソースオブジェクト生成命令(リソースURIを含む命令)を送付することにより行う。また、1つの画面に含まれるリソースオブジェクトo11として、画面リソースオブジェクトo111のほかにhtmlリソースオブジェクトo112及びJSリソースオブジェクトo113について説明を行うが、例えば画像データのように、その他にも画面を構成するリソースオブジェクトは存在する(図5では、「○○リソースオブジェクト」として示す)。
画面リソースオブジェクトo111は、Webブラウザの表示画面に対応したリソースオブジェクトである。画面リソースオブジェクトo111は自身の子オブジェクトとして自身の画面に含まれる構成要素のリソースオブジェクトを関係付ける。具体的に、図5の例では、画面リソースオブジェクトo111の子オブジェクトとしてhtmlリソースオブジェクトo112が1個、関係付けられている。
このhtmlリソースオブジェクトo112の生成に際しては、画面リソースオブジェクトo111がリソースビルダーオブジェクトo12へリソースオブジェクト生成命令を送り、このリソースオブジェクト生成命令に基づいて生成されたhtmlリソースオブジェクトを画面リソースオブジェクトo111自身の子オブジェクトとして関係付ける。
htmlリソースオブジェクトo112は、htmlファイルを元にして生成されたリソースオブジェクトである。また、htmlリソースオブジェクトo112は、htmlファイルの文書構成に基づくDOM(Document Object Model)ツリーでhtmlファイルの内容を管理する。htmlリソースオブジェクトは自身の子オブジェクトとして自身の表示内容に含まれる他のリソース、例えばhtmlファイルに記載されているJSファイルや画像ファイルなどを、自身の子オブジェクトとして関係付ける。具体的に、図5の例では、htmlリソースオブジェクトo112の子オブジェクトとしてJSリソースオブジェクトo113が関係付けられている。
このJSリソースオブジェクトo113の生成に際しては、htmlリソースオブジェクトo112がリソースビルダーオブジェクトo12へリソースオブジェクト生成命令を送り、このリソースオブジェクト生成命令に基づいて生成されたJSリソースオブジェクトo113をhtmlリソースオブジェクトo112自身の子オブジェクトとして関係付ける。
JSリソースオブジェクトo113は、JSファイルを元にして生成されたリソースオブジェクトである。またJavascriptリソースオブジェクトo113は、JSファイルのプログラムコードに基づく実行コードを管理する。
リソースビルダーオブジェクトo12は、リソースオブジェクトの生成を行う。具体的には、リソースビルダーオブジェクトo12は、ローダーオブジェクトo121を呼び出す前にURI判定オブジェクトo123を呼び出し、リソースオブジェクト生成命令のリソースURIを送付する。
URI判定オブジェクトo123は、代替URI処理を行って、送付されたリソースURIに対するリソース取得先URIをリソースビルダーオブジェクトo12に返却する。なお、URI判定オブジェクトo123が行う代替URI処理については、後述する。
リソースビルダーオブジェクトo12は、URI判定オブジェクトo123から返却されたリソース取得先URIを含むリソース取得メッセージを、ローダーオブジェクトo121に送付する。リソースビルダーオブジェクトo12は、ローダーオブジェクトo121がリソース取得メッセージに基づいて取得したリソースデータを含むレンダリング命令を生成し、レンダラーオブジェクトo122に送付する。リソースビルダーオブジェクトo12は、レンダラーオブジェクトo122がレンダリング命令に基づいて生成したリソースオブジェクトを、リソースオブジェクト生成命令の返値として返却する。
ローダーオブジェクトo121は、リソースビルダーオブジェクトo12からリソース取得メッセージを取得する。ここで、ローダーオブジェクトo121は、リソース取得メッセージのリソース取得先URIを取得する。ローダーオブジェクトは、リソース取得先URIが示すスキームを元に、スキーム別ローダを呼出す。このスキームとは、URIの一部で示されたリソースに到達する(典型的にはリソースを取得する)ための手段(例えば、http、https、ftpのプロトコルを用いた手段)を表す。
ここで、スキーム別ローダとして、httpローダーオブジェクトo1211及びfileローダーオブジェクトo1212について説明を行う。なお、その他のスキームについても個々のスキーム別ローダブジェクト(図5では、「●●ローダーオブジェクト」として示す)がある。
httpローダーオブジェクトo1211はスキームがhttpの場合に対応するスキーム別ローダブジェクトである。httpローダーオブジェクトo1211は、httpプロトコルを用いて、取得先URIで指定されたリソースデータを取得する。fileローダーオブジェクトo1212は、スキームがfileの場合に対応するスキーム別ローダブジェクトである。例えば、fileローダーオブジェクトo1212は、外部記憶部c103からURIで指定された場所に格納されているリソースデータを取得する。
ローダーオブジェクトo121は、スキーム別ローダが取得したリソースデータをリソースビルダーオブジェクトo12へ返却する。返却するリソースデータには、データ種別を表すmime−type値とデータ実体を表すdata値を含まれる。
レンダラーオブジェクトo122は、ローダーオブジェクトo121が取得したレンダリング命令のリソースデータを用いて画面を構成するリソースオブジェクトを生成する(レンダリング)。レンダラーオブジェクトo122は、どの種類のリソースオブジェクトを生成するかを、リソースデータに含まれるmime−type値を用いて決定し、mime−type別レンダラーを呼出す。
ここで、mime−type別レンダラーとして、htmlレンダラーオブジェクトo1221及びJavascriptレンダラーオブジェクト(JSレンダラーオブジェクトという)o1222について説明を行う。なお、その他のmime−typeについても個々のmime−type別レンダラーオブジェクト(図5では、「○○レンダラーオブジェクト」として示す)がある。
htmlレンダラーオブジェクトo1221は、mime−type値がhtmlデータであることを示す「text/html」の場合に呼び出され、htmlリソースオブジェクトを生成する。具体的には、htmlレンダラーオブジェクトo1221は、htmlファイルの文書構成を解析しhtmlリソースオブジェクトo112内にDOMツリーを生成する。
JSレンダラーオブジェクトo1222は、mime−type値がJavascriptデータであることを示す「text/Javascript」の場合に呼び出され、JSリソースオブジェクトo113を生成する。具体的には、JSレンダラーオブジェクトo1222は、JSファイルのJSプログラムのプログラムコードを解析して実行コードを生成し、生成した実行コードが書き込まれたJSリソースオブジェクトo113を生成する。
以下、本実施形態に係るWebブラウザアプリケーションf1の動作について説明をする。まず、図6を用いてURI判定オブジェクトo123がない場合のWebブラウザアプリケーションの動作について説明をし、次に、図7を用いてURI判定オブジェクトo123がある場合(本実施形態)のWebブラウザアプリケーションf1の動作について説明をする。本実施形態に係るWebブラウザ端末は、後者(URI判定オブジェクトo123がある場合)のWebブラウザアプリケーションf1を記憶して実行する。
図6は、Webブラウザアプリケーションの実行動作の一例を示すシーケンス図である。この図は、htmlリソースオブジェクトo112が生成された後、htmlファイルに記載されているJSファイルの処理(JSファイル処理という)を行う際のUMLにおけるシーケンス図である。
なお、JSファイル処理は、以下のように行われる。htmlファイルに基づいて生成されたhtmlリソースオブジェクトo112は、リソースオブジェクト生成命令をリソースビルダーオブジェクトo12に対して送付する。htmlファイル内に、例えば、「<script type=”text/javascript” src=”http://www.XXX・・・.com/example.js”></script>」という記述があった場合に、このリソースオブジェクト生成命令には、リソース取得先URIとして、「script」タグの属性「src」の値であるURI値(この例では”http://www.XXX・・・.com/example.js”)が含まれる。リソースビルダーオブジェクトo12は、リソース取得先URIからJSファイルを取得し、JSリソースオブジェクトo113を生成する。htmlリソースオブジェクトo112は、リソースビルダーオブジェクトo12が生成したJSリソースオブジェクトo113を自身の子オブジェクトとして関係付ける。
以下、具体的なJSファイル処理の詳細について説明をする。
(ステップS101)htmlリソースオブジェクトo112は、リソースビルダーオブジェクトo12に対し、新たに取得するJavascriptリソースの所在を表すURI(リソースURI)を含むリソースオブジェクト生成命令を、リソースビルダーオブジェクトo12に送付する。その後、ステップS102へ進む。
(ステップS102)リソースビルダーオブジェクトo12は、ステップS101で送付されたリソースオブジェクト生成命令を取得する。リソースビルダーオブジェクトo12は、取得したリソースオブジェクト生成命令のリソースURIをリソース取得先URIとして、このリソース取得先URIを含むリソース取得メッセージを、ローダーオブジェクトo121に送付する。その後、ステップS103へ進む。
(ステップS103)ローダーオブジェクトo121は、ステップS102で送付されたリソース取得メッセージを取得し、取得したリソース取得メッセージのリソース取得先URIに基づいてスキームを判定する。例えば、ローダーオブジェクトo121は、上述の例のリソース取得先URI(”http://www.foobaa.com/example.js”)の場合、先頭部分の「http」という文字列より、スキームがhttpと判定する(以下、httpと判定した場合について説明をする)。その後、ステップS104へ進む。
(ステップS104)ローダーオブジェクトo121は、ステップS103で判定したスキームのスキーム別ローダーオブジェクト(httpローダーオブジェクトo1211)に対して、リソース取得先URIを含むデータ取得メッセージを送付する。httpローダーオブジェクトo1211は、送付されたデータ取得メッセージを取得し、取得したデータ取得メッセージのリソース取得先URIからhttpプロトコルを用いてリソースデータを取得する。その後、ステップS105へ進む。
(ステップS105)httpローダーオブジェクトo1211は、データ取得メッセージの返値として、mime−type値(以下、この値が「text/javascript」の場合について説明をする)とdata値からなるリソースデータをローダーオブジェクトo121に返却する。その後、ステップS106へ進む。
(ステップS106)ローダーオブジェクトo121は、ステップS105で返却されたリソースデータを、リソースビルダーオブジェクトo12に返却する。その後、ステップS107へ進む。
(ステップS107)リソースビルダーオブジェクトo12は、ステップS106で返却されたリソースデータを含むレンダリング命令を生成し、レンダラーオブジェクトo122に送付する。その後、ステップS108へ進む。
(ステップS108)レンダラーオブジェクトo122は、ステップS107で送付されたレンダリング命令を取得し、取得したレンダリング命令のリソースデータからmime−type値及びdata値を抽出する。その後、ステップS109へ進む。
(ステップS109)レンダラーオブジェクトo122は、ステップS108で抽出したmime−type値のレンダラーオブジェクト(JSレンダラーオブジェクトo1222)に対して、ステップS108で抽出したdata値を送付する。
(ステップS110)JSレンダラーオブジェクトo1222は、新規のJSリソースオブジェクトo113を生成する。その後、ステップS111へ進む。
(ステップS111)JSレンダラーオブジェクトo1222は、ステップS109で送付されたdata値を取得し、取得したdata値に対して命令文解析処理を行う。この命令文解析処理は、data値をJSプログラムのプログラムコードとみなしてその言語の文法に沿って内容を解析する処理である。その後、ステップS112へ進む。
(ステップS112)JSレンダラーオブジェクトo1222は、ステップS111での命令文解析処理の結果、JSプログラムの実行コードを生成し、生成した実行コードを生成したJSリソースオブジェクトo113に書き込む。その後、ステップS113へ進む。このステップS110〜S112の処理によって、JSリソースオブジェクトo113が生成される。その後、ステップS113へ進む。
(ステップS113)JSレンダラーオブジェクトo1222は、生成したJSリソースオブジェクトo113を、レンダラーオブジェクトo122に返却する。その後、ステップS114へ進む。
(ステップS114)レンダラーオブジェクトo122は、ステップS113で返却されたJSリソースオブジェクトo113を、リソースビルダーオブジェクトo12に返却する。その後、ステップS115へ進む。
(ステップS115)リソースビルダーオブジェクトo12は、ステップS114で返却されたJSリソースオブジェクトo113を、htmlリソースオブジェクトo112に返却する。その後、ステップS116へ進む。
(ステップS116)htmlリソースオブジェクトo112は、ステップS115で返却されたJSリソースオブジェクトo113を、自身の子オブジェクトに追加して関係付ける。
図7は、本実施形態に係るWebブラウザアプリケーションf1の実行動作の一例を示すシーケンス図である。この図は、本実施形態に係るJSファイル処理を行う際のUMLにおけるシーケンス図である。図7と図6を比較すると、図7ではステップS21及びS22の処理が追加されている点、及び、ステップS102の処理がステップS202の処理に変更されている点が異なる。しかし、他の処理(ステップS101、S103〜S116の処理)は図6の処理と同じである。図6と同じ処理の説明は省略する。
(ステップS21)リソースビルダーオブジェクトo12は、ステップS101で送付されたリソースオブジェクト生成命令を取得し、取得したリソースオブジェクト生成命令のリソースURIを含む代替URI存在チェックメッセージをURI判定オブジェクトo123に送付する。
URI判定オブジェクトo123は、ステップS21で送付された代替URI存在チェックメッセージを取得し、取得した代替URI存在チェックメッセージのリソースURIに基づいて代替URIが存在するか否かを判定する。また、代替URIが存在すると判定した場合、URI判定オブジェクトo123は、その代替URIを読み出す。その後、ステップS212へ進む。
(ステップS22)ステップS21で代替URIが存在すると判定した場合、URI判定オブジェクトo123は、ステップS21で読み出した代替URIをリソース取得先URIとして、リソースビルダーオブジェクトo12に返却する。一方、ステップS21で代替URI存在しないと判定した場合、ステップS21で取得したリソースオブジェクト生成命令のリソースURIを、そのままリソース取得先URIとして、リソースビルダーオブジェクトo12に返却する。その後、ステップS202へ進む。
(ステップS202)リソースビルダーオブジェクトo12は、ステップS22で返却されたURIを含むリソース取得メッセージを、ローダーオブジェクトo121に送付する。その後、ステップS103へ進む。
なお、URI判定オブジェクトo123が行うステップS21、S22の処理が代替URI処理である。
以下、代替判定部c12が行う代替URI処理の詳細について説明をする。
図8は、本実施形態に係るURI判定情報テーブルの一例を示す概略図である。図示するようにURI判定情報テーブルは、リソースURI及び代替URIの各項目の列を有している。URI判定情報テーブルは、行毎にURI判定情報が格納される行と列からなる2次元の表形式のデータである。
例えば、図8の1行目のURI判定情報は、符号1001を付したリソースURI「http://YYY・・・.com/ajax/libs/jquery/1.3.2/jquery.min.js」(URI1001)に対する代替URIとして、符号1101を付した「file://script/jquery−1.3.2.min.js」(URI1101)が対応付けられていることを示す。また、例えば、図8の4行目のURI判定情報は、符号1004を付したリソースURI「http://ZZZ・・・.org/assets/2008/9/29/prototype−1.6.0.3.js」(URI1004)に対する代替URIとして、符号1104を付した「http://XXX・・・.co.jp/files/prototype−1.6.0.3.js」(URI1104)が対応付けられていることを示す。
なお、URI1104のように「http://」という文字列で始まるファイルは、例えば図1のWeb代替JSファイルb11であり、自装置以外の装置からhttpプロトコルを用いて取得するファイルである。一方、URI1101のように「file://」という文字列で始まるファイルは、例えば図2のローカル代替JSファイルf2であり、自装置内の記憶部から取得するファイルである。ローダーオブジェクトo121は、このようにURIの先頭部分の文字列でスキームを判定し、Web代替JSファイルb11、又はローカル代替JSファイルf2を取得する。
図9は、本実施形態に係る代替URI処理の一例を示すフローチャートである。
(ステップS211)図3のURI判定部c122(URI判定オブジェクトo123)は、取得した代替URI存在チェックメッセージのリソースURI(チェック対象URI)を文字列として文字列変数INに代入する。その後、ステップS212へ進む。
(ステップS212)URI判定部c122は、整数変数Nに「1」を代入する。また、なお、この変数Nは配列T及び配列Rの添え字として用いられる。また、URI判定部c122は、判定情報記憶部c121が記憶するURI判定情報テーブル(図8)でのn行目のリソースURIを配列Tのn番目の要素に代入する。また、URI判定部c122は、判定情報記憶部c121が記憶するURI判定情報テーブルでのn行目の代替URIを配列Rのn番目の要素に代入する。その後、ステップS213へ進む。
(ステップS213)URI判定部c122は、配列TのN番目の内容の文字列と変数INの文字列を比較する。この比較は、配列TのN番目の要素である文字列と変数INの文字列とが完全一致しているか否かを比較する。その後、ステップS214へ進む。
(ステップS214)URI判定部c122は、ステップS213の比較の結果、文字列が完全に一致したか否かを判定する。判定の結果、文字列が完全に一致したと判定した場合、ステップS218へ進む。一方、文字列が完全に一致しないと判定した場合、ステップS215へ進む。
(ステップS215)URI判定部c122は、変数Nの値を1増やす。その後、ステップS216へ進む。
(ステップS216)URI判定部c122は、変数Nの値が配列Tの要素数を超えたか否かを判定する。判定の結果、変数Nの値が配列Tの要素数を超えたと判定した場合(はい)は、配列Tの全ての要素について比較が完了しているので、ステップS217へ進む。一方、変数Nの値が配列Tの要素数を超えていないと判定した場合(いいえ)は、配列Tに比較する要素がまだ残っているので、ステップS213へ戻る。
(ステップS217)URI判定部c122は、配列INの内容、つまり、ステップS211で取得したリソースURIをそのまま、リソース取得先URI(リソースビルダーオブジェクトo12への返値)に設定する。その後、動作を終了する。
(ステップS218)URI判定部c122は、配列RのN番目の内容を、つまり、配列RのN番目の要素である代替URIの文字列(図8でのN行目の代替URI)を、スクリプト取得部c112の出力値(リソースビルダーオブジェクトo12への返値)に設定する。つまり、この場合は、配列TのN番目の要素との比較結果が一致した場合であり、配列TのN番目の要素に対応する配列RのN番目の内容(代替URI)を、リソース取得先URIに設定する。その後、動作を終了する。
なお、URI判定部c122は、ステップS217又はS218で設定したリソース取得先URIを表示制御部c111に出力する。
このように、本実施形態によれば、Webブラウザ端末C1は、リソースURIに基づいて、JSファイルを他の代替JSファイルに置き換え、置き換えた代替JSファイルのJSプログラムを実行する。これにより、情報処理装置に応じた動作をするアプリケーションを提供することができる。より具体的には、Webアプリケーション提供者側の事情に影響を受けることなく、Webブラウザ端末C1の製造者(又はWebブラウザアプリケーションf1の作成者)のみの対応によって、Webブラウザ端末C1での提供を想定していないWebアプリケーションでも、Webブラウザ端末C1で快適に利用させることができる。
また、本実施形態によれば、Webブラウザ端末C1は、代替JSファイルのJSプログラムは、Webブラウザ端末C11、C12、・・・の情報処理能力(Webブラウザ端末C1の種類や動画の再生能力(Webブラウザの種類))に応じたプログラムであるので、Webブラウザ端末C1の情報処理能力に応じたWebアプリケーションを提供することができ、Webアプリケーションを快適に利用させることができる。
また、従来技術では、Webサーバは、個々の情報処理装置の種類を識別し、情報処理装置の種類毎に異なる処理スクリプトを供給する必要があるので、情報処理装置の種類や台数が増える程、Webサーバの管理コストが増加するという欠点があった。
本実施形態によれば、個々のWebブラウザ端末C1に合わせた代替JSファイルを個々のWebブラウザ端末C1が記憶する場合、管理用サーバでの管理コストを削減することができる。
また、従来技術では、各情報処理装置は処理スクリプトを必ずサーバからダウンロードして取得する必要があるので、実行時にはファイルをダウンロードする時間を要するという欠点があった。なお、仮にファイルキャッシュの仕組みを備えていたとしても、その効果は2回目の実行時以降にのみ発生し、初回の実行時にはダウンロードに要する時間の発生は避けられない。
本実施形態によれば、個々のWebブラウザ端末C1に合わせた代替JSファイルを個々のWebブラウザ端末C1が記憶する場合、実行時にサーバから代替JSファイルをダウンロードしないため、初回の実行時であってもダウンロードに要する時間が発生しない。
以下、本実施形態の変形例について説明をする。
本実施形態では、Webブラウザ端末C1がリソースURIの全文字列に基づいて代替URI処理を行う場合について説明をした。しかし、本発明はこれに限らず、Webブラウザ端末C3はリソースURIの一部の文字列に基づいて代替URI処理を行ってもよい。
<変形例1>
変形例1では、URI判定部c122は、リソースURIのファイル名に基づいて、代替URIが存在するか否かを判定する。
図10は、本実施形態の変形例1に係るURI判定情報テーブルの一例を示す概略図である。図示するようにURI判定情報テーブルは、リソースURIのファイル名及び代替URIの各項目の列を有している。URI判定情報テーブルは、行毎にURI判定情報が格納される行と列からなる2次元の表形式のデータである。
例えば、図10の2行目のURI判定情報は、符号1202を付したファイル名「jquery.js」(ファイル名1202)に対する代替URIとして、符号1102を付した「file://script/jquery−1.3.2.min.js」(URI1102)が対応付けられていることを示す。
具体的に、Webブラウザ端末C1では、以下の処理を行う。
URI判定部c122(URI判定オブジェクト)は、リソースURIの文字列において、文字列の後ろから順に「/」という文字を検索する。URI判定部c122は、検索した「/」の直後の文字列から「&」という文字、又は「&」という文字がない場合には文字列まで、文字列を抽出する。なお、「&」という文字までに限るのは、URIでは「&」の後に変数等のファイル名とは関係ないパラメータが付与されるので、「&」の後の文字列は抽出しない。
例えば、リソースURIが「http://YYY・・・.com/ajax/libs/jquery/1.3.2/jquery.min.js」である場合には、URI判定部c122は、「jquery.min.js」をファイル名として抽出する。
以下、図9を用いて代替URI処理について説明をする。
変形例1では、URI判定部c122は、配列TのリソースURIに変えてファイル名を代入する。また、ステップS213の比較において、URI判定部c122は、変数INの文字列に変えて、変数INの文字列から上述のように抽出したファイル名を用いて比較を行う。
例えば、変数INが「http://YYY・・・.com/ajax/libs/jquery/1.3.2/jquery.js」である場合、ステップS213では、URI判定部c122は、ファイル名「jquery.js」を抽出して比較する。一方、配列Tの2番目(n=2)の要素には「jquery.js」が代入されている(図10参照)ので、2回目(N=2)のステップS214で、抽出したファイル名「jquery.js」と一致した(完全一致)と判定する。この場合、URI判定部c122は、ステップS218で、配列RのN番目(N=2)の内容である「file://script/jquery−1.3.2.min.js」を代替URIとして、リソース取得先URIに設定する。
同様に、例えば、変数INが「http://YYY・・・.com/ajax/libs/jquery/1.3.2/jquery.js」である場合も、URI判定部c122は、「jquery.min.js」をファイル名として抽出し、一致すると判定する。この場合も、URI判定部c122は、ステップS218で、配列RのN番目(N=2)の内容である「file://script/jquery−1.3.2.min.js」を代替URIとして、リソース取得先URIに設定する。
このように、本変形例1では、Webブラウザ端末C1は、リソースURIと、リソースURIの一部(ファイル名)が部分一致する場合に、リソースURIのJSファイルを代替JSファイルに置き換え、置き換えた代替JSファイルのJSプログラムを実行する。特に著名なJSライブラリの場合、同一のファイルが複数のWebサイト上に存在し、個々に利用されていることが多い。本変形例によれば、それらのJSファイルのリソースURI全てについてそのURI判定情報を書き込まなくても、代替URIと対応付けることができる。また、これにより、配列Tの設定個数の増加を防止することができる。
<変形例2>
変形例2では、URI判定部c122は、リソースURIの先頭部分の文字列(URI部分文字列という)及びファイル名に基づいて、代替URIが存在するか否かを判定する。
図11は、本実施形態の変形例2に係るURI判定情報テーブルの一例を示す概略図である。図示するようにURI判定情報テーブルは、リソースURIのURI部分文字列、リソースURIのファイル名、及び代替URIの各項目の列を有している。URI判定情報テーブルは、行毎にURI判定情報が格納される行と列からなる2次元の表形式のデータである。
例えば、図11の1行目のURI判定情報は、符号1302を付したURI部分文字列「http://YYY・・・.com/ajax/libs/jquery/」及びファイル名「jquery.js」(ファイル名1202)に対する代替URIとして、「file://script/jquery−1.3.2.min.js」(URI1102)が対応付けられていることを示す。
具体的に、Webブラウザ端末C1では、以下の処理を行う。
URI判定部c122(URI判定オブジェクト)は、リソースURIの先頭部分の文字列と、URI判定情報テーブルのURI部分文字列を比較し、代替URIが存在するか否かを判定する。例えば、URI判定部c122は、リソースURIが「http://YYY・・・.com/ajax/libs/jquery/1.3.2/jquery.min.js」である場合には、URI判定情報テーブルのURI部分文字列が「http://YYY・・・.com」や「http://YYY・・・.com/ajax/libs/jquery」である場合、代替URIが存在すると判定する。
なお、URI判定部c122は、変形例1と同様にしてファイル名を抽出する。
以下、図9を用いて代替URI処理について説明をする。
変形例2では、URI判定部c122は、判定情報記憶部c121が記憶するURI判定情報テーブル(図10)でのn行目のURI部分文字列及びファイル名を、それぞれ、配列T1、T2のn番目の要素に、代入する。URI判定部c122は、URI判定部c122は、配列Tに変えて配列T1及びT2を用いて代替URI処理を行う。
ステップS213の比較において、URI判定部c122は、リソースURIの先頭部分の文字列と配列T1のURI部分文字列とを比較する(先頭一致比較という)。ここで、先頭一致比較とは、2個の文字列を先頭から1文字づつ順番に比較し、先にどちらかの文字列が文字列終端に達した時点で、もう片方の文字列の残りは比較せず、2個の文字列は一致したとする比較方法である。
また、URI判定部c122は、変数INの文字列から抽出したファイル名と、配列T2のファイル名とを比較する(ファイル名比較という)。この2つの比較(先頭一致比較、ファイル名比較)において、いずれの比較でも一致すると判定した場合、ステップS214で一致したと判定する。なお、それ以外の場合は、一致しないと判定する。
例えば、変数INが「http://YYY・・・.com/ajax/libs/jquery/1.3.2/jquery.js」である場合、ステップS213では、URI判定部c122は、先頭一致比較と、ファイル名「jquery.js」を抽出してファイル名比較を行う。これらの比較において、配列T1の2番目(n=2)の要素には「http://YYY・・・.com/ajax/libs/jquery/」、配列T2の2番目の要素には「jquery.js」が代入されている(図11参照)ので、2回目(N=2)のステップS214で、先頭一致比較でもファイル名比較でも一致すると判定する。この場合、URI判定部c122は、ステップS218で、配列RのN番目(N=2)の内容である「file://script/jquery−1.3.2.min.js」を代替URIとして、リソース取得先URIに設定する。
同様に、例えば、変数INが「http://YYY・・・.com/ajax/libs/jquery/1.3.0/jquery.js」である場合も、URI判定部c122は、先頭一致比較(「http://YYY・・・.com/ajax/libs/jquery/」)でもファイル名比較でも一致すると判定する。この場合も、URI判定部c122は、ステップS218で、配列RのN番目(N=2)の内容である「file://script/jquery−1.3.2.min.js」を代替URIとして、リソース取得先URIに設定する。
なお、上記変形例2において、URI部分文字列は、リソースURLのドメイン名を用いてもよい。
このように、本変形例2では、Webブラウザ端末C1は、リソースURIと、リソースURIの一部(URI部分文字列)が部分一致する場合に、リソースURIのJSファイルを代替JSファイルに置き換え、置き換えた代替JSファイルのJSプログラムを実行する。
これにより、同一のWebサイトにおいて、例えばリソースURI文字列の一部にに含まれる「/1.3.2/」のようなバージョン情報や「/2009.08.11/」のようなリリース日付けを意味する部分のみが異なっていても、Webブラウザ端末C1は、適切な代替JSファイルのJSプログラムで置き換えることができる。
また、バージョンやリリース日付けが異なるJSファイルのリソースURI毎に、そのURI判定情報を書き込まなくても、代替URIと対応付けることができる。また、これにより、配列Tの設定個数の増加を防止することができる。
特に著名なJSライブラリの開発を行っているWebサイトでは、同一Webサイト上に過去のものを含む複数バージョンのJSファイルが存在しており、且つ、開発が進むにつれてそのJSファイルの種類が増えていくため、それらJSファイルについて全てを個々に指定することなく代替URIを設定できる。
また、リソースURIとファイル名以外のURIとで部分一致の判定を行うので、偶然ファイル名が同一だったことによって目的とするJSライブラリに対する意図しない置き換えが行われることを防止することができる。
(第2の実施形態)
上記第1の実施形態において、Webブラウザ端末C1は、URIに基づいて代替URI処理を行った。本実施形態では、Webブラウザ端末は、リソースURLから取得したJSファイルのリソースデータに基づいて、このリソースデータを代替JSファイルのリソースデータに変更する代替データ処理を行う。以下、本実施形態に係るWebブラウザ端末C2という。
本実施形態に係る情報処理システムを示す概念図は、図1と同じであるので説明は省略する。なお、この図のWebブラウザ端末C11、C12各々がWebブラウザ端末C2である。また、Webブラウザ端末C2のハードウェア構成を示す概略ブロック図は、図2と同じであるので説明は省略する。ただし、本実施形態に係るWebブラウザアプリケーションf2の機能はWebブラウザアプリケーションf1とは異なる。
図12は、本発明の第2の実施形態に係るWebブラウザ端末C2の論理的な構成を示す概略ブロック図である。本実施形態に係るWebブラウザ端末C2(図12)と第1の実施形態に係るWebブラウザ端末C1(図3)とを比較すると、表示制御部c211、代替判定部c22の判定情報記憶部c221及びデータ判定部c222(取得先抽出部)が異なる。しかし、他の構成要素(入力部c104、通信部c106、表示部c105、スクリプト取得部c112、外部記憶部c103)が有する機能は第1の実施形態と同じである。第1の実施形態と同じ機能の説明は省略する。
表示制御部c211は、通信部c106から入力されたファイルから、リソースURIを抽出してスクリプト取得部c112に出力する。表示制御部c211は、スクリプト取得部c112から入力されたリソースURIのJavascritpファイルa13のリソースデータをデータ判定部c222に出力する。
表示制御部c211は、データ判定部c222から入力された代替URIのWeb代替JSファイルb11、或いはローカル代替JSファイルf2、又は、(データ判定部c222からNULL値が入力された場合)スクリプト取得部c112から入力されたリソースURIのJavascritpファイルa13のJSプログラムを用いて、通信部c106から入力されたファイルのプログラムを実行する。表示制御部c211は、プログラムの実行結果の画像情報を表示部c105に出力する。
判定情報記憶部c221は、データ判定情報テーブル(図15)を記憶する。データ判定情報テーブルは、データファイル名、及び代替URIを対応付けたテーブルである。また、判定情報記憶部c221は、データファイル名のデータファイルを記憶する。
データ判定部c222は、判定情報記憶部c221が記憶するデータ判定情報テーブルの情報と、表示制御部c211から入力されたリソースデータに基づいて、代替URIがあるか否かを判定する。
代替URIがあると判定した場合、データ判定部c222は、代替URIをリソース取得先URIとしてスクリプト取得部c112に出力する。データ判定部c222は、スクリプト取得部c112が取得した代替URIのWeb代替JSファイルb11、或いはローカル代替JSファイルf2のリソースデータ(代替リソースデータという)を表示制御部c211に出力する。一方、代替URIがないと判定した場合、データ判定部c222は、NULL値を表示制御部c211に出力する。ここでNULL値とは、通常の文字列とは異なる文字列であり、例えば長さが0の文字列である。
図13は、本実施形態に係るWebブラウザアプリケーションf2を表わすオブジェクト図である。この図のオブジェクト図は、UMLを用いて表わした図である。本実施形態に係るWebブラウザアプリケーションf2(図13)と第1の実施形態に係るWebブラウザアプリケーションf1(図5)とを比較すると、リソースビルダーオブジェクトo22、及びdata判定オブジェクトo223が異なる。しかし、他のオブジェクトは第1の実施形態と同じである。第1の実施形態と同じオブジェクトの説明は省略する。
なお、data判定オブジェクトo223は図12のデータ判定部c212で実装され、ローダーオブジェクトo121及びスキーム別ローダーオブジェクトはスクリプト取得部c112で実装される。その他のオブジェクトは表示制御部c211で実装される。
リソースビルダーオブジェクトo22は、リソースオブジェクトの生成を行う。具体的には、ローダーオブジェクトo121を呼び出し、リソースオブジェクト生成命令のリソースURIをリソース取得先URIとして、このリソース取得先URIを含むリソース取得メッセージを、ローダーオブジェクトo121に送付する。リソースビルダーオブジェクトo22は、ローダーオブジェクトo121が取得したリソースURIのリソースデータをdata判定オブジェクトo223に送付する。
data判定オブジェクトo223は、送付されたリソースデータに対する代替リソースデータをリソースビルダーオブジェクトo22に返却する。
リソースビルダーオブジェクトo22は、data判定オブジェクトo223から返却された代替リソースデータを含むレンダリング命令を生成し、レンダラーオブジェクトo122に送付する。
図14は、本実施形態に係るWebブラウザアプリケーションf2の実行動作の一例を示すシーケンス図である。この図は、本実施形態に係るJSファイル処理を行う際のUMLにおけるシーケンス図である。図14と図6を比較すると、図14ではステップS311〜S317の処理が追加されている点、及び、ステップS107の処理がステップS307の処理に変更されている点が異なる。しかし、他の処理(ステップS101〜S106、S108〜S116の処理)は図6の処理と同じである。図6と同じ処理の説明は省略する。
(ステップS311)リソースビルダーオブジェクトo22は、ステップS106で返却されたリソースデータのmime−type値が「text/javascript」であるか否かを判定する。mime−type値が「text/javascript」であると判定した場合、ステップS106で返却されたリソースデータを含む代替データ存在チェックメッセージをdata判定オブジェクトo223に送付する。その後、ステップS312へ進む。
(ステップS312)data判定オブジェクトo223は、ステップS311で送付された代替データ存在チェックメッセージを取得し、取得した代替データ存在チェックメッセージのリソースデータに基づいて代替URIが存在するか否かを判定する。また、代替URIが存在すると判定した場合、data判定オブジェクトo223は、その代替URIを読み出す。その後、ステップS313へ進む。
(ステップS313)ステップS313で代替URIが存在すると判定した場合、data判定オブジェクトo223は、ステップS312で読み出した代替URIをリソース取得先URIとし、このリソース取得先URIを含むリソース取得メッセージを、ローダーオブジェクトo121に送付する。その後、ステップS314へ進む。
一方、ステップS313で代替URIが存在しないと判定した場合は、ステップS317へ進む。
(ステップS314)ローダーオブジェクトo121は、ステップ313で送付されたリソース取得メッセージを取得し、取得したリソース取得メッセージのリソース取得先URIに基づいてスキームを判定する。ローダーオブジェクトo121は、判定したスキームのスキーム別ローダーオブジェクト(fileローダーオブジェクトo1212)に対して、リソース取得先URIを含むデータ取得メッセージを送付する。その後、ステップS315へ進む。
(ステップS315)fileローダーオブジェクトo1212は、ステップS314で送付されたデータ取得メッセージを取得し、取得したデータ取得メッセージのリソース取得先URIからリソースデータを取得する。fileローダーオブジェクトo1212は、取得したリソースデータをデータ取得メッセージの返値としてローダーオブジェクトo121に返却する。その後、ステップS316へ進む。
(ステップS316)リソースデータをローダーオブジェクトo121は、ステップS315で返却されたリソースデータを、リソース取得メッセージの返値としてdata判定オブジェクトo223に返却する。その後、ステップS317へ進む。
(ステップS317)data判定オブジェクトo223は、ステップS311で送付された代替データ存在チェックメッセージの返値として、ステップS316で返却されたリソースデータをリソースビルダーオブジェクトo22に返却する。ここで、ステップS313で代替URIが存在しないと判定した場合には、data判定オブジェクトo223は、NULL値をデータ取得メッセージの返値としてリソースビルダーオブジェクトo22に返却する。その後、ステップS307へ進む。
(ステップS307)リソースビルダーオブジェクトo22は、ステップS317で返却されたリソースデータを含むレンダリング命令を生成し、レンダラーオブジェクトo122に送付する。ここで、ステップS316でNULL値が返却された場合には、リソースビルダーオブジェクトo22は、ステップS106で返却されたリソースデータを含むレンダリング命令を生成し、レンダラーオブジェクトo122に送付する。その後、ステップS108へ進む。
なお、ローダーオブジェクトo121、リソースビルダーオブジェクトo22及びdata判定オブジェクトo223が行うステップS311〜S317、S307の処理が代替データ処理である。
以下、代替データ処理の詳細について説明をする。
図15は、本実施形態に係るデータ判定情報テーブルの一例を示す概略図である。図示するようにデータ判定情報テーブルは、データファイル名及び代替URIの各項目の列を有している。データ判定情報テーブルは、行毎にデータ判定情報が格納される行と列からなる2次元の表形式のデータである。
例えば、図15の1行目のデータ判定情報は、符号2001を付したデータファイル名「ファイル1」に対する代替URIとして、符号2101を付した「file://script/jquery−1.3.2.min.js」が対応付けられていることを示す。
例えば、データファイル名「ファイル1」のデータファイルは図16に示す内容であり、また、データファイル名「ファイル2」のデータファイルは図17に示す内容である。図16、図17はデータファイルの一例を示す概略図であり、これらのデータファイルはJacascriptコード(JSプログラム)を表わす文字列で記載されている。
図18は、本実施形態に係る代替データ処理の一例を示すフローチャートである。
(ステップS411)図12のデータ判定部c222(data判定オブジェクトo223)は、取得した代替データ存在チェックメッセージのリソースデータのdata値(チェック対象テキストデータ)を文字列として文字列変数TEXTに代入する。その後、ステップS412へ進む。
(ステップS412)データ判定部c222は、整数変数Nに「1」を代入する。また、この変数Nは配列F及び配列Rの添え字として用いられる。また、データ判定部c222は、判定情報記憶部c221が記憶するデータ判定情報テーブル(図15)でのn行目のデータファイル名のデータファイルの内容(テキストデータ;プログラムの識別情報)を配列Fのn番目の要素に代入する。また、データ判定部c222は、判定情報記憶部c221が記憶するデータ判定情報テーブルでのn行目の代替URIを配列Rのn番目の要素に代入する。その後、ステップS413へ進む。
(ステップS413)データ判定部c222は、配列FのN番目の内容の文字列と変数TEXTの文字列を比較する。この比較は、配列FのN番目の要素である文字列と変数TEXTの文字列とが完全一致しているか否かを比較する。その後、ステップS414へ進む。
(ステップS414)データ判定部c222は、ステップS413の比較の結果、文字列が完全に一致したか否かを判定する。判定の結果、文字列が完全に一致したと判定した場合、ステップS418へ進む。一方、文字列が完全に一致しないと判定した場合、ステップS415へ進む。
(ステップS415)データ判定部c222は、変数Nの値を1増やす。その後、ステップS416へ進む。
(ステップS416)データ判定部c222は、変数Nの値が配列Fの要素数を超えたか否かを判定する。判定の結果、変数Nの値が配列Fの要素数を超えたと判定した場合(はい)は、配列Fの全ての要素について比較が完了しているので、ステップS417へ進む。一方、変数Nの値が配列Fの要素数を超えていないと判定した場合(いいえ)は、配列Fに比較する要素がまだ残っているので、ステップS413へ戻る。
(ステップS417)データ判定部c222は、NULL値を代替データ存在チェックメッセージの返値(リソースビルダーオブジェクトo22への返値)に設定する。その後、動作を終了する。
(ステップS418)データ判定部c222は、配列RのN番目の内容を、つまり、配列RのN番目の要素である代替URIの文字列(図8でのN行目の代替URI)を、スクリプト取得部c112に出力する。その後、ステップS419へ進む。
(ステップS419)スクリプト取得部c112は、ステップS418で出力された代替URIから代替JSファイルを取得し、データ判定部c222に出力する。データ判定部c222は、入力された代替JSファイルからmime−type値とdata値と抽出し、抽出した値をリソースデータとして、代替データ存在チェックメッセージの返値(リソースビルダーオブジェクトo22への返値)に設定する。その後、動作を終了する。
なお、データ判定部c222は、ステップS417又はS419で設定したリソースデータを表示制御部c211に出力する。
このように、本実施形態によれば、Webブラウザ端末C2は、リソースURIのJSファイルの内容と、記憶するデータファイルの内容とが一致する場合に、JSファイルを他の代替JSファイルに置き換え、置き換えた代替JSファイルのJSプログラムを実行する。これにより、JSファイルのリソースURIやファイル名が変更された場合でもJSファイルの内容によって、JSファイルを識別することができ、適切な代替JSファイルで置き換えることができる。
<変形例3>
以下、本実施形態の変形例について説明をする。
本実施形態では、Webブラウザ端末C2がJacascriptコード(JSプログラム)を表わす文字列で記載されたファイルのデータに基づいて代替データ処理を行う場合について説明をした。しかし、本発明はこれに限らず、ファイルの内容を数値等の他の文字列に変換し、変換した文字列(変換データという)に基づいてWebブラウザ端末C2が代替データ処理を行ってもよい。ここで、変数TEXTの内容を数値化には、例えば、文字列の文字数を数値化の値としてもよいし、また、文字列の各文字を8ビットの数値としてその総和を求めるチェックサム(Check Sum)を数値化の値としてもよい、また、文字列の各文字を8ビットの数値としてそのハッシュ関数の値を数値化の値してもよい。なお、ハッシュ関数としては例えばSHA(Secure Hash Algorithm)−1やMD(Message Digest Algorithm)5などがある。
図19は、本実施形態の変形例3に係るデータ判定情報テーブルの一例を示す概略図である。図示するようにデータ判定情報テーブルは、変換データ及び代替URIの各項目の列を有している。データ判定情報テーブルは、行毎にデータ判定情報が格納される行と列からなる2次元の表形式のデータである。
図18において、符号2101、2102を付した変換データ(変換データ2101、2102という)は、それぞれ、ハッシュ関数としてMD5を用いて、図16、図17のデータファイルを変換した変換データである。なお、これらの変換データは、16進数で標記したハッシュ値である。
このように、本変形例3によれば、Webブラウザ端末C2は、JSファイルの内容を変換した変換データに基づいて、JSファイルを他の代替JSファイルに置き換え、置き換えた代替JSファイルのJSプログラムを実行する。これにより、JSファイルの内容をそのまま比較する場合と比較して、メモリc102及び外部記憶部c103で使用する記憶容量を低減することができる。
また、文字列を数値化する方法としてハッシュ関数を用いると、異なるJSファイルの内容に対して偶然同一の値になる可能性が大幅に減るため、目的とするJSライブラリに対する意図しない代替が行われることを防止することができる。
(第3の実施形態)
JSライブラリを作成する際、グローバルオブジェクトの名称(グローバルオブジェクト名という)、例えばJSライブラリ毎に固有のグローバル変数を1個定義する。そのグローバル変数に値を指定することで、その値に対応付けられたグローバルオブジェクトのメソッドを呼び出すことができる。このように、グローバル変数とその値を、JSライブラリのAPIとして用いることがある。その際、グローバルオブジェクトに値を設定する命令文(グローバルオブジェクト値設定命令文という。例えば、グローバルオブジェクトに値を設定するvar文)が用いられる。ここで、グローバルオブジェクト値設定命令文には、グローバルオブジェクト名が含まれている。
例えば、JSライブラリが「prototype.js」であれば、使用するグローバル変数の名前は「Prototype」と決められている。したがって、グローバルオブジェクト名からどのJSライブラリを利用しようとしているかの判定をすることができるので、そのJSライブラリに変わる代替ライブラリを選択することできる。
本実施形態では、Webブラウザ端末は、リソースURLから取得したJSファイルのリソースデータからグローバルオブジェクト名を抽出し、抽出したグローバルオブジェクト名に基づいて、代替JSファイルのJSプログラムの実行コードを生成する代替モジュール(API)処理を行う。以下、本実施形態に係るWebブラウザ端末C3という。
本実施形態に係る情報処理システムを示す概念図は、図1と同じであるので説明は省略する。なお、この図のWebブラウザ端末C11、C12各々がWebブラウザ端末C3である。また、Webブラウザ端末C3のハードウェア構成を示す概略ブロック図は、図2と同じであるので説明は省略する。ただし、本実施形態に係るWebブラウザアプリケーションf3の機能はWebブラウザアプリケーションf1とは異なる。
図20は、本発明の第3の実施形態に係るWebブラウザ端末C3の論理的な構成を示す概略ブロック図である。本実施形態に係るWebブラウザ端末C3(図20)と第1の実施形態に係るWebブラウザ端末C1(図3)とを比較すると、表示制御部c311、代替判定部c32の判定情報記憶部c321及びモジュール判定部c322(取得先抽出部)が異なる。しかし、他の構成要素(入力部c104、通信部c106、表示部c105、スクリプト取得部c112、外部記憶部c103)が有する機能は第1の実施形態と同じである。第1の実施形態と同じ機能の説明は省略する。
表示制御部c311は、通信部c106から入力されたファイルから、リソースURIを抽出してスクリプト取得部c112に出力する。表示制御部c311は、スクリプト取得部c112から入力されたリソースURIのJavascritpファイルa13のリソースデータからグローバルオブジェクト名を抽出し、抽出したグローバルオブジェクト名をモジュール判定部c322に出力する。
表示制御部c311は、モジュール判定部c322から入力された代替URIをリソース取得先URIとしてスクリプト取得部c112に出力する。表示制御部c111は、スクリプト取得部c112から入力されたWeb代替JSファイルb11、或いはローカル代替JSファイルf2、又は、(モジュール判定部c322からNULL値が入力された場合)スクリプト取得部c112から入力されたリソースURIのJavascritpファイルa13のリソースデータを用いて、JSプログラムの実行コードを生成する。表示制御部c311は、生成した実行コードを実行して、通信部c106から入力されたファイルのプログラムを実行する。表示制御部c311は、プログラムの実行結果の画像情報を表示部c105に出力する。
判定情報記憶部c321は、モジュール判定情報テーブル(図23)を記憶する。モジュール判定情報テーブルは、グローバルオブジェクト名、及び代替URIを対応付けたテーブルである。
モジュール判定部c322は、判定情報記憶部c321が記憶するモジュール判定情報テーブルの情報と、表示制御部c311から入力されたグローバルオブジェクト名に基づいて、代替URIがあるか否かを判定する。
代替URIがあると判定した場合、モジュール判定部c322は、代替URIを表示制御部c311に出力する。一方、代替URIがないと判定した場合、モジュール判定部c322は、NULL値を表示制御部c311に出力する。
図21は、本実施形態に係るWebブラウザアプリケーションf3を表わすオブジェクト図である。この図のオブジェクト図は、UMLを用いて表わした図である。本実施形態に係るWebブラウザアプリケーションf3(図21)と第1の実施形態に係るWebブラウザアプリケーションf1(図5)とを比較すると、JSレンダラーオブジェクトo3222、及びAPI判定オブジェクトo323が異なる。しかし、他のオブジェクトは第1の実施形態と同じである。第1の実施形態と同じオブジェクトの説明は省略する。
なお、API判定オブジェクトo323は、図12のデータ判定部c212で実装され、ローダーオブジェクトo121及びスキーム別ローダーオブジェクトはスクリプト取得部c112で実装される。JSレンダラーオブジェクトo3222等のその他のオブジェクトは表示制御部c311で実装される。
JSレンダラーオブジェクトo3222は、JSファイルのJSプログラムから、グローバルオブジェクト値設定命令文を検出する。JSレンダラーオブジェクトo3222は、グローバルオブジェクト値設定命令文を検出した場合、検出したグローバルオブジェクト値設定命令文から、グローバルオブジェクト名を抽出してAPI判定オブジェクトo323に送付する。
API判定オブジェクトo323は、送付されたグローバルオブジェクト名に対する代替URIをJSレンダラーオブジェクトo3222に返却する。
JSレンダラーオブジェクトo3222は、API判定オブジェクトo323から返却された代替URIをローダーオブジェクトo121に送付する。JSレンダラーオブジェクトo3222は、ローダーオブジェクトo121から返却された代替URIのJSファイルのJSプログラムのプログラムコードを解析して実行コードを抽出し、抽出した実行コードが書き込まれたJSリソースオブジェクトo113を生成する。
図22は、本実施形態に係るWebブラウザアプリケーションf3の実行動作の一例を示すシーケンス図である。この図は、本実施形態に係るJSファイル処理を行う際のUMLにおけるシーケンス図である。図21と図6を比較すると、図21ではステップS111の処理がステップS511の処理に変更されている点、及び、ステップS511〜S519の処理が追加されている点が異なる。しかし、他の処理(ステップS101〜S110、S113〜S116の処理)は図6の処理と同じである。図6と同じ処理の説明は省略する。
(ステップS511)JSレンダラーオブジェクトo3222は、ステップS109で送付されたdata値を取得し、取得したdata値に対して命令文解析処理を行う。JSレンダラーオブジェクトo3222は、この命令文解析処理で、グローバルオブジェクト値設定命令文を検出した場合、ステップS512へ進む。
(ステップS512)JSレンダラーオブジェクトo3222は、ステップS511で検出したグローバルオブジェクト値設定命令文からグローバルオブジェクト名を抽出し、抽出したグローバルオブジェクト名を含む代替モジュール存在チェックメッセージを、API判定オブジェクトo323に送付する。その後、ステップS513へ進む。
(ステップS513)API判定オブジェクトo323は、ステップS512で送付された代替モジュール存在チェックメッセージを取得し、取得した代替モジュール存在チェックメッセージのオブジェクト名に基づいて代替URIが存在するか否かを判定する。代替URIが存在すると判定した場合、API判定オブジェクトo323は、代替URIを読み出し、読み出した代替URIを代替モジュール存在チェックメッセージの返値として、JSレンダラーオブジェクトo3222に返却する。一方、ステップS313で代替URIが存在しないと判定した場合、API判定オブジェクトo323は、NULL値を代替モジュール存在チェックメッセージの返値としてJSレンダラーオブジェクトo3222に返却する。その後、ステップS514へ進む。
(ステップS514)JSレンダラーオブジェクトo3222は、ステップS513で返却された代替URIをリソース取得先URIとし、このリソース取得先URIを含むリソース取得メッセージを、ローダーオブジェクトo121に送付する。
リソース取得先URIとして、このリソース取得先URIを含むリソース取得メッセージを、ローダーオブジェクトo121に送付する。その後、ステップS515へ進む。一方、ステップS514でNUUL値が返却された場合は、ステップS518へ進む。
(ステップS515)ローダーオブジェクトo121は、ステップ514で送付されたリソース取得メッセージを取得し、取得したリソース取得メッセージのリソース取得先URIに基づいてスキームを判定する。ローダーオブジェクトo121は、判定したスキームのスキーム別ローダーオブジェクト(fileローダーオブジェクトo1212)に対して、リソース取得先URIを含むデータ取得メッセージを送付する。その後、ステップS516へ進む。
(ステップS516)fileローダーオブジェクトo1212は、ステップS515で送付されたデータ取得メッセージを取得し、取得したデータ取得メッセージのリソース取得先URIからリソースデータを取得する。なお、このリソースデータは、代替JSファイルのリソースデータである。fileローダーオブジェクトo1212は、取得したリソースデータをデータ取得メッセージの返値としてローダーオブジェクトo121に返却する。その後、ステップS517へ進む。
(ステップS517)リソースデータをローダーオブジェクトo121は、ステップS516で返却されたリソースデータを、リソース取得メッセージの返値としてdata判定オブジェクトo223に返却する。その後、ステップS518へ進む。
(ステップS518)JSレンダラーオブジェクトo3222は、実行コードに用いる予定たったdata値であってステップS109で送付されたdata値を破棄し、代わりに、ステップS517で返却されたリソースデータのdata値を取得する。JSレンダラーオブジェクトo3222は、取得したdata値に対して命令文解析処理を行う。一方、ステップS514でNUUL値が返却された場合は、JSレンダラーオブジェクトo3222は、ステップS109で送付されたdata値に対して命令文解析処理を行う。その後、ステップS519へ進む。
(ステップS519)JSレンダラーオブジェクトo3222は、ステップS511での命令文解析処理の結果、JSプログラムの実行コードを生成し、生成した実行コードを生成したJSリソースオブジェクトo113に書き込む。その後、ステップS113へ進む。
なお、JSレンダラーオブジェクトo3222及びAPI判定オブジェクトo323が行うステップS511〜S319の処理が代替モジュール処理である。
以下、代替モジュール処理の詳細について説明をする。
図23は、本実施形態に係るモジュール判定情報テーブルの一例を示す概略図である。図示するようにモジュール判定情報テーブルルは、グローバルオブジェクト名及び代替URIの各項目の列を有している。モジュール判定情報テーブルは、行毎にデータ判定情報が格納される行と列からなる2次元の表形式のデータである。
例えば、図23の1行目のデータ判定情報は、符号3001を付したグローバルオブジェクト名「jQuery」に対する代替URIとして、符号3101を付した「file://script/jquery−1.3.2.min.js」が対応付けられていることを示す。
図24は、本実施形態に係る代替モジュール処理の一例を示すフローチャートである。
(ステップS611)図20のモジュール判定部c322(API判定オブジェクトo323)は、取得した代替モジュール存在チェックメッセージのグローバルオブジェクト名(チェック対象テキストデータ)を文字列として文字列変数NAMEに代入する。その後、ステップS612へ進む。
(ステップS612)モジュール判定部c322は、整数変数Nに「1」を代入する。また、この変数Nは配列M及び配列Rの添え字として用いられる。また、モジュール判定部c322は、判定情報記憶部c321が記憶するモジュール判定情報テーブル(図23)でのn行目のグローバルオブジェクト名を配列Mのn番目の要素に代入する。また、モジュール判定部c322は、判定情報記憶部c321が記憶するモジュール判定情報テーブルでのn行目の代替URIを配列Rのn番目の要素に代入する。その後、ステップS613へ進む。
(ステップS613)モジュール判定部c322は、配列MのN番目の内容の文字列と変数NAMEの文字列を比較する。この比較は、配列MのN番目の要素である文字列と変数NAMEの文字列とが完全一致しているか否かを比較する。その後、ステップS614へ進む。
(ステップS614)モジュール判定部c322は、ステップS613の比較の結果、文字列が完全に一致したか否かを判定する。判定の結果、文字列が完全に一致したと判定した場合、ステップS619へ進む。一方、文字列が完全に一致しないと判定した場合、ステップS615へ進む。
(ステップS615)モジュール判定部c322は、変数Nの値を1増やす。その後、ステップS616へ進む。
(ステップS616)モジュール判定部c322は、変数Nの値が配列Mの要素数を超えたか否かを判定する。判定の結果、変数Nの値が配列Mの要素数を超えたと判定した場合(はい)は、配列Mの全ての要素について比較が完了しているので、ステップS617へ進む。一方、変数Nの値が配列Mの要素数を超えていないと判定した場合(いいえ)は、配列Mに比較する要素がまだ残っているので、ステップS613へ戻る。
(ステップS617)モジュール判定部c322は、NULL値を代替データ存在チェックメッセージの返値(リソースビルダーオブジェクトo22への返値)に設定する。その後、ステップS618へ進む。
(ステップS618)表示制御部c311は、グローバルオブジェクト名を含むグローバルオブジェクト値設定命令文に従い、元のJSファイルを用いて実行コードを生成する。その後、動作を終了する。
(ステップS619)モジュール判定部c322は、配列RのN番目の内容を、つまり、配列RのN番目の要素である代替URIの文字列(図8でのN行目の代替URI)を、表示制御部c311に出力する。その後、ステップS620へ進む。
(ステップS620)表示制御部c311は、スクリプト取得部c112を介して、ステップS618で出力された代替URIから代替JSファイルを取得する。その後、ステップS621へ進む。
(ステップS621)表示制御部c311(JSレンダラーオブジェクトo3222)は、ステップS620で取得した代替JSファイルを用いて実行コードを生成する。その後、動作を終了する。
このように、本実施形態によれば、Webブラウザ端末C3は、プログラム内に記載された代入文に用いられるグローバル変数名に基づいて、JSファイルを他の代替JSファイルに置き換え、置き換えた代替JSファイルのJSプログラムを実行する。これにより、情報処理装置に応じた動作をするアプリケーションを提供することができる。
なお、上記第3の実施形態において、代替JSファイルのAPIとして使用しているグローバルオブジェクト名が複数ある場合は、それら全てのグローバルオブジェクト名が含まれているかを判定することで、代替する対象かどうかの判別を行ってもよい。例えば、prototype.jsであれば使用するグローバルオブジェクト名として「Prototype」以外にも、「PeriodicalExecuter」、「Template」、「Abstract」、「Enumerable」、「Ajax」、「Hash」等が利用されている。これら全てがリソースURIのJSファイルに含まれている場合にprototype.jsであると判定し、このファイルに対応付けた代替URIから代替JSファイルを取得して置き換えることで、1つのグローバルオブジェクト名でprototype.jsであると判定する場合と比較して、判定する際の誤り発生を防ぐことができる。
<変形例4>
以下、本実施形態の変形例について説明をする。
本実施形態では、モジュール判定部c322がグローバルオブジェクト名に基づいて代替モジュール処理を行う場合について説明をした。しかし、本発明はこれに限らず、関数オブジェクトに基づいて代替モジュール処理を行ってもよい。
以下、モジュールに関係するJacascript言語の機能について説明をする。
まず、Jacascript言語の関数オブジェクトには、関数スコープ機能がある。スコープとは、ある変数や関数が特定の名称で参照される範囲のことである。この機能により、関数内部で定義された変数やパラメータについては、関数外部からアクセスすることができない。この機能を利用してJSライブラリ固有の処理を関数内部にカプセル化し、それ以外の処理との間で変数名や関数名の衝突を避けている。
次に、Jacascript言語の関数オブジェクトには、クロージャ機能がある。クロージャはプログラム内で環境を共有するための仕組みである。この機能により、JSライブラリに相当する関数Aの内部で別の関数Bを定義した場合、関数Bを実行する際には関数Aの内部にある変数やパラメータへアクセスすることができる。さらに、関数Bは関数Aの外部で実行することもでき、その場合も関数Aの内部にある変数やパラメータへアクセスできる。これを利用してJSライブラリ内部の処理をJSライブラリの外部から呼出すことができる。
この機能を用いると、JSライブラリに相当する関数A(ライブラリAという)の内部でグローバルオブジェクトに関数オブジェクトである関数B(関数オブジェクトBという)を代入した場合に、ライブラリAの外部からグローバルオブジェクトを介して関数Bを呼出すことができる。
このようにした場合、Jacascript言語によるライブラリAを作成した場合、ライブラリAは名称を持つ必要が無い。そのためライブラリAを無名関数とすることができる。また、この場合、ライブラリAを定義した後に実行することで内部の関数Bが定義されるため、ライブラリAを、その関数定義と同時に実行することもできる。さらに、この場合、関数オブジェクトBを代入するグローバルオブジェクトとして、JSライブラリ固有のグローバル変数を指定せず、関数内部のパラメータ「this」にセットされているグローバルオブジェクトに対して、JSライブラリ固有のメソッドとして設定することもできる。
以上より、上述の場合において、Jacascript言語における記述は、例えば、「(function(){ var this.api = function(){ 〜 }; 〜 })();」と記述される。外側のfunction式(前から1番目の「function」)が上述の関数A(無名関数)に相当し、内側のfunction式(前から2番目の「function」)が上述の関数Bに相当する。例えば、実際のJSライブラリであるjquery.jsの場合も、この形式となっている。
また、関数オブジェクトBを代入している「var文」は、関数Aの定義内容の冒頭部分に位置する。関数オブジェクトB内の処理を行う「命令文」は、「var文」の後に位置する。
本変形例4では、Webブラウザ端末C3は、グローバルオブジェクト名に代えて、「var文」で代入対象となっている変数名(上記の例では「this.api」)に基づいて代替モジュール処理を行う。
具体的に、この場合、表示制御部c311は、スクリプト取得部c112から入力されたリソースURIのJavascritpファイルa13のリソースデータから「無名関数を用いたfunction式」(「(function(){」と「})();」の組み合わせの文字列)を選択する。表示制御部c311は、選択した無名関数の定義内容の冒頭部分で「var文」で代入対象となっている変数名を抽出し(「(function(){」と「})();」との間で、先頭の「var」から「=」までの文字列)、抽出した変数名をモジュール判定部c322に出力する。
モジュール判定部c322は、判定情報記憶部c321が記憶するモジュール判定情報テーブルの情報(変数名及び代替URIの対応情報)と、表示制御部c311から入力された変数名に基づいて、代替URIがあるか否かを判定する。
このように、本変形例4によれば、Webブラウザ端末C3は、プログラム内に記載された定義文に用いられる変数名に基づいて、JSファイルを他の代替JSファイルに置き換え、置き換えた代替JSファイルのJSプログラムを実行する。具体的には、変数名を調べる範囲を「無名関数を用いたfunction式」の「関数の定義内容」の冒頭部部分に並ぶ「var文」に限定することで、Javascript言語におけるモジュールを用いている場合にのみ、代替する対象かどうかの判断を行っている。そのため、偶然、Javascript言語における「関数オブジェクト」の内部で、著名なJSライブラリと同一の変数名のセットを使用していても、判定を誤ることを防止することができる。
なお、上記各実施形態において、URI判定情報テーブル、データ判定情報テーブル、及びモジュール判定情報テーブルは、Webブラウザ端末C1〜C3の製造時に記憶されてもよいし、ソフトウエアのインストール時に記憶されてもよい。また、Webブラウザ端末C1〜C3がネットワークを介して新しいURI判定情報テーブル、データ判定情報テーブル、及びモジュール判定情報テーブルをダウンロードし、更新してもよい。これにより、これらのテーブルも更新することができ、代替JSファイルの変更にも柔軟に対応することができる。
また、上記各実施形態において、URI判定情報テーブル、データ判定情報テーブル、モジュール判定情報テーブルが、それぞれ、リソースURI及び代替URI、データファイル名(或いは変換データ)及び代替URI、グローバルオブジェクト名及びURIを対応付けて記憶している場合について説明をしたが、それぞれの項目を別のファイルに記憶してもよい(例えば、リソースURIを記憶するファイルと代替URIを記憶するファイル)。この場合は、例えば、ファイル内の情報の対応付けを順序によって対応付け、それぞれ配列に代入する(例えば、一方のファイルで図8のURI1001を1番目、URI1004を4番目の順に記憶し、もう一方のファイルでURI1101を1番目、URI1104を4番目に記憶する)。また、上記第2の実施形態において、データ判定情報テーブルでデータファイル名を記憶し、そのデータファイル名のデータファイルを配列Fに代入したが、データ判定情報テーブルで、データファイル名に代えて、データファイルの内容を記憶してもよい。この場合、データファイルの内容を直接配列Fに代入する。
また、上記各実施形態において、Webブラウザ端末C1〜C3は、Web代替JSファイルを取得するため代替URIにアクセスする際、Webブラウザ端末C1、C2、C3やWebブラウザアプリケーションf1〜f3固有の情報(固有情報という)、例えば、機種情報やWebブラウザのバージョン等をWebサーバB1に送信してもよい。この場合、WebサーバB1は、受信した固有情報に応じて異なるWeb代替JSファイルを、Webブラウザ端末C1〜C3に提供してもよい。
この場合、具体的には、以下のような処理を行う。
例えば、Webブラウザ端末C1〜C3がWebサーバB1に、httpプロトコルを用いてアクセスする場合、User−Agentリクエストヘッダフィールドに固有情報を含めればよい。このUser−Agentリクエストヘッダフィールドは、リクエストを生成したユーザエージェントについての情報を含むものである。このフィールドは、統計目的、プロトコル違反の追跡、特定のユーザエージェントの制限を回避するようなレスポンスを作成するためのユーザエージェントの自動認識のために利用される。このフィールドには、複数の製品トークンや、エージェントやユーザエージェントの重要な付属製品を識別するためのコメントを含める事ができ、慣習によれば、製品トークンはアプリケーションを識別するために重要な順に列挙される。
また、例えば、Webブラウザ端末C1〜C3は、任意のユーザ拡張ヘッダフィールドを用いて固有情報を送信してもよい。具体的には、「X−ProductID」のように「X−」で始まるフィールド名はhttpの仕様書で定義される事は無く、常にユーザ定義ヘッダとして使用できるので、このようなフィールド名のフィールドを用いて固有情報を送信すればよい。
また、例えば、Webブラウザ端末C1〜C3は、問合せ構成要素(query部分)を代替URIに追加し、代替URIの一部として固有情報を送信してもよい。具体的には、代替URIが「http://XXX・・・.com/example.js」である場合、このURIにquery部分「ProductID=model10」(model10が固有情報)を追加した代替URI「http://XXX・・・.com/example.js?ProductID=model10」を用いてアクセスしてもよい。
以上のように、Webブラウザ端末C1〜C3は固有情報を送信し、WebサーバB1は、受信した固有情報に応じて異なるWeb代替JSファイルをWebブラウザ端末C1〜C3に提供する。これにより、例えば複数機種のWebブラウザ端末C1〜C3に対して当初は同一の代替JSファイルを同一の代替URIで提供していたが、その後、機種毎に別の代替JSファイルを提供するように変更する事態が発生した場合でも、Webブラウザ端末C1〜C3はそのまま同一の代替URIにアクセスしても、機種に応じた代替JSファイルを取得することができる。すなわち、Webブラウザ端末C1〜C3では、機種毎の代替URIに変更を行わなくてもよく、機種毎の保守の手間を軽減できる。
また、上記各実施形態において、Webブラウザ端末C1〜C3の構成を組み合わせてもよい。例えば、Webブラウザ端末C1に表示制御部c211及び代替判定部c22を加えてもよいし、Webブラウザ端末C1に表示制御部c311及び代替判定部c32を加えてもよいし、その両方を加えてもよい。また、Webブラウザ端末C2に
表示制御部c311及び代替判定部c32を加えてもよい。
この場合、表示制御部c111及び代替判定部c12の処理(代替URI処理)、表示制御部c211及び代替判定部c22の処理(代替データ処理)、表示制御部c311及び代替判定部c32の処理(代替モジュール処理)、の順に処理をすることが好ましい。
なお、代替URI処理及び代替データ処理で判定対象となるJSファイル(リソースURIのJSファイル)と、代替モジュール処理で判定対象となるJSファイルを異なる種類のJSファイルとしてもよい。具体的には、URI判定情報テーブル及びデータ判定情報テーブルには「prototype−1.6.0.3.js」のURI、ファイルデータを含めず、モジュール判定情報テーブルのみに「prototype−1.6.0.3.js」のオブジェクト名(「Prototype」)を含ませる。これにより、既に代替URI処理で取得した代替JSファイルに対して、代替モジュール処理を行うことを防止うることができる。
また、上記各実施形態において、代替JSファイルにおいて、その実行処理でJavascript言語を用いて実行する代わりに、Webブラウザ端末C1〜C3が内蔵し直接実行可能なバイナリコードで実行してもよい。
これは元のJSファイルの動作と代替したバイナリコードの動作が同じ場合に実施する。これは例えば、元のJSファイルの動作が動的に変化するものではない場合である。
この場合、「js−ctypes」拡張を用いて代替したバイナリコードの呼び出しを行う。「js−ctypes」拡張では、予めJavascript実行部を拡張し、オブジェクト「ctypes」の処理を組み込んでおく。このオブジェクトはメソッド「name」をもち、「ctypes.name(〜)」の形式で引数として呼出したいバイナリコードを含む動的ライブラリのファイル名を指定する。このメソッドの実行結果として、ライブラリオブジェクト(「lib」という)が得られる。このライブラリオブジェクトlibはメソッド「declare」を持ち、「lib.declare(〜)」の形式で引数として呼出したいバイナリコードのライブラリに含まれる関数名を指定する。このメソッドの実行結果として、Javascript言語における関数オブジェクトが得られる。
そして、このJavascript言語における関数オブジェクトをJSプログラム内で呼出すことで、呼出したいバイナリコードを含む動的ライブラリ内の指定の関数が呼出される。このように、取得した代替JSファイル内でこの「js−ctypes」拡張を用いてWebブラウザ端末が内蔵し直接実行可能なバイナリコードを実行する。これにより、JSファイルを代替JSファイルに置き換えるだけでなく、実行に際してもJavascript言語による実行よりも効率的な内蔵するバイナリコードによる実行が行える。
なお、上述した実施形態におけるWebブラウザ端末C1、C2、C3の一部、例えば、通信部c106、表示制御部c111、スクリプト取得部c112、URI判定部c122、データ判定部c222、及びモジュール判定部c322をコンピュータで実現するようにしても良い。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、Webブラウザ端末C1、C2、C3に内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
A1・・・Webサーバ、B1・・・Webサーバ、C1、C2、C3・・・Webブラウザ端末(情報処理装置)、c104・・・入力部、c106・・・通信部、c111・・・表示制御部(制御部)、c105・・・表示部、c112・・・スクリプト取得部(取得部)、c103・・・外部記憶部、c12、c22、c32・・・代替判定部、c121、c221、c321・・・判定情報記憶部、c122・・・URI判定部(取得先抽出部)、c222・・・データ判定部(取得先抽出部)、c322・・・モジュール判定部(取得先抽出部)、o101・・・ブラウザオブジェクト、o111・・・画面リソースオブジェクト、o112・・・htmlリソースオブジェクト、o113・・・Javascriptリソースオブジェクト、o12、o22・・・リソースビルダーオブジェクト、o121・・・ローダーオブジェクト、o1211・・・httpローダーオブジェクト、o1212・・・fileローダーオブジェクト、o122・・・レンダラーオブジェクト、o1221・・・htmlレンダラーオブジェクト、o1222、o3222・・・Javascriptレンダラーオブジェクト、o123・・・URI判定オブジェクト、o223・・・data判定オブジェクト、o323・・・API判定オブジェクト

Claims (16)

  1. 動作処理を記述するスクリプト言語のプログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部と、
    実行予定の前記プログラムの識別情報と前記判定情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する取得先抽出部と、
    前記取得先抽出部が抽出した取得先から前記代替プログラムを取得する取得部と、
    を有する情報処理装置であって、
    前記判定情報記憶部は、
    前記プログラムの内容と前記代替プログラムの取得先とを対応付けた判定情報とを記憶し、
    前記取得先抽出部は、
    前記判定情報記憶部が記憶するプログラムの内容のうち、前記取得部が取得した代替プログラムの内容と一致しているプログラムの内容に対応する代替プログラムの取得先をさらに抽出し、
    前記取得部は、
    前記取得先抽出部が抽出した取得先から他の代替プログラムを取得し、
    前記実行予定のプログラムを、前記取得部が取得した他の代替プログラムに置き換え、置き換えた代替プログラムを実行する制御部と、
    を備えることを特徴とする情報処理装置。
  2. 動作処理を記述するスクリプト言語のプログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部と、
    実行予定の前記プログラムの識別情報と前記判定情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する取得先抽出部と、
    前記取得先抽出部が抽出した取得先から前記代替プログラムを取得する取得部と、
    を有する情報処理装置であって、
    前記判定情報記憶部は、
    所定の命令文で用いられる対象の名称と前記代替プログラムの取得先とを対応付けた判定情報とを記憶し、
    前記取得先抽出部は、
    前記判定情報記憶部が記憶する対象の名称のうち、前記取得部が取得した代替プログラムから抽出された対象の名称に対応する代替プログラムの取得先をさらに抽出し、
    前記取得部は、
    前記取得先抽出部が抽出した取得先から他の代替プログラムを取得し、
    前記実行予定のプログラムを、前記取得部が取得した他の代替プログラムに置き換え、置き換えた代替プログラムを実行する制御部と、
    を備えることを特徴とする情報処理装置。
  3. 前記代替プログラムは、情報処理装置の情報処理能力に応じたプログラムであることを特徴とする請求項1又は2に記載の情報処理装置。
  4. 前記代替プログラムは、情報処理装置の種類に応じたプログラムであることを特徴とする請求項3に記載の情報処理装置。
  5. 前記情報処理装置は、プログラムを実行して画像を表示する表示装置であり、
    前記代替プログラムは、情報処理装置の動画の再生能力に応じたプログラムであることを特徴とする請求項3に記載の情報処理装置。
  6. 前記判定情報記憶部が記憶するプログラムの内容は、当該プログラムの内容を変換した文字列で表され、
    前記取得先抽出部は、
    前記判定情報記憶部が記憶するプログラムの内容のうち、前記取得部が取得した代替プログラムの内容を変換した変換データと一致している変換データに対応する代替プログラムの取得先をさらに抽出することを特徴とする請求項に記載の情報処理装置。
  7. 前記命令文は、変数に値を代入する代入文であることを特徴とする請求項に記載の情報処理装置。
  8. 前記命令文は、関数を定義する定義文であることを特徴とする請求項に記載の情報処理装置。
  9. 前記判定情報を更新することを特徴とする請求項1から8のいずれかに記載の情報処理装置。
  10. 前記取得部は、外部の装置から前記代替プログラムを取得することを特徴とする請求項1から9のいずれかに記載の情報処理装置。
  11. 前記プログラムは、ライブラリで提供されるプログラムであることを特徴とする請求項1から10のいずれかに記載の情報処理装置。
  12. 前記プログラムは、Javascript言語のプログラムであることを特徴とする請求項1から11のいずれかに記載の情報処理装置。
  13. 動作処理を記述するスクリプト言語のプログラムを実行する情報処理装置における情報処理方法において、
    前記情報処理装置が、
    前記プログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部に記憶された判定情報と、実行予定の前記プログラムの識別情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する過程と、
    前記抽出された取得先から前記代替プログラムを取得する過程と、
    前記プログラムの内容と前記代替プログラムの取得先とを対応付けた判定情報とを記憶する判定情報記憶部が記憶するプログラムの内容のうち、前記取得した代替プログラムの内容と一致しているプログラムの内容に対応する代替プログラムの取得先をさらに抽出する過程と、
    さらに抽出された取得先から他の代替プログラムを取得する過程と、
    前記実行予定のプログラムを、前記他の代替プログラムに置き換え、置き換えた代替プログラムを実行する過程と、
    を有することを特徴とする情報処理方法
  14. 動作処理を記述するスクリプト言語のプログラムを実行する情報処理装置における情報処理方法において、
    前記情報処理装置が、
    前記プログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部に記憶された判定情報と、実行予定の前記プログラムの識別情報と前記判定情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する過程と、
    前記抽出された取得先から前記代替プログラムを取得する過程と、
    所定の命令文で用いられる対象の名称と前記代替プログラムの取得先とを対応付けた判定情報とを記憶する判定情報記憶部が記憶する対象の名称のうち、前記取得された代替プログラムから抽出された対象の名称に対応する代替プログラムの取得先をさらに抽出する過程と、
    さらに抽出された取得先から他の代替プログラムを取得する過程と、
    前記実行予定のプログラムを、前記抽出された他の代替プログラムに置き換え、置き換えた代替プログラムを実行する過程と、
    を有することを特徴とする情報処理方法。
  15. 動作処理を記述するスクリプト言語のプログラムを実行する情報処理装置のコンピュータに、
    前記プログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部に記憶された判定情報と、実行予定の前記プログラムの識別情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する手順、
    前記抽出された取得先から前記代替プログラムを取得する手順、
    前記プログラムの内容と前記代替プログラムの取得先とを対応付けた判定情報とを記憶する判定情報記憶部が記憶するプログラムの内容のうち、前記取得した代替プログラムの内容と一致しているプログラムの内容に対応する代替プログラムの取得先をさらに抽出する手順、
    さらに抽出された取得先から他の代替プログラムを取得する手順、
    前記実行予定のプログラムを、前記他の代替プログラムに置き換え、置き換えた代替プログラムを実行する手順、
    を実行させるための情報処理プログラム
  16. 動作処理を記述するスクリプト言語のプログラムを実行する情報処理装置のコンピュータに、
    前記プログラムの取得先を示す情報と前記プログラムの代替プログラムの取得先とを対応付けた判定情報を記憶する判定情報記憶部に記憶された判定情報と、実行予定の前記プログラムの識別情報と前記判定情報とに基づいて、前記実行予定のプログラムの代替プログラムの取得先を抽出する手順、
    前記抽出された取得先から前記代替プログラムを取得する手順、
    所定の命令文で用いられる対象の名称と前記代替プログラムの取得先とを対応付けた判定情報とを記憶する判定情報記憶部が記憶する対象の名称のうち、前記取得された代替プログラムから抽出された対象の名称に対応する代替プログラムの取得先をさらに抽出する手順、
    さらに抽出された取得先から他の代替プログラムを取得する手順、
    前記実行予定のプログラムを、前記抽出された他の代替プログラムに置き換え、置き換えた代替プログラムを実行する手順、
    を実行させるための情報処理プログラム。
JP2009285018A 2009-12-16 2009-12-16 情報処理装置、情報処理方法、及び情報処理プログラム Expired - Fee Related JP5500968B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009285018A JP5500968B2 (ja) 2009-12-16 2009-12-16 情報処理装置、情報処理方法、及び情報処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009285018A JP5500968B2 (ja) 2009-12-16 2009-12-16 情報処理装置、情報処理方法、及び情報処理プログラム

Publications (2)

Publication Number Publication Date
JP2011128762A JP2011128762A (ja) 2011-06-30
JP5500968B2 true JP5500968B2 (ja) 2014-05-21

Family

ID=44291320

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009285018A Expired - Fee Related JP5500968B2 (ja) 2009-12-16 2009-12-16 情報処理装置、情報処理方法、及び情報処理プログラム

Country Status (1)

Country Link
JP (1) JP5500968B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA3006355A1 (en) * 2015-11-27 2017-06-01 Cadens Imagerie Medicale Inc. Method and system for executing a function for processing data using a server
CN111083569B (zh) * 2018-10-18 2021-11-05 杭州海康威视数字技术股份有限公司 一种视频播放方法及装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5857106A (en) * 1996-05-31 1999-01-05 Hewlett-Packard Company Runtime processor detection and installation of highly tuned processor specific routines
JP3707048B2 (ja) * 2000-06-12 2005-10-19 大日本印刷株式会社 インストール装置及び記録媒体
JP2003022189A (ja) * 2001-07-06 2003-01-24 Mitsubishi Electric Corp 分散ネットワークコンピューティングシステム
JP4953531B2 (ja) * 2001-08-30 2012-06-13 シャープ株式会社 端末装置
JP2003308213A (ja) * 2002-04-17 2003-10-31 Hitachi Ltd ジョブ処理方法、ジョブ処理装置及びストレージ管理システム
JP2004246413A (ja) * 2003-02-10 2004-09-02 Mitsubishi Electric Corp 計算機システム
US8789016B2 (en) * 2005-12-29 2014-07-22 Panasonic Corporation Systems and methods for providing user configurable software libraries
US20080196046A1 (en) * 2007-02-09 2008-08-14 Novarra, Inc. Method and Apparatus for Providing Information Content for Display on a Client Device

Also Published As

Publication number Publication date
JP2011128762A (ja) 2011-06-30

Similar Documents

Publication Publication Date Title
JP6922538B2 (ja) Api学習
US10776567B2 (en) Method for compiling page data, method, device and storage medium for page rendering
CN102521230B (zh) 用于有条件的数据显示的结果类型
JP6416374B2 (ja) 動的コンテンツと古いコンテンツとを含んでいるウェブサイトの高速レンダリング
US8577914B2 (en) APIS discovery service
US10452765B2 (en) Web content rewriting, including responses
CN102597993B (zh) 利用统一资源标识符管理应用状态信息
US9544335B2 (en) Method and system for local calling via webpage
US20190147167A1 (en) Apparatus for collecting vulnerability information and method thereof
CN102124481A (zh) 在具有广告的网页中嵌入宏
US20150067037A1 (en) Communication apparatus and communication method
JP2004164623A (ja) 表示データ生成装置、表示データ生成システム、表示データ生成方法、表示データ生成プログラム及び記録媒体
CN111723314B (zh) 网页展示方法、装置、电子设备及计算机可读存储介质
US7328234B1 (en) Agent architecture for triggering remotely initiated data processing operations
JP5500968B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
US20220043546A1 (en) Selective server-side rendering of scripted web page interactivity elements
JP4448026B2 (ja) Htmlアプリケーションの送信方法
US9727397B2 (en) Container-less JSP template
CN102231150A (zh) 嵌入式浏览器字库管理方法及系统
CN112130860B (zh) Json对象解析方法、装置、电子设备及存储介质
US20210124733A1 (en) Computer System and Data Management Method
Le Zou et al. On synchronizing with web service evolution
JP2015095092A (ja) 情報処理システム、情報処理装置、情報処理方法及びプログラム
JP2008257355A (ja) 電子装置、Webページ生成方法、及びWebページ生成プログラム
JP7346671B2 (ja) データ変換装置およびデータ変換方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121016

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130501

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130611

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130809

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140311

R150 Certificate of patent or registration of utility model

Ref document number: 5500968

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees