(57)【要約】【課題】  ワークブックを開示し、リモートファンクションコールを介して呼び出すための方法、システム、および装置を提供する。【解決手段】  本発明のシステムによれば、クライアントコンピュータは、ワークブックモデルを作成するため表計算アプリケーションプログラムを実行する。ワークブックモデルは、関数名、並びに、モデルの入力および出力として使用されるセルを定義するデータと共に、サーバコンピュータに公開される。ワークブック関数に対するファンクションコールがサーバコンピュータで受信されると、サーバコンピュータは、入力として識別されるワークブックのセルに、ファンクションコールと共に受信した入力パラメータを入れ、ワークブックを再計算する。出力セルに含まれるデータは、リモートファンクションコールに対する応答として返される。【選択図】        図１
2006048647.tif 000002
【特許請求の範囲】
【請求項１】
リモートファンクションコールによってワークブックモデルにアクセスする方法であって、
前記ワークブックモデルを定義する機能を提供するステップと、
関数を定義するデータを含み、前記ワークブックモデルをリモートファンクションコールによって利用可能にするためのリクエストを受信するステップと、
ワークブックおよび前記関数を定義する前記データを、前記関数に対するリモートコールを受信し、それに応答するように動作するサーバコンピュータに公開するステップと、
を備えることを特徴とする方法。
【請求項２】
前記関数を定義する前記データは、前記関数の名前を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記関数を定義する前記データは、前記関数の入力として利用される１つまたは複数のワークブックセルの識別情報、並びに、各セルに対応する名前を含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記関数を定義する前記データは、前記関数の出力として利用される１つまたは複数のワークブックセルの識別情報、並びに、各セルに対応する名前を含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記サーバコンピュータに１つまたは複数の入力パラメータと共にリモートファンクションコールを発行するステップと、前記サーバコンピュータから１つまたは複数の出力パラメータを受信するステップとをさらに備えることを特徴とする請求項４に記載の方法。
【請求項６】
第２のワークブックのコンテキスト内からリモートワークブック関数を呼び出すリクエストを受信するステップと、
前記リクエストに応答して、呼び出される前記リモートワークブック関数の識別情報、前記リモートワークブック関数への入力用に利用される前記第２のワークブック内の１つまたは複数のセルの識別情報、並びに、前記リモートワークブック関数からの出力を入れる前記第２のワークブック内の１つまたは複数のセルの識別情報を受信するステップと、
入力用に使用される前記１つまたは複数のセルの内容と共に、前記リモートワークブック関数に対するリモートファンクションコールを発行するステップと、
前記コールに応答して、前記リモートワークブック関数から１つまたは複数の出力を受信するステップと、
前記リモートワークブック関数から受信した前記出力を、前記リモートワークブック関数からの出力を入れる前記１つまたは複数のセルに入れるステップと、
をさらに備えることを特徴とする請求項４に記載の方法。
【請求項７】
コンピュータによって実行されたとき、請求項１に記載の方法をコンピュータに実行させるコンピュータ実行可能命令を記憶することを特徴とするコンピュータ読取り可能媒体。
【請求項８】
請求項１に記載の方法を実行可能なコンピュータ制御装置。
【請求項９】
リモートファンクションコールによってワークブック関数へのアクセスを提供する方法であって、
ワークブックおよび前記ワークブック用の関数定義を受信するステップであって、前記関数定義は、前記ワークブック関数の名前、前記ワークブック関数用の入力として使用される前記ワークブック内の１つまたは複数のセルの記述、並びに、前記関数用の出力として使用される前記ワークブック内の１つまたは複数のセルの記述とを含むことと、
１つまたは複数の入力パラメータを含む、前記ワークブック関数に宛てたリモートファンクションコールを受信するステップと、
前記ワークブックをロードするステップと、
前記ワークブック関数用の入力として使用される前記ワークブック内の前記１つまたは複数のセルに、前記入力パラメータを入れるステップと、
前記ワークブックを計算するステップと、
前記関数用の出力として使用される前記ワークブック内の前記１つまたは複数のセルの内容を取り出すステップと、
前記リモートファンクションコールへの応答として、前記内容を返すステップと、
を備えることを特徴とする方法。
【請求項１０】
前記ワークブックを計算する前記ステップの前に、
前記ワークブックが外部データソースまたは別のワークブック関数への参照を含むかどうかを決定するステップと、
前記ワークブックが外部データソースまたは別のワークブック関数への参照を含むとの決定に応答して、参照データを求めて前記データソースに問い合せを行い、前記ワークブックに前記データを入力するステップと、
をさらに備えることを特徴とする請求項９に記載の方法。
【請求項１１】
コンピュータによって実行されたとき、請求項９に記載の方法をコンピュータに実行させるコンピュータ実行可能命令を記憶することを特徴とするコンピュータ可読媒体。
【請求項１２】
請求項９に記載の方法を実行可能なコンピュータ制御装置。
【請求項１３】
リモートファンクションコールによってワークブックモデルにアクセスするシステムであって、
前記ワークブックモデルを定義する機能を提供し、関数定義を含む、前記ワークブックモデルをリモートファンクションコールによって利用可能にするためのリクエストを受信するように動作し、また、前記関数に対するリモートコールを受信し、それに応答するように動作するサーバコンピュータに、前記ワークブック並びに前記関数定義を公開するようにも動作するクライアントコンピュータと、
前記クライアントコンピュータから前記ワークブックと関数定義とを受信し、１つまたは複数の入力パラメータを含むリモートファンクションコールを受信し、前記ワークブックをロードし、前記関数定義で指定されたセルに前記入力パラメータを入れ、前記ワークブックを計算し、前記関数用の出力として使用される前記関数定義によって指定された１つまたは複数のセルの内容を取り出し、前記セルの前記内容を前記リモートファンクションコールへの応答として返すように動作するサーバコンピュータと、
を備えることを特徴とするシステム。
【請求項１４】
前記関数定義は、前記関数の名前と、前記関数の入力として利用される１つまたは複数のワークブックセルの識別情報および各セルに対応する名前と、前記関数の出力として利用される１つまたは複数のワークブックセルの識別情報および各セルに対応する名前とを含むことを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記ワークブックを計算する前に、前記サーバコンピュータがさらに、
前記ワークブックが外部データソースへの参照を含むかどうかを決定し、
前記ワークブックが外部データソースへの参照を含むとの決定に応答して、参照データを求めて前記データソースに問い合せを行い、前記ワークブックに前記データを設定するように動作することを特徴とする請求項１４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リモートファンクションコールによるワークブックモデルへのアクセスを提供する方法、システム、および装置に関する。
【背景技術】
【０００２】
表計算アプリケーションプログラムの有用性の多くは、ユーザが専門的なコンピュータプログラミング技能を必要とせず、ワークシート（本明細書では、「スプレッドシート」とも呼ぶ）などの組織化された構造内において、データを取得し、アルゴリズム操作を施すことができる点にある。プログラマでないユーザでも、プログラミング言語を学ぶことなく、合計演算や償却演算などを始めとする複雑なデータ関係を指定することができる。プログラマでないユーザは、このように表計算アプリケーションプログラムの機能を利用して、複雑な数値および財務関係をモデル化することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
表計算アプリケーションプログラム内で複雑なモデルを定義することに伴う問題の１つは、他のユーザの使用をサポートするために、モデルがカプセル化またはラベル付けされていないことである。他のユーザがモデルにアクセスするのを許可するには、一般に、プログラマの力を借り、コンピュータプログラミング言語を使用して、モデルをコード化する必要がある。その後、モデルのコンパイル済バージョンが公開されれば、他のユーザはそれを利用することができる。しかし、プログラミング言語でモデルをコード化するには、技術を持ったプログラマの力を借りる必要があり、そのため、非常に時間がかかり、費用も高くなりやすい。
【０００４】
あるいは、モデルを含むワークブック（ワークシートまたはスプレッドシートの集まり）は、ファイル共有または電子メールを用いるなどの従来の方式によって、他のユーザと単に共用することもできる。しかし、従来の方式によってモデルを含むワークブックを共用すると、そのワークブックにアクセスした各ユーザに、モデル実装が開示されてしまう。例えば、モデル実装に財産権の対象となるアルゴリズムや計算方法が含まれていることがあるが、それでもそのモデルの利用をユーザに許可する必要のある場合、モデル実装をユーザに対して隠すことができるのが望ましいであろう。現行の表計算アプリケーションプログラムでは、モデルへのアクセスは許可できても、下層の実装へのアクセスを許可しないようにする機能は提供されていない。
【０００５】
本発明の様々な実施形態は、上記のおよびその他の考察に基づいている。
【課題を解決するための手段】
【０００６】
本発明によれば、上記のおよびその他の問題は、リモートファンクションコール（ｒｅｍｏｔｅ  ｆｕｎｃｔｉｏｎ  ｃａｌｌ）によるワークブックモデルへのアクセスを提供する方法、システム、および装置によって解決される。本発明の実施形態を使用することで、従来のようにプログラミング言語によってモデルをコード化する必要なしに、他のユーザとワークブック（「ワークブックモデル」または「モデル」）を共用できるようになる。さらに、ワークブックモデルは、使用のために開示されても、下層のモデル実装を開示することがない。
【０００７】
本発明の一態様によれば、リモートファンクションコールによるワークブックモデルへのアクセスを提供するシステムが提供される。本発明の一実施形態によれば、このシステムは、ワークブックを作成するために表計算アプリケーションプログラムを実行するクライアントコンピュータを含む。ワークブックは、データを格納する１つまたは複数のセルを含むことができ、またモデルを定義するのに使用される、アプリケーション提供のまたはサードパーティのプラグ可能な機能を含むことができる。ワークブックは、外部データソース（クエリテーブルまたはピボットテーブルなど）からデータを取り込むオブジェクトを含むこともでき、他のワークブック関数の呼出しを含むこともできる。ワークブック内の０以上のセルをモデルへの入力として定義することができ、ワークブック内の１以上のセルをモデルからの出力として定義することができる。
【０００８】
表計算アプリケーションプログラムは、１つまたは複数のリモートファンクションコールを介して、ワークブックモデルを利用可能にするためのユーザリクエストを受け取るように動作することもできる。そのようなリクエストに応答して、表計算アプリケーションプログラムは、新しいワークブック関数を定義するデータをユーザから受け取るように動作する。具体的には、ユーザは、関数に名前を付け、入力が存在すれば入力と、関数からの少なくとも１つの出力を定義することができる。例えば、ユーザは、関数への入力として利用されるワークブック内のセルを識別し、各入力に名前を付けることができる。入力は、デフォルト値をもつことができ、場合によっては任意データとして定義することもできる（すなわち、入力が渡されない場合は、デフォルト値が使用される）。ユーザは、関数からの出力として利用されるワークブック内のセルを識別し、各出力に名前を付けることもできる。ユーザは、新しいワークブック関数を公開すべきサーバの所在を指定することもできる。ユーザがこれらのデータを提供した後、ワークブックおよび関数を定義するデータを、サーバコンピュータに公開することが可能となり、サーバコンピュータは、公開されたワークブック関数を求めるリモートファンクションコールを受信し、それに応答するように動作する。
【０００９】
表計算アプリケーションプログラムはさらに、ワークブックのコンテキスト内からリモートワークブック関数を呼び出すように動作する。リモート関数への入力は、ワークブック内のセル、または部分式（ｓｕｂ−ｆｏｒｍｕｌａ）内のパラメータとして識別することができる。これらの情報が提供された後、表計算アプリケーションプログラムは、ワークブック関数に、提供された入力を用いてリモートファンクションコールを発行するように動作する。リモートファンクションコールは、簡易オブジェクトアクセスプロトコル（「ＳＯＡＰ：ｓｉｍｐｌｅ  ｏｂｊｅｃｔ  ａｃｃｅｓｓ  ｐｒｏｔｏｃｏｌ」）を利用して発行されるウェブサービスコールを含むことができる。その他のタイプのリモートファンクションコールを利用することもできる。
【００１０】
リモート関数からの応答が、表計算アプリケーションプログラムで受信されると、表計算アプリケーションプログラムはさらに、関数からの出力を受け取るように動作する。表計算アプリケーションプログラムは、関数の出力用にユーザによって識別されたワークブック内のセルに、関数からの出力を入れることができ、または、部分式内の出力を利用することができる。このようにして、モデルは、ワークブック内で定義され、サーバコンピュータに公開され、呼出し側アプリケーションに下層のモデル実装を開示することなく、呼び出されることができる。
【００１１】
本発明の態様によれば、このシステムは、ワークブック関数に宛てて送られたリモートファンクションコールを受信し、それに応答するためにサーバプログラムを実行するように動作するサーバコンピュータも含む。具体的には、サーバコンピュータは、ワークブック、並びに、ワークブックに宛てて発行されるリモートファンクションコールを定義するワークブックに関連づけられた関数定義を受信し、それらを保存するように動作する。関数定義は、ワークブック関数の名前と、関数への入力として使用されるパラメータの記述と、関数からの出力として使用されるパラメータの記述とを識別する。サーバコンピュータは、ワークブック関数を開示するようにも動作して、リモートコールの発行を希望するクライアントが、関数を発見できるようにする。ワークブック関数が開示された後、クライアントアプリケーションはワークブック関数を発見し、リモートファンクションコールを使用して、ワークブック関数を呼び出すことができる。
【００１２】
ワークブック関数を呼び出すコールがサーバコンピュータで受信されると、サーバコンピュータは、ワークブックをロードするように動作する。ワークブックがロードされると、サーバコンピュータは、入力として識別されるワークブック内のセルに、ファンクションコールと一緒に受け取った入力パラメータを入れる。ワークブックが別のデータソースへの参照を含む場合、ワークブックを再計算するのに必要なすべてのデータが、再計算の前にデータソースから取り込まれる。その他のワークブック関数への参照を呼び出すこともできる。ワークブックが再計算された後、サーバコンピュータは、関数からの出力として定義されるセルの内容を、ワークブックから取り出すように動作する。これらのセルに含まれるデータは、その後、リモートファンクションコールに対する応答として返される。このようにして、リモートファンクションコールをサポートする任意のタイプのアプリケーションを利用して、サーバコンピュータ上のワークブック関数を呼び出すことができ、その中には、その他のサーバコンピュータから受信するコールも含まれる。本明細書で説明するクライアントおよびサーバコンピュータの両方の機能を実行するのに、単一のコンピュータを利用できることを理解されたい。
【００１３】
本発明は、コンピュータプロセス、コンピューティング装置として、または、コンピュータプログラム製品もしくはコンピュータ読取り可能媒体などの製造品として実施することができる。コンピュータプログラム製品は、コンピュータシステムによって読取り可能であり、コンピュータプロセスを実行するための命令からなるコンピュータプログラムを符号化したコンピュータ記憶媒体とすることができる。コンピュータプログラム製品は、コンピュータシステムによって読取り可能であり、コンピュータプロセスを実行するための命令からなるコンピュータプログラムを符号化した、搬送波上の伝播信号とすることもできる。
【００１４】
本発明を特徴づける上記および様々な他の特徴および利点は、以下の詳細な説明を読み、関連する図面を検討することから明らかになるであろう。
【発明を実施するための最良の形態】
【００１５】
今から図面を参照しながら、本発明の様々な態様を説明していくが、図面中、同じ番号は同じ要素を表している。特に、図１およびそれに対応する説明は、本発明の実施形態を実施できる適切なコンピューティング環境についての簡潔で全般的な説明を提供するためのものである。本発明は、一般的な背景として、パーソナルコンピュータのオペレーティングシステム上で実行されるプログラムモジュールと連携して動作するプログラムモジュールを想定して説明されるが、その他のタイプのコンピュータシステムおよびプログラムモジュールと組み合わせても本発明を実施できることは、当業者であれば理解されよう。
【００１６】
一般に、プログラムモジュールには、特定のタスクを実行し、または特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造、およびその他のタイプの構造が含まれる。さらに、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な消費者家電、ミニコンピュータ、およびメインフレームコンピュータなどを始めとする、その他のコンピュータシステム構成によっても本発明を実施できることは、当業者であれば理解されよう。また、通信ネットワークを介して接続されたリモート処理装置によってタスクが実行される分散コンピューティング環境でも、本発明を実施することができる。分散コンピューティング環境では、ローカルおよびリモートメモリ記憶装置の両方に、プログラムモジュールを配置することができる。
【００１７】
図１を参照しながら、本発明の複数の実施形態に使用できる例示的な動作環境について説明する。図１に示すように、ネットワーク１０は、クライアントコンピュータ２と、複数のサーバコンピュータ１２Ａ〜１２Ｃとを相互接続する。ネットワーク１０には、ローカルエリアネットワークや、インターネットなどのワイドエリアネットワークを始めとする、任意のタイプのコンピューティングネットワークが含まれ得ることを理解されたい。ネットワーク１０は、クライアントコンピュータ２と、サーバコンピュータ１２Ａ〜１２Ｃと、ネットワーク１０に接続される、またはネットワーク１０からアクセスできる、図示されていないその他のコンピュータシステムとが、互いに通信できるようにするための媒体を提供する。
【００１８】
クライアントコンピュータ２には、１つまたは複数のアプリケーションプログラムを実行できる、汎用デスクトップまたはラップトップコンピュータが含まれる。特に、本発明の様々な実施形態によれば、クライアントコンピュータ２は、表計算クライアントアプリケーション４を実行するように動作する。当業者であれば知っているように、表計算クライアントアプリケーションプログラム４は、予算作成、財務予測実行、ならびにその他の財務および数値関係の作業のための機能を提供する。これらの機能を提供するため、セルを使用して、データ値を整理することができ、式を使用して、セル間の関係を定義することができる。１つのセルを変更すると、それに関係するセルも変更される。表計算プログラムは通常、出力用のグラフ機能と、テキスト、数値、およびグラフ特徴に関する様々な選択可能な形式とを提供する。
【００１９】
本発明の実施形態によれば、表計算クライアントアプリケーション４は、ワークブック６を作成するために利用することができる。ワークブック６は、表計算プログラムによって作成され、１つまたは複数のワークシートを含むファイルである（本明細書では、ワークシートのことを「スプレッドシート」とも呼ぶ）。ワークシートは、表計算プログラム内に行と列とで構成され、画面上に表示される１枚のページである。これらの機能を使用して、ユーザは、財務上および数値上の問題および解法のモデルを作成することができる。そのようなワークブックモデルをどのように公開するのか、またリモートファンクションコールを使用して、それをどのように利用するのかについては、以下にさらに詳しく説明する。
【００２０】
本発明の一実施形態によれば、表計算クライアントアプリケーション４には、ワシントン州レドモンドのＭＩＣＲＯＳＯＦＴ  ＣＯＲＰＯＲＡＴＩＯＮが販売するＥＸＣＥＬ表計算アプリケーションプログラムが含まれることを理解されたい。しかし、本明細書で説明する本発明の様々な態様は、その他の製造業者が販売するその他の表計算アプリケーションプログラムでも利用できることを理解されたい。さらに、本明細書で説明する本発明の態様は、表計算アプリケーションプログラムを前提として提示されてはいるが、その他のタイプのアプリケーションプログラムを利用しても、本発明の様々な態様を実施できることを理解されたい。
【００２１】
本発明の他の実施形態によれば、クライアントコンピュータ２は、簡易オブジェクトアクセスプロトコル（「ＳＯＡＰ」）と互換性のあるプログラム８を実行するように動作することもできる。以下でさらに詳しく説明するが、ワークブックモデルは、サーバコンピュータ１２Ａに公開することができる。その後、サーバコンピュータ１２Ａは、そのワークブックモデルを、リモートファンクションコールを使用して呼び出す外部の者に開示することができる。例えば、ウェブサービスを使用して、ワークブックモデルを開示するワークブック関数にコールを発行することができる。本発明の一実施形態では、ウェブサービスコールは、ＳＯＡＰプロトコルを利用するリモートファンクションコールを含むことができる。ＳＯＡＰコールは、表計算クライアントアプリケーション４またはＳＯＡＰ互換プログラム８によって発行することができる。ＳＯＡＰ互換プログラム８は、ＳＯＡＰリモートプロシージャコールを発行できる任意のアプリケーションまたはプログラム言語を含むことができる。
【００２２】
上で説明したコンピュータ２の機能は、２つのコンピューティング装置に分割できることをさらに理解されたい。例えば、一方のコンピューティング装置は、ワークブック関数を公開するために、表計算アプリケーション４を実行するように動作することができ、もう一方のコンピューティング装置は、ワークブック関数を呼び出すために、ＳＯＡＰ互換プログラム８などのクライアントアプリケーションを実行するように動作することができる。クライアントアプリケーションも、関数を呼び出すワークブックを作成する１つのアプリケーションと、実際に呼出しを実行するもう１つのアプリケーションとに分割することができる。例えば、第２のアプリケーションは、ワークブック関数を呼び出すワークブックを実行するサーバとすることができる。
【００２３】
表計算サーバアプリケーション１３は、ディスプレイ画面を使用しない（ヘッドレス）で実行できる、サーバベースのアプリケーションプログラムを含む。表計算サーバアプリケーション１３は、サーバコンピュータ上で表計算クライアントアプリケーション４の多くの機能を実行するように動作する。例えば、表計算サーバアプリケーション１３は、ワークブック６をロードし、計算することができる。本明細書において説明するように、表計算サーバアプリケーション１３は、ワークブックおよびワークブック関数を記述するデータを受信するための機能も提供する。表計算サーバアプリケーション１３はまた、ワークブック関数を外部の呼出し者に開示し、リモートファンクションコールを受信し、それに応答する。表計算クライアントアプリケーション４および表計算サーバアプリケーション１３によって実行される様々な機能については、図２〜図８に関連させて、以下にさらに詳しく説明する。
【００２４】
次に図２を参照しながら、本発明の様々な実施形態で利用されるコンピュータ２の例示的なコンピュータ構成について説明する。図２に示すコンピュータ構成は、従来のデスクトップまたはラップトップコンピュータを説明するものであり、中央処理装置５（「ＣＰＵ」）と、ランダムアクセスメモリ９（「ＲＡＭ」）および読取り専用メモリ（「ＲＯＭ」）１１を含むシステムメモリ７と、メモリをＣＰＵ５に結合するシステムバス１２とを含む。基本入出力システムは、起動時などにコンピュータ内の要素間での情報転送を支援する基本ルーチンを含み、ＲＯＭ１１に保存される。コンピュータ２は、オペレーティングシステム１８、アプリケーションプログラム、およびその他のプログラムモジュールを保存するための大容量記憶装置２４をさらに含み、これらのプログラムについては、以下でより詳しく説明する。
【００２５】
大容量記憶装置２４は、バス１２に接続される大容量記憶コントローラ（図示せず）を介して、ＣＰＵ５に接続される。大容量記憶装置２４と、それに関連するコンピュータ読取り可能媒体は、コンピュータ２に不揮発性記憶を提供する。本明細書に含まれるコンピュータ読取り可能媒体の説明は、ハードディスクまたはＣＤ−ＲＯＭドライブなどの大容量記憶装置に関係するが、コンピュータ２によってアクセスできる任意の利用可能な媒体を、コンピュータ読取り可能媒体とし得ることは、当業者であれば理解されよう。
【００２６】
例えば、コンピュータ読取り可能媒体には、コンピュータ記憶媒体や、通信媒体が含まれ得るが、これらに限定されるものではない。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を記憶するための任意の方法または技術によって実施された、揮発性および不揮発性、着脱可能および着脱不能媒体が含まれる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくはその他のソリッドステートメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（「ＤＶＤ」）、もしくはその他の光学記憶、磁気カセット、磁気テープ、磁気ディスク記憶、もしくはその他の磁気記憶装置、または所望の情報を保存するのに使用でき、コンピュータ２によってアクセスできるその他の任意の媒体が含まれるが、これらに限定されるものではない。
【００２７】
本発明の様々な実施形態によれば、コンピュータ２は、インターネットなどのネットワーク１０を介するリモートコンピュータへの論理コネクションを使用して、ネットワーク環境で動作することができる。コンピュータ２は、バス１２に接続されるネットワークインタフェースユニット２０を介して、ネットワーク１０に接続することができる。ネットワークインタフェースユニット２０は、その他のタイプのネットワークおよびリモートコンピュータシステムに接続するためにも利用できることを理解されたい。コンピュータ２は、キーボード、マウス、または電子ペン（図２には図示せず）を始めとする、数々の他の装置から入力を受け取り、処理するための入出力コントローラ２２も含むことができる。同様に、入出力コントローラ２２は、ディスプレイ画面、プリンタ、またはその他のタイプの出力装置に出力を提供することができる。
【００２８】
上で簡単に述べたように、コンピュータ２の大容量記憶装置２４およびＲＡＭ９には、ワシントン州レドモンドのＭＩＣＲＯＳＯＦＴ  ＣＯＲＰＯＲＡＴＩＯＮが販売するＷＩＮＤＯＷＳ（登録商標）  ＸＰオペレーティングシステムなど、ネットワーク対応のパーソナルコンピュータの動作を制御するのに適したオペレーティングシステム１８を始めとする、数々のプログラムモジュールや、データファイルを保存することができる。大容量記憶装置２４およびＲＡＭ９は、１つまたは複数のプログラムモジュールも保存することができる。特に、大容量記憶装置２４およびＲＡＭ９は、上で説明したように、表計算クライアントアプリケーション４、およびＳＯＡＰ互換プログラム８を保存することができる。大容量記憶装置２４およびＲＡＭ９は、表計算クライアントアプリケーション４によって作成されたワークブック６も保存することができる。
【００２９】
サーバコンピュータ１２Ａ〜１２Ｃは、図２に示し上述した従来のコンピューティング構成要素の多くを含み得ることを理解されたい。さらに、サーバコンピュータ１２Ａは、表計算サーバアプリケーション１３を保存し、また実行するように動作することができる。ファイルサーバコンピュータ１２Ｃは、ワークブック６など、リポジトリ１４に保存されたファイルを求めるリクエストを受け取り、それに応答するためのファイルサーバアプリケーション２８を保存し、また実行するように動作することができる。サーバコンピュータ１２Ａ〜１２Ｃは、図２には示されていないが当業者には知られている、その他の従来の構成要素を含み得ることを理解されたい。
【００３０】
次に図３を参照しながら、ワークブックモデルをワークブック関数としてサーバコンピュータに公開するために、表計算クライアントアプリケーションプログラム４によって実行されるプロセスを示した例示的なルーチン３００について説明する。本明細書で提示するルーチンの説明を読むときは、本発明の様々な実施形態の論理動作が、（１）コンピューティングシステム上で実行される一連のコンピュータ実施の工程またはプログラムモジュールとして、かつ／または（２）コンピューティングシステム内の相互接続されたマシン論理回路または回路モジュールとして実装され得ることを理解されたい。実装方法は選択に任されており、本発明を実施するコンピューティングシステムの性能要件に依存する。したがって、図３、図５、および図７に示され、本明細書で説明する本発明の実施形態を構成する論理動作は、動作、構造化された装置、工程、またはモジュールなどと様々に呼ばれる。これらの動作、構造化された装置、工程、およびモジュールが、添付の特許請求の範囲において説明される本発明の主旨および範囲から逸脱することなく、ソフトウェア、ファームウェア、専用デジタルロジック、および、これらの任意の組み合わせによって実施できることは、当業者であれば理解されよう。
【００３１】
ルーチン３００は動作３０２で開始され、ユーザは、表計算クライアントアプリケーション４を利用して、ワークブック６を作成する。特に、本明細書で説明するように、ユーザは、表計算クライアントアプリケーション４によって提供される様々な機能を利用して、モデルを含むワークブックを作成することができる。本明細書で定義されるワークブックモデルという用語には、数値解析を実行するように作成され、モデルへの入力として利用できる１つもしくは複数のセル、並びに、モデルからの出力を提供する１つもしくは複数のセルを含むワークブックが含まれる。ワークブックモデルを作成するために、表計算クライアントアプリケーション４内において利用できる様々な機能および方法は、実質的に制限がなく、当業者によく知られているものである。
【００３２】
ルーチン３００は、動作３０２から動作３０４に進み、表計算クライアントアプリケーション４は、ユーザがワークブックモデルをワークブック関数としてサーバコンピュータ１２Ａに公開するリクエストを発行したかどうかを決定する。ユーザが、そのようなリクエストを発行していない場合、ルーチン３００は、動作３０２に戻り、ユーザはモデルの作成を続行することができる。ユーザが、ワークブックモデルを公開するリクエストを発行した場合、ルーチン３００は、動作３０６に進む。
【００３３】
動作３０６において、表計算クライアントアプリケーション４は、ユーザからワークブック関数の名前を受け取る。この名前によって、関数を含むワークブック並びにワークブック内の関数自体が識別される。この名前は、リクエストされるリモートファンクションコールを識別するために、呼出しを行うアプリケーションによって後に利用される。名前を受け取った後、ルーチン３００は、動作３０８に進み、ユーザは、１つまたは複数のセルを関数への入力として識別することができる。動作３１０において、ユーザは各入力にテキスト形式で名前を付けることができる。例えば、ユーザはワークブック内のセルを選択して、そのセルを入力として識別することができ、その後、その入力を識別するために、名前「資産価格」を付けることができる。入力セルとその名前が、ユーザによって識別された後、ルーチン３００は、動作３１０から動作３１２に進む。
【００３４】
動作３１２において、ユーザは、１つまたは複数のセルを関数からの出力として識別することができる。動作３１４において、ユーザは各出力にテキスト形式で名前を付けることができる。例えば、動作３１２および動作３１４において、ユーザは、ワークブック内のセルを選択して、そのセルを出力として識別することができ、その後、その出力を識別するために、名前「コール価格」を付けることができる。出力セルとその名前が、ユーザによって識別された後、ルーチン３００は、動作３１４から動作３１６に進む。
【００３５】
ルーチン３００は、動作３１４から動作３１６に進み、指示されたワークブック関数を定義するデータを含むワークブック６が、表計算サーバアプリケーション１３に公開される。例えば、ワークブック６の公開には、サーバコンピュータ１２Ａにワークブック６をアップロードすること、または、プログラム的にワークシートを生成し、それをサーバコンピュータ１２Ａにサーバアプリケーションプログラムインタフェース（「ＡＰＩ」）を介して送信することが含まれる。ワークブック６が表計算サーバアプリケーション１３に公開されると、ワークブック６は、リポジトリ１４に保存される。また、表計算サーバアプリケーション１３は、ワークブック６の存在を通知され、その後、ワークブック内で定義されるワークブック関数を、ウェブサービスを介して開示することもできる。ワークブック関数の名前、入力および出力セル、並びに、それらの名前を識別するデータも、ワークブックと一緒にサーバ１２Ａに公開される。
【００３６】
ワークブック６がリポジトリ１４に伝えられ、表計算サーバアプリケーション１３によって解析された後、ＳＯＡＰ互換プログラム８または表計算クライアントアプリケーション４などのクライアントアプリケーションを利用して、サーバコンピュータ１２Ａ上のワークブック関数を呼び出すことができる。関数を呼び出すために表計算クライアントアプリケーション４によって実行される様々な機能、並びに、ワークブック関数を開示するためおよびファンクションコールを受信しそれに応答するために、表計算サーバアプリケーション１３によって実行される様々な機能については、図５〜図８とともに、以下にさらに詳しく説明する。ルーチン３００は、動作３１６から動作３１８に進み、そこで終了する。
【００３７】
次に、図４を参照しながら、ワークブック関数を含むワークブックモデルを公開するための例示的なユーザインタフェースについて説明する。図４に示すユーザインタフェース３０は、ワークブック関数をサーバコンピュータ１２Ａに公開するよう求めるユーザリクエストに応答して、ユーザに提供される。ユーザインタフェース３０は、カレントワークシート３２の一部を表示することができる。ユーザは、カレントワークシート３２内に示される各セルを選択して、そのセルを関数への入力として、または関数からの出力として識別することができる。
【００３８】
ワークブック関数の入力の定義を支援するため、ユーザは、カレントワークシート３２内の１つまたは複数のセルを選択することができる。ユーザは次に、選択されたセルを新しい入力として追加するために、ユーザインタフェースボタン３６を選択することができる。次に、ユーザは入力の名前をリストボックス３４に入力することができる。このようにして、ユーザは、ワークブック関数への入力として、カレントワークシート３２の必要な数だけのセルを定義することができる。同様に、ユーザは、カレントワークシート３２の１つまたは複数のセルを選択し、次に、そのセルを関数からの出力に指定するために、ユーザインタフェースボタン４０を選択することができる。次に、各出力引数に名前を付けるため、リストボックス３８を利用することができる。図４に示された実施例は、オプションのコール価格およびプット価格を計算するためのモデルを定義するワークブック３２を示している。セルＣ２〜Ｃ７は入力として定義され、セルＦ２〜Ｆ３は出力として定義されている。
【００３９】
図４に示すユーザインタフェース３０は、ユーザがそこに関数名をタイプできるテキストボックス４２も提供する。ユーザは、テキスト形式の関数説明をテキストボックス４４に提供することもできる。最後に、ユーザは、新しいワークブック関数を公開すべきサーバコンピュータ１２Ａの所在をテキストボックス４６に入力して、識別することができる。これらの情報を提供し終った後、ユーザは、ワークブックを、ワークブック関数を説明するメタデータも含めて、サーバコンピュータ１２Ａに公開するために、ボタン４８を選択することができる。
【００４０】
次に図５Ａに移って、サーバコンピュータ１２Ａによって開示されるワークブック関数を定義し、公開するための表計算アプリケーションプログラム４の動作を示した例示的なルーチン５００について説明する。先に説明したように、本明細書では、表計算アプリケーションプログラム４は、ワークブック関数を呼び出すものとして説明されることを理解されたい。しかし、ワークブック関数は、リモートファンクションコール互換のその他の任意タイプのコンピュータプログラムによっても呼び出すことができる。例えば、その他のサーバコンピュータ、カスタムプログラムコード、その他のタイプのアプリケーションプログラム、およびその他の多くのタイプのコンピュータプログラムである。
【００４１】
ルーチン５００は、動作５０２によって開始され、ユーザは、表計算クライアントアプリケーション４を利用して、上で説明した方法で、ワークブックを作成する。ルーチン５００は、動作５０２から動作５０４に進み、表計算クライアントアプリケーション４は、ユーザが、サーバコンピュータ１２Ａから利用可能なワークブック関数を利用するリクエストを発行したかどうかを判定する。ユーザが、そのようなリクエストを発行していない場合、ルーチン５００は動作５０２に戻り、ユーザはモデルの作成を続行することができる。ユーザが、リモートワークブック関数を利用するリクエストを発行した場合、ルーチン５００は動作５０６に進む。
【００４２】
動作５０６において、ユーザからリクエストされた関数の名前を受け取る。サーバコンピュータ１２Ａから、利用可能なワークブック関数とそのパラメータとのリストを見つけ出し、取り出すことができる。ユーザが利用するリモートワークブック関数を識別した後、ルーチン５００は、動作５０８に進み、ユーザはワークブック関数への入力として利用されるワークブックセルを選択する。具体的には、ユーザは、関数の各入力に１つのセルを割り当てる。割り当てられたセル内のデータは、その後、リモートファンクションコールを発行するときに、関数への入力として提供することができる。動作５１０において、同様の方法で、ユーザは関数からの出力を入れるワークブックセルを選択する。ルーチン５００は動作５１１に進み、そこで終了する。
【００４３】
次に図５Ｂに移って、ウェブサービスコールを介してワークブック関数を呼び出すための例示的なルーチン５５０について説明する。ルーチン５５０は、動作５１１で開始され、ファンクションコールのための個々の入力パラメータ名と共に、入力セルからデータを取り出すことができる。動作５１２において、リクエストされた関数に対するウェブサービスコールが発行される。動作５１４において、表計算クライアントアプリケーション４は、サーバコンピュータ１２Ａから、ファンクションコールからの出力を含む応答を受信する。動作５１６において、受信された出力は、ユーザが出力用に定義したワークブックのセル位置に入れられる。図８に、ワークブック７０の一部が示されている。上で説明したように、セル７２および７４は、ワークブック関数からの出力を含むように定義される。図８に示すように、ワークブック関数によって計算され表計算クライアントアプリケーション４に返される値は、ワークブック７０の適切なセルに入れられる。ルーチン５５０は、動作５１６から動作５１８に進み、そこで終了する。
【００４４】
次に図６を参照しながら、サーバホスト型のワークブック関数を呼び出すリモートファンクションコールを生成するための例示的なユーザインタフェースについて説明する。図６に示すユーザインタフェース５０は、リモートワークブック関数を利用するためのユーザによるリクエストに応答して、表計算クライアントアプリケーション４によって表示される。ユーザインタフェース５０には、カレントワークブック５２の表示が含まれ、そこにはワークブックの１つまたは複数のセルが含まれる。
【００４５】
ユーザインタフェース５０には、リクエストされるワークブック関数への各入力を識別するリストボックスも含まれる。ユーザは、ワークブック５２の任意のセルを選択し、その後、そのセルを関数の入力に割り当てるため、ボタン５８を選択することができる。同様に、リストボックス６０は、名前によって関数の各出力を識別する。ユーザは、ワークブックのセルを関数の出力に割り当てるため、ワークブック５２の任意のセルを選択し、ボタン６２を選択することができる。ワークブック５２のセルを各入力および各出力に割り当てた後、所望のリモートファンクションコールを発行するため、ユーザはユーザインタフェースボタン６４を選択することができる。
【００４６】
次に図７に移って、ウェブサービスを介して開示されるワークブック関数に宛てたコールを受信し、それに応答するための表計算サーバアプリケーション１３の動作を示した例示的なルーチン７００について説明する。ルーチン７００は、動作７０２で開始され、表計算サーバアプリケーション１３は、利用可能なワークブック関数を開示する。表計算サーバアプリケーション１３が様々なワークブック関数を開示した後、ＳＯＡＰ互換プログラム８または表計算クライアントアプリケーション４などのクライアントアプリケーションは、利用可能なワークブック関数を見つけ出し、特定の関数に宛てたコールを発行することができる。
【００４７】
ルーチン７００は、動作７０２から動作７０４に進み、表計算サーバアプリケーション１３は、特定の関数に宛てたリモートファンクションコールを受信する。コールは、関数への各入力を識別するデータと、各入力に値を提供するデータとを含む。ルーチン７００は、動作７０４から動作７０６に進み、表計算サーバアプリケーション１３は、受信コールが宛てられたワークブック関数を含むワークブック６をロードする。ワークブック６が表計算サーバアプリケーション１３によってロードされた後、ルーチン７００は、動作７０８に進み、表計算サーバアプリケーション１３は、ロードしたワークブックの適切なセルに、ウェブサービスコールによって提供された入力を入れる。ルーチン７００は、動作７０８から動作７１０に進む。
【００４８】
動作７１０において、表計算サーバアプリケーション１３は、ワークブック６が、別のデータソースまたは別のワークブック関数への参照を含むかどうかを決定する。例えば、上で簡単に説明したように、ワークブックはデータソース１６などのデータソースへの参照を含むことができる。ワークブック６が別のデータソースへの参照を含む場合、ルーチン７００は、動作７１２に分岐し、表計算サーバアプリケーション１３は、ワークブック６を計算するのに必要なデータを求めてデータソース１６に問い合せを行う。これらのデータを表計算サーバアプリケーション１３が受信した後、ワークブック６は、受信データを用いて更新される。
【００４９】
動作７１０において、ワークブック６は別のデータソースへの参照を含まないと決定された場合、ルーチン７００は、動作７１４に進む。動作７１４において、表計算サーバアプリケーション１３は、ワークブック６の内容を再計算し、それにはワークブック関数の計算も含まれる。ルーチン７００は、動作７１４から動作７１６に進み、表計算サーバアプリケーション１３は、ワークブック関数が定義されたときに出力として識別されたワークブックモデルのセルの内容を取り出す。次に、ルーチン７００は動作７１８に進み、表計算サーバアプリケーション１３は、ワークブック関数の出力からのデータを含むウェブサービス応答（Ｗｅｂ  ｓｅｒｖｉｃｅ  ｒｅｐｌｙ）を準備する。動作７２０において、応答が、最初のウェブサービスリクエストに対する応答として、クライアントコンピュータ２に送信される。クライアントコンピュータ２は、その後、上で説明した方法で、受信した出力データを、適切なセルに入れることができる。ルーチン７００は、動作７２０から動作７２２に進み、そこで終了する。
【００５０】
上述の説明に基づいて、本発明の様々な実施形態には、ウェブサービスを介してワークブック関数を開示し、呼び出すための方法、システム、装置、およびコンピュータ読取り可能媒体が含まれることを理解されたい。上記の明細書、実施例、およびデータは、本発明の構成の製造および用途についての完全な説明を提供する。本発明の主旨および範囲から逸脱することなく、本発明の数多くの実施形態が可能であり、本発明は、以下に添付の特許請求の範囲によって確定される。
【図面の簡単な説明】
【００５１】
【図１】本発明の様々な実施形態で利用され、提供される複数のコンピュータシステムの態様を示すコンピュータネットワーク図である。
【図２】本発明の様々な実施形態で利用され、また提供されるクライアントコンピュータシステムの態様を示すコンピュータシステム構成図である。
【図３】本発明の一実施形態によってワークブック関数をサーバコンピュータに公開するプロセスの態様を示すフローチャートである。
【図４】本発明の一実施形態によってワークブック関数の入力および出力セルをユーザが定義できる機能を提供する本発明の一態様を示す画面図である。
【図５Ａ】本発明の一実施形態によってウェブサービスを介してワークブック関数を定義するプロセスの態様を示すフローチャートである。
【図５Ｂ】本発明の一実施形態によってウェブサービスを介してワークブック関数を呼び出すプロセスの態様を示すフローチャートである。
【図６】リモートファンクションコールを介してワークブック関数を呼び出すときに入力および出力として利用されるセルをユーザが定義できる機能を提供する本発明の一態様を示す画面図である。
【図７】本発明の一実施形態によってワークブックモデルに対するリモートファンクションコールを受信し、それに応答するときにサーバコンピュータによって実行されるステップを示すフローチャートである。
【図８】リモートファンクションコールを介してワークブック関数を呼び出した後のワークブックの内容を示す画面図である。
【符号の説明】
【００５２】
３０、５０  ユーザインタフェース
３２、５２  カレントワークシート
７０    ワークブック
【図１】
2006048647.tif 000003
【図２】
2006048647.tif 000004
【図３】
2006048647.tif 000005
【図４】
2006048647.tif 000006
【図５Ａ】
2006048647.tif 000007
【図５Ｂ】
2006048647.tif 000008
【図６】
2006048647.tif 000009
【図７】
2006048647.tif 000010
【図８】
2006048647.tif 000011
【外国語明細書】
2006048647000001.pdf