コンピュータ用アプリケーション・プログラムの作成システム、方法、及びプログラム
【課題】 高度なプログラミングスキルを要することなく、複数の入力フィールドの間の演算結果を、他のフィールドで利用可能とする、GUIベースのアプリケーション・プログラムを作成すること。
【解決手段】 アプリケーション・プログラムの開発段階で、例えばWebサイトからのデータを出力するような第1の領域が、そのスプレッドシート的な画面の第1のセルに関連付けるためにドラッグ&ドロップされる。次に、Webサイトからのデータを出力するような第2の領域が、そのスプレッドシート的な画面の第2のセルに関連付けるためにドラッグ&ドロップされる。次に、スプレッドシート的な画面の第3のセルには、第1のセルと第2のセルの値またはデータから演算して値を出すための所望の式が入力される。この第3のセルは、アプリケーション・プログラムの任意のシートまたはウインドウに、ドラッグ&ドロップ可能である。
【解決手段】 アプリケーション・プログラムの開発段階で、例えばWebサイトからのデータを出力するような第1の領域が、そのスプレッドシート的な画面の第1のセルに関連付けるためにドラッグ&ドロップされる。次に、Webサイトからのデータを出力するような第2の領域が、そのスプレッドシート的な画面の第2のセルに関連付けるためにドラッグ&ドロップされる。次に、スプレッドシート的な画面の第3のセルには、第1のセルと第2のセルの値またはデータから演算して値を出すための所望の式が入力される。この第3のセルは、アプリケーション・プログラムの任意のシートまたはウインドウに、ドラッグ&ドロップ可能である。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、コンピュータ用アプリケーション・プログラムの作成システム及び方法に関するものであり、より詳しくは、主としてグラフィック・ユーザー・インターフェース(GUI)に基づき、アプリケーション・プログラムを作成するためのシステム、方法及びプログラムに関するものである。
【背景技術】
【0002】
コンピュータを使用するためには、コンピュータの中央処理ユニット(CPU)に実行され、それによって入出力装置を駆動させるためのプログラムの存在が必須である。初期の頃は、CPUが直接解釈する命令を記述し、メモリのアドレスを絶対指定するような、マシン語により記述されたものが書かれたが、そのようなプログラムだと、目で見て、どのような動作が記述されているか全く分からないため、プログラムのバグを修正したり、新しい機能を追加したりすることに困難を極めた。
【0003】
このことを改善するために、CPUが解釈するコマンドを、MOV、ADDなどの人間に分かりやすいニーモニックを用い、メモリのアドレスも相対指定することを可能とした、アセンブリ言語が開発された。そのように記述されたプログラムは、アセンブラで、CPUが実行可能なマシン語に変換される。しかし、単純な加算を記述するためだけでも、レジスタにある値を格納し、そのレジスタの値をCPUが参照するようにする、というように、演算論理がCPUに沿ったものであるため、依然として、プログラムの開発は、相当の熟練を要するものであった。
【0004】
このような困難は、1950年代に開発されたFORTRAN、COBOLなどの、コンパイラ・プログラミング言語の登場により、劇的に改善された。このような言語を使用すると、例えば加算が、A = B + C のように、通常の数式で記述することができ、WRITEのような関数で、I/O処理も、分かりやすく記述できる。このようなプログラミング言語は、手続的プログラミング言語と呼ばれ、その後も、C、C++、C#など、さまざまな工夫を盛り込んで、発展している。
【0005】
上記のような手続的プログラミング言語があらわれた頃は、画面に表示し、あるいは印刷する内容は、ABC、1123のような、単なる文字列のようなものでよかったが、1980年代になって、マルチウインドウ・システムやマウスなどのポインティング・デバイスを備えた、グラフィック・ユーザー・インターフェース(GUI)が提案されると、プログラミングは、新たな困難に遭遇することになった。
【0006】
すなわち、GUIのプログラミングを行うためには、ウインドウ上にボタン、ラジオボタン、コンボボックス、テキスト入力領域などのGUI部品を表示する位置座標を指定し、表示する文字のフォントと色を指定し、プルダウンメニューを設計し、任意の時点におけるマウスによるGUI部品のクリック、アクティブ・ウインドウの切り替えなどのイベントにリアルタイムに応答する必要がある。初期のGUIのプログラミングは、これらを全て、ソースコードで記述するものであったため、リソースの組込み、イベント駆動などの新しい概念に対処するために非常に複雑で、CやC++などの手続的プログラミング言語に熟練したプログラマにとってさえ、その習熟は、とても困難なものであった。
【0007】
このような困難を改善するために、プログラムのある部分を、マウスのクリックやドラッグなどのGUI操作で記述することを可能としたプログラム開発ツールが開発された。そのようなものの例として、マイクロソフト社のVisual Basic(R)、Visual C++(R)、Visual Studio(R)、ボーランド社のDelphi(商標)、C++ Builder(商標)、IBM社のVisualAge for Java(商標)などがある。これらのプログラム開発ツールを使用すると、GUI部品の配置は、GUI部品の見本のアイコンを並べてある領域から、配置したい所望の位置にドラッグ・アンド・ドロップするだけで達成される。また、2つのGUI部品間の関連付けも、適当なマウス操作で可能とされている。
【0008】
ただし、GUI部品の配置や関連付けを、マウス操作だけでできる、と言っても、実際の処理のためのコードやAPI関数などは、C++、BASIC、Javaなどのプログラミング言語のルールに従い、プログラマがコードを書く必要があり、依然として、コンピュータの初心者には敷居が高いものである。
【0009】
ところで、近年、WebサービスやSOA(サービス指向アーキテクチャ)と呼ばれるアプリケーション間通信の概念が提唱されてきている。これによれば、上述したようなGUIによる開発ツールのGUI部品として、URLを指定可能なものが提供されている。この部品が提供する機能を利用して、特定のURLにアクセスすると、そのURLで特定されるWebサイトは、例えば、XMLで記述された結果を返す。当該開発ツールはさらに、XMLの内容を、階層的に表示する表示用のGUI部品も用意しており、従って、URLにアクセスするGUI部品と、表示用のGUI部品とをアプリケーション・プログラムの所定の領域に貼り付けておくことによって、特定のWebサイトから返された結果を自動的に表示するWebアプリケーションを実現することができる。
【0010】
上述のようなWebアプリケーションにおいて、第1のWebサービスに問合せしたとき、複数の結果が返され、それらの結果に演算を施し、その演算結果を以って、第2のWebサービスに問合せしたい場合がある。例えば、Zip codeを送ると、第1のWebサービスは、州と都市を、個別に返すものとする。一方、第2のWebサービスは、州と都市を組み合わせた文字列を送ると、その緯度と経度を返すものとする。すると、単純にGUI部品を貼り付けただけでは、Zip codeから州と都市を、個別に得るプログラムが構成されるだけで、第2のWebサービスに正しく問合せすることができない。第2のWebサービスに正しく問合せするWebプログラムを構成するためには、第1のWebサービスから得られた州と都市の文字列を結合し、更にその結果を、第2のWebサービスに問い合わせるGUI部品に与える手順を、プログラムコードで記述する必要がある。しかし、そのようなコードを記述することは、GUI部品のIDを確認したり、文字列結合のための演算子を書いたり、演算した結果を第2のWebサービスに問い合わせるGUI部品に関連付けるコードを書いたりと、見かけよりもずっと複雑なものであり、長年の熟練を要し、初心者にはとても敷居の高い作業である。
【0011】
本願発明者は、そこで、初心者にもなじみやすいインターフェースとして、スプレッドシートの形式に注目した。実際、コンピュータの初心者であっても、スプレッドシートに数値や文字を入れて、計算することにそれほど困難は覚えないはずである。そのような視点から、本願発明者は、いくつかの従来技術を検索してみた。
【0012】
特開2006−53894は、ユーザー指定のスプレッドシート関数のサポートに関するものであり、特定のセルがユーザー定義関数の呼び出しを含んでいるとの判定に応答して、別のセルで定義されたユーザー定義関数を利用して、ユーザー定義関数の呼び出しに対する結果の値を求め、求められた結果の値から、特定のセルの値を獲得するようにすることを開示する。
【0013】
特開2005−353058は、ウェブ・ブラウザ・アプリケーション・プログラムで、スプレッドシートを表示し、変更することを可能ならしめる技術を開示する。
【0014】
特開2004−208278は、ネットワークを介して接続されたホストと端末との間で、スプレッドシートアプリケーションプログラムを用いてデータ管理を行うに際し、メールサーバを設けると共にスプレッドシートアプリケーションプログラムにおけるセルの位置、データ入出力の指示及びデータを、メールサーバのメールフォームとしてサブジェクト及びメール本文により特定し、該特定したメールフォームにより、前記セルのデータをホストと端末との間で入出力処理することを開示する。
【0015】
しかし、これらの従来技術は、上述のようなWebアプリケーションにおいて、スプレッドシートを表示用のインターフェースとして使用することにとどまっており、スプレッドシート的なインターフェースを利用して、アプリケーションプログラムの作成を支援することまでは、示唆するものではない。
【特許文献1】特開2006−53894
【特許文献2】特開2005−353058
【特許文献3】特開2004−208278
【発明の開示】
【発明が解決しようとする課題】
【0016】
従って、この発明の目的は、プログラミング技術に熟練していないユーザーでも、GUIの操作で、簡単にアプリケーション・プログラムを作成することを可能ならしめるシステム及び方法を提供することにある。
【0017】
この発明の他の目的は、高度なプログラミングスキルを要することなく、複数の入力フィールドの間の演算結果を、他のフィールドで利用可能とする、GUIベースのアプリケーション・プログラムを作成することを可能ならしめるシステム及び方法を提供することにある。
【課題を解決するための手段】
【0018】
本発明者は、複数のGUI部品と、スプレッドシートの間のデータのやりとりについて熟考した結果、上記目的は、複数のセルをもつスプレッドシート的な画面を設け、その複数のセルを介して、GUI部品間のデータを受渡しをするインターフェースを設けることによって、達成されることに想到した。
【0019】
すなわち、この発明によれば、アプリケーション・プログラムの開発段階で、例えばWebサイトからのデータを出力するような第1の領域が、表計算プログラムまたはスプレッドシート的な画面の第1のセルに関連付けるためにドラッグ・アンド・ドロップされる。次に、Webサイトからのデータを出力するような第2の領域が、そのスプレッドシート的な画面の第2のセルに関連付けるためにドラッグ・アンド・ドロップされる。次に、スプレッドシート的な画面の第3のセルには、第1のセルと第2のセルの値またはデータから演算して値を出すための所望の式が入力される。この第3のセルは、アプリケーション・プログラムの任意のシートまたはウインドウに、ドラッグ・アンド・ドロップ可能である。
【発明の効果】
【0020】
このように、本発明によれば、実質的にマウスなどのポインティング・デバイスによる操作だけで、ほとんど熟練を要することなく、所望のGUIベースのアプリケーション・プログラムを作成することができる。コードを書く必要があるのは、スプレッドシート的な画面のセルに入れる計算式だけであり、それは、通常のスプレッドシート・プログラムを使い慣れたユーザーにとって、造作もないことである。
【発明を実施するための最良の形態】
【0021】
以下、図面に従って、本発明のいくつかの実施例を説明する。これらの実施例は、本発明の好適な態様を説明するためのものであり、発明の範囲をここで示すものに限定する意図はないことを理解されたい。また、以下の図を通して、特に断わらない限り、同一符号は、同一の対象を指すものとする。
【実施例1】
【0022】
この実施例は、ウェブ・サービスのためのアプリケーション・プログラムを作成することに関する。特に、この実施例は、システムを構成するプログラミング言語として、ウェブ・ブラウザの組み込み言語の一種であるJavaScript(R)を主として使用して実現される。しかし、本発明は、そのような特定のプログラミング言語に限定されず、C++、C#、Java(R)その他、ドラッグ・アンド・ドロップ操作をサポートするAPI関数を呼び出し可能な、任意のプログラミング言語を使用可能であることを理解されたい。なお、以下の実施例で使用するドラッグ・アンド・ドロップ操作は、表示されているオブジェクト間をバインドするための操作として便利なものであるが、そのための操作として、本発明の目的にとって、ドラッグ・アンド・ドロップは必須でないことを理解されたい。例えば、ソースとなるオブジェクトを一旦クリックし、プルダウン・メニューから例えば、「関連付け」という項目を選び、次にターゲットのオブジェクトをクリックする、という操作で関連付けすることができる。あるいは、それぞれ、Ctrlキー、Altキー、あるいはキーの組み合わせの適当なショートカットとしても、ドラッグ・アンド・ドロップと等価な作用をもたらすようにプログラムできることを、当業者なら理解するであろう。
【0023】
以下、図面を参照して、この実施例を説明する。図1を参照すると、この実施例に係るハードウェア構成の概要ブロック図が示されている。図1において、クライアント・コンピュータ100と、サーバ・コンピュータ200が、例えば、イーサネット・プロトコルにより、通信回線300に接続されている。通信回線300は更に、プロキシ・サーバ400を介して、インターネット500に接続され、インターネット500を介して、様々なウェブ・サイト602、604、606・・・にアクセスすることが可能である。
【0024】
クライアント・コンピュータ100は、ハードディスク104と、イーサネット・プロトコルに対応する通信インターフェース106をもち、ハードディスク104には、オペレーティング・システム、ウェブ・ブラウザ102などの、この実施例に使用される様々なプログラムが、メモリにロード可能に記憶されている。この実施例で使用するウェブ・ブラウザ102は、JavaScriptを実行可能な任意のウェブ・ブラウザでよく、例えば、マイクロソフト社のInternet Explorer(R)、モジラ ファウンデーションのFireFox(R)、アップルコンピュータ社のSafari(R)などが使用可能である。オペレーティング・システムとしては、TCP/IP通信機能を標準でサポートし、これらのウェブ・ブラウザを動作可能な任意のものでよく、例えば、Linux(R)、マイクロソフト社のWindows XP(R)、Windows(R)2000、アップルコンピュータのMac OS(R)などを使用することができるが、ここに掲げたオペレーティング・システムには限定されない。
【0025】
サーバ・コンピュータ200は、ハードディスク204と、イーサネット・プロトコルに対応する通信インターフェース206をもち、ハードディスク204には、オペレーティング・システム、ウェブ・ブラウザ、ウェブ・アプリケーション・サーバ・プログラム(以下、ウェブ・アプリケーション・サーバとも呼ぶ)202などの、この実施例に使用される様々なプログラムが、メモリにロード可能に記憶されている。ウェブ・アプリケーション・サーバとは、HTML文書や画像情報などを蓄積しておき、ウェブ・ブラウザなどのクライアント・アプリケーションからの要求に応じて、インターネットなどのネットワークを通じて、情報を送信するプログラムである。ウェブ・アプリケーション・サーバ202としては、Apache TomCat、マイクロソフト社のInternet Information Serverなど、任意のものが使用可能である。オペレーティング・システムとしては、TCP/IP通信機能を標準でサポートし、これらのウェブ・アプリケーション・サーバを動作可能な任意のものでよく、例えば、Linux(R)、マイクロソフト社のWindows XP(R)、Windows(R)2000などを使用することができるが、ここに掲げたオペレーティング・システムには限定されない。
【0026】
次に、図2を参照して、クライアント・コンピュータ100と、サーバ・コンピュータ200の、より詳細なハードウェア構成について、説明する。
【0027】
クライアント・コンピュータ100は、CPU108と、メインメモリ110をもち、これらは、バス109に接続されている。CPUは、好適には、32ビットまたは64ビットのアーキテクチャに基づくものであり、例えば、インテル社のPentium(R) 4、AMD社のAthlon(R)などを使用することができる。バス109には、ディスプレイ・コントローラ112を介して、LCDモニタなどのディスプレイ114が接続される。ディスプレイ114は、図1で示した、ウェブ・ブラウザ102などのプログラムを表示するために使用される。バス109にはまた、IDEコントローラ116を介して、ハードディスク104と、CD−ROMドライブ118が接続される。ハードディスク104には、オペレーティング・システム、ウェブ・ブラウザ102その他のプログラムが、メインメモリ110にロード可能に記憶されている。CD−ROMドライブ118は、必要に応じて、CD−ROMからプログラムをハードディスク104に追加導入するために使用される。バス109には更に、キーボード・マウスコントローラ120を介して、文字入力手段としてのキーボード122と、ポインティング手段としてのマウス124が接続されている。キーボード122は、URLやその他の文字を、画面に入力するために使用される。マウス122は、後述するGUI部品をドラッグ・アンド・ドロップしたり、動作を開始させるためにメニューのボタンをクリックしたりするために使用される。
【0028】
通信インターフェース106は、イーサネットプロトコルに従うものであり、クライアント・コンピュータ100と、通信回線300とを、物理的に接続する役割を担い、クライアント・コンピュータ100のオペレーティング・システムの通信機能のTCP/IP通信プロトコルに対して、ネットワークインターフェース層を提供する。尚、図示されている構成は、有線接続構成であるが、例えば、IEEE802.11a/b/gなどの無線LAN接続規格に基づき、無線LAN接続するものであってもよい。
【0029】
また、通信インターフェース106は、イーサネットプロトコルに限定されるものではなく、例えば、トークンリングなどの任意のプロトコルに従うものでよく、特定の物理的通信プロトコルに限定されない。
【0030】
サーバ・コンピュータ200は、CPU208と、メインメモリ210をもち、これらは、バス209に接続されている。クライアント・コンピュータ200においても、CPUは、好適には、32ビットまたは64ビットのアキーテクチャに基づくものであり、例えば、インテル社のPentium(R) 4、Xeon(R)、AMD社のAthlon(R)などを使用することができる。バス209には、ディスプレイ・コントローラ212を介して、LCDモニタなどのディスプレイ214が接続される。ディスプレイ214は、詳細は後で説明するが、システム管理者が、インターネット接続用のGUI部品などを作成したり、JavaScriptのプログラムを書いて、クライアント・プログラム100から呼び出し可能に登録したり、クライアント・プログラム100を介してアクセスするユーザーのユーザーIDとパスワードを登録したりするために使用される。
【0031】
バス209にはまた、IDEコントローラ216を介して、ハードディスク204と、CD−ROMドライブ218が接続される。ハードディスク204には、オペレーティング・システム、ウェブ・ブラウザ102その他のプログラムが、メインメモリ210にロード可能に記憶されている。
【0032】
CD−ROMドライブ218は、必要に応じて、CD−ROMからプログラムをハードディスク204に追加導入するために使用される。バス209には更に、キーボード・マウスコントローラ220を介して、キーボード222と、マウス224が接続されている。キーボード222は、URLやその他の文字を、画面に入力するために使用される。マウス222は、システム管理者が、後述するGUI部品を作成したりするために使用される。
【0033】
通信インターフェース206は、イーサネットプロトコルに従うものであり、サーバ・コンピュータ200と、通信回線300とを、物理的に接続する役割を担い、サーバ・コンピュータ200のオペレーティング・システムの通信機能のTCP/IP通信プロトコルに対して、ネットワークインターフェース層を提供する。サーバ・コンピュータ200においても、図示されている構成は、有線接続構成であるが、例えば、IEEE802.11a/b/gなどの無線LAN接続規格に基づき、無線LAN接続するものであってもよい。
【0034】
また、通信インターフェース206は、イーサネットプロトコルに限定されるものではなく、例えば、トークンリングなどの任意のプロトコルに従うものでよく、特定の物理的通信プロトコルに限定されない。
【0035】
サーバ・コンピュータ200のハードディスク204には、前述したオペレーティング。システムとウェブ・アプリケーション・サーバ202以外に、後述する、本発明に係る開発環境を提供するプログラムも格納される。この開発環境は、例えば、JavaScriptのライブラリである、Dojo Toolkitにより提供されるモジュールと、本発明者らがJavaScript言語を用いて書いたモジュールの組み合わせからなる。Dojo Toolkitの詳細については、例えば、http://dojotoolkit.org/を参照されたい。このように開発環境をサーバ・コンピュータ200のハードディスク204に格納しておく理由は、サーバ・コンピュータ200にログインした任意のクライアント・コンピュータ100で、ウェブ・アプリケーション・サーバ202の機能により、開発環境をダウンロードして、開発を開始することができるようにするためである。
【0036】
尚、本発明は、JavaScriptにより作成されたモジュールに限定されるものではないことを理解されたい。ブラウザ組み込み型言語として知られている、JScript、VBSCriptなどを使用して、本発明を実現することも可能である。また、JSPと呼ばれる、HTML中に埋め込まれたJavaプログラムを実行し、処理結果をウェブ・ブラウザに対して返すという仕組みを用いることもできる。
【0037】
さらに、図1及び図2では、クライアント/サーバの構成が示されているが、クライアント・コンピュータ100だけの構成でも、本発明を実現することは可能である。その場合、クライアント・コンピュータ100に直接、上記開発環境やモジュールを常駐させておけばよい。そうして、インターネットへのアクセスは、図1に示す、通信回線300とプロキシサーバ400を介して、直接行われる。
【0038】
さらにまた、図1では、クライアント・コンピュータとサーバ・コンピュータはともに、ファイアーウォールの内側にあるが、サーバ・コンピュータを、ファイアーウォールの外側に置いてもよい。その際、もしセキュリティ的に懸念があれば、VPNなどの仕組みで、セキュリティを強化することも可能である。
【0039】
次に、図3を参照して、サーバ・コンピュータ200における、ウェブ・アプリケーション・サーバ202の機能について、より詳細に説明する。図2では、ある程度具体的なハードウェア構成のブロック図を説明したが、ここで再び、必要に応じて、より抽象度の高い、ソフトウェア・モジュールのブロック図が説明に使用されることに留意されたい。
【0040】
図3において、ウェブ・アプリケーション・サーバ202は、アプリケーション実行部252と、サービス呼び出し部254と、サービス呼び出し管理部256と、アプリケーション管理部258とをもつ。
【0041】
ハードディスク204には、サービス呼び出し定義262と、アプリケーション定義264が、呼び出し可能に記録されている。サービス呼び出し定義262には、予めシステム管理者により用意された、個々のウェブサイトにアクセスするためのサービス・モデル要素(ウイジェット(widget)とも呼ばれる)が複数格納されている。サービス・モデル要素の作成及び編集については、図11を参照して、後で説明する。アプリケーション定義264には、クライアント・コンピュータ100のユーザーが予め作成した、サービス呼び出し定義262に定義されているウイジェット及びその他の処理手順を含むアプリケーション・プログラムが保存されている。
【0042】
認証許可ブロック266は、例えば、システム管理者により予め用意された、クライアント・コンピュータ100のユーザーのユーザーIDと、パスワードの組である。これらの情報は、例えば、ハードディスク204に記憶され、クライアント・コンピュータ100のユーザーが、サーバ・コンピュータ200にログインするとき、ユーザーIDと、それに対応するパスワードの組の入力を求められることになる。
【0043】
アプリケーション実行部252の基本的な機能は、ウェブ・ブラウザ102から送られたコマンドを解釈して実行することである。サービス呼び出し部254には、URLやパラメータが定義され、アプリケーション実行部252は、サービス呼び出し部254内のURLやパラメータを使って、直接、ウェブサイトのサービス602にアクセスすることができる。尚、ここで、URLとは例えば、http://www.xyz.com/Service/CGI/purchase.cgiのようなものであり、パラメータとは、http://www.xyz.com/Service/CGI/purchase.cgi?&cost=parm1&goods=parm2における、costやgoodsのようなものである。サービス呼び出し管理部256は、ウェブ・ブラウザ102からの要求に応じて、アプリケーション定義264から、アクセスしているクライアント・コンピュータ100のユーザーが所有者であるアプリケーション・プログラムを呼び出して、編集/実行/削除可能とする。このとき、アプリケーション・プログラムの所有者の情報は、ログインしているユーザーIDによって知ることができる。
【0044】
ウェブ・アプリケーション・サーバ202内に示されている、クライアント・モジュール260は、通常はハードディスク204に保存され、ウェブ・ブラウザ102からの要求に応じて、クライアント・コンピュータ100にダウンロードされる。この実施例では、クライアント・モジュール260の典型的な形式は、拡張子jsで表される、JavaScriptのファイルである。すなわち、JavaScriptの記法は、
<script type="text/javascript">
<!--
実際のJavaScriptのコード
//-->
</script>
のような直接書き込む記法と、
<script src="abc.js" type="text/javascript"></script>
のような、JavaScriptのファイル名を指定し呼び出す方法とがある。この実施例では、主として、JavaScriptのファイル名を指定し呼び出す方法をとる。
【0045】
次に、図4を参照して、クライアント・コンピュータ100における、アプリケーション管理環境について説明する。クライアント・コンピュータ100のユーザーが、サーバー・コンピュータ200にログインすると、ウェブ・アプリケーション・サーバ202の処理によって、クライアント・コンピュータ100には、クライアント・コンピュータ200から、好適にはJavaScriptで書かれた、アプリケーション管理モジュール260がダウンロードされる。このアプリケーション管理モジュール260の働きにより、アプリケーション管理部258に、ログインしているユーザーのユーザーIDを含むコマンドが送られアプリケーション管理部258は、そのユーザーが所有者であるアプリケーション・プログラムを、アプリケーション定義264から検索して、クライアント・コンピュータ100に送り返す。これにより、インターネット・プラウザ102の画面には、アプリケーション管理モジュール260の働きにより、図示のような、アプリケーション・リスト150が表示される。
【0046】
このリスト150は、そのユーザーが所有者であるアプリケーション1〜4を表示し、その右には、「実行」と表示されたボタン152と、「編集」と表示されたボタン154と、「削除」と表示されたボタン156が配置される。ボタン152を、マウス124(図2)でクリックすることに応答して、サーバー・コンピュータ200から、実行環境用のモジュールがダウンロードされ、その行のプログラムの実行環境(後述する)に移行する。ボタン154を、マウス124でクリックすることに応答して、サーバー・コンピュータ200から、開発環境用のモジュールがダウンロードされ、その行のプログラムの開発環境(図5)に移行する。ボタン156を、マウス124でクリックすることにより、その行のプログラムを削除する指令がアプリケーション管理部258に送られ、それに応答して、アプリケーション管理部258は、ハードディスク204から、その対応するアプリケーション・プログラムを削除する。「新規作成」と表示されたボタン158をクリックすると、それに応答して、サーバー・コンピュータ200から、開発環境用のモジュールがダウンロードされ、新規の状態での開発環境に移行する。
【0047】
次に、図5を参照して、本発明の中心的な特徴である、開発環境について、説明する。図4に示すウェブ・ブラウザ102の画面で、編集ボタン154、または新規作成ボタン158を、マウス124でクリックすることによって、ウェブ・アプリケーション・サーバ202によって、開発環境用のモジュールが、アプリケーション管理モジュール260から、クライアント・コンピュータ100にダウンロードされ、それによって、図5に示すような画面が、ウェブ・ブラウザ102に表示され、開発環境の使用が可能になる。開発環境は、サービスモデル表示部162と、アプリケーション編集部164と、GUI部品表示部166と、サービスリスト表示部168と、データハブ170と、プロパティ編集部172、という複数の領域からなる。この実施例では、サービスモデル表示部162と、GUI部品表示部166とが、そこからGUI部品をアプリケーション編集部164に貼り付けることができる、パレット領域である。これらの領域は、この実施例では、タイル型に区分けされた領域であるが、個々の領域で互いに重畳を許す、マルチウインドウ表示方式で実装してもよい。
【0048】
GUI部品リスト表示部166は、詳細は図示しないが、ボタン、エディット領域、メモ、ラベル、コンボボックス、ラジオボタンなどの、GUI部品を表示し、そこから、アプリケーション編集部164に、GUI部品をドラッグ・アンド・ドロップ可能である。
【0049】
サービスリスト表示部168は、システム管理者が予め作成した、ウェブサービスアクセス用のサービスをリストするものである。図6にその例を示す。図6では、Zipコードを入力すると、都市と州を返すウェブ・サイトである、CitySearch、製品の価格を調べるためのPrice.com、ウェブ上で地図を表示するためのWebMap、都市と州から、その緯度と経度を返す、MapCodeが表示されている。なお、これらは説明の例示のためのウェブ・サイトであり、必ずしも実在するウェブ・サイトに対応するものではないことを理解されたい。
【0050】
サービスモデル表示部162は、サービスリスト表示部168で選ばれているサービスの、トリガ(Trigger)要素として示された入力要素と、Outputとして示された出力要素を、階層的且つ図式的に表示する領域である。これらの表示された入力要素と、出力要素は、アプリケーション編集部164あるいは、後述するデータハブ170に、ドラッグ・アンド・ドロップ可能であり、また、アプリケーション編集部164あるいは、データハブ170から、ドラッグ・アンド・ドロップ可能である。
【0051】
サービスの出力要素として、単なるテキスト文字列以外に、例えば、XMLで構造化されたリストをとることがあり得る。出力要素が単なるテキスト文字列である場合は、そこからデータハブ170にドラッグ・アンド・ドロップされたとき、データハブ170で占めるセルは、単一であるが、出力要素がリストである場合は、そこからデータハブ170にドラッグ・アンド・ドロップされたとき、データハブ170で、当該リストに含まれる文字列または数字の数のセルを占め、且つそのセルの各々に、リストに対応する文字列または数字が格納されることを理解されたい。
【0052】
アプリケーション編集部164は、GUI部品リスト表示部166からGUI部品を、サービスモデル表示部162から、Trigger要素、入力要素あるいは出力要素を、それぞれ、ドラッグ・アンド・ドロップ可能である。
【0053】
サービスモデル表示部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のように、パラメータは、複数取りえる。なお、ウェブサービスは、必ず入力パラメータまたは要素をもつとは限らず、入力要素のないウェブサービスもあり得ることを理解されたい。例えば、単に現在のグリニッジ標準時を返すようなウェブサービスだと、パラメータは不要である。
【0054】
一方、ウェブサイトにアクセスしたとき返されるデータは、HTMLであったり、XMLであったり、JavaScript言語の仕様の一部を利用した、比較的軽いデータ交換フォーマットである、JSON(JavaScript Object Notation)であったりする。このように、ウェブサイトにアクセスしたとき返されるデータは、構造化されたデータであり得るので、サービスモデル表示部162の出力要素として、ドラッグ・アンド・ドロップ可能な単位も、返されるXMLのリスト全体であったり、そのリストの一部であったり、と多様な形態を取りえる。
【0055】
また、この実施例で、ウェブサイトまたはウェブサービスにアクセスされるときは、好適には、Ajaxと呼ばれる技術に基づく、XMLHttpRequestと呼ばれる、サーバとの非同期通信が利用される。この技術を利用することによって、画面の書き換えを迅速化し、且つデータ通信量を低減することができる。但し、通常のHTTPプロトコルのコマンドを利用するものであってもよい。
【0056】
データ連携領域としてのデータハブ170は、好適には、スプレッドシート(表計算プログラムとも呼ばれる)の外観のインターフェースをもつものであり、縦横に区分けされた区域からなる。これらの区域を、スプレッドシート・プログラムの慣用に倣って、A1、A2、B1などの名前のセルと呼ぶことにする。各セルには、ユーザーが値を入れることもできるし、アプリケーション編集部164に貼り付けられたGUI部品からドラッグ・アンド・ドロップ可能であるし、スプレッドシートでよく知られた形式の、=A1+B1や、=A1&","&B1のような計算式を入れることもできる。どのような式を許容するかは、JavaScriptなどを使用したプログラミングのコードに依存する。一方、それらの各セルを、逆に、アプリケーション編集部164に貼り付けられているGUI部品、あるいは、サービスモデル表示部162に表示されているサービスの入力要素を宛先として、ドラッグ・アンド・ドロップ可能である。すなわち、この実施例では、データハブ170は、上記のようなドラッグ・アンド・ドロップ、及びセル間の様々な計算機能を提供するように、JavaScriptの機能を利用して作り込まれている。
【0057】
前述したように、データハブ170には、ウェブサービスの出力要素として、XMLなどで記述されたリスト出力要素が貼り付けられることがあり、そのような場合、リスト出力要素がデータハブ170にドラッグ・アンド・ドロップされると、リストに含まれる要素の数だけのセルを、占めることになる。このように、リストからドラッグ・アンド・ドロップされた複数のセルに対しては、統計処理を行う必要性があり得るので、この実施例では、=SUM(A1..E1)のような合計関数、=AVERAGE(A1..E1)のような平均関数、=STDEVA(A1..E1)のような標準偏差関数、=MAX(A1..E1)のような最大関数、=MIN(A1..E1)のような最小関数などさまざまな統計関数も用意されている。このような数式処理のJavaScriptによる実装は、プログラミング技法として確立されたものなので、特に詳述しない。
【0058】
この実施例では、ドラッグ・アンド・ドロップ処理は、Dojoライブラリのツールキットを使用して実現されており、それは、下記のようなコードとなる。
drag ソース側: var ds = new dojo.dnd.HtmlDragSource(domNode, dragSourceName);
drop ターゲット側: var dt = new dojo.dnd.HtmlDropTarget(domNode, dropTargetName);
また、ドラッグ・アンド・ドロップによってバインドした情報は宣言的な形式(XML)で保持される。下記は、その記法の一例で、InputText_0という名前のsourceWidget(ドラッグ・アンド・ドロップ元のGUI要素)と、Action_0という名前のtargetWidget(ドラッグ・アンド・ドロップ先のGUI要素)を関連付けることが指定されている。
<Application:WidgetPropertyBinding sourceWidget="InputText_0" sourcePropertye="value" sourceEvent="setValue" targetWidget="Action_0" targetProperty="value">
</Application:WidgetPropertyBinding>
なお、この分野の当業者なら、このようなツール・キットの使用及び記法は、一例に過ぎず、同等な様々な技術を使用できることを理解するはずである。例えば、Windows(R) 2000、Windows XP(R)などのオペレーティング・システムは、DragQueryPointなどのいくつかのドラッグ・アンド・ドロップ関係のAPI関数を用意しているので、これらを適宜呼び出して処理することもできる。
【0059】
また、データハブ170で、ユーザーが数式を入力したセルは、一般的には、サービス・モデル表示部162に表示されたサービス・モデルの、入力要素、トリガ要素などにドラッグ・アンド・ドロップされて、関連付けられる。しかし、このような要素上ではなく、例えば、アプリケーション編集部164の空白領域に直接ドラッグ・アンド・ドロップすることによって、そこに、テキスト入力領域のGUI部品を自動的に貼り付け、そこに、ドラッグ・アンド・ドロップのもととなったデータハブ170のセルの値が関連付けられるように、図5のクライアント開発環境の機能を設定しておくこともできる。例えば、GUI部品リスト表示部166からアプリケーション編集部164の空白領域へのドラッグ・アンド・ドロップは、慣用的な技術によって、選択したGUI部品のアプリケーション編集部164上への配置をもたらす。従って、これと同様の技術を利用して、データハブ170のセルから、アプリケーション編集部164の空白領域へのドラッグ・アンド・ドロップが行われることに応答して、ドラッグ・アンド・ドロップされた箇所に、テキスト入力領域をあらわすGUI部品を貼り付け、続いて、そのテキスト入力領域に、ドラッグ・アンド・ドロップの元のデータハブ170のセルから、関連付けを行う、という処理が自動的に行われるように、クライアント開発環境に機能を付与することができる。
【0060】
プロパティ編集部172は、一旦アプリケーション編集部164に貼り付けられ、マウスのクリックにより選択されたGUI部品またはサービスの入出力要素の、色、フォント、表示/非表示、Enable/Disableなどの属性を設定、あるいは変更するためのものである。
【0061】
図9に、データハブ170を利用した、複数のウェブ・サービスの連携の例を、模式的に示す。図9で、サービス1は、inputとして、input1をもち、outputとして、<output1>、<output2>をもつ。サービス2は、inputとして、input1をもち、outputとして、<output1>、<output2>をもつ。サービス3及びサービス4はそれぞれ、inputとして、input1及びinput2をもち、outputとして、<output1>をもつものとする。アクセスしようとするウェブ・サービスのサイトの仕様に基づき、図7と図9に例示するようなinput及びoutputを備えたウイジェット(widget)を作成する方法は、後述する。
【0062】
そこで、サービス1の<output1>、<output2>とにある演算を施した結果を、サービス2のinput1として与え、その結果に応答する、サービス2の<output1>、<output2>を、そのまま、サービス3のinput1、input2としてそれぞれ与えるとともに、サービス2の<output1>、<output2>とにある演算を施した結果を、サービス4のinput2に与え、サービス1の<output1>、<output2>とにある演算を施した結果に更に、サービス4のinput1に与える、というシナリオを考える。このために、サービス1の<output1>、<output2>は、データハブ170のセルA1、B1にドラッグ・アンド・ドロップされる。セルC1には、A1とB1の所定の計算式が書かれる。そうして、セルC1は、サービス2のinput1にドラッグ・アンド・ドロップされる。サービス2の<output1>、<output2>はそれぞれ、データハブ170のセルC2、D2にドラッグ・アンド・ドロップされる。セルE2には、C2とD2の所定の計算式が書かれる。サービス2の<output1>、<output2>は、データハブ170を介することなく、直接、サービス3のinput1と、input2にそれぞれ、ドラッグ・アンド・ドロップされる。さらに、データハブ170のセルC1が、サービス4のinput1にドラッグ・アンド・ドロップされ、データハブ170のセルE2が、サービス4のinput2にドラッグ・アンド・ドロップされる。現実的には、ここまで複雑なシナリオは、実際上あまりないと思われるが、本発明のデータハブを利用するビジュアル的なプログラミングの利点を説明するために、このような少し極端な例を示してみた。すなわち、もしデータハブ170のようなインターフェースを用いないと、等価な機能のプログラムを実現するために、非常に複雑なコードを書かなくてはならず、一方、本発明によれば、スプレッドシートを使う初歩的なスキルだけで、同等の機能のプログラムが簡単に実現できることを理解されよう。
【0063】
さて、サービス1のinput1は、ユーザーがキーボードなどから情報を入力するものとし、Triggerボタンのクリックに応答して、指定されたウェブ・サイトにアクセスし、その結果がデータハブ170の指定したセルを介して、サービス2、3及び4に、自動的に所望の結果を与えることが、図9からは、図式的に見て取れよう。尚、図9では、セルC1は、サービス2のTriggerにもドラッグ・アンド・ドロップされ、サービス2の<output1>は、Triggerにもドラッグ・アンド・ドロップされ、セルE2は、サービス4のTriggerにもドラッグ・アンド・ドロップされていることに留意されたい。これは、JavaScriptの、OnChangeというイベントハンドラによって、ドラッグ・アンド・ドロップ元の値の変化をトリガし、次のサービスを自動的に開始するようにするためである。こうしておくと、サービス1の<output1>及び<output2>のデータの変化によって、セルC1のデータが変化すると、サービス2のトリガ→サービス2の<output1>及び<output2>のデータの変化→サービス3のトリガ、及びセルE2の変化→サービス4のトリガ、が順次自動的に行われる。
【0064】
次に図10を参照して、クライアントの実行環境について、説明する。図4に戻って、アプリケーション1の隣の実行152というボタンをクリックすると、ウェブ・アプリケーション・サーバ202の機能により、アプリケーション実行モジュール260のうち、クライアント実行環境に関するモジュールが、クライアント・コンピュータ100にダウンロードされる。クライアント実行環境に関するモジュールは、アプリケーション定義解釈部260aと、アプリケーション表示部260bとからなる。今回選択されているのは、アプリケーション1(図4)なので、アプリケーション管理部258から、アプリケーション1のアプリケーション定義264がダウンロードされて、アプリケーション定義解釈部260aで実行される。アプリケーション定義解釈部260aの実行結果に基づき、アプリケーション表示部260bの働きにより、ウェブ・ブラウザ102の画面には、選択したアプリケーション1が表示され、その実行に応じて表示結果が更新される。
【0065】
なお、図1及び図2からも見て取れるように、クライアント・コンピュータ106は、サーバ・コンピュータ200を介することなく、プロキシ・サーバ400を通じて直接、ウェブサイト602〜606にアクセスすることが可能である。しかし、サーバ・コンピュータ200からダウンロードしたモジュールを使って、クライアント・コンピュータ106が、サーバ・コンピュータ200を介さないで、外部のウェブサイトにアクセスすることは、クロスサイト・セキュリティホールと呼ばれる問題を生じる惧れがある。このため、この実施例では、図10に示すように、ウェブ・アプリケーション・サーバ202からダウンロードされたモジュールにより実行されるアプリケーションは、必ず、ウェブ・アプリケーション・サーバ202内のアプリケーション実行部252を介して、外部のウェブサイトにアクセスするような仕組みが採用されている。
【0066】
次に、図11を参照して、サービス呼出し管理環境について説明する。ここでサービスと呼ぶのは、例えば、図8でCitySearch、Price.comなどとして表示した、サービスを提供するウェブ・サイトのことである。ユーザーが、サービス呼び出し管理環境ログイン画面(図示しない)で、所定のユーザーIDとパスワードでログインすると、ウェブ・アプリケーション・サーバ202から、サービス呼出し管理環境用のモジュール260がダウンロードされて、ウェブ・ブラウザ102の画面には、図11に示すように、登録サービス・リスト表示部180と、サービス呼び出し定義部190からなるメニューが、表示される。なお、この実施例では、サービス呼出し管理環境にログインする権限は、図4に示すアプリケーション管理環境にログインする権限よりも制限されていて、通常、システム管理者の役目をもつ人達にのみ許されていることを理解されたい。その理由は、一旦作成したサービスのウイジェットは、図5に示す開発画面で、サービスリスト表示部168に現れて、どのユーザーにも使用可能なものなので、信頼された動作をするものでなくてはならないからである。
【0067】
さて、登録サービス・リスト表示部180には、ウェブ・サーバ・アプリケーション・プログラム202のサーバ・サービス呼び出し管理部256から読み出されたサービス呼び出し定義262に基づいて、登録済みのサービスがリストされる。実際上、エントリ182、184、186の箇所に、登録されているサービスの名称(例えば、図8におけるCitySearchなど)が表示される。その右の編集ボタン186をクリックすることにより、そのサービスを編集するメニュー(図示しない)となる。あるいは、削除ボタン189をマウスでクリックすることにより、そのサービスが、サービス呼び出し定義262から削除される。登録されている個々のサービスに対して、サービスプロファイル定義部には、URL(例えば、http://www.CitySearch.com/Search/CGI)及び、システム管理者でつけた、そのサービスの名前(例えば、CitySearch)が登録されている。
【0068】
入力パラメータ定義部194には、登録されている個々のサービスに対して、入力パラメータの名前、出力内容の名前と属性が登録されている。例えば、上記CitySearchの場合、入力パラメータの名前は、zipcodeであり、出力内容の名前は、<City>と<State>であり、各々の属性は、テキストである。
【0069】
システム管理者が、URLを指定し、パラメータとして適当なものを入れて、実行ボタン197をクリックすると、ウェブ・サーバ・アプリケーション・プログラム202のサービス呼び出し管理部202を介して、ウェブ・サイトのサービス602にアクセスされ、その実行結果が、出力表示部196に表示される。ウェブ・サービスの性質に応じて、出力内容の属性には、テキスト以外に、HTML、XML、JASONなどがあり得る。XMLなどの出力結果は、構造化文書なので、全体をリストすることもできるし、特定のタグで囲まれた内容を取り出すようにすることもできる。よって、サービスのウィジェットを作成するシステム管理者は、この表示結果をみて、適宜、出力されたXML全体をリストするビューを設けたり、XMLの特定のタグで囲まれた内容を取り出すビューを作成したりする。そのようにして作成した出力ビューは、入力パラメータ定義部194から読み出されて、図7に<City>と<State>で示されるように、選択されたサービスに対応して、サービスモデル表示部162に表示される。
【0070】
実行ボタン197をクリックして実行させた結果が、満足いくものであったとシステム管理者が判断すると、システム管理者は、保存ボタン198をクリックする。すると、使用されたパラメータと出力ビューの内容で、パラメータが、そのサービスに関連付けられて入力パラメータ定義部194に定義される。
【0071】
システム管理者が、新規ボタン199をクリックすると、URL及びパラメータがブランクの画面(図示しない)が現れるので、システム管理者は、適宜URLや各種パラメータを入力して、実行ボタン197をクリックする。こうして満足のいく結果が得られたら、保存ボタン198をクリックする。すると、新しいURLと名前がサービス呼び出し定義部190に保存され、それに関連するパラメータが入力パラメータ定義部194に保存され、こうして新しいサービス呼び出し定義262が作成され、保管されたことになる。
【0072】
以上、本発明の一実施例について説明してきたが、図12のフローチャートを参照しながら、アプリケーション開発シナリオを説明することにより、本発明の理解が一層深まると思われる。
【0073】
図12で、ステップ1202では、クライアント・コンピュータ100のユーザーが、ウェブ・ブラウザ102を開き、ログインする。すると、図1のネットワーク300を介して、ウェブ・アプリケーション・サーバ202に通信が確立され、アプリケーション管理部258がログイン画面(図示しない)を返す。これに応答して、ユーザーが、ユーザーIDとパスワードを入れると、アプリケーション管理部258は、認証許可モジュール266(図3)を参照して、そのユーザーIDとパスワードを確認し認証する。
【0074】
認証が成功すると、図4に示す、アプリケーション管理環境のメニューが、ウェブ・ブラウザ102に表示される。ここで、ステップ1204に進んで、ユーザーは、アプリケーションリスト150から、既存のものを選んで、編集ボタン154をクリックするか、新規作成ボタン158をクックする。すると、アプリケーション管理部258の働きにより、クライアント開発環境用のモジュールが、クライアント・コンピュータ100にロードされて、初期化の後、ウェブ・ブラウザ102には、図5に示される画面が表示される。新規作成の場合は、アプリケーション編集部164は、白紙であり、編集の場合は、選択したアプリケーションのアプリケーション定義264が、アプリケーション管理部258から読み出されて、予め選択されているウイジェット等が、アプリケーション編集部164に描画される。また、新規であれ編集であれ、GUI部品リスト164には、予め登録してある内容がリストされる。また、サービス呼び出し管理部256は、登録されているサービス呼び出し定義204を呼び出し、そこに定義されているサービスの名前に従って、サービスリスト呼び出し部168に、サービスをリストする。
【0075】
ステップ1206では、ユーザーが、使用を意図するサービスモデル(単に、サービスとも呼ばれる)を、サービスモデル表示部162上に、マウスのクリックによりドラッグ・アンド・ドロップする。すると、その選択されたサービスの要素が、予め入力パラメータ定義部194(図11)で定義されている構造で、サービスモデル表示部162に表示される。その様子の一例が、図7に示されている。
【0076】
ステップ1208では、ユーザーは、InputとTriggerを、アプリケーション編集部164にドロップする。また、ステップ1210で、ユーザーは、他のサービスモデルの入力として使いたいOutputを、データハブ170の任意のセルにドラッグ・アンド・ドロップする。
【0077】
ステップ1212では、ドラッグ・アンド・ドロップ操作に応答して、サービスリスト表示部168が、ドラッグ・アンド・ドロップ操作のもととなったサービスモデルへの出力参照を供給する。一方で、データハブ170側では、ドラッグ・アンド・ドロップされたセルに対して、供給元とのバインドをアプリケーション定義メモリ(図示しないが、図2のメインメモリ110中に、allocateされる)に作成し、実際のデータを当該セル上に表示する。ここで、データハブ170の、ドラッグ・アンド・ドロップされたセルの近隣のセルに、近隣のセルに基づき計算式を入れる。すると、アプリケーション定義メモリに格納されている値に基づき計算が行われ、その結果が、計算式を入れたセルに反映して表示される。
【0078】
ステップ1214では、ユーザーは、次に使用するサービスモデルを、サービスモデル表示部162上に、マウスのクリックによりドラッグ・アンド・ドロップする。すると、サービスモデル表示部162には、ステップ1206で説明したのと同様の作用で、ドラッグ・アンド・ドロップされたサービスモデルのinput、outputなどの構造が表示される。
【0079】
ステップ1216では、ユーザーは、サービスモデル表示部162上に表示されたinputとtriggerに対して、データハブ170の、上記計算式を入れたセルをドラッグ・アンド・ドロップすることによって、バインドする。すると、サービスモデル表示部162は、ドラッグ・アンド・ドロップされたinputとtriggerに対する参照を供給する。一方、データハブ170は、input参照とセル参照の間のバインド、及び、trigger参照とセル参照の間のバインドを、それぞれ、アプリケーション定義メモリに作成する。
【0080】
ステップ1218では、ユーザーは、サービスモデル表示部162のoutputを、アプリケーション編集部164(図5)に、ドラッグ・アンド・ドロップする。これに応答して、アプリケーション編集部164は、サービスモデル表示部162からの出力参照を作成して、ドラッグ・アンド・ドロップされた箇所に表示する。
【0081】
次に、ステップ1220で、図5には図示されていないが、ユーザーが、所定のボタンをクリックするなどの動作によって、作成されたアプリケーションをセーブする処理を選ぶと、現在動作している、アプリケーション開発環境のモジュールは、アプリケーション定義メモリ上のデータを、サーバ・コンピュータ200の、アプリケーション管理部258(図3を参照)に送る。これに応答して、アプリケーション管理部258は、その内容を、アプリケーション定義264として、後で読み出し可能に、ハードディスク204に保存する。
【0082】
このようにして保存されたアプリケーションをユーザーが呼び出して実行したい場合は、ユーザーは、ログインの後、アプリケーション管理環境を表示するメニューを選ぶ。すると、ウェブ・サーバ・アプリケーション・プログラム202の動作によって、対応するアプリケーション管理モジュールが、クライアント・コンピュータ100にダウンロードされ、図4に示すような画面があらわける。
【0083】
ここで、ユーザーが、所定のアプリケーションを選んで、対応する実行ボタン152をクリックすると、アプリケーションを実行するモジュールが、ウェブ・サーバ・アプリケーション・プログラム202の動作によって、クライアント・コンピュータ100にダウンロードされ、動作を開始するが、このことは、図10に関連して説明したので、これ以上の説明は省略する。
【0084】
図13で、ステップ1302では、クライアント・コンピュータ100のユーザーが、ウェブ・ブラウザ102を開き、サービス呼び出し管理メニューにログインする。すると、図1のネットワーク300を介して、ウェブ・アプリケーション・サーバ202に通信が確立され、アプリケーション管理部258がログイン画面(図示しない)を返す。これに応答して、ユーザーが、ユーザーIDとパスワードを入れると、アプリケーション管理部258は、認証許可モジュール266(図3)を参照して、そのユーザーIDとパスワードを確認し認証する。通常、サービス呼び出し管理メニューにログインする権限は、図12のアプリケーション開発画面にログインする権限よりも制限されている。なぜなら、ここで登録したサービスモデルは、各ユーザーから共通に選ばれるものであるので、きちんと動作するものでなくてはならず、よって、ある程度スキルのある人が作成することが望ましいからである。
【0085】
さて、ログインすると、ウェブ・アプリケーション・サーバ202から、所定のモジュール260が、クライアント・コンピュータ100にダウンロードされ、以って、図11のようなメニューが、ウェブ・ブラウザ102の画面にあらわれる。そうして、ステップ1302では、登録サービス・リスト表示部に、エントリ182、184、186などが表示される。
【0086】
新規作成の場合は、ユーザーは、ボタン199(図11)をクリックする。そうして、ユーザーは、ステップ1306で、サービスURL、登録名、解説などを入力する。また、ステップ1308で、ユーザーは、サービスの入力パラメータを設定し、サンプルのパラメータ値を入力する。
【0087】
編集の場合は、ユーザーは、対応するエントリの編集ボタン189(図11)をクリックする。すると、サービス呼び出し管理部256から、対応するサービス呼び出し定義262がダウンロードされ、それによって、サービスプロファイル定義部192と、入力パラメータ定義部194に、データが供給される。
【0088】
ステップ1310では、ユーザーが、ボタン197をクリックすることによって、試行を行う。このことは、サービス呼び出し定義部190が必要なHTTPリクエストを構築し、サービス呼び出し部202を介して、ウェブサイトのサービス602にアクセスすることによって、行われる。特に、構築されたHTTPリクエストがGETである場合、サービス呼び出し定義部190は、ウェブサイトのサービス602に直接、リクエストを飛ばすことができる。
【0089】
こうして、サービス呼び出し定義部190は、ウェブサイトのサービス602から結果を受け取り、出力表示部196に表示する。この結果が所望であると判断すると、ユーザーは、ステップ1312で、保存ボタン198(図11)をクリックする。すると、サービス呼び出し定義部190は、出力表示部196に表示されているデータから、サービス呼び出し定義262を構築し、ウェブ・アプリケーション・サーバ202のサービス呼び出し管理部256に送る。すると、サービス呼び出し管理部256は、その送られてきたサービス呼び出し管理部256を、ハードディスク204に保存する。
【0090】
次に、この実施例に基づく、アプリケーションの開発のための操作を、具体例で説明する。ここで、ユーザーは、(1) CitySearchというウェブサイトに、zipcodeを入れることで、都市と州のデータを入手し、(2) その都市と州のデータを組み合わせて、MapCodeというウェブサイトにアクセスし、(3) その都市の緯度と経度を得る、というアプリケーションを作成することを意図している。ただ、CitySearchは、都市と州のデータを個別に返すが、MapCodeは、都市と州とを組み合わせたデータを要求する。そのことを自動的に処理するために、本発明の特徴が好適に利用される。
【0091】
図14を参照すると、アプリケーションの新規開発の初期画面が示されている。この画面では、GUI部品リスト表示部166と、プロパティ編集部172は、以下の説明では関連性が薄いので、表示を省略していることに留意されたい。さて、この画面で、ユーザーは、サービスリスト表示部168から、矢印1402で示すように、CitySearchを、サービスモデル表示部162に、ドラッグ・アンド・ドロップする。
【0092】
すると、図15に示すように、サービスモデル表示部162に、CitySearchの入出力を含む構造が表示される。この構造は、システム管理者によってCitySearchに対応して作成されて、図11に示すように、サービス呼び出し定義262に定義済みである。
【0093】
ここで、図15で、サービスモデル表示部162から、CitySearchのtriggerを、矢印1502で示すようにアプリケーション編集部164にドラッグ・アンド・ドロップし、CitySearchのinput1を、矢印1504で示すようにアプリケーション編集部164にドラッグ・アンド・ドロップする。
【0094】
すると、図16に示すように、triggerをドラッグ・アンド・ドロップした箇所は、「Go」という文字を含むボタン1602となり、input1をドラッグ・アンド・ドロップした箇所は、テキスト入力フィールド1604となる。
【0095】
ここで、図17に示すように、テキスト入力フィールド1604に、10001というzipcodeをを入れて、ボタン1602をクリックすると、図3に示すサービス呼び出し管理部256を介して、CitySearchに、zipcode=10001というパラメータを以ってアクセスがはかられ、CitySearchは、<City>に、'New York'を、<State>に'NY'を返す。ここで、ユーザーは、サービスモデル表示部162のCitySearchのOutputの<City>を矢印1702で示すように、データハブ170のセルA1にドラッグ・アンド・ドロップし、同様にOutputの<State>を矢印1704で示すように、データハブ170のセルB1にドラッグ・アンド・ドロップする。
【0096】
すると、セルA1は<City>に、セルB1は<State>にそれぞれバインドされるので、図18に示すように、データハブ170のセルA1には、'New York'が表示され、セルB1には、'NY'が表示される。
【0097】
そこで、ユーザーは、データハブ170のセルC1に、文字列結合演算子&を用いて、=A1&','&B1と計算式を入れて改行キーを押す。すると、図19に示すように、その計算式が計算されて、セルC1には、'New York,NY'が表示される。なお、この実施例では、ここでの演算子の規則は、通常のスプレッドシートプログラムで慣用の形式になるように、JavaScriptを用いてコーディングされているが、=A1+','+B2のような、他のプログラミング言語で慣用の記法を許すようにすることもできる。また、文字列結合演算子以外にも、加算、減算、その他の数学的関数など、任意の演算を実現することができることが、この分野の当業者には明らかであろう。
【0098】
さらに、この例では、セルA1とセルB1の両方に、ウェブサービスからのoutputをそれぞれ格納したが、一方のセルを、ユーザーが直接セルに打ち込んだ文字列、あるいは、他セルへの参照を含む、計算式とするなど、さまざまな応用例が考えられる。
【0099】
次に、図20に示すように、サービスリスト表示部168から、MapCodeを、サービスモデル表示部162の任意の領域に、矢印2002で示すように、ドラッグ・アンド・ドロップする。すると、図21に示すように、サービスモデル表示部162には、MapCodeの入出力を含む構造が表示される。この構造は、システム管理者によってMapCodeに対応して作成されて、図11に示すように、サービス呼び出し定義262に定義済みである。
【0100】
そこで、ユーザーは、図21の画面で、データハブ170のセルC1を、矢印2102、2104で示すように、サービスモデル表示部162内部の、MapCodeのTriggerとInput1とにそれぞれ、ドラッグ・アンド・ドロップする。Input1だけでなく、Triggerにもドラッグ・アンド・ドロップする理由は、データハブ170のセルC1の値に変更に自動的に応答して、Input1をパラメータとして、MapCodeへのアクセスが行われるようにするためである。
【0101】
なお、このとき、セルC1を直接、サービスリスト表示部168に表示されているMapCodeのInput1にドラッグ・アンド・ドロップする代わりに、MapCodeのInput1を、アプリケーション編集部164に一旦、ドラッグ・アンド・ドロップし、そのアプリケーション編集部164のドラッグ・アンド・ドロップした箇所に、セルC1をドラッグ・アンド・ドロップしてもよい。それでも、セルC1の値が、MapCodeのInput1に提供される、という意味では同じであるが、このようにしておくと、後で、アプリケーションを起動したときに、画面で、途中経過としてのMapCodeのInput1に提供された値を、ユーザーが目で見ることができる。
【0102】
実際、MapCodeのTriggerが、このドラッグ・アンド・ドロップ操作に応答して、何にも関連づけられていなかった状態から、関連付けられた状態に変化したことにより、MapCodeが、New York,NYというパラメータでアクセスされ、MapCodeは、ニューヨーク市の緯度と経度を、それぞれ、<latitude>=40.71, <longitude>=-75.59として返す。そこで、サービスモデル表示部162から、アプリケーション編集部164に、矢印2202、2204でそれぞれ示すように、MapCodeのoutputである、<latitude>及び<longitude>をドラッグ・アンド・ドロップすることにより、それらの値が、アプリケーション編集部164上で実際に見えるようになる。その様子を、図22で示す。
【0103】
これで一応アプリケーションは完成であるが、図23に示すように、後は、ユーザーは、適宜、アプリケーションを分かりやすくするための説明の文字列2302、2304、2306を追加して、アプリケーションをセーブする。
【0104】
このようにしてセーブされたアプリケーションは、図4に関連して説明した手順で、ユーザーが選択し、実行することができる。その実行画面は、図24に示すとおりである。すなわち、データハブ170を介して構築したバインドの情報は、好適には、既にXMLで表現された内部データとしてアプリケーション定義264に記述されており、データハブ170自体は、アプリケーション実行画面にはあらわれてこない。
【0105】
この画面で、ユーザーは、ZipCodeのところに例えば、95101と入れて、Goボタン2408をクリックする。すると、ユーザーには見えないが、定義に従って、CitySearchに、zipcode=95101というパラメータで、アクセスがはかられる。そこで、CitySearchは、<City>='San Jose', <State>='CA'を返す。システムはこれらから、図14〜図23に示す手順で作成され保存された内部の定義に従い、定義されたメモリ変数を、'San Jose,CA'に変更する。すると、この変更により、MapCodeがトリガされ、パラメータ'San Jose,CA'でアクセスされ、<latitude>に37.20が、<longitude>に-122.06が返される。その結果を、図25に示す。
【実施例2】
【0106】
上記の実施例は、ウェブ・サービスにアクセスするアプリケーションを作成する例について示したものであるが、当業者に容易に理解できるように、この発明は、一般的なクライアント・アプリケーションの作成にも適用できる。なお、この実施例で使用されるハードウェア及びソフトウェア環境は、例えば、図2のクライアント・コンピュータ100に関連して説明したようなものでよく、ここでは、詳細な説明を省略する。
【0107】
図26を参照すると、既存のビジュアル作成ツールで馴染みのある画面インターフェースが示されている。このインターフェースにおいて、メニューバー2602には、File, Edit, Viewなどのメニューが含まれ、特に、Fileには、フォームの新規作成、名前をつけて保存、終了などのサブメニューが含まれている。この表示画面のプログラムは、ユーザーの操作に応答して、図2に示すハードディスク104から、CPU108とオペレーティング・システムの働きで、メインメモリ110に読み出され、ディスプレイ114に表示される。
【0108】
GUI部品パレット領域2604には、テキスト入力領域、ラベル、メモ、コンボボックス、など既知のGUIが、フォームにドラッグ・アンド・ドロップ可能に配置されている。GUI部品パレット領域2604は、好適には、Tab1、Tab2、Tab3・・・のように、タブで種別分けされ、ユーザーは、貼り付けたいGUI部品があるタブを選ぶようになっている。また、フォームに貼り付けられたGUI部品の、色、フォント、その他の属性を編集するためのプロパティ編集部2606が配置されている。ここまでは、既存のアプリケーション開発ツールで提供されているものであるが、本発明が提供する新規な機能は、スプレッドシートの外観をもつ、データハブ2606の存在である。これは、実質的に、図5に示したデータハブ170と等価な働きをする。
【0109】
ユーザーはまず、メニューバーのFileから、フォームの新規作成を選ぶ。すると、図27に示すように、Form1というウインドウが作成される。そこでユーザーが、GUI部品パレット領域2604から、テキスト入力領域の部品を、Form1にドラッグ・アンド・ドロップすると、そこに、テキスト入力領域2702、2704が表示される。また、必要に応じて、ラベルもドラッグ・アンド・ドロップし、必要に応じて、説明の文字2706、2708も入れておく。
【0110】
次に、ユーザーは、図28に示すように、テキスト入力領域2702に、例えば、'Tokyo'という文字を入れ、テキスト入力領域2704に、'Japan'という文字を入れる。そうして、それぞれを、データハブ2606のセルA1とB1にドラッグ・アンド・ドロップする。すると、図29に示すように、データハブ2606のセルA1と、セルB1には、それぞれ、'Tokyo'と'Japan'が表示されている。
【0111】
そこで、セルC1に、=A1&','&B1という式を入れて改行キーを押すと、C1には、'Tokyo,Japan'というデータが表示される。そこで、ユーザーがメニューバーのFileから、フォームの新規作成を選ぶ。すると、図29に示すように、Form2というウインドウが作成される。そこで、Form2に、GUI部品パレット2604からテキスト入力領域の部品をドロップすると、そこに、テキスト入力領域2902が表示される。この段階で、データハブ2606のセルC1から、テキスト入力領域2902にドラッグ・アンド・ドロップすると、テキスト入力領域2902に、'Tokyo,Japan'が表示される。
【0112】
このようにして、データハブを介して、同一フォーム内、または異なるフォームにある領域間の関連付けがなされることが理解されよう。このようにして作成された、フィールド間の関係は、同一プロジェクト内の1つのソースコードに自動的に記述するようにすることもできる。また、関連付けのソースの側の値の変化のイベントをトラップして、関連付けのターゲットに自動的に反映するようにすることも、既知の技術の範囲で可能である。
【0113】
このビジュアルツールが、BASIC、C++、C#、Javaなどに関する場合、ユーザーがコードの記述をする必要性がなくなるような状況は考えにくいが、それでも、データハブの概念を使うことで、異なる領域間の関連付けの見通しをよくし、コード作成の能率を向上させることができると考えられる。
【0114】
以上のように、いくつかの実施例により、本発明の方法及びシステムを説明してきたが、本発明は、そのような方法あるいはシステムのみならず、CD−ROM、DVD−R、HDDなどのコンピュータ可読な媒体に格納された、あるいは、ウェブサイトからダウンロード可能なプログラムも保護範囲とするものであることを理解されたい。CD−ROM、DVD−R、またはHDD、あるいはネットワークを介して、適当なインストールプログラムの存在の下で、コンピュータに導入された、本発明に係るプログラムは、コンピュータのハードウェアと協働して、上記で説明したようなシステムを構成し、あるいは、上記で説明したような方法を実施することになる。
【0115】
また、上記実施例は、JavaScript、BASIC、C++、C#、Javaなどのコンピュータ言語に関連して、説明してきたが、これら特定のコンピュータ言語や環境に限定されるものではなく、オペレーティング・システムと協働して、上記で説明したようなGUI環境を提供できるなら、任意のコンピュータ言語やツールで実現したシステムまたは方法、あるいはそれを実現するためのコンピュータ・プログラムは、本発明の保護範囲である。
【0116】
更に、上記実施例では、データ・ハブ領域は、スプレッドシートの外観とインターフェースをもつものとして設計されているが、このような表示形式は、本発明にとって必須ではなく、そこにドラッグ・アンド・ドロップ可能な複数のフィールドと、それらのフィールドに格納された値に基づき計算した値を格納することができ、且つ他の宛先オブジェクトへドラッグ・アンド・ドロップ可能なフィールドをもつようになっているなら、任意の表示インターフェースをもつものでよいことを、理解されたい。
【図面の簡単な説明】
【0117】
【図1】ハードウェア構成の概要ブロック図である。
【図2】ハードウェア構成の、より詳細なブロック図である。
【図3】サーバ・コンピュータの機能ブロック図である。
【図4】アプリケーション管理環境の機能ブロックと、それに関連する画面表示を示す図である。
【図5】クライアント開発環境の機能ブロックと、それに関連する画面表示を示す図である。
【図6】サービスリスト表示部の表示を示す図である。
【図7】サービスモデル表示部の表示を示す図である。
【図8】データハブの表示を示す図である。
【図9】データハブを使用して複数のサービスへの問合せを連携させる様子を示す図である。
【図10】クライアント実行環境の機能ブロック図である。
【図11】サービス呼び出し管理環境の機能ブロック図である。
【図12】アプリケーションの開発シナリオを示すフローチャートである。
【図13】サービス呼び出し登録シナリオを示すフローチャートである。
【図14】アプリケーション開発画面の具体例を示す図である。
【図15】アプリケーション開発画面の具体例を示す図である。
【図16】アプリケーション開発画面の具体例を示す図である。
【図17】アプリケーション開発画面の具体例を示す図である。
【図18】アプリケーション開発画面の具体例を示す図である。
【図19】アプリケーション開発画面の具体例を示す図である。
【図20】アプリケーション開発画面の具体例を示す図である。
【図21】アプリケーション開発画面の具体例を示す図である。
【図22】アプリケーション開発画面の具体例を示す図である。
【図23】アプリケーション開発画面の具体例を示す図である。
【図24】作成されたアプリケーションの動作画面を示す図である。
【図25】作成されたアプリケーションの動作画面を示す図である。
【図26】他の実施例に係るアプリケーション開発画面の具体例を示す図である。
【図27】他の実施例に係るアプリケーション開発画面の具体例を示す図である。
【図28】他の実施例に係るアプリケーション開発画面の具体例を示す図である。
【図29】他の実施例に係るアプリケーション開発画面の具体例を示す図である。
【技術分野】
【0001】
この発明は、コンピュータ用アプリケーション・プログラムの作成システム及び方法に関するものであり、より詳しくは、主としてグラフィック・ユーザー・インターフェース(GUI)に基づき、アプリケーション・プログラムを作成するためのシステム、方法及びプログラムに関するものである。
【背景技術】
【0002】
コンピュータを使用するためには、コンピュータの中央処理ユニット(CPU)に実行され、それによって入出力装置を駆動させるためのプログラムの存在が必須である。初期の頃は、CPUが直接解釈する命令を記述し、メモリのアドレスを絶対指定するような、マシン語により記述されたものが書かれたが、そのようなプログラムだと、目で見て、どのような動作が記述されているか全く分からないため、プログラムのバグを修正したり、新しい機能を追加したりすることに困難を極めた。
【0003】
このことを改善するために、CPUが解釈するコマンドを、MOV、ADDなどの人間に分かりやすいニーモニックを用い、メモリのアドレスも相対指定することを可能とした、アセンブリ言語が開発された。そのように記述されたプログラムは、アセンブラで、CPUが実行可能なマシン語に変換される。しかし、単純な加算を記述するためだけでも、レジスタにある値を格納し、そのレジスタの値をCPUが参照するようにする、というように、演算論理がCPUに沿ったものであるため、依然として、プログラムの開発は、相当の熟練を要するものであった。
【0004】
このような困難は、1950年代に開発されたFORTRAN、COBOLなどの、コンパイラ・プログラミング言語の登場により、劇的に改善された。このような言語を使用すると、例えば加算が、A = B + C のように、通常の数式で記述することができ、WRITEのような関数で、I/O処理も、分かりやすく記述できる。このようなプログラミング言語は、手続的プログラミング言語と呼ばれ、その後も、C、C++、C#など、さまざまな工夫を盛り込んで、発展している。
【0005】
上記のような手続的プログラミング言語があらわれた頃は、画面に表示し、あるいは印刷する内容は、ABC、1123のような、単なる文字列のようなものでよかったが、1980年代になって、マルチウインドウ・システムやマウスなどのポインティング・デバイスを備えた、グラフィック・ユーザー・インターフェース(GUI)が提案されると、プログラミングは、新たな困難に遭遇することになった。
【0006】
すなわち、GUIのプログラミングを行うためには、ウインドウ上にボタン、ラジオボタン、コンボボックス、テキスト入力領域などのGUI部品を表示する位置座標を指定し、表示する文字のフォントと色を指定し、プルダウンメニューを設計し、任意の時点におけるマウスによるGUI部品のクリック、アクティブ・ウインドウの切り替えなどのイベントにリアルタイムに応答する必要がある。初期のGUIのプログラミングは、これらを全て、ソースコードで記述するものであったため、リソースの組込み、イベント駆動などの新しい概念に対処するために非常に複雑で、CやC++などの手続的プログラミング言語に熟練したプログラマにとってさえ、その習熟は、とても困難なものであった。
【0007】
このような困難を改善するために、プログラムのある部分を、マウスのクリックやドラッグなどのGUI操作で記述することを可能としたプログラム開発ツールが開発された。そのようなものの例として、マイクロソフト社のVisual Basic(R)、Visual C++(R)、Visual Studio(R)、ボーランド社のDelphi(商標)、C++ Builder(商標)、IBM社のVisualAge for Java(商標)などがある。これらのプログラム開発ツールを使用すると、GUI部品の配置は、GUI部品の見本のアイコンを並べてある領域から、配置したい所望の位置にドラッグ・アンド・ドロップするだけで達成される。また、2つのGUI部品間の関連付けも、適当なマウス操作で可能とされている。
【0008】
ただし、GUI部品の配置や関連付けを、マウス操作だけでできる、と言っても、実際の処理のためのコードやAPI関数などは、C++、BASIC、Javaなどのプログラミング言語のルールに従い、プログラマがコードを書く必要があり、依然として、コンピュータの初心者には敷居が高いものである。
【0009】
ところで、近年、WebサービスやSOA(サービス指向アーキテクチャ)と呼ばれるアプリケーション間通信の概念が提唱されてきている。これによれば、上述したようなGUIによる開発ツールのGUI部品として、URLを指定可能なものが提供されている。この部品が提供する機能を利用して、特定のURLにアクセスすると、そのURLで特定されるWebサイトは、例えば、XMLで記述された結果を返す。当該開発ツールはさらに、XMLの内容を、階層的に表示する表示用のGUI部品も用意しており、従って、URLにアクセスするGUI部品と、表示用のGUI部品とをアプリケーション・プログラムの所定の領域に貼り付けておくことによって、特定のWebサイトから返された結果を自動的に表示するWebアプリケーションを実現することができる。
【0010】
上述のようなWebアプリケーションにおいて、第1のWebサービスに問合せしたとき、複数の結果が返され、それらの結果に演算を施し、その演算結果を以って、第2のWebサービスに問合せしたい場合がある。例えば、Zip codeを送ると、第1のWebサービスは、州と都市を、個別に返すものとする。一方、第2のWebサービスは、州と都市を組み合わせた文字列を送ると、その緯度と経度を返すものとする。すると、単純にGUI部品を貼り付けただけでは、Zip codeから州と都市を、個別に得るプログラムが構成されるだけで、第2のWebサービスに正しく問合せすることができない。第2のWebサービスに正しく問合せするWebプログラムを構成するためには、第1のWebサービスから得られた州と都市の文字列を結合し、更にその結果を、第2のWebサービスに問い合わせるGUI部品に与える手順を、プログラムコードで記述する必要がある。しかし、そのようなコードを記述することは、GUI部品のIDを確認したり、文字列結合のための演算子を書いたり、演算した結果を第2のWebサービスに問い合わせるGUI部品に関連付けるコードを書いたりと、見かけよりもずっと複雑なものであり、長年の熟練を要し、初心者にはとても敷居の高い作業である。
【0011】
本願発明者は、そこで、初心者にもなじみやすいインターフェースとして、スプレッドシートの形式に注目した。実際、コンピュータの初心者であっても、スプレッドシートに数値や文字を入れて、計算することにそれほど困難は覚えないはずである。そのような視点から、本願発明者は、いくつかの従来技術を検索してみた。
【0012】
特開2006−53894は、ユーザー指定のスプレッドシート関数のサポートに関するものであり、特定のセルがユーザー定義関数の呼び出しを含んでいるとの判定に応答して、別のセルで定義されたユーザー定義関数を利用して、ユーザー定義関数の呼び出しに対する結果の値を求め、求められた結果の値から、特定のセルの値を獲得するようにすることを開示する。
【0013】
特開2005−353058は、ウェブ・ブラウザ・アプリケーション・プログラムで、スプレッドシートを表示し、変更することを可能ならしめる技術を開示する。
【0014】
特開2004−208278は、ネットワークを介して接続されたホストと端末との間で、スプレッドシートアプリケーションプログラムを用いてデータ管理を行うに際し、メールサーバを設けると共にスプレッドシートアプリケーションプログラムにおけるセルの位置、データ入出力の指示及びデータを、メールサーバのメールフォームとしてサブジェクト及びメール本文により特定し、該特定したメールフォームにより、前記セルのデータをホストと端末との間で入出力処理することを開示する。
【0015】
しかし、これらの従来技術は、上述のようなWebアプリケーションにおいて、スプレッドシートを表示用のインターフェースとして使用することにとどまっており、スプレッドシート的なインターフェースを利用して、アプリケーションプログラムの作成を支援することまでは、示唆するものではない。
【特許文献1】特開2006−53894
【特許文献2】特開2005−353058
【特許文献3】特開2004−208278
【発明の開示】
【発明が解決しようとする課題】
【0016】
従って、この発明の目的は、プログラミング技術に熟練していないユーザーでも、GUIの操作で、簡単にアプリケーション・プログラムを作成することを可能ならしめるシステム及び方法を提供することにある。
【0017】
この発明の他の目的は、高度なプログラミングスキルを要することなく、複数の入力フィールドの間の演算結果を、他のフィールドで利用可能とする、GUIベースのアプリケーション・プログラムを作成することを可能ならしめるシステム及び方法を提供することにある。
【課題を解決するための手段】
【0018】
本発明者は、複数のGUI部品と、スプレッドシートの間のデータのやりとりについて熟考した結果、上記目的は、複数のセルをもつスプレッドシート的な画面を設け、その複数のセルを介して、GUI部品間のデータを受渡しをするインターフェースを設けることによって、達成されることに想到した。
【0019】
すなわち、この発明によれば、アプリケーション・プログラムの開発段階で、例えばWebサイトからのデータを出力するような第1の領域が、表計算プログラムまたはスプレッドシート的な画面の第1のセルに関連付けるためにドラッグ・アンド・ドロップされる。次に、Webサイトからのデータを出力するような第2の領域が、そのスプレッドシート的な画面の第2のセルに関連付けるためにドラッグ・アンド・ドロップされる。次に、スプレッドシート的な画面の第3のセルには、第1のセルと第2のセルの値またはデータから演算して値を出すための所望の式が入力される。この第3のセルは、アプリケーション・プログラムの任意のシートまたはウインドウに、ドラッグ・アンド・ドロップ可能である。
【発明の効果】
【0020】
このように、本発明によれば、実質的にマウスなどのポインティング・デバイスによる操作だけで、ほとんど熟練を要することなく、所望のGUIベースのアプリケーション・プログラムを作成することができる。コードを書く必要があるのは、スプレッドシート的な画面のセルに入れる計算式だけであり、それは、通常のスプレッドシート・プログラムを使い慣れたユーザーにとって、造作もないことである。
【発明を実施するための最良の形態】
【0021】
以下、図面に従って、本発明のいくつかの実施例を説明する。これらの実施例は、本発明の好適な態様を説明するためのものであり、発明の範囲をここで示すものに限定する意図はないことを理解されたい。また、以下の図を通して、特に断わらない限り、同一符号は、同一の対象を指すものとする。
【実施例1】
【0022】
この実施例は、ウェブ・サービスのためのアプリケーション・プログラムを作成することに関する。特に、この実施例は、システムを構成するプログラミング言語として、ウェブ・ブラウザの組み込み言語の一種であるJavaScript(R)を主として使用して実現される。しかし、本発明は、そのような特定のプログラミング言語に限定されず、C++、C#、Java(R)その他、ドラッグ・アンド・ドロップ操作をサポートするAPI関数を呼び出し可能な、任意のプログラミング言語を使用可能であることを理解されたい。なお、以下の実施例で使用するドラッグ・アンド・ドロップ操作は、表示されているオブジェクト間をバインドするための操作として便利なものであるが、そのための操作として、本発明の目的にとって、ドラッグ・アンド・ドロップは必須でないことを理解されたい。例えば、ソースとなるオブジェクトを一旦クリックし、プルダウン・メニューから例えば、「関連付け」という項目を選び、次にターゲットのオブジェクトをクリックする、という操作で関連付けすることができる。あるいは、それぞれ、Ctrlキー、Altキー、あるいはキーの組み合わせの適当なショートカットとしても、ドラッグ・アンド・ドロップと等価な作用をもたらすようにプログラムできることを、当業者なら理解するであろう。
【0023】
以下、図面を参照して、この実施例を説明する。図1を参照すると、この実施例に係るハードウェア構成の概要ブロック図が示されている。図1において、クライアント・コンピュータ100と、サーバ・コンピュータ200が、例えば、イーサネット・プロトコルにより、通信回線300に接続されている。通信回線300は更に、プロキシ・サーバ400を介して、インターネット500に接続され、インターネット500を介して、様々なウェブ・サイト602、604、606・・・にアクセスすることが可能である。
【0024】
クライアント・コンピュータ100は、ハードディスク104と、イーサネット・プロトコルに対応する通信インターフェース106をもち、ハードディスク104には、オペレーティング・システム、ウェブ・ブラウザ102などの、この実施例に使用される様々なプログラムが、メモリにロード可能に記憶されている。この実施例で使用するウェブ・ブラウザ102は、JavaScriptを実行可能な任意のウェブ・ブラウザでよく、例えば、マイクロソフト社のInternet Explorer(R)、モジラ ファウンデーションのFireFox(R)、アップルコンピュータ社のSafari(R)などが使用可能である。オペレーティング・システムとしては、TCP/IP通信機能を標準でサポートし、これらのウェブ・ブラウザを動作可能な任意のものでよく、例えば、Linux(R)、マイクロソフト社のWindows XP(R)、Windows(R)2000、アップルコンピュータのMac OS(R)などを使用することができるが、ここに掲げたオペレーティング・システムには限定されない。
【0025】
サーバ・コンピュータ200は、ハードディスク204と、イーサネット・プロトコルに対応する通信インターフェース206をもち、ハードディスク204には、オペレーティング・システム、ウェブ・ブラウザ、ウェブ・アプリケーション・サーバ・プログラム(以下、ウェブ・アプリケーション・サーバとも呼ぶ)202などの、この実施例に使用される様々なプログラムが、メモリにロード可能に記憶されている。ウェブ・アプリケーション・サーバとは、HTML文書や画像情報などを蓄積しておき、ウェブ・ブラウザなどのクライアント・アプリケーションからの要求に応じて、インターネットなどのネットワークを通じて、情報を送信するプログラムである。ウェブ・アプリケーション・サーバ202としては、Apache TomCat、マイクロソフト社のInternet Information Serverなど、任意のものが使用可能である。オペレーティング・システムとしては、TCP/IP通信機能を標準でサポートし、これらのウェブ・アプリケーション・サーバを動作可能な任意のものでよく、例えば、Linux(R)、マイクロソフト社のWindows XP(R)、Windows(R)2000などを使用することができるが、ここに掲げたオペレーティング・システムには限定されない。
【0026】
次に、図2を参照して、クライアント・コンピュータ100と、サーバ・コンピュータ200の、より詳細なハードウェア構成について、説明する。
【0027】
クライアント・コンピュータ100は、CPU108と、メインメモリ110をもち、これらは、バス109に接続されている。CPUは、好適には、32ビットまたは64ビットのアーキテクチャに基づくものであり、例えば、インテル社のPentium(R) 4、AMD社のAthlon(R)などを使用することができる。バス109には、ディスプレイ・コントローラ112を介して、LCDモニタなどのディスプレイ114が接続される。ディスプレイ114は、図1で示した、ウェブ・ブラウザ102などのプログラムを表示するために使用される。バス109にはまた、IDEコントローラ116を介して、ハードディスク104と、CD−ROMドライブ118が接続される。ハードディスク104には、オペレーティング・システム、ウェブ・ブラウザ102その他のプログラムが、メインメモリ110にロード可能に記憶されている。CD−ROMドライブ118は、必要に応じて、CD−ROMからプログラムをハードディスク104に追加導入するために使用される。バス109には更に、キーボード・マウスコントローラ120を介して、文字入力手段としてのキーボード122と、ポインティング手段としてのマウス124が接続されている。キーボード122は、URLやその他の文字を、画面に入力するために使用される。マウス122は、後述するGUI部品をドラッグ・アンド・ドロップしたり、動作を開始させるためにメニューのボタンをクリックしたりするために使用される。
【0028】
通信インターフェース106は、イーサネットプロトコルに従うものであり、クライアント・コンピュータ100と、通信回線300とを、物理的に接続する役割を担い、クライアント・コンピュータ100のオペレーティング・システムの通信機能のTCP/IP通信プロトコルに対して、ネットワークインターフェース層を提供する。尚、図示されている構成は、有線接続構成であるが、例えば、IEEE802.11a/b/gなどの無線LAN接続規格に基づき、無線LAN接続するものであってもよい。
【0029】
また、通信インターフェース106は、イーサネットプロトコルに限定されるものではなく、例えば、トークンリングなどの任意のプロトコルに従うものでよく、特定の物理的通信プロトコルに限定されない。
【0030】
サーバ・コンピュータ200は、CPU208と、メインメモリ210をもち、これらは、バス209に接続されている。クライアント・コンピュータ200においても、CPUは、好適には、32ビットまたは64ビットのアキーテクチャに基づくものであり、例えば、インテル社のPentium(R) 4、Xeon(R)、AMD社のAthlon(R)などを使用することができる。バス209には、ディスプレイ・コントローラ212を介して、LCDモニタなどのディスプレイ214が接続される。ディスプレイ214は、詳細は後で説明するが、システム管理者が、インターネット接続用のGUI部品などを作成したり、JavaScriptのプログラムを書いて、クライアント・プログラム100から呼び出し可能に登録したり、クライアント・プログラム100を介してアクセスするユーザーのユーザーIDとパスワードを登録したりするために使用される。
【0031】
バス209にはまた、IDEコントローラ216を介して、ハードディスク204と、CD−ROMドライブ218が接続される。ハードディスク204には、オペレーティング・システム、ウェブ・ブラウザ102その他のプログラムが、メインメモリ210にロード可能に記憶されている。
【0032】
CD−ROMドライブ218は、必要に応じて、CD−ROMからプログラムをハードディスク204に追加導入するために使用される。バス209には更に、キーボード・マウスコントローラ220を介して、キーボード222と、マウス224が接続されている。キーボード222は、URLやその他の文字を、画面に入力するために使用される。マウス222は、システム管理者が、後述するGUI部品を作成したりするために使用される。
【0033】
通信インターフェース206は、イーサネットプロトコルに従うものであり、サーバ・コンピュータ200と、通信回線300とを、物理的に接続する役割を担い、サーバ・コンピュータ200のオペレーティング・システムの通信機能のTCP/IP通信プロトコルに対して、ネットワークインターフェース層を提供する。サーバ・コンピュータ200においても、図示されている構成は、有線接続構成であるが、例えば、IEEE802.11a/b/gなどの無線LAN接続規格に基づき、無線LAN接続するものであってもよい。
【0034】
また、通信インターフェース206は、イーサネットプロトコルに限定されるものではなく、例えば、トークンリングなどの任意のプロトコルに従うものでよく、特定の物理的通信プロトコルに限定されない。
【0035】
サーバ・コンピュータ200のハードディスク204には、前述したオペレーティング。システムとウェブ・アプリケーション・サーバ202以外に、後述する、本発明に係る開発環境を提供するプログラムも格納される。この開発環境は、例えば、JavaScriptのライブラリである、Dojo Toolkitにより提供されるモジュールと、本発明者らがJavaScript言語を用いて書いたモジュールの組み合わせからなる。Dojo Toolkitの詳細については、例えば、http://dojotoolkit.org/を参照されたい。このように開発環境をサーバ・コンピュータ200のハードディスク204に格納しておく理由は、サーバ・コンピュータ200にログインした任意のクライアント・コンピュータ100で、ウェブ・アプリケーション・サーバ202の機能により、開発環境をダウンロードして、開発を開始することができるようにするためである。
【0036】
尚、本発明は、JavaScriptにより作成されたモジュールに限定されるものではないことを理解されたい。ブラウザ組み込み型言語として知られている、JScript、VBSCriptなどを使用して、本発明を実現することも可能である。また、JSPと呼ばれる、HTML中に埋め込まれたJavaプログラムを実行し、処理結果をウェブ・ブラウザに対して返すという仕組みを用いることもできる。
【0037】
さらに、図1及び図2では、クライアント/サーバの構成が示されているが、クライアント・コンピュータ100だけの構成でも、本発明を実現することは可能である。その場合、クライアント・コンピュータ100に直接、上記開発環境やモジュールを常駐させておけばよい。そうして、インターネットへのアクセスは、図1に示す、通信回線300とプロキシサーバ400を介して、直接行われる。
【0038】
さらにまた、図1では、クライアント・コンピュータとサーバ・コンピュータはともに、ファイアーウォールの内側にあるが、サーバ・コンピュータを、ファイアーウォールの外側に置いてもよい。その際、もしセキュリティ的に懸念があれば、VPNなどの仕組みで、セキュリティを強化することも可能である。
【0039】
次に、図3を参照して、サーバ・コンピュータ200における、ウェブ・アプリケーション・サーバ202の機能について、より詳細に説明する。図2では、ある程度具体的なハードウェア構成のブロック図を説明したが、ここで再び、必要に応じて、より抽象度の高い、ソフトウェア・モジュールのブロック図が説明に使用されることに留意されたい。
【0040】
図3において、ウェブ・アプリケーション・サーバ202は、アプリケーション実行部252と、サービス呼び出し部254と、サービス呼び出し管理部256と、アプリケーション管理部258とをもつ。
【0041】
ハードディスク204には、サービス呼び出し定義262と、アプリケーション定義264が、呼び出し可能に記録されている。サービス呼び出し定義262には、予めシステム管理者により用意された、個々のウェブサイトにアクセスするためのサービス・モデル要素(ウイジェット(widget)とも呼ばれる)が複数格納されている。サービス・モデル要素の作成及び編集については、図11を参照して、後で説明する。アプリケーション定義264には、クライアント・コンピュータ100のユーザーが予め作成した、サービス呼び出し定義262に定義されているウイジェット及びその他の処理手順を含むアプリケーション・プログラムが保存されている。
【0042】
認証許可ブロック266は、例えば、システム管理者により予め用意された、クライアント・コンピュータ100のユーザーのユーザーIDと、パスワードの組である。これらの情報は、例えば、ハードディスク204に記憶され、クライアント・コンピュータ100のユーザーが、サーバ・コンピュータ200にログインするとき、ユーザーIDと、それに対応するパスワードの組の入力を求められることになる。
【0043】
アプリケーション実行部252の基本的な機能は、ウェブ・ブラウザ102から送られたコマンドを解釈して実行することである。サービス呼び出し部254には、URLやパラメータが定義され、アプリケーション実行部252は、サービス呼び出し部254内のURLやパラメータを使って、直接、ウェブサイトのサービス602にアクセスすることができる。尚、ここで、URLとは例えば、http://www.xyz.com/Service/CGI/purchase.cgiのようなものであり、パラメータとは、http://www.xyz.com/Service/CGI/purchase.cgi?&cost=parm1&goods=parm2における、costやgoodsのようなものである。サービス呼び出し管理部256は、ウェブ・ブラウザ102からの要求に応じて、アプリケーション定義264から、アクセスしているクライアント・コンピュータ100のユーザーが所有者であるアプリケーション・プログラムを呼び出して、編集/実行/削除可能とする。このとき、アプリケーション・プログラムの所有者の情報は、ログインしているユーザーIDによって知ることができる。
【0044】
ウェブ・アプリケーション・サーバ202内に示されている、クライアント・モジュール260は、通常はハードディスク204に保存され、ウェブ・ブラウザ102からの要求に応じて、クライアント・コンピュータ100にダウンロードされる。この実施例では、クライアント・モジュール260の典型的な形式は、拡張子jsで表される、JavaScriptのファイルである。すなわち、JavaScriptの記法は、
<script type="text/javascript">
<!--
実際のJavaScriptのコード
//-->
</script>
のような直接書き込む記法と、
<script src="abc.js" type="text/javascript"></script>
のような、JavaScriptのファイル名を指定し呼び出す方法とがある。この実施例では、主として、JavaScriptのファイル名を指定し呼び出す方法をとる。
【0045】
次に、図4を参照して、クライアント・コンピュータ100における、アプリケーション管理環境について説明する。クライアント・コンピュータ100のユーザーが、サーバー・コンピュータ200にログインすると、ウェブ・アプリケーション・サーバ202の処理によって、クライアント・コンピュータ100には、クライアント・コンピュータ200から、好適にはJavaScriptで書かれた、アプリケーション管理モジュール260がダウンロードされる。このアプリケーション管理モジュール260の働きにより、アプリケーション管理部258に、ログインしているユーザーのユーザーIDを含むコマンドが送られアプリケーション管理部258は、そのユーザーが所有者であるアプリケーション・プログラムを、アプリケーション定義264から検索して、クライアント・コンピュータ100に送り返す。これにより、インターネット・プラウザ102の画面には、アプリケーション管理モジュール260の働きにより、図示のような、アプリケーション・リスト150が表示される。
【0046】
このリスト150は、そのユーザーが所有者であるアプリケーション1〜4を表示し、その右には、「実行」と表示されたボタン152と、「編集」と表示されたボタン154と、「削除」と表示されたボタン156が配置される。ボタン152を、マウス124(図2)でクリックすることに応答して、サーバー・コンピュータ200から、実行環境用のモジュールがダウンロードされ、その行のプログラムの実行環境(後述する)に移行する。ボタン154を、マウス124でクリックすることに応答して、サーバー・コンピュータ200から、開発環境用のモジュールがダウンロードされ、その行のプログラムの開発環境(図5)に移行する。ボタン156を、マウス124でクリックすることにより、その行のプログラムを削除する指令がアプリケーション管理部258に送られ、それに応答して、アプリケーション管理部258は、ハードディスク204から、その対応するアプリケーション・プログラムを削除する。「新規作成」と表示されたボタン158をクリックすると、それに応答して、サーバー・コンピュータ200から、開発環境用のモジュールがダウンロードされ、新規の状態での開発環境に移行する。
【0047】
次に、図5を参照して、本発明の中心的な特徴である、開発環境について、説明する。図4に示すウェブ・ブラウザ102の画面で、編集ボタン154、または新規作成ボタン158を、マウス124でクリックすることによって、ウェブ・アプリケーション・サーバ202によって、開発環境用のモジュールが、アプリケーション管理モジュール260から、クライアント・コンピュータ100にダウンロードされ、それによって、図5に示すような画面が、ウェブ・ブラウザ102に表示され、開発環境の使用が可能になる。開発環境は、サービスモデル表示部162と、アプリケーション編集部164と、GUI部品表示部166と、サービスリスト表示部168と、データハブ170と、プロパティ編集部172、という複数の領域からなる。この実施例では、サービスモデル表示部162と、GUI部品表示部166とが、そこからGUI部品をアプリケーション編集部164に貼り付けることができる、パレット領域である。これらの領域は、この実施例では、タイル型に区分けされた領域であるが、個々の領域で互いに重畳を許す、マルチウインドウ表示方式で実装してもよい。
【0048】
GUI部品リスト表示部166は、詳細は図示しないが、ボタン、エディット領域、メモ、ラベル、コンボボックス、ラジオボタンなどの、GUI部品を表示し、そこから、アプリケーション編集部164に、GUI部品をドラッグ・アンド・ドロップ可能である。
【0049】
サービスリスト表示部168は、システム管理者が予め作成した、ウェブサービスアクセス用のサービスをリストするものである。図6にその例を示す。図6では、Zipコードを入力すると、都市と州を返すウェブ・サイトである、CitySearch、製品の価格を調べるためのPrice.com、ウェブ上で地図を表示するためのWebMap、都市と州から、その緯度と経度を返す、MapCodeが表示されている。なお、これらは説明の例示のためのウェブ・サイトであり、必ずしも実在するウェブ・サイトに対応するものではないことを理解されたい。
【0050】
サービスモデル表示部162は、サービスリスト表示部168で選ばれているサービスの、トリガ(Trigger)要素として示された入力要素と、Outputとして示された出力要素を、階層的且つ図式的に表示する領域である。これらの表示された入力要素と、出力要素は、アプリケーション編集部164あるいは、後述するデータハブ170に、ドラッグ・アンド・ドロップ可能であり、また、アプリケーション編集部164あるいは、データハブ170から、ドラッグ・アンド・ドロップ可能である。
【0051】
サービスの出力要素として、単なるテキスト文字列以外に、例えば、XMLで構造化されたリストをとることがあり得る。出力要素が単なるテキスト文字列である場合は、そこからデータハブ170にドラッグ・アンド・ドロップされたとき、データハブ170で占めるセルは、単一であるが、出力要素がリストである場合は、そこからデータハブ170にドラッグ・アンド・ドロップされたとき、データハブ170で、当該リストに含まれる文字列または数字の数のセルを占め、且つそのセルの各々に、リストに対応する文字列または数字が格納されることを理解されたい。
【0052】
アプリケーション編集部164は、GUI部品リスト表示部166からGUI部品を、サービスモデル表示部162から、Trigger要素、入力要素あるいは出力要素を、それぞれ、ドラッグ・アンド・ドロップ可能である。
【0053】
サービスモデル表示部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のように、パラメータは、複数取りえる。なお、ウェブサービスは、必ず入力パラメータまたは要素をもつとは限らず、入力要素のないウェブサービスもあり得ることを理解されたい。例えば、単に現在のグリニッジ標準時を返すようなウェブサービスだと、パラメータは不要である。
【0054】
一方、ウェブサイトにアクセスしたとき返されるデータは、HTMLであったり、XMLであったり、JavaScript言語の仕様の一部を利用した、比較的軽いデータ交換フォーマットである、JSON(JavaScript Object Notation)であったりする。このように、ウェブサイトにアクセスしたとき返されるデータは、構造化されたデータであり得るので、サービスモデル表示部162の出力要素として、ドラッグ・アンド・ドロップ可能な単位も、返されるXMLのリスト全体であったり、そのリストの一部であったり、と多様な形態を取りえる。
【0055】
また、この実施例で、ウェブサイトまたはウェブサービスにアクセスされるときは、好適には、Ajaxと呼ばれる技術に基づく、XMLHttpRequestと呼ばれる、サーバとの非同期通信が利用される。この技術を利用することによって、画面の書き換えを迅速化し、且つデータ通信量を低減することができる。但し、通常のHTTPプロトコルのコマンドを利用するものであってもよい。
【0056】
データ連携領域としてのデータハブ170は、好適には、スプレッドシート(表計算プログラムとも呼ばれる)の外観のインターフェースをもつものであり、縦横に区分けされた区域からなる。これらの区域を、スプレッドシート・プログラムの慣用に倣って、A1、A2、B1などの名前のセルと呼ぶことにする。各セルには、ユーザーが値を入れることもできるし、アプリケーション編集部164に貼り付けられたGUI部品からドラッグ・アンド・ドロップ可能であるし、スプレッドシートでよく知られた形式の、=A1+B1や、=A1&","&B1のような計算式を入れることもできる。どのような式を許容するかは、JavaScriptなどを使用したプログラミングのコードに依存する。一方、それらの各セルを、逆に、アプリケーション編集部164に貼り付けられているGUI部品、あるいは、サービスモデル表示部162に表示されているサービスの入力要素を宛先として、ドラッグ・アンド・ドロップ可能である。すなわち、この実施例では、データハブ170は、上記のようなドラッグ・アンド・ドロップ、及びセル間の様々な計算機能を提供するように、JavaScriptの機能を利用して作り込まれている。
【0057】
前述したように、データハブ170には、ウェブサービスの出力要素として、XMLなどで記述されたリスト出力要素が貼り付けられることがあり、そのような場合、リスト出力要素がデータハブ170にドラッグ・アンド・ドロップされると、リストに含まれる要素の数だけのセルを、占めることになる。このように、リストからドラッグ・アンド・ドロップされた複数のセルに対しては、統計処理を行う必要性があり得るので、この実施例では、=SUM(A1..E1)のような合計関数、=AVERAGE(A1..E1)のような平均関数、=STDEVA(A1..E1)のような標準偏差関数、=MAX(A1..E1)のような最大関数、=MIN(A1..E1)のような最小関数などさまざまな統計関数も用意されている。このような数式処理のJavaScriptによる実装は、プログラミング技法として確立されたものなので、特に詳述しない。
【0058】
この実施例では、ドラッグ・アンド・ドロップ処理は、Dojoライブラリのツールキットを使用して実現されており、それは、下記のようなコードとなる。
drag ソース側: var ds = new dojo.dnd.HtmlDragSource(domNode, dragSourceName);
drop ターゲット側: var dt = new dojo.dnd.HtmlDropTarget(domNode, dropTargetName);
また、ドラッグ・アンド・ドロップによってバインドした情報は宣言的な形式(XML)で保持される。下記は、その記法の一例で、InputText_0という名前のsourceWidget(ドラッグ・アンド・ドロップ元のGUI要素)と、Action_0という名前のtargetWidget(ドラッグ・アンド・ドロップ先のGUI要素)を関連付けることが指定されている。
<Application:WidgetPropertyBinding sourceWidget="InputText_0" sourcePropertye="value" sourceEvent="setValue" targetWidget="Action_0" targetProperty="value">
</Application:WidgetPropertyBinding>
なお、この分野の当業者なら、このようなツール・キットの使用及び記法は、一例に過ぎず、同等な様々な技術を使用できることを理解するはずである。例えば、Windows(R) 2000、Windows XP(R)などのオペレーティング・システムは、DragQueryPointなどのいくつかのドラッグ・アンド・ドロップ関係のAPI関数を用意しているので、これらを適宜呼び出して処理することもできる。
【0059】
また、データハブ170で、ユーザーが数式を入力したセルは、一般的には、サービス・モデル表示部162に表示されたサービス・モデルの、入力要素、トリガ要素などにドラッグ・アンド・ドロップされて、関連付けられる。しかし、このような要素上ではなく、例えば、アプリケーション編集部164の空白領域に直接ドラッグ・アンド・ドロップすることによって、そこに、テキスト入力領域のGUI部品を自動的に貼り付け、そこに、ドラッグ・アンド・ドロップのもととなったデータハブ170のセルの値が関連付けられるように、図5のクライアント開発環境の機能を設定しておくこともできる。例えば、GUI部品リスト表示部166からアプリケーション編集部164の空白領域へのドラッグ・アンド・ドロップは、慣用的な技術によって、選択したGUI部品のアプリケーション編集部164上への配置をもたらす。従って、これと同様の技術を利用して、データハブ170のセルから、アプリケーション編集部164の空白領域へのドラッグ・アンド・ドロップが行われることに応答して、ドラッグ・アンド・ドロップされた箇所に、テキスト入力領域をあらわすGUI部品を貼り付け、続いて、そのテキスト入力領域に、ドラッグ・アンド・ドロップの元のデータハブ170のセルから、関連付けを行う、という処理が自動的に行われるように、クライアント開発環境に機能を付与することができる。
【0060】
プロパティ編集部172は、一旦アプリケーション編集部164に貼り付けられ、マウスのクリックにより選択されたGUI部品またはサービスの入出力要素の、色、フォント、表示/非表示、Enable/Disableなどの属性を設定、あるいは変更するためのものである。
【0061】
図9に、データハブ170を利用した、複数のウェブ・サービスの連携の例を、模式的に示す。図9で、サービス1は、inputとして、input1をもち、outputとして、<output1>、<output2>をもつ。サービス2は、inputとして、input1をもち、outputとして、<output1>、<output2>をもつ。サービス3及びサービス4はそれぞれ、inputとして、input1及びinput2をもち、outputとして、<output1>をもつものとする。アクセスしようとするウェブ・サービスのサイトの仕様に基づき、図7と図9に例示するようなinput及びoutputを備えたウイジェット(widget)を作成する方法は、後述する。
【0062】
そこで、サービス1の<output1>、<output2>とにある演算を施した結果を、サービス2のinput1として与え、その結果に応答する、サービス2の<output1>、<output2>を、そのまま、サービス3のinput1、input2としてそれぞれ与えるとともに、サービス2の<output1>、<output2>とにある演算を施した結果を、サービス4のinput2に与え、サービス1の<output1>、<output2>とにある演算を施した結果に更に、サービス4のinput1に与える、というシナリオを考える。このために、サービス1の<output1>、<output2>は、データハブ170のセルA1、B1にドラッグ・アンド・ドロップされる。セルC1には、A1とB1の所定の計算式が書かれる。そうして、セルC1は、サービス2のinput1にドラッグ・アンド・ドロップされる。サービス2の<output1>、<output2>はそれぞれ、データハブ170のセルC2、D2にドラッグ・アンド・ドロップされる。セルE2には、C2とD2の所定の計算式が書かれる。サービス2の<output1>、<output2>は、データハブ170を介することなく、直接、サービス3のinput1と、input2にそれぞれ、ドラッグ・アンド・ドロップされる。さらに、データハブ170のセルC1が、サービス4のinput1にドラッグ・アンド・ドロップされ、データハブ170のセルE2が、サービス4のinput2にドラッグ・アンド・ドロップされる。現実的には、ここまで複雑なシナリオは、実際上あまりないと思われるが、本発明のデータハブを利用するビジュアル的なプログラミングの利点を説明するために、このような少し極端な例を示してみた。すなわち、もしデータハブ170のようなインターフェースを用いないと、等価な機能のプログラムを実現するために、非常に複雑なコードを書かなくてはならず、一方、本発明によれば、スプレッドシートを使う初歩的なスキルだけで、同等の機能のプログラムが簡単に実現できることを理解されよう。
【0063】
さて、サービス1のinput1は、ユーザーがキーボードなどから情報を入力するものとし、Triggerボタンのクリックに応答して、指定されたウェブ・サイトにアクセスし、その結果がデータハブ170の指定したセルを介して、サービス2、3及び4に、自動的に所望の結果を与えることが、図9からは、図式的に見て取れよう。尚、図9では、セルC1は、サービス2のTriggerにもドラッグ・アンド・ドロップされ、サービス2の<output1>は、Triggerにもドラッグ・アンド・ドロップされ、セルE2は、サービス4のTriggerにもドラッグ・アンド・ドロップされていることに留意されたい。これは、JavaScriptの、OnChangeというイベントハンドラによって、ドラッグ・アンド・ドロップ元の値の変化をトリガし、次のサービスを自動的に開始するようにするためである。こうしておくと、サービス1の<output1>及び<output2>のデータの変化によって、セルC1のデータが変化すると、サービス2のトリガ→サービス2の<output1>及び<output2>のデータの変化→サービス3のトリガ、及びセルE2の変化→サービス4のトリガ、が順次自動的に行われる。
【0064】
次に図10を参照して、クライアントの実行環境について、説明する。図4に戻って、アプリケーション1の隣の実行152というボタンをクリックすると、ウェブ・アプリケーション・サーバ202の機能により、アプリケーション実行モジュール260のうち、クライアント実行環境に関するモジュールが、クライアント・コンピュータ100にダウンロードされる。クライアント実行環境に関するモジュールは、アプリケーション定義解釈部260aと、アプリケーション表示部260bとからなる。今回選択されているのは、アプリケーション1(図4)なので、アプリケーション管理部258から、アプリケーション1のアプリケーション定義264がダウンロードされて、アプリケーション定義解釈部260aで実行される。アプリケーション定義解釈部260aの実行結果に基づき、アプリケーション表示部260bの働きにより、ウェブ・ブラウザ102の画面には、選択したアプリケーション1が表示され、その実行に応じて表示結果が更新される。
【0065】
なお、図1及び図2からも見て取れるように、クライアント・コンピュータ106は、サーバ・コンピュータ200を介することなく、プロキシ・サーバ400を通じて直接、ウェブサイト602〜606にアクセスすることが可能である。しかし、サーバ・コンピュータ200からダウンロードしたモジュールを使って、クライアント・コンピュータ106が、サーバ・コンピュータ200を介さないで、外部のウェブサイトにアクセスすることは、クロスサイト・セキュリティホールと呼ばれる問題を生じる惧れがある。このため、この実施例では、図10に示すように、ウェブ・アプリケーション・サーバ202からダウンロードされたモジュールにより実行されるアプリケーションは、必ず、ウェブ・アプリケーション・サーバ202内のアプリケーション実行部252を介して、外部のウェブサイトにアクセスするような仕組みが採用されている。
【0066】
次に、図11を参照して、サービス呼出し管理環境について説明する。ここでサービスと呼ぶのは、例えば、図8でCitySearch、Price.comなどとして表示した、サービスを提供するウェブ・サイトのことである。ユーザーが、サービス呼び出し管理環境ログイン画面(図示しない)で、所定のユーザーIDとパスワードでログインすると、ウェブ・アプリケーション・サーバ202から、サービス呼出し管理環境用のモジュール260がダウンロードされて、ウェブ・ブラウザ102の画面には、図11に示すように、登録サービス・リスト表示部180と、サービス呼び出し定義部190からなるメニューが、表示される。なお、この実施例では、サービス呼出し管理環境にログインする権限は、図4に示すアプリケーション管理環境にログインする権限よりも制限されていて、通常、システム管理者の役目をもつ人達にのみ許されていることを理解されたい。その理由は、一旦作成したサービスのウイジェットは、図5に示す開発画面で、サービスリスト表示部168に現れて、どのユーザーにも使用可能なものなので、信頼された動作をするものでなくてはならないからである。
【0067】
さて、登録サービス・リスト表示部180には、ウェブ・サーバ・アプリケーション・プログラム202のサーバ・サービス呼び出し管理部256から読み出されたサービス呼び出し定義262に基づいて、登録済みのサービスがリストされる。実際上、エントリ182、184、186の箇所に、登録されているサービスの名称(例えば、図8におけるCitySearchなど)が表示される。その右の編集ボタン186をクリックすることにより、そのサービスを編集するメニュー(図示しない)となる。あるいは、削除ボタン189をマウスでクリックすることにより、そのサービスが、サービス呼び出し定義262から削除される。登録されている個々のサービスに対して、サービスプロファイル定義部には、URL(例えば、http://www.CitySearch.com/Search/CGI)及び、システム管理者でつけた、そのサービスの名前(例えば、CitySearch)が登録されている。
【0068】
入力パラメータ定義部194には、登録されている個々のサービスに対して、入力パラメータの名前、出力内容の名前と属性が登録されている。例えば、上記CitySearchの場合、入力パラメータの名前は、zipcodeであり、出力内容の名前は、<City>と<State>であり、各々の属性は、テキストである。
【0069】
システム管理者が、URLを指定し、パラメータとして適当なものを入れて、実行ボタン197をクリックすると、ウェブ・サーバ・アプリケーション・プログラム202のサービス呼び出し管理部202を介して、ウェブ・サイトのサービス602にアクセスされ、その実行結果が、出力表示部196に表示される。ウェブ・サービスの性質に応じて、出力内容の属性には、テキスト以外に、HTML、XML、JASONなどがあり得る。XMLなどの出力結果は、構造化文書なので、全体をリストすることもできるし、特定のタグで囲まれた内容を取り出すようにすることもできる。よって、サービスのウィジェットを作成するシステム管理者は、この表示結果をみて、適宜、出力されたXML全体をリストするビューを設けたり、XMLの特定のタグで囲まれた内容を取り出すビューを作成したりする。そのようにして作成した出力ビューは、入力パラメータ定義部194から読み出されて、図7に<City>と<State>で示されるように、選択されたサービスに対応して、サービスモデル表示部162に表示される。
【0070】
実行ボタン197をクリックして実行させた結果が、満足いくものであったとシステム管理者が判断すると、システム管理者は、保存ボタン198をクリックする。すると、使用されたパラメータと出力ビューの内容で、パラメータが、そのサービスに関連付けられて入力パラメータ定義部194に定義される。
【0071】
システム管理者が、新規ボタン199をクリックすると、URL及びパラメータがブランクの画面(図示しない)が現れるので、システム管理者は、適宜URLや各種パラメータを入力して、実行ボタン197をクリックする。こうして満足のいく結果が得られたら、保存ボタン198をクリックする。すると、新しいURLと名前がサービス呼び出し定義部190に保存され、それに関連するパラメータが入力パラメータ定義部194に保存され、こうして新しいサービス呼び出し定義262が作成され、保管されたことになる。
【0072】
以上、本発明の一実施例について説明してきたが、図12のフローチャートを参照しながら、アプリケーション開発シナリオを説明することにより、本発明の理解が一層深まると思われる。
【0073】
図12で、ステップ1202では、クライアント・コンピュータ100のユーザーが、ウェブ・ブラウザ102を開き、ログインする。すると、図1のネットワーク300を介して、ウェブ・アプリケーション・サーバ202に通信が確立され、アプリケーション管理部258がログイン画面(図示しない)を返す。これに応答して、ユーザーが、ユーザーIDとパスワードを入れると、アプリケーション管理部258は、認証許可モジュール266(図3)を参照して、そのユーザーIDとパスワードを確認し認証する。
【0074】
認証が成功すると、図4に示す、アプリケーション管理環境のメニューが、ウェブ・ブラウザ102に表示される。ここで、ステップ1204に進んで、ユーザーは、アプリケーションリスト150から、既存のものを選んで、編集ボタン154をクリックするか、新規作成ボタン158をクックする。すると、アプリケーション管理部258の働きにより、クライアント開発環境用のモジュールが、クライアント・コンピュータ100にロードされて、初期化の後、ウェブ・ブラウザ102には、図5に示される画面が表示される。新規作成の場合は、アプリケーション編集部164は、白紙であり、編集の場合は、選択したアプリケーションのアプリケーション定義264が、アプリケーション管理部258から読み出されて、予め選択されているウイジェット等が、アプリケーション編集部164に描画される。また、新規であれ編集であれ、GUI部品リスト164には、予め登録してある内容がリストされる。また、サービス呼び出し管理部256は、登録されているサービス呼び出し定義204を呼び出し、そこに定義されているサービスの名前に従って、サービスリスト呼び出し部168に、サービスをリストする。
【0075】
ステップ1206では、ユーザーが、使用を意図するサービスモデル(単に、サービスとも呼ばれる)を、サービスモデル表示部162上に、マウスのクリックによりドラッグ・アンド・ドロップする。すると、その選択されたサービスの要素が、予め入力パラメータ定義部194(図11)で定義されている構造で、サービスモデル表示部162に表示される。その様子の一例が、図7に示されている。
【0076】
ステップ1208では、ユーザーは、InputとTriggerを、アプリケーション編集部164にドロップする。また、ステップ1210で、ユーザーは、他のサービスモデルの入力として使いたいOutputを、データハブ170の任意のセルにドラッグ・アンド・ドロップする。
【0077】
ステップ1212では、ドラッグ・アンド・ドロップ操作に応答して、サービスリスト表示部168が、ドラッグ・アンド・ドロップ操作のもととなったサービスモデルへの出力参照を供給する。一方で、データハブ170側では、ドラッグ・アンド・ドロップされたセルに対して、供給元とのバインドをアプリケーション定義メモリ(図示しないが、図2のメインメモリ110中に、allocateされる)に作成し、実際のデータを当該セル上に表示する。ここで、データハブ170の、ドラッグ・アンド・ドロップされたセルの近隣のセルに、近隣のセルに基づき計算式を入れる。すると、アプリケーション定義メモリに格納されている値に基づき計算が行われ、その結果が、計算式を入れたセルに反映して表示される。
【0078】
ステップ1214では、ユーザーは、次に使用するサービスモデルを、サービスモデル表示部162上に、マウスのクリックによりドラッグ・アンド・ドロップする。すると、サービスモデル表示部162には、ステップ1206で説明したのと同様の作用で、ドラッグ・アンド・ドロップされたサービスモデルのinput、outputなどの構造が表示される。
【0079】
ステップ1216では、ユーザーは、サービスモデル表示部162上に表示されたinputとtriggerに対して、データハブ170の、上記計算式を入れたセルをドラッグ・アンド・ドロップすることによって、バインドする。すると、サービスモデル表示部162は、ドラッグ・アンド・ドロップされたinputとtriggerに対する参照を供給する。一方、データハブ170は、input参照とセル参照の間のバインド、及び、trigger参照とセル参照の間のバインドを、それぞれ、アプリケーション定義メモリに作成する。
【0080】
ステップ1218では、ユーザーは、サービスモデル表示部162のoutputを、アプリケーション編集部164(図5)に、ドラッグ・アンド・ドロップする。これに応答して、アプリケーション編集部164は、サービスモデル表示部162からの出力参照を作成して、ドラッグ・アンド・ドロップされた箇所に表示する。
【0081】
次に、ステップ1220で、図5には図示されていないが、ユーザーが、所定のボタンをクリックするなどの動作によって、作成されたアプリケーションをセーブする処理を選ぶと、現在動作している、アプリケーション開発環境のモジュールは、アプリケーション定義メモリ上のデータを、サーバ・コンピュータ200の、アプリケーション管理部258(図3を参照)に送る。これに応答して、アプリケーション管理部258は、その内容を、アプリケーション定義264として、後で読み出し可能に、ハードディスク204に保存する。
【0082】
このようにして保存されたアプリケーションをユーザーが呼び出して実行したい場合は、ユーザーは、ログインの後、アプリケーション管理環境を表示するメニューを選ぶ。すると、ウェブ・サーバ・アプリケーション・プログラム202の動作によって、対応するアプリケーション管理モジュールが、クライアント・コンピュータ100にダウンロードされ、図4に示すような画面があらわける。
【0083】
ここで、ユーザーが、所定のアプリケーションを選んで、対応する実行ボタン152をクリックすると、アプリケーションを実行するモジュールが、ウェブ・サーバ・アプリケーション・プログラム202の動作によって、クライアント・コンピュータ100にダウンロードされ、動作を開始するが、このことは、図10に関連して説明したので、これ以上の説明は省略する。
【0084】
図13で、ステップ1302では、クライアント・コンピュータ100のユーザーが、ウェブ・ブラウザ102を開き、サービス呼び出し管理メニューにログインする。すると、図1のネットワーク300を介して、ウェブ・アプリケーション・サーバ202に通信が確立され、アプリケーション管理部258がログイン画面(図示しない)を返す。これに応答して、ユーザーが、ユーザーIDとパスワードを入れると、アプリケーション管理部258は、認証許可モジュール266(図3)を参照して、そのユーザーIDとパスワードを確認し認証する。通常、サービス呼び出し管理メニューにログインする権限は、図12のアプリケーション開発画面にログインする権限よりも制限されている。なぜなら、ここで登録したサービスモデルは、各ユーザーから共通に選ばれるものであるので、きちんと動作するものでなくてはならず、よって、ある程度スキルのある人が作成することが望ましいからである。
【0085】
さて、ログインすると、ウェブ・アプリケーション・サーバ202から、所定のモジュール260が、クライアント・コンピュータ100にダウンロードされ、以って、図11のようなメニューが、ウェブ・ブラウザ102の画面にあらわれる。そうして、ステップ1302では、登録サービス・リスト表示部に、エントリ182、184、186などが表示される。
【0086】
新規作成の場合は、ユーザーは、ボタン199(図11)をクリックする。そうして、ユーザーは、ステップ1306で、サービスURL、登録名、解説などを入力する。また、ステップ1308で、ユーザーは、サービスの入力パラメータを設定し、サンプルのパラメータ値を入力する。
【0087】
編集の場合は、ユーザーは、対応するエントリの編集ボタン189(図11)をクリックする。すると、サービス呼び出し管理部256から、対応するサービス呼び出し定義262がダウンロードされ、それによって、サービスプロファイル定義部192と、入力パラメータ定義部194に、データが供給される。
【0088】
ステップ1310では、ユーザーが、ボタン197をクリックすることによって、試行を行う。このことは、サービス呼び出し定義部190が必要なHTTPリクエストを構築し、サービス呼び出し部202を介して、ウェブサイトのサービス602にアクセスすることによって、行われる。特に、構築されたHTTPリクエストがGETである場合、サービス呼び出し定義部190は、ウェブサイトのサービス602に直接、リクエストを飛ばすことができる。
【0089】
こうして、サービス呼び出し定義部190は、ウェブサイトのサービス602から結果を受け取り、出力表示部196に表示する。この結果が所望であると判断すると、ユーザーは、ステップ1312で、保存ボタン198(図11)をクリックする。すると、サービス呼び出し定義部190は、出力表示部196に表示されているデータから、サービス呼び出し定義262を構築し、ウェブ・アプリケーション・サーバ202のサービス呼び出し管理部256に送る。すると、サービス呼び出し管理部256は、その送られてきたサービス呼び出し管理部256を、ハードディスク204に保存する。
【0090】
次に、この実施例に基づく、アプリケーションの開発のための操作を、具体例で説明する。ここで、ユーザーは、(1) CitySearchというウェブサイトに、zipcodeを入れることで、都市と州のデータを入手し、(2) その都市と州のデータを組み合わせて、MapCodeというウェブサイトにアクセスし、(3) その都市の緯度と経度を得る、というアプリケーションを作成することを意図している。ただ、CitySearchは、都市と州のデータを個別に返すが、MapCodeは、都市と州とを組み合わせたデータを要求する。そのことを自動的に処理するために、本発明の特徴が好適に利用される。
【0091】
図14を参照すると、アプリケーションの新規開発の初期画面が示されている。この画面では、GUI部品リスト表示部166と、プロパティ編集部172は、以下の説明では関連性が薄いので、表示を省略していることに留意されたい。さて、この画面で、ユーザーは、サービスリスト表示部168から、矢印1402で示すように、CitySearchを、サービスモデル表示部162に、ドラッグ・アンド・ドロップする。
【0092】
すると、図15に示すように、サービスモデル表示部162に、CitySearchの入出力を含む構造が表示される。この構造は、システム管理者によってCitySearchに対応して作成されて、図11に示すように、サービス呼び出し定義262に定義済みである。
【0093】
ここで、図15で、サービスモデル表示部162から、CitySearchのtriggerを、矢印1502で示すようにアプリケーション編集部164にドラッグ・アンド・ドロップし、CitySearchのinput1を、矢印1504で示すようにアプリケーション編集部164にドラッグ・アンド・ドロップする。
【0094】
すると、図16に示すように、triggerをドラッグ・アンド・ドロップした箇所は、「Go」という文字を含むボタン1602となり、input1をドラッグ・アンド・ドロップした箇所は、テキスト入力フィールド1604となる。
【0095】
ここで、図17に示すように、テキスト入力フィールド1604に、10001というzipcodeをを入れて、ボタン1602をクリックすると、図3に示すサービス呼び出し管理部256を介して、CitySearchに、zipcode=10001というパラメータを以ってアクセスがはかられ、CitySearchは、<City>に、'New York'を、<State>に'NY'を返す。ここで、ユーザーは、サービスモデル表示部162のCitySearchのOutputの<City>を矢印1702で示すように、データハブ170のセルA1にドラッグ・アンド・ドロップし、同様にOutputの<State>を矢印1704で示すように、データハブ170のセルB1にドラッグ・アンド・ドロップする。
【0096】
すると、セルA1は<City>に、セルB1は<State>にそれぞれバインドされるので、図18に示すように、データハブ170のセルA1には、'New York'が表示され、セルB1には、'NY'が表示される。
【0097】
そこで、ユーザーは、データハブ170のセルC1に、文字列結合演算子&を用いて、=A1&','&B1と計算式を入れて改行キーを押す。すると、図19に示すように、その計算式が計算されて、セルC1には、'New York,NY'が表示される。なお、この実施例では、ここでの演算子の規則は、通常のスプレッドシートプログラムで慣用の形式になるように、JavaScriptを用いてコーディングされているが、=A1+','+B2のような、他のプログラミング言語で慣用の記法を許すようにすることもできる。また、文字列結合演算子以外にも、加算、減算、その他の数学的関数など、任意の演算を実現することができることが、この分野の当業者には明らかであろう。
【0098】
さらに、この例では、セルA1とセルB1の両方に、ウェブサービスからのoutputをそれぞれ格納したが、一方のセルを、ユーザーが直接セルに打ち込んだ文字列、あるいは、他セルへの参照を含む、計算式とするなど、さまざまな応用例が考えられる。
【0099】
次に、図20に示すように、サービスリスト表示部168から、MapCodeを、サービスモデル表示部162の任意の領域に、矢印2002で示すように、ドラッグ・アンド・ドロップする。すると、図21に示すように、サービスモデル表示部162には、MapCodeの入出力を含む構造が表示される。この構造は、システム管理者によってMapCodeに対応して作成されて、図11に示すように、サービス呼び出し定義262に定義済みである。
【0100】
そこで、ユーザーは、図21の画面で、データハブ170のセルC1を、矢印2102、2104で示すように、サービスモデル表示部162内部の、MapCodeのTriggerとInput1とにそれぞれ、ドラッグ・アンド・ドロップする。Input1だけでなく、Triggerにもドラッグ・アンド・ドロップする理由は、データハブ170のセルC1の値に変更に自動的に応答して、Input1をパラメータとして、MapCodeへのアクセスが行われるようにするためである。
【0101】
なお、このとき、セルC1を直接、サービスリスト表示部168に表示されているMapCodeのInput1にドラッグ・アンド・ドロップする代わりに、MapCodeのInput1を、アプリケーション編集部164に一旦、ドラッグ・アンド・ドロップし、そのアプリケーション編集部164のドラッグ・アンド・ドロップした箇所に、セルC1をドラッグ・アンド・ドロップしてもよい。それでも、セルC1の値が、MapCodeのInput1に提供される、という意味では同じであるが、このようにしておくと、後で、アプリケーションを起動したときに、画面で、途中経過としてのMapCodeのInput1に提供された値を、ユーザーが目で見ることができる。
【0102】
実際、MapCodeのTriggerが、このドラッグ・アンド・ドロップ操作に応答して、何にも関連づけられていなかった状態から、関連付けられた状態に変化したことにより、MapCodeが、New York,NYというパラメータでアクセスされ、MapCodeは、ニューヨーク市の緯度と経度を、それぞれ、<latitude>=40.71, <longitude>=-75.59として返す。そこで、サービスモデル表示部162から、アプリケーション編集部164に、矢印2202、2204でそれぞれ示すように、MapCodeのoutputである、<latitude>及び<longitude>をドラッグ・アンド・ドロップすることにより、それらの値が、アプリケーション編集部164上で実際に見えるようになる。その様子を、図22で示す。
【0103】
これで一応アプリケーションは完成であるが、図23に示すように、後は、ユーザーは、適宜、アプリケーションを分かりやすくするための説明の文字列2302、2304、2306を追加して、アプリケーションをセーブする。
【0104】
このようにしてセーブされたアプリケーションは、図4に関連して説明した手順で、ユーザーが選択し、実行することができる。その実行画面は、図24に示すとおりである。すなわち、データハブ170を介して構築したバインドの情報は、好適には、既にXMLで表現された内部データとしてアプリケーション定義264に記述されており、データハブ170自体は、アプリケーション実行画面にはあらわれてこない。
【0105】
この画面で、ユーザーは、ZipCodeのところに例えば、95101と入れて、Goボタン2408をクリックする。すると、ユーザーには見えないが、定義に従って、CitySearchに、zipcode=95101というパラメータで、アクセスがはかられる。そこで、CitySearchは、<City>='San Jose', <State>='CA'を返す。システムはこれらから、図14〜図23に示す手順で作成され保存された内部の定義に従い、定義されたメモリ変数を、'San Jose,CA'に変更する。すると、この変更により、MapCodeがトリガされ、パラメータ'San Jose,CA'でアクセスされ、<latitude>に37.20が、<longitude>に-122.06が返される。その結果を、図25に示す。
【実施例2】
【0106】
上記の実施例は、ウェブ・サービスにアクセスするアプリケーションを作成する例について示したものであるが、当業者に容易に理解できるように、この発明は、一般的なクライアント・アプリケーションの作成にも適用できる。なお、この実施例で使用されるハードウェア及びソフトウェア環境は、例えば、図2のクライアント・コンピュータ100に関連して説明したようなものでよく、ここでは、詳細な説明を省略する。
【0107】
図26を参照すると、既存のビジュアル作成ツールで馴染みのある画面インターフェースが示されている。このインターフェースにおいて、メニューバー2602には、File, Edit, Viewなどのメニューが含まれ、特に、Fileには、フォームの新規作成、名前をつけて保存、終了などのサブメニューが含まれている。この表示画面のプログラムは、ユーザーの操作に応答して、図2に示すハードディスク104から、CPU108とオペレーティング・システムの働きで、メインメモリ110に読み出され、ディスプレイ114に表示される。
【0108】
GUI部品パレット領域2604には、テキスト入力領域、ラベル、メモ、コンボボックス、など既知のGUIが、フォームにドラッグ・アンド・ドロップ可能に配置されている。GUI部品パレット領域2604は、好適には、Tab1、Tab2、Tab3・・・のように、タブで種別分けされ、ユーザーは、貼り付けたいGUI部品があるタブを選ぶようになっている。また、フォームに貼り付けられたGUI部品の、色、フォント、その他の属性を編集するためのプロパティ編集部2606が配置されている。ここまでは、既存のアプリケーション開発ツールで提供されているものであるが、本発明が提供する新規な機能は、スプレッドシートの外観をもつ、データハブ2606の存在である。これは、実質的に、図5に示したデータハブ170と等価な働きをする。
【0109】
ユーザーはまず、メニューバーのFileから、フォームの新規作成を選ぶ。すると、図27に示すように、Form1というウインドウが作成される。そこでユーザーが、GUI部品パレット領域2604から、テキスト入力領域の部品を、Form1にドラッグ・アンド・ドロップすると、そこに、テキスト入力領域2702、2704が表示される。また、必要に応じて、ラベルもドラッグ・アンド・ドロップし、必要に応じて、説明の文字2706、2708も入れておく。
【0110】
次に、ユーザーは、図28に示すように、テキスト入力領域2702に、例えば、'Tokyo'という文字を入れ、テキスト入力領域2704に、'Japan'という文字を入れる。そうして、それぞれを、データハブ2606のセルA1とB1にドラッグ・アンド・ドロップする。すると、図29に示すように、データハブ2606のセルA1と、セルB1には、それぞれ、'Tokyo'と'Japan'が表示されている。
【0111】
そこで、セルC1に、=A1&','&B1という式を入れて改行キーを押すと、C1には、'Tokyo,Japan'というデータが表示される。そこで、ユーザーがメニューバーのFileから、フォームの新規作成を選ぶ。すると、図29に示すように、Form2というウインドウが作成される。そこで、Form2に、GUI部品パレット2604からテキスト入力領域の部品をドロップすると、そこに、テキスト入力領域2902が表示される。この段階で、データハブ2606のセルC1から、テキスト入力領域2902にドラッグ・アンド・ドロップすると、テキスト入力領域2902に、'Tokyo,Japan'が表示される。
【0112】
このようにして、データハブを介して、同一フォーム内、または異なるフォームにある領域間の関連付けがなされることが理解されよう。このようにして作成された、フィールド間の関係は、同一プロジェクト内の1つのソースコードに自動的に記述するようにすることもできる。また、関連付けのソースの側の値の変化のイベントをトラップして、関連付けのターゲットに自動的に反映するようにすることも、既知の技術の範囲で可能である。
【0113】
このビジュアルツールが、BASIC、C++、C#、Javaなどに関する場合、ユーザーがコードの記述をする必要性がなくなるような状況は考えにくいが、それでも、データハブの概念を使うことで、異なる領域間の関連付けの見通しをよくし、コード作成の能率を向上させることができると考えられる。
【0114】
以上のように、いくつかの実施例により、本発明の方法及びシステムを説明してきたが、本発明は、そのような方法あるいはシステムのみならず、CD−ROM、DVD−R、HDDなどのコンピュータ可読な媒体に格納された、あるいは、ウェブサイトからダウンロード可能なプログラムも保護範囲とするものであることを理解されたい。CD−ROM、DVD−R、またはHDD、あるいはネットワークを介して、適当なインストールプログラムの存在の下で、コンピュータに導入された、本発明に係るプログラムは、コンピュータのハードウェアと協働して、上記で説明したようなシステムを構成し、あるいは、上記で説明したような方法を実施することになる。
【0115】
また、上記実施例は、JavaScript、BASIC、C++、C#、Javaなどのコンピュータ言語に関連して、説明してきたが、これら特定のコンピュータ言語や環境に限定されるものではなく、オペレーティング・システムと協働して、上記で説明したようなGUI環境を提供できるなら、任意のコンピュータ言語やツールで実現したシステムまたは方法、あるいはそれを実現するためのコンピュータ・プログラムは、本発明の保護範囲である。
【0116】
更に、上記実施例では、データ・ハブ領域は、スプレッドシートの外観とインターフェースをもつものとして設計されているが、このような表示形式は、本発明にとって必須ではなく、そこにドラッグ・アンド・ドロップ可能な複数のフィールドと、それらのフィールドに格納された値に基づき計算した値を格納することができ、且つ他の宛先オブジェクトへドラッグ・アンド・ドロップ可能なフィールドをもつようになっているなら、任意の表示インターフェースをもつものでよいことを、理解されたい。
【図面の簡単な説明】
【0117】
【図1】ハードウェア構成の概要ブロック図である。
【図2】ハードウェア構成の、より詳細なブロック図である。
【図3】サーバ・コンピュータの機能ブロック図である。
【図4】アプリケーション管理環境の機能ブロックと、それに関連する画面表示を示す図である。
【図5】クライアント開発環境の機能ブロックと、それに関連する画面表示を示す図である。
【図6】サービスリスト表示部の表示を示す図である。
【図7】サービスモデル表示部の表示を示す図である。
【図8】データハブの表示を示す図である。
【図9】データハブを使用して複数のサービスへの問合せを連携させる様子を示す図である。
【図10】クライアント実行環境の機能ブロック図である。
【図11】サービス呼び出し管理環境の機能ブロック図である。
【図12】アプリケーションの開発シナリオを示すフローチャートである。
【図13】サービス呼び出し登録シナリオを示すフローチャートである。
【図14】アプリケーション開発画面の具体例を示す図である。
【図15】アプリケーション開発画面の具体例を示す図である。
【図16】アプリケーション開発画面の具体例を示す図である。
【図17】アプリケーション開発画面の具体例を示す図である。
【図18】アプリケーション開発画面の具体例を示す図である。
【図19】アプリケーション開発画面の具体例を示す図である。
【図20】アプリケーション開発画面の具体例を示す図である。
【図21】アプリケーション開発画面の具体例を示す図である。
【図22】アプリケーション開発画面の具体例を示す図である。
【図23】アプリケーション開発画面の具体例を示す図である。
【図24】作成されたアプリケーションの動作画面を示す図である。
【図25】作成されたアプリケーションの動作画面を示す図である。
【図26】他の実施例に係るアプリケーション開発画面の具体例を示す図である。
【図27】他の実施例に係るアプリケーション開発画面の具体例を示す図である。
【図28】他の実施例に係るアプリケーション開発画面の具体例を示す図である。
【図29】他の実施例に係るアプリケーション開発画面の具体例を示す図である。
【特許請求の範囲】
【請求項1】
コンピュータの処理によって、ディスプレイ上で、ユーザーの操作に応答して、データを入力し、または表示するための要素を配置することによって、対話的にアプリケーション・プログラムを作成するシステムであって、
ユーザーが1つ以上の要素を配置することを可能な第1の領域と、該第1の領域に配置された要素から、または、該第1の領域に配置された要素に対して、ポインティング手段の操作により、関連付け可能な複数の区域をもつ第2の領域を、前記ディスプレイに表示する手段と、
ポインティング手段の操作により、前記第2の領域の区域に格納された、ユーザーが入力した関数の値を、該区域から関連付けられた、前記第1の領域に配置された前記要素に対して関連付ける手段と、
前記関連付けの情報を記憶する記憶手段とを具備する、
コンピュータ支援アプリケーション・プログラム作成システム。
【請求項2】
前記第2の領域が、少なくとも3個の区域をもち、該1つの区域に入力された関数が、他の区域に関連付けられたデータに基づき計算し得るものである、請求項1に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項3】
前記ポインティング手段による関連付け操作が、ドラッグ・アンド・ドロップである、請求項1に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項4】
前記第2の領域が、表計算プログラムのインターフェースをもち、前記複数の区域該表計算プログラムの個別のセルとして表示される、請求項3に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項5】
予め用意された複数の要素をもつパレット領域を表示する手段をさらに有し、前記第1の領域への前記要素の配置は、前記パレット領域からのドラッグ・アンド・ドロップ操作に応答してなされる、請求項1に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項6】
記憶手段をもつコンピュータをして、ディスプレイ上で、ユーザーの操作に応答して、データを入力し、または表示するための要素を配置することによって、対話的にアプリケーション・プログラムを作成させるプログラムであって、
前記コンピュータに、
第1の領域、及び複数の区域をもつ第2の領域を前記ディスプレイに表示するステップと、
ユーザーの操作に応答して、前記第1の領域に、ユーザーが選択した要素を配置させるステップと、
ユーザーの操作に応答して、前記第1の領域に配置された前記要素から、前記第2の領域の前記区域に対して、ポインティング手段の操作により、関連付けを生成するステップと、
前記第2の領域の区域に、ユーザーが入力した関数に基づき、その関数値を計算するステップと、
前記第2の領域の、前記関数値を含む前記区域から前記第1の領域に配置された要素に対する関連付けを生成するステップと、
前記関連付けの情報を、前記記憶手段に記憶させるステップとを実行させる、
プログラム。
【請求項7】
前記第2の領域が、少なくとも3個の区域をもち、該1つの区域に入力された関数が、他の区域に関連付けられたデータに基づき計算し得るものである、請求項6に記載のプログラム。
【請求項8】
前記ポインティング手段による関連付け操作が、ドラッグ・アンド・ドロップである、請求項7に記載のプログラム。
【請求項9】
前記第2の領域が、表計算プログラムのインターフェースをもち、前記複数の区域が、該表計算プログラムの個別のセルとして表示される、請求項8に記載のプログラム。
【請求項10】
記憶手段をもつコンピュータを使用して、ディスプレイ上で、ユーザーの操作に応答して、データを入力し、または表示するための要素を配置することによって、対話的にアプリケーション・プログラムを作成するための方法であって、
前記コンピュータ処理により、前記ディスプレイに、第1の領域、及び複数の区域をもつ第2の領域を表示するステップと、
前記コンピュータ処理により、ユーザーの操作に応答して、前記第1の領域に、ユーザーが選択した要素を配置するステップと、
前記コンピュータ処理により、ユーザーのポインティング手段による操作に応答して、前記第1のの領域に配置された該要素から前記第2の領域の前記区域に対して、または前記第2の領域の前記区域から前記第1の領域に配置された該要素に対して、関連付けを生成するステップと、
前記コンピュータ処理により、前記第2の領域の前記区域に入力された関数の値を計算するステップと、
前記コンピュータ処理により、前記関連付けの情報を、前記記憶手段に記憶させるステップとを有する、
方法。
【請求項11】
前記第2の領域が、少なくとも3個の区域をもち、該1つの区域に入力された関数が、他の区域に関連付けられたデータに基づき計算し得るものである、請求項10に記載の方法。
【請求項12】
前記ポインティング手段による関連付け操作が、ドラッグ・アンド・ドロップである、請求項11に記載の方法。
【請求項13】
前記第2の領域が、表計算プログラムのインターフェースをもち、前記第1の複数の区域が、該表計算プログラムの個別のセルとして表示される、請求項12に記載の方法。
【請求項14】
コンピュータの処理によって、ディスプレイ上で、ユーザーの操作に応答して、データを入力し、または表示するための要素を配置することによって、対話的に、ウェブサービスにアクセスするアプリケーション・プログラムを作成するためのシステムであって、
記憶手段と、
第1の入力領域と、複数の区域をもつ第2の領域を前記ディスプレイに表示する手段と、
ユーザーの操作に応答して、前記第1の入力領域に、0個以上のパラメータ入力要素と、出力要素と、トリガ要素をもち、指定されたURLにアクセスするための第1のウェブ・サービス・モデル要素と、少なくとも1つのパラメータ入力要素と、出力要素と、トリガ要素をもち、指定されたURLにアクセスするための第2のウェブ・サービス・モデル要素を配置する手段と、
ユーザーのポインティング手段による操作に応答して、前記第1または第2のウェブ・サービス・モデル要素の前記出力要素から前記第2の領域の前記区域に対して、または前記第2の領域の前記区域から前記第1または第2のウェブ・サービス・モデル要素の前記入力要素に対して、関連付けする手段と、
前記第2の領域の前記区域にユーザーが入力した関数の値を計算する手段と、
前記関連付けの情報を、前記記憶手段に記憶するための手段、
とを有する、コンピュータ支援アプリケーション・プログラム作成システム。
【請求項15】
前記第2の領域の前記区域は、該区域の値が変化することに応答してトリガするように、ユーザーのポインティング手段による操作に応答して、前記第1及または第2のウェブ・サービス・モデル要素のトリガ要素に対して関連付け可能である、請求項14に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項16】
前記第2の領域が、少なくとも3個の区域をもち、該1つの区域に入力された関数が、他のの区域に関連付けられたデータに基づき計算し得るものである、請求項15に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項17】
前記関連付けは、元の対象から宛先の対象へのドラッグ・アンド・ドロップ操作により行われる、請求項16に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項18】
前記第1のウェブ・サービス・モデル要素の前記出力要素がリストを含み、該リストの、ドラッグ・アンド・ドロップ操作による前記第2の領域への関連付けに応答して、前記第2の領域の、該リストに含まれるデータの数の区域への関連付けが行われる、請求項17に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項19】
記憶手段をもつコンピュータをして、ディスプレイ上で、ユーザーの操作に応答して、データを入力し、または表示するための要素を配置することによって、対話的に、ウェブ・サービスにアクセスするアプリケーション・プログラム作成させるプログラムであって、
第1の入力領域及び複数の区域をもつ第2の領域を、前記ディスプレイに表示するステップと、
ユーザーの操作に応答して、前記第1の入力領域に、0個以上のパラメータ入力要素と、出力要素と、トリガ要素をもち、指定されたURLにアクセスするための第1のウェブ・サービス・モデル要素、及び少なくとも1つのパラメータ入力要素と、出力要素と、トリガ要素をもち、指定されたURLにアクセスするための第2のウェブ・サービス・モデル要素を配置するステップと、
ユーザーのポインティング手段による操作に応答して、前記第1または第2のウェブ・サービス・モデル要素の前記出力要素から前記第2の領域の前記区域に対して、または前記第2の領域の前記区域から前記第1または第2のウェブ・サービス・モデル要素の前記入力要素に対して、関連付けするステップと、
前記第2の領域の前記区域にユーザーが入力した関数の値を計算するステップと、
前記関連付けの情報を前記記憶手段に記憶させるステップ、
をコンピュータに実行させる、コンピュータ支援アプリケーション・プログラム作成プログラム。
【請求項20】
コンピュータの処理によって、ディスプレイ上で、ユーザーの操作に応答して、データを入力し、または表示するための要素を配置することによって、対話的にアプリケーション・プログラムためのを作成するシステムであって、
記憶手段と、
第1の領域、少なくとも1つの区域をもつ第2の領域、及び第3の領域を表示する手段と、
ユーザーの操作に応答して、前記第1の領域に、1つ以上の要素を配置する手段と、
ユーザーの操作に応答して、前記第3の領域に、1つ以上の要素を配置する手段と、
ユーザーの操作に応答して、前記第1の領域に配置された要素から、前記第2の領域上の前記区域に対して関連付けする手段と、
ユーザーの、前記第2の領域の区域への関数の入力に応答して、関数値を計算する手段であって、該関数は、少なくとも前記前記第1の領域に配置された要素から関連付けられた値に基づき計算する、手段と、
ユーザーの操作に応答して、前記第2の領域の区域から、前記第3の領域上の前記区域に対して関連付けする手段と、
前記関連付けの情報を、前記記憶手段に記憶するための手段、
とを有する、コンピュータ支援アプリケーション・プログラム作成システム。
【請求項1】
コンピュータの処理によって、ディスプレイ上で、ユーザーの操作に応答して、データを入力し、または表示するための要素を配置することによって、対話的にアプリケーション・プログラムを作成するシステムであって、
ユーザーが1つ以上の要素を配置することを可能な第1の領域と、該第1の領域に配置された要素から、または、該第1の領域に配置された要素に対して、ポインティング手段の操作により、関連付け可能な複数の区域をもつ第2の領域を、前記ディスプレイに表示する手段と、
ポインティング手段の操作により、前記第2の領域の区域に格納された、ユーザーが入力した関数の値を、該区域から関連付けられた、前記第1の領域に配置された前記要素に対して関連付ける手段と、
前記関連付けの情報を記憶する記憶手段とを具備する、
コンピュータ支援アプリケーション・プログラム作成システム。
【請求項2】
前記第2の領域が、少なくとも3個の区域をもち、該1つの区域に入力された関数が、他の区域に関連付けられたデータに基づき計算し得るものである、請求項1に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項3】
前記ポインティング手段による関連付け操作が、ドラッグ・アンド・ドロップである、請求項1に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項4】
前記第2の領域が、表計算プログラムのインターフェースをもち、前記複数の区域該表計算プログラムの個別のセルとして表示される、請求項3に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項5】
予め用意された複数の要素をもつパレット領域を表示する手段をさらに有し、前記第1の領域への前記要素の配置は、前記パレット領域からのドラッグ・アンド・ドロップ操作に応答してなされる、請求項1に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項6】
記憶手段をもつコンピュータをして、ディスプレイ上で、ユーザーの操作に応答して、データを入力し、または表示するための要素を配置することによって、対話的にアプリケーション・プログラムを作成させるプログラムであって、
前記コンピュータに、
第1の領域、及び複数の区域をもつ第2の領域を前記ディスプレイに表示するステップと、
ユーザーの操作に応答して、前記第1の領域に、ユーザーが選択した要素を配置させるステップと、
ユーザーの操作に応答して、前記第1の領域に配置された前記要素から、前記第2の領域の前記区域に対して、ポインティング手段の操作により、関連付けを生成するステップと、
前記第2の領域の区域に、ユーザーが入力した関数に基づき、その関数値を計算するステップと、
前記第2の領域の、前記関数値を含む前記区域から前記第1の領域に配置された要素に対する関連付けを生成するステップと、
前記関連付けの情報を、前記記憶手段に記憶させるステップとを実行させる、
プログラム。
【請求項7】
前記第2の領域が、少なくとも3個の区域をもち、該1つの区域に入力された関数が、他の区域に関連付けられたデータに基づき計算し得るものである、請求項6に記載のプログラム。
【請求項8】
前記ポインティング手段による関連付け操作が、ドラッグ・アンド・ドロップである、請求項7に記載のプログラム。
【請求項9】
前記第2の領域が、表計算プログラムのインターフェースをもち、前記複数の区域が、該表計算プログラムの個別のセルとして表示される、請求項8に記載のプログラム。
【請求項10】
記憶手段をもつコンピュータを使用して、ディスプレイ上で、ユーザーの操作に応答して、データを入力し、または表示するための要素を配置することによって、対話的にアプリケーション・プログラムを作成するための方法であって、
前記コンピュータ処理により、前記ディスプレイに、第1の領域、及び複数の区域をもつ第2の領域を表示するステップと、
前記コンピュータ処理により、ユーザーの操作に応答して、前記第1の領域に、ユーザーが選択した要素を配置するステップと、
前記コンピュータ処理により、ユーザーのポインティング手段による操作に応答して、前記第1のの領域に配置された該要素から前記第2の領域の前記区域に対して、または前記第2の領域の前記区域から前記第1の領域に配置された該要素に対して、関連付けを生成するステップと、
前記コンピュータ処理により、前記第2の領域の前記区域に入力された関数の値を計算するステップと、
前記コンピュータ処理により、前記関連付けの情報を、前記記憶手段に記憶させるステップとを有する、
方法。
【請求項11】
前記第2の領域が、少なくとも3個の区域をもち、該1つの区域に入力された関数が、他の区域に関連付けられたデータに基づき計算し得るものである、請求項10に記載の方法。
【請求項12】
前記ポインティング手段による関連付け操作が、ドラッグ・アンド・ドロップである、請求項11に記載の方法。
【請求項13】
前記第2の領域が、表計算プログラムのインターフェースをもち、前記第1の複数の区域が、該表計算プログラムの個別のセルとして表示される、請求項12に記載の方法。
【請求項14】
コンピュータの処理によって、ディスプレイ上で、ユーザーの操作に応答して、データを入力し、または表示するための要素を配置することによって、対話的に、ウェブサービスにアクセスするアプリケーション・プログラムを作成するためのシステムであって、
記憶手段と、
第1の入力領域と、複数の区域をもつ第2の領域を前記ディスプレイに表示する手段と、
ユーザーの操作に応答して、前記第1の入力領域に、0個以上のパラメータ入力要素と、出力要素と、トリガ要素をもち、指定されたURLにアクセスするための第1のウェブ・サービス・モデル要素と、少なくとも1つのパラメータ入力要素と、出力要素と、トリガ要素をもち、指定されたURLにアクセスするための第2のウェブ・サービス・モデル要素を配置する手段と、
ユーザーのポインティング手段による操作に応答して、前記第1または第2のウェブ・サービス・モデル要素の前記出力要素から前記第2の領域の前記区域に対して、または前記第2の領域の前記区域から前記第1または第2のウェブ・サービス・モデル要素の前記入力要素に対して、関連付けする手段と、
前記第2の領域の前記区域にユーザーが入力した関数の値を計算する手段と、
前記関連付けの情報を、前記記憶手段に記憶するための手段、
とを有する、コンピュータ支援アプリケーション・プログラム作成システム。
【請求項15】
前記第2の領域の前記区域は、該区域の値が変化することに応答してトリガするように、ユーザーのポインティング手段による操作に応答して、前記第1及または第2のウェブ・サービス・モデル要素のトリガ要素に対して関連付け可能である、請求項14に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項16】
前記第2の領域が、少なくとも3個の区域をもち、該1つの区域に入力された関数が、他のの区域に関連付けられたデータに基づき計算し得るものである、請求項15に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項17】
前記関連付けは、元の対象から宛先の対象へのドラッグ・アンド・ドロップ操作により行われる、請求項16に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項18】
前記第1のウェブ・サービス・モデル要素の前記出力要素がリストを含み、該リストの、ドラッグ・アンド・ドロップ操作による前記第2の領域への関連付けに応答して、前記第2の領域の、該リストに含まれるデータの数の区域への関連付けが行われる、請求項17に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項19】
記憶手段をもつコンピュータをして、ディスプレイ上で、ユーザーの操作に応答して、データを入力し、または表示するための要素を配置することによって、対話的に、ウェブ・サービスにアクセスするアプリケーション・プログラム作成させるプログラムであって、
第1の入力領域及び複数の区域をもつ第2の領域を、前記ディスプレイに表示するステップと、
ユーザーの操作に応答して、前記第1の入力領域に、0個以上のパラメータ入力要素と、出力要素と、トリガ要素をもち、指定されたURLにアクセスするための第1のウェブ・サービス・モデル要素、及び少なくとも1つのパラメータ入力要素と、出力要素と、トリガ要素をもち、指定されたURLにアクセスするための第2のウェブ・サービス・モデル要素を配置するステップと、
ユーザーのポインティング手段による操作に応答して、前記第1または第2のウェブ・サービス・モデル要素の前記出力要素から前記第2の領域の前記区域に対して、または前記第2の領域の前記区域から前記第1または第2のウェブ・サービス・モデル要素の前記入力要素に対して、関連付けするステップと、
前記第2の領域の前記区域にユーザーが入力した関数の値を計算するステップと、
前記関連付けの情報を前記記憶手段に記憶させるステップ、
をコンピュータに実行させる、コンピュータ支援アプリケーション・プログラム作成プログラム。
【請求項20】
コンピュータの処理によって、ディスプレイ上で、ユーザーの操作に応答して、データを入力し、または表示するための要素を配置することによって、対話的にアプリケーション・プログラムためのを作成するシステムであって、
記憶手段と、
第1の領域、少なくとも1つの区域をもつ第2の領域、及び第3の領域を表示する手段と、
ユーザーの操作に応答して、前記第1の領域に、1つ以上の要素を配置する手段と、
ユーザーの操作に応答して、前記第3の領域に、1つ以上の要素を配置する手段と、
ユーザーの操作に応答して、前記第1の領域に配置された要素から、前記第2の領域上の前記区域に対して関連付けする手段と、
ユーザーの、前記第2の領域の区域への関数の入力に応答して、関数値を計算する手段であって、該関数は、少なくとも前記前記第1の領域に配置された要素から関連付けられた値に基づき計算する、手段と、
ユーザーの操作に応答して、前記第2の領域の区域から、前記第3の領域上の前記区域に対して関連付けする手段と、
前記関連付けの情報を、前記記憶手段に記憶するための手段、
とを有する、コンピュータ支援アプリケーション・プログラム作成システム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【公開番号】特開2008−140194(P2008−140194A)
【公開日】平成20年6月19日(2008.6.19)
【国際特許分類】
【出願番号】特願2006−326338(P2006−326338)
【出願日】平成18年12月1日(2006.12.1)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.イーサネット
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】
【公開日】平成20年6月19日(2008.6.19)
【国際特許分類】
【出願日】平成18年12月1日(2006.12.1)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.イーサネット
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】
[ Back to top ]