JP2009031960A - クライアント装置およびサーバ装置の間の通信を中継する技術 - Google Patents

クライアント装置およびサーバ装置の間の通信を中継する技術 Download PDF

Info

Publication number
JP2009031960A
JP2009031960A JP2007194091A JP2007194091A JP2009031960A JP 2009031960 A JP2009031960 A JP 2009031960A JP 2007194091 A JP2007194091 A JP 2007194091A JP 2007194091 A JP2007194091 A JP 2007194091A JP 2009031960 A JP2009031960 A JP 2009031960A
Authority
JP
Japan
Prior art keywords
program
client device
message
monitoring
server device
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.)
Granted
Application number
JP2007194091A
Other languages
English (en)
Other versions
JP5039946B2 (ja
Inventor
Arata Saito
新 齋藤
Takashi Miyashita
尚 宮下
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2007194091A priority Critical patent/JP5039946B2/ja
Priority to US12/175,746 priority patent/US8112500B2/en
Publication of JP2009031960A publication Critical patent/JP2009031960A/ja
Application granted granted Critical
Publication of JP5039946B2 publication Critical patent/JP5039946B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

【課題】プログラムの内部処理を外部から参照し易くする。
【解決手段】クライアント装置から受信したメッセージをサーバ装置に転送することで、サーバ装置からプログラムを取得してクライアント装置に返信する中継装置であって、クライアント装置からサーバ装置に対する、クライアント装置で動作させるプログラムを要求するメッセージを、サーバ装置に代えて受信する受信部と、第1のプログラムを要求する第1のメッセージの受信に応じて、第1のプログラムおよびそのプログラムを監視する監視プログラムを要求する、ロードプログラムを、第1のプログラムに代えてクライアント装置に返信して実行させる第1返信部と、受信した第2のメッセージが監視プログラムを要求することを条件に、その監視プログラムをサーバ装置から取得するのに代えて、予め記憶している監視プログラムをクライアント装置に返信して実行させる第2返信部とを備える中継装置を提供する。
【選択図】図4

Description

本発明は、クライアント装置およびサーバ装置の間の通信を中継する技術に関する。特に、本発明は、プログラムを取得するために送信するメッセージを中継する技術に関する。
近年、インターネットで公開されているソフトウェア・モジュールを組み合わせて新たなアプリケーション・プログラムを作成する手法である、マッシュアップが研究されている。マッシュアップを実現するためには、あるソフトウェア・モジュールが他のソフトウェア・モジュール内のオブジェクトを参照し、または、変更できることが望ましい。しかしながら、公開されているソフトウェア・モジュールの中には、そのモジュール内のオブジェクトにアクセスするためのインターフェイスが未公開なものや、そのソースファイルが未公開なものもある。この場合、そのソフトウェア・モジュールをマッシュアップに利用するのは困難である。
Saito, S., Takagi, H., and Asakawa, C. 2006. Transforming Flash to XML for Accessibility Evaluations. In Proceedings of the 8th international ACM SIGACCESS conference on Computers and Accessibility (Portland, Oregon, USA, October 23-25, 2006). Assets '06. ACM Press, New York, NY, 157-164.
これに対し、コンパイルされたプログラムを逆コンパイルしたうえで、逆コンパイルされたプログラムに元のプログラムのオブジェクトを参照するコマンドを挿入するアイデアが提案されている(上記の非特許文献1を参照)。しかしながら、プログラムによっては、ライセンス契約によってそれを逆コンパイルすることが禁じられている場合がある。従って、そのようなプログラムにはこの技術を適用することができない。また、逆コンパイルは比較的長い処理時間を要するため、プログラムを実行しようとする利用者の待ち時間を増加させてしまうおそれがある。
そこで本発明は、上記の課題を解決することのできる中継装置、システム、方法およびプログラムを提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
上記課題を解決するために、本発明の第1の形態においては、クライアント装置から受信したメッセージをサーバ装置に転送することで、前記サーバ装置からプログラムを取得して前記クライアント装置に返信する中継装置であって、前記クライアント装置から前記サーバ装置に対する、前記クライアント装置で動作させるプログラムを要求するメッセージを、前記サーバ装置に代えて受信する受信部と、第1のプログラムを要求する第1のメッセージの受信に応じて、前記第1のプログラムおよびそのプログラムを監視する監視プログラムを要求する、ロードプログラムを、前記第1のプログラムに代えて前記クライアント装置に返信して実行させる第1返信部と、受信した第2のメッセージが、その監視プログラムを要求することを条件に、その監視プログラムを前記サーバ装置から取得して返信する処理に代えて、予め記憶している監視プログラムを前記クライアント装置に返信して実行させる第2返信部とを備える中継装置を提供する。また、当該中継装置としてコンピュータを機能させるプログラムおよび方法を提供する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、本実施形態に係る情報システム10の全体構成を示す。情報システム10は、相互に電気通信回線で接続された、クライアント装置20と、サーバ装置30と、中継装置40と、サーバ装置50とを備える。クライアント装置20は、例えば、ウェブブラウザを動作させており、利用者からポインティング・デバイスの操作又はキーボードの入力操作を受け付ける。サーバ装置30は、例えば、ソフトウェア・ベンダーなどにより管理されており、利用者から要求されたソフトウェアをその利用者に提供する。中継装置40は、例えばプロキシーサーバと呼ばれる装置であり、クライアント装置20およびサーバ装置50の間の通信を中継する役割を果たす。サーバ装置50は、例えば、ウェブサイトを実現するものであり、利用者から要求されたHTML(Hypertext Mark−up Language)文書その他のファイルをその利用者に提供する。
クライアント装置20は、利用者の操作に応じて、外部プログラム12を要求するメッセージをサーバ装置30に送信する。このメッセージは、例えば、HTTP(Hypertext Transfer Protocol)に準拠している。これに応じて、サーバ装置30は、外部プログラム12をクライアント装置20に返信して実行させる。外部プログラム12は、例えば、ActiveX(登録商標)コントロールのような、ウェブブラウザにより実行可能なプログラムを含んでよい。この場合、クライアント装置20は、その外部プログラム12を実行することにより、その外部プログラム12による出力をウェブブラウザの画面内に表示する。クライアント装置20のうちこのウェブブラウザを表示する部分を表示部22とする。
また、クライアント装置20は、サーバ装置50から取得したHTMLファイルを解釈して、その内容を表示部22に表示している。HTMLファイルを解釈する、とは、即ち例えば、HTMLのタグなどに従って、HTMLファイル内で定義されたテキストや画像などを、所定の形式(例えば、テキストであれば文字の大きさ、フォント、表示位置、画像であればその大きさ、圧縮率)に従って表示することをいう。HTMLを解釈した結果、または、ウェブブラウザが利用者から操作を受け付けた結果、クライアント装置20がプログラムをサーバ装置50から取得する必要が生じる場合がある。取得されたプログラムはクライアント装置20によって実行される。なお、このプログラムは、本発明に係る第1のプログラムの一例である。このプログラムは、後に説明する解析の対象となることから、以降このプログラムのことを、対象プログラム15と呼ぶ。
この場合、クライアント装置20は、対象プログラム15を要求するメッセージを、中継装置40を介してサーバ装置50に対し送信する。このメッセージも、例えば、HTTPに準拠していてよい。これに応じて、サーバ装置50は、中継装置40を介してクライアント装置20に対し対象プログラム15を返信して実行させる。対象プログラム15は、例えば、アドビ(Adobe)社(登録商標)のフラッシュ(Flash)のムービークリップを実現するSWFファイルに記録されたプログラムのような、動画又は静止画をウェブブラウザ(Flashプレイヤーをプラグインとしてインストールしたウェブブラウザを含む。)の画面に表示するプログラムである。これにより、クライアント装置20の表示部22には、対象プログラム15の出力である動画又は静止画等が表示される。
図2は、本実施形態に係る表示部22の表示例を示す。クライアント装置20は、例えば、マイクロソフト社(登録商標)のインターネット・エクスプローラ(登録商標)のような、ウェブブラウザを動作させており、表示部22はその画面を表示する。そして、表示部22は、その画面内に、例えば第1ウィンドウ200および第2ウィンドウ210の2つのウィンドウを表示する。第1ウィンドウ200は、対象プログラム15による出力を表示している。対象プログラム15は、この図のように、複数の表示オブジェクトを所定の構造(例えばzオーダーなどと呼ばれる階層構造)により出力する。一例として、図2の例では、表示オブジェクトAの手前側に、表示オブジェクトBおよびCが重ねて表示され、表示オブジェクトCの手前側に、更に、表示オブジェクトDおよびEが重ねて表示されている。この画像が動画の場合には、このような表示オブジェクトの構造は動的に変化し得る。
一方、第2ウィンドウ210は、外部プログラム12による出力を表示している。外部プログラム12は、対象プログラム15の内部処理で用いられるオブジェクトの構造を解析して、解析したその構造を出力する。この構造は、例えばDOM(Document Object Model)ツリーと呼ばれる。対象プログラム15の内部処理で用いられるオブジェクトの構造は、対象プログラム15の出力である表示オブジェクトの階層構造と対応していてもよい。一例として、第2ウィンドウ210は、オブジェクトAの子オブジェクトが、オブジェクトBおよびCであって、オブジェクトCの子オブジェクトが、オブジェクトDおよびEであることを示す構造を表示する。但し、このオブジェクトの構造は、あくまで内部処理で用いられるオブジェクトの構造であって、第1ウィンドウ200に表示された表示オブジェクトの構造とは一致しない場合がある。
ここで、対象プログラム15は、DHTML、Ajax、または、Javascriptなどのようなテキストファイルではなく、フラッシュのアクション・スクリプト・プログラムなどの、予めコンパイルされたバイナリファイルの場合がある。この場合、クライアント装置20において外部プログラム12が動作の解析のために対象プログラム15のソースコードを参照することはできない。対象プログラム15を逆コンパイルすればソースコードを参照できるとも考えられるが、そもそも逆コンパイルはライセンス契約等に基づき禁止されている場合もある。また、対象プログラム15の内部処理で用いられるオブジェクトは、対象プログラム15の実行に応じて動的に変化する場合もあることから、例えソースコードを参照できたとしても、動作中の対象プログラム15の内部処理で用いられるオブジェクトの構造を外部プログラム12が解析するのは非常に困難である。
これに対し、本実施形態に係る情報システム10は、対象プログラム15のダウンロード時に、対象プログラム15の動作を解析し易くするための監視プログラムを対象プログラム15と共にクライアント装置20に送信することで、これらのプログラムをクライアント装置20において並行に動作させる。これにより、予めコンパイルされてその動作内容が解析困難な対象プログラム15についても、ライセンス契約等にも違反することなく、その動作を解析し易くすることを目的とする。以下、中継装置40がクライアント装置20に対象プログラム15をダウンロードさせる処理を中心に説明する。
図3は、本実施形態に係るクライアント装置20、中継装置40、および、サーバ装置50間の通信の具体例を示す。クライアント装置20は、HTML文書25をサーバ装置50からダウンロードしてその内容を解釈する。図示したように、このHTML文書25は、objectタグを含む。objectタグは、それが記述された部分に、フラッシュのムービークリップなどの画像オブジェクトを挿入する指示を示す。図では、objectタグによって、フラッシュのムービークリップを実現するファイルのファイル名が指定されている。このファイルは、SWFというファイルフォーマットを有するから、このファイルのことをSWFファイルと呼ぶ。このほかに、objectタグには、挿入した画像オブジェクトの表示形式、例えば表示領域の大きさや表示領域の位置などを指定することもできる。
以下、このSWFファイル名の部分に、「http://△△△.com/foo.swf?x=30&y=50」という文字列が指定されたものとして説明をすすめる。
このHTML文書25を解釈したクライアント装置20は、この文字列中のURLの部分、即ち「http://△△△.com/foo.swf」を、対象プログラム15のファイル名と判断する。そして、クライアント装置20は、対象プログラム15を要求する第1のメッセージを、中継装置40を介してサーバ装置50に送信する。即ち、サーバ装置50は、この「http://△△△.com/」というドメイン名を有するウェブサイトとして機能している。
クライアント装置20におけるウェブブラウザは、外部プログラム12等の機能によって、中継装置40をHTTPメッセージのためのプロキシーサーバとして用いるように設定されている。従って、中継装置40は、この第1のメッセージをサーバ装置50に代わって受信する。このメッセージの受信に応じて、中継装置40は、対象プログラム15に代えてロードプログラム60をクライアント装置20に返信して実行させる。このロードプログラム60は、対象プログラム15およびそのプログラムの動作を監視する監視プログラム70を要求するプログラムである。これと共に、中継装置40は、受信したこの第1のメッセージをサーバ装置50に転送することで、対象プログラム15をサーバ装置50から取得して記憶装置に格納しておく。
クライアント装置20は、ロードプログラム60を実行することにより、監視プログラム70を要求する第2のメッセージ、および、対象プログラム15を再度要求する第3のメッセージを、サーバ装置50宛に順次送信する。中継装置40は、この第2および第3のメッセージを、サーバ装置50に代わって受信する。中継装置40は、第2のメッセージの受信に応じ、そのメッセージの宛先に関わらず、予め記憶している監視プログラム70を記憶装置から読み出してクライアント装置20に返信する。一方、中継装置40は、第3のメッセージの受信に応じ、既に第1のメッセージを転送することで取得していた対象プログラム15を、記憶装置から読み出して、クライアント装置20に返信する。これにより、クライアント装置20は、対象プログラム15および監視プログラム70の双方を並列に動作させることができる。
図4は、本実施形態に係る中継装置40の機能構成を示す。中継装置40は、インストールされたプログラムを後述のCPU1000およびRAM1020等を用いて実行することにより、受信部400と、転送部410と、格納部420と、返信モジュール430として機能する。また、中継装置40は、例えば後述のハードディスクドライブ1040により実現される、記憶装置440を有する。これらの各部は、基本的機能として、いわゆるウェブサーバのプロキシーサーバとして機能する。具体的には以下の通りである。
まず、受信部400は、クライアント装置20からサーバ装置50に対する、クライアント装置20で動作させるプログラムを要求するメッセージを、サーバ装置50に代えて受信する。転送部410は、受信したそのメッセージをサーバ装置50に対し転送することで、要求されたそのプログラムをサーバ装置50から取得する。そして、格納部420は、その取得したプログラムを記憶装置440に格納する。返信モジュール430は、そのプログラムを記憶装置440から読み出してクライアント装置20に返信する。同一のプログラムが再度要求されたときには、返信モジュール430はそのプログラムを記憶装置440から読み出して直ちに返信することで、クライアント装置20における返信待ちの時間を節約できる。
記憶装置440は、サーバ装置50がクライアント装置20からの要求に応じて中継装置40を経由してクライアント装置20に返信したプログラムを、そのプログラムの識別情報に対応付けて記憶している。その一例を図5に示す。
図5は、本実施形態に係る記憶装置440のデータ構造の一例を示す。記憶装置440は、そのプログラムの識別情報の一例としてそのプログラムを取得するためのメッセージの宛先となるURL(Uniform Resource Locator)を記憶している。そして、記憶装置440は、そのURLに対応付けて、そのプログラムそれ自体を記憶している。一例として、「http://△△△.com/foo.swf」を宛先として取得されたプログラムは、「foo.swf」というファイル名で記憶装置440に記憶されている。このように、記憶装置440がURLをプログラムに対応付けて記憶することで、返信モジュール430がURLをキーとして記憶装置440からプログラムを検索できる。
図4の説明に戻る。返信モジュール430は、記憶装置440に格納されたプログラムを単にクライアント装置20に返信する処理の他、対象プログラム15が要求された場合にはその対象プログラム15と共に監視プログラム70を返信する機能を有する。具体的には、返信モジュール430は、第1返信部432および第2返信部435を有する。第1返信部432は、受信部400が受信した第1のメッセージが、特定条件を満たす対象プログラム15かどうかを判断する。この特定条件は、対象プログラム15が、クライアント装置20からサーバ装置50に順次要求され、クライアント装置20において互いに並列に実行される複数のプログラムのうちの最初のプログラムであることである。
この特定条件の判断は、例えば、受信部400がメッセージに含めて受信する識別情報、および、返信モジュール430に記憶された宛先URLを照合することにより実現される。具体的には、まず、受信部400は、対象プログラム15を要求するメッセージに、その対象プログラム15を要求する他のプログラムの識別情報を含めて受信する。この識別情報は、例えば、HTTPにおける"Referer:"データフィールドの設定値である。即ち、クライアント装置20のウェブブラウザで動作する一のプログラムが他のプログラムを要求した場合において、その要求メッセージの中の"Referer:"データフィールドには当該一のプログラムの識別情報が設定される。対象プログラム15を要求したのがSWFファイルに記録されたプログラムでなく、HTML文書である場合には、このデータフィールドにはそのHTML文書のURLなどが設定される。
そして、第1返信部432は、そのメッセージに含めて受信した当該他のプログラムの識別情報を、記憶装置440の宛先URLのフィールドから検索する。この識別情報が検索されるということは、既にクライアント装置20のブラウザ上で動作する当該他のプログラムによって、対象プログラム15が要求されたことを示す。一方で、この識別情報が検索されない場合には、このメッセージが、当該他のプログラムによって送信されたものでなく、他の方法によって、例えば、HTML文書を解釈して送信したものであることが分かる。従って、第1返信部432は、その識別情報が記憶装置440から検索されないことを条件に、クライアント装置20において並列に動作する上記の複数のプログラムのうちの最初のプログラムと判断する。もし最初のプログラムでなければ、それよりも前に何らかのプログラムが既にクライアント装置20にダウンロードされているはずだからである。
そして、第1返信部432は、対象プログラム15が当該最初のプログラムであることを条件に、対象プログラム15に代えて、対象プログラム15および対象プログラム15の動作を監視する監視プログラム70を要求するロードプログラム60を、クライアント装置20に返信して実行させる。また、中継装置40がロードプログラム60を返信する処理と並行に、格納部420は、対象プログラム15をサーバ装置50から取得して記憶装置440に格納してもよい。中継装置40が返信するロードプログラム60の一例を図6に示す。
図6は、本実施形態に係るロードプログラム60の一例を示す。ロードプログラム60は、フラッシュのムービークリップを実現するアクション・スクリプト・プログラムを要求するプログラムであり、そのプログラム自体もアクション・スクリプトで記述されている。まず、5行目から8行目のコマンドについて説明する。6行目は、対象プログラム15を要求するコマンドを示す。このコマンドは、例えば、アクション・スクリプトのloadMovieNumコマンドである。このコマンドの第1引数には、要求先のURLが与えられる。
第1引数の詳細として、まず、thisは、このロードプログラム60自体をオブジェクトとして参照する演算子である。そして、this._urlは、このロードプログラム60を取得するために送信したメッセージの宛先URLを示している。中継装置40は要求された対象プログラム15に代えてロードプログラム60を返信したものの、クライアント装置20が要求したのはあくまで対象プログラム15であるから、「this._url」は対象プログラム15のURL、例えば、「http://△△△.com/foo.swf」である。
第2引数は、要求するムービークリップを読み込むレベルを指定する。フラッシュのムービークリップは、例えば、0から所定の数値(倍精度IEEE−754における最大値)までの各レベルの何れかにロードすることができる。0レベルは特別なレベルであり、0レベルに対象プログラム15がロードされたことを条件に、既に0レベルで動作しているロードプログラム60を含めた全てのプログラム(SWFファイルに記録された全てのプログラム)の動作が終了する。第3引数は、オプション要素であって、指定された場合にはHTTPリクエストに設定する属性を示す。第3引数に「POST」という文字列を与えることで、第1返信部432は、クライアント装置20に、第2のメッセージにHTTPのPOST属性を設定して送信させることができる。(なお、第3引数に「GET」という文字列を与えると、ウェブブラウザに設けられたソフトウェア・キャッシュの機能によって、HTTPリクエストが中継装置40に到達しない場合がある。)
次に、8行目は、監視プログラム70を要求するコマンドを示す。このコマンドも、6行目と同様に、アクション・スクリプトのloadMovieNumコマンドである。但し、第1引数および第2引数が6行目とは異なり、第3引数は設定されていない。具体的には、第1引数として、「getSameDomainURL(this._url、"監視プログラムのURL")」という文字列が設定されている。「getSameDomainURL」という関数は、2つの引数を採り、第1引数で与えられたURLのドメイン部分を、第2引数で与えられたURLのドメイン以外の部分を結合して出力する。
このため、この関数の出力は、対象プログラム15のURLのドメイン部分と、監視プログラム70のURLのドメイン以外の部分を結合したURLとなる。従って、8行目のコマンドは、実際には中継装置40に記憶されている監視プログラム70を、サーバ装置50に対し要求するコマンドとなる。この結果、ロードプログラム60は、対象プログラム15よび監視プログラム70を、共に同一のドメインのURLを宛先として要求させると共に、これらのプログラムをクライアント装置20において並列に動作させることができる。なお、第2引数は、上記の例と同様である。但し、指定されるレベルは、その後に対象プログラム15が動作することによってロードされる他のプログラムのレベルとは異なるように設定されることが望ましい。この図の例では、一般的に使用されにくいと考えられるレベルとして、レベル53553が設定されている。
以上のコマンドを実行した結果、ロードプログラム60の実行が完了した時点で、対象プログラム15および監視プログラム70が、あたかも同一のドメインを有するURLからダウンロードされたかのようにクライアント装置20において動作する。
続いて、1行目から3行目のコマンドについて説明する。クライアント装置20において、第1のメッセージにより要求する対象プログラム15には、その実行に先立って、入力パラメータが与えられる場合がある。例えば、第1のメッセージが宛先URLとして「http://△△△.com/foo.swf?x=30&y=50」という文字列を含む場合において、この「?」以降の変数の値が入力パラメータである。中継装置40が対象プログラム15に代えてロードプログラム60を返信した場合において、この入力パラメータは、クライアント装置20において対象プログラム15に代えてロードプログラム60に与えられる。1行目から3行目のコマンドは、このようにしてロードプログラム60に与えられるその入力パラメータを、ロードプログラム60の実行により要求される対象プログラム15に新たな入力パラメータとして与えるコマンドである。
このコマンドは、例えば、Objectのプロトタイプに対する代入によって実現される。アクション・スクリプトは、ECMAScriptなどと同様に、プロトタイプベースオブジェクト指向言語(Prototype Based Object Oriented Language)である。プログラムに記述可能な全てのオブジェクトは、Objectクラスという特別なクラスのサブクラスである。また、Objectクラスはプロトタイプというデータフィールドを含む。プロトタイプは、Objectクラスの全てのサブクラスから参照可能なフィールドである。例えば、あるオブジェクトがプロトタイプに格納された場合において、そのオブジェクトと同一名のオブジェクトが、あるサブクラスに定義されていなければ、そのオブジェクトがそのサブクラスのメソッドまたはフィールドとして参照可能となる。
このようなObjectのプロトタイプの性質を利用して、この1から3行目のコマンドは、ロードプログラム60に与えられた入力パラメータ(this[prop])を、Objectのプロトタイプに代入している。これにより、その後にロードされた対象プログラム15からも、その入力パラメータを参照することができる。その後にロードされる対象プログラム15に定義された如何なるオブジェクトも、Objectというクラスのサブクラスだからである。
入力パラメータの代入を、このようにObjectのプロトタイプを利用して実現することは、次のような作用・効果を奏する。第1に、中継装置40が、ロードプログラム60にどのような入力パラメータが代入されたかを解析する必要がない。ロードプログラム60に与えられる入力パラメータの種類や数は、それを呼び出すHTML文書に依存する。図6のコマンド例では、どのような入力パラメータが与えられたかによらず、与えられる入力パラメータを一括して対象プログラム15に入力することができる。第2に、対象プログラム15の動作開始前に予め入力パラメータを与えることができる。他の手法を採用しようとすれば、対象プログラム15が動作を開始してから、対象プログラム15内で生成されるオブジェクトに対し、ロードプログラム60に与えられる入力パラメータを代入しなければならないと考えられる。この場合には、代入のタイミングが遅れて、対象プログラム15を誤動作させてしまうおそれがある。これに対し、本手法によれば、対象プログラム15の動作開始前に予め入力パラメータを与えることができ、対象プログラム15を確実に正常動作させることができる。
図4の説明に戻る。次に、第2返信部435は、第1のメッセージ以降に受信する第2のメッセージが、監視プログラム70を要求するかどうかを判断する。そのメッセージが監視プログラム70を要求することを条件に、第2返信部435は、その監視プログラム70をサーバ装置50から取得して返信する処理に代えて、予め記憶装置440等に記憶している監視プログラム70をクライアント装置20に返信して実行させる。一方で、第1のメッセージ以降に受信する第3のメッセージが対象プログラム15を要求する場合には、返信モジュール430は通常動作する。即ちこの場合、第2返信部435は、記憶装置440から読み出した対象プログラム15をクライアント装置20に返信して実行させる。これにより、クライアント装置20は、対象プログラム15および監視プログラム70を、共にロードプログラム60の要求の下で動作させることができる。
次に、図7および図8を参照して、外部プログラム12、対象プログラム15および監視プログラム70の連係動作の一例を説明する。
図7は、本実施形態に係る監視プログラム70の一例を示す。図8は、本実施形態に係る外部プログラム12、対象プログラム15および監視プログラム70の連係動作の一例を示す。図7の1行目はアクセス制限に関するセキュリティの設定を示す。この1行目のコマンドにより、外部プログラム12から監視プログラム70内のオブジェクトを参照可能とすることができる。2行目は、変数"IBM_AR_request_args"の値が変化した場合に、IBM_AR_processRequestという関数(以下、ハンドラと呼ぶ)を呼び出す設定を示す。そして、その関数の実体は、4行目から11行目に定義されている。
この関数が呼ばれる過程についてまず説明する。例えば、外部プログラム12は、下記のようなJavascriptのコマンドを実行することにより、外部プログラム12と並列に動作する監視プログラム70内の変数に値を設定することができる。
document.getElementsByTagName("object")[0].SetVariable('x',50);
ここで、'x'は、値を変更しようとする変数の名前である。そして、"object"は、その変数を有するFlashコンテンツ(ここでは、たとえば監視プログラム70)を実行しているFlashプレイヤーを表すHTMLのタグ名である。そして、50は、設定しようとする値である。従って、外部プログラム12の実行によって、上記の'x'に代えて'_level53553.IBM_AR_request_args'を設定したコマンドを発行すれば、監視プログラム70内で定義された上記のハンドラを呼び出すことができる。なお、"_root"はレベル0で動作中のプログラムをオブジェクトとみなした識別子、即ち例えば対象プログラム15を示す識別子である。
次に、ハンドラが呼び出された場合の処理について説明する。図7の2行目のwatchメソッドの機能によって、ハンドラには、値が変化した変数の名前(propName)、変化前の値(oldVal)および変化後の値(newVal)が、引数として少なくとも与えられる。この引数のリストは例えば4行目の引数の定義に示す通りである。そして、5行目において、この変化後の値がデシリアライズされる。
シリアライズ・デシリアライズとは公知の概念であり、その意味は概ね以下の通りである。シリアライズとは、一のプログラムの実行中に参照される複数のオブジェクトを、他のプログラムに対し転送可能なデータ形式に変換する処理である。プログラムの実行中に、複数のオブジェクトは、処理の効率化等を目的として、アレイ構造、リスト構造などの、様々な形態で記憶される。例えばリスト構造において、第1オブジェクトは、第2オブジェクトが記憶されているメモリ上のアドレスを参照している場合がある。
このような場合において、一のプログラムがこれらのオブジェクトをそのまま他のプログラムに転送してしまうと、不都合が生じる場合がある。それは、当該一のプログラムおよび当該他のプログラムにおいて、オブジェクトが記憶されるメモリ上のアドレスは異なるからである。この結果、当該他のプログラムにおいて第1オブジェクトは第2オブジェクトを適切に参照できなくなってしまう。これに対し、シリアライズによれば、複数のオブジェクトを、例えばアドレスを用いた参照を除外したデータ形式に変換することができる。なお、デシリアライズは、このようなシリアライズの逆変換を表す。
ここで、引数newValには、複数の変数を予めシリアライズした数値が与えられるものとして説明をすすめる。即ち、外部プログラム12が、対象プログラム15に対し出力しようとする複数の変数を生成し、それら複数の変数をシリアライズして、その結果の数値を上記のSetVariableコマンドにより変数"IBM_AR_request_args"に代入すると仮定して、図7の説明を続ける。
5行目に示すデシリアライズの結果、変数argには、外部プログラム12により設定された複数の変数が正確に設定される。6行目は、変数argによって表される複数の変数のうちの第1番目の変数を読み出した上で、変数argを、当該複数の変数のうちの第2番目以降の変数を表す変数に変更する処理を示す。この結果、変数nameには、当該1番目の変数の値が代入される。7行目は、メソッドを表す変数methodに、変数nameをメソッド名とするメソッドを代入する処理を表す。なお、Init.callbacks[name]は、変数nameをメソッド名とするメソッドのポインタやその実体などを読み出すことを表す。
8行目は、変数methodに代入されたメソッドを、変数argによって表された複数の変数を引数として実行させる処理を表す。メソッドを実行した戻り値は、変数retObjに代入される。ここで呼び出されるメソッドは、監視プログラム70または対象プログラム15内で定義されるいずれのメソッドであってもよい。即ち、外部プログラム12は、呼び出すメソッドの名前および引数を"IBM_AR_request_args"にセットすれば、対象プログラム15または監視プログラム70内で定義される如何なるメソッドをも呼び出すことができる。例えば、監視プログラム70内に、クライアント装置20において動作する対象プログラム15内のオブジェクトを変更するメソッドを定義しておけば、外部プログラム12は、そのメソッドを呼び出すことで、そのオブジェクトを変更することができる。
次の9行目は、変数retObjをシリアライズして、変数IBM_AR_responseに代入する処理を表す。これにより、外部プログラム12は、例えば以下のコマンドを実行することにより、メソッドを実行した戻り値を監視プログラム70から取得することができる。
document.getElementsByTagName("object")[0].GetVariable('_level53553.IBM_AR_response_value');
これにより、対象プログラム15内のオブジェクトを外部プログラム12に参照させることができる。即ち例えば、監視プログラム70内に、クライアント装置20において動作する対象プログラム15内のオブジェクトを読み出すメソッドを定義しておけばよい。そうすれば、外部プログラム12は、そのメソッドを呼び出すことで、そのオブジェクトを監視プログラム70から外部プログラム12に変数「IBM_AR_response_value」の値として出力させることができる。
以上のように、外部プログラム12および監視プログラム70が相互に連携することで、外部プログラム12は、対象プログラム15内で定義されたオブジェクトに対し、参照のみならず変更も含む、任意の操作をすることができる。更に、逆方向の通信、例えば、監視プログラム70が外部プログラム12中で定義されたコマンドを実行することが、実現可能であることを、この実施形態を参照した当業者であれば理解するであろう。具体的には、外部プログラム12が、監視プログラム70内で定義された変数値を、例えば定期的に読み出して、変数値が変化したかどうかを判断する。そして、外部プログラム12は、その変数値が変化した場合に、その変数値が表す監視プログラム70からの指示に基づく処理をする。この変数値は、例えば、上記の説明のような、メソッド名およびその引数をシリアライズした数値を表す。即ちこの場合、監視プログラム70は、監視プログラム70内で定義された変数の変数値を、外部プログラム12に対する指示を示す変数値に変更することで、外部プログラム12に所望の動作をさせることができる。
図9は、本実施形態に係る中継装置40による処理を示すフローチャートである。受信部400は、クライアント装置20からサーバ装置50に対する、クライアント装置20で動作させるプログラムを要求するメッセージを、サーバ装置50に代えて受信する(S900)。そして、第2返信部435は、受信したそのメッセージが、監視プログラム70を要求するメッセージかどうかを判断する(S910)。受信したそのメッセージが監視プログラム70を要求するメッセージであることを条件に(S910:YES)、第2返信部435は、その監視プログラム70を記憶装置440から読み出して返信する(S920)。
一方、そのメッセージが監視プログラム70を要求するメッセージでないことを条件に(S910:NO)、第1返信部432は、要求されるプログラムが既に記憶装置440に記憶されているかどうかを判断する(S930)。例えば、転送部410がサーバ装置50に要求して既に対象プログラム15を取得した場合には、対象プログラム15は格納部420により記憶装置440に格納されている。そのように、要求されるプログラムが記憶装置440に記憶されている場合には(S930:YES)、第1返信部432は、そのプログラムを記憶装置440から読み出してクライアント装置20に返信する(S940)。
一方で、要求されるプログラムが記憶装置440に記憶されていないことを条件に(S930:NO)、第1返信部432は、そのメッセージがプログラム間の呼び出し関係を示すコールツリーのルートノードに対応するプログラムを要求するメッセージかを判断する(S950)。この判断は、既に述べたように、例えば、HTTPメッセージの"Referer:"データフィールドを記憶装置440に記憶されたURLと照合することによって実現されてもよい。このルートノードに対応するプログラムは、上記の対象プログラム15である。
これに加えて、第1返信部432は、S950において、要求されるプログラムはアクション・スクリプト・プログラムであるかどうかを、更に判断してもよい。例えば、第1返信部432は、受信したメッセージを転送部410によりサーバ装置50に対し転送させることで、要求されるプログラムを表すバイナリデータの先頭の数バイトを取得する。この先頭の数バイトには、そのプログラムの種別を示すヘッダ部分が含まれる。第1返信部432は、このヘッダ部分を、アクション・スクリプト・プログラムを示す予め定められたバイト列と比較する。一致すれば、そのプログラムはアクション・スクリプト・プログラムであることが分かる。このような判断によれば、第1返信部432は、アクション・スクリプト・プログラムのみを、監視プログラム70による監視の対象とすることができる。
そして、第1返信部432は、受信したそのメッセージが対象プログラム15を要求するメッセージであることを条件に(S950:YES)、その対象プログラム15を返信する処理に代えて、予め記憶しているロードプログラム60をクライアント装置20に返信する(S960)。この返信の処理の次に、又は、この返信の処理と並行して、転送部410は、受信したそのメッセージをサーバ装置50に転送することで、その対象プログラム15をサーバ装置50から取得する(S970)。そして、格納部420は、取得したその対象プログラム15を記憶装置440に格納する(S975)。
一方、受信したメッセージがルートノードに対応するプログラムを要求するものではない場合に(S950)。中継装置40は、通常のプロキシーサーバとして機能する。即ち、転送部410は、受信したそのメッセージをサーバ装置50に転送することで、プログラムをサーバ装置50から取得する(S980)。そして、格納部420は、取得したそのプログラムを記憶装置440に格納すると共に、返信モジュール430は、そのプログラムをクライアント装置20に返信する(S985)。
以上の処理を、中継装置40は、プログラムを要求するメッセージを受信する毎に繰り返す。
図10は、本実施形態に係る中継装置40として動作するコンピュータの機能構成を示す。コンピュータは、ホストコントローラ1082により相互に接続されるCPU1000、RAM1020、及びグラフィックコントローラ1075を有するCPU周辺部と、入出力コントローラ1084によりホストコントローラ1082に接続される通信インターフェイス1030、ハードディスクドライブ1040、及びCD−ROMドライブ1060を有する入出力部と、入出力コントローラ1084に接続されるBIOS1010、フレキシブルディスクドライブ1050、及び入出力チップ1070を有するレガシー入出力部とを備える。
ホストコントローラ1082は、RAM1020と、高い転送レートでRAM1020をアクセスするCPU1000及びグラフィックコントローラ1075とを接続する。CPU1000は、BIOS1010及びRAM1020に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ1075は、CPU1000等がRAM1020内に設けたフレームバッファ上に生成する画像データを取得し、表示装置1080上に表示させる。これに代えて、グラフィックコントローラ1075は、CPU1000等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
入出力コントローラ1084は、ホストコントローラ1082と、比較的高速な入出力装置である通信インターフェイス1030、ハードディスクドライブ1040、及びCD−ROMドライブ1060を接続する。通信インターフェイス1030は、ネットワークを介して外部の装置と通信する。ハードディスクドライブ1040は、コンピュータが使用するプログラム及びデータを格納する。CD−ROMドライブ1060は、CD−ROM1095からプログラム又はデータを読み取り、RAM1020又はハードディスクドライブ1040に提供する。
また、入出力コントローラ1084には、BIOS1010と、フレキシブルディスクドライブ1050や入出力チップ1070等の比較的低速な入出力装置とが接続される。BIOS1010は、コンピュータの起動時にCPU1000が実行するブートプログラムや、コンピュータのハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ1050は、フレキシブルディスク1090からプログラム又はデータを読み取り、入出力チップ1070を介してRAM1020またはハードディスクドライブ1040に提供する。入出力チップ1070は、フレキシブルディスク1090や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
コンピュータに提供されるプログラムは、フレキシブルディスク1090、CD−ROM1095、又はICカード等の記録媒体に格納されて利用者によって提供される。プログラムは、入出力チップ1070及び/又は入出力コントローラ1084を介して、記録媒体から読み出されコンピュータにインストールされて実行される。プログラムがコンピュータ等に働きかけて行わせる動作は、図1から図9において説明した中継装置40における動作と同一であるから、説明を省略する。
以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク1090、CD−ROM1095の他に、DVDやPD等の光学記録媒体、MD等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はRAM等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをコンピュータに提供してもよい。
以上、本実施の形態に係る中継装置40によれば、クライアント装置20がサーバ装置50に要求する対象プログラム15に対し、逆コンパイル、命令コードの追加、または、再コンパイルなどを行うことなく、動作中のその対象プログラム15の内部処理で用いられるオブジェクトを外部プログラム12によってアクセスさせることができる。これにより、外部プログラム12は、例えばオブジェクトの階層関係を表したDOMツリーなどの情報を取得できる。この機能を利用することで、例えば以下に示す様々な応用が可能となる。
まず、基本的機能として、内部処理用のオブジェクトと画面上の表示オブジェクトの対応付けを表示部22の画面上に表示できる。即ち例えば、外部プログラム12は、図2の第2ウィンドウ210などにおいて、あるオブジェクトがクリックされたのに応じて、それに対応する表示オブジェクトを第1ウィンドウ200上でハイライトして表示することができる。また、外部プログラム12は、図2の第2ウィンドウ210において、例えば出力音声のボリュームを調整するようなオブジェクトがクリックされたのに応じて、第1ウィンドウ200において動画と併せて出力する音声のボリュームを調整することができる。このほかにも、外部プログラム12は、第2ウィンドウ210に表示したオブジェクト名に対する操作に応じ、第1ウィンドウ200に表示した表示オブジェクトがクリックされたかのように対象プログラム15を動作させることもできる。このように、フラッシュなどで実現された動画コンテンツに対して、テキストベースの代替のインターフェイスを提供することができる。このインターフェイスは、マッシュアップのための対象プログラム15の動作解析、対象プログラム15のデバッグ、または、視覚障害者向けのページ読み上げツールに対して広く応用することができる。
また、フラッシュなどの動画コンテンツにおいて、ボタン、画像、テキストまたはチェックボックスなどの表示オブジェクトが、利用者によって操作可能に表示される場合がある。ウェブブラウザがそのような表示オブジェクトの表示をサポートしていない場合に備えて、HTML文書には、その表示オブジェクトがどのような機能を有するかを示す代替テキストを記述することができる。しかしながら、そのような代替テキストの記述はページ作成者に委ねられているゆえ、代替テキストが記述されていない場合や、記述されていたとしても正しい内容を示していない場合がある。さらには、動画コンテンツには、画面には現れないが、要素の入れ子構造又はグループ構造を示す特別なオブジェクトが含まれる場合がある。このような場合、例えば、視覚障害者向けのテキスト読み上げツールを用いても、そのオブジェクトの機能を正しく知ることができない。
このような場合に、その表示オブジェクトに対応する内部処理用のオブジェクトのインスタンス名・クラス名等が分かれば、その表示オブジェクトの機能を推測することができる。即ち、外部プログラム12は、対象プログラム15の内部処理で用いられるそのオブジェクトの名称を、監視プログラム70を介して取得し、その名称を示すテキストを表示する。テキスト読み上げツールは、そのテキストを読み上げた音声を生成して出力する。そうすれば、この音声を聞いた利用者は、その表示オブジェクトがどのような機能を示すかをある程度推測することができる。
また、他の例として、オブジェクトの階層関係を示したDOMツリーなどの情報それ自体を利用することもできる。例えば、テキスト読み上げツールは、単に連続的に記述されたテキストであれば、そのテキストを先頭から順に読み上げることができる。しかしながら、フラッシュなどを用いたウェブページは、階層構造を持つゆえ、どの表示オブジェクトから順に読み上げの対象とするべきかを判断するのは難しい。特に、フラッシュなどのバイナリコードをブラウザがダウンロードする場合においては、ブラウザがその階層構造を正しく認識することでさえも困難である。これに対し、本実施形態に係る中継装置40を用いれば、ブラウザ側でその階層構造については少なくとも正しく認識できるので、例えば親オブジェクトから子オブジェクトに至る順序というように、一定の規則によって読み上げの順序を定めることができる。
さらに、本実施形態において、ロードプログラム60および監視プログラム70は、対象プログラム15の内容によらず同一でよい。即ち、中継装置40は、ロードプログラム60および監視プログラム70を、要求される対象プログラム15ごとに変更する必要はなく、どのようなプログラムを対象プログラム15として受信しても、予め定められたロードプログラム60および監視プログラム70を送信すればよい。これにより、中継装置40の動作を高速化でき、利用者が対象プログラム15を要求してから対象プログラム15が動作を開始するまでの所要時間を短くすることができる。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることのできることが当業者にとって明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
図1は、本実施形態に係る情報システム10の全体構成を示す。 図2は、本実施形態に係る表示部22の表示例を示す。 図3は、本実施形態に係るクライアント装置20、中継装置40、および、サーバ装置50間の通信の具体例を示す。 図4は、本実施形態に係る中継装置40の機能構成を示す。 図5は、本実施形態に係る記憶装置440のデータ構造の一例を示す。 図6は、本実施形態に係るロードプログラム60の一例を示す。 図7は、本実施形態に係る監視プログラム70の一例を示す。 図8は、本実施形態に係る外部プログラム12、対象プログラム15および監視プログラム70の連係動作の一例を示す。 図9は、本実施形態に係る中継装置40による処理を示すフローチャートである。 図10は、本実施形態に係る中継装置40として動作するコンピュータの機能構成を示す。
符号の説明
10 情報システム
12 外部プログラム
15 対象プログラム
20 クライアント装置
22 表示部
25 HTML文書
30 サーバ装置
40 中継装置
50 サーバ装置
60 ロードプログラム
70 監視プログラム
200 第1ウィンドウ
210 第2ウィンドウ
400 受信部
410 転送部
420 格納部
430 返信モジュール
432 第1返信部
435 第2返信部
440 記憶装置

Claims (15)

  1. クライアント装置から受信したメッセージをサーバ装置に転送することで、前記サーバ装置からプログラムを取得して前記クライアント装置に返信する中継装置であって、
    前記クライアント装置から前記サーバ装置に対する、前記クライアント装置で動作させるプログラムを要求するメッセージを、前記サーバ装置に代えて受信する受信部と、
    第1のプログラムを要求する第1のメッセージの受信に応じて、前記第1のプログラムおよびそのプログラムを監視する監視プログラムを要求する、ロードプログラムを、前記第1のプログラムに代えて前記クライアント装置に返信して実行させる第1返信部と、
    受信した第2のメッセージが、その監視プログラムを要求することを条件に、その監視プログラムを前記サーバ装置から取得して返信する処理に代えて、予め記憶している監視プログラムを前記クライアント装置に返信して実行させる第2返信部と
    を備える中継装置。
  2. 前記第1返信部は、前記第1のメッセージが要求する前記第1のプログラムが、前記クライアント装置から前記サーバ装置に順次要求され、前記クライアント装置において互いに並列に実行される複数のプログラムのうちの最初のプログラムであることを条件に、前記ロードプログラムを返信する、請求項1に記載の中継装置。
  3. 前記サーバ装置が前記クライアント装置からの要求に応じて当該中継装置を経由して前記クライアント装置に返信したプログラムの識別情報を記憶する記憶装置を更に備え、
    前記受信部は、前記第1のプログラムを要求する前記第1のメッセージに、そのプログラムを要求する他のプログラムの識別情報を含めて受信し、
    前記第1返信部は、前記第1のメッセージに含めて受信した当該他のプログラムの識別情報を、前記記憶装置から検索し、検索されないことを条件に、前記第1のメッセージにおいて要求されたそのプログラムが、前記複数のプログラムのうちの最初のプログラムであると判断する、請求項2に記載の中継装置。
  4. 前記第1のメッセージにより要求される前記第1のプログラムは、フラッシュのムービークリップを実現するSWFファイルに記録されており、
    前記第1返信部は、その第1のメッセージが、前記クライアント装置で動作する他のSWFファイルに記録されたプログラムにより送信されたものでなく、前記クライアント装置のウェブブラウザがHTML文書を解釈して送信したものであることを条件に、前記ロードプログラムを返信する、請求項2に記載の中継装置。
  5. 前記第2のメッセージは、HTTP(Hypertext Transfer Protocol)に準拠しており、
    前記第1返信部は、前記クライアント装置に、前記第2のメッセージにHTTPのPOST属性を設定して送信させるプログラムを、前記ロードプログラムとして返信する、請求項4に記載の中継装置。
  6. 前記クライアント装置において、前記第1のメッセージにより要求した前記第1のプログラムに与えられる入力パラメータは、前記第1のプログラムに代えて受信した前記ロードプログラムに与えられ、
    前記第1返信部は、前記ロードプログラムに与えられるその入力パラメータを、前記ロードプログラムの実行により要求される前記第1のプログラムに入力パラメータとして与えるコマンドを、前記ロードプログラムに含めて返信する、請求項1に記載の中継装置。
  7. 前記ロードプログラム、および、前記監視プログラムは、それぞれ、アクション・スクリプト・プログラムであり、
    前記第1返信部は、前記第1のメッセージの受信に応じ、前記第1のメッセージにより要求された前記第1のプログラム、および、前記監視プログラムを、共に同一のドメインのURLを宛先として要求させるプログラムを、前記ロードプログラムとして返信し、
    前記第2返信部は、前記第2のメッセージが、前記監視プログラムを要求することを条件に、その要求の宛先のURLに関わらず、予め記憶している監視プログラムを返信する、請求項4に記載の中継装置。
  8. 前記第2返信部は、前記クライアント装置において前記監視プログラムと並列に動作する、更に他のプログラムから、前記監視プログラム内のオブジェクトを参照可能とするコマンドを、前記監視プログラムに含めて返信する、請求項1に記載の中継装置。
  9. 前記ロードプログラム、前記第1のプログラム、および、前記監視プログラムは、それぞれ、フラッシュのムービークリップを実現するアクション・スクリプト・プログラムであり、
    前記ロードプログラムは、前記第1のプログラムおよび前記監視プログラムを前記クライアント装置で並列動作させるプログラムであり、
    前記監視プログラムは、前記クライアント装置において前記監視プログラムと並列に動作する前記第1のプログラム内のオブジェクトを、更に他のプログラムに対し出力する、請求項3に記載の中継装置。
  10. 前記ロードプログラム、前記第1のプログラム、および、前記監視プログラムは、それぞれ、フラッシュのムービークリップを実現するアクション・スクリプト・プログラムであり、
    前記ロードプログラムは、前記第1のプログラムおよび前記監視プログラムを前記クライアント装置で並列動作させるプログラムであり、
    前記監視プログラムは、前記クライアント装置において前記監視プログラムと並列に動作する前記第1のプログラム内のオブジェクトを、更に他のプログラムの制御に基づき変更する、請求項3に記載の中継装置。
  11. 前記第1のメッセージの受信に応じ、前記第1のプログラムを前記サーバ装置から取得して記憶装置に格納する格納部を更に備え、
    前記第2返信部は、受信した第3のメッセージが前記第1のプログラムを要求することを条件に、前記記憶装置から読み出した前記第1のプログラムを前記クライアント装置に返信して実行させる、請求項1に記載の中継装置。
  12. 前記第2返信部は、前記格納部が前記サーバ装置からプログラムを取得して前記記憶装置に格納する処理と並行に、前記ロードプログラムを返信する
    請求項11に記載の中継装置。
  13. クライアント装置と、サーバ装置と、前記クライアント装置から受信したメッセージを前記サーバ装置に転送することで、前記サーバ装置からプログラムを取得して前記クライアント装置に返信する中継装置とを備えたシステムであって、
    前記中継装置は、
    前記クライアント装置から前記サーバ装置に対する、前記クライアント装置で動作させるプログラムを要求するメッセージを、前記サーバ装置に代えて受信する受信部と、
    第1のプログラムを要求する第1のメッセージの受信に応じて、前記第1のプログラムおよびそのプログラムを監視する監視プログラムを要求する、ロードプログラムを、前記第1のプログラムに代えて前記クライアント装置に返信して実行させる第1返信部と、
    受信した第2のメッセージが、その監視プログラムを要求することを条件に、その監視プログラムを前記サーバ装置から取得して返信する処理に代えて、予め記憶している監視プログラムを前記クライアント装置に返信して実行させる第2返信部と
    を有し、
    前記クライアント装置は、前記第1のプログラムに代えて前記ロードプログラムを実行することで、前記監視プログラムおよび前記第1のプログラムの双方を実行する、システム。
  14. クライアント装置から受信したメッセージをサーバ装置に転送することで、前記サーバ装置からプログラムを取得して前記クライアント装置に返信する方法であって、
    前記クライアント装置から前記サーバ装置に対する、前記クライアント装置で動作させるプログラムを要求するメッセージを、前記サーバ装置に代えて受信するステップと、
    第1のプログラムを要求する第1のメッセージの受信に応じて、前記第1のプログラムおよびそのプログラムを監視する監視プログラムを要求する、ロードプログラムを、前記第1のプログラムに代えて前記クライアント装置に返信して実行させるステップと、
    受信した第2のメッセージが、その監視プログラムを要求することを条件に、その監視プログラムを前記サーバ装置から取得して返信する処理に代えて、予め記憶している監視プログラムを前記クライアント装置に返信して実行させるステップと
    を備える方法。
  15. クライアント装置から受信したメッセージをサーバ装置に転送することで、前記サーバ装置からプログラムを取得して前記クライアント装置に返信する中継装置として、コンピュータを機能させるプログラムであって、
    前記コンピュータを、
    前記クライアント装置から前記サーバ装置に対する、前記クライアント装置で動作させるプログラムを要求するメッセージを、前記サーバ装置に代えて受信する受信部と、
    第1のプログラムを要求する第1のメッセージの受信に応じて、前記第1のプログラムおよびそのプログラムを監視する監視プログラムを要求する、ロードプログラムを、前記第1のプログラムに代えて前記クライアント装置に返信して実行させる第1返信部と、
    受信した第2のメッセージが、その監視プログラムを要求することを条件に、その監視プログラムを前記サーバ装置から取得して返信する処理に代えて、予め記憶している監視プログラムを前記クライアント装置に返信して実行させる第2返信部と
    して機能させるプログラム。
JP2007194091A 2007-07-26 2007-07-26 クライアント装置およびサーバ装置の間の通信を中継する技術 Expired - Fee Related JP5039946B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007194091A JP5039946B2 (ja) 2007-07-26 2007-07-26 クライアント装置およびサーバ装置の間の通信を中継する技術
US12/175,746 US8112500B2 (en) 2007-07-26 2008-07-18 Technique of relaying communications between client apparatus and server apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007194091A JP5039946B2 (ja) 2007-07-26 2007-07-26 クライアント装置およびサーバ装置の間の通信を中継する技術

Publications (2)

Publication Number Publication Date
JP2009031960A true JP2009031960A (ja) 2009-02-12
JP5039946B2 JP5039946B2 (ja) 2012-10-03

Family

ID=40296324

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007194091A Expired - Fee Related JP5039946B2 (ja) 2007-07-26 2007-07-26 クライアント装置およびサーバ装置の間の通信を中継する技術

Country Status (2)

Country Link
US (1) US8112500B2 (ja)
JP (1) JP5039946B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010113962A1 (ja) * 2009-04-03 2010-10-07 インターナショナル・ビジネス・マシーンズ・コーポレーション コラボラティブクローリングによるリッチインターネットアプリケーションのためのアクセシビリティを向上させる方法及びそのコンピュータ・プログラム

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8826411B2 (en) * 2006-03-15 2014-09-02 Blue Coat Systems, Inc. Client-side extensions for use in connection with HTTP proxy policy enforcement
US8219598B1 (en) * 2009-05-11 2012-07-10 Google Inc. Cross-domain communicating using data files
US9690452B2 (en) * 2010-04-23 2017-06-27 Jonathan Seliger System and method for internet meta-browser for users with disabilities
US8824471B2 (en) * 2011-06-01 2014-09-02 Cisco Technology, Inc. Maintained message delivery during routing domain migration
US10783128B2 (en) * 2017-07-13 2020-09-22 International Business Machines Corporation Rule based data processing

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002215503A (ja) * 2001-01-17 2002-08-02 Sony Corp 変換装置及び方法、課金方法、並びにスクリプト変換システム及び方法
WO2007038254A2 (en) * 2005-09-22 2007-04-05 Google Inc. System and method for image processing
US20070083813A1 (en) * 2005-10-11 2007-04-12 Knoa Software, Inc Generic, multi-instance method and GUI detection system for tracking and monitoring computer applications

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6345314B1 (en) * 1995-10-27 2002-02-05 International Business Machines Corporation Technique to minimize data transfer between two computers
US6112228A (en) * 1998-02-13 2000-08-29 Novell, Inc. Client inherited functionally derived from a proxy topology where each proxy is independently configured
CA2296140A1 (en) * 1999-01-28 2000-07-28 Lucent Technologies, Inc. Methods and apparatus for logging web user activity using client-side support
US7620719B2 (en) * 2002-06-06 2009-11-17 Juniper Networks, Inc. Method and system for providing secure access to private networks
US20020156909A1 (en) * 2001-02-15 2002-10-24 Harrington Jeffrey M. System and method for server side control of a flash presentation
US6944660B2 (en) * 2001-05-04 2005-09-13 Hewlett-Packard Development Company, L.P. System and method for monitoring browser event activities
US20030182424A1 (en) * 2002-03-22 2003-09-25 Steve Odendahl Scriptable proxy server
US20040221034A1 (en) * 2002-12-18 2004-11-04 Kausik Balas Natarajan Centralized measurement of web performance
US20040172253A1 (en) * 2003-02-28 2004-09-02 Sun Microsystems, Inc., A Delaware Corporation Capture and playback web automation tool
US20050188007A1 (en) * 2004-02-24 2005-08-25 Rich Warner System and method for embedding data transmission in a web page
US20080209324A1 (en) * 2005-06-02 2008-08-28 Ants Inc. Pseudo drag-and-drop operation display method, computer program product and system based on the same
US8826411B2 (en) * 2006-03-15 2014-09-02 Blue Coat Systems, Inc. Client-side extensions for use in connection with HTTP proxy policy enforcement
CA2583619A1 (en) * 2006-03-31 2007-09-30 Trialstat Corporation Method of and system for data interaction in a web-based database application environment
US8775919B2 (en) * 2006-04-25 2014-07-08 Adobe Systems Incorporated Independent actionscript analytics tools and techniques
CA2676676C (en) * 2007-02-09 2015-01-20 Novarra, Inc. Method and system for converting interactive animated information content for display on mobile devices

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002215503A (ja) * 2001-01-17 2002-08-02 Sony Corp 変換装置及び方法、課金方法、並びにスクリプト変換システム及び方法
WO2007038254A2 (en) * 2005-09-22 2007-04-05 Google Inc. System and method for image processing
US20070083813A1 (en) * 2005-10-11 2007-04-12 Knoa Software, Inc Generic, multi-instance method and GUI detection system for tracking and monitoring computer applications

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010113962A1 (ja) * 2009-04-03 2010-10-07 インターナショナル・ビジネス・マシーンズ・コーポレーション コラボラティブクローリングによるリッチインターネットアプリケーションのためのアクセシビリティを向上させる方法及びそのコンピュータ・プログラム
JP5363561B2 (ja) * 2009-04-03 2013-12-11 インターナショナル・ビジネス・マシーンズ・コーポレーション コラボラティブクローリングによるリッチインターネットアプリケーションのためのアクセシビリティを向上させる方法及びそのコンピュータ・プログラム
US9104777B2 (en) 2009-04-03 2015-08-11 International Business Machines Corporation Method for improving accessibility to rich internet applications through collaborative crawling and computer program for the same

Also Published As

Publication number Publication date
US20090030996A1 (en) 2009-01-29
US8112500B2 (en) 2012-02-07
JP5039946B2 (ja) 2012-10-03

Similar Documents

Publication Publication Date Title
US7278132B2 (en) Mechanism for automatic synchronization of scripting variables
JP5363506B2 (ja) ブラウザ・ベースのプロキシ・サーバを使用した既存アプリケーションをカスタマイズおよび配布するための方法、システム、およびコンピュータ・プログラム(既存アプリケーションをカスタマイズおよび配布するためのブラウザ・ベースのプロキシ・サーバ)
US8627344B2 (en) Methods and apparatuses for user interface management
CN108416021B (zh) 一种浏览器网页内容处理方法、装置、电子设备及可读介质
US8645916B2 (en) Crunching dynamically generated script files
JP5188284B2 (ja) サービス接続システム及びサービス接続方法
JP2005526315A (ja) ブラウザでの第1の媒体形式のコンテンツの画面処理
JP5039946B2 (ja) クライアント装置およびサーバ装置の間の通信を中継する技術
US20100229081A1 (en) Method for Providing a Navigation Element in an Application
US9934029B2 (en) Annotation driven representational state transfer (REST) web services
US7143359B2 (en) Emulating advanced graphical user interface elements in a hypermedia content browser
JP2017504129A (ja) ウェブブラウザにおいて表わされる状態表現の構築
US10506017B2 (en) Manipulation of PDF file content through HTTP requests
US8140575B2 (en) Apparatus, method, and program product for information processing
US20130191726A1 (en) Automatic widget creation apparatus and method for invoking heterogeneous web services in a composite application
US7937715B2 (en) Mechanism for generating dynamic content without a web server
US7996764B2 (en) Apparatus, program and method for accepting a request from a client computer via a network and executing a web application
CN113761412A (zh) 应用页面的显示方法、装置、电子设备、介质及应用***
JP5151696B2 (ja) ユニフォームリソースロケータ情報を書き換えるプログラム
JP4114873B2 (ja) サーバ装置、サービス方法、プログラム及び記録媒体
JP5535184B2 (ja) ブラウザ実行スクリプト変換システムおよびブラウザ実行スクリプト変換プログラム
AU2018390863B2 (en) Computer system and method for extracting dynamic content from websites
CN115576536A (zh) 一种通过分析字节码自动生成接口文档的方法及***
KR20140000373A (ko) 컴파일된 자바스크립트 코드를 이용한 웹 페이지 표시 방법 및 장치
CN114816385B (zh) 一种异构***的集成方法、装置和设备以及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100421

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120426

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: 20120515

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20120516

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120607

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150720

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees