JPWO2008126796A1 - サービス・プログラムを生成する技術 - Google Patents

サービス・プログラムを生成する技術 Download PDF

Info

Publication number
JPWO2008126796A1
JPWO2008126796A1 JP2009509327A JP2009509327A JPWO2008126796A1 JP WO2008126796 A1 JPWO2008126796 A1 JP WO2008126796A1 JP 2009509327 A JP2009509327 A JP 2009509327A JP 2009509327 A JP2009509327 A JP 2009509327A JP WO2008126796 A1 JPWO2008126796 A1 JP WO2008126796A1
Authority
JP
Japan
Prior art keywords
history
input
web browser
unit
storage 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
JP2009509327A
Other languages
English (en)
Other versions
JP5089684B2 (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.)
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 JP2009509327A priority Critical patent/JP5089684B2/ja
Publication of JPWO2008126796A1 publication Critical patent/JPWO2008126796A1/ja
Application granted granted Critical
Publication of JP5089684B2 publication Critical patent/JP5089684B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Transfer Between Computers (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】ウェブサーバが提供する2以上のサービスをユーザが自由に組み合わせて新たなサービスを作成できるようにする。【解決手段】ユーザがウェブ・ブラウザを操作した履歴を取得して記憶装置に格納する履歴取得部と、記憶装置にアクセスして、ウェブページにパラメータを入力する第1操作の履歴、および、第1操作よりも操作順序が後の他の第2操作の履歴を検索する検索部と、ユーザがウェブ・ブラウザを操作することで提供を受けたサービスを提供するサービス・プログラムを生成して記憶装置に格納する生成部とを備え、サービス・プログラムは、第1操作により入力されたパラメータに代えてウェブページに入力するべき新たなパラメータの入力を受け付ける入力受付部、この新たなパラメータの入力に応じて、この新たなパラメータをウェブページに入力する処理、および、第2操作に予め対応付けられた処理をウェブ・ブラウザに対してこの順に順次行う処理部としてコンピュータを機能させるシステムを提供する。

Description

本発明は、ユーザの操作を代行するプログラムを生成する技術に関する。特に、本発明は、ウェブ・ブラウザに対する操作を代行するプログラムを生成する技術に関する。
近年、ウェブサーバにより提供されるサービスを組み合わせて新たなサービスを作成するマッシュアップという考え方が注目されている。マッシュアップを実現するためには、ウェブサーバで動作する様々なプログラムを呼び出すためのAPIが公開されていることが前提となる。APIが公開されていれば、プログラマは、様々なAPIを自由な順序や条件で呼び出すような新たなプログラムを作成することで、既に提供されているサービスを組み合わせて新たなサービスを作成できる。
特許文献1については後述する。
特開2004−272871号公報 「Selenium Recorderの使用方法」、ホームページURL「http://seleniumrecorder.mozdev.org/index-ja.html」、2007年4月2日検索
しかしながら、マッシュアップのためのAPIは、一部のウェブサーバにより試験的に公開されているに過ぎず、プログラマがインターネット上で提供されるサービスを自由に組み合わせることができるとは言い難い。また、公開されていたとしても、新たなプログラムの作成はある程度熟練したプログラマでなければ困難であり、一般ユーザが手軽に実現できるものではない。
一方、近年、多様なサービスがウェブページ上で提供されるようになってきており、その利用の仕方もユーザによって様々である。このため、一般ユーザといえども複数のサービスを自由に組み合わせて新たなサービスを生成することで利便性を向上させることができると考えられる。例えば、情報提供用のウェブページから株価の情報を取得し、その株価から株式発注の指値を自動的に決定して、証券会社のウェブページにおいてその指値で株式を自動的に注文するようなプログラムを、一般ユーザが手軽に作成できれば、ユーザの利便性は大幅に向上する。
参考技術として上記特許文献1を挙げる。この技術は、本来は端末装置のウェブ・ブラウザからウェブサーバに対し送信されるであろうHTTPリクエストを、ウェブ・ブラウザに代わって送信するソフトウェアに関するものである。しかしながら、このソフトウェアはウェブ・ブラウザそのものではない以上、現在公開されている高度なウェブページにおいては様々な課題が生じ得る。
第1にセッションを適切に維持管理する点である。高度なウェブページにおいては、複数のHTTPリクエストを一連のセッションとして管理するため、HTTPリクエストには前回に受け取ったHTTPレスポンスに含まれていたセッションIDを含めて送信する必要がある。しかしながら、この文献にはそのような機能については記載も示唆もされていない。
第2に動的に変化するウェブページに関する点である。高度なウェブページはHTTPリクエストを受信する毎にその構造を大きく変化させる場合がある。しかしながら、この文献にはそのように変化するウェブページに対し、その変化に追従して適切なHTTPリクエストを送信することについては記載も示唆もされていない。
また、他の参考技術として、ブラウザ上で行った操作をウィンドウに記録してゆくソフトウェアが提案されている(非特許文献1を参照。)。ウィンドウに記録されたテストケースは、Play ボタンを押すと再生される。また、ウィンドウ内でテストケースの編集・保存・ロードが可能である。この技術は、ウェブ・アプリケーションのテストを目的としたものである。したがって、この技術では、このような操作の履歴に基づいて、ユーザが再利用可能なプログラムを作成することはできない。
そこで本発明は、上記の課題を解決することのできるシステム、方法およびプログラムを提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
上記課題を解決するために、本発明の一側面においては、サービス・プログラムを生成するためのシステムであって、記憶装置と、ユーザがウェブ・ブラウザを操作した履歴を取得して記憶装置に格納する履歴取得部と、記憶装置にアクセスして、ウェブページにパラメータを入力する第1操作の履歴、および、第1操作よりも操作順序が後の他の第2操作の履歴を検索する検索部と、ユーザがウェブ・ブラウザを操作することで提供を受けたサービスを提供するサービス・プログラムを生成して記憶装置に格納する生成部とを備え、サービス・プログラムは、第1操作により入力されたパラメータに代えてウェブページに入力するべき新たなパラメータの入力を受け付ける入力受付部、この新たなパラメータの入力に応じて、この新たなパラメータをウェブページに入力する処理、および、第2操作に予め対応付けられた処理をウェブ・ブラウザに対してこの順に順次行う処理部としてコンピュータを機能させるシステム、当該システムとしてコンピュータを機能させるプログラム、および方法を提供する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、情報システム10の全体構成を示す。情報システム10は、クライアント・コンピュータ100と、サーバ・コンピュータ200と、通信回線300と、プロキシ・サーバ400と、ウェブサイト602−604を実現する複数のウェブサーバとを備える。クライアント・コンピュータ100は、インターネット500などの通信回線により複数のウェブサーバに接続されている。これらのウェブサーバでは、ウェブサイト602、ウェブサイト604およびウェブサイト606などのウェブサイトが運営されている。クライアント・コンピュータ100は、ウェブ・ブラウザ102を動作させており、ユーザの操作に応じてこれらのウェブサイトにアクセスする。このアクセスには、記憶装置であるハードディスクドライブ104や通信インターフェイス106が用いられる。さらに、通信の効率化や情報セキュリティのため、クライアント・コンピュータ100およびインターネット500間にプロキシ・サーバ400が設けられていてもよい。なお、ここでは主要なハードウェア資源のみを示しているから、更に詳細なハードウェア構成については後に説明する図25を参照されたい。
また、クライアント・コンピュータ100は、例えばローカル・エリア・ネットワークなどである通信回線300によりサーバ・コンピュータ200に接続されている。そして、クライアント・コンピュータ100は、ユーザの指示に基づき生成した各種のデータをサーバ・コンピュータ200に格納し、または、他のユーザが作成した各種のデータをサーバ・コンピュータ200から読み出す。データの格納や読み出しの機能を実現するために、サーバ・コンピュータ200ではウェブ・アプリケーション・サーバ202が動作している。ウェブ・アプリケーション・サーバ202は、記憶装置であるハードディスクドライブ204や通信インターフェイス206と協働して、クライアント・コンピュータ100に対するデータの提供などを行う。
本実施形態に係る情報システム10は、ウェブサイト602−604で提供される様々なサービスを組み合わせて新たなサービスを提供するためのプログラムを、一般ユーザが手軽に作成できるように支援することを目的とする。
図2は、情報システム10がユーザの操作に応じて行う処理の全体の流れを示す。ユーザがウェブ・ブラウザ102を操作すると(S10)、クライアント・コンピュータ100はその操作の履歴をハードディスクドライブ104に格納する。また、ユーザはその操作により1以上のウェブサイトから2以上のサービスを受ける。具体的には、クライアント・コンピュータ100は、ユーザの操作に応じてウェブサイト602−604にHTTPリクエストを送信し、ウェブサイト602−604からHTTPレスポンスの返信を受ける(S12)。クライアント・コンピュータ100は、ユーザがウェブ・ブラウザ102を操作した履歴に基づき、ユーザがウェブ・ブラウザを操作することで提供を受けたサービスを提供するサービス・プログラムを生成する。実際に生成されるのはサービス・プログラム自体でなくとも良く、それを変換することでサービス・プログラムを生成可能なサービス定義であってよい。そして、クライアント・コンピュータ100は、そのプログラムを定義するための情報であるサービス定義をサーバ・コンピュータ200に送信する。
次に、ユーザがウェブ・ブラウザ102を操作して複数のサービス・プログラムを組み合わせる作業を行う(S20)。この結果、複数のサービス定義がサーバ・コンピュータ200からクライアント・コンピュータ100に読み込まれて組み合わされ、1つのアプリケーション・プログラムが作成される。ユーザは、このアプリケーション・プログラムが表示する入力欄に対しパラメータを入力する(30)。これを受けてクライアント・コンピュータ100は、ウェブサイト602−606との間でHTTPリクエストおよびHTTPレスポンスの送受信を自律的に行って(S32)、その結果をユーザに表示する(S35)。
図3は、図2のS10−S15の詳細を示す。ユーザがウェブ・ブラウザ102を操作すると、ウェブ・ブラウザ102内部の処理としてその操作に予め対応付けられたイベントが発生する。たとえば、ユーザがある領域をポインティング・デバイスでクリックすると、クリックされたことを示すイベントが発生する。ウェブ・ブラウザ102は、クリックされた領域がハイパーリンクである場合や、ページ遷移をもたらすボタンである場合には、HTTPリクエストを送信する。送信先は例えばウェブサイト602である。ウェブ・ブラウザ102は、HTTPレスポンスを受信して、それに基づいてユーザに画面を表示する。
ユーザによる次の操作が入力操作の場合には、その入力操作に予め対応付けられたイベントが発生する。この場合も、必要に応じて入力されたパラメータがHTTPリクエストとしてウェブサイト606等を運営するウェブサーバに送信される。このように、ユーザが操作する毎にクライアント・コンピュータ100においては内部でイベントが発生し、必要に応じてHTTPリクエストが送信される。HTTPリクエストが送信されない場合であっても、ウェブ・ブラウザ102に読み込まれて動作するプログラム(例えばJavaScriptなどのページ更新機能をサポートする言語で記述されたプログラムなど)によりウェブ・ブラウザ102に表示されたウェブページが自動的に更新される場合もある(図中のDOM操作)。
ユーザは一連の操作を終えた後に、ウェブ・ブラウザ102を操作して表示されたウェブページの中から、任意に表示オブジェクトを指定する。そして、クライアント・コンピュータ100は、ユーザがウェブ・ブラウザ102を操作した履歴に、指定されたこの表示オブジェクトのウェブページ中における配置を対応付けてハードディスクドライブ104に格納する。履歴の取得およびその格納は、例えば、ウェブ・ブラウザに設けられたプラグイン・プログラムによって実現されてよい。そして、クライアント・コンピュータ100は、この履歴に基づいて動作するサービス・プログラムを生成して、その定義を示す情報であるサービス定義をサーバ・コンピュータ200に送信する。
図4は、図2のS25−S32の詳細を示す。サービス・プログラムは、上述のようにユーザにより作成されて、あるいは、サーバ・コンピュータ200から読み込まれた他のサービス・プログラムと組み合わされて(S25)アプリケーション・プログラムとして動作している。このアプリケーション・プログラムは、ウェブ・ブラウザ102のプラグイン・プログラムとして動作しており、ユーザに対し入力欄を表示している。ユーザがこの入力欄にパラメータを入力すると(S30)、アプリケーション・プログラムは、履歴取得時に発生していたイベントをその発生順に順次発生させる。ウェブ・ブラウザ102は、イベントの発生に応じて必要な場合にはHTTPリクエストを送信する(S32)。
そして、サービス・プログラムはイベントの発生を終えると、履歴取得時にユーザに指定された表示オブジェクトを、そのイベント発生後のウェブ・ブラウザの画面中から選択してユーザに出力する(S35)。
このように、クライアント・コンピュータ100は、新たなパラメータの入力に応じてユーザの操作履歴に基づき動作し、なおかつその結果を画面から選択して出力するプログラムを生成することで、ユーザの操作を代行して複数のサービスを組み合わせることができる。以下、この機能の詳細について説明する。
図5は、クライアント・コンピュータ100の機能を機能ブロックにより示す。クライアント・コンピュータ100は、記憶装置505と、履歴取得部510と、表示部520と、パラメータ設定部530と、オブジェクト選択部540と、検索部550と、生成部560と、入力受付部570と、処理部580とを備える。これらの各部材は、ウェブ・ブラウザ102のプラグイン・プログラムが、後述の図25に示すハードウェア資源と協働することで実現される。記憶装置505は、後述のハードディスクドライブ1040もしくはRAM1020により実現され、ユーザの操作履歴を記憶するために設けられている。履歴取得部510は、ユーザがウェブ・ブラウザ102を操作して1以上のウェブサイトから2以上のサービスを受けた履歴を取得して、記憶装置505に格納する。
表示部520は、ユーザが操作するウェブ・ブラウザである第1画面、および、記憶装置505に格納された操作の一覧を表示する第2画面を表示する。パラメータ設定部530は、履歴として取得された操作のうち、ユーザがウェブページにパラメータを入力する操作について、履歴として取得されたパラメータを処理部580による処理に用いるか否かをユーザの指示に基づき設定する。この指示は、第2画面に表示した履歴に対する、ポインティング・デバイスのクリック操作であってもよい。そして、パラメータ設定部530は、この設定結果を記憶装置505に格納する。
オブジェクト選択部540は、ユーザが操作したウェブ・ブラウザ102に表示されたウェブページの中から、ユーザの指示に基づいて表示オブジェクトを選択し、その表示オブジェクトのウェブページ中における配置を操作の履歴に対応付けて記憶装置505に格納する。検索部550は、記憶装置505にアクセスして、ウェブページにパラメータを入力する第1操作の履歴、および、その第1操作よりも操作順序が後の他の第2操作の履歴を検索する。生成部560は、クライアント・コンピュータ100を後述の入力受付部570および処理部580として機能させるサービス・プログラムを生成する。サービス・プログラムそれ自体、または、サービス・プログラムを定義する情報はサーバ・コンピュータ200に出力されてもよいし、他のサービス・プログラムを定義する情報がクライアント・コンピュータ100に読み込まれて動作してもよい。サービス・プログラムを定義する情報についてはサービス定義50として後にその一例を説明する。
入力受付部570は、ユーザの指示に応じて動作を開始する。そして、入力受付部570は、第1操作により入力されたパラメータに代えてウェブページに入力するべき新たなパラメータの入力をユーザから受け付ける。但し、新たなパラメータの入力を受け付ける第1操作は、履歴として取得されたパラメータを処理部580による処理に用いないと設定された第1操作に限られる。なお、入力受付部570は、この新たなパラメータの入力を、ユーザからではなく、他のプログラムから受け付けてもよい。即ち例えば、このサービス・プログラムは他のプログラムがパラメータを出力したことに応じて動作を開始し、入力受付部570はこのパラメータを受け取ってよい。そして、処理部580は、この新たなパラメータの入力に応じて、この新たなパラメータをウェブページに入力する処理、および、第2操作に予め定められた処理をウェブ・ブラウザに対してこの順に順次行う。これらの処理は、例えば、ウェブ・ブラウザ102がこれら各操作を受けたならば発生するイベントをウェブ・ブラウザ102において発生させることにより実現される。
図6は、記憶装置505のデータ構造の一例を示す。記憶装置505は、ユーザの各操作の履歴をレコードとしてその操作順に記憶している。各レコードは、操作の種類、操作対象の表示オブジェクトのウェブページ内における配置、および、入力されたパラメータを含む。例えば、ウェブ・ブラウザを新たに起動する操作については、操作の種類として「オープン」が、入力されたパラメータとしてウェブページのアドレスが履歴として記憶される。また、パラメータの入力操作については、操作の種類として「インプット」が、操作対象の表示オブジェクトの配置として「//input[@id=user]」が、入力されたパラメータとして「testuser」が、それぞれ履歴として記憶される。
表示オブジェクトの配置は、例えばXPath(XML Path Language)により表される。XPathの記法において、//はXML文書全体の任意の階層にある任意のタグを示す。そして//に続く文字列はタグ名を示す。また、@に続く文字列は属性名を示す。即ち、「//input[@id=user]」は、XML文書全体の任意の階層にあるinputというタグのうち、idという属性がuserというタグを示す。履歴取得部510は、このようなXPathの記述を、ユーザが行った操作の対象となった表示オブジェクトの配置を示す情報として取得して、記憶装置505に格納する。
記憶装置505は、さらに、ユーザがパラメータを入力したウェブページにおいてそのパラメータを入力する入力欄をユーザに識別させるために付されたラベルを、ユーザの入力操作の履歴に含めて格納してもよい。このラベルは、例えば、ユーザが何を入力すればよいか分かり易くするために、入力欄の隣に表示される文字列である。たとえば、ある入力欄の隣に「株数」という文字列が表示され、その入力欄に数値200が入力された場合には、操作の種類、操作対象となった表示オブジェクトの配置、および、パラメータ「200」に更に対応付けて、ラベル「株数」が格納される。
さらに、記憶装置505は、入力操作の履歴については、その操作により入力されたパラメータを処理部580による処理にそのまま用いるかどうかを設定した情報を記憶してよい。図中ではこの情報を「公開」というフィールド内のチェック印で示す。即ち、「公開」がチェックされた操作履歴については、その操作によって入力されたパラメータに代えて新たなパラメータの入力が求められる。一方、「公開」がチェックされなかった操作履歴については、その操作によって入力されたパラメータはそのまま処理部580による処理に用いられ、新たなパラメータの入力が求められないばかりかそのパラメータ自体も非公開となる。
また、記憶装置505は、操作の履歴に対応付けて、その操作を代行した結果として表示するべき表示オブジェクトの配置を示す情報を記憶してもよい。そのような配置を示す情報は、図中では「リファレンス」というエントリにより表される。即ち、ある「リファレンス」というエントリは、それよりも操作順序が先の各操作の履歴に対応付けられており、それらの操作を代行して表示されたウェブページから所望の表示オブジェクトを選択してユーザに表示することを示す。
次に、図7から図9を参照して、ユーザが履歴を編集する作業の一例と、それに関連する機能を説明する。
図7は、表示部520の第1表示例を示す。表示部520は、第1画面であるウェブ・ブラウザ102、および、第2画面である履歴表示画面108を表示する。ウェブ・ブラウザ102は既存のウェブ・ブラウザと同様である。即ち例えば、ウェブ・ブラウザ102は、「URL:」を付したアドレス入力フィールドに入力されたアドレスからファイルを読み込む。このファイルには、ウェブページとして表示する複数の表示オブジェクトについてそれらの配置をツリー構造で表したデータが格納されている。具体的には、このファイルは、HTML(Hyper Text Markup Language)またはXML(eXtensible Markup Language)などの、データを構造化して記述するための言語で記述されていてもよい。そして、ウェブ・ブラウザ102は、このファイルを読み込んで構文解析することで、それらの表示オブジェクトを含むウェブページを表示する。
一方、履歴表示画面108にはユーザがウェブ・ブラウザ102を操作した履歴が表示される。具体的には、履歴取得部510は、履歴表示画面108内の丸印のボタンがポインティング・デバイスなどによってクリックされると履歴の取得を開始する。履歴取得部510は、開始後にユーザがウェブ・ブラウザ102を操作した履歴を取得して記憶装置505に順次格納する。ユーザがウェブ・ブラウザ102を操作した履歴であれば、その操作が例えば複数のウェブサイトに渡って行われたものであっても、ひとまとまりの履歴として記憶装置505に格納される。格納された履歴は履歴表示画面108に表示される。履歴取得部510は、履歴表示画面108内の四角印のボタンがクリックされると履歴の取得を終了して、その結果をファイルに保存する。
ユーザは、履歴表示画面108上で履歴を自由に編集できる。例えば、ユーザは履歴表示画面108内である履歴をドラッグ・アンド・ドロップして、他の履歴との間の操作順序を入替えてもよい。また、ユーザはある履歴を削除してもよい。これらの操作を受けて、履歴取得部510は、記憶装置505内で履歴の記憶順序を入れ替え、または、記憶装置505から履歴を削除する。さらに、ユーザは履歴表示画面108の画面上で履歴に含めて記憶されたラベルを編集してもよい。さらに、パラメータ設定部530は、履歴として取得されたパラメータをそのまま処理部580による処理に用いるかどうかの設定を、この履歴表示画面108において受け付けてもよい。例えば、ユーザが履歴表示画面108に一覧表示されたある履歴をクリックする毎に、履歴として取得されたパラメータをそのまま処理部580による処理に用いる設定(即ち上述の「非公開」の設定)、および、新たなパラメータの入力を受け付ける設定(即ち上述の「公開」の設定)が交互に切り替わる。
図8は、表示部520の第2表示例を示す。ユーザがウェブ・ブラウザ102中の表示オブジェクトをクリックすると、ウェブ・ブラウザ102はコンテキストメニューを表示する。その中の「エレメントの参照追加」は、操作を代行した結果として表示する表示オブジェクトを履歴に関連付ける指示を示す。たとえば、ユーザが「95.19」という表示オブジェクトを選択して「エレメントの参照追加」を選択すると、オブジェクト選択部540は、この「95.19」という表示オブジェクトの配置を取得して、履歴表示画面108に表示されている履歴に関連付けて記憶装置505に格納する。この結果、処理部580は、関連付けられたその操作を代行して表示されたウェブページから、関連付けられたこの配置にある表示オブジェクトを選択して、関連付けられたその操作に対応する処理の結果として出力する。選択された表示オブジェクトは、ユーザに表示されてもよいし、他のプログラムに対し出力され、当該他のプログラムの入力として用いられてもよい。
関連付けの操作は、上記のようなコンテキストメニューからの選択で実現されてもよいが、その他にポインティング・デバイスのドラッグ・アンド・ドロップなどにより実現されてもよい。即ち例えば、オブジェクト選択部540は、「95.19」などの表示オブジェクトをドラッグして履歴表示画面108内の履歴にドロップする操作を受け付けると、その表示オブジェクトの配置を取得して、その履歴に対応付けて記憶装置505に格納してもよい。このように、ユーザが関連付けを指示できるような操作であればその種類は問わない。
表示オブジェクトが繰り返し要素の場合には、それらの表示要素を一括して配列として取得したい場合がある。以下、図9を参照して多数の表示オブジェクトを効率的に選択できるようにする機能を説明する。
図9は、表示部520の第3表示例を示す。ユーザが表示オブジェクトを指定して、コンテキストメニューの中で「繰り返し要素の追加」という項目を選択すると、これに関連する複数の表示オブジェクトがまとめて選択される。詳細には、オブジェクト選択部540は、ユーザに指定された表示オブジェクトに加えて、さらに、ウェブページを示すツリー構造のデータにおいてその表示オブジェクトと祖先の表示オブジェクトが共通する他の表示オブジェクトを選択する。
祖先の表示オブジェクトが複数の場合には、指定された表示オブジェクトに加えて選択する他の表示オブジェクトとして複数の候補が存在する。例えば、「//body/table[1]/tbody[1]/tr「1」/td[1]」というXPathで指定される表示オブジェクトが指定された場合において、文書のツリー構造においてその祖先には、「//body/table[1]/tbody[1]/tr[1]」という表示オブジェクトの他、「//body/table[1]/tbody[1]」や「//body/table[1]」などがある。(なお、XPathの記法において要素名に続くカッコは要素の出現順を示す。例えばtrという要素が複数配置される場合でもtr[2]と表記すればそのうちの2番目の要素を一意に指定することができる。)このため、どの祖先を共通とするかによって、他の表示オブジェクトとして複数の候補が存在する。
この場合、オブジェクト選択部540は、これら複数の候補のそれぞれについて、その表示オブジェクトの配置をコンテキストメニューに表示してもよい。たとえば、「//body/table[1]/tbody[1]/tr「1」/td」のようなXPathは、「//body/table[1]/tbody[1]/tr「1」」を祖先として共有する全てのtdタグを表している。オブジェクト選択部540は、このように複数のタグをリストとしてまとめて表すXPathを、選択の候補の1つとして表示してもよい。
さらに、オブジェクト選択部540は、以上のXPathの例に加えて、ユーザに対してどの表示オブジェクトが選択の候補となっているかを分かり易く示すために、選択の候補となっている各表示オブジェクトを枠で囲んでウェブ・ブラウザ102内に表示してもよい。たとえば、図9の画面の例においては、当初に指定された「95.19」という表示オブジェクトに加えて、「Feb.22」という表示オブジェクトと、「↓0.17」という表示オブジェクトの周囲に枠が表示されている。この時点でユーザがポインティング・デバイスのボタンから手を離すと、オブジェクト選択部540によりこれらの表示オブジェクトがまとめて選択される。
以上、図9に示す例によれば、ツリー構造において先祖を共通とする複数の表示オブジェクトがあり、それらの表示オブジェクトの個数が可変である場合でも、あらかじめそれらの表示オブジェクトを一括して指定することができる。また、一括して指定した表示オブジェクトの集合は、そのオブジェクトの数の出力データではなく、ひとまとまりの配列型の出力データとして処理の対象とすることができる。
図10は、サービス定義50の具体例を示す。サービス定義50は、ユーザの操作を代行するサービス・プログラムを定義する情報であり、そのサービス・プログラムが提供するサービスの名称の他、そのサービスの提供にあたりウェブ・ブラウザ102内部で発生させるべきイベントをその発生順に記録している。各イベントは、たとえば<step>という開始タグと</step>という終了タグの間の記述により定義される。具体例として第2行から第8行までの間には、ウェブ・ブラウザ102がクリック操作を受けたならば発生するイベントが定義されている。第3行の<action>タグは、イベントの種類「click」を示す。第4行の<target>タグは、イベントを発生させる対象となる表示オブジェクトを示す。第5行から第7行には入力されるパラメータやラベルなどが定義されるがこの例では未定義である。
また第9行から第15行までの間には、ウェブ・ブラウザ102がウェブページにパラメータを入力する操作を受けたならば発生するイベントが定義されている。第10行にはイベントの種類「type」が定義されており、第11行には入力の対象となる表示オブジェクトの配置が定義されている。また、第12行には入力されるパラメータが定義され、第13行には入力欄に対応付けて表示するべき文字列であるラベルが定義される。また、第14行にはこの入力欄を表示するべきかどうかが定義される。
各イベントは、ユーザがウェブ・ブラウザ102を操作した履歴に基づいて生成部560により生成される。例えば、生成部560は、ユーザがウェブ・ブラウザ102をクリックした履歴に基づいて、イベントの種類を「click」とするイベントの発生を定義して、サービス定義50に含めて記録する。また、生成部560は、ユーザがウェブ・ブラウザ102を操作してウェブページにパラメータを入力した履歴に基づいて、イベントの種類を「type」とするイベントの発生を定義して、サービス定義50に含めて記録する。これに加えて、クライアント・コンピュータ100はこのサービス定義50をテキストエディタなどで編集可能に管理していてもよい。これにより、プログラミングに熟練したユーザは履歴から作成したサービスを容易に改変して、より望ましい他のサービスを作成できる。
また、サービス定義50は、操作を代行した結果として表示する表示オブジェクトを定義する。例えば、オブジェクト選択部540がある配置の表示オブジェクトを操作代行の結果として表示する表示オブジェクトとして選択していた場合において、生成部560は、その配置の表示オブジェクトを操作代行の結果表示された表示オブジェクトから選択して出力するべきことを示すイベントの発生を定義する。具体的には、第16行から第22行において、イベントの種類「ref」が定義されている。このイベントは、第18行に示す<target>タグで指定された配置の表示オブジェクトをウェブページから選択することを示す。また、結果として表示される表示オブジェクトには、第20行で定義された「参照1」という文字列が対応付けて表示される。
以上に例示したサービス定義は、インタープリター型やコンパイラ型の言語処理系により、クライアント・コンピュータ100上で直接動作するサービス・プログラムに変換されて、クライアント・コンピュータ100により実行される。そしてこのサービス・プログラムは、クライアント・コンピュータ100を入力受付部570および処理部580として機能させる。このほかに、サービス定義はサーバ・コンピュータ200に送信されて蓄積されてもよいし、反対に、サーバ・コンピュータ200に蓄積された他のサービス定義がクライアント・コンピュータ100に読み込まれて実行されてもよい。
図11は、クライアント・コンピュータ100が操作履歴に基づきサービス・プログラムを生成する処理の流れを示す。履歴取得部510は、ユーザがウェブ・ブラウザ102を操作して1以上のウェブサイトから2以上のサービスを受けた履歴を取得して、記憶装置505に格納する(S1100)。たとえば、履歴取得部510は、ポインティング・デバイスのクリック操作、および、ポインティング・デバイスによりクリックされた表示オブジェクトの配置の組を履歴として取得してもよい。また、履歴取得部510は、パラメータの入力操作、入力先の表示オブジェクトの配置、および、入力されたパラメータの組を履歴として取得してもよい。この場合には履歴取得部510は、パラメータの入力欄に付されたラベルを更に取得してもよい。また、履歴取得部510は、ウェブ・ブラウザを起動する操作、および、起動したウェブ・ブラウザにおいて表示させるウェブページのアドレスの組を履歴として取得してもよい。さらには、履歴取得部510は、表示オブジェクトをドラッグ・アンド・ドロップする操作、および、ドラッグされる表示オブジェクトの識別情報、および、ドロップ先の表示オブジェクトの識別情報の組を履歴として取得してもよい。
表示部520は、記憶装置505に格納された操作の一覧を履歴表示画面108に表示する(S1110)。そして、クライアント・コンピュータ100は、履歴が示す操作の各種設定変更について操作を受け付ける(S1120)。たとえば、パラメータ設定部530は、履歴として取得された操作のうち、ユーザがウェブページにパラメータを入力する操作について、履歴として取得されたパラメータを処理部580による処理にそのまま用いるか否かをユーザの指示に基づき設定する。毎回同じパラメータを入力する操作について、そのままそのパラメータを用いる設定をすれば、操作代行のたびに毎回同じパラメータを入力する手間を省くことができる。また、履歴取得部510は、履歴の一部を追加又は削除する操作や、操作順序を入れ替える操作を受け付けてもよい。これにより、履歴取得中の操作ミスの履歴などを削除できるので、操作ミスをしても最初から履歴取得をやり直さなくても済み、利便である。また、履歴取得部510は、履歴に含めて取得したラベルを編集する操作を受け付けてもよい。これにより、後の利用時を想定してわかり易い表示を実現できる。
オブジェクト選択部540は、ユーザが操作したウェブ・ブラウザ102に表示されたウェブページの中から、ユーザの指示に基づいて表示オブジェクトを選択し、その表示オブジェクトのウェブページ中における配置を操作の履歴に対応付けて記憶装置505に格納する(S1130)。検索部550は、記憶装置505にアクセスして、ウェブページにパラメータを入力する第1操作の履歴、および、その第1操作よりも操作順序が後の他の第2操作の履歴を区別して検索する(S1140)。生成部560は、クライアント・コンピュータ100を後述の入力受付部570および処理部580として機能させるサービス・プログラムを生成する。
図12は、クライアント・コンピュータ100がサービス・プログラムに基づきユーザの操作を代行する処理の流れを示す。クライアント・コンピュータ100は、まず、ユーザの操作を代行する指示に応じてウェブ・ブラウザを起動する。このウェブ・ブラウザは処理部580による処理を実現するために便宜的に起動されるものであるから、ユーザには見えないように、または、見えにくいように設定されることが望ましい。そして、クライアント・コンピュータ100は、このウェブ・ブラウザに対し以下の処理を行う。入力受付部570は、履歴として取得されたパラメータを処理部580による処理に用いない設定がされた第1操作について、新たなパラメータの入力を受け付ける(S1200)。具体的には、入力受付部570は、この新たなパラメータを入力するための入力欄を表示すると共に、それに対応付けて、この第1操作の履歴に含めて取得されたラベルが示す文字列を表示してもよい。一方、入力受付部570は、履歴として取得されたパラメータを処理部580による処理に用いる設定がされた第1操作については、新たなパラメータの入力を受け付けない。
処理部580は、この新たなパラメータの入力に応じて、この新たなパラメータをウェブページに入力する処理と、この第1操作よりも操作順序が後の第2操作に予め定められた処理とをこの順に順次実行する(S1210)。これらの処理は、これらの各操作をウェブ・ブラウザ102が受けたならば発生するイベントを、ウェブ・ブラウザ102において発生させる指令を、ウェブ・ブラウザ102に対して送信することによって実現される。イベントの発生は、具体的には、イベントを発生させるAPI(Application Programming Interface)を、発生させるイベントの種類、入力するべきパラメータ、および、イベントを発生させる対象となる表示オブジェクトの配置などを引数として呼び出すことによって実現される。このAPIは、プラグイン・プログラムにより提供されるものであってもよいが、例えば、ウェブ・ブラウザ102やオペレーティングシステムにより提供されるものであってもよい。
個別の操作に対応する具体例は以下の通りである。履歴として取得されたパラメータを処理部580による処理に用いない設定がされた第1操作について、処理部580は、パラメータが入力されたならば発生するイベントの種類、入力先の表示オブジェクトの配置、および、入力された新たなパラメータを引数とし、ウェブ・ブラウザにおいてイベントを発生させるAPIを呼び出す。クリック操作について、処理部580は、ポインティング・デバイスによりクリックされた表示オブジェクトの配置、および、ポインティング・デバイスがクリックされたならば発生するイベントの種類を引数とし、ウェブ・ブラウザにおいてイベントを発生させるAPIを呼び出す。
また、履歴として取得されたパラメータを処理部580による処理に用いない設定がされた第1操作については、処理部580は、パラメータが入力されたならば発生するイベントの種類、入力先の表示オブジェクトの配置、および、履歴として格納したパラメータを引数とし、ウェブ・ブラウザにおいてイベントを発生させるAPIを呼び出す。また、ドラッグ・アンド・ドロップ操作について、処理部580は、ドラッグ・アンド・ドロップという操作を示す操作の種類、ドラッグされる表示オブジェクトの識別情報、および、ドロップ先の表示オブジェクトの識別情報を引数として、ウェブ・ブラウザにおいてイベントを発生させるAPIを呼び出す。さらに、ウェブ・ブラウザの起動操作について、処理部580は、ウェブページのアドレスを引数としてウェブ・ブラウザを起動するAPIを呼び出す。
そして、処理部580は、各操作に対応する処理を行ったウェブ・ブラウザに表示されたウェブページから、操作履歴に対応付けて格納された配置に対応する表示オブジェクトを選択して、ユーザの操作を代行した結果として表示する(S1220)。
図13は、操作履歴に基づく2つの動作例を対比して示す。図13左に示すように、入力操作の履歴が複数取得され、かつ、操作を代行した結果として表示するべき表示オブジェクトが複数設定される場合がある。この場合、検索部550は、まず、入力操作である第1操作1300を検出する。そして、検索部550は、それよりも後の操作順序であって、かつ、操作を代行した結果として表示するべき表示オブジェクトが設定された操作よりも後の次の入力操作よりも前の操作を第2操作1310として検出する。これに加えて、検索部550は、その後の入力操作である第3操作1320、および、それより操作順序が後の他の第4操作1330を検出する。そしてこの場合には、クライアント・コンピュータ100は、ユーザの指示に応じて、全てのパラメータが入力されてから一括して操作を代行する動作、または、一部のパラメータが入力される毎に操作の一部ずつを分割して代行する動作を選択的に行う。
一括して操作を代行する動作は以下の通りである。入力受付部570は、第1操作1300により入力されたパラメータに代えてウェブページに入力するべき新たなパラメータに加えて、さらに、第3操作1320により入力されたパラメータに代えてウェブページに入力するべき新たなパラメータの入力をユーザから受け付ける。これらのパラメータの入力に応じて、処理部580は、第1操作1300に対応する新たなパラメータをウェブページに入力する処理、第2操作1310に予め対応付けられた処理、第3操作1320に対応する新たなパラメータをウェブページに入力する処理、および、第4操作1330に予め対応付けられた処理をウェブ・ブラウザに対してこの順に順次行う。このように、一括して操作を代行する動作においては、全ての入力操作に対応する新たなパラメータが入力されることが動作開始の条件となる。
一部ずつを分割して代行する動作は以下の通りである。入力受付部570は、まず、第1操作1300により入力されたパラメータに代えてウェブページに入力するべき新たなパラメータの入力をユーザから受け付ける。そして、処理部580は、この新たなパラメータの入力に応じて、この新たなパラメータをウェブページに入力する処理、および、第2操作1310に予め対応付けられた処理をウェブ・ブラウザに対してこの順に順次行う。この時点で既に代行した操作に、操作の結果として表示するべき表示オブジェクトが設定されている場合には、処理部580は、操作を代行して表示したウェブ・ブラウザからその表示オブジェクトを選択してユーザに表示する。
次に、入力受付部570は、処理部580が第2操作1310に予め対応付けられた処理を行ったことに応じて、さらに、第3操作1320により入力されたパラメータに代えてウェブページに入力するべき新たなパラメータの入力をユーザから受け付ける。そして、処理部580は、この新たなパラメータの入力に応じて、この新たなパラメータをウェブページに入力する処理、および、第4操作1330に予め対応付けられた処理をウェブ・ブラウザに対してこの順に順次行う。このように、分割して操作を代行する動作においては、一部の入力操作に対応する新たなパラメータが入力されれば、それによって可能となる一部の操作に対応する処理が開始される。
操作代行の分割により、例えば以下のような応用が可能となる。ユーザは、株価の情報等を得るために、情報提供用のウェブページに対し第1操作1300により株式コードを入力する。その後に、ユーザは第2操作1310を経て目的の株価を表示させる。ユーザはそれを見て株式をどのような価格や方法で注文するかを判断する。そして、ユーザは株式の注文価格や方法を第3操作1320により証券会社のウェブページに入力する。第4操作1330を経て注文結果や約定結果がユーザに表示される。以上のような操作を代行する場合においては、ユーザの判断や株価の情報に関わらず普遍的な第2操作1310や第3操作1340は自動化したいが、ユーザの判断に基づく第1操作1300および第3操作は代行の都度新たなパラメータを入力させることが望ましい。更には、第4操作1330に対応して入力するパラメータ、例えば注文価格などは第2操作の結果に依存してユーザが決定するものである。操作代行の分割によれば、このようなユーザのニーズに応えて、ユーザの判断が必要な場面では操作代行を中断して新たなパラメータの入力を求めることができる。
以上、図1から図13を参照して、ユーザの操作を代行させるサービス・プログラムの作成を支援する処理機能について説明してきた。この処理機能によれば、一般ユーザが簡単な操作によって自己の操作を代行させるサービス・プログラムを作成することができる。そして、このサービス・プログラムはHTTPリクエストの代行ではなく操作の代行を実現するものであるから、近年一般的と成ってきた動的に構成を変化させるウェブページへの操作や、複数のウェブページに渡る操作を忠実に再現することができる。このような操作を再現するプログラムによれば、2以上のウェブサイトで提供される複数の既存サービスであってもそれらを組み合わせて新たなサービスを提供させることができる。
次に、他のサービスを提供可能とする例を図14−16を参照して説明する。 図14は、表示部520の他の表示例を示す。表示部520は、第1画面であるウェブ・ブラウザ102、および、第2画面である履歴表示画面108を表示する。ウェブ・ブラウザ102は、「URL:」を付したアドレス入力フィールドに入力されたアドレスからファイルを読み込んで表示する。この結果表示されたウェブ・サイトは、入力欄72に郵便番号が入力されると、その郵便番号に該当する都市を検索してその名称を文字列として表示するものである。
ユーザが入力欄72に郵便番号を入力すると、履歴表示画面108はその入力の操作の履歴を表示する。この履歴にラベルを対応付けるためには、ユーザは入力操作の直後に、ラベルを入力するための入力欄75にラベルを示す文字列を入力すればよい。これを受けて、履歴取得部510は、この履歴に対応付けてラベルを格納する。格納された結果は履歴表示画面108にも表示される。ここでは、ラベルとして入力欄72に入力した文字列「Zip」が履歴表示画面108に表示される。
図15は、表示部520の他の表示例を示す。ユーザが入力欄72に郵便番号を入力すると、ウェブサイトの機能により検索結果の都市名が表示される。この図の例では郵便番号「10001」に対応する都市名として「New York」が表示される。ユーザがこの都市名をポインティング・デバイスでクリックした後、右クリックすると、コンテキストメニュー82が表示される。その中の「エレメントの参照追加」をユーザが選択すると、ウェブページ中におけるこの「New York」という文字列の配置を示す情報が履歴取得部510により取得されて、履歴に対応付けて記憶装置505に格納される。
この時点でユーザが入力欄75にラベルを示す文字列を入力すると、ユーザの操作を代行した結果として表示される表示オブジェクトの配置に対応付けて、このラベルが記憶装置505に格納される。これは、ユーザの操作を代行したときに、その結果として表示する表示オブジェクトに対応付けて表示するために用いられる。入力欄75に入力されたラベルは、記憶装置505に格納されると共に履歴表示画面108にも表示される。この結果、都市名「New York」の配置には、ラベル「City」が対応付けられて格納される。また、同様の操作を州名である「NY」について行い、ラベルとして「State」を入力すれば、州名「NY」の配置にはラベル「State」が対応付けられて格納される。
図16は、表示部520の他の表示例を示す。ユーザは、このようにして履歴取得部510により取得されて記憶装置505に格納された履歴に、名称を付けることができる。この名称は、クライアント・コンピュータ100を入力受付部570および処理部580として動作させるプログラム、或いはこのプログラムの動作を定義する定義データの名称として用いられる。例えば、ユーザが入力欄90にラベル「City Search」を入力して、履歴をファイルとして保存する旨の操作をすると、プログラム或いは定義データにこのラベルが対応付けられて保存される。
次に、作成したこのサービス・プログラムを実行するためのインターフェイス、および、このサービス・プログラムを他のサービス・プログラムと組み合わせて実行させる処理機能について、図17から図28を参照して説明する。
図17は、サービス・プログラムを組み合わせてアプリケーション・プログラムを開発する環境と、それに関連する画面表示を示す。ウェブ・ブラウザ102の画面で、アプリケーション・プログラムを開発するためのURLが入力されると、ウェブ・アプリケーション・サーバ202によって、開発環境用のモジュールが、アプリケーション管理モジュール260から、クライアント・コンピュータ100にダウンロードされる。この結果、ウェブ・ブラウザ102には、図17に示すような画面が表示され、開発環境の使用が可能になる。
開発環境は、サービスモデル表示部162と、アプリケーション編集部164と、GUI部品表示部166と、サービスリスト表示部168と、データハブ170と、プロパティ編集部172、という複数の領域からなる。この実施例では、サービスモデル表示部162と、GUI部品表示部166とが、そこからGUI部品をアプリケーション編集部164に貼り付けることができる、パレット領域である。これらの領域は、この実施例では、タイル型に区分けされた領域であるが、個々の領域で互いに重畳を許す、マルチウインドウ表示方式で実装されてもよい。
GUI部品リスト表示部166は、詳細は図示しないが、ボタン、エディット領域、メモ、ラベル、コンボボックス、ラジオボタンなどの、GUI部品を表示し、そこから、アプリケーション編集部164に、GUI部品をドラッグ・アンド・ドロップ可能である。サービスリスト表示部168は、ウェブ・アプリケーション・サーバ202が備えるサービス管理部256により管理されるサービス・プログラムを、ハードディスクドライブ204から読み出してそのリストを表示する。このサービス・プログラムは、システム管理者がウェブサービスアクセスのために予め作成したものでもよい。また、このサービス・プログラムは、図1から図16を参照して説明した諸機能により作成されたサービス・プログラムであってもよい。
サービスモデル表示部162は、サービスリスト表示部168で選ばれているサービスの、トリガ(Trigger)要素として示された入力要素と、Outputとして示された出力要素を、階層的且つ図式的に表示する領域である。これらの表示された入力要素と、出力要素は、アプリケーション編集部164あるいは、後述するデータハブ170に、ドラッグ・アンド・ドロップ可能であり、また、アプリケーション編集部164あるいは、データハブ170から、ドラッグ・アンド・ドロップ可能である。
サービスの出力要素として、単なるテキスト文字列以外に、例えば、XMLで構造化されたリストをとることがあり得る。出力要素が単なるテキスト文字列である場合は、そこからデータハブ170にドラッグ・アンド・ドロップされたとき、データハブ170で占めるセルは、単一であるが、出力要素がリストである場合は、そこからデータハブ170にドラッグ・アンド・ドロップされたとき、データハブ170で、当該リストに含まれる文字列または数字の数のセルを占め、且つそのセルの各々に、リストに対応する文字列または数字が格納されることを理解されたい。
アプリケーション編集部164は、GUI部品リスト表示部166からGUI部品を、サービスモデル表示部162から、Trigger要素、入力要素あるいは出力要素を、それぞれ、ドラッグ・アンド・ドロップ可能である。このようにして作成された各種要素やGUI部品の定義は、複数のサービス・プログラムを組み合わせたアプリケーション・プログラムを定義するものとして、ウェブ・アプリケーション・サーバ202のアプリケーション管理部258により管理され、ハードディスクドライブ204などに格納される。
サービスモデル表示部162のTrigger要素は、アプリケーション編集部164に貼り付け、プログラムを実行させた状態でクリックすると、そのサービスに指定されたURLへのアクセスを開始させる。サービスモデル表示部162に表示されたサービスの入力要素とは、URLにアクセスする際に与えられるパラメータのことである。例えば、http://www.CitySearch.com/Search/CGI?&zipcode=98231のようなアクセスが行われるとき、zipcodeがパラメータ入力要素(以下、単にパラメータとも呼ぶ)であり、98231が、その内容である。http://www.CitySearch.com/Search/CGI?&zipcode=2428502&coutry=Japanのように、パラメータは、複数取りえる。なお、ウェブサービスは、必ず入力パラメータまたは要素をもつとは限らず、入力要素のないウェブサービスもあり得ることを理解されたい。例えば、単に現在のグリニッジ標準時を返すようなウェブサービスだと、パラメータは不要である。
一方、ウェブサイトにアクセスしたとき返されるデータは、HTMLであったり、XMLであったり、JavaScript言語の仕様の一部を利用した、比較的軽いデータ交換フォーマットである、JSON(JavaScript Object Notation)であったりする。このように、ウェブサイトにアクセスしたとき返されるデータは、構造化されたデータであり得るので、サービスモデル表示部162の出力要素として、ドラッグ・アンド・ドロップ可能な単位も、返されるXMLのリスト全体であったり、そのリストの一部であったり、と多様な形態を取りえる。
また、この実施例で、ウェブサイトまたはウェブサービスにアクセスされるときは、好適には、Ajaxと呼ばれる技術に基づく、XMLHttpRequestと呼ばれる、サーバとの非同期通信が利用される。この技術を利用することによって、画面の書き換えを迅速化し、且つデータ通信量を低減することができる。但し、通常のHTTPプロトコルのコマンドを利用するものであってもよい。
データ連携領域としてのデータハブ170は、好適には、スプレッドシート(表計算プログラムとも呼ばれる)の外観のインターフェイスをもつものであり、縦横に区分けされた区域からなる。これらの区域を、スプレッドシートプログラムの慣用に倣って、A1、A2、B1などの名前のセルと呼ぶことにする。各セルには、ユーザが値を入れることもできるし、アプリケーション編集部164に貼り付けられたGUI部品からドラッグ・アンド・ドロップ可能であるし、スプレッドシートでよく知られた形式の、=A1+B1や、=A1&","&B1のような計算式を入れることもできる。どのような式を許容するかは、JavaScriptなどを使用したプログラミングのコードに依存する。一方、それらの各セルを、逆に、アプリケーション編集部164に貼り付けられているGUI部品、あるいは、サービスモデル表示部162に表示されているサービスの入力要素を宛先として、ドラッグ・アンド・ドロップ可能である。すなわち、この実施例では、データハブ170は、上記のようなドラッグ・アンド・ドロップ、及びセル間の様々な計算機能を提供するように、JavaScriptの機能を利用して作り込まれている。
また、データハブ170には、ウェブサービスの出力要素として、XMLなどで記述されたリスト出力要素が貼り付けられることがあり、そのような場合、リスト出力要素がデータハブ170にドラッグ・アンド・ドロップされると、リストに含まれる要素の数だけのセルを、占めることになる。このように、リストからドラッグ・アンド・ドロップされた複数のセルに対しては、統計処理を行う必要性があり得るので、この実施例では、=SUM(A1..E1)のような合計関数、=AVERAGE(A1..E1)のような平均関数、=STDEVA(A1..E1)のような標準偏差関数、=MAX(A1..E1)のような最大関数、=MIN(A1..E1)のような最小関数などさまざまな統計関数も用意されている。このような数式処理のJavaScriptによる実装は、プログラミング技法として確立されたものなので、特に詳述しない。
また、データハブ170で、ユーザが数式を入力したセルは、一般的には、サービスモデル表示部162に表示されたサービスモデルの、入力要素、トリガ要素などにドラッグ・アンド・ドロップされて、関連付けられる。しかし、このような要素上ではなく、例えば、アプリケーション編集部164の空白領域に直接ドラッグ・アンド・ドロップすることによって、そこに、テキスト入力領域のGUI部品を自動的に貼り付け、そこに、ドラッグ・アンド・ドロップのもととなったデータハブ170のセルの値が関連付けられるように、図17のクライアント開発環境の機能を設定しておくこともできる。例えば、GUI部品リスト表示部166からアプリケーション編集部164の空白領域へのドラッグ・アンド・ドロップは、慣用的な技術によって、選択したGUI部品のアプリケーション編集部164上への配置をもたらす。従って、これと同様の技術を利用して、データハブ170のセルから、アプリケーション編集部164の空白領域へのドラッグ・アンド・ドロップが行われることに応答して、ドラッグ・アンド・ドロップされた箇所に、テキスト入力領域をあらわすGUI部品を貼り付け、続いて、そのテキスト入力領域に、ドラッグ・アンド・ドロップの元のデータハブ170のセルから、関連付けを行う、という処理が自動的に行われるように、クライアント開発環境に機能を付与することができる。
プロパティ編集部172は、一旦アプリケーション編集部164に貼り付けられ、マウスのクリックにより選択されたGUI部品またはサービスの入出力要素の、色、フォント、表示/非表示、Enable/Disableなどの属性を設定、あるいは変更するためのものである。
次に、アプリケーションの開発のための操作を、具体例で説明する。ここで、ユーザは、(1) CitySearchというサービス・プログラムに、zipcodeを入力することで、都市と州のデータを入手し、(2) その都市と州のデータを組み合わせて、MapCodeというサービス・プログラムにアクセスし、(3) その都市の緯度と経度を得る、というアプリケーション・プログラムを作成することを意図している。ただ、CitySearchは、都市と州のデータを個別に返すが、MapCodeは、都市と州とを組み合わせたデータを要求する。そのことを自動的に処理するために、本実施例の特徴が好適に利用される。
図18を参照すると、アプリケーションの新規開発の初期画面が示されている。この画面では、GUI部品リスト表示部166と、プロパティ編集部172は、以下の説明では関連性が薄いので、表示を省略していることに留意されたい。さて、この画面で、ユーザは、サービスリスト表示部168から、矢印1402で示すように、CitySearchを、サービスモデル表示部162に、ドラッグ・アンド・ドロップする。
すると、図19に示すように、サービスモデル表示部162に、CitySearchの入出力を含む構造が表示される。この構造は、システム管理者などによってCitySearchに対応して予め作成されたものであってもよい。また、サービス・プログラムが図1から図16を参照して説明した機能により作成された場合においては、サービス定義において「公開」に設定された入力パラメータがサービスモデル表示部162においてInput要素またはTrigger要素として表示される。また、サービス・プログラムを実行した結果として表示するべきとして設定された表示オブジェクトが、サービスモデル表示部162においてOutput要素として表示される。
ここで、図19で、サービスモデル表示部162から、CitySearchのtriggerを、矢印1502で示すようにアプリケーション編集部164にドラッグ・アンド・ドロップし、CitySearchのinput1を、矢印1504で示すようにアプリケーション編集部164にドラッグ・アンド・ドロップする。
すると、図20に示すように、triggerをドラッグ・アンド・ドロップした箇所は、「Go」という文字を含むボタン1602となり、input1をドラッグ・アンド・ドロップした箇所は、テキスト入力欄1604となる。
ここで、図21に示すように、テキスト入力欄1604に、10001というzipcodeを入れて、ボタン1602をクリックすると、ウェブ・アプリケーション・サーバ202を介して、CitySearchに、zipcode=10001というパラメータを以ってアクセスがはかられ、CitySearchは、<City>に、'New York'を、<State>に'NY'を返す。ここで、ユーザは、サービスモデル表示部162のCitySearchのOutputの<City>を矢印1702で示すように、データハブ170のセルA1にドラッグ・アンド・ドロップし、同様にOutputの<State>を矢印1704で示すように、データハブ170のセルB1にドラッグ・アンド・ドロップする。
すると、セルA1は<City>に、セルB1は<State>にそれぞれバインドされるので、図22に示すように、データハブ170のセルA1には、'New York'が表示され、セルB1には、'NY'が表示される。
そこで、ユーザは、データハブ170のセルC1に、文字列結合演算子&を用いて、=A1&','&B1と計算式を入れて改行キーを押す。すると、図23に示すように、その計算式が計算されて、セルC1には、'New York,NY'が表示される。なお、この実施例では、ここでの演算子の規則は、通常のスプレッドシートプログラムで慣用の形式になるように、JavaScriptを用いてコーディングされているが、=A1+','+B2のような、他のプログラミング言語で慣用の記法を許すようにすることもできる。また、文字列結合演算子以外にも、加算、減算、その他の数学的関数など、任意の演算を実現することができることが、この分野の当業者には明らかであろう。
さらに、この例では、セルA1とセルB1の両方に、ウェブサービスからのoutputをそれぞれ格納したが、一方のセルを、ユーザが直接セルに打ち込んだ文字列、あるいは、他セルへの参照を含む、計算式とするなど、さまざまな応用例が考えられる。
次に、図24に示すように、サービスリスト表示部168から、MapCodeを、サービスモデル表示部162の任意の領域に、矢印2002で示すように、ドラッグ・アンド・ドロップする。すると、図25に示すように、サービスモデル表示部162には、MapCodeの入出力を含む構造が表示される。この構造は、システム管理者によってMapCodeに対応して予め作成されている。
そこで、ユーザは、図25の画面で、データハブ170のセルC1を、矢印2102、2104で示すように、サービスモデル表示部162内部の、MapCodeのTriggerとInput1とにそれぞれ、ドラッグ・アンド・ドロップする。Input1だけでなく、Triggerにもドラッグ・アンド・ドロップする理由は、データハブ170のセルC1の値に変更に自動的に応答して、Input1をパラメータとして、MapCodeへのアクセスが行われるようにするためである。
なお、このとき、セルC1を直接、サービスリスト表示部168に表示されているMapCodeのInput1にドラッグ・アンド・ドロップする代わりに、MapCodeのInput1を、アプリケーション編集部164に一旦、ドラッグ・アンド・ドロップし、そのアプリケーション編集部164のドラッグ・アンド・ドロップした箇所に、セルC1をドラッグ・アンド・ドロップしてもよい。それでも、セルC1の値が、MapCodeのInput1に提供される、という意味では同じであるが、このようにしておくと、後で、アプリケーションを起動したときに、画面で、途中経過としてのMapCodeのInput1に提供された値を、ユーザが目で見ることができる。
実際、MapCodeのTriggerが、このドラッグ・アンド・ドロップ操作に応答して、何にも関連づけられていなかった状態から、関連付けられた状態に変化したことにより、MapCodeが、New York,NYというパラメータでアクセスされ、MapCodeは、ニューヨーク市の緯度と経度を、それぞれ、<latitude>=40.71, <longitude>=-75.59として返す。そこで、サービスモデル表示部162から、アプリケーション編集部164に、矢印2202、2204でそれぞれ示すように、MapCodeのoutputである、<latitude>及び<longitude>をドラッグ・アンド・ドロップすることにより、それらの値が、アプリケーション編集部164上で実際に見えるようになる。その様子を、図26で示す。
これで一応アプリケーションは完成であるが、図27に示すように、後は、ユーザは、適宜、アプリケーション・プログラムを分かりやすくするための説明の文字列2302、2304、2306を追加して、アプリケーション・プログラムをセーブする。このようにしてセーブされたアプリケーション・プログラムは、ユーザの指示に基づき起動して入力欄を表示し、パラメータの入力に応じてサービスの提供を開始する。
たとえば、入力受付部570は、まずCitySearchを提供するサービス・プログラムの働きかけにより動作を開始し、テキスト入力欄1604およびボタン1602を表示して、入力パラメータであるZipcodeを受け付ける。そして、このパラメータの入力を条件に、処理部580は、サービス定義に規定された各種のイベントをウェブ・ブラウザにおいて発生させる。この処理は、サービス・プログラムが操作履歴に基づき作成されたものである場合にはその操作の代行に相当する。そして、処理部580は、操作を代行した結果としてウェブ・ブラウザに表示されたウェブページから、予め設定された表示オブジェクトを選択して、操作を代行した結果として表示する。例えば、図27の例においては、テキスト入力欄2206およびテキスト入力欄2208にその結果が表示される。
以上、図17から図27を参照して説明した例によれば、ユーザによる直感的なGUI操作によって、サービス・プログラムを様々なGUI要素と組み合わせ、または、他のサービス・プログラムと組み合せて、アプリケーション・プログラムを作成することができる。このように、サービス・プログラムはそれ単独で動作しても複数のサービスを組み合わせることができるが、アプリケーション・プログラムの一部品として機能することで更に高度な処理を実現できる。
図28は、クライアント・コンピュータ100のハードウェア構成の一例を示す。クライアント・コンピュータ100は、ホストコントローラ1082により相互に接続されるCPU1000、RAM1020、及びグラフィックコントローラ1075を有するCPU周辺部と、入出力コントローラ1084によりホストコントローラ1082に接続される通信インターフェイス1030、ハードディスクドライブ1040、及びCD−ROMドライブ1060を有する入出力部と、入出力コントローラ1084に接続されるROM1010、フレキシブルディスクドライブ1050、及び入出力チップ1070を有するレガシー入出力部とを備える。
ホストコントローラ1082は、RAM1020と、高い転送レートでRAM1020をアクセスするCPU1000及びグラフィックコントローラ1075とを接続する。CPU1000は、ROM1010及びRAM1020に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ1075は、CPU1000等がRAM1020内に設けたフレームバッファ上に生成する画像データを取得し、表示装置1080上に表示させる。これに代えて、グラフィックコントローラ1075は、CPU1000等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
入出力コントローラ1084は、ホストコントローラ1082と、比較的高速な入出力装置である通信インターフェイス1030、ハードディスクドライブ1040、及びCD−ROMドライブ1060を接続する。通信インターフェイス1030は、ネットワークを介して外部の装置と通信する。ハードディスクドライブ1040は、クライアント・コンピュータ100が使用するプログラム及びデータを格納する。CD−ROMドライブ1060は、CD−ROM1095からプログラム又はデータを読み取り、RAM1020又はハードディスクドライブ1040に提供する。
また、入出力コントローラ1084には、ROM1010と、フレキシブルディスクドライブ1050や入出力チップ1070等の比較的低速な入出力装置とが接続される。ROM1010は、クライアント・コンピュータ100の起動時にCPU1000が実行するブートプログラムや、クライアント・コンピュータ100のハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ1050は、フレキシブルディスク1090からプログラム又はデータを読み取り、入出力チップ1070を介してRAM1020またはハードディスクドライブ1040に提供する。入出力チップ1070は、フレキシブルディスク1090や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
クライアント・コンピュータ100に提供されるプログラムは、フレキシブルディスク1090、CD−ROM1095、又はICカード等の記録媒体に格納されてユーザによって提供される。プログラムは、入出力チップ1070及び/又は入出力コントローラ1084を介して、記録媒体から読み出されクライアント・コンピュータ100にインストールされて実行される。プログラムがクライアント・コンピュータ100等に働きかけて行わせる動作は、図1から図27において説明したクライアント・コンピュータ100における動作と同一であるから、説明を省略する。
以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク1090、CD−ROM1095の他に、DVDやPD等の光学記録媒体、MD等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はRAM等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをクライアント・コンピュータ100に提供してもよい。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることのできることが当業者にとって明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
図1は、情報システム10の全体構成を示す。 図2は、情報システム10がユーザの操作に応じて行う処理の全体の流れを示す。 図3は、図2のS10−S15の詳細を示す。 図4は、図2のS25−S32の詳細を示す。 図5は、クライアント・コンピュータ100の機能を機能ブロックにより示す。 図6は、記憶装置505のデータ構造の一例を示す。 図7は、表示部520の第1表示例を示す。 図8は、表示部520の第2表示例を示す。 図9は、表示部520の第3表示例を示す。 図10は、サービス定義50の具体例を示す。 図11は、クライアント・コンピュータ100が操作履歴に基づきサービス・プログラムを生成する処理の流れを示す。 図12は、クライアント・コンピュータ100がサービス・プログラムに基づきユーザの操作を代行する処理の流れを示す。 図13は、操作履歴に基づく2つの動作例を対比して示す。 図14は、表示部520の他の表示例を示す。 図15は、表示部520の他の表示例を示す。 図16は、表示部520の他の表示例を示す。 図17は、サービス・プログラムを組み合わせてアプリケーション・プログラムを開発する環境と、それに関連する画面表示を示す。 図18は、アプリケーション・プログラムを開発する画面の具体例を示す。 図19は、アプリケーション・プログラムを開発する画面の具体例を示す。 図21は、アプリケーション・プログラムを開発する画面の具体例を示す。 図21は、アプリケーション・プログラムを開発する画面の具体例を示す。 図22は、アプリケーション・プログラムを開発する画面の具体例を示す。 図23は、アプリケーション・プログラムを開発する画面の具体例を示す。 図24は、アプリケーション・プログラムを開発する画面の具体例を示す。 図25は、アプリケーション・プログラムを開発する画面の具体例を示す。 図26は、アプリケーション・プログラムを開発する画面の具体例を示す。 図27は、アプリケーション・プログラムを開発する画面の具体例を示す。 図28は、クライアント・コンピュータ100のハードウェア構成の一例を示す。
符号の説明
10 情報システム
50 サービス定義
100 クライアント・コンピュータ
102 ウェブ・ブラウザ
104 ハードディスクドライブ
106 通信インターフェイス
108 履歴表示画面
162 サービスモデル表示部
164 アプリケーション編集部
166 GUI部品リスト表示部
168 サービスリスト表示部
170 データハブ
172 プロパティ編集部
200 サーバ・コンピュータ
202 ウェブ・アプリケーション・サーバ
204 ハードディスクドライブ
206 通信インターフェイス
256 サービス管理部
258 アプリケーション管理部
260 アプリケーション管理モジュール
300 通信回線
400 プロキシ・サーバ
500 インターネット
505 記憶装置
510 履歴取得部
520 表示部
530 パラメータ設定部
540 オブジェクト選択部
550 検索部
560 生成部
570 入力受付部
580 処理部
602 ウェブサイト
604 ウェブサイト
606 ウェブサイト
1300 第1操作
1310 第2操作
1320 第3操作
1330 第4操作
1402 矢印
1502 矢印
1504 矢印
1602 ボタン
1604 テキスト入力欄
1702 矢印
1704 矢印
2002 矢印
2102 矢印
2104 矢印
2202 矢印
2204 矢印
2206 テキスト入力欄
2208 テキスト入力欄
2302 文字列
2304 文字列
2306 文字列

Claims (23)

  1. サービス・プログラムを生成するためのシステムであって、
    記憶装置と、
    ユーザがウェブ・ブラウザを操作した履歴を取得して前記記憶装置に格納する履歴取得部と、
    前記記憶装置にアクセスして、ウェブページにパラメータを入力する第1操作の履歴、および、前記第1操作よりも操作順序が後の他の第2操作の履歴を検索する検索部と、 ユーザがウェブ・ブラウザを操作することで提供を受けたサービスを提供するサービス・プログラムを生成して前記記憶装置に格納する生成部とを備え、
    前記サービス・プログラムは、
    前記第1操作により入力されたパラメータに代えてウェブページに入力するべき新たなパラメータの入力を受け付ける入力受付部、
    この新たなパラメータの入力に応じて、この新たなパラメータをウェブページに入力する処理、および、前記第2操作に予め対応付けられた処理をウェブ・ブラウザに対してこの順に順次行う処理部
    としてコンピュータを機能させるシステム。
  2. 前記履歴取得部は、ユーザがウェブ・ブラウザを操作して1以上のウェブサイトから2以上のサービスを受けた履歴を格納し、
    前記生成部は、ユーザがウェブ・ブラウザを操作することで提供を受けた2以上のサービスを組み合わせて新たなサービスを提供するサービス・プログラムとして、コンピュータを前記入力受付部および前記処理部として機能させるプログラムを生成して前記記憶装置に格納する、請求項1に記載のシステム。
  3. 前記記憶装置に格納された前記第1操作の履歴について、履歴として取得されたパラメータを前記処理部による処理に用いるか否かをユーザの指示に基づき設定し、設定結果を前記記憶装置に格納するパラメータ設定部を更に備え、
    前記入力受付部は、履歴として取得されたパラメータを前記処理部による処理に用いない設定がされた第1操作について、新たなパラメータの入力を受け付け、
    前記処理部は、履歴として取得されたパラメータを前記処理部による処理に用いない設定がされた第1操作について、この新たなパラメータをウェブページに入力する処理を行い、履歴として取得されたパラメータを前記処理部による処理に用いる設定がされた第1操作については、その第1操作に予め対応付けられた処理をウェブ・ブラウザに対し行う 請求項1に記載のシステム。
  4. ユーザが操作したウェブ・ブラウザに表示されたウェブページの中から、ユーザの指示に基づいて表示オブジェクトを選択し、その表示オブジェクトのウェブページ中における配置を操作の履歴に対応付けて前記記憶装置に格納するオブジェクト選択部を更に備え、 前記処理部は、各操作に対応する処理を行ったウェブ・ブラウザに表示されたウェブページから、前記記憶装置に格納された配置に対応する表示オブジェクトを選択して、前記処理部による処理の結果として出力する
    請求項1に記載のシステム。
  5. ユーザが操作するウェブ・ブラウザである第1画面、および、前記記憶装置に格納された操作の履歴の一覧を表示する第2画面を表示する表示部を更に備え、
    前記オブジェクト選択部は、ユーザが第1画面中の表示オブジェクトを第2画面中の操作の履歴に関連付ける指示を受け付けることで、関連付けられたその操作に対応する処理の結果として表示されるウェブページから選択するべき表示オブジェクトを選択する
    請求項4に記載のシステム。
  6. 前記履歴取得部は、前記第1操作について、操作の種類、操作対象の表示オブジェクトのウェブページ内における配置、および、入力されたパラメータの組を、前記第1操作の履歴として格納し、
    前記処理部は、ウェブ・ブラウザを起動し、新たなパラメータの入力に応じて、このウェブ・ブラウザに表示された、前記第1操作の履歴として格納された配置に対応する表示オブジェクトに対し、履歴として格納されたパラメータに代えてこの新たなパラメータを入力する処理を行う
    請求項1に記載のシステム。
  7. 前記履歴取得部は、前記第1操作の履歴として、さらに、ユーザがパラメータを入力したウェブページにおいてそのパラメータを入力する入力欄をユーザに識別させるために付されたラベルを格納し、
    前記入力受付部は、前記第1操作の履歴として格納されたラベルを、新たなパラメータを入力させる入力欄に対応付けて表示することで、新たなパラメータの入力をユーザから受け付ける
    請求項6に記載のシステム。
  8. 前記処理部は、それぞれの操作について、その操作をウェブ・ブラウザが受けたならば発生するイベントを、ウェブ・ブラウザにおいて発生させる指令を発行する
    請求項1に記載のシステム。
  9. 前記履歴取得部は、ポインティング・デバイスのクリック操作、および、ポインティング・デバイスによりクリックされた表示オブジェクトの配置の組を履歴として格納し、
    前記処理部は、ポインティング・デバイスによりクリックされた表示オブジェクトの配置、および、ポインティング・デバイスがクリックされたならば発生するイベントの種類を引数とし、ウェブ・ブラウザにおいてイベントを発生させるAPIを呼び出す
    請求項8に記載のシステム。
  10. 前記履歴取得部は、パラメータの入力操作、入力先の表示オブジェクトの配置、および、入力されたパラメータの組を履歴として格納し、
    前記処理部は、パラメータが入力されたならば発生するイベントの種類、入力先の表示オブジェクトの配置、および、履歴として格納したパラメータ或いは新たに入力したパラメータを引数とし、ウェブ・ブラウザにおいてイベントを発生させるAPIを呼び出す
    請求項8に記載のシステム。
  11. 前記履歴取得部は、ウェブ・ブラウザを起動する操作、および、起動したウェブ・ブラウザにおいて表示させるウェブページのアドレスの組を履歴として格納し、
    前記処理部は、ウェブページのアドレスを引数としてウェブ・ブラウザを起動するAPIを呼び出す
    請求項8に記載のシステム。
  12. 前記履歴取得部は、表示オブジェクトをドラッグ・アンド・ドロップする操作、および、ドラッグされる表示オブジェクトの識別情報、および、ドロップ先の表示オブジェクトの識別情報の組を履歴として格納し、
    前記処理部は、ドラッグ・アンド・ドロップという操作を示す操作の種類、ドラッグされる表示オブジェクトの識別情報、および、ドロップ先の表示オブジェクトの識別情報を引数として、ウェブ・ブラウザにおいてイベントを発生させるAPIを呼び出す
    請求項8に記載のシステム。
  13. 前記処理部は、前記第1操作に対応して新たなパラメータをウェブページに入力する処理を行い、ユーザにより予め設定された待機時間が経過してから、前記第1操作に予め対応付けられた処理を行う
    請求項1に記載のシステム。
  14. ウェブ・ブラウザは、複数の表示オブジェクトについてそれらの配置をツリー構造のデータにより定義したファイルを読み込むことで、それらの表示オブジェクトを含むウェブページを表示し、
    前記オブジェクト選択部は、ユーザが操作したウェブ・ブラウザに表示されたウェブページの中から、ユーザに指定された表示オブジェクト、および、その表示オブジェクトと前記ツリー構造のデータにおいて祖先の表示オブジェクトが共通する他の表示オブジェクトを、前記処理部による処理の結果として表示する表示オブジェクトとして選択する
    請求項3に記載のシステム。
  15. 前記検索部は、さらに、前記第2操作より操作順序が後であり、ウェブページにパラメータを入力する第3操作の履歴、および、前記第3操作より操作順序が後の他の第4操作の履歴を検索し、
    前記入力受付部は、前記処理部が前記第2操作に予め対応付けられた処理を行ったことに応じて、さらに、前記第3操作により入力されたパラメータに代えてウェブページに入力するべき新たなパラメータの入力を受け付け、
    前記処理部は、この新たなパラメータの入力に応じて、この新たなパラメータをウェブページに入力する処理、および、前記第4操作に予め対応付けられた処理をウェブ・ブラウザに対してこの順に順次行う
    請求項1に記載のシステム。
  16. 前記検索部は、さらに、前記第2操作より操作順序が後であり、ウェブページにパラメータを入力する第3操作の履歴、および、前記第3操作より操作順序が後の他の第4操作の履歴を検索し、
    前記入力受付部は、前記第1操作により入力されたパラメータに代えてウェブページに入力するべき新たなパラメータに加えて、さらに、前記第3操作により入力されたパラメータに代えてウェブページに入力するべき新たなパラメータの入力を受け付け、
    前記処理部は、これらの新たなパラメータの入力に応じて、前記第1操作に対応する新たなパラメータをウェブページに入力する処理、前記第2操作に予め対応付けられた処理、前記第3操作に対応する新たなパラメータをウェブページに入力する処理、および、前記第4操作に予め対応付けられた処理をウェブ・ブラウザに対してこの順に順次行う
    請求項1に記載のシステム。
  17. サービス・プログラムを生成するための方法であって、
    コンピュータの履歴取得部が、ユーザがウェブ・ブラウザを操作した履歴を取得してコンピュータの記憶装置に格納するステップと、
    コンピュータの検索部が、前記記憶装置にアクセスして、ウェブページにパラメータを入力する第1操作の履歴、および、前記第1操作よりも操作順序が後の他の第2操作の履歴を検索するステップと、
    ユーザがウェブ・ブラウザを操作することで提供を受けたサービスを提供するサービス・プログラムを生成して前記記憶装置に格納するステップとを備え、
    前記サービス・プログラムは、
    前記第1操作により入力されたパラメータに代えてウェブページに入力するべき新たなパラメータの入力を受け付ける入力受付部、
    コンピュータの処理部が、この新たなパラメータの入力に応じて、この新たなパラメータをウェブページに入力する処理、および、前記第2操作に予め対応付けられた処理をウェブ・ブラウザに対してこの順に順次行う処理部、
    としてコンピュータを機能させる方法。
  18. サービス・プログラムを生成するためのプログラムであって、記憶装置を備えたコンピュータを
    ユーザがウェブ・ブラウザを操作した履歴を取得して前記記憶装置に格納する履歴取得部と、
    前記記憶装置にアクセスして、ウェブページにパラメータを入力する第1操作の履歴、および、前記第1操作よりも操作順序が後の他の第2操作の履歴を検索する検索部と、
    ユーザがウェブ・ブラウザを操作することで提供を受けたサービスを提供するサービス・プログラムを生成して前記記憶装置に格納する生成部と
    して機能させ、
    前記サービス・プログラムは、
    ユーザの指示に応じて、前記第1操作により入力されたパラメータに代えてウェブページに入力するべき新たなパラメータの入力を受け付ける入力受付部、
    この新たなパラメータの入力に応じて、この新たなパラメータをウェブページに入力する処理、および、前記第2操作に予め対応付けられた処理をウェブ・ブラウザに対してこの順に順次行う処理部
    としてコンピュータを機能させるプログラム。
  19. サービス・プログラムを生成するシステムであって、
    記憶装置と、
    ユーザがウェブ・ブラウザを操作した履歴を取得して前記記憶装置に格納する履歴取得部と、
    ユーザが操作したウェブ・ブラウザに表示されたウェブページの中から、ユーザの指示に基づいて表示オブジェクトを選択し、その表示オブジェクトのウェブページ中における配置を操作の履歴に対応付けて前記記憶装置に格納するオブジェクト選択部と、
    前記記憶装置にアクセスして、それぞれの操作の履歴を検索する検索部と、
    ユーザがウェブ・ブラウザを操作することで提供を受けたサービスを提供するサービス・プログラム生成して前記記憶装置に格納する生成部とを備え、
    前記サービス・プログラムは、
    検索した各操作に対応する処理をウェブ・ブラウザに対してその操作の順序で行い、各操作に対応する処理を行ったウェブ・ブラウザに表示されたウェブページから、前記記憶装置に格納された配置に対応する表示オブジェクトを選択して出力する処理部
    としてコンピュータを機能させる、システム。
  20. ユーザが操作するウェブ・ブラウザである第1画面、および、前記記憶装置に格納された操作の履歴の一覧を表示する第2画面を表示する表示部を更に備え、
    前記オブジェクト選択部は、ユーザが第1画面中の表示オブジェクトを第2画面中の操作の履歴に関連付ける指示を受け付けることで、関連付けられたその操作に対応する処理の結果として表示されるウェブページから選択するべき表示オブジェクトを選択する
    請求項19に記載のシステム。
  21. 前記履歴取得部は、ユーザがウェブ・ブラウザを操作して1以上のウェブサイトから2以上のサービスを受けた履歴を格納し、
    前記生成部は、ユーザがウェブ・ブラウザを操作することで提供を受けた2以上のサービスを組み合わせて新たなサービスを提供するサービス・プログラムとして、コンピュータを前記処理部として機能させるプログラムを生成する、請求項19に記載のシステム。
  22. サービス・プログラムを生成するための方法であって、
    コンピュータの履歴取得部が、ユーザがウェブ・ブラウザを操作した履歴を取得して前記記憶装置に格納するステップと、
    コンピュータのオブジェクト選択部が、ユーザが操作したウェブ・ブラウザに表示されたウェブページの中から、ユーザの指示に基づいて表示オブジェクトを選択し、その表示オブジェクトのウェブページ中における配置を操作の履歴に対応付けて前記記憶装置に格納するステップと、
    コンピュータの検索部が、前記記憶装置にアクセスして、それぞれの操作の履歴を検索するステップと、
    ユーザがウェブ・ブラウザを操作することで提供を受けたサービスを提供するサービス・プログラム生成して前記記憶装置に格納するステップとを備え、
    前記サービス・プログラムは、
    検索した各操作に対応する処理をウェブ・ブラウザに対してその操作の順序で行い、各操作に対応する処理を行ったウェブ・ブラウザに表示されたウェブページから、前記記憶装置に格納された配置に対応する表示オブジェクトを選択して出力する処理部
    としてコンピュータを機能させる、方法。
  23. サービス・プログラムを生成するためのプログラムであって、
    記憶装置を備えたコンピュータを、
    ユーザがウェブ・ブラウザを操作した履歴を取得して前記記憶装置に格納する履歴取得部と、
    ユーザが操作したウェブ・ブラウザに表示されたウェブページの中から、ユーザの指示に基づいて表示オブジェクトを選択し、その表示オブジェクトのウェブページ中における配置を操作の履歴に対応付けて前記記憶装置に格納するオブジェクト選択部と、
    前記記憶装置にアクセスして、それぞれの操作の履歴を検索する検索部と、
    ユーザがウェブ・ブラウザを操作することで提供を受けたサービスを提供するサービス・プログラム生成して前記記憶装置に格納する生成部として機能させ、
    前記サービス・プログラムは、
    検索した各操作に対応する処理をウェブ・ブラウザに対してその操作の順序で行い、各操作に対応する処理を行ったウェブ・ブラウザに表示されたウェブページから、前記記憶装置に格納された配置に対応する表示オブジェクトを選択して出力する処理部
    としてコンピュータを機能させる、プログラム。
JP2009509327A 2007-04-06 2008-04-04 サービス・プログラムを生成する技術 Expired - Fee Related JP5089684B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009509327A JP5089684B2 (ja) 2007-04-06 2008-04-04 サービス・プログラムを生成する技術

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2007100842 2007-04-06
JP2007100842 2007-04-06
JP2009509327A JP5089684B2 (ja) 2007-04-06 2008-04-04 サービス・プログラムを生成する技術
PCT/JP2008/056798 WO2008126796A1 (ja) 2007-04-06 2008-04-04 サービス・プログラムを生成する技術

Publications (2)

Publication Number Publication Date
JPWO2008126796A1 true JPWO2008126796A1 (ja) 2010-07-22
JP5089684B2 JP5089684B2 (ja) 2012-12-05

Family

ID=39863894

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009509327A Expired - Fee Related JP5089684B2 (ja) 2007-04-06 2008-04-04 サービス・プログラムを生成する技術

Country Status (6)

Country Link
US (1) US8370750B2 (ja)
EP (1) EP2136292A4 (ja)
JP (1) JP5089684B2 (ja)
KR (1) KR101038896B1 (ja)
CN (1) CN101652748A (ja)
WO (1) WO2008126796A1 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101528853B1 (ko) * 2007-12-14 2015-07-01 삼성전자주식회사 Api 서비스 방법과 api 매쉬업 생성 방법, 장치 및기록매체
US8793398B2 (en) * 2008-08-29 2014-07-29 Red Hat, Inc. Facilitating client server interaction
US8793339B2 (en) * 2008-08-29 2014-07-29 Red Hat, Inc. Facilitating client server interaction
US8627223B1 (en) * 2009-06-30 2014-01-07 Sprint Communications Company L.P. Customized execution sequences for portions of third party applications
KR101104612B1 (ko) * 2010-02-26 2012-01-12 (주)한국공간정보통신 사용자 참여형 정보서비스 조합 방법과, 정보서비스 조합 장치 및 조합 정보서비스 제공 장치
US8990499B2 (en) * 2010-03-26 2015-03-24 Amazon Technologies, Inc. Caching of a site model in a hierarchical modeling system for network sites
US9367595B1 (en) * 2010-06-04 2016-06-14 Software AG USA Inc. Method and system for visual wiring tool to interconnect apps
GB2497018A (en) * 2010-08-10 2013-05-29 Ibm A method and system to automatically testing a web application
CN101976199A (zh) * 2010-10-15 2011-02-16 德讯科技股份有限公司 面向对象的中间件分布式系统开发平台
JP5560180B2 (ja) * 2010-12-24 2014-07-23 株式会社日立製作所 稼働ログ収集方法および装置
US8881303B2 (en) * 2011-07-28 2014-11-04 Xerox Corporation System and method for executing web services
US8924399B1 (en) * 2012-04-30 2014-12-30 Intuit Inc. Flexible page-viewing within a browser tab
JP6063235B2 (ja) * 2012-12-10 2017-01-18 株式会社日立システムズ 作業自動化支援システム及び作業自動化支援方法
WO2015009770A1 (en) * 2013-07-16 2015-01-22 Pinterest, Inc. Object based contextual menu controls
KR102067017B1 (ko) 2014-01-27 2020-02-11 한국전자통신연구원 매쉬업 서비스를 위한 가상 api 제공 장치 및 방법
US11113022B2 (en) 2015-05-12 2021-09-07 D&M Holdings, Inc. Method, system and interface for controlling a subwoofer in a networked audio system
US11209972B2 (en) * 2015-09-02 2021-12-28 D&M Holdings, Inc. Combined tablet screen drag-and-drop interface
US10163170B2 (en) * 2015-08-19 2018-12-25 Sap Se Method and system for designing a product configuration
US10713428B2 (en) 2015-11-02 2020-07-14 Microsoft Technology Licensing, Llc Images associated with cells in spreadsheets
US10963635B2 (en) 2015-11-02 2021-03-30 Microsoft Technology Licensing, Llc Extensibility of compound data objects
US11023668B2 (en) * 2015-11-02 2021-06-01 Microsoft Technology Licensing, Llc Enriched compound data objects
US10506017B2 (en) 2016-05-20 2019-12-10 Adobe Inc. Manipulation of PDF file content through HTTP requests
CN106897347B (zh) * 2016-08-15 2021-12-24 创新先进技术有限公司 一种网页展示方法、操作事件记录方法及装置
US10725747B1 (en) * 2016-09-19 2020-07-28 Amazon Technologies, Inc. Dynamically customizable portal
CN107426291B (zh) * 2017-05-27 2020-03-20 贵州华宁科技股份有限公司 Cdm流程构建系统
CN111033465B (zh) * 2017-08-23 2024-03-29 日本电信电话株式会社 终端装置、ui扩展方法和记录介质
JP6874040B2 (ja) * 2018-07-27 2021-05-19 シチズン時計株式会社 プログラム作成システム、プログラム、及び、作成端末機器
KR102193157B1 (ko) * 2018-11-14 2020-12-18 에스피테크놀러지 주식회사 컨테이너 서비스 제공을 위한 장치 및 방법
US11397770B2 (en) * 2018-11-26 2022-07-26 Sap Se Query discovery and interpretation
US20220222733A1 (en) * 2019-05-09 2022-07-14 Honda Motor Co., Ltd. Agent system, agent server, control method for agent server, and program
JP2021140646A (ja) * 2020-03-09 2021-09-16 株式会社日立ハイテク ターゲットユーザ特徴抽出方法、ターゲットユーザ特徴抽出システム及びターゲットユーザ特徴抽出サーバ

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809250A (en) * 1996-10-23 1998-09-15 Intel Corporation Methods for creating and sharing replayable modules representive of Web browsing session
JP3957354B2 (ja) 1997-03-04 2007-08-15 株式会社Tana−X 吊り下げ板
US6189024B1 (en) * 1998-01-06 2001-02-13 Netscape Communications Corporation Browsing session recording playback and editing system for generating user defined paths and allowing users to mark the importance of items in the paths
US6195679B1 (en) * 1998-01-06 2001-02-27 Netscape Communications Corporation Browsing session recording playback and editing system for generating user defined paths and allowing users to mark the priority of items in the paths
US6360332B1 (en) * 1998-06-22 2002-03-19 Mercury Interactive Corporation Software system and methods for testing the functionality of a transactional server
JP3083805B2 (ja) * 1998-08-28 2000-09-04 インターナショナル・ビジネス・マシーンズ・コーポレ−ション ブラウザ操作自動実行システムおよびその方法
US7200804B1 (en) * 1998-12-08 2007-04-03 Yodlee.Com, Inc. Method and apparatus for providing automation to an internet navigation application
US6535912B1 (en) * 1999-08-31 2003-03-18 Lucent Technologies Inc. Method for creating and playing back a smart bookmark that automatically retrieves a requested Web page through a plurality of intermediate Web pages
AU2001294704A1 (en) * 2000-09-25 2002-04-08 Databites, Inc. System and method for automatic retrieval of structured online documents
JP2003156376A (ja) 2001-11-21 2003-05-30 Tokyo Gas Co Ltd ガスwi計測装置およびガス燃焼流量計測装置ならびにそれらに用いられるガス密度計測器
US7139978B2 (en) * 2002-03-01 2006-11-21 Sap Ag Recording user interaction with an application
JP2003271210A (ja) 2002-03-15 2003-09-26 Omron Corp コントローラ
US6679563B2 (en) 2002-06-25 2004-01-20 Shimano Inc. Bicycle wheel
US7269633B2 (en) * 2002-12-06 2007-09-11 International Business Machines Corporation Method and system for playback of dynamic HTTP transactions
US7359935B1 (en) * 2002-12-20 2008-04-15 Versata Development Group, Inc. Generating contextual user network session history in a dynamic content environment
JP2004224283A (ja) 2003-01-27 2004-08-12 Iseki & Co Ltd 苗移植機
JP2004362029A (ja) * 2003-06-02 2004-12-24 Yaskawa Electric Corp 制御機器設定システム
US20050060719A1 (en) * 2003-09-12 2005-03-17 Useractive, Inc. Capturing and processing user events on a computer system for recording and playback
JP2005187401A (ja) 2003-12-25 2005-07-14 Nisshin Oillio Group Ltd 蛋白質−キトサン複合体及びその製造方法
JP2005266954A (ja) * 2004-03-16 2005-09-29 Hitachi Software Eng Co Ltd 操作情報記録・再生装置
US7627821B2 (en) * 2004-06-15 2009-12-01 Microsoft Corporation Recording/playback tools for UI-based applications
JP2006048144A (ja) * 2004-07-30 2006-02-16 Tenik Kk 自動巡回装置,クライアント端末および自動巡回方法
US7653721B1 (en) * 2004-10-29 2010-01-26 Sun Microsystems, Inc. Mechanism for capturing high level events on user interface components
JP4631562B2 (ja) * 2005-06-27 2011-02-16 富士ゼロックス株式会社 情報処理装置及び情報処理方法、並びにコンピュータ・プログラム

Also Published As

Publication number Publication date
US20100131869A1 (en) 2010-05-27
EP2136292A4 (en) 2013-02-27
JP5089684B2 (ja) 2012-12-05
WO2008126796A1 (ja) 2008-10-23
KR20090127158A (ko) 2009-12-09
CN101652748A (zh) 2010-02-17
KR101038896B1 (ko) 2011-06-07
US8370750B2 (en) 2013-02-05
EP2136292A1 (en) 2009-12-23

Similar Documents

Publication Publication Date Title
JP5089684B2 (ja) サービス・プログラムを生成する技術
JP4972254B2 (ja) リフレッシュ可能なWebクエリを作成するための統合された方法
US20210034336A1 (en) Executing a process-based software application in a first computing environment and a second computing environment
US7543299B2 (en) Creating web services programs from other web services programs
JP4767828B2 (ja) コンピュータ用アプリケーション・プログラムの作成システム、方法、及びプログラム
US20140026095A1 (en) Enhanced Widget Composition Platform
JP2009543167A (ja) ページに関するページ・レイアウトを継承するためのコンピュータで実行される方法、コンピュータ・プログラム、およびデータ処理システム
KR20140019626A (ko) 웹 어플리케이션 개발을 위한 사용자 인터페이스 프레임워크
JP2023107749A (ja) ブラウザベースのロボティックプロセスオートメーション(rpa)ロボット設計インターフェース
JPH11167584A (ja) ページ遷移方法及びその実施装置並びにその処理プログラムとデータを記録した媒体
US20240080354A1 (en) Providing bulk server-side custom actions for multiple rows of a client-side spread sheet
US20060085492A1 (en) System and method for modifying process navigation
JP2023152695A (ja) ロボティックプロセスオートメーション(rpa)ロボットを設計するためにブラウザを使用するシステムおよび方法
KR100859595B1 (ko) 모바일 매쉬-업 서비스 제공 시스템 및 방법
JPH09305366A (ja) 画面表示最適化方法
CN116149653A (zh) 构建列表页面的方法、装置、存储介质及计算机设备
JP2007011439A (ja) 表示処理装置、表示処理方法、Webシステム
CN116932950A (zh) 一种页面加载方法、装置、设备及计算机可读存储介质
KR20140115470A (ko) 애플리케이션 환경 제공 시스템
JP2006079395A (ja) Domツリーを利用したブラウザコントロール表示方法およびシステム
JP2005208718A (ja) 画面制御システム、その方法、及びそのプログラム
Gnanasekar et al. Towards Development of QoS Based Data and Service Oriented Mashup Platform
KR20140115459A (ko) 애플리케이션 개발 환경 제공 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체
KR20140114995A (ko) 애플리케이션 개발 환경 제공 방법
KR20140115465A (ko) 애플리케이션 환경 제공 시스템

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120522

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120720

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120911

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

Free format text: PAYMENT UNTIL: 20150921

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees