(57)【要約】  【課題】  高度なプログラミングスキルを要することなく、複数の入力フィールドの間の演算結果を、他のフィールドで利用可能とする、ＧＵＩベースのアプリケーション・プログラムを作成すること。  【解決手段】  アプリケーション・プログラムの開発段階で、例えばＷｅｂサイトからのデータを出力するような第１の領域が、そのスプレッドシート的な画面の第１のセルに関連付けるためにドラッグ＆ドロップされる。次に、Ｗｅｂサイトからのデータを出力するような第２の領域が、そのスプレッドシート的な画面の第２のセルに関連付けるためにドラッグ＆ドロップされる。次に、スプレッドシート的な画面の第３のセルには、第１のセルと第２のセルの値またはデータから演算して値を出すための所望の式が入力される。この第３のセルは、アプリケーション・プログラムの任意のシートまたはウインドウに、ドラッグ＆ドロップ可能である。【選択図】  図５
2008140194.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータの処理によって、ディスプレイ上で、ユーザーの操作に応答して、データを入力し、または表示するための要素を配置することによって、対話的にアプリケーション・プログラムを作成するシステムであって、
ユーザーが１つ以上の要素を配置することを可能な第１の領域と、該第１の領域に配置された要素から、または、該第１の領域に配置された要素に対して、ポインティング手段の操作により、関連付け可能な複数の区域をもつ第２の領域を、前記ディスプレイに表示する手段と、
ポインティング手段の操作により、前記第２の領域の区域に格納された、ユーザーが入力した関数の値を、該区域から関連付けられた、前記第１の領域に配置された前記要素に対して関連付ける手段と、
前記関連付けの情報を記憶する記憶手段とを具備する、
コンピュータ支援アプリケーション・プログラム作成システム。
【請求項２】
前記第２の領域が、少なくとも３個の区域をもち、該１つの区域に入力された関数が、他の区域に関連付けられたデータに基づき計算し得るものである、請求項１に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項３】
前記ポインティング手段による関連付け操作が、ドラッグ・アンド・ドロップである、請求項１に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項４】
前記第２の領域が、表計算プログラムのインターフェースをもち、前記複数の区域該表計算プログラムの個別のセルとして表示される、請求項３に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項５】
予め用意された複数の要素をもつパレット領域を表示する手段をさらに有し、前記第１の領域への前記要素の配置は、前記パレット領域からのドラッグ・アンド・ドロップ操作に応答してなされる、請求項１に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項６】
記憶手段をもつコンピュータをして、ディスプレイ上で、ユーザーの操作に応答して、データを入力し、または表示するための要素を配置することによって、対話的にアプリケーション・プログラムを作成させるプログラムであって、
前記コンピュータに、
第１の領域、及び複数の区域をもつ第２の領域を前記ディスプレイに表示するステップと、
ユーザーの操作に応答して、前記第１の領域に、ユーザーが選択した要素を配置させるステップと、
ユーザーの操作に応答して、前記第１の領域に配置された前記要素から、前記第２の領域の前記区域に対して、ポインティング手段の操作により、関連付けを生成するステップと、
前記第２の領域の区域に、ユーザーが入力した関数に基づき、その関数値を計算するステップと、
前記第２の領域の、前記関数値を含む前記区域から前記第１の領域に配置された要素に対する関連付けを生成するステップと、
前記関連付けの情報を、前記記憶手段に記憶させるステップとを実行させる、
プログラム。
【請求項７】
前記第２の領域が、少なくとも３個の区域をもち、該１つの区域に入力された関数が、他の区域に関連付けられたデータに基づき計算し得るものである、請求項６に記載のプログラム。
【請求項８】
前記ポインティング手段による関連付け操作が、ドラッグ・アンド・ドロップである、請求項７に記載のプログラム。
【請求項９】
前記第２の領域が、表計算プログラムのインターフェースをもち、前記複数の区域が、該表計算プログラムの個別のセルとして表示される、請求項８に記載のプログラム。
【請求項１０】
記憶手段をもつコンピュータを使用して、ディスプレイ上で、ユーザーの操作に応答して、データを入力し、または表示するための要素を配置することによって、対話的にアプリケーション・プログラムを作成するための方法であって、
前記コンピュータ処理により、前記ディスプレイに、第１の領域、及び複数の区域をもつ第２の領域を表示するステップと、
前記コンピュータ処理により、ユーザーの操作に応答して、前記第１の領域に、ユーザーが選択した要素を配置するステップと、
前記コンピュータ処理により、ユーザーのポインティング手段による操作に応答して、前記第１のの領域に配置された該要素から前記第２の領域の前記区域に対して、または前記第２の領域の前記区域から前記第１の領域に配置された該要素に対して、関連付けを生成するステップと、
前記コンピュータ処理により、前記第２の領域の前記区域に入力された関数の値を計算するステップと、
前記コンピュータ処理により、前記関連付けの情報を、前記記憶手段に記憶させるステップとを有する、
方法。
【請求項１１】
前記第２の領域が、少なくとも３個の区域をもち、該１つの区域に入力された関数が、他の区域に関連付けられたデータに基づき計算し得るものである、請求項１０に記載の方法。
【請求項１２】
前記ポインティング手段による関連付け操作が、ドラッグ・アンド・ドロップである、請求項１１に記載の方法。
【請求項１３】
前記第２の領域が、表計算プログラムのインターフェースをもち、前記第１の複数の区域が、該表計算プログラムの個別のセルとして表示される、請求項１２に記載の方法。
【請求項１４】
コンピュータの処理によって、ディスプレイ上で、ユーザーの操作に応答して、データを入力し、または表示するための要素を配置することによって、対話的に、ウェブサービスにアクセスするアプリケーション・プログラムを作成するためのシステムであって、
記憶手段と、
第１の入力領域と、複数の区域をもつ第２の領域を前記ディスプレイに表示する手段と、
ユーザーの操作に応答して、前記第１の入力領域に、０個以上のパラメータ入力要素と、出力要素と、トリガ要素をもち、指定されたＵＲＬにアクセスするための第１のウェブ・サービス・モデル要素と、少なくとも１つのパラメータ入力要素と、出力要素と、トリガ要素をもち、指定されたＵＲＬにアクセスするための第２のウェブ・サービス・モデル要素を配置する手段と、
ユーザーのポインティング手段による操作に応答して、前記第１または第２のウェブ・サービス・モデル要素の前記出力要素から前記第２の領域の前記区域に対して、または前記第２の領域の前記区域から前記第１または第２のウェブ・サービス・モデル要素の前記入力要素に対して、関連付けする手段と、
前記第２の領域の前記区域にユーザーが入力した関数の値を計算する手段と、
前記関連付けの情報を、前記記憶手段に記憶するための手段、
とを有する、コンピュータ支援アプリケーション・プログラム作成システム。
【請求項１５】
前記第２の領域の前記区域は、該区域の値が変化することに応答してトリガするように、ユーザーのポインティング手段による操作に応答して、前記第１及または第２のウェブ・サービス・モデル要素のトリガ要素に対して関連付け可能である、請求項１４に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項１６】
前記第２の領域が、少なくとも３個の区域をもち、該１つの区域に入力された関数が、他のの区域に関連付けられたデータに基づき計算し得るものである、請求項１５に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項１７】
前記関連付けは、元の対象から宛先の対象へのドラッグ・アンド・ドロップ操作により行われる、請求項１６に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項１８】
前記第１のウェブ・サービス・モデル要素の前記出力要素がリストを含み、該リストの、ドラッグ・アンド・ドロップ操作による前記第２の領域への関連付けに応答して、前記第２の領域の、該リストに含まれるデータの数の区域への関連付けが行われる、請求項１７に記載のコンピュータ支援アプリケーション・プログラム作成システム。
【請求項１９】
記憶手段をもつコンピュータをして、ディスプレイ上で、ユーザーの操作に応答して、データを入力し、または表示するための要素を配置することによって、対話的に、ウェブ・サービスにアクセスするアプリケーション・プログラム作成させるプログラムであって、
第１の入力領域及び複数の区域をもつ第２の領域を、前記ディスプレイに表示するステップと、
ユーザーの操作に応答して、前記第１の入力領域に、０個以上のパラメータ入力要素と、出力要素と、トリガ要素をもち、指定されたＵＲＬにアクセスするための第１のウェブ・サービス・モデル要素、及び少なくとも１つのパラメータ入力要素と、出力要素と、トリガ要素をもち、指定されたＵＲＬにアクセスするための第２のウェブ・サービス・モデル要素を配置するステップと、
ユーザーのポインティング手段による操作に応答して、前記第１または第２のウェブ・サービス・モデル要素の前記出力要素から前記第２の領域の前記区域に対して、または前記第２の領域の前記区域から前記第１または第２のウェブ・サービス・モデル要素の前記入力要素に対して、関連付けするステップと、
前記第２の領域の前記区域にユーザーが入力した関数の値を計算するステップと、
前記関連付けの情報を前記記憶手段に記憶させるステップ、
をコンピュータに実行させる、コンピュータ支援アプリケーション・プログラム作成プログラム。
【請求項２０】
コンピュータの処理によって、ディスプレイ上で、ユーザーの操作に応答して、データを入力し、または表示するための要素を配置することによって、対話的にアプリケーション・プログラムためのを作成するシステムであって、
記憶手段と、
第１の領域、少なくとも１つの区域をもつ第２の領域、及び第３の領域を表示する手段と、
ユーザーの操作に応答して、前記第１の領域に、１つ以上の要素を配置する手段と、
ユーザーの操作に応答して、前記第３の領域に、１つ以上の要素を配置する手段と、
ユーザーの操作に応答して、前記第１の領域に配置された要素から、前記第２の領域上の前記区域に対して関連付けする手段と、
ユーザーの、前記第２の領域の区域への関数の入力に応答して、関数値を計算する手段であって、該関数は、少なくとも前記前記第１の領域に配置された要素から関連付けられた値に基づき計算する、手段と、
ユーザーの操作に応答して、前記第２の領域の区域から、前記第３の領域上の前記区域に対して関連付けする手段と、
前記関連付けの情報を、前記記憶手段に記憶するための手段、
とを有する、コンピュータ支援アプリケーション・プログラム作成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コンピュータ用アプリケーション・プログラムの作成システム及び方法に関するものであり、より詳しくは、主としてグラフィック・ユーザー・インターフェース（ＧＵＩ）に基づき、アプリケーション・プログラムを作成するためのシステム、方法及びプログラムに関するものである。
【背景技術】
【０００２】
コンピュータを使用するためには、コンピュータの中央処理ユニット（ＣＰＵ）に実行され、それによって入出力装置を駆動させるためのプログラムの存在が必須である。初期の頃は、ＣＰＵが直接解釈する命令を記述し、メモリのアドレスを絶対指定するような、マシン語により記述されたものが書かれたが、そのようなプログラムだと、目で見て、どのような動作が記述されているか全く分からないため、プログラムのバグを修正したり、新しい機能を追加したりすることに困難を極めた。
【０００３】
このことを改善するために、ＣＰＵが解釈するコマンドを、MOV、ADDなどの人間に分かりやすいニーモニックを用い、メモリのアドレスも相対指定することを可能とした、アセンブリ言語が開発された。そのように記述されたプログラムは、アセンブラで、ＣＰＵが実行可能なマシン語に変換される。しかし、単純な加算を記述するためだけでも、レジスタにある値を格納し、そのレジスタの値をＣＰＵが参照するようにする、というように、演算論理がＣＰＵに沿ったものであるため、依然として、プログラムの開発は、相当の熟練を要するものであった。
【０００４】
このような困難は、１９５０年代に開発されたＦＯＲＴＲＡＮ、ＣＯＢＯＬなどの、コンパイラ・プログラミング言語の登場により、劇的に改善された。このような言語を使用すると、例えば加算が、A = B + C のように、通常の数式で記述することができ、WRITEのような関数で、Ｉ／Ｏ処理も、分かりやすく記述できる。このようなプログラミング言語は、手続的プログラミング言語と呼ばれ、その後も、Ｃ、Ｃ＋＋、Ｃ＃など、さまざまな工夫を盛り込んで、発展している。
【０００５】
上記のような手続的プログラミング言語があらわれた頃は、画面に表示し、あるいは印刷する内容は、ABC、1123のような、単なる文字列のようなものでよかったが、１９８０年代になって、マルチウインドウ・システムやマウスなどのポインティング・デバイスを備えた、グラフィック・ユーザー・インターフェース（ＧＵＩ）が提案されると、プログラミングは、新たな困難に遭遇することになった。
【０００６】
すなわち、ＧＵＩのプログラミングを行うためには、ウインドウ上にボタン、ラジオボタン、コンボボックス、テキスト入力領域などのＧＵＩ部品を表示する位置座標を指定し、表示する文字のフォントと色を指定し、プルダウンメニューを設計し、任意の時点におけるマウスによるＧＵＩ部品のクリック、アクティブ・ウインドウの切り替えなどのイベントにリアルタイムに応答する必要がある。初期のＧＵＩのプログラミングは、これらを全て、ソースコードで記述するものであったため、リソースの組込み、イベント駆動などの新しい概念に対処するために非常に複雑で、ＣやＣ＋＋などの手続的プログラミング言語に熟練したプログラマにとってさえ、その習熟は、とても困難なものであった。
【０００７】
このような困難を改善するために、プログラムのある部分を、マウスのクリックやドラッグなどのＧＵＩ操作で記述することを可能としたプログラム開発ツールが開発された。そのようなものの例として、マイクロソフト社のＶｉｓｕａｌ  Ｂａｓｉｃ（Ｒ）、Ｖｉｓｕａｌ  Ｃ＋＋（Ｒ）、Ｖｉｓｕａｌ  Ｓｔｕｄｉｏ（Ｒ）、ボーランド社のＤｅｌｐｈｉ（商標）、Ｃ＋＋  Ｂｕｉｌｄｅｒ（商標）、ＩＢＭ社のＶｉｓｕａｌＡｇｅ  ｆｏｒ  Ｊａｖａ（商標）などがある。これらのプログラム開発ツールを使用すると、ＧＵＩ部品の配置は、ＧＵＩ部品の見本のアイコンを並べてある領域から、配置したい所望の位置にドラッグ・アンド・ドロップするだけで達成される。また、２つのＧＵＩ部品間の関連付けも、適当なマウス操作で可能とされている。
【０００８】
ただし、ＧＵＩ部品の配置や関連付けを、マウス操作だけでできる、と言っても、実際の処理のためのコードやＡＰＩ関数などは、Ｃ＋＋、ＢＡＳＩＣ、Ｊａｖａなどのプログラミング言語のルールに従い、プログラマがコードを書く必要があり、依然として、コンピュータの初心者には敷居が高いものである。
【０００９】
ところで、近年、ＷｅｂサービスやＳＯＡ（サービス指向アーキテクチャ）と呼ばれるアプリケーション間通信の概念が提唱されてきている。これによれば、上述したようなＧＵＩによる開発ツールのＧＵＩ部品として、ＵＲＬを指定可能なものが提供されている。この部品が提供する機能を利用して、特定のＵＲＬにアクセスすると、そのＵＲＬで特定されるＷｅｂサイトは、例えば、ＸＭＬで記述された結果を返す。当該開発ツールはさらに、ＸＭＬの内容を、階層的に表示する表示用のＧＵＩ部品も用意しており、従って、ＵＲＬにアクセスするＧＵＩ部品と、表示用のＧＵＩ部品とをアプリケーション・プログラムの所定の領域に貼り付けておくことによって、特定のＷｅｂサイトから返された結果を自動的に表示するＷｅｂアプリケーションを実現することができる。
【００１０】
上述のようなＷｅｂアプリケーションにおいて、第１のＷｅｂサービスに問合せしたとき、複数の結果が返され、それらの結果に演算を施し、その演算結果を以って、第２のＷｅｂサービスに問合せしたい場合がある。例えば、Zip codeを送ると、第１のＷｅｂサービスは、州と都市を、個別に返すものとする。一方、第２のＷｅｂサービスは、州と都市を組み合わせた文字列を送ると、その緯度と経度を返すものとする。すると、単純にＧＵＩ部品を貼り付けただけでは、Zip codeから州と都市を、個別に得るプログラムが構成されるだけで、第２のＷｅｂサービスに正しく問合せすることができない。第２のＷｅｂサービスに正しく問合せするＷｅｂプログラムを構成するためには、第１のＷｅｂサービスから得られた州と都市の文字列を結合し、更にその結果を、第２のＷｅｂサービスに問い合わせるＧＵＩ部品に与える手順を、プログラムコードで記述する必要がある。しかし、そのようなコードを記述することは、ＧＵＩ部品のＩＤを確認したり、文字列結合のための演算子を書いたり、演算した結果を第２のＷｅｂサービスに問い合わせるＧＵＩ部品に関連付けるコードを書いたりと、見かけよりもずっと複雑なものであり、長年の熟練を要し、初心者にはとても敷居の高い作業である。
【００１１】
本願発明者は、そこで、初心者にもなじみやすいインターフェースとして、スプレッドシートの形式に注目した。実際、コンピュータの初心者であっても、スプレッドシートに数値や文字を入れて、計算することにそれほど困難は覚えないはずである。そのような視点から、本願発明者は、いくつかの従来技術を検索してみた。
【００１２】
特開２００６−５３８９４は、ユーザー指定のスプレッドシート関数のサポートに関するものであり、特定のセルがユーザー定義関数の呼び出しを含んでいるとの判定に応答して、別のセルで定義されたユーザー定義関数を利用して、ユーザー定義関数の呼び出しに対する結果の値を求め、求められた結果の値から、特定のセルの値を獲得するようにすることを開示する。
【００１３】
特開２００５−３５３０５８は、ウェブ・ブラウザ・アプリケーション・プログラムで、スプレッドシートを表示し、変更することを可能ならしめる技術を開示する。
【００１４】
特開２００４−２０８２７８は、ネットワークを介して接続されたホストと端末との間で、スプレッドシートアプリケーションプログラムを用いてデータ管理を行うに際し、メールサーバを設けると共にスプレッドシートアプリケーションプログラムにおけるセルの位置、データ入出力の指示及びデータを、メールサーバのメールフォームとしてサブジェクト及びメール本文により特定し、該特定したメールフォームにより、前記セルのデータをホストと端末との間で入出力処理することを開示する。
【００１５】
しかし、これらの従来技術は、上述のようなＷｅｂアプリケーションにおいて、スプレッドシートを表示用のインターフェースとして使用することにとどまっており、スプレッドシート的なインターフェースを利用して、アプリケーションプログラムの作成を支援することまでは、示唆するものではない。
【特許文献１】特開２００６−５３８９４
【特許文献２】特開２００５−３５３０５８
【特許文献３】特開２００４−２０８２７８
【発明の開示】
【発明が解決しようとする課題】
【００１６】
従って、この発明の目的は、プログラミング技術に熟練していないユーザーでも、ＧＵＩの操作で、簡単にアプリケーション・プログラムを作成することを可能ならしめるシステム及び方法を提供することにある。
【００１７】
この発明の他の目的は、高度なプログラミングスキルを要することなく、複数の入力フィールドの間の演算結果を、他のフィールドで利用可能とする、ＧＵＩベースのアプリケーション・プログラムを作成することを可能ならしめるシステム及び方法を提供することにある。
【課題を解決するための手段】
【００１８】
本発明者は、複数のＧＵＩ部品と、スプレッドシートの間のデータのやりとりについて熟考した結果、上記目的は、複数のセルをもつスプレッドシート的な画面を設け、その複数のセルを介して、ＧＵＩ部品間のデータを受渡しをするインターフェースを設けることによって、達成されることに想到した。
【００１９】
すなわち、この発明によれば、アプリケーション・プログラムの開発段階で、例えばＷｅｂサイトからのデータを出力するような第１の領域が、表計算プログラムまたはスプレッドシート的な画面の第１のセルに関連付けるためにドラッグ・アンド・ドロップされる。次に、Ｗｅｂサイトからのデータを出力するような第２の領域が、そのスプレッドシート的な画面の第２のセルに関連付けるためにドラッグ・アンド・ドロップされる。次に、スプレッドシート的な画面の第３のセルには、第１のセルと第２のセルの値またはデータから演算して値を出すための所望の式が入力される。この第３のセルは、アプリケーション・プログラムの任意のシートまたはウインドウに、ドラッグ・アンド・ドロップ可能である。
【発明の効果】
【００２０】
このように、本発明によれば、実質的にマウスなどのポインティング・デバイスによる操作だけで、ほとんど熟練を要することなく、所望のＧＵＩベースのアプリケーション・プログラムを作成することができる。コードを書く必要があるのは、スプレッドシート的な画面のセルに入れる計算式だけであり、それは、通常のスプレッドシート・プログラムを使い慣れたユーザーにとって、造作もないことである。
【発明を実施するための最良の形態】
【００２１】
以下、図面に従って、本発明のいくつかの実施例を説明する。これらの実施例は、本発明の好適な態様を説明するためのものであり、発明の範囲をここで示すものに限定する意図はないことを理解されたい。また、以下の図を通して、特に断わらない限り、同一符号は、同一の対象を指すものとする。
【実施例１】
【００２２】
この実施例は、ウェブ・サービスのためのアプリケーション・プログラムを作成することに関する。特に、この実施例は、システムを構成するプログラミング言語として、ウェブ・ブラウザの組み込み言語の一種であるＪａｖａＳｃｒｉｐｔ（Ｒ）を主として使用して実現される。しかし、本発明は、そのような特定のプログラミング言語に限定されず、Ｃ＋＋、Ｃ＃、Ｊａｖａ（Ｒ）その他、ドラッグ・アンド・ドロップ操作をサポートするＡＰＩ関数を呼び出し可能な、任意のプログラミング言語を使用可能であることを理解されたい。なお、以下の実施例で使用するドラッグ・アンド・ドロップ操作は、表示されているオブジェクト間をバインドするための操作として便利なものであるが、そのための操作として、本発明の目的にとって、ドラッグ・アンド・ドロップは必須でないことを理解されたい。例えば、ソースとなるオブジェクトを一旦クリックし、プルダウン・メニューから例えば、「関連付け」という項目を選び、次にターゲットのオブジェクトをクリックする、という操作で関連付けすることができる。あるいは、それぞれ、Ctrlキー、Altキー、あるいはキーの組み合わせの適当なショートカットとしても、ドラッグ・アンド・ドロップと等価な作用をもたらすようにプログラムできることを、当業者なら理解するであろう。
【００２３】
以下、図面を参照して、この実施例を説明する。図１を参照すると、この実施例に係るハードウェア構成の概要ブロック図が示されている。図１において、クライアント・コンピュータ１００と、サーバ・コンピュータ２００が、例えば、イーサネット・プロトコルにより、通信回線３００に接続されている。通信回線３００は更に、プロキシ・サーバ４００を介して、インターネット５００に接続され、インターネット５００を介して、様々なウェブ・サイト６０２、６０４、６０６・・・にアクセスすることが可能である。
【００２４】
クライアント・コンピュータ１００は、ハードディスク１０４と、イーサネット・プロトコルに対応する通信インターフェース１０６をもち、ハードディスク１０４には、オペレーティング・システム、ウェブ・ブラウザ１０２などの、この実施例に使用される様々なプログラムが、メモリにロード可能に記憶されている。この実施例で使用するウェブ・ブラウザ１０２は、ＪａｖａＳｃｒｉｐｔを実行可能な任意のウェブ・ブラウザでよく、例えば、マイクロソフト社のＩｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ（Ｒ）、モジラ  ファウンデーションのＦｉｒｅＦｏｘ（Ｒ）、アップルコンピュータ社のＳａｆａｒｉ（Ｒ）などが使用可能である。オペレーティング・システムとしては、ＴＣＰ／ＩＰ通信機能を標準でサポートし、これらのウェブ・ブラウザを動作可能な任意のものでよく、例えば、Ｌｉｎｕｘ（Ｒ）、マイクロソフト社のＷｉｎｄｏｗｓ  ＸＰ（Ｒ）、Ｗｉｎｄｏｗｓ（Ｒ）２０００、アップルコンピュータのＭａｃ  ＯＳ（Ｒ）などを使用することができるが、ここに掲げたオペレーティング・システムには限定されない。
【００２５】
サーバ・コンピュータ２００は、ハードディスク２０４と、イーサネット・プロトコルに対応する通信インターフェース２０６をもち、ハードディスク２０４には、オペレーティング・システム、ウェブ・ブラウザ、ウェブ・アプリケーション・サーバ・プログラム（以下、ウェブ・アプリケーション・サーバとも呼ぶ）２０２などの、この実施例に使用される様々なプログラムが、メモリにロード可能に記憶されている。ウェブ・アプリケーション・サーバとは、ＨＴＭＬ文書や画像情報などを蓄積しておき、ウェブ・ブラウザなどのクライアント・アプリケーションからの要求に応じて、インターネットなどのネットワークを通じて、情報を送信するプログラムである。ウェブ・アプリケーション・サーバ２０２としては、Ａｐａｃｈｅ  ＴｏｍＣａｔ、マイクロソフト社のＩｎｔｅｒｎｅｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｅｒｖｅｒなど、任意のものが使用可能である。オペレーティング・システムとしては、ＴＣＰ／ＩＰ通信機能を標準でサポートし、これらのウェブ・アプリケーション・サーバを動作可能な任意のものでよく、例えば、Ｌｉｎｕｘ（Ｒ）、マイクロソフト社のＷｉｎｄｏｗｓ  ＸＰ（Ｒ）、Ｗｉｎｄｏｗｓ（Ｒ）２０００などを使用することができるが、ここに掲げたオペレーティング・システムには限定されない。
【００２６】
次に、図２を参照して、クライアント・コンピュータ１００と、サーバ・コンピュータ２００の、より詳細なハードウェア構成について、説明する。
【００２７】
クライアント・コンピュータ１００は、ＣＰＵ１０８と、メインメモリ１１０をもち、これらは、バス１０９に接続されている。ＣＰＵは、好適には、３２ビットまたは６４ビットのアーキテクチャに基づくものであり、例えば、インテル社のＰｅｎｔｉｕｍ（Ｒ）  ４、ＡＭＤ社のＡｔｈｌｏｎ（Ｒ）などを使用することができる。バス１０９には、ディスプレイ・コントローラ１１２を介して、ＬＣＤモニタなどのディスプレイ１１４が接続される。ディスプレイ１１４は、図１で示した、ウェブ・ブラウザ１０２などのプログラムを表示するために使用される。バス１０９にはまた、ＩＤＥコントローラ１１６を介して、ハードディスク１０４と、ＣＤ−ＲＯＭドライブ１１８が接続される。ハードディスク１０４には、オペレーティング・システム、ウェブ・ブラウザ１０２その他のプログラムが、メインメモリ１１０にロード可能に記憶されている。ＣＤ−ＲＯＭドライブ１１８は、必要に応じて、ＣＤ−ＲＯＭからプログラムをハードディスク１０４に追加導入するために使用される。バス１０９には更に、キーボード・マウスコントローラ１２０を介して、文字入力手段としてのキーボード１２２と、ポインティング手段としてのマウス１２４が接続されている。キーボード１２２は、ＵＲＬやその他の文字を、画面に入力するために使用される。マウス１２２は、後述するＧＵＩ部品をドラッグ・アンド・ドロップしたり、動作を開始させるためにメニューのボタンをクリックしたりするために使用される。
【００２８】
通信インターフェース１０６は、イーサネットプロトコルに従うものであり、クライアント・コンピュータ１００と、通信回線３００とを、物理的に接続する役割を担い、クライアント・コンピュータ１００のオペレーティング・システムの通信機能のＴＣＰ／ＩＰ通信プロトコルに対して、ネットワークインターフェース層を提供する。尚、図示されている構成は、有線接続構成であるが、例えば、ＩＥＥＥ８０２．１１ａ／ｂ／ｇなどの無線ＬＡＮ接続規格に基づき、無線ＬＡＮ接続するものであってもよい。
【００２９】
また、通信インターフェース１０６は、イーサネットプロトコルに限定されるものではなく、例えば、トークンリングなどの任意のプロトコルに従うものでよく、特定の物理的通信プロトコルに限定されない。
【００３０】
サーバ・コンピュータ２００は、ＣＰＵ２０８と、メインメモリ２１０をもち、これらは、バス２０９に接続されている。クライアント・コンピュータ２００においても、ＣＰＵは、好適には、３２ビットまたは６４ビットのアキーテクチャに基づくものであり、例えば、インテル社のＰｅｎｔｉｕｍ（Ｒ）  ４、Ｘｅｏｎ（Ｒ）、ＡＭＤ社のＡｔｈｌｏｎ（Ｒ）などを使用することができる。バス２０９には、ディスプレイ・コントローラ２１２を介して、ＬＣＤモニタなどのディスプレイ２１４が接続される。ディスプレイ２１４は、詳細は後で説明するが、システム管理者が、インターネット接続用のＧＵＩ部品などを作成したり、ＪａｖａＳｃｒｉｐｔのプログラムを書いて、クライアント・プログラム１００から呼び出し可能に登録したり、クライアント・プログラム１００を介してアクセスするユーザーのユーザーＩＤとパスワードを登録したりするために使用される。
【００３１】
バス２０９にはまた、ＩＤＥコントローラ２１６を介して、ハードディスク２０４と、ＣＤ−ＲＯＭドライブ２１８が接続される。ハードディスク２０４には、オペレーティング・システム、ウェブ・ブラウザ１０２その他のプログラムが、メインメモリ２１０にロード可能に記憶されている。
【００３２】
ＣＤ−ＲＯＭドライブ２１８は、必要に応じて、ＣＤ−ＲＯＭからプログラムをハードディスク２０４に追加導入するために使用される。バス２０９には更に、キーボード・マウスコントローラ２２０を介して、キーボード２２２と、マウス２２４が接続されている。キーボード２２２は、ＵＲＬやその他の文字を、画面に入力するために使用される。マウス２２２は、システム管理者が、後述するＧＵＩ部品を作成したりするために使用される。
【００３３】
通信インターフェース２０６は、イーサネットプロトコルに従うものであり、サーバ・コンピュータ２００と、通信回線３００とを、物理的に接続する役割を担い、サーバ・コンピュータ２００のオペレーティング・システムの通信機能のＴＣＰ／ＩＰ通信プロトコルに対して、ネットワークインターフェース層を提供する。サーバ・コンピュータ２００においても、図示されている構成は、有線接続構成であるが、例えば、ＩＥＥＥ８０２．１１ａ／ｂ／ｇなどの無線ＬＡＮ接続規格に基づき、無線ＬＡＮ接続するものであってもよい。
【００３４】
また、通信インターフェース２０６は、イーサネットプロトコルに限定されるものではなく、例えば、トークンリングなどの任意のプロトコルに従うものでよく、特定の物理的通信プロトコルに限定されない。
【００３５】
サーバ・コンピュータ２００のハードディスク２０４には、前述したオペレーティング。システムとウェブ・アプリケーション・サーバ２０２以外に、後述する、本発明に係る開発環境を提供するプログラムも格納される。この開発環境は、例えば、ＪａｖａＳｃｒｉｐｔのライブラリである、Ｄｏｊｏ  Ｔｏｏｌｋｉｔにより提供されるモジュールと、本発明者らがＪａｖａＳｃｒｉｐｔ言語を用いて書いたモジュールの組み合わせからなる。Ｄｏｊｏ  Ｔｏｏｌｋｉｔの詳細については、例えば、http://dojotoolkit.org/を参照されたい。このように開発環境をサーバ・コンピュータ２００のハードディスク２０４に格納しておく理由は、サーバ・コンピュータ２００にログインした任意のクライアント・コンピュータ１００で、ウェブ・アプリケーション・サーバ２０２の機能により、開発環境をダウンロードして、開発を開始することができるようにするためである。
【００３６】
尚、本発明は、ＪａｖａＳｃｒｉｐｔにより作成されたモジュールに限定されるものではないことを理解されたい。ブラウザ組み込み型言語として知られている、ＪＳｃｒｉｐｔ、ＶＢＳＣｒｉｐｔなどを使用して、本発明を実現することも可能である。また、ＪＳＰと呼ばれる、ＨＴＭＬ中に埋め込まれたＪａｖａプログラムを実行し、処理結果をウェブ・ブラウザに対して返すという仕組みを用いることもできる。
【００３７】
さらに、図１及び図２では、クライアント／サーバの構成が示されているが、クライアント・コンピュータ１００だけの構成でも、本発明を実現することは可能である。その場合、クライアント・コンピュータ１００に直接、上記開発環境やモジュールを常駐させておけばよい。そうして、インターネットへのアクセスは、図１に示す、通信回線３００とプロキシサーバ４００を介して、直接行われる。
【００３８】
さらにまた、図１では、クライアント・コンピュータとサーバ・コンピュータはともに、ファイアーウォールの内側にあるが、サーバ・コンピュータを、ファイアーウォールの外側に置いてもよい。その際、もしセキュリティ的に懸念があれば、ＶＰＮなどの仕組みで、セキュリティを強化することも可能である。
【００３９】
次に、図３を参照して、サーバ・コンピュータ２００における、ウェブ・アプリケーション・サーバ２０２の機能について、より詳細に説明する。図２では、ある程度具体的なハードウェア構成のブロック図を説明したが、ここで再び、必要に応じて、より抽象度の高い、ソフトウェア・モジュールのブロック図が説明に使用されることに留意されたい。
【００４０】
図３において、ウェブ・アプリケーション・サーバ２０２は、アプリケーション実行部２５２と、サービス呼び出し部２５４と、サービス呼び出し管理部２５６と、アプリケーション管理部２５８とをもつ。
【００４１】
ハードディスク２０４には、サービス呼び出し定義２６２と、アプリケーション定義２６４が、呼び出し可能に記録されている。サービス呼び出し定義２６２には、予めシステム管理者により用意された、個々のウェブサイトにアクセスするためのサービス・モデル要素（ウイジェット（widget)とも呼ばれる）が複数格納されている。サービス・モデル要素の作成及び編集については、図１１を参照して、後で説明する。アプリケーション定義２６４には、クライアント・コンピュータ１００のユーザーが予め作成した、サービス呼び出し定義２６２に定義されているウイジェット及びその他の処理手順を含むアプリケーション・プログラムが保存されている。
【００４２】
認証許可ブロック２６６は、例えば、システム管理者により予め用意された、クライアント・コンピュータ１００のユーザーのユーザーＩＤと、パスワードの組である。これらの情報は、例えば、ハードディスク２０４に記憶され、クライアント・コンピュータ１００のユーザーが、サーバ・コンピュータ２００にログインするとき、ユーザーＩＤと、それに対応するパスワードの組の入力を求められることになる。
【００４３】
アプリケーション実行部２５２の基本的な機能は、ウェブ・ブラウザ１０２から送られたコマンドを解釈して実行することである。サービス呼び出し部２５４には、ＵＲＬやパラメータが定義され、アプリケーション実行部２５２は、サービス呼び出し部２５４内のＵＲＬやパラメータを使って、直接、ウェブサイトのサービス６０２にアクセスすることができる。尚、ここで、ＵＲＬとは例えば、http://www.xyz.com/Service/CGI/purchase.cgiのようなものであり、パラメータとは、http://www.xyz.com/Service/CGI/purchase.cgi?&cost=parm1&goods=parm2における、costやgoodsのようなものである。サービス呼び出し管理部２５６は、ウェブ・ブラウザ１０２からの要求に応じて、アプリケーション定義２６４から、アクセスしているクライアント・コンピュータ１００のユーザーが所有者であるアプリケーション・プログラムを呼び出して、編集／実行／削除可能とする。このとき、アプリケーション・プログラムの所有者の情報は、ログインしているユーザーＩＤによって知ることができる。
【００４４】
ウェブ・アプリケーション・サーバ２０２内に示されている、クライアント・モジュール２６０は、通常はハードディスク２０４に保存され、ウェブ・ブラウザ１０２からの要求に応じて、クライアント・コンピュータ１００にダウンロードされる。この実施例では、クライアント・モジュール２６０の典型的な形式は、拡張子jsで表される、ＪａｖａＳｃｒｉｐｔのファイルである。すなわち、ＪａｖａＳｃｒｉｐｔの記法は、
<script type="text/javascript">
<!--
実際のＪａｖａＳｃｒｉｐｔのコード
//-->
</script>
のような直接書き込む記法と、
<script src="abc.js" type="text/javascript"></script>
のような、ＪａｖａＳｃｒｉｐｔのファイル名を指定し呼び出す方法とがある。この実施例では、主として、ＪａｖａＳｃｒｉｐｔのファイル名を指定し呼び出す方法をとる。
【００４５】
次に、図４を参照して、クライアント・コンピュータ１００における、アプリケーション管理環境について説明する。クライアント・コンピュータ１００のユーザーが、サーバー・コンピュータ２００にログインすると、ウェブ・アプリケーション・サーバ２０２の処理によって、クライアント・コンピュータ１００には、クライアント・コンピュータ２００から、好適にはＪａｖａＳｃｒｉｐｔで書かれた、アプリケーション管理モジュール２６０がダウンロードされる。このアプリケーション管理モジュール２６０の働きにより、アプリケーション管理部２５８に、ログインしているユーザーのユーザーＩＤを含むコマンドが送られアプリケーション管理部２５８は、そのユーザーが所有者であるアプリケーション・プログラムを、アプリケーション定義２６４から検索して、クライアント・コンピュータ１００に送り返す。これにより、インターネット・プラウザ１０２の画面には、アプリケーション管理モジュール２６０の働きにより、図示のような、アプリケーション・リスト１５０が表示される。
【００４６】
このリスト１５０は、そのユーザーが所有者であるアプリケーション１〜４を表示し、その右には、「実行」と表示されたボタン１５２と、「編集」と表示されたボタン１５４と、「削除」と表示されたボタン１５６が配置される。ボタン１５２を、マウス１２４（図２）でクリックすることに応答して、サーバー・コンピュータ２００から、実行環境用のモジュールがダウンロードされ、その行のプログラムの実行環境（後述する）に移行する。ボタン１５４を、マウス１２４でクリックすることに応答して、サーバー・コンピュータ２００から、開発環境用のモジュールがダウンロードされ、その行のプログラムの開発環境（図５）に移行する。ボタン１５６を、マウス１２４でクリックすることにより、その行のプログラムを削除する指令がアプリケーション管理部２５８に送られ、それに応答して、アプリケーション管理部２５８は、ハードディスク２０４から、その対応するアプリケーション・プログラムを削除する。「新規作成」と表示されたボタン１５８をクリックすると、それに応答して、サーバー・コンピュータ２００から、開発環境用のモジュールがダウンロードされ、新規の状態での開発環境に移行する。
【００４７】
次に、図５を参照して、本発明の中心的な特徴である、開発環境について、説明する。図４に示すウェブ・ブラウザ１０２の画面で、編集ボタン１５４、または新規作成ボタン１５８を、マウス１２４でクリックすることによって、ウェブ・アプリケーション・サーバ２０２によって、開発環境用のモジュールが、アプリケーション管理モジュール２６０から、クライアント・コンピュータ１００にダウンロードされ、それによって、図５に示すような画面が、ウェブ・ブラウザ１０２に表示され、開発環境の使用が可能になる。開発環境は、サービスモデル表示部１６２と、アプリケーション編集部１６４と、ＧＵＩ部品表示部１６６と、サービスリスト表示部１６８と、データハブ１７０と、プロパティ編集部１７２、という複数の領域からなる。この実施例では、サービスモデル表示部１６２と、ＧＵＩ部品表示部１６６とが、そこからＧＵＩ部品をアプリケーション編集部１６４に貼り付けることができる、パレット領域である。これらの領域は、この実施例では、タイル型に区分けされた領域であるが、個々の領域で互いに重畳を許す、マルチウインドウ表示方式で実装してもよい。
【００４８】
ＧＵＩ部品リスト表示部１６６は、詳細は図示しないが、ボタン、エディット領域、メモ、ラベル、コンボボックス、ラジオボタンなどの、ＧＵＩ部品を表示し、そこから、アプリケーション編集部１６４に、ＧＵＩ部品をドラッグ・アンド・ドロップ可能である。
【００４９】
サービスリスト表示部１６８は、システム管理者が予め作成した、ウェブサービスアクセス用のサービスをリストするものである。図６にその例を示す。図６では、Ｚｉｐコードを入力すると、都市と州を返すウェブ・サイトである、ＣｉｔｙＳｅａｒｃｈ、製品の価格を調べるためのＰｒｉｃｅ．ｃｏｍ、ウェブ上で地図を表示するためのＷｅｂＭａｐ、都市と州から、その緯度と経度を返す、ＭａｐＣｏｄｅが表示されている。なお、これらは説明の例示のためのウェブ・サイトであり、必ずしも実在するウェブ・サイトに対応するものではないことを理解されたい。
【００５０】
サービスモデル表示部１６２は、サービスリスト表示部１６８で選ばれているサービスの、トリガ（Trigger）要素として示された入力要素と、Outputとして示された出力要素を、階層的且つ図式的に表示する領域である。これらの表示された入力要素と、出力要素は、アプリケーション編集部１６４あるいは、後述するデータハブ１７０に、ドラッグ・アンド・ドロップ可能であり、また、アプリケーション編集部１６４あるいは、データハブ１７０から、ドラッグ・アンド・ドロップ可能である。
【００５１】
サービスの出力要素として、単なるテキスト文字列以外に、例えば、ＸＭＬで構造化されたリストをとることがあり得る。出力要素が単なるテキスト文字列である場合は、そこからデータハブ１７０にドラッグ・アンド・ドロップされたとき、データハブ１７０で占めるセルは、単一であるが、出力要素がリストである場合は、そこからデータハブ１７０にドラッグ・アンド・ドロップされたとき、データハブ１７０で、当該リストに含まれる文字列または数字の数のセルを占め、且つそのセルの各々に、リストに対応する文字列または数字が格納されることを理解されたい。
【００５２】
アプリケーション編集部１６４は、ＧＵＩ部品リスト表示部１６６からＧＵＩ部品を、サービスモデル表示部１６２から、Trigger要素、入力要素あるいは出力要素を、それぞれ、ドラッグ・アンド・ドロップ可能である。
【００５３】
サービスモデル表示部１６２のTrigger要素は、アプリケーション編集部１６４に貼り付け、プログラムを実行させた状態でクリックすると、そのサービスに指定されたＵＲＬへのアクセスを開始させる。サービスモデル表示部１６２に表示されたサービスの入力要素とは、ＵＲＬにアクセスする際に与えられるパラメータのことである。例えば、http://www.CitySearch.com/Search/CGI?&zipcode=98231のようなアクセスが行われるとき、zipcodeがパラメータ入力要素（以下、単にパラメータとも呼ぶ）であり、98231が、その内容である。http://www.CitySearch.com/Search/CGI?&zipcode=2428502&coutry=Japanのように、パラメータは、複数取りえる。なお、ウェブサービスは、必ず入力パラメータまたは要素をもつとは限らず、入力要素のないウェブサービスもあり得ることを理解されたい。例えば、単に現在のグリニッジ標準時を返すようなウェブサービスだと、パラメータは不要である。
【００５４】
一方、ウェブサイトにアクセスしたとき返されるデータは、ＨＴＭＬであったり、ＸＭＬであったり、ＪａｖａＳｃｒｉｐｔ言語の仕様の一部を利用した、比較的軽いデータ交換フォーマットである、ＪＳＯＮ(JavaScript Object Notation)であったりする。このように、ウェブサイトにアクセスしたとき返されるデータは、構造化されたデータであり得るので、サービスモデル表示部１６２の出力要素として、ドラッグ・アンド・ドロップ可能な単位も、返されるＸＭＬのリスト全体であったり、そのリストの一部であったり、と多様な形態を取りえる。
【００５５】
また、この実施例で、ウェブサイトまたはウェブサービスにアクセスされるときは、好適には、Ａｊａｘと呼ばれる技術に基づく、ＸＭＬＨｔｔｐＲｅｑｕｅｓｔと呼ばれる、サーバとの非同期通信が利用される。この技術を利用することによって、画面の書き換えを迅速化し、且つデータ通信量を低減することができる。但し、通常のＨＴＴＰプロトコルのコマンドを利用するものであってもよい。
【００５６】
データ連携領域としてのデータハブ１７０は、好適には、スプレッドシート（表計算プログラムとも呼ばれる）の外観のインターフェースをもつものであり、縦横に区分けされた区域からなる。これらの区域を、スプレッドシート・プログラムの慣用に倣って、Ａ１、Ａ２、Ｂ１などの名前のセルと呼ぶことにする。各セルには、ユーザーが値を入れることもできるし、アプリケーション編集部１６４に貼り付けられたＧＵＩ部品からドラッグ・アンド・ドロップ可能であるし、スプレッドシートでよく知られた形式の、=A1+B1や、=A1&","&B1のような計算式を入れることもできる。どのような式を許容するかは、ＪａｖａＳｃｒｉｐｔなどを使用したプログラミングのコードに依存する。一方、それらの各セルを、逆に、アプリケーション編集部１６４に貼り付けられているＧＵＩ部品、あるいは、サービスモデル表示部１６２に表示されているサービスの入力要素を宛先として、ドラッグ・アンド・ドロップ可能である。すなわち、この実施例では、データハブ１７０は、上記のようなドラッグ・アンド・ドロップ、及びセル間の様々な計算機能を提供するように、ＪａｖａＳｃｒｉｐｔの機能を利用して作り込まれている。
【００５７】
前述したように、データハブ１７０には、ウェブサービスの出力要素として、ＸＭＬなどで記述されたリスト出力要素が貼り付けられることがあり、そのような場合、リスト出力要素がデータハブ１７０にドラッグ・アンド・ドロップされると、リストに含まれる要素の数だけのセルを、占めることになる。このように、リストからドラッグ・アンド・ドロップされた複数のセルに対しては、統計処理を行う必要性があり得るので、この実施例では、=SUM(A1..E1)のような合計関数、=AVERAGE(A1..E1)のような平均関数、=STDEVA(A1..E1)のような標準偏差関数、=MAX(A1..E1)のような最大関数、=MIN(A1..E1)のような最小関数などさまざまな統計関数も用意されている。このような数式処理のＪａｖａＳｃｒｉｐｔによる実装は、プログラミング技法として確立されたものなので、特に詳述しない。
【００５８】
この実施例では、ドラッグ・アンド・ドロップ処理は、Ｄｏｊｏライブラリのツールキットを使用して実現されており、それは、下記のようなコードとなる。
drag ソース側:  var ds = new dojo.dnd.HtmlDragSource(domNode, dragSourceName);
drop ターゲット側:  var dt = new dojo.dnd.HtmlDropTarget(domNode, dropTargetName);
また、ドラッグ・アンド・ドロップによってバインドした情報は宣言的な形式(ＸＭＬ)で保持される。下記は、その記法の一例で、InputText_0という名前のsourceWidget（ドラッグ・アンド・ドロップ元のＧＵＩ要素）と、Action_0という名前のtargetWidget（ドラッグ・アンド・ドロップ先のＧＵＩ要素）を関連付けることが指定されている。
<Application:WidgetPropertyBinding sourceWidget="InputText_0" sourcePropertye="value" sourceEvent="setValue" targetWidget="Action_0" targetProperty="value">
</Application:WidgetPropertyBinding>
なお、この分野の当業者なら、このようなツール・キットの使用及び記法は、一例に過ぎず、同等な様々な技術を使用できることを理解するはずである。例えば、Ｗｉｎｄｏｗｓ（Ｒ）  ２０００、Ｗｉｎｄｏｗｓ  ＸＰ（Ｒ）などのオペレーティング・システムは、DragQueryPointなどのいくつかのドラッグ・アンド・ドロップ関係のＡＰＩ関数を用意しているので、これらを適宜呼び出して処理することもできる。
【００５９】
また、データハブ１７０で、ユーザーが数式を入力したセルは、一般的には、サービス・モデル表示部１６２に表示されたサービス・モデルの、入力要素、トリガ要素などにドラッグ・アンド・ドロップされて、関連付けられる。しかし、このような要素上ではなく、例えば、アプリケーション編集部１６４の空白領域に直接ドラッグ・アンド・ドロップすることによって、そこに、テキスト入力領域のＧＵＩ部品を自動的に貼り付け、そこに、ドラッグ・アンド・ドロップのもととなったデータハブ１７０のセルの値が関連付けられるように、図５のクライアント開発環境の機能を設定しておくこともできる。例えば、ＧＵＩ部品リスト表示部１６６からアプリケーション編集部１６４の空白領域へのドラッグ・アンド・ドロップは、慣用的な技術によって、選択したＧＵＩ部品のアプリケーション編集部１６４上への配置をもたらす。従って、これと同様の技術を利用して、データハブ１７０のセルから、アプリケーション編集部１６４の空白領域へのドラッグ・アンド・ドロップが行われることに応答して、ドラッグ・アンド・ドロップされた箇所に、テキスト入力領域をあらわすＧＵＩ部品を貼り付け、続いて、そのテキスト入力領域に、ドラッグ・アンド・ドロップの元のデータハブ１７０のセルから、関連付けを行う、という処理が自動的に行われるように、クライアント開発環境に機能を付与することができる。
【００６０】
プロパティ編集部１７２は、一旦アプリケーション編集部１６４に貼り付けられ、マウスのクリックにより選択されたＧＵＩ部品またはサービスの入出力要素の、色、フォント、表示／非表示、Enable/Disableなどの属性を設定、あるいは変更するためのものである。
【００６１】
図９に、データハブ１７０を利用した、複数のウェブ・サービスの連携の例を、模式的に示す。図９で、サービス１は、inputとして、input1をもち、outputとして、<output1>、<output2>をもつ。サービス２は、inputとして、input1をもち、outputとして、<output1>、<output2>をもつ。サービス３及びサービス４はそれぞれ、inputとして、input1及びinput2をもち、outputとして、<output1>をもつものとする。アクセスしようとするウェブ・サービスのサイトの仕様に基づき、図７と図９に例示するようなinput及びoutputを備えたウイジェット（widget)を作成する方法は、後述する。
【００６２】
そこで、サービス１の<output1>、<output2>とにある演算を施した結果を、サービス２のinput1として与え、その結果に応答する、サービス２の<output1>、<output2>を、そのまま、サービス３のinput1、input2としてそれぞれ与えるとともに、サービス２の<output1>、<output2>とにある演算を施した結果を、サービス４のinput2に与え、サービス１の<output1>、<output2>とにある演算を施した結果に更に、サービス４のinput1に与える、というシナリオを考える。このために、サービス１の<output1>、<output2>は、データハブ１７０のセルＡ１、Ｂ１にドラッグ・アンド・ドロップされる。セルＣ１には、Ａ１とＢ１の所定の計算式が書かれる。そうして、セルＣ１は、サービス２のinput1にドラッグ・アンド・ドロップされる。サービス２の<output1>、<output2>はそれぞれ、データハブ１７０のセルＣ２、Ｄ２にドラッグ・アンド・ドロップされる。セルＥ２には、Ｃ２とＤ２の所定の計算式が書かれる。サービス２の<output1>、<output2>は、データハブ１７０を介することなく、直接、サービス３のinput1と、input2にそれぞれ、ドラッグ・アンド・ドロップされる。さらに、データハブ１７０のセルＣ１が、サービス４のinput1にドラッグ・アンド・ドロップされ、データハブ１７０のセルＥ２が、サービス４のinput2にドラッグ・アンド・ドロップされる。現実的には、ここまで複雑なシナリオは、実際上あまりないと思われるが、本発明のデータハブを利用するビジュアル的なプログラミングの利点を説明するために、このような少し極端な例を示してみた。すなわち、もしデータハブ１７０のようなインターフェースを用いないと、等価な機能のプログラムを実現するために、非常に複雑なコードを書かなくてはならず、一方、本発明によれば、スプレッドシートを使う初歩的なスキルだけで、同等の機能のプログラムが簡単に実現できることを理解されよう。
【００６３】
さて、サービス１のinput1は、ユーザーがキーボードなどから情報を入力するものとし、Triggerボタンのクリックに応答して、指定されたウェブ・サイトにアクセスし、その結果がデータハブ１７０の指定したセルを介して、サービス２、３及び４に、自動的に所望の結果を与えることが、図９からは、図式的に見て取れよう。尚、図９では、セルＣ１は、サービス２のTriggerにもドラッグ・アンド・ドロップされ、サービス２の<output1>は、Triggerにもドラッグ・アンド・ドロップされ、セルＥ２は、サービス４のTriggerにもドラッグ・アンド・ドロップされていることに留意されたい。これは、JavaScriptの、OnChangeというイベントハンドラによって、ドラッグ・アンド・ドロップ元の値の変化をトリガし、次のサービスを自動的に開始するようにするためである。こうしておくと、サービス１の<output1>及び<output2>のデータの変化によって、セルＣ１のデータが変化すると、サービス２のトリガ→サービス２の<output1>及び<output2>のデータの変化→サービス３のトリガ、及びセルＥ２の変化→サービス４のトリガ、が順次自動的に行われる。
【００６４】
次に図１０を参照して、クライアントの実行環境について、説明する。図４に戻って、アプリケーション１の隣の実行１５２というボタンをクリックすると、ウェブ・アプリケーション・サーバ２０２の機能により、アプリケーション実行モジュール２６０のうち、クライアント実行環境に関するモジュールが、クライアント・コンピュータ１００にダウンロードされる。クライアント実行環境に関するモジュールは、アプリケーション定義解釈部２６０ａと、アプリケーション表示部２６０ｂとからなる。今回選択されているのは、アプリケーション１（図４）なので、アプリケーション管理部２５８から、アプリケーション１のアプリケーション定義２６４がダウンロードされて、アプリケーション定義解釈部２６０ａで実行される。アプリケーション定義解釈部２６０ａの実行結果に基づき、アプリケーション表示部２６０ｂの働きにより、ウェブ・ブラウザ１０２の画面には、選択したアプリケーション１が表示され、その実行に応じて表示結果が更新される。
【００６５】
なお、図１及び図２からも見て取れるように、クライアント・コンピュータ１０６は、サーバ・コンピュータ２００を介することなく、プロキシ・サーバ４００を通じて直接、ウェブサイト６０２〜６０６にアクセスすることが可能である。しかし、サーバ・コンピュータ２００からダウンロードしたモジュールを使って、クライアント・コンピュータ１０６が、サーバ・コンピュータ２００を介さないで、外部のウェブサイトにアクセスすることは、クロスサイト・セキュリティホールと呼ばれる問題を生じる惧れがある。このため、この実施例では、図１０に示すように、ウェブ・アプリケーション・サーバ２０２からダウンロードされたモジュールにより実行されるアプリケーションは、必ず、ウェブ・アプリケーション・サーバ２０２内のアプリケーション実行部２５２を介して、外部のウェブサイトにアクセスするような仕組みが採用されている。
【００６６】
次に、図１１を参照して、サービス呼出し管理環境について説明する。ここでサービスと呼ぶのは、例えば、図８でＣｉｔｙＳｅａｒｃｈ、Ｐｒｉｃｅ．ｃｏｍなどとして表示した、サービスを提供するウェブ・サイトのことである。ユーザーが、サービス呼び出し管理環境ログイン画面（図示しない）で、所定のユーザーＩＤとパスワードでログインすると、ウェブ・アプリケーション・サーバ２０２から、サービス呼出し管理環境用のモジュール２６０がダウンロードされて、ウェブ・ブラウザ１０２の画面には、図１１に示すように、登録サービス・リスト表示部１８０と、サービス呼び出し定義部１９０からなるメニューが、表示される。なお、この実施例では、サービス呼出し管理環境にログインする権限は、図４に示すアプリケーション管理環境にログインする権限よりも制限されていて、通常、システム管理者の役目をもつ人達にのみ許されていることを理解されたい。その理由は、一旦作成したサービスのウイジェットは、図５に示す開発画面で、サービスリスト表示部１６８に現れて、どのユーザーにも使用可能なものなので、信頼された動作をするものでなくてはならないからである。
【００６７】
さて、登録サービス・リスト表示部１８０には、ウェブ・サーバ・アプリケーション・プログラム２０２のサーバ・サービス呼び出し管理部２５６から読み出されたサービス呼び出し定義２６２に基づいて、登録済みのサービスがリストされる。実際上、エントリ１８２、１８４、１８６の箇所に、登録されているサービスの名称（例えば、図８におけるＣｉｔｙＳｅａｒｃｈなど）が表示される。その右の編集ボタン１８６をクリックすることにより、そのサービスを編集するメニュー（図示しない）となる。あるいは、削除ボタン１８９をマウスでクリックすることにより、そのサービスが、サービス呼び出し定義２６２から削除される。登録されている個々のサービスに対して、サービスプロファイル定義部には、ＵＲＬ（例えば、http://www.CitySearch.com/Search/CGI)及び、システム管理者でつけた、そのサービスの名前（例えば、ＣｉｔｙＳｅａｒｃｈ）が登録されている。
【００６８】
入力パラメータ定義部１９４には、登録されている個々のサービスに対して、入力パラメータの名前、出力内容の名前と属性が登録されている。例えば、上記ＣｉｔｙＳｅａｒｃｈの場合、入力パラメータの名前は、zipcodeであり、出力内容の名前は、<City>と<State>であり、各々の属性は、テキストである。
【００６９】
システム管理者が、ＵＲＬを指定し、パラメータとして適当なものを入れて、実行ボタン１９７をクリックすると、ウェブ・サーバ・アプリケーション・プログラム２０２のサービス呼び出し管理部２０２を介して、ウェブ・サイトのサービス６０２にアクセスされ、その実行結果が、出力表示部１９６に表示される。ウェブ・サービスの性質に応じて、出力内容の属性には、テキスト以外に、ＨＴＭＬ、ＸＭＬ、ＪＡＳＯＮなどがあり得る。ＸＭＬなどの出力結果は、構造化文書なので、全体をリストすることもできるし、特定のタグで囲まれた内容を取り出すようにすることもできる。よって、サービスのウィジェットを作成するシステム管理者は、この表示結果をみて、適宜、出力されたＸＭＬ全体をリストするビューを設けたり、ＸＭＬの特定のタグで囲まれた内容を取り出すビューを作成したりする。そのようにして作成した出力ビューは、入力パラメータ定義部１９４から読み出されて、図７に<City>と<State>で示されるように、選択されたサービスに対応して、サービスモデル表示部１６２に表示される。
【００７０】
実行ボタン１９７をクリックして実行させた結果が、満足いくものであったとシステム管理者が判断すると、システム管理者は、保存ボタン１９８をクリックする。すると、使用されたパラメータと出力ビューの内容で、パラメータが、そのサービスに関連付けられて入力パラメータ定義部１９４に定義される。
【００７１】
システム管理者が、新規ボタン１９９をクリックすると、ＵＲＬ及びパラメータがブランクの画面（図示しない）が現れるので、システム管理者は、適宜ＵＲＬや各種パラメータを入力して、実行ボタン１９７をクリックする。こうして満足のいく結果が得られたら、保存ボタン１９８をクリックする。すると、新しいＵＲＬと名前がサービス呼び出し定義部１９０に保存され、それに関連するパラメータが入力パラメータ定義部１９４に保存され、こうして新しいサービス呼び出し定義２６２が作成され、保管されたことになる。
【００７２】
以上、本発明の一実施例について説明してきたが、図１２のフローチャートを参照しながら、アプリケーション開発シナリオを説明することにより、本発明の理解が一層深まると思われる。
【００７３】
図１２で、ステップ１２０２では、クライアント・コンピュータ１００のユーザーが、ウェブ・ブラウザ１０２を開き、ログインする。すると、図１のネットワーク３００を介して、ウェブ・アプリケーション・サーバ２０２に通信が確立され、アプリケーション管理部２５８がログイン画面（図示しない）を返す。これに応答して、ユーザーが、ユーザーＩＤとパスワードを入れると、アプリケーション管理部２５８は、認証許可モジュール２６６（図３）を参照して、そのユーザーＩＤとパスワードを確認し認証する。
【００７４】
認証が成功すると、図４に示す、アプリケーション管理環境のメニューが、ウェブ・ブラウザ１０２に表示される。ここで、ステップ１２０４に進んで、ユーザーは、アプリケーションリスト１５０から、既存のものを選んで、編集ボタン１５４をクリックするか、新規作成ボタン１５８をクックする。すると、アプリケーション管理部２５８の働きにより、クライアント開発環境用のモジュールが、クライアント・コンピュータ１００にロードされて、初期化の後、ウェブ・ブラウザ１０２には、図５に示される画面が表示される。新規作成の場合は、アプリケーション編集部１６４は、白紙であり、編集の場合は、選択したアプリケーションのアプリケーション定義２６４が、アプリケーション管理部２５８から読み出されて、予め選択されているウイジェット等が、アプリケーション編集部１６４に描画される。また、新規であれ編集であれ、ＧＵＩ部品リスト１６４には、予め登録してある内容がリストされる。また、サービス呼び出し管理部２５６は、登録されているサービス呼び出し定義２０４を呼び出し、そこに定義されているサービスの名前に従って、サービスリスト呼び出し部１６８に、サービスをリストする。
【００７５】
ステップ１２０６では、ユーザーが、使用を意図するサービスモデル（単に、サービスとも呼ばれる）を、サービスモデル表示部１６２上に、マウスのクリックによりドラッグ・アンド・ドロップする。すると、その選択されたサービスの要素が、予め入力パラメータ定義部１９４（図１１）で定義されている構造で、サービスモデル表示部１６２に表示される。その様子の一例が、図７に示されている。
【００７６】
ステップ１２０８では、ユーザーは、InputとTriggerを、アプリケーション編集部１６４にドロップする。また、ステップ１２１０で、ユーザーは、他のサービスモデルの入力として使いたいOutputを、データハブ１７０の任意のセルにドラッグ・アンド・ドロップする。
【００７７】
ステップ１２１２では、ドラッグ・アンド・ドロップ操作に応答して、サービスリスト表示部１６８が、ドラッグ・アンド・ドロップ操作のもととなったサービスモデルへの出力参照を供給する。一方で、データハブ１７０側では、ドラッグ・アンド・ドロップされたセルに対して、供給元とのバインドをアプリケーション定義メモリ（図示しないが、図２のメインメモリ１１０中に、allocateされる）に作成し、実際のデータを当該セル上に表示する。ここで、データハブ１７０の、ドラッグ・アンド・ドロップされたセルの近隣のセルに、近隣のセルに基づき計算式を入れる。すると、アプリケーション定義メモリに格納されている値に基づき計算が行われ、その結果が、計算式を入れたセルに反映して表示される。
【００７８】
ステップ１２１４では、ユーザーは、次に使用するサービスモデルを、サービスモデル表示部１６２上に、マウスのクリックによりドラッグ・アンド・ドロップする。すると、サービスモデル表示部１６２には、ステップ１２０６で説明したのと同様の作用で、ドラッグ・アンド・ドロップされたサービスモデルのinput、outputなどの構造が表示される。
【００７９】
ステップ１２１６では、ユーザーは、サービスモデル表示部１６２上に表示されたinputとtriggerに対して、データハブ１７０の、上記計算式を入れたセルをドラッグ・アンド・ドロップすることによって、バインドする。すると、サービスモデル表示部１６２は、ドラッグ・アンド・ドロップされたinputとtriggerに対する参照を供給する。一方、データハブ１７０は、input参照とセル参照の間のバインド、及び、trigger参照とセル参照の間のバインドを、それぞれ、アプリケーション定義メモリに作成する。
【００８０】
ステップ１２１８では、ユーザーは、サービスモデル表示部１６２のoutputを、アプリケーション編集部１６４（図５）に、ドラッグ・アンド・ドロップする。これに応答して、アプリケーション編集部１６４は、サービスモデル表示部１６２からの出力参照を作成して、ドラッグ・アンド・ドロップされた箇所に表示する。
【００８１】
次に、ステップ１２２０で、図５には図示されていないが、ユーザーが、所定のボタンをクリックするなどの動作によって、作成されたアプリケーションをセーブする処理を選ぶと、現在動作している、アプリケーション開発環境のモジュールは、アプリケーション定義メモリ上のデータを、サーバ・コンピュータ２００の、アプリケーション管理部２５８（図３を参照）に送る。これに応答して、アプリケーション管理部２５８は、その内容を、アプリケーション定義２６４として、後で読み出し可能に、ハードディスク２０４に保存する。
【００８２】
このようにして保存されたアプリケーションをユーザーが呼び出して実行したい場合は、ユーザーは、ログインの後、アプリケーション管理環境を表示するメニューを選ぶ。すると、ウェブ・サーバ・アプリケーション・プログラム２０２の動作によって、対応するアプリケーション管理モジュールが、クライアント・コンピュータ１００にダウンロードされ、図４に示すような画面があらわける。
【００８３】
ここで、ユーザーが、所定のアプリケーションを選んで、対応する実行ボタン１５２をクリックすると、アプリケーションを実行するモジュールが、ウェブ・サーバ・アプリケーション・プログラム２０２の動作によって、クライアント・コンピュータ１００にダウンロードされ、動作を開始するが、このことは、図１０に関連して説明したので、これ以上の説明は省略する。
【００８４】
図１３で、ステップ１３０２では、クライアント・コンピュータ１００のユーザーが、ウェブ・ブラウザ１０２を開き、サービス呼び出し管理メニューにログインする。すると、図１のネットワーク３００を介して、ウェブ・アプリケーション・サーバ２０２に通信が確立され、アプリケーション管理部２５８がログイン画面（図示しない）を返す。これに応答して、ユーザーが、ユーザーＩＤとパスワードを入れると、アプリケーション管理部２５８は、認証許可モジュール２６６（図３）を参照して、そのユーザーＩＤとパスワードを確認し認証する。通常、サービス呼び出し管理メニューにログインする権限は、図１２のアプリケーション開発画面にログインする権限よりも制限されている。なぜなら、ここで登録したサービスモデルは、各ユーザーから共通に選ばれるものであるので、きちんと動作するものでなくてはならず、よって、ある程度スキルのある人が作成することが望ましいからである。
【００８５】
さて、ログインすると、ウェブ・アプリケーション・サーバ２０２から、所定のモジュール２６０が、クライアント・コンピュータ１００にダウンロードされ、以って、図１１のようなメニューが、ウェブ・ブラウザ１０２の画面にあらわれる。そうして、ステップ１３０２では、登録サービス・リスト表示部に、エントリ１８２、１８４、１８６などが表示される。
【００８６】
新規作成の場合は、ユーザーは、ボタン１９９（図１１）をクリックする。そうして、ユーザーは、ステップ１３０６で、サービスＵＲＬ、登録名、解説などを入力する。また、ステップ１３０８で、ユーザーは、サービスの入力パラメータを設定し、サンプルのパラメータ値を入力する。
【００８７】
編集の場合は、ユーザーは、対応するエントリの編集ボタン１８９（図１１）をクリックする。すると、サービス呼び出し管理部２５６から、対応するサービス呼び出し定義２６２がダウンロードされ、それによって、サービスプロファイル定義部１９２と、入力パラメータ定義部１９４に、データが供給される。
【００８８】
ステップ１３１０では、ユーザーが、ボタン１９７をクリックすることによって、試行を行う。このことは、サービス呼び出し定義部１９０が必要なＨＴＴＰリクエストを構築し、サービス呼び出し部２０２を介して、ウェブサイトのサービス６０２にアクセスすることによって、行われる。特に、構築されたＨＴＴＰリクエストがＧＥＴである場合、サービス呼び出し定義部１９０は、ウェブサイトのサービス６０２に直接、リクエストを飛ばすことができる。
【００８９】
こうして、サービス呼び出し定義部１９０は、ウェブサイトのサービス６０２から結果を受け取り、出力表示部１９６に表示する。この結果が所望であると判断すると、ユーザーは、ステップ１３１２で、保存ボタン１９８（図１１）をクリックする。すると、サービス呼び出し定義部１９０は、出力表示部１９６に表示されているデータから、サービス呼び出し定義２６２を構築し、ウェブ・アプリケーション・サーバ２０２のサービス呼び出し管理部２５６に送る。すると、サービス呼び出し管理部２５６は、その送られてきたサービス呼び出し管理部２５６を、ハードディスク２０４に保存する。
【００９０】
次に、この実施例に基づく、アプリケーションの開発のための操作を、具体例で説明する。ここで、ユーザーは、(1) ＣｉｔｙＳｅａｒｃｈというウェブサイトに、ｚｉｐｃｏｄｅを入れることで、都市と州のデータを入手し、(2) その都市と州のデータを組み合わせて、ＭａｐＣｏｄｅというウェブサイトにアクセスし、(3) その都市の緯度と経度を得る、というアプリケーションを作成することを意図している。ただ、ＣｉｔｙＳｅａｒｃｈは、都市と州のデータを個別に返すが、ＭａｐＣｏｄｅは、都市と州とを組み合わせたデータを要求する。そのことを自動的に処理するために、本発明の特徴が好適に利用される。
【００９１】
図１４を参照すると、アプリケーションの新規開発の初期画面が示されている。この画面では、ＧＵＩ部品リスト表示部１６６と、プロパティ編集部１７２は、以下の説明では関連性が薄いので、表示を省略していることに留意されたい。さて、この画面で、ユーザーは、サービスリスト表示部１６８から、矢印１４０２で示すように、ＣｉｔｙＳｅａｒｃｈを、サービスモデル表示部１６２に、ドラッグ・アンド・ドロップする。
【００９２】
すると、図１５に示すように、サービスモデル表示部１６２に、ＣｉｔｙＳｅａｒｃｈの入出力を含む構造が表示される。この構造は、システム管理者によってＣｉｔｙＳｅａｒｃｈに対応して作成されて、図１１に示すように、サービス呼び出し定義２６２に定義済みである。
【００９３】
ここで、図１５で、サービスモデル表示部１６２から、ＣｉｔｙＳｅａｒｃｈのtriggerを、矢印１５０２で示すようにアプリケーション編集部１６４にドラッグ・アンド・ドロップし、ＣｉｔｙＳｅａｒｃｈのinput1を、矢印１５０４で示すようにアプリケーション編集部１６４にドラッグ・アンド・ドロップする。
【００９４】
すると、図１６に示すように、triggerをドラッグ・アンド・ドロップした箇所は、「Go」という文字を含むボタン１６０２となり、input1をドラッグ・アンド・ドロップした箇所は、テキスト入力フィールド１６０４となる。
【００９５】
ここで、図１７に示すように、テキスト入力フィールド１６０４に、10001というｚｉｐｃｏｄｅをを入れて、ボタン１６０２をクリックすると、図３に示すサービス呼び出し管理部２５６を介して、ＣｉｔｙＳｅａｒｃｈに、zipcode=10001というパラメータを以ってアクセスがはかられ、ＣｉｔｙＳｅａｒｃｈは、<City>に、'New York'を、<State>に'NY'を返す。ここで、ユーザーは、サービスモデル表示部１６２のＣｉｔｙＳｅａｒｃｈのOutputの<City>を矢印１７０２で示すように、データハブ１７０のセルＡ１にドラッグ・アンド・ドロップし、同様にOutputの<State>を矢印１７０４で示すように、データハブ１７０のセルＢ１にドラッグ・アンド・ドロップする。
【００９６】
すると、セルＡ１は<City>に、セルＢ１は<State>にそれぞれバインドされるので、図１８に示すように、データハブ１７０のセルＡ１には、'New York'が表示され、セルＢ１には、'NY'が表示される。
【００９７】
そこで、ユーザーは、データハブ１７０のセルＣ１に、文字列結合演算子＆を用いて、=A1&','&B1と計算式を入れて改行キーを押す。すると、図１９に示すように、その計算式が計算されて、セルＣ１には、'New York,NY'が表示される。なお、この実施例では、ここでの演算子の規則は、通常のスプレッドシートプログラムで慣用の形式になるように、ＪａｖａＳｃｒｉｐｔを用いてコーディングされているが、=A1+','+B2のような、他のプログラミング言語で慣用の記法を許すようにすることもできる。また、文字列結合演算子以外にも、加算、減算、その他の数学的関数など、任意の演算を実現することができることが、この分野の当業者には明らかであろう。
【００９８】
さらに、この例では、セルＡ１とセルＢ１の両方に、ウェブサービスからのoutputをそれぞれ格納したが、一方のセルを、ユーザーが直接セルに打ち込んだ文字列、あるいは、他セルへの参照を含む、計算式とするなど、さまざまな応用例が考えられる。
【００９９】
次に、図２０に示すように、サービスリスト表示部１６８から、ＭａｐＣｏｄｅを、サービスモデル表示部１６２の任意の領域に、矢印２００２で示すように、ドラッグ・アンド・ドロップする。すると、図２１に示すように、サービスモデル表示部１６２には、ＭａｐＣｏｄｅの入出力を含む構造が表示される。この構造は、システム管理者によってＭａｐＣｏｄｅに対応して作成されて、図１１に示すように、サービス呼び出し定義２６２に定義済みである。
【０１００】
そこで、ユーザーは、図２１の画面で、データハブ１７０のセルＣ１を、矢印２１０２、２１０４で示すように、サービスモデル表示部１６２内部の、ＭａｐＣｏｄｅのTriggerとInput1とにそれぞれ、ドラッグ・アンド・ドロップする。Input1だけでなく、Triggerにもドラッグ・アンド・ドロップする理由は、データハブ１７０のセルＣ１の値に変更に自動的に応答して、Input1をパラメータとして、ＭａｐＣｏｄｅへのアクセスが行われるようにするためである。
【０１０１】
なお、このとき、セルＣ１を直接、サービスリスト表示部１６８に表示されているＭａｐＣｏｄｅのInput1にドラッグ・アンド・ドロップする代わりに、ＭａｐＣｏｄｅのInput1を、アプリケーション編集部１６４に一旦、ドラッグ・アンド・ドロップし、そのアプリケーション編集部１６４のドラッグ・アンド・ドロップした箇所に、セルＣ１をドラッグ・アンド・ドロップしてもよい。それでも、セルＣ１の値が、ＭａｐＣｏｄｅのInput1に提供される、という意味では同じであるが、このようにしておくと、後で、アプリケーションを起動したときに、画面で、途中経過としてのＭａｐＣｏｄｅのInput1に提供された値を、ユーザーが目で見ることができる。
【０１０２】
実際、ＭａｐＣｏｄｅのTriggerが、このドラッグ・アンド・ドロップ操作に応答して、何にも関連づけられていなかった状態から、関連付けられた状態に変化したことにより、ＭａｐＣｏｄｅが、New York,NYというパラメータでアクセスされ、ＭａｐＣｏｄｅは、ニューヨーク市の緯度と経度を、それぞれ、<latitude>=40.71, <longitude>=-75.59として返す。そこで、サービスモデル表示部１６２から、アプリケーション編集部１６４に、矢印２２０２、２２０４でそれぞれ示すように、ＭａｐＣｏｄｅのoutputである、<latitude>及び<longitude>をドラッグ・アンド・ドロップすることにより、それらの値が、アプリケーション編集部１６４上で実際に見えるようになる。その様子を、図２２で示す。
【０１０３】
これで一応アプリケーションは完成であるが、図２３に示すように、後は、ユーザーは、適宜、アプリケーションを分かりやすくするための説明の文字列２３０２、２３０４、２３０６を追加して、アプリケーションをセーブする。
【０１０４】
このようにしてセーブされたアプリケーションは、図４に関連して説明した手順で、ユーザーが選択し、実行することができる。その実行画面は、図２４に示すとおりである。すなわち、データハブ１７０を介して構築したバインドの情報は、好適には、既にＸＭＬで表現された内部データとしてアプリケーション定義２６４に記述されており、データハブ１７０自体は、アプリケーション実行画面にはあらわれてこない。
【０１０５】
この画面で、ユーザーは、ZipCodeのところに例えば、95101と入れて、Goボタン２４０８をクリックする。すると、ユーザーには見えないが、定義に従って、ＣｉｔｙＳｅａｒｃｈに、zipcode=95101というパラメータで、アクセスがはかられる。そこで、ＣｉｔｙＳｅａｒｃｈは、<City>='San Jose', <State>='CA'を返す。システムはこれらから、図１４〜図２３に示す手順で作成され保存された内部の定義に従い、定義されたメモリ変数を、'San Jose,CA'に変更する。すると、この変更により、ＭａｐＣｏｄｅがトリガされ、パラメータ'San Jose,CA'でアクセスされ、<latitude>に37.20が、<longitude>に-122.06が返される。その結果を、図２５に示す。
【実施例２】
【０１０６】
上記の実施例は、ウェブ・サービスにアクセスするアプリケーションを作成する例について示したものであるが、当業者に容易に理解できるように、この発明は、一般的なクライアント・アプリケーションの作成にも適用できる。なお、この実施例で使用されるハードウェア及びソフトウェア環境は、例えば、図２のクライアント・コンピュータ１００に関連して説明したようなものでよく、ここでは、詳細な説明を省略する。
【０１０７】
図２６を参照すると、既存のビジュアル作成ツールで馴染みのある画面インターフェースが示されている。このインターフェースにおいて、メニューバー２６０２には、File, Edit, Viewなどのメニューが含まれ、特に、Fileには、フォームの新規作成、名前をつけて保存、終了などのサブメニューが含まれている。この表示画面のプログラムは、ユーザーの操作に応答して、図２に示すハードディスク１０４から、ＣＰＵ１０８とオペレーティング・システムの働きで、メインメモリ１１０に読み出され、ディスプレイ１１４に表示される。
【０１０８】
ＧＵＩ部品パレット領域２６０４には、テキスト入力領域、ラベル、メモ、コンボボックス、など既知のＧＵＩが、フォームにドラッグ・アンド・ドロップ可能に配置されている。ＧＵＩ部品パレット領域２６０４は、好適には、Ｔａｂ１、Ｔａｂ２、Ｔａｂ３・・・のように、タブで種別分けされ、ユーザーは、貼り付けたいＧＵＩ部品があるタブを選ぶようになっている。また、フォームに貼り付けられたＧＵＩ部品の、色、フォント、その他の属性を編集するためのプロパティ編集部２６０６が配置されている。ここまでは、既存のアプリケーション開発ツールで提供されているものであるが、本発明が提供する新規な機能は、スプレッドシートの外観をもつ、データハブ２６０６の存在である。これは、実質的に、図５に示したデータハブ１７０と等価な働きをする。
【０１０９】
ユーザーはまず、メニューバーのFileから、フォームの新規作成を選ぶ。すると、図２７に示すように、Form1というウインドウが作成される。そこでユーザーが、ＧＵＩ部品パレット領域２６０４から、テキスト入力領域の部品を、Form1にドラッグ・アンド・ドロップすると、そこに、テキスト入力領域２７０２、２７０４が表示される。また、必要に応じて、ラベルもドラッグ・アンド・ドロップし、必要に応じて、説明の文字２７０６、２７０８も入れておく。
【０１１０】
次に、ユーザーは、図２８に示すように、テキスト入力領域２７０２に、例えば、'Tokyo'という文字を入れ、テキスト入力領域２７０４に、'Japan'という文字を入れる。そうして、それぞれを、データハブ２６０６のセルＡ１とＢ１にドラッグ・アンド・ドロップする。すると、図２９に示すように、データハブ２６０６のセルＡ１と、セルＢ１には、それぞれ、'Tokyo'と'Japan'が表示されている。
【０１１１】
そこで、セルＣ１に、=A1&','&B1という式を入れて改行キーを押すと、Ｃ１には、'Tokyo,Japan'というデータが表示される。そこで、ユーザーがメニューバーのFileから、フォームの新規作成を選ぶ。すると、図２９に示すように、Form2というウインドウが作成される。そこで、Form2に、ＧＵＩ部品パレット２６０４からテキスト入力領域の部品をドロップすると、そこに、テキスト入力領域２９０２が表示される。この段階で、データハブ２６０６のセルＣ１から、テキスト入力領域２９０２にドラッグ・アンド・ドロップすると、テキスト入力領域２９０２に、'Tokyo,Japan'が表示される。
【０１１２】
このようにして、データハブを介して、同一フォーム内、または異なるフォームにある領域間の関連付けがなされることが理解されよう。このようにして作成された、フィールド間の関係は、同一プロジェクト内の１つのソースコードに自動的に記述するようにすることもできる。また、関連付けのソースの側の値の変化のイベントをトラップして、関連付けのターゲットに自動的に反映するようにすることも、既知の技術の範囲で可能である。
【０１１３】
このビジュアルツールが、ＢＡＳＩＣ、Ｃ＋＋、Ｃ＃、Ｊａｖａなどに関する場合、ユーザーがコードの記述をする必要性がなくなるような状況は考えにくいが、それでも、データハブの概念を使うことで、異なる領域間の関連付けの見通しをよくし、コード作成の能率を向上させることができると考えられる。
【０１１４】
以上のように、いくつかの実施例により、本発明の方法及びシステムを説明してきたが、本発明は、そのような方法あるいはシステムのみならず、ＣＤ−ＲＯＭ、ＤＶＤ−Ｒ、ＨＤＤなどのコンピュータ可読な媒体に格納された、あるいは、ウェブサイトからダウンロード可能なプログラムも保護範囲とするものであることを理解されたい。ＣＤ−ＲＯＭ、ＤＶＤ−Ｒ、またはＨＤＤ、あるいはネットワークを介して、適当なインストールプログラムの存在の下で、コンピュータに導入された、本発明に係るプログラムは、コンピュータのハードウェアと協働して、上記で説明したようなシステムを構成し、あるいは、上記で説明したような方法を実施することになる。
【０１１５】
また、上記実施例は、ＪａｖａＳｃｒｉｐｔ、ＢＡＳＩＣ、Ｃ＋＋、Ｃ＃、Ｊａｖａなどのコンピュータ言語に関連して、説明してきたが、これら特定のコンピュータ言語や環境に限定されるものではなく、オペレーティング・システムと協働して、上記で説明したようなＧＵＩ環境を提供できるなら、任意のコンピュータ言語やツールで実現したシステムまたは方法、あるいはそれを実現するためのコンピュータ・プログラムは、本発明の保護範囲である。
【０１１６】
更に、上記実施例では、データ・ハブ領域は、スプレッドシートの外観とインターフェースをもつものとして設計されているが、このような表示形式は、本発明にとって必須ではなく、そこにドラッグ・アンド・ドロップ可能な複数のフィールドと、それらのフィールドに格納された値に基づき計算した値を格納することができ、且つ他の宛先オブジェクトへドラッグ・アンド・ドロップ可能なフィールドをもつようになっているなら、任意の表示インターフェースをもつものでよいことを、理解されたい。
【図面の簡単な説明】
【０１１７】
【図１】ハードウェア構成の概要ブロック図である。
【図２】ハードウェア構成の、より詳細なブロック図である。
【図３】サーバ・コンピュータの機能ブロック図である。
【図４】アプリケーション管理環境の機能ブロックと、それに関連する画面表示を示す図である。
【図５】クライアント開発環境の機能ブロックと、それに関連する画面表示を示す図である。
【図６】サービスリスト表示部の表示を示す図である。
【図７】サービスモデル表示部の表示を示す図である。
【図８】データハブの表示を示す図である。
【図９】データハブを使用して複数のサービスへの問合せを連携させる様子を示す図である。
【図１０】クライアント実行環境の機能ブロック図である。
【図１１】サービス呼び出し管理環境の機能ブロック図である。
【図１２】アプリケーションの開発シナリオを示すフローチャートである。
【図１３】サービス呼び出し登録シナリオを示すフローチャートである。
【図１４】アプリケーション開発画面の具体例を示す図である。
【図１５】アプリケーション開発画面の具体例を示す図である。
【図１６】アプリケーション開発画面の具体例を示す図である。
【図１７】アプリケーション開発画面の具体例を示す図である。
【図１８】アプリケーション開発画面の具体例を示す図である。
【図１９】アプリケーション開発画面の具体例を示す図である。
【図２０】アプリケーション開発画面の具体例を示す図である。
【図２１】アプリケーション開発画面の具体例を示す図である。
【図２２】アプリケーション開発画面の具体例を示す図である。
【図２３】アプリケーション開発画面の具体例を示す図である。
【図２４】作成されたアプリケーションの動作画面を示す図である。
【図２５】作成されたアプリケーションの動作画面を示す図である。
【図２６】他の実施例に係るアプリケーション開発画面の具体例を示す図である。
【図２７】他の実施例に係るアプリケーション開発画面の具体例を示す図である。
【図２８】他の実施例に係るアプリケーション開発画面の具体例を示す図である。
【図２９】他の実施例に係るアプリケーション開発画面の具体例を示す図である。
【図１】
2008140194.tif 000003
【図２】
2008140194.tif 000004
【図３】
2008140194.tif 000005
【図４】
2008140194.tif 000006
【図５】
2008140194.tif 000007
【図６】
2008140194.tif 000008
【図７】
2008140194.tif 000009
【図８】
2008140194.tif 000010
【図９】
2008140194.tif 000011
【図１０】
2008140194.tif 000012
【図１１】
2008140194.tif 000013
【図１２】
2008140194.tif 000014
【図１３】
2008140194.tif 000015
【図１４】
2008140194.tif 000016
【図１５】
2008140194.tif 000017
【図１６】
2008140194.tif 000018
【図１７】
2008140194.tif 000019
【図１８】
2008140194.tif 000020
【図１９】
2008140194.tif 000021
【図２０】
2008140194.tif 000022
【図２１】
2008140194.tif 000023
【図２２】
2008140194.tif 000024
【図２３】
2008140194.tif 000025
【図２４】
2008140194.tif 000026
【図２５】
2008140194.tif 000027
【図２６】
2008140194.tif 000028
【図２７】
2008140194.tif 000029
【図２８】
2008140194.tif 000030
【図２９】
2008140194.tif 000031