(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024030990
(43)【公開日】2024-03-07
(54)【発明の名称】プログラム配信装置、プログラム配信システム、プログラム配信方法及びコンピュータプログラム
(51)【国際特許分類】
G06F 8/60 20180101AFI20240229BHJP
G06F 15/00 20060101ALI20240229BHJP
H04L 67/10 20220101ALI20240229BHJP
H04L 67/02 20220101ALI20240229BHJP
【FI】
G06F8/60
G06F15/00 420Z
H04L67/10
H04L67/02
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022134261
(22)【出願日】2022-08-25
(71)【出願人】
【識別番号】518431200
【氏名又は名称】ウィズデスク株式会社
(74)【代理人】
【識別番号】100114557
【弁理士】
【氏名又は名称】河野 英仁
(74)【代理人】
【識別番号】100078868
【弁理士】
【氏名又は名称】河野 登夫
(72)【発明者】
【氏名】田口 湧都
(72)【発明者】
【氏名】君島 隆朗
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AB06
(57)【要約】
【課題】端末装置のブラウザで実行されるプログラムの配信負荷を軽減することができるプログラム配信装置を提供する。
【解決手段】端末装置のブラウザへプログラムを配信するプログラム配信装置であって、ブラウザで実行される第1プログラム及び第2プログラムを記憶する記憶部と、通信部と、処理部とを備え、第1プログラムは、第2プログラムを要求するためのスクリプトを含み、処理部は、端末装置から第1プログラムの要求があった場合、第1プログラムをキャッシュしないことを指示するキャッシュコントロール情報及び第1プログラムを端末装置へ送信し、第1プログラムを実行した端末装置から第2プログラムの要求があった場合、第2プログラムをキャッシュすることを指示するキャッシュコントロール情報及び第2プログラムを端末装置へ送信する処理を実行する。
【選択図】
図6
【特許請求の範囲】
【請求項1】
端末装置のブラウザへプログラムを配信するプログラム配信装置であって、
前記ブラウザで実行される第1プログラム及び第2プログラムを記憶する記憶部と、
前記端末装置からのプログラム配信の要求に応じて、前記記憶部が記憶する前記第1プログラム及び前記第2プログラムを前記端末装置へ送信する通信部と、
該通信部による送信処理を実行する処理部と
を備え、
前記第1プログラムは、前記第2プログラムを要求するためのスクリプトを含み、
前記処理部は、
前記端末装置から前記第1プログラムの要求があった場合、前記第1プログラムをキャッシュしないことを指示するキャッシュコントロール情報及び前記第1プログラムを前記端末装置へ送信し、前記第1プログラムを実行した前記端末装置から前記第2プログラムの要求があった場合、前記第2プログラムをキャッシュすることを指示するキャッシュコントロール情報及び前記第2プログラムを前記端末装置へ送信する処理を実行する
プログラム配信装置。
【請求項2】
前記第1プログラムは、インラインフレーム要素を作成し、該インラインフレーム要素に前記第2プログラムの所在情報を記述するスクリプトを含む
請求項1に記載のプログラム配信装置。
【請求項3】
前記記憶部は、
複数の異なる前記第2プログラムを記憶しており、
複数のID毎に、配信を要する前記第2プログラムの種類を対応付けて記憶したデータベースを備え、
前記通信部は、前記端末装置から送信されるIDを受信し、
前記処理部は、前記通信部がIDを受信した場合、前記データベースを参照し、該IDに対応する前記第2プログラムの所在情報を前記端末装置へ送信する処理を実行する
請求項2に記載のプログラム配信装置。
【請求項4】
請求項1から請求項3のいずれか1項に記載のプログラム配信装置と、
端末装置と
を備え、
前記端末装置は、
前記第1プログラムの所在情報を含むウェブサイトが前記ブラウザに読み込まれた場合、前記プログラム配信装置に前記第1プログラムの配信を要求し、
前記第1プログラムを受信した場合、前記キャッシュコントロール情報に従って、前記第1プログラムをキャッシュせず、
前記第2プログラムを受信した場合、前記キャッシュコントロール情報に従って、前記第2プログラムをキャッシュする
プログラム配信システム。
【請求項5】
端末装置のブラウザへ、前記ブラウザで実行される第1プログラム及び第2プログラムを配信するプログラム配信方法であって、
前記第1プログラムは、前記第2プログラムを要求するためのスクリプトを含み、
前記端末装置から前記第1プログラムの要求があった場合、前記第1プログラムをキャッシュしないことを指示するキャッシュコントロール情報及び前記第1プログラムを前記端末装置へ送信し、
前記第1プログラムを実行した前記端末装置から前記第2プログラムの要求があった場合、前記第2プログラムをキャッシュすることを指示するキャッシュコントロール情報及び前記第2プログラムを前記端末装置へ送信する処理を実行する
プログラム配信方法。
【請求項6】
端末装置のブラウザへ、前記ブラウザで実行される第1プログラム及び第2プログラムを配信する処理をコンピュータに実行させるためのコンピュータプログラムであって、
前記第1プログラムは、前記第2プログラムを要求するためのスクリプトを含み、
前記端末装置から前記第1プログラムの要求があった場合、前記第1プログラムをキャッシュしないことを指示するキャッシュコントロール情報及び前記第1プログラムを前記端末装置へ送信し、
前記第1プログラムを実行した前記端末装置から前記第2プログラムの要求があった場合、前記第2プログラムをキャッシュすることを指示するキャッシュコントロール情報及び前記第2プログラムを前記端末装置へ送信する処理を実行させる処理を
前記コンピュータに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム配信装置、プログラム配信システム、プログラム配信方法及びコンピュータプログラムに関する。
【背景技術】
【0002】
JavaScript(登録商標)ファイル等のスクリプトファイルを呼び出すことによって、動的な機能を実装したウェブサイトをブラウザに表示することができる。ウェブサイトのHTMLファイルには、スクリプトファイルの所在情報が記述されているスクリプト要素が含まれており、ブラウザはスクリプトファイルの配信をサーバに要求する。サーバはブラウザからの要求に応じて、スクリプトファイルを配信する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、ウェブサイトへのアクセス数が多い場合、スクリプトファイルの配信量も同様に増加するため、スクリプトファイルを配信するサーバの負荷が重くなるという技術的問題があった。スクリプトファイル以外のプログラムの配信についても、同様の技術的問題がある。
【0005】
本開示の目的は、端末装置のブラウザで実行されるプログラムの配信負荷を軽減することができるプログラム配信装置、プログラム配信システム、プログラム配信方法及びコンピュータプログラムを提供することにある。
【課題を解決するための手段】
【0006】
本開示の一側面に係るプログラム配信装置は、端末装置のブラウザへプログラムを配信するプログラム配信装置であって、前記ブラウザで実行される第1プログラム及び第2プログラムを記憶する記憶部と、前記端末装置からのプログラム配信の要求に応じて、前記記憶部が記憶する前記第1プログラム及び前記第2プログラムを前記端末装置へ送信する通信部と、該通信部による送信処理を実行する処理部とを備え、前記第1プログラムは、前記第2プログラムを要求するためのスクリプトを含み、前記処理部は、前記端末装置から前記第1プログラムの要求があった場合、前記第1プログラムをキャッシュしないことを指示するキャッシュコントロール情報及び前記第1プログラムを前記端末装置へ送信し、前記第1プログラムを実行した前記端末装置から前記第2プログラムの要求があった場合、前記第2プログラムをキャッシュすることを指示するキャッシュコントロール情報及び前記第2プログラムを前記端末装置へ送信する処理を実行する。
【0007】
本開示の一側面に係るプログラム配信システムは、上記プログラム配信装置と、端末装置とを備え、前記端末装置は、前記第1プログラムの所在情報が記述されているスクリプト要素を含むウェブサイトが前記ブラウザに読み込まれた場合、前記プログラム配信装置に前記第1プログラムの配信を要求し、前記第1プログラムを受信した場合、前記キャッシュコントロール情報に従って、前記第1プログラムをキャッシュせず、前記第2プログラムを受信した場合、前記キャッシュコントロール情報に従って、前記第2プログラムをキャッシュする。
【0008】
本開示の一側面に係るプログラム配信方法は、端末装置のブラウザへ、前記ブラウザで実行される第1プログラム及び第2プログラムを配信するプログラム配信方法であって、前記第1プログラムは、前記第2プログラムを要求するためのスクリプトを含み、前記端末装置から前記第1プログラムの要求があった場合、前記第1プログラムをキャッシュしないことを指示するキャッシュコントロール情報及び前記第1プログラムを前記端末装置へ送信し、前記第1プログラムを実行した前記端末装置から前記第2プログラムの要求があった場合、前記第2プログラムをキャッシュすることを指示するキャッシュコントロール情報及び前記第2プログラムを前記端末装置へ送信する処理を実行する。
【0009】
本開示の一側面に係るコンピュータプログラムは、端末装置のブラウザへ、前記ブラウザで実行される第1プログラム及び第2プログラムを配信する処理をコンピュータに実行させるためのコンピュータプログラムであって、前記第1プログラムは、前記第2プログラムを要求するためのスクリプトを含み、前記端末装置から前記第1プログラムの要求があった場合、前記第1プログラムをキャッシュしないことを指示するキャッシュコントロール情報及び前記第1プログラムを前記端末装置へ送信し、前記第1プログラムを実行した前記端末装置から前記第2プログラムの要求があった場合、前記第2プログラムをキャッシュすることを指示するキャッシュコントロール情報及び前記第2プログラムを前記端末装置へ送信する処理を実行させる処理を前記コンピュータに実行させる。
【発明の効果】
【0010】
本開示によれば、端末装置のブラウザで実行されるプログラムの配信負荷を軽減することができるプログラム配信装置、プログラム配信システム、プログラム配信方法及びコンピュータプログラムを提供することができる。
【図面の簡単な説明】
【0011】
【
図1】本実施形態に係る画面共有システムの構成例を示す模式図である。
【
図2】本実施形態に係る画面共有システムの構成例を示すブロック図である。
【
図3】本実施形態に係る画面共有システムの機能ブロック図である。
【
図4】アカウント管理データベースの一例を示す概念図である。
【
図5】本実施形態に係るプログラム配信に係る処理手順を示すフローチャートである。
【
図6】本実施形態に係るプログラム配信方法を示す概念図である。
【発明を実施するための形態】
【0012】
本開示の実施形態に係るプログラム配信装置としての情報処理装置、プログラム配信システムとしての画面共有システム、プログラム配信方法及びコンピュータプログラムを、以下に図面を参照しつつ説明する。なお、本開示は、これらの例示に限定されるものではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。また、以下に記載する実施形態の少なくとも一部を任意に組み合わせてもよい。
【0013】
本実施形態に係る情報処理装置(プログラム配信装置)は、次の課題を解決するものである。
(1)JavaScript(登録商標)ファイル等のスクリプトファイルを呼び出すウェブサイトへのアクセス数が多い場合、スクリプトファイルの配信量も同様に増加するため、スクリプトファイルを配信する情報処理装置の負荷が重くなる。
(2)ウェブサイト上のDOM(Document Object Model) API(Application Programming Interface)が上書きされ、グローバル汚染され、又はプロトタイプ汚染されていた場合、スクリプトファイルが想定どおりに動作しない可能性がある。
【0014】
図1は、実施形態に係る画面共有システムの構成例を示す模式図である。本実施形態に係る画面共有システムは、情報処理装置1と、エージェント端末(端末装置)2と、ゲスト端末(端末装置)3と、ウェブサーバ4とを備える。各種端末及びサーバは、通信網Nを介して情報処理装置1に接続されている。
【0015】
エージェント端末2を操作するユーザ(以下、エージェントと呼ぶ)は、例えばゲスト端末3を操作するユーザ(以下、ゲストと呼ぶ)のウェブサイトの操作方法を案内する者である。なお、エージェント及びゲストは、本実施形態に係る情報処理装置1のユーザの一例であり、両者の関係は特に限定されるものでは無い。
【0016】
図2は、実施形態に係る画面共有システムの構成例を示すブロック図である。情報処理装置1は、処理部11、記憶部12、通信部13を備えたコンピュータである。なお、情報処理装置1は、複数台のコンピュータで構成し分散処理する構成でもよいし、1台のサーバ内に設けられた複数の仮想マシンによって実現されていてもよいし、クラウドサーバを用いて実現されていてもよいし、一部を量子コンピュータで構成してもよい。
【0017】
処理部11は、一又は複数のCPU(Central Processing Unit)、MPU(Micro-Processing Unit)等の演算処理装置を有し、記憶部12に記憶されたコンピュータプログラムP1を読み出して実行することにより、本実施形態に係るプログラム配信処理及び画面共有処理を実行する。
【0018】
記憶部12は、ハードディスク、EEPROM(Electrically Erasable Programmable
Read-Only Memory)、フラッシュメモリ等の記憶装置である。記憶部12は、処理部11が、ゲスト端末3と、エージェント端末2との間で、それぞれのウェブブラウザに表示されるウェブサイトの内容及び操作内容を共有するために必要なコンピュータプログラムP1と、第1プログラムP11と、複数種類の異なる第2プログラムP12とを記憶している。
【0019】
第1プログラムP11は、例えば、JavaScript(登録商標)で記述されたプログラムである。第1プログラムP11は、iframe要素(以下、インラインフレーム要素と呼ぶ)を作成するスクリプトを含む。より具体的には、第1プログラムP11は、第2プログラムP12が実行される環境として、インラインフレーム要素を作成し、作成されたインラインフレーム要素を、第1プログラムP11が読み込まれたウェブサイトのDOMツリーに追加するスクリプトを含む。なお、作成するインラインフレーム要素は、第1プログラムP11から当該インラインフレーム要素内のDOMツリーにアクセスができるような構成である必要があり、例えば、src属性に″about:blank″等を指定した構成で作成する。更に、第1プログラムP11は、第2プログラムP12の配信を情報処理装置1にリクエストするためのスクリプトを含む。より具体的には、第1プログラムP11は、アカウント毎に必要な第2プログラムP12のURLを属性として含むscript要素(以下、スクリプト要素と呼ぶ)を作成し、前述したインラインフレーム要素内のDOMツリーに追加するスクリプトを含む。例えば、第1プログラムP11は、第2プログラムP12のURLをsrc属性として含むスクリプト要素を作成し、前述したインラインフレーム要素内のDOMツリーに追加する。
【0020】
第2プログラムP12は、例えば、JavaScript(登録商標)で記述されたプログラムであり、ウェブサイト上でメインの処理を実行するためのプログラムである。第2プログラムP12は、主要な機能(サービス)毎に分割されている。一又は複数種類の異なる第2プログラムP12は、エージェントプログラムP2及びゲストプログラムP3を構成する。
情報処理装置1は、エージェントプログラムP2をエージェント端末2へ送信し、ゲストプログラムP3をゲスト端末3へ送信する。エージェント端末2で動作するウェブブラウザ(以下、エージェントブラウザB2と呼ぶ)は、エージェントプログラムP2を実行することにより、画面共有に必要な処理を実行する。ゲスト端末3で動作するウェブブラウザ(以下、ゲストブラウザB3と呼ぶ)は、ゲストプログラムP3を実行することにより、画面共有に必要な処理を実行する。
【0021】
なお、各種プログラムは、記録媒体5にコンピュータ読み取り可能に記録されている態様でも良い。記憶部12は、図示しない読出装置によって記録媒体5から読み出されたコンピュータプログラムP1、第1プログラムP11及び第2プログラムP12を記憶する。記録媒体5はフラッシュメモリ等の半導体メモリ、光ディスク、磁気ディスク、磁気光ディスク等である。また、通信網Nに接続されている図示しない外部サーバから本実施形態に係る各種プログラムをダウンロードし、記憶部12に記憶させる態様であってもよい。
【0022】
通信部13は、通信に関する処理を行うための処理回路、通信回路等を含み、エージェント端末2、ゲスト端末3及びウェブサーバ4との間で情報の送受信を行う。特に、本実施形態において、通信部13は、エージェント端末2又はゲスト端末3からプログラム又は各種データのリクエストを受信し、リクエストに応じてプログラム又は各種データをレスポンスする機能を有する。
【0023】
エージェント端末2は、処理部21、記憶部22、通信部23、操作部24及び表示部25を備えたコンピュータである。処理部21、記憶部22及び通信部23の基本的な構成は、情報処理装置1と同様である。記憶部22は、少なくともエージェントブラウザB2に係るプログラムを記憶している。エージェントブラウザB2は、ウェブサイトを構成する要素を参照及び制御するプログラムであるDOMを実装しており、情報処理装置1から送信されたエージェントプログラムP2を実行することができる。操作部24は、キーボード、マウス等であり、エージェントの操作及び入力を受け付ける。表示部25は、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイ等の表示装置であり、処理部21から与えられた情報を描画する。
【0024】
ゲスト端末3は、処理部31、記憶部32、通信部33、操作部34及び表示部35を備えたコンピュータである。処理部31、記憶部32及び通信部33の基本的な構成は、情報処理装置1と同様である。記憶部32は、少なくともゲストブラウザB3に係るプログラムを記憶している。ゲストブラウザB3は、ウェブサイトを構成する要素を参照及び制御するプログラムであるDOMを実装しており、情報処理装置1から送信されたゲストプログラムP3を実行することができる。操作部34は、キーボード、マウス等であり、ゲストの操作及び入力を受け付ける。表示部35は、液晶ディスプレイ、有機ELディスプレイ等の表示装置であり、処理部31から与えられた情報を描画する。
【0025】
ウェブサーバ4は、少なくともゲストブラウザB3からのリクエストに応じて、ウェブサイトの文書ファイルと、ウェブサイトを構成するアセットファイルをゲストブラウザB3へ送信するサーバである。また、ウェブサーバ4は、少なくとも情報処理装置1からのリクエストに応じて、ウェブサイトを構成するアセットファイルを情報処理装置1へ送信するサーバである。本実施形態においては、ゲストブラウザB3は、ウェブサーバ4にアクセスして、ウェブサイトを表示する。
【0026】
図3は、実施形態に係る画面共有システムの機能ブロック図である。エージェント端末2は、機能部としてエージェントブラウザB2を有し、情報処理装置1から送信されるエージェントプログラムP2を実行することができる。なお、エージェントプログラムP2は、エージェントブラウザB2が情報処理装置1にアクセスして管理画面を読み込む際、情報処理装置1からエージェント端末2へ送信される。管理画面は、ウェブサイトの画面共有処理を実行するための画面である。
【0027】
ゲスト端末3は、機能部としてゲストブラウザB3を有し、情報処理装置1から送信されるゲストプログラムP3を実行することができる。なお、ゲストプログラムP3は、画面共有対象であるウェブサイトを読み込む際、情報処理装置1からゲスト端末3へ送信される。
【0028】
情報処理装置1は、API処理部11a、ソケット処理部11b及びファイル処理部11cを備える。また、情報処理装置1は、アカウント管理データベース12a、画面共有管理データベース12b、画面共有データ中継ストア12c、プログラムファイルストレージ12d及びアセットファイルストレージ12eを備える。
【0029】
API処理部11aは、通信部13がリクエストを受信した場合、記憶部12又はアカウント管理データベース12aに保存されている各種データを、通信部13を介してレスポンスする機能部である。また、API処理部11aは、画面共有システムの各種設定データをアカウント管理データベース12aから取得し、画面共有処理に関する設定等の処理を実行する機能部である。
【0030】
ソケット処理部11bは、ウェブソケットによりエージェントブラウザB2及びゲストブラウザB3との通信を確立し、双方向通信を可能にする機能部である。ソケット処理部11bは、画面共有処理のセッションを識別するためのセッションIDの発行、エージェントブラウザB2及びゲストブラウザB3との間で画面共有中の各種データの送受信等の処理を実行する。なお、ウェブソケットは通信接続方法の一例であり、ソケット処理部11bは、ロングポーリングによって、エージェントブラウザB2及びゲストブラウザB3との間で擬似的に双方向通信を実現するように構成してもよい。
【0031】
ファイル処理部11cは、画面共有対象であるウェブサイトを構成するアセットファイルを、ウェブサーバ4にリクエストして取得し、一時的に保存する処理を実行する機能部である。アセットファイルは、例えばCSS(Cascading Style Sheets)ファイル、画像ファイル、フォントファイル等である。
【0032】
アカウント管理データベース12aは、画面共有システムの各種設定データを保存するデータベースである。アカウント管理データベース12aは、複数のアカウントID毎に、配信を要する第2プログラムP12の種類を対応付けて記憶している。アカウントIDは、例えば、第2プログラムP12の配信を要するウェブサイトを識別するIDである。アカウントIDは、当該ウェブサイトを作成、管理している運営者を識別するIDであってもよい。
【0033】
図4は、アカウント管理データベース12aの一例を示す概念図である。ここでは、記憶部12が3種類の第2プログラムP12を記憶しているものとする。アカウント管理データベース12aは、アカウントIDに対応付けて、種類「A」、種類「B」、種類「C」の第2プログラムP12の配信を要するか否かを、真偽(「1」又は「0」)形式で示す情報を記憶している。
図4中、「0」は配信不要であることを示し、「1」は配信を要することを示している。種類「A」、「B」、「C」は、それぞれ第2プログラムP12に求められる機能(サービス)を示している。
【0034】
画面共有管理データベース12bは、画面共有処理のセッションを識別するためのセッションID等を保存するデータベースである。
画面共有データ中継ストア12cは、エージェントブラウザB2及びゲストブラウザB3との間で送受信される画面共有中の各種データを中継する中継サーバである。
プログラムファイルストレージ12dは、エージェントブラウザB2に表示される管理画面を構成するHTMLファイル、CSSファイル、画像ファイル、第1プログラムP11、第2プログラムP12等を保存するストレージである。
アセットファイルストレージ12eは、画面共有対象であるウェブサイトを構成するアセットファイルのファイル処理に使用するセッション情報、取得したアセットファイル等を一時的に保存するストレージである。
【0035】
図5は、本実施形態に係るプログラム配信に係る処理手順を示すフローチャート、
図6は、本実施形態に係るプログラム配信方法を示す概念図である。一例として、ゲスト端末3へ、ゲストプログラムP3として第2プログラムP12を配信する例を説明する。なお、エージェント端末2へエージェントプログラムP2を配信する場合も、基本的な原理は同様であるため、詳細な説明を省略する。
【0036】
ゲスト端末3の処理部31は、ウェブサーバ4にアクセスし、
図6上図に示すように、第1プログラムP11のURL(第1プログラムの所在情報)がsrc属性として記述されたスクリプト要素を含むウェブサイトデータ(HTMLファイル)を取得する(ステップS11)。当該URLにはアカウントIDが含まれている。
【0037】
例えば、第1プログラムP11のURLは、″https://withdeskguest.com/index.1.js″のように定義される。この例では、「1」の部分がアカウントIDである。第1プログラムP11は、第2プログラムP12を呼び出すためのプログラムであるため、プログラム本体である第2プログラムP12に比べて、ファイルサイズが小さくなることが想定される。第1プログラムP11は、ウェブサイトに設置したスクリプト要素から呼び出される性質上、ウェブサイトデータ(HTMLファイル)上で当該スクリプト要素を差し替えない限り、記述された第1プログラムP11のURLを変更することはできない。
【0038】
処理部31は、スクリプト要素のsrc属性に記述されたURLに基づいて、第1プログラムP11の配信を情報処理装置1にリクエストする(ステップS12)。
【0039】
情報処理装置1の処理部11は、ゲスト端末3から第1プログラムP11のリクエストを受信する(ステップS13)。処理部11は、第1プログラムP11のリクエストを受信した場合、第1プログラムP11をゲストブラウザB3にキャッシュしないことを指示するキャッシュコントロール情報及び第1プログラムP11をゲスト端末3へ送信する(ステップS14)。HTTPプロトコル又はHTTPSプロトコルで第1プログラムP11を送信する場合、処理部11は、キャッシュコントロール情報(例えば、“no-cache”)をレスポンスヘッダに含めて送信する。第1プログラムP11をゲストブラウザB3にキャッシュしない理由は、第1プログラムP11を実行した場合に、最新の第2プログラムP12を呼び出す必要があるためである。
【0040】
ゲスト端末3の処理部31は、情報処理装置1から送信された第1プログラムP11を受信する(ステップS15)。処理部31は、第1プログラムP11を実行することによって、
図6中図に示すように、インラインフレーム要素を作成し、第1プログラムP11が読み込まれたウェブサイトのDOMツリーに追加する(ステップS16)。
なお、ステップS16は、ステップS15の次に実行するかわりに、後述するステップS20とステップS21の間に実行しても良い。
【0041】
インラインフレーム要素は、第1プログラムP11が読み込まれたウェブサイトのウィンドウ(以下、親ウィンドウと呼ぶ)とは独立した環境である。親ウィンドウで定義されているDOM APIは、インラインフレーム要素内のウィンドウ(以下、子ウィンドウと呼ぶ)には引き継がれず、子ウィンドウにおいてDOM APIが新たに定義される。親ウィンドウがグローバル汚染又はプロトタイプ汚染されていたとしても、子ウィンドウはこれらの汚染から遮断されているため、第2プログラムP12を想定どおりに動作させることができる。
【0042】
次いで、処理部31は、第1プログラムP11を実行することによって、アカウントIDを情報処理装置1へ送信し、第2プログラムP12の所在情報をリクエストする(ステップS17)。所在情報は、例えば、第2プログラムP12のURL、パス、ファイル名等である。具体的には、処理部31は、API処理部11aのエンドポイントのURLに対して、第1プログラムP11のURLに含まれるアカウントIDを、パスやパラメータ等の一部に含める形式で送信する。
【0043】
情報処理装置1の処理部11は、ゲスト端末3から送信されたアカウントIDを受信する(ステップS18)。処理部11又はAPI処理部11aは、受信したアカウントIDをキーにして、アカウント管理データベース12aを参照することにより、当該アカウントIDに対応する一又は複数の第2プログラムP12の種類を特定し、特定された第2プログラムP12の所在情報をゲスト端末3へ送信する(ステップS19)。
【0044】
ゲスト端末3の処理部31は、情報処理装置1から送信された第2プログラムP12の所在情報を受信し(ステップS20)、受信した第2プログラムP12の所在情報に対応したURLを作成する。更に、
図6中図に示すように、第2プログラムP12のURLがsrc属性として記述されたスクリプト要素を作成し、インラインフレーム要素内のDOMツリーに追加する(ステップS21)。ゲスト端末3が複数の第2プログラムP12の所在情報を受信した場合、処理部31は複数の所在情報それぞれに対応したURLを作成し、当該URLがsrc属性として記述されたスクリプト要素を作成し、インラインフレーム要素内のDOMツリーに追加する。
【0045】
例えば、アカウントIDが「1」の場合、必要な機能(サービス)は「A」のみ、アカウントIDが「7」の場合、必要な機能(サービス)は「A」、「B」、「C」の全てである。当該アカウントIDのウェブサイトに必要な機能(サービス)毎にスクリプト要素を繰り返し追加する。なお、第2プログラムP12のURLには、第2プログラムP12の内容が変更される度に割り当てられたユニークなID(以下、バージョンIDと呼ぶ)が含まれている。例えば、第2プログラムP12のURLは、″https://withdeskguest.com/package.a.2.js″のように定義される。この例では、「a」の部分がアカウント毎に必要な機能(サービス)を示し、「2」の部分がバージョンIDとなる。また、第2プログラムP12は、ウェブサイト上でメインの処理を実行するためのプログラムであるため、その処理の内容にもよるが、第1プログラムP11と比べ、ファイルサイズが大きいことが想定される。
【0046】
ゲスト端末3の処理部31は、スクリプト要素のsrc属性として記述された第2プログラムP12のURLに基づいて、第2プログラムP12の配信を情報処理装置1にリクエストする(ステップS22)。
【0047】
情報処理装置1の処理部11は、ゲスト端末3から第2プログラムP12のリクエストを受信する(ステップS23)。処理部11は、第2プログラムP12のリクエストを受信した場合、第2プログラムP12をゲストブラウザB3にキャッシュすることを指示するキャッシュコントロール情報及び第2プログラムP12をゲスト端末3へ送信する(ステップS24)。HTTPプロトコル又はHTTPSプロトコルで第2プログラムP12を送信する場合、処理部11は、キャッシュコントロール情報をレスポンスヘッダに含めて送信する。なお、キャッシュコントロール情報は、第2プログラムP12のキャッシュの有効期限を含むように構成してもよい。
【0048】
ゲスト端末3の処理部31は、情報処理装置1から送信された第2プログラムP12を受信し(ステップS25)、
図6下図に示すように、第2プログラムP12を実行する(ステップS26)。本実施形態では、処理部31は、ウェブサイトの画面共有に係る処理を実行する。
【0049】
情報処理装置1からアカウントID毎に必要な第2プログラムP12がゲスト端末3に配信され、ゲスト端末3の処理部31で第2プログラムP12がそれぞれ実行される。なお、第2プログラムP12のキャッシュコントロール情報は、ブラウザによるキャッシュを行う設定(例えば、″max-age=31536000,public″等)とする。その理由としては、第2プログラムP12の内容を変更しない限り、ブラウザによるキャッシュを有効としたいためである。これにより、一度、第2プログラムP12をキャッシュとして保存したブラウザでは、当該キャッシュが削除されない限り、情報処理装置1に対し、第2プログラムP12を取得するためのアクセスは行われなくなり、情報処理装置1は、第2プログラムP12を繰り返し配信する必要がなくなる。つまり、ウェブサイトへのアクセス数が多くても、第2プログラムP12の配信量を低減することができるため、情報処理装置1の負荷を軽減することができる。
【0050】
また、第2プログラムP12を主要な機能(サービス)毎に分割し、アカウント毎に必要最低限の第2プログラムP12を配信することにより、更に情報処理装置1の負荷を軽減することができる。
【0051】
第2プログラムP12は、インラインフレーム要素内のウィンドウ(子ウィンドウ)で定義されているDOM APIを実行することができるため、第1プログラムP11が読み込まれたウェブサイトのウィンドウ(親ウィンドウ)で定義されているDOM APIを使わずにメインの処理を実行することができる。つまり、親ウィンドウで定義されているDOM APIが上書き、グローバル汚染もしくはプロトタイプ汚染されていたとしても、子ウィンドウで定義されているDOM APIを実行することにより、第2プログラムP12を想定どおりに動作させることができる。
【0052】
なお、ウェブサイトから呼び出されるべき第2プログラムP12の変更方法は次の通りである。
第2プログラムP12にはバージョンIDが割り当てられており、当該第2プログラムP12のURLにバージョンIDが含まれている。第2プログラムP12の内容を変更した場合、新たなバージョンIDを発行し、内容が変更された第2プログラムP12のURLに、新たなバージョンIDを含める。また、第1プログラムP11によってインラインフレーム要素内のDOMツリーに追加される第2プログラムP12のURLについても、バージョンIDに該当する部分は変更後のバージョンIDに変更される。このように、バージョンIDを変更することによって、呼び出される第2プログラムP12を変更することができる。
【0053】
以上の通り、本実施形態によれば、情報処理装置1によるエージェントプログラムP2及びゲストプログラムP3の配信負荷を軽減することができる。また、第1プログラムP11によってインラインフレーム要素を作成し、インラインフレーム要素内において第2プログラムP12を実行するように構成することによって、ウェブサイト上のDOM APIが上書きされ、グローバル汚染され、又はプロトタイプ汚染されていた場合であっても、第2プログラムP12を想定通りに動作させることができる。
【0054】
具体的に説明すると、本手順でいう第2プログラムP12(メインの処理を行うプログラム)のみを配信する従来の方法では、プログラムの内容が変わることが想定されるため、ブラウザによるキャッシュの有効期間を長く設定できない、かつウェブサイト上のDOM APIが上書き、グローバル汚染もしくはプロトタイプ汚染されていた場合には、スクリプトファイルが想定どおりに動作しない可能性があった。しかし、本実施形態に係る情報処理装置1によれば、ウェブサイトに設置するスクリプト要素のURLを変えずに、スクリプトファイルを配信する情報処理装置1の負荷を軽減することができるうえに、スクリプトファイルを想定どおりに動作させることができる。
【0055】
第1プログラムP11はゲスト端末3にキャッシュされず、第2プログラムP12はゲスト端末3にキャッシュされる。ゲスト端末3は、第2プログラムP12を呼び出すための第1プログラムP11を毎回、情報処理装置1にリクエストして取得する。第1プログラムP11は最新の第2プログラムP12を呼び出すよう構成されている。従って、第2プログラムP12のURLが変更されている場合、情報処理装置1は、古い第2プログラムP12を配信するようなことは無く、最新の第2プログラムP12をゲスト端末3へ配信することができる。
【0056】
一方、第2プログラムP12は、ゲスト端末3にキャッシュする構成のため、前回取得した第2プログラムP12のURLから変更されていなければ、ゲスト端末3はキャッシュされている第2プログラムP12を読み込み、実行する。なお、キャッシュに有効期限が設定されていて、前回取得した第2プログラムP12のURLから変更されておらず、当該有効期限内であれば、ゲスト端末3はキャッシュされている第2プログラムP12を実行する。
【0057】
第2プログラムP12のURLが変更されている場合、ゲスト端末3は、第2プログラムP12の配信を情報処理装置1にリクエストし、情報処理装置1はリクエストに応じて第2プログラムP12をゲスト端末3へ送信する。
また、第2プログラムP12のURLが変更されていない場合においても、前回、第2プログラムP12を取得してから所定の有効期限が経過している場合、又はキャッシュが削除されている場合、ゲスト端末3は、第2プログラムP12の配信を情報処理装置1にリクエストし、情報処理装置1はリクエストに応じて第2プログラムP12をゲスト端末3へ送信する。
【0058】
従って、情報処理装置1は、第2プログラムP12のURLが変更された場合、前回配信した第2プログラムP12のキャッシュの有効期限が経過した場合、又は前回配信した第2プログラムP12のキャッシュが削除されている場合に、第2プログラムP12を配信する構成であるため、情報処理装置1の配信負荷を軽減することができる。
【0059】
第1プログラムP11のURLに含まれるアカウントIDに応じた第2プログラムP12を配信することができる。アカウント毎に必要な機能を実現するための第2プログラムP12を選択的に配信することができるため、情報処理装置1の配信負荷を軽減することができる。
【0060】
第2プログラムP12のURLは、当該第2プログラムP12のバージョンIDを含む構成である。従って、第2プログラムP12を変更した際、URLに含まれるバージョンIDを変更するのみで、情報処理装置1はウェブサイトに必要な最新の第2プログラムP12を配信することができる。
【0061】
なお、本実施形態では、第1プログラムP11は、第2プログラムP12の所在情報を情報処理装置1に問い合わせ、情報処理装置1から取得した所在情報に基づいてURLを作成し、該当のURLがsrc属性として記述されたスクリプト要素をインラインフレーム要素内に追加する構成であるが、第1プログラムP11が第2プログラムP12のURLをあらかじめ含むように構成してもよい。
例えば、次のように構成することができる。第1プログラムP11は全ての第2プログラムP12のURLをスクリプトに含めている。また、
図5のステップS17において、ゲスト端末3の処理部31から情報処理装置1にアカウントIDを送信して必要な第2プログラムP12の所在情報をリクエストする場合、情報処理装置1は、所在情報の代わりとして、必要な第2プログラムP12を示す簡易的な情報(例えば、それぞれの第2プログラムP12が該当する機能やサービス名と、当該第2プログラムP12の必要有無)をレスポンスする。ゲスト端末3は、受信した情報に基づいて、必要な第2プログラムP12のURLをスクリプトから特定し、当該URLをsrc属性として記述したスクリプト要素を作成する。また、第2プログラムP12の内容が変更され、バージョンIDが変更された場合、第1プログラムP11も同時に変更し、第1プログラムP11のスクリプトに含まれるそれぞれの第2プログラムP12のURLを変更する。
あるいは、例えば、次のように構成することができる。
図5のステップS12において、ゲスト端末3の処理部31が、第1プログラムP11の配信を情報処理装置1にリクエストする場合、情報処理装置1は、第1プログラムP11のURLに含まれるアカウントIDに基づいて、当該ウェブサイトで必要な第2プログラムP12の所在情報を特定する。情報処理装置1の処理部11は、特定された所在情報に対応するURLを含む第1プログラムP11をゲスト端末3へ送信する。
【0062】
また、本実施形態では、アカウントID毎に必要な第2プログラムP12の種類を特定して配信する例を説明したが、情報処理装置1はアカウントIDを使用せず、アカウント共通で同一の第2プログラムP12を配信するように構成してもよい。
【0063】
更に、本実施形態では、バージョンIDを用いて第2プログラムP12の変更を管理するように構成してあるが、ファイル名によって第2プログラムP12のバージョンを管理するように構成してもよい。
【0064】
更にまた、本実施形態では、画面共有システムに必要なプログラムを配信する例を説明したが、配信するプログラムの内容、システムの機能及び用途等は特に限定されるものでは無い。端末装置にプログラムを配信する任意のプログラム配信装置に本発明を適用することができる。
【符号の説明】
【0065】
1 :情報処理装置
2 :エージェント端末
3 :ゲスト端末
4 :ウェブサーバ
5 :記録媒体
11 :処理部
11a :API処理部
12 :記憶部
12a :アカウント管理データベース
13 :通信部
B2 :エージェントブラウザ
B3 :ゲストブラウザ
N :通信網
P1 :コンピュータプログラム
P11 :第1プログラム
P12 :第2プログラム
P2 :エージェントプログラム
P3 :ゲストプログラム