JP2018005344A - 機能拡張システム、機能拡張方法および機能拡張プログラム - Google Patents

機能拡張システム、機能拡張方法および機能拡張プログラム Download PDF

Info

Publication number
JP2018005344A
JP2018005344A JP2016127985A JP2016127985A JP2018005344A JP 2018005344 A JP2018005344 A JP 2018005344A JP 2016127985 A JP2016127985 A JP 2016127985A JP 2016127985 A JP2016127985 A JP 2016127985A JP 2018005344 A JP2018005344 A JP 2018005344A
Authority
JP
Japan
Prior art keywords
browser
rule
terminal
code
server
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
JP2016127985A
Other languages
English (en)
Other versions
JP6557184B2 (ja
Inventor
西川 健一
Kenichi Nishikawa
健一 西川
増田 健
Takeshi Masuda
健 増田
公雄 土川
Kimio Tsuchikawa
公雄 土川
洋之 足立
Hiroyuki Adachi
洋之 足立
井上 晃
Akira Inoue
晃 井上
勉 丸山
Tsutomu Maruyama
勉 丸山
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2016127985A priority Critical patent/JP6557184B2/ja
Publication of JP2018005344A publication Critical patent/JP2018005344A/ja
Application granted granted Critical
Publication of JP6557184B2 publication Critical patent/JP6557184B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • User Interface Of Digital Computer (AREA)
  • Digital Computer Display Output (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】ユーザインタフェース機能を簡易に拡張できる。【解決手段】プロキシサーバ10は、Webサーバ30から端末20上で動作するWebブラウザ21に至るまでの経路上で、Webサーバ30から端末20宛てに送信されたメッセージを取得し、ユーザインタフェースを拡張するルールが規定されたルールファイルと、ルールを解釈して実行するコードとをメッセージに追加する。そして、端末20は、追加されたコードをWebブラウザ21上で実行して、ルールファイルを解釈し、該ルールファイルに基づいて、Webブラウザ21によって表示される画面上のユーザインタフェース機能を拡張する。【選択図】図1

Description

本発明は、機能拡張システム、機能拡張方法および機能拡張プログラムに関する。
従来、Webシステムなどの業務システム一般において、当初想定していた操作フローが開発時と異なってきたり、新たなフローが必要となったりする場合、業務システムのユーザインタフェース(以下、適宜UIと記載)を作り直すなどの方法で、追加や変化に対応するのは一般的な方法である。
例えば、業務システムにおいて、新たなサービスの追加やサービス内容の変更、運用プロセスの変更などにより、業務システムのUIが最適なものではなくなり、業務が効率的に行えなくなる、操作のミスが増えるなど、業務上の問題点が生じてくる。具体的な例として、業務システム上のある入力フォームには所定のコード値の集合からオペレータが一つ選んで記入することを期待されているが、実際には入力にあたって制限がないので、所定のコード値の集合に無い値を入れてしまうなどのミスが起こりうる。
別の例では、新たなサービスメニューが追加されたが業務システムの改修がまだ行われていない場合、自由記述の備考欄に所定のルールに従って新しいサービスメニューに関する情報を入力する、という業務ルールが新たに設定されることがありうるが、この場合あくまでも自由記述の備考欄を使っているために、オペレータが期待される情報を入力しない、といったことが起こりうる。このような場合、業務システムの改修を行うことで対処することが一般的である。
例えば、Web APIを持つWebシステムを連携させて、新たなWebシステムを構成する技術も存在する。Web APIを公開しているWebシステムを1つ以上使って、API呼び出しを使ってWebシステムを作り上げることが可能である。ここでは既存のWebシステム自体には手をいれておらず、利用しているだけである。
業務システムUIのクライアントサイド拡張技術は、対象のシステムを作り変えずに、業務システムUIをクライアント端末側で機能拡張するアイデアが述べられている(非特許文献1参照)。対象UI要素に、予め設定された表示ルールに基づいて新たな拡張UI要素をオーバーレイ表示し、オペレータに拡張UI要素に対して入力を行わせる。拡張UI要素への入力内容と予め設定された入力ルールの整合性を判定し、整合する場合には元のUI要素に自動入力する。
また、Greasemonkeyは、Firefoxブラウザのアドオンであり、Greasemonkeyの提供するAPIとJavaScript(登録商標)を活用してユーザが用意したJavaScriptコードの実行を可能とする(非特許文献2参照)。特権モードで動作するGreasemonkeyのAPIによって、通常のブラウザアドオンでは許可されていない任意のリモートサイトへのアクセスなどが可能となっている。このため、Greasemonkeyのコミュニティサイト上のユーザスクリプトに、ユーザ認証情報の取得などを行うマルウェアが一定数含まれていたと確認されている。このように、Greasemonkeyは、本質的にマルウェアに対して脆弱である。
また、Stickletは、Greasemonkeyの脆弱性という欠点を解消するために、独自のDomain Specific Language(DSL)を導入して記述を制限している(非特許文献3参照)。独自のDSL以外ではユーザスクリプトを記述することができなくなっている。Greasemonekyと同様にFirefoxのアドオンとして実装されている。なお、Stickletは非常に限定された記述のみが可能となるDSLの導入により、ある程度汎用的な業務用途で用いることは難しい。
足立 洋之ら、"業務システムUIのクライアントサイド拡張によるユーザ操作支援"、電子情報通信学会 総合大会、2016年3月 "Greasemonkey :: Add-ons for Firefox"2010.[平成28年5月24日検索]、インターネット<https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/> Oscar Diaz, Cristobal Arellano, and Maider Azanza. "A Language for End-User Web Augmentation: Caring for Producers and Consumers Alike". ACM Trans. Web, Vol7, No2, Article 9 (May 2013), 51 pages.
上記した従来の技術では、ユーザインタフェース機能を簡易に拡張することができないという課題があった。つまり、アプリケーションシステムの作り変えや開発を行ってユーザインタフェース機能の拡張を行う場合には、テストを含めた開発コストや期間が掛かる。また、パッケージソフトウェアなどソースコードが公開されていない場合は、そもそも開発を行ってシステム(パッケージソフトウェア)を作り変えることが難しいという問題がある。
また、例えば、Web APIを持つWebシステムを連携させてユーザインタフェース機能の拡張を行う場合に、元となる既存のシステムがWeb APIなど利用可能なAPIを公開していない場合には、新たなWebシステムを構成するために手間やコストが掛かるという問題がある。
上述した課題を解決し、目的を達成するために、本発明の機能拡張システムは、ブラウザを動作させる端末と、該端末と通信を行うサーバとを有する機能拡張システムであって、前記サーバから前記ブラウザに至るまでの経路上で、前記サーバから前記端末宛てに送信されたメッセージを取得し、ユーザインタフェースを拡張するルールが規定されたルールファイルと、前記ルールを解釈して実行するコードとを前記メッセージに追加する追加部と、前記追加部によって追加されたコードを前記ブラウザ上で実行して、前記ルールファイルを解釈し、該ルールファイルに基づいて、前記ブラウザによって表示される画面上のユーザインタフェース機能を拡張する実行部とを備えることを特徴とする。
また、本発明の機能拡張方法は、ブラウザを動作させる端末と、該端末と通信を行うサーバとを有する機能拡張システムによって実行される機能拡張方法であって、前記サーバから前記ブラウザに至るまでの経路上で、前記サーバから前記端末宛てに送信されたメッセージを取得し、ユーザインタフェースを拡張するルールが規定されたルールファイルと、前記ルールを解釈して実行するコードとを前記メッセージに追加する追加工程と、前記追加工程によって追加されたコードを前記ブラウザ上で実行して、前記ルールファイルを解釈し、該ルールファイルに基づいて、前記ブラウザによって表示される画面上のユーザインタフェース機能を拡張する実行工程とを含んだことを特徴とする。
また、本発明の機能拡張プログラムは、端末と通信を行うサーバから前記端末上で動作するブラウザに至るまでの経路上で、前記サーバから前記端末宛てに送信されたメッセージを取得し、ユーザインタフェースを拡張するルールが規定されたルールファイルと、前記ルールを解釈して実行するコードとを前記メッセージに追加する追加ステップと、前記追加ステップによって追加されたコードを前記ブラウザ上で実行して、前記ルールファイルを解釈し、該ルールファイルに基づいて、前記ブラウザによって表示される画面上のユーザインタフェース機能を拡張する実行ステップとをコンピュータに実行させることを特徴とする。
本発明によれば、ユーザインタフェース機能を簡易に拡張できるという効果を奏する。
図1は、第1の実施形態の機能拡張システムの構成例を示すブロック図である。 図2は、第1の実施形態に係る機能拡張システムにおけるユーザインタフェース機能拡張処理の概要を説明する図である。 図3は、UI拡張前とUI拡張後のWebサイトの画面例を示す図である。 図4は、第1の実施形態に係る機能拡張システムの処理を具体的に説明する図である。 図5は、ルールファイルの記述例を示す図である。 図6は、拡張処理の適用前後のWebブラウザによる表示結果を示す図である。 図7は、対象Webサイトのソースコード(HTML)のうち、関連する部分を示す図である。 図8は、JSON形式で記述したルールファイルの例を示す図である。 図9は、ルールファイルから参照され、Webブラウザにて解釈実行されるJavaScriptコードの例を示す図である。 図10は、UI拡張関連コードが注入された後のメッセージ例を示す図である。 図11は、UI拡張関連コードが注入された後でかつWebブラウザによって解釈実行された後のメッセージ例を示す図である。 図12は、第1の実施形態に係る機能拡張システムにおけるルール解釈実行処理の流れの一例を示すフローチャートである。 図13は、第1の実施形態に係る機能拡張システムにおける対象アプリケーション変化検知処理の流れの一例を示すフローチャートである。 図14は、プロキシサーバを端末上で動作させる場合の機能拡張システムの処理の概要を説明する図である。 図15は、Webサーバとプロキシサーバが同じサーバで稼働している場合の機能拡張システムの処理の概要を説明する図である。 図16は、第2の実施形態に係る機能拡張システムにおけるユーザインタフェース機能拡張処理の概要を説明する図である。 図17は、SSLを含む機能拡張システムの構成例を示すブロック図である。 図18は、機能拡張プログラムを実行するコンピュータを示す図である。
以下に、本願に係る機能拡張システム、機能拡張方法および機能拡張プログラムの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態により本願に係る機能拡張システム、機能拡張方法および機能拡張プログラムが限定されるものではない。
(第1の実施形態)
図1は、第1の実施形態に係る機能拡張システムの構成の一例を示す図である。第1の実施形態に係る機能拡張システムは、プロキシサーバ10、端末20およびWebサーバ30を有する。なお、図1に示す構成は一例にすぎず、具体的な構成や各装置の数は特に限定されない。
プロキシサーバ10は、ユーザ端末20からWebサーバ30へのWebアクセスを中継するサーバである。プロキシサーバ10は、Webサーバ30から端末20上で動作するWebブラウザ21に至るまでの経路上で、Webサーバ30から端末20宛てに送信されたメッセージを取得し、ユーザインタフェースを拡張するルールが規定されたルールファイルと、ルールを解釈して実行するコードとをメッセージに追加する。なお、ここでプロキシサーバ10とは、フォワード型のものであってもよいし、リバース型であってもよい。また、ルールファイルそのものをメッセージに追加せずにルールファイルの参照のみを追加してもよく、ルールファイルの実体が外部にあってもよい。
端末20は、例えばパーソナルコンピュータ、スマートフォン等の情報処理装置である。端末20は、ユーザの操作を受け付け、OS22上で動作するWebブラウザ21を介してWebサーバ30と通信を行い、Webサイト等を閲覧可能に表示する。また、端末20は、ユーザによる入力操作を受け付ける入力デバイス23とWebサイト等の画面を表示するディスプレイ24とを有する。
Webサーバ30は、例えばWebサイトを運営するサーバ装置であって、端末20からプロキシサーバ10を経由してアクセスを受け付け、受け付けたアクセスに応じてメッセージをプロキシサーバ10を介して端末20に返信する。
ここで、図2を用いて、第1の実施形態に係る機能拡張システムにおけるユーザインタフェース機能拡張処理の概要を説明する。図2は、第1の実施形態に係る機能拡張システムにおけるユーザインタフェース機能拡張処理の概要を説明する図である。図2に示すように、プロキシサーバ10は追加部11を有し、端末20は実行部25を有する。
プロキシサーバ10の追加部11は、Webサーバ30から端末20上で動作するWebブラウザ21に至るまでの経路上で、Webサーバ30から端末20宛てに送信されたメッセージを取得し、ユーザインタフェースを拡張するルールが規定されたルールファイルと、ルールを解釈して実行するコードとをメッセージに追加する。具体的には、追加部11は、Webサーバ30から端末20宛てに送信されたメッセージを受信すると、ユーザインタフェースを拡張するルールが規定されたルールファイルとルールを解釈して実行するコードを含むUI拡張関連コードとをメッセージに注入し、端末20に転送する。また、追加部11は、アプリケーションの変化を検知するコードと、アプリケーションの変化に応じてルールを解釈して実行するコードとをさらにメッセージに追加する。
そして、端末20の実行部25は、追加部11によって追加されたコードをWebブラウザ21上で実行して、ルールファイルを解釈し、該ルールファイルに基づいて、Webブラウザ21によって表示される画面上のユーザインタフェース機能を拡張する。また、実行部25は、追加部11によって追加された各コードをWebブラウザ21上で実行し、アプリケーションの変化を検知した場合には、該変化に応じてルールファイルを再度解釈して、ユーザインタフェース機能を拡張する。また、実行部25は、監視すべきイベントを指定するホワイトリストと監視すべきでないイベントを指定するブラックリストを参照し、監視すべきイベントを指定するリストに記載されたイベントによりアプリケーションの変化を検知した場合に該変化に応じてルールファイルを再度解釈して、ユーザインタフェース機能を拡張するようにしてもよい。
つまり、プロキシサーバ10は、Webブラウザ21においてプロキシサーバを利用すると設定している場合やリバース型プロキシを設置している場合、Webサーバ30から端末20に向かうHTTPレスポンスがプロキシサーバ10を通ることを利用して、プロキシサーバ10においてレスポンスの本文を書き換えてから、端末20に転送する。プロキシサーバ10は、拡張ルールを参照して動作するようなコード(例えば、HTML、JavaScript等)をHTTPレスポンス本文に埋め込む。端末20のWebブラウザ21は、レスポンスに埋め込まれたコードを実行すると、コードはルールを解釈してUI拡張を行う。
ここで、図3を用いて、UI拡張の実施イメージを説明する。図3は、UI拡張前とUI拡張後のWebサイトの画面例を示す図である。図3に示すように、UI拡張される前のWebサイトでは1行の入力フィールドであったものが、UI拡張後はリスト形式の入力UI要素となっており、同様にテキストエリアであったところが、ラジオボタンとカレンダーから日付を選択するUI要素とボタンに、機能拡張されている。また、アノテーションメッセージも追加されている。これにより、期待される入力値を決まった値の範囲内に制限することができており、またユーザ操作を支援するためのアノテーションも追加できている。これらの拡張されたUIに対する入力値は元のUI要素に必要に応じて変換を施して転記すればよい。その際、拡張したUIを表示し続けてもよいし、非表示にして元のUIを表示してもよい。これらの処理はルール中にJavaScriptなどブラウザが解釈実行できるプログラミング言語を使えば記載可能である。
また、他にも例えば、ある特定の値が入力されたらそれに応じてメッセージ(例えば、警告メッセージ)を表示させたり、画面上に表示された特定の値に応じて処理を変化させたり、入力値を他の箇所に転記させたり、入力値をあるルールに従って変換してから転記したり、表示値に応じた自動操作など、JavaScriptを使ってブラウザ上で実施可能なことは原理的に全て可能である。その他、ある条件(表示値がある値を含むなど)が満たされた時に、予め決められた一連の処理を順次実行するような自動操作も可能であるし、特定の操作が難しい画面において、操作方法を支援する所定の動画像を表示再生させたりすることも可能である。また、ユーザ操作等のイベントを検知して、所定の処理を実行するなどのイベント駆動型の処理内容も指定できる。いずれにおいても、元となるWebサーバ30には何も手を入れていないし、端末20側に特別なアプリケーションを導入することも必要なく、Webブラウザ21が動きさえすれば、OS等の環境も問わない。
このように、Webブラウザ21で解釈実行できるプログラミング言語(例えば、JavaScript等)で記載した任意のコードを中に含む拡張ルール、及び拡張ルールを解釈実行するUI拡張関連コード、もしくはこれらへの参照をメッセージに追加するのみで、Webサーバ30と端末20のWebブラウザ21を結ぶ経路途中で、ユーザインタフェース機能を拡張する。具体的には、経路途中に設置したプロキシサーバ10(フォワード型、リバース型問わず)において、Webサーバ30から端末20のWebブラウザ21に対して返却されたレスポンスメッセージ(HTML、JavaScript、CSS等)を書き換えることで、UI機能の拡張を実現する。これにより、開発コスト及び期間を小さく抑えたまま、軽量・迅速な形で、UI周辺に特化した形のWebシステムの簡易な拡張が可能となる。さらに、既存のWebシステムのUIが前提となるため、UI拡張したとしても既存Webシステムの枠組みから大きく外れないため、従来のWebシステムのインタフェースになれたユーザにとってもとっつきやすいインタフェースとなっていることが期待できる。また、プロキシサーバ10がUI拡張関連コードを注入することで、Internet Explorerや、その他タブレットやスマートフォンのような端末20上のWebブラウザ21をサポートする。
また、拡張ルール内の拡張ロジック部分の記述力に関しては、Stickletのような記述力不足に陥らないようにするために、任意のJavaScriptコードを許可する。一方で、拡張ルール内のJavaScriptコードに関してはサンドボックス技術を活用して、例えば、予め設定されていないドメインに対するアクセスは不許可とするなど、ユーザもしくは管理者がプロキシサー10バやアドオンに指定したポリシー(例えば、アクセスできる外部アクセスのリスト)に応じたセキュリティを担保することで、脆弱性の問題を回避する。これにより、入力値のバリデーションや自由記述の制限(リスト化など)、入力値に応じた拡張内容の変化など、様々な拡張機能を実装できる。
ここで、図4を用いて、第1の実施形態に係る機能拡張システムの処理を具体的に説明する。図4は、第1の実施形態に係る機能拡張システムの処理を具体的に説明する図である。図4に示すように、プロキシサーバ10は、Webサーバ30から端末20に向かって送られるメッセージを取得し、ルール解釈実行部、変更検知部、UI拡張再表示部で構成されるUI拡張関連コード、ルールファイルもしくはこれらへの参照をメッセージに注入し、Webブラウザ21に転送する。なお、ルール解釈実行部、変更検知部、UI拡張再表示部とは、メッセージに注入されるコードである。
なお、ルールファイルは必ずしも一緒に注入する必要はなく、ルール解釈実行部から外部のファイルを参照する形でもよい。また、全てのレスポンスメッセージに対して、毎回ルール解釈実行部等を注入することは必須ではなく、例えば、プロキシサーバ10は、ルールファイルを解釈して、各ルールで規定したURLとマッチした場合に限りUI拡張関連コードをメッセージに注入するようにしてもよい。
Webブラウザ21は、Webサーバ30から元々送信されたメッセージと注入された記述をあわせて一体的に解釈実行することで、ルールに指定されたUI拡張が実施されることになる。UI拡張関連コードは、UI拡張関連コードを実装した言語(例えば、JavaScript)のインタプリタによって、Webブラウザ21で解釈実行される。
また、図4に示すように、UI拡張関連コードは、プロキシサーバ10でデータとして保持、または外部サーバでデータとして保持されるUI拡張関連コードへの参照をデータとして保持され、メッセージに注入されるものであって、Webブラウザ21に渡されてWebブラウザ21で動作されるものである。また、図4においてWebブラウザ21での注入メッセージの解釈実行イメージとして示されているように、Webブラウザ21で動作する際は、ルール解釈実行部がルールファイルを取得し、取得したルールファイルをもとにルールを順次解釈実行する。また、変更検知部が対象Webサイトなどの変更(DOM(Document Object Model)変化、リサイズ等)を検知すると、その変更内容をUI拡張再表示部に通知する。そして、UI拡張再表示部は、ルール解釈実行部に必要なルールの再適用を依頼する。
(UI拡張関連コードについて)
ルールファイルには、UI拡張を行う条件(発火条件)、対象UI要素および操作内容が記載されている。例えば、発火条件はURLが「http://xxx.yyy/zzz/.*」という正規表現とマッチすること、対象UI要素は「input[name=検索ボタン]」というW3CのCSSのSelector記法により表されるHTML内のUI要素、操作内容は<input type="submit" name="Search button" value="Search"...>で表されるUI要素を対象UI要素と同じサイズで同じ位置に重ねて表示する、拡張後のUI要素に対する入力内容を元のUI要素に転記する、新たなUI要素は追加せずに元のUI要素に直接バリデーション機能を追加する、などといった内容である。同じサイズ、同じ位置で対象UI要素の上に重ねて表示する方法は、CSSを使いposition: absolute及びz-indexを対象UI要素よりも大きな値に設定することで、実現可能であり、JavaScript等を用いることで容易に実現可能である。また、対象UI要素に依存しない拡張内容であれば、対象UI要素を指定せずに、操作内容を記述することも可能である。
また、発火条件や対象UI要素の指定を、画像情報を使って記述する形態も可能である。例えば、発火条件として、ファイルのパスによって指定される画像が画面上に存在すること、また対象UI要素の指定も同様で、ファイルのパスによって指定された画像が存在すればその画像を指定、などといった形でピクセルデータを使った指定も同じ枠組みで実現可能である。また、ルールファイル自身の編集方法については、特に限定されるものではなく、ルール形式に応じてテキストエディタで記載してもよいし、専用のエディタを用意してもよい。
また、ルールファイルは、ルール解釈実行部に添付させておいてもよいし、端末20のローカルファイルシステムに持たせてもよいし、外部の独立したWebサーバが提供する形でもよいし、Webサーバにルール取得や更新のためのWeb APIを付加して他システムとの連携を促進して、更なるルール共有や活用をはかることもできる。
ここで、図5を用いて、ルールファイルの記述例(JSON形式)について説明する。図5は、ルールファイルの記述例を示す図である。図5に例示するように、UI拡張を行う条件を指定する発火条件は、url欄に指定したURLと現在のURLがマッチするかどうか、またprecondition欄に記載したJavaScriptによる式の真偽値をチェックしている。対象UI要素は、selectorによって指定しており、ここではCSSのselectorの記法を用いている。そして、発火条件が真であり、かつ対象UI要素が存在する場合、操作内容の一つとして、uiで表されるUI要素を対象UIと同じサイズ同じ位置で、対象UIの上に重ねて表示する。追加の操作内容は、bindまたはbindextで示され、JavaScriptで記載する例となっている。bindextは外部のJavaScriptファイルを参照し、fの値として指定されたfunctionを実施する指定の例である。
url要素は例えば一つ上の階層に記述し、1つのURLに対して複数のルールが対応する場合に、1つのURLを何度も記述しないような方法も可能である。またbindやbindextによる操作内容をどういうルール内で指定する拡張UI要素やselectorで指定する対象UI要素に対するものだけに限定する形態も可能であるし、逆に全ルールに共通の操作内容として、前述のurl要素と同様に一つ上の階層に記述し、各ルールで共用する形態も可能である。
ルール解釈実行部は、ルールファイルとあわせて、プロキシサーバ10によってWebサーバ30からブラウザ本体に渡されるレスポンスメッセージに注入される。ルール解釈実行部への参照のみを注入する形も同様である。レスポンスメッセージは、端末20ではWebブラウザ21に渡されて解釈実行され、Webブラウザ21上に表示される。ルール解釈実行部はWebブラウザ21が解釈実行できる言語で実装している前提であり、例えば、JavaScriptが例として挙げられる。JavaScriptなどによって実装されたルール解釈実行部はブラウザ本体内のJavaScriptインタプリタによって解釈実行され、既にレスポンスメッセージのHTML等からWebブラウザ21が構成してあるDOMに対して働きかけ、ルールに従って追記や書き換え等を行う。
変更検知部は、対象アプリケーションの変化を検知したらUI拡張再表示部に通知する。このときUI拡張再表示部は既に端末20側のWebブラウザ21で動作している。通知されたUI拡張再表示部はルールを再度解釈実行するなどの処理を行う。この機能部は、ある時点でUI拡張のルールを適用し、UI機能を拡張したとしても、ウィンドウのリサイズやアプリケーション画面の切り替え等のイベントにより、適用済みのルールが適切ではなくなることがあるため、そのような事態に対応するためのものである。Webアプリケーションの例では、ページのリサイズやスクロール等のイベントを取得したり、MutationObserver(例えば、MutationObserver−Web APIs | MDN 「https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver」参照)という枠組みを用いてDOMの変更イベントを取得することで実現可能である。ルール解釈実行部と一緒に端末20へのレスポンスメッセージに変更検知部本体もしくは参照を注入する形が一つの実施形態である。
また、Webページの作り方によっては頻繁にイベントが発生するケースもある。例えば、マウスの位置を検知・追跡し、その現在位置にあわせて、画像要素を変化させるなどといったWebページでは、ページの変化イベントが発生しすぎてしまい、ルール適用の回数及び頻度が膨大となり、ルール適用処理の負担が重たくなってしまうことがありうる。このようなケースに対しては、監視すべきイベントを指定するホワイトリスト、また監視すべきでないイベントを個別に指定するブラックリストを導入することで、ルールの再適用処理の回数を大幅に減らすことが可能である。具体的には、変更検知部にてホワイトリストとブラックリストをチェックするようにすればよい。
UI拡張再表示部は、UI拡張の再適用をWebブラウザ21側で行うためのものである。基本的には現在閲覧しているURLにマッチしたルール集合のみを対象に、ルール解釈実行部を使い、ルールの再適用を行えばよい。
(具体的な事例に基づいた機能拡張処理の説明)
以下では、プロキシサーバ10で、どのように機能拡張処理が実現されるか、図6から図11で示される例を用いて具体的に説明する。図6は、拡張処理の適用前後のWebブラウザによる表示結果を示す図である。図7は、対象Webサイトのソースコード(HTML)のうち、関連する部分を示す図である。図8は、JSON形式で記述したルールファイルの例を示す図である。図9は、ルールファイルから参照され、Webブラウザにて解釈実行されるJavaScriptコードの例を示す図である。図10は、UI拡張関連コードが注入された後のメッセージ例を示す図である。図11は、UI拡張関連コードが注入された後でかつWebブラウザによって解釈実行された後のメッセージ例を示す図である。
図6の例では、この例で実施する拡張処理の適用前後のWebブラウザ21による表示結果を示している。元々は、1行のテキストが入力可能なフォームが2つ並んでいたが(お客様氏名と申込種別の入力フォーム)、その双方の入力フォームの上に拡張UIフォームを重ねて表示している。申込種別の入力フォームは自由記述のフォームであったものが、ドロップダウンリストから選択する形式のフォームとなっている。お客様氏名のフォームは見た目には変化は見えないが、後述するように全角文字しか受け付けないような入力値に対するバリデーション処理が追加されている。これらの拡張はプロキシサーバ10を経由した場合に効果としてあらわれる。フォワード型プロキシを利用する場合には、Webブラウザ21のプロキシサーバの設定に、UI拡張関連コードを注入するプロキシサーバ10を指定すればよい。
図7は、図6で示す対象Webサイトのソースコード(HTML)のうち、関連する部分を示したものである。お客様氏名と申込種別の入力フォームがinputタグ(type=text)で表現されていることがわかる。UI拡張処理を行わない場合は、Webサーバ30からは図7で示すHTMLを含むコードがメッセージとしてプロキシサーバ10を経由して端末20上のWebブラウザ21に届き、Webブラウザ21によって解釈実行され(この場合はHTMLとして解釈実行され)、画面上に表示されることとなる。
図8は、JSON形式で記述したルールファイル例である。ここでは、上述した図5のルール例と若干形式が異なっており、1つのurl要素(ここでは、「http://localhost/example.html」)に対して、rule要素で表されるルールのリスト(ここでは2ルール)、bindext要素で表される機能拡張のスクリプトを記載している。bindext要素では、図9で示すJavaScriptコードを参照しており、ルールが読み込まれた際にWebブラウザ21中のJavaScriptインタプリタによって解釈実行される。図8の1つ目のルールでは、selector要素の値”input#name”で示される対象Webページ中のUI要素(お客様氏名)の位置にあわせて、ルール中のUI要素の値で示されるinputタグ(1行の文字列を入力するフォーム)を配置する。配置と重なり順序(inputタグがより上位に表示)はルールではなくルール解釈実行部の一部としてメッセージに注入されるCSSの中で表現される。図8の2つ目のルールは、selector要素の値”input#type”で示される対象Webページ中のUI要素(申込種別)の位置にあわせて、ルール中のUI要素の値selectタグで表されるドロップダウンリストのUI要素を表示する。
図9の例は、図8のルールファイルがWebブラウザ21上でルール解釈実行部によって解釈実行されるときに、あわせて解釈実行されるJavaScriptコードである。この例ではbindext要素により、外部サーバにホストされているスクリプトとしたが、ルールファイル中に直接記述するbind要素を使っても同じ効果を得ることができる。この例では、お客様氏名の入力フォームを拡張したフォームについてのイベント処理を記載している。ルールファイルのui要素によって表示された新たなUI要素(拡張入力フォーム)からフォーカスが外れた時(blur関数)に拡張入力フォームへの入力値をチェックして全角文字でなければ、アラートを表示するようにしている。全角文字が入力された場合は元の入力フォームに入力値を転記して、拡張入力フォームを非表示とする、といった処理が記載されている。2つ目の申込種別に関する処理では、ドロップダウンリストで選択された値を元の入力フォームにやはり転記してから、拡張入力フォーム(ドロップダウンリスト)を非表示としている。
図10の例は、プロキシサーバ10によって、JavaScript(Webブラウザ21で解釈実行可能な言語であれば他でもよい)で実装されたUI拡張関連コード、すなわちルール解釈実行部、UI拡張再表示部、変更検知部、もしくはこれらのUI拡張関連コードへの参照、及びJSON等によって記述されたルールファイル本体もしくはルールファイルへの参照が注入された後のメッセージ例の抜粋である。この段階ではまだWebブラウザ21によってUI拡張関連コード及びルールファイルは解釈実行されていない。プロキシサーバ10によって、ルール解釈実行部、変更検知部、UI拡張再表示部のJavaScriptコードが<script>タグを使って挿入されている。このメッセージが、Webブラウザ21によって解釈実行される。
図11の例は、図10のメッセージがWebブラウザ21によって解釈実行された後のメッセージ抜粋を示している。UI拡張関連コードの解釈実行により、ルールファイルが解釈実行され、図に示すようなお客様氏名の入力フォームを拡張したinputタグ、申込種別の入力フォームを拡張したdivタグ(内部はselectとoptionタグ)が新たに挿入されていることがわかる。これらが実際には図6の下部に示すように、Webブラウザ21上では新たな入力フォームとして表示される。また図9で示したJavaScriptによるイベント処理などに関わる拡張コードは、scriptタグによって挿入されている。これがWebブラウザ21によって実行されることで、フォーカスが外れたイベントに対する処理が実現される。
また、プロキシサーバ10がどのように図10に示すようなUI拡張関連コードを注入するかは、例えばApacheのmod_proxyモジュールを使いプロキシサーバ10を実装し、mod_ext_filterなどのモジュールを使うことで実現できる。mod_ext_filterを使うと、プロキシサーバ10のプロセスは、外部のプロセスにWebサーバ30からのレスポンス本文を転送し、何らかの処理をした結果の出力を受け取ることができる。この枠組を利用することで、Webサーバ30からのレスポンスメッセージを入力として、UI拡張関連コードをBodyタグ末尾等に注入したメッセージを出力としたプログラムを任意の言語で実装することで、機能拡張処理を実現することができる。また、無条件に図10で示すようなUI拡張関連コードを挿入するのではなく、プロキシサーバ10で動かす前述のメッセージ置換プログラムで、ルールファイルからURLをチェックしてから必要な場合だけUI拡張関連コードを注入するような実装も可能である。
(ルール解釈実行処理及び対象アプリケーション変化検知処理の流れ)
図12は、第1の実施形態に係る機能拡張システムにおけるルール解釈実行処理の流れの一例を示すフローチャートである。図13は、第1の実施形態に係る機能拡張システムにおける対象アプリケーション変化検知処理の流れの一例を示すフローチャートである。
まず、図12を用いて、機能拡張システムにおけるルール解釈実行処理の流れを説明する。図12に示すように、端末20の実行部25は、プロキシサーバ10からメッセージを受信すると、該メッセージに含まれるルールファイルを取得する(ステップS101)。そして、実行部25は、次のルールが存在するかを判定し(ステップS102)、存在する場合には(ステップS102肯定)、次のルールを読み込み、解釈する(ステップS103)。そして、実行部25は、解釈したルールを実行し(ステップS104)、ステップS102に戻る。ここでは、全てのルールが実行されるまでステップS102〜S104の処理を繰り返す。そして、ステップS102において、次のルールが存在しないと判定された場合には(ステップS102否定)、処理を終了する。
次に、図13を用いて、対象アプリケーション変化検知処理の流れを説明する。図13に示すように、端末20の実行部25は、対象アプリケーションを監視する(ステップS201)。そして、実行部25は、対象アプリケーションに変化があると判定した場合には(ステップS202肯定)、図12に示したルール解釈実行処理を実行し(ステップS203)、ステップS201に戻る。また、実行部25は、対象アプリケーションに変化がないと判定した場合には(ステップS202否定)、そのままステップS201に戻る。
なお、上記の説明では、プロキシサーバ10がWebサーバ30や端末20とは別のマシン上で動作している場合について説明したが、これに限定されるものではない。例えば、図14に例示するように、端末20上でプロキシサーバ10を動作させてもよい。また、例えば、図15に例示するように、Webサーバ30とプロキシサーバ10が同じサーバで稼働していてもよい。図14は、プロキシサーバを端末上で動作させる場合の機能拡張システムの処理の概要を説明する図である。図15は、Webサーバとプロキシサーバが同じサーバで稼働している場合の機能拡張システムの処理の概要を説明する図である。
なお、上述したように拡張ルールの解釈を行うコードを埋め込む方法以外に、プロキシサーバ10で、UI拡張のプログラムを動作させ、拡張ルールを解釈して、必要な拡張のためのコード(HTML、JavaScript等)をレスポンス本文に埋め込むことも可能である。この場合は解釈結果を埋め込む点が解釈を行うコードを埋め込む方法と異なる。ただし、解釈結果を埋め込むやり方では、プロキシ配下の端末台数が増えたり、拡張処理が複雑になっていくと、プロキシサーバ10の負荷が高くなり、端末20から見た時のレスポンスが悪化する可能性もある。この場合のルール解釈実行部(テキストの置換等が行える一般のプログラミング言語で実装)は、プロキシサーバ10よりWebサーバ30から届いたレスポンスメッセージを渡されるので、そのメッセージをルールに従って追記や置換等を行い、さらに変更検知部が通知できるようにするために、通知に応えてUI拡張を再表示するのに必要なコード(UI拡張再表示部)もメッセージに埋め込み、プロキシサーバ10に返却する。UI拡張再表示部は、例えば、HTML内のScriptタグなどに埋め込んでしまう形が一つの形態である。
また、Webブラウザ21側で動作しているUI拡張再表示部は通知を受けたら、UI拡張を再表示するなどの処理を行う。プロキシサーバ10はルール解釈を行いメッセージの変換処理を行う際に、適用したルールのリストを得ているので、これらのルールとその処理部分のみをUI拡張再表示部に埋め込むなどすることが一つの実現例である。
(第1の実施形態の効果)
第1の実施形態に係る機能拡張システムにおいて、プロキシサーバ10は、Webサーバ30から端末20上で動作するWebブラウザ21に至るまでの経路上で、Webサーバ30から端末20宛てに送信されたメッセージを取得し、ユーザインタフェースを拡張するルールが規定されたルールファイルと、ルールを解釈して実行するコードとをメッセージに追加する。そして、端末20は、追加されたコードをWebブラウザ21上で実行して、ルールファイルを解釈し、該ルールファイルに基づいて、Webブラウザ21によって表示される画面上のユーザインタフェース機能を拡張する。このため、ユーザインタフェース機能を簡易に拡張することが可能である。
つまり、第1の実施形態に係る機能拡張システムによって、従来であれば、UIに関わる部分において、対象のWebシステム自体を作り変えることによって得ていた効果と同等の効果を、対象システムの作り変え無しに得ることができる。また、プロキシサーバ10を利用する形態においては端末20への特殊なアプリケーションの導入無しに、簡易なルール記述により、ユーザインタフェース機能を簡易に拡張することができる。
また、第1の実施形態に係る機能拡張システムによって、UI拡張ルール内に記述するWebブラウザ21で解釈実行できるプログラミング言語による任意のコードによって機能拡張することができる一方で、サンドボックス技術の適用により悪意あるコード実行を防ぐことで、ルールの記述力とルール実行の安全性を高いレベルで確保できるようになる。
また、第1の実施形態に係る機能拡張システムにおいて、端末20の環境に要求されるのは、Webブラウザ21が動作することのみであり、その他動作しているOSは限定せず、端末20に特殊なアプリケーションやアドオン等の導入を要求することもないため、汎用的なプラットフォーム上でUI拡張の効果を享受することができる。これにより、Webブラウザ21の動作する端末、例えばタブレット端末やスマートフォンなどでも、OSを問わずUI拡張を利用することができるようになる。
さらに、第1の実施形態に係る機能拡張システムでは、UI拡張ルールを複数人が作成していくことによって、システム上のどこに改善ポイントがあり、どう修正すべきなのかが見えてくるので、システム開発の要件定義をより効果的なものにすることができる。
(第2の実施形態)
上記の第1の実施形態では、プロキシサーバ10がメッセージにUI拡張関連コードを注入する場合を説明したが、これに限定されるものではなく、ブラウザアドオンがメッセージにUI拡張関連コードを注入するようにしてもよい。そこで、以下では、第2の実施形態として、ブラウザアドオンがメッセージにUI拡張関連コードを注入する場合を説明する。なお、第1の実施形態と同様の構成および処理の説明は省略する。
図16に示すように、端末20は、Webブラウザ21と該Webブラウザ21のブラウザアドオン40を動作している。ブラウザアドオン40は、Webサーバ30から端末20上で動作するWebブラウザ21に至るまでの経路上で、Webサーバ30から端末20宛てに送信されたメッセージを取得し、ユーザインタフェースを拡張するルールが規定されたルールファイルと、ルールを解釈して実行するコードとをメッセージに追加する。
ここで、基本となる機能構成はプロキシサーバ10を用いた第1の実施形態と同一である。ブラウザアドオン40は、Webブラウザ21がページをレンダリングして表示する前に、適宜ページを書き換えることができるので、UI拡張関連コードをメッセージに注入することができる。ブラウザアドオン40を用いた場合は、Webブラウザ21ごとに若干異なる実装方法が必要となるものの、基本となる方式は全て同一である。ルール解釈実行部をメッセージに埋め込む形となる。なお、ここでのWebブラウザ21は、UI拡張関連コードを注入するブラウザアドオンを含まないものとする。
ブラウザアドオン40を実装する場合は、各Webブラウザ21のアドオンの実装方法に従って実装することになる。FirefoxやChromeといったブラウザであれば、Web ExtensionsもしくはExtension APIなどと呼ばれる形式を使って、ブラウザアドオンを実装することができる。Internet Explorerの場合は、Browser Helper Objectを用いてブラウザアドオンを実装する形となる。その他、例えば、Internet Explorerの場合などは、ブラウザアドオンのほかに、単独の独立したプログラムを構築して、そのプログラムからInternet Explorer内のページ構造DOMにアクセスするAPIを使って、ページ構造を操作する形も取りうる。この場合は前述の独立したプログラムが追加部11として機能していることになる。
ブラウザアドオン40を用いる方式で、外部のWebサーバ30にルールファイルを配置する場合は、Webブラウザ21に通常実装されている同一生成元ポリシーによって、対象のWebサイトとドメイン等(生成元)が異なるために、取得することができない、という制約がある。これらは全て公表されている方法、このケースでは例えばルールファイルをホストするWebサーバでCORS(Cross Origin Resource Sharing)の設定を行うことによって回避可能である(例えば、HTTP access control (CORS) 「https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS」参照)。
ブラウザアドオン40を活用する場合であっても、機能拡張処理については、プロキシサーバ10を活用する場合と概ね同じである。ただし、プロキシサーバ10がUI拡張関連コードをWebサーバ30からのメッセージに注入していた処理を、ブラウザアドオン40として実装する必要がある点が異なる。
FirefoxやChromeでサポートしているWeb Extensionsという形式を前提とすると、アドオンパッケージでは、Content ScriptとしてJavaScriptファイルを指定でき、このJavaScriptコードがアドオンのmanifestファイルで正規表現によって指定されたURLを読み込む度ごとに実行されるので、Content ScriptとしてUI拡張関連コードを前述の図10と全く同じようにBodyタグ末尾に注入すればよい。
注入した後、UI拡張関連コードがWebブラウザ21で解釈実行されると、図11と同様に、ルールファイルの解釈実行が行われて、ルールファイルの指定に応じて新たなUI要素が追加され、イベント処理関連等の拡張JavaScriptコードが注入される。結果となるメッセージは図11のプロキシサーバ10を利用した形態と同一である。
ここで、注入するUI拡張関連コードとルールファイルもしくはこれらへの参照はプロキシサーバ10を用いた第1の実施形態のものと同一のものを使うことができる。そのため、プロキシサーバ10を使っても、ブラウザアドオン40を使っても、同一の効果をWebブラウザ21上でユーザは得ることができる。
なお、多様な業務環境を想定して、端末20へのソフトウェア導入無しで済ませたい環境と、端末20へのソフトウェア導入による対応を望む環境、またそれらが混在した環境に対応するため、拡張ルールを解釈実行する機能部をブラウザアドオン40とプロキシサーバ10で共通化することで、同一ルールをブラウザアドオン40、プロキシサーバ10の双方で解釈実行し、同じ効果を奏することができる。
また、本実施形態を実現するにあたって、Greasemonkeyのようなブラウザアドオンをベースに拡張してもよいし、0からブラウザアドオン40やプロキシサーバ10として実装してもよい。上記の説明は、Greasemonkeyなどの既存のツールに依存しない前提で記載している。
(第3の実施形態)
さて、これまで本発明の実施形態について説明したが、本発明は上述した実施形態以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では第3の実施形態として本発明に含まれる他の第3の実施形態を説明する。
(安全性)
端末20の実行部25は、予め決められたファイル以外の情報を、予め決められた外部サイト以外へWebブラウザ21が送信することを中止するようにしてもよい。例えば、ポリシーに応じた、Webブラウザ21上で動作する言語(ここではJavaScriptを例にとる)によって書かれたコードのセキュリティ担保について、最も簡単だが限定的な実現方法は、Webサーバ30からのレスポンスがWebブラウザ21のレンダリングエンジンに渡される前に捕捉し、チェックして書き換える手法である。例えば、ブラウザアドオン40やプロキシサーバ10において、外部に送信したりWebブラウザ21上に表示したりしてよいファイルやデータの属するファイルのリストを予め正規表現などで指定しておき、またアクセスしてよい外部サイトのドメインを正規表現などで予め指定しておき、外部への送信や表示時にこれらのリストをチェックすることで、ユーザスクリプトによる悪意ある情報流出を防ぐ方法が考えられる。
具体的には、外部への送信に関して、JavaScriptの場合であれば、XMLHttpRequestなどの外部にアクセスする関数で渡されるデータやアクセス先をチェックしたり、JSONPといわれる手法で利用されるscriptタグのsrcを事前にチェックし、予め登録されていないドメインに対するものであれば不許可とする、書き換えて無効化するなどの方法で実現可能である。実行時に読み込まれるスクリプトに関しても、ルール解釈実行部で予め読み込まれるスクリプトを取得し、前述のチェックを行うことは可能である。
また、外部への情報送信だけに限定せず、より汎用的なリスクに適用できる手法としては、Caja(例えば、Caja: Google Developers、「https://developers.google.com/caja/」参照)などの手法を活用して、危険性のあるコード部分は無効化する、といった手法も選択可能であるし、Cajaなどをそのまま利用することも可能である。Cajaを使う場合は、URI Policyを指定することで、外向きのアクセスをドメインとポートを指定して許可もしくは不許可とすることが可能であるし、その他のリスクへの対応も可能である。
(プロキシサーバを活用した形態におけるSSL(Secure Sockets Layer)対応)
プロキシサーバ10を活用した形態において、SSLにより途中の通信内容が暗号化されているケースでは、適用に工夫が必要である。このような場合には、図17に例示するように例えば、リバース型のプロキシサーバ10を配置し、その手前もしくはプロキシサーバ10内部にSSL終端機能を有するSSL終端装置(例えば、ロードバランサーなど)50を配置し、SSL終端機能でSSLを一旦終端させることで、回避可能である。この場合、SSL終端機能とWebサーバ30間の通信は暗号化がなされないことから、必要に応じて内側のネットワークは閉域網を利用するなど、エンドツーエンドの通信の安全性を担保する。もしくは、プロキシサーバ10もしくはSSL終端装置50を起点に、Webサーバ30との間をHTTPS通信とする、といった手法も可能である。
(システム構成等)
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
また、本実施の形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
(プログラム)
また、上記実施形態において説明した機能拡張システムが実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、実施形態に係る機能拡張システムにおける各装置(プロキシサーバ10や端末20)が実行する処理をコンピュータが実行可能な言語で記述した機能拡張プログラムを作成することもできる。この場合、コンピュータが機能拡張プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかる機能拡張プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録された機能拡張プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。
図18は、機能拡張プログラムを実行するコンピュータ1000を示す図である。図18に例示するように、コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有し、これらの各部はバス1080によって接続される。
メモリ1010は、図18に例示するように、ROM(Read Only Memory)1011及びRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、図18に例示するように、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、図18に例示するように、ディスクドライブ1100に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインタフェース1050は、図18に例示するように、例えばマウス1110、キーボード1120に接続される。ビデオアダプタ1060は、図18に例示するように、例えばディスプレイ1130に接続される。
ここで、図18に例示するように、ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、上記の機能拡張プログラムは、コンピュータ1000によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ1090に記憶される。
また、上記実施形態で説明した各種データは、プログラムデータとして、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出し、各種処理手順を実行する。
なお、機能拡張プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してCPU1020によって読み出されてもよい。あるいは、機能拡張プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
上記の実施形態やその変形は、本願が開示する技術に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
10 プロキシサーバ
11 追加部
20 端末
21 Webブラウザ
22 OS
23 入力デバイス
24 ディスプレイ
30 Webサーバ
40 ブラウザアドオン
50 SSL終端装置

Claims (6)

  1. ブラウザを動作させる端末と、該端末と通信を行うサーバとを有する機能拡張システムであって、
    前記サーバから前記ブラウザに至るまでの経路上で、前記サーバから前記端末宛てに送信されたメッセージを取得し、ユーザインタフェースを拡張するルールが規定されたルールファイルと、前記ルールを解釈して実行するコードとを前記メッセージに追加する追加部と、
    前記追加部によって追加されたコードを前記ブラウザ上で実行して、前記ルールファイルを解釈し、該ルールファイルに基づいて、前記ブラウザによって表示される画面上のユーザインタフェース機能を拡張する実行部と
    を備えることを特徴とする機能拡張システム。
  2. 前記追加部は、アプリケーションの変化を検知するコードと、前記アプリケーションの変化に応じて前記ルールを解釈して実行するコードとをさらに前記メッセージに追加し、
    前記実行部は、前記追加部によって追加された各コードを前記ブラウザ上で実行し、アプリケーションの変化を検知した場合には、該変化に応じて前記ルールファイルを再度解釈して、前記ユーザインタフェース機能を拡張することを特徴とする請求項1に記載の機能拡張システム。
  3. 前記実行部は、監視すべきイベントを指定するリストと監視すべきでないイベントを指定するリストを参照し、監視すべきイベントを指定するリストに記載されたイベントによりアプリケーションの変化を検知した場合に該変化に応じて前記ルールファイルを再度解釈して、前記ユーザインタフェース機能を拡張することを特徴とする請求項2に記載の機能拡張システム。
  4. 前記実行部は、予め決められたファイル以外の情報を、予め決められた外部サイト以外へ前記ブラウザが送信することを中止することを特徴とする請求項1に記載の機能拡張システム。
  5. ブラウザを動作させる端末と、該端末と通信を行うサーバとを有する機能拡張システムによって実行される機能拡張方法であって、
    前記サーバから前記ブラウザに至るまでの経路上で、前記サーバから前記端末宛てに送信されたメッセージを取得し、ユーザインタフェースを拡張するルールが規定されたルールファイルと、前記ルールを解釈して実行するコードとを前記メッセージに追加する追加工程と、
    前記追加工程によって追加されたコードを前記ブラウザ上で実行して、前記ルールファイルを解釈し、該ルールファイルに基づいて、前記ブラウザによって表示される画面上のユーザインタフェース機能を拡張する実行工程と
    を含んだことを特徴とする機能拡張方法。
  6. 端末と通信を行うサーバから前記端末上で動作するブラウザに至るまでの経路上で、前記サーバから前記端末宛てに送信されたメッセージを取得し、ユーザインタフェースを拡張するルールが規定されたルールファイルと、前記ルールを解釈して実行するコードとを前記メッセージに追加する追加ステップと、
    前記追加ステップによって追加されたコードを前記ブラウザ上で実行して、前記ルールファイルを解釈し、該ルールファイルに基づいて、前記ブラウザによって表示される画面上のユーザインタフェース機能を拡張する実行ステップと
    をコンピュータに実行させることを特徴とする機能拡張プログラム。
JP2016127985A 2016-06-28 2016-06-28 機能拡張システム、機能拡張方法および機能拡張プログラム Active JP6557184B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016127985A JP6557184B2 (ja) 2016-06-28 2016-06-28 機能拡張システム、機能拡張方法および機能拡張プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016127985A JP6557184B2 (ja) 2016-06-28 2016-06-28 機能拡張システム、機能拡張方法および機能拡張プログラム

Publications (2)

Publication Number Publication Date
JP2018005344A true JP2018005344A (ja) 2018-01-11
JP6557184B2 JP6557184B2 (ja) 2019-08-07

Family

ID=60947931

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016127985A Active JP6557184B2 (ja) 2016-06-28 2016-06-28 機能拡張システム、機能拡張方法および機能拡張プログラム

Country Status (1)

Country Link
JP (1) JP6557184B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10037823B2 (en) 2010-05-11 2018-07-31 Thorium Power, Inc. Fuel assembly
CN111381898A (zh) * 2018-12-28 2020-07-07 北京字节跳动网络技术有限公司 一种接口调用方法、装置、移动终端及存储介质
JP2020123268A (ja) * 2019-01-31 2020-08-13 日本電信電話株式会社 デバッグ支援システムおよびデバッグ支援方法
JPWO2021070293A1 (ja) * 2019-10-09 2021-04-15
WO2022030025A1 (ja) * 2020-08-07 2022-02-10 日本電信電話株式会社 表示制御装置、表示制御方法および表示制御プログラム
WO2023238261A1 (ja) * 2022-06-07 2023-12-14 日本電信電話株式会社 表示制御装置、表示制御方法、および、表示制御プログラム

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005031995A (ja) * 2003-07-14 2005-02-03 Canon Inc ユーザインタフェース制御装置及びその方法
JP2011113297A (ja) * 2009-11-26 2011-06-09 Canon Inc ページ上に注釈情報を追加可能とする中継サーバ
JP2014186510A (ja) * 2013-03-22 2014-10-02 Yahoo Japan Corp 端末装置、表示方法、表示制御プログラム及びサーバ装置
JP2015138541A (ja) * 2014-01-26 2015-07-30 UiMaker株式会社 ウェブ・コンテンツ生成システム
WO2016056054A1 (ja) * 2014-10-06 2016-04-14 株式会社シンメトリック Webページの表示のためのプログラム、端末装置、およびサーバ装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005031995A (ja) * 2003-07-14 2005-02-03 Canon Inc ユーザインタフェース制御装置及びその方法
JP2011113297A (ja) * 2009-11-26 2011-06-09 Canon Inc ページ上に注釈情報を追加可能とする中継サーバ
JP2014186510A (ja) * 2013-03-22 2014-10-02 Yahoo Japan Corp 端末装置、表示方法、表示制御プログラム及びサーバ装置
JP2015138541A (ja) * 2014-01-26 2015-07-30 UiMaker株式会社 ウェブ・コンテンツ生成システム
WO2016056054A1 (ja) * 2014-10-06 2016-04-14 株式会社シンメトリック Webページの表示のためのプログラム、端末装置、およびサーバ装置

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10037823B2 (en) 2010-05-11 2018-07-31 Thorium Power, Inc. Fuel assembly
CN111381898A (zh) * 2018-12-28 2020-07-07 北京字节跳动网络技术有限公司 一种接口调用方法、装置、移动终端及存储介质
CN111381898B (zh) * 2018-12-28 2023-12-22 北京字节跳动网络技术有限公司 一种接口调用方法、装置、移动终端及存储介质
JP2020123268A (ja) * 2019-01-31 2020-08-13 日本電信電話株式会社 デバッグ支援システムおよびデバッグ支援方法
JP7115342B2 (ja) 2019-01-31 2022-08-09 日本電信電話株式会社 デバッグ支援システムおよびデバッグ支援方法
JPWO2021070293A1 (ja) * 2019-10-09 2021-04-15
WO2021070293A1 (ja) * 2019-10-09 2021-04-15 日本電信電話株式会社 情報連携システムおよび情報連携方法
JP7201098B2 (ja) 2019-10-09 2023-01-10 日本電信電話株式会社 情報連携システムおよび情報連携方法
WO2022030025A1 (ja) * 2020-08-07 2022-02-10 日本電信電話株式会社 表示制御装置、表示制御方法および表示制御プログラム
JP7444262B2 (ja) 2020-08-07 2024-03-06 日本電信電話株式会社 表示制御装置、表示制御方法および表示制御プログラム
WO2023238261A1 (ja) * 2022-06-07 2023-12-14 日本電信電話株式会社 表示制御装置、表示制御方法、および、表示制御プログラム

Also Published As

Publication number Publication date
JP6557184B2 (ja) 2019-08-07

Similar Documents

Publication Publication Date Title
JP6557184B2 (ja) 機能拡張システム、機能拡張方法および機能拡張プログラム
US9418218B2 (en) Dynamic rendering of a document object model
EP3522034B1 (en) Third party application communication api
CN105940654B (zh) 特权静态被托管的web应用
US20140129920A1 (en) Enhanced Document and Event Mirroring for Accessing Internet Content
RU2459238C2 (ru) Управляемая среда выполнения для организации взаимодействия между программными приложениями
JP2008299414A (ja) コンテンツ処理システム、方法及びプログラム
US10333991B2 (en) Web browser policy for HTTP-based application
KR20100112123A (ko) 안전하고 확장 가능한 정책 기반 애플리케이션 플랫폼
JP2011504256A (ja) 安全で構成可能なアプリケーションのための言語フレームワーク及び基盤
JP2008140194A (ja) コンピュータ用アプリケーション・プログラムの作成システム、方法、及びプログラム
EP2272003A2 (en) Component-oriented architecture for web mashups
US20070169065A1 (en) Computer program with metadata management function
US8904492B2 (en) Method of controlling information processing system, computer-readable recording medium storing program for controlling apparatus
EP2642718A2 (en) Dynamic rendering of a document object model
US11586726B2 (en) Secure web framework
Bao et al. Cross-site scripting attacks on android hybrid applications
US10664648B2 (en) Webpage rendering using a remotely generated layout node tree
Salminen et al. Developing client-side mashups: experiences, guidelines and the road ahead
US11314834B2 (en) Delayed encoding of resource identifiers
US20230367892A1 (en) Secure embedded web browser
JP2013125497A (ja) 情報処理装置、情報処理方法およびプログラム
Břoušek Evaluation and usage of Google Progressive Web Apps technology
KR20100106872A (ko) 웹 서비스 시스템 및 하이퍼 텍스트 마크업 언어로 제작된 웹페이지에 다양한 형식의 서브 웹페이지를 하이퍼 링크시키는 방법
Carneiro Platform to manage cookies

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180607

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190403

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190416

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190614

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190711

R150 Certificate of patent or registration of utility model

Ref document number: 6557184

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150