(57)【特許請求の範囲】
【請求項１】
アクティビティに基づくコラボレーションシステムで使用するネットワーク接続可能なローカル・デバイスであって、前記アクティビティに基づくコラボレーションシステムは前記ネットワーク接続可能なローカル・デバイスと複数の場所にあるネットワーク接続可能な複数のリモート・デバイスとを含むネットワーク接続可能な複数のデバイスを含み、ネットワーク接続可能なデバイスの各々はユーザに呼応し、前記ネットワーク接続可能なローカル・デバイスは、
Ａ）データ・モデルにしたがってデータのローカル・コピーを格納するメモリと、
Ｂ）ユーザの対話に呼応して、複数のローカルに生成されたデータ変更要求の生成を開始するツールと、
Ｃ）前記メモリ及び前記ツールに連動したデータ変更エンジンであって、前記ローカルに生成されたデータ変更要求及び複数のリモート生成されたデータ変更要求に呼応して、前記データ・モデルにしたがって、前記メモリへデータのローカル・コピーを格納することを制御し、前記データのローカル・コピーの変更を行なうデータ変更エンジンと、
Ｄ）前記ツール及び前記データ変更エンジンに連動し、前記ローカルに生成されたデータ変更要求とリモート生成されたデータ変更要求に呼応して、前記エンジンを制御し、前記ローカルに生成されたデータ変更要求とリモート生成されたデータ変更要求の実行を調整するダイナミクス・マネージャとを含み、
前記ダイナミクス・マネージャは、受信したデータ変更要求を順序付けるためのキュー構造と、前記キュー構造に入っている前記データ変更要求を処理するために、前記データ変更エンジンに変更を行わせる指示をするダイナモ・プロセス機構とによって、前記順序付けられたデータ変更要求を、該データ変更要求に含まれるエンジン識別子によって識別される前記データ変更エンジンに実行させることによって、前記ローカルに生成されたデータ変更要求と前記リモート生成されたデータ変更要求の実行を調整する
ことを特徴とするネットワーク接続可能なローカル・デバイス。
【請求項２】
前記データは前記メモリを含む不揮発性メモリ・デバイスに永続的状態で格納されることを特徴とする請求項１に記載のネットワーク接続可能なローカル・デバイス。
【請求項３】
前記データはＸＭＬフォーマットで格納されることを特徴とする請求項１に記載のネットワーク接続可能なローカル・デバイス。
【請求項４】
前記データのローカル・コピーに関連する第１のテレスペースをさらに含み、前記第１のテレスペースは第１のアクティビティの具現化したものを含み、前記アクティビティは前記ツールと前記エンジンとを含むことを特徴とする請求項１に記載のネットワーク接続可能なローカル・デバイス。
【請求項５】
テレスペースメンバーのアイデンティティを格納するメンバー・レコードと、前記メンバー・レコードを管理するアイデンティティ・マネージャとをさらに含むことを特徴とする請求項４に記載のネットワーク接続可能なローカル・デバイス。
【請求項６】
第２のテレスペースをさらに含み、前記第２のテレスペースは第２のアクティビティの具現化したものを含み、前記第２のアクティビティは、
Ａ）ユーザの対話に呼応して第２のデータ変更要求を生成する第２のツールと、
Ｂ）前記メモリ及び前記第２のツールに連動し、前記第２のデータ変更要求に呼応して、第２のデータ・モデルにしたがって、前記メモリへデータの第２のローカル・コピーを格納することを制御し、前記データの前記第２のローカル・コピーの変更を行なう第２のデータ変更エンジンとを含む
ことを特徴とする請求項４に記載のネットワーク接続可能なローカル・デバイス。
【請求項７】
前記第１のテレスペースと前記第２のテレスペースの識別を格納するテレスペース・レコードをさらに含むことを特徴とする請求項６に記載のネットワーク接続可能なローカル・デバイス。
【請求項８】
前記ローカルに生成されたデータ変更要求及びリモート生成されたデータ変更要求はその各々がコンテナ・オブジェクトを含み、前記コンテナ・オブジェクトは前記第１と第２のテレスペースの一方を識別するためのエンジン識別子を含み、前記エンジン識別子に応じて、前記ダイナミクス・マネージャは前記識別されたエンジンに指示して前記ローカルに生成されたデータ変更要求とリモート生成された変更要求とを実行させることを特徴とする請求項６に記載のネットワーク接続可能なローカル・デバイス。
【請求項９】
前記ダイナミクス・マネージャは前記ツールと前記第２のツールの両方からデータ変更要求を受信することを特徴とする請求項６に記載のネットワーク接続可能なローカル・デバイス。
【請求項１０】
前記データ変更要求は、その各々が、前記ツールによって開始され前記ダイナミクス・マネージャによって生成されたコンテナ・オブジェクトを含み、前記データ変更エンジンは前記データ変更要求を満たすためのコマンドを前記コンテナ・オブジェクトに提供することを特徴とする請求項１に記載のネットワーク接続可能なローカル・デバイス。
【請求項１１】
前記第１のテレスペースに関連する前記データのローカル・コピーは前記メモリの第１の割り当てられた空間に格納され、前記データの第２のローカル・コピーは前記第１の割り当てら得た空間とは別の前記メモリの第２の割り当てられた空間に格納されることを特徴とする請求項１に記載のネットワーク接続可能なローカル・デバイス。
【請求項１２】
前記ダイナモ・プロセス機構は、前記キュー構造に呼応して、前記データ変更エンジンに先入れ先出し方式で前記データ変更要求を処理させることを特徴とする請求項１に記載のネットワーク接続可能なローカル・デバイス。
【請求項１３】
前記キュー構造は、前記ツールによって開始されたデータ変更要求へのポインタを保持するための第１のキューと、前記リモート生成されたデータ変更要求へのポインタを保持するための第２のキューを含むことを特徴とする請求項１に記載のネットワーク接続可能なローカル・デバイス。
【請求項１４】
前記ダイナモ・プロセス機構は、前記キュー構造に呼応して、前記データ変更エンジンに対し、前記第１のキューに待機しているポインタに対応するローカルに生成されたデータ変更要求を処理させる前に、前記第２のキューに待機しているポインタに対応する受信データ変更要求を処理させることを特徴とする請求項１３に記載のネットワーク接続可能なローカル・デバイス。
【請求項１５】
前記データ変更エンジンは前記ツールとは別に実装され、前記ツールと前記データ変更エンジンとの間では、前記ツールだけがユーザ・インタフェースにアクセスでき前記データ変更エンジンだけが前記データ・モデルにアクセスできることを特徴とする請求項１に記載のネットワーク接続可能なローカル・デバイス。
【請求項１６】
前記データのローカル・コピーはデータ状態を含み、前記データ変更エンジンは、現在のデータ状態を生成することを要求する複数の前記データ変更要求の各々に呼応して前記データ状態を変更することを特徴とする請求項１に記載のネットワーク接続可能なローカル・デバイス。
【請求項１７】
前記データ変更エンジンは、前記データ状態の前記変更を前記ツールに通知し、前記ツールは前記現在のデータ状態をユーザ・インタフェース経由でユーザに提示することを特徴とする請求項１に記載のネットワーク接続可能なローカル・デバイス。
【請求項１８】
前記ネットワーク接続可能なリモート・デバイスと組み合わされ、かつ、前記ネットワーク接続可能なデバイスの各々が、請求項１に記載のメモリと、ツールと、データ変更エンジンと、ダイナミクス・マネージャとを含むことを特徴とする請求項１に記載のネットワーク接続可能なローカル・デバイス。
【請求項１９】
前記ネットワーク接続可能なデバイスの各々は、メモリ内の前記データのローカル・コピーと、前記ネットワーク接続可能なデバイスの内の別のものからのリモート・データ変更要求を受信して前記データのローカル・コピーを変更する通信マネージャとを含むことを特徴とする請求項１８に記載のネットワーク接続可能なローカル・デバイス。
【発明の詳細な説明】
【０００１】
発明の分野
本発明はインターネットなどのネットワークを介して通信できるように相互に接続されたコンピュータに関し、さらに詳しくは分散型データ・モデルに準拠してデータを調整あるいは維持するための分散型コンピュータシステムに関する。
【０００２】
発明の背景
インターネットは、数百万のユーザ間での通信及び対話（ｉｎｔｅｒａｃｔｉｏｎ）のためのダイナミックな公共の環境を作り出した。ビジネスにおいては、インターネットによりベンダとメーカ、メーカとディストリビュータ、ディストリビュータとカスタマ、その他の関係が再定義された。個々の企業の社内にある機密ネットワークへインターネット技術が拡張され、これらは「イントラネット」あるいは「プライベート・インターネット」と呼ばれているが、会社のディレクトリ及び会社のネットワーク・インフラストラクチャを使って、新しい形で社員間、またワークグループ間でのドキュメントや情報の共有ができるようになった。オンライン・サービスたとえば電子掲示板やチャットルーム、電子商取引また製品のテクニカルサポートなどが、インターネットを介して運営されているウェブ（ＷＷＷ  （Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ））上で利用できる。
【０００３】
インターネットは、その中心に、サーバ・クライアント・アーキテクチャがあり、これは個々のクライアント（即ちインターネット・コンテンツのユーザ）がたとえばブラウザなどのコンピュータで実行可能なアプリケーションを介してサーバ（インターネット・コンテンツのプロバイダ）とインタフェースし、ウェブ・サイトからドキュメントを入手する。ブラウザはソフトウェア・プログラムで、パーソナル・コンピュータからインターネット・ドキュメントを要求、受信（たとえばダウンロード）、解釈、表示することができるようにし、また一般にインターネットを散策（ｎａｖｉｇａｔｅ）できる。ウェブ・サーバは典型的には外部プログラムを実行するための標準インタフェースを備え、最も一般的なインタフェースはＣｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ  （ＣＧＩ）である。ウェブ・サイトはドキュメントの集合で、通常はホームページと、これにリンクされるドキュメントで構成され、クライアントから離れたリモートな場所にあるサーバ上に配置されている。ドキュメントはコンパウンド・ドキュメントであっても良く、これはデータ、グラフィックス、ビデオ、サウンド、および／またはその他の形式のメディアならびに他の文書へのリンクで構成される。基本的に、ＷＷＷは相互接続されたドキュメントの、または、さらに正確にはインターネット上の様々なサイトに配置されているドキュメント・オブジェクトのウェブ（蛛の巣：ｗｅｂ）である。
【０００４】
ＷＷＷ上のドキュメント・オブジェクトの形式にはドキュメントとスクリプトとがある。スクリプトは実行可能なプログラムまたはファイルに格納された一組のコマンドであり、これがウェブ・サーバにより実行され、ドキュメントを作成し、そのドキュメントがウェブ・ブラウザへ返される。スクリプトによる代表的なアクションには、ライブラリ・ルーチンまたはその他のアプリケーションを実行してファイルまたはデータベースから情報を取り出すこと、または選択されたハイパーテキスト・リンクに対応する文書を取得することが含まれる。スクリプトは、たとえば、ユーザがウェブ・ブラウザ上で特定のハイパーテキスト・リンクを選択した時に、ウェブ・サーバ上で実行される。
【０００５】
インターネット技術の基礎となっているものは標準化の進歩であり、これにはパーソナル・コンピュータのハードウェア、ソフトウェア、ネットワーク・プロトコル、インフラストラクチャの標記方法（たとえばＵｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  ＬｏｃａｔｏｒまたはＵＲＬ）が含まれる。ＵＲＬはＷＷＷにある全てのドキュメント・オブジェクトについてその位置のアドレスを提供する。ＵＲＬはドキュメント・オブジェクトを唯一無二の形で（以下、ユニークに）参照し、しばしばインターネット・プロトコルを用いたアクセス・アルゴリズムを定義する。
【０００６】
本明細書で使用されている表現として、「インターネット・プロトコル」は、インターネット上で送信するためのドキュメントを含むメッセージを生成するために一般に受け入れられて使用されたり、またはインターネット上でこうしたメッセージを送信するための、それぞれ現行のまたは将来の言語表記および現行または将来の通信プロトコルであると定義される。これらの言語表記には、たとえば、現時点ではＨｙｐｅｒｔｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ  （ＨＴＭＬ）やｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ  （ＸＭＬ）が含まれる。これらの通信プロトコルはたとえば現時点では、Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ  （ＨＴＴＰ）、ＴＣＰ／ＩＰ、ＦＴＰ、ＧＯＰＨＥＲなどを含む。当業者はこれらの言語表記やプロトコルに詳しいであろう。
【０００７】
ＨＴＭＬはハイパーテキスト・ドキュメントを記述するために使用される言語で、マルチメディア・コンテンツや他のドキュメントへのリンクを含む。ＨＴＭＬドキュメントはマークアップ要素（以下、マークアップ・エレメント）の階層的セットを含み、多くのエレメントが開始タグとこれに続くコンテンツ、さらにそれに続く終了タグを備える。タグはアングル・ブラケット（＜と＞）で囲み、ドキュメントがどのような構造になっているか、ドキュメントをどのように表示するか、またハイパーテキスト・リンクのリンク先とラベルなどを表わす。マークアップ・エレメントのためのタグが存在しており、これらはたとえばタイトル、ヘッダーや、ボールド、インタリックなどのテキスト属性、リスト、パラグラフ境界、他のドキュメントへの外部リンク、また同じ文書の他の部分への内部リンク、グラフィック画像、及びその他多くのドキュメント機能などである。ＨＴＭＬを使ったプログラミングに関しては多くの成書が流通している。
【０００８】
ＸＭＬはインターネット・プロトコルに含まれるもう一つの言語表記である。ＸＭＬは、少なくとも現行バージョンでは、ＨＴＭＬと互換性があってこれを補足するものである。コンピュータに格納されていて、ＸＭＬドキュメントと呼ばれるデータ・オブジェクトのクラスを記述する、またこれらのオブジェクトを処理するプログラムの動作を記述する標準的な方法である。ＸＭＬドキュメントはエンティティ（ｅｎｔｉｔｉｅｓ）と呼ばれる格納単位から構成され、これにはテキストデータまたはバイナリデータのどちらかが含まれる。テキストは文字から構成され、その幾つかはドキュメントの文字内容を構成し、別の幾つかはマークアップ（ｍａｒｋｕｐ）を構成する。マークアップはドキュメントの記述たとえば格納レイアウトや論理構造などを記述する（以下、エンコードする）。ＸＭＬ処理装置と呼ばれるソフトウェアモジュールを使用してＸＭＬドキュメントを読み出し、その内容や構造へのアクセスを提供する。ＸＭＬに関するさらに詳しい情報はＸＭＬ仕様バージョン１．０への参照で得ることができ、＜ＨＴＴＰ：／／ｗｗｗ．ｗ３．ｏｒｇ／ＸＭＬ＞で利用可能であり、また本明細書の参照に含めてある。
【０００９】
ウェブ・サーバとウェブ・ブラウザは代表的にはＨＴＴＰメッセージプロトコルおよびその基盤となるインターネットのＴＣＰ／ＩＰデータトランスポート・プロトコルを用いて通信する。ＨＴＴＰにおいて、ウェブ・ブラウザはウェブ・サーバへの接続を確立してからＨＴＴＰ要求メッセージをサーバに送出する。要求メッセージに呼応して、ウェブ・サーバは認証をチェックし、たとえばＵＲＬで識別されるドキュメントをダウンロードするなどの要求された動作を実行し、要求された動作で得られたＨＴＭＬドキュメントあるいはエラーメッセージのどちらかを含むＨＴＴＰ応答メッセージを返す。返されたドキュメントは単にウェブ・サーバ上に格納されているスタティック（静的）ファイルであったり、要求メッセージに呼応して呼び出されたスクリプトを使用して動的に生成されることがある。
【００１０】
インターネットを活用するために、インターネット・プロトコルに準拠したツールや資源が開発されており、これには企業で必須のアプリケーションたとえばｅメール（ｅ−ｍａｉｌ）が含まれる。ｅメールというのは電子メールのことで、これを用いて選択したアドレスで電子的にドキュメントを送受信する。インターネットを使う対話の大半が、「ドキュメントの送受信」モデルに従ったｅメールの使用や、その他のブラウザを使うメディアであると予想されていた。おそらくはこのモデルのために、ユーザはインターネットを本質的に「ピア・ツー・ピア」的なものであり、これによって個人が他の個人によって提供されたドキュメントにアクセスできるものであり、しかも、もっと大きな権限を有する者による干渉を受けないでできるものであると見なすことが多い。
【００１１】
インターネットはユーザに娯楽を提供したり通信の有用な方法を提供する上でダイナミックかつフレキシブルなものであるが、ユーザの要求の全部を満たすことはできない。ユーザはますますインターネットを通して対話するようになるが、もっと在来型の方法たとえばマルチメディア（電話、ファックス、ホワイトボード）のものやマルチテンポラル（リアルタイム、オーバーナイト・メール）なもの、またその他形式にとらわれない通信手段を使うことにより、インターネット以外での対話も引き続き行われている。
【００１２】
共有されるプライベート空間での個人や中小グループ間でのパーソナルでプライベートな通信やその他共有される相互の活動にインターネットに基づくパラダイムを拡張することが望ましい。このような対話は、参加者のパーソナルコンピュータ間またはその他のネットワーク接続可能なデバイス間で即時的、直接的、機密的に行なわれるのが望ましく、これらの対話は、通信が傍受されたり機密性が侵害されたりするような第三者のウェブ・サイトへとインターネット上のトラフィックが集中させるようなサーバ・ボトルネックとは何ら関わりを持たないのが良い。
【００１３】
また様々な遠隔地（以下、リモートサイト）にいるユーザがピア・ツー・ピアの形式でドキュメントを共有し編集できるようにする一方で、ローカルサイトにおいてドキュメントのコピーを維持することのできる技術を提供するのも望ましい。このような技術ではユーザの誰もがドキュメントに関する変更要求を発行でき、変更要求が発行された時点でサイトがネットワークから切断されても当該変更が調整された方法で全てのローカルサイトにあるコピーに対して非同期的に行なわれる。
【００１４】
発明の要約
本発明はパーソナルコンピュータ・システム、通信装置、またはその他のネットワーク接続可能なデバイスで動作可能で、遠隔地に居る他のユーザと共有して特定のタスクたとえば「チャット」、ゲーム、またはビジネスアプリケーションを実行するためのアクティビティとよばれる装置に関するものである。アクティビティはデルタと呼ばれるデータ変更要求をユーザとの対話に呼応して生成するためのツールを含む。アクティビティはデータ・モデルに準拠して不揮発性で永続的であることが望ましいメモリにデータを保存するためのデータ変更エンジンも備える。データ変更エンジンはツールからデルタを受信して、そのデルタにその要求を実行するアクティビティ特有のコマンドを提供し、デルタの実行に起因するデータ変更をツールへ通知するためのツール・エンドを含む。データ変更エンジンはダイナミクス・マネージャからデータ変更指示を受信してからデルタを実行する、即ちデルタのコマンドを実行して要求された変更をデータに加えるためのダイナミクス・マネージャ・エンドも含む。
【００１５】
別の観点においては、本発明は「テレスペース」と呼ばれる共有プライベート空間で個人間及び小グループ間での通信及びその他の共有活動及び相互活動を提供するためのシステムに関する。本発明のシステムにおいては、テレスペースの参加者またはメンバーは、ネットワーク接続可能なデバイスを介して対話し、このデバイスはたとえばインターネットなどのネットワーク上で互いに通信してテレスペース・データのローカルコピーを個々に格納する。各々のテレスペースはテレスペースのメンバーのネットワーク接続可能なデバイスの各々の上で動作可能な１つ以上のアクティビティの具現化されたもの（以下、インスタンシエーション）である。各々のアクティビティはテレスペースのメンバーとの対話に呼応してデータ変更要求またはデルタを開始するための１つ以上のツールを含む。各々のアクティビティはまた、ツールとは別に、共通データ・モデルに準拠したテレスペース・データのローカルコピーを保持するための１つ以上のデータ変更エンジンも含む。このデータ・モデルはたとえば、アクティビティに固有であって、テレスペース全体にわたるものであることが望ましい。各々のネットワーク接続可能なデバイスもデルタに呼応して、要求された変更をデータのローカルコピーに適用することによりデータ変更エンジンに指示を出してデルタを実行させるためと、様々なネットワーク接続可能なデバイスからのデルタの実行を調整するためのダイナミクス・マネージャを含む。
【００１６】
さらに別の観点においては、本発明は望ましくはインターネット・プロトコルに従って通信するように接続された望ましくはネットワーク接続可能な別の場所にある複数のデバイスを含むネットワーク化されたシステムにおいて実施できる。ネットワーク接続可能な各のデバイスは（ａ）共通データ・モデルに準拠してアクティビティに関連するデータのローカルコピーを格納するためのメモリ、（ｂ）前述のデータ変更エンジンに対応する１つ以上のツールを各々が含む１つ以上のアクティビティ、（ｃ）デルタが関係するテレスペースに参加するネットワーク化されたシステムのネットワーク接続可能な全てのデバイスの間でデルタを共有させるための通信マネージャ、（ｄ）ローカルに生成されたデルタと遠隔地で生成された（以下、リモート生成された）デルタの両方の実行を調整するためのダイナミクス・マネージャ、を含む。ネットワーク化されたシステムのネットワーク接続可能なデバイスのどれででもユーザの対話を開始してその結果としてのデルタを生成することができ、このときのデルタは望ましくはネットワーク上のデバイスの各々に送信される。ダイナミクス・マネージャはローカルのデータ変更エンジンの動作を指示し、望ましくはデルタの実行に優先順位を付けてネットワーク化されたシステム全体でのデータの実質的な一貫性を維持する。ネットワーク化されたシステムは様々なリモートサイトにいるユーザに対して、たとえばデータを共有して編集したり、ピア・ツー・ピア型の形式でその他の活動を独立して実行できるようにする一方で、ネットワークから切断されている時でも各々のネットワーク接続可能なデバイスで使用するデータの実質的に一貫したコピーを保持することができるようにする。
【００１７】
さらに別の観点においては、本発明は個人間の対話のためのアクティビティに基づくコラボレーションシステム（ＡＢＣシステム）として実装可能である。ＡＢＣシステムはたとえば公衆ネットワーク（たとえばインターネットまたはワイドエリアネットワーク（ＷＡＮ））経由またはプライベート・ネットワーク（ローカル・エリア・ネットワーク（ＬＡＮ）またはイントラネット）経由で、ケーブル、光ファイバー、赤外線（ＩＲ）またはその他の形式の通信リンクにより前述のネットワーク化されたシステムを形成するように接続可能なネットワーク接続可能な複数のデバイスを含む。ネットワーク接続可能な各々のデバイスは前述のメモリと、１つ以上のダイナミクス・マネージャを含むフレームワークを装備している。ネットワーク接続可能なデバイスは公衆ネットワーク・インフラストラクチャ、パーソナル・デスクトップ・アプリケーション、及びインフラストラクチャ（時に「パーソナル・インターネット」と呼ばれることがある）、また適用可能なら企業内イントラネットともプラグイン式に互換性を有するものが望ましい。ＡＢＣシステムは動的に挿入可能型アクティビティ・コンポーネント（以下、ダイナミックなスナップイン・アクティビティ・コンポーネント）を使用するのが望ましく、各々がたとえば「チャット」、ドキュメント編集、ゲーム、などの特定のタスクを実行する。アクティビティ・コンポーネントはたとえばシュリンクラップ製品として利用できたりまたはたとえばインターネットなどのネットワーク上からダウンロードできるソフトウェアを含むことができる。アクティビティ・コンポーネントはフレームワークと共通のＡＰＩ（アプリケーション・プログラミング・インタフェース）を介して動作可能である。したがって、フレームワークはアクティビティ・コンポーネントの形をとるアプリケーションのためのプラットフォームであると見なすことができまたそのように機能する。
【００１８】
つまり、本発明はそれぞれ別個の商業製品やサービスとして実現可能で、これには個々のアクティビティ・コンポーネント、ネットワーク接続可能な個々のデバイス用のフレームワークおよび／またはネットワーク化されたシステムまたはＡＢＣシステム、ならびにシステムを構成するデバイス間の対話を行なうための通信サービスの提供を含む。
【００１９】
好適実施態様の詳細な説明
Ａ．術語
最初に、本明細書で使用している幾つかの術語と略語を紹介するのが有用であろう。これには以下を含む：アクティビティ、クライアント、通信マネージャ、コンポーネント、コントローラ、デルタ、デバイス、ダイナミクス・マネージャ、エンジン、フレームワーク、アイデンティティ、メンバー、ナビゲーション、人、サーバ、テレスペース、ツール、ＵＲＬ、ＸＭＬ。
【００２０】
アクティビティ（Ａｃｔｉｖｉｔｙ）は、あるユーザが他のユーザと対話するために実際にはＡＢＣシステムで何をするかを表わす。術語「アクティビティ」は状況によって二つの意味のどちらかを取ることができる。「アウトサイド・ビュー」からは、ＡＢＣシステムとコンピュータ・ユーザとの間のランタイムの対話を意味する、たとえばこの種のアクティビティでは共有ホワイトボードに描画するのをユーザに許可したり、または二人以上のユーザがリアルタイムでチャットするのを許可する。この意味でのアクティビティはまたバックグラウンド・サービス（即ちエージェント）であっても良い。これはローカルデバイスまたはサーバデバイス上でユーザの側で動作し、たとえばアーカイブサーバ・エージェント、または受信ＦＡＸエージェントなどである。ソフトウェア設計者の「インサイド・ビュー」からは、「アクティビティ」はユーザのパーソナル・コンピュータまたはその他の形態の装置上で動作することができ決まったタスクを実行するモジュール化されたプログラムであってコンピュータで実行可能なプログラムを表わす。この意味でのアクティビティはツールとエンジンという２種類のコンポーネントからなり、これらは設計時に統合されて「アクティビティ・テンプレート」を作成する。アクティビティ・テンプレートはたとえばシュリンクラップ・ソフトウェアとして、またはウェブからダウンロードできるソフトウェアとして、など多くの方法で配布することができる。ワープロ、スプレッドシートなどに使用するため広く配布されるプログラムはＡＢＣシステムで使用できるように設計されたバージョンであって、ＡＢＣシステムプログラマ・インタフェースに適合するアクティビティ・テンプレートの形で販売されるバージョンを有するものとして考えている。
【００２１】
クライアント（Ｃｌｉｅｎｔ）は、ユーザのパーソナル・コンピュータ、通信機器、またはその他の形のデバイスで、ヒトとの対話ができ、ネットワークたとえばインターネットに接続可能なものを表わす。ユーザのパーソナル・コンピュータ上で実行されるバックグラウンド・プログラムは「クライアント・サービス・コントローラ」と呼ばれる。ユーザのパーソナル・コンピュータ上で実行されるフォアグラウンドのユーザ・インタフェース（ＵＩ）プログラムは「クライアントＵＩコントローラ」と呼ばれる。
【００２２】
通信マネージャ（Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｍａｎａｇｅｒ）は、しかるべき宛先とのデルタの送受信を指示するメカニズムを表わす。通信マネージャはたとえば、コンピュータで実行可能なプログラムとして実装することができ、これが、ネットワークたとえばインターネット上で送信するためにツール／エンジンのペアで作成されてローカルに開始したデルタを別のリモート・パーソナル・コンピュータへまたは他の形のネットワーク接続可能なデバイスへ送信する、またはそのリモートデバイスがネットワークに接続されていない場合にはリレー装置へ送信するもので、またこれはネットワークたとえばインターネット上で受信されるリモートで生成されたデルタをダイナミクス・マネージャへ送信する。
【００２３】
コンポーネント（Ｃｏｍｐｏｎｅｎｔ）は、コンピュータで実行可能なプログラムとアクティビティ内部で使用されるその資源を表わす。全てのコンポーネントはＵＲＬで識別される。ウェブがコンポーネントのグローバル・リポジトリで、ＡＢＣシステムの適当なコンポーネント・プラットフォームへ確実にダウンロード可能なバージョンを備えるものとして考えている。
【００２４】
コンピュータ（Ｃｏｍｐｕｔｅｒ）は、以下で定義するような装置を表わす。
【００２５】
コントローラ（Ｃｏｎｔｒｏｌｌｅｒ）は、トップレベルにあるプログラムであってコンピュータで実行可能なプログラムを表わし、これはＡＢＣシステムの「内部」機能を駆動する。コントローラは任意のプラットフォームたとえばＵＮＩＸＴＭのデーモン・コントローラまたはインテル社製マイクロプロセッサ搭載コンピュータ・システム上で動作するマイクロソフト・ウインドウズ（ＴＭ）用コントローラとしてチューニングされる。一般的な２種類のコントローラとしては、一般にユーザからは見えないバックグラウンド・プロセスとして動作するサービス・コントローラと、ユーザが対話的に制御するユーザ・インタフェース（ＵＩ）コントローラがある。
【００２６】
デルタ（Ｄｅｌｔａ）は、１つまたはそれ以上のツールからエンジン宛てのデータ変更要求（即ちデータに対して希望する変更についての通知またはプロンプト）を内包する自己内包型のデータユニットを表わす。ツールはユーザとの対話に応答してダイナミクス・マネージャによるデルタ作成を開始し、後述するように、ダイナミクス・マネージャの制御下で非同期実行のためにこれらをエンジンに送信する。デルタは制御情報を提供するヘッダ部分と、要求が関連するデータに関する情報を提供するペイロード部分とを含む特定のフォーマットを持っている。個々のデルタは１つまたはそれ以上のペイロードを持つことができ、多数のペイロードを使用する場合には各々をユニークなデバイス機能またはユーザの役割を有するテレスペース・メンバーあてに指定できる。ツールはユーザへの表示用またはその他の形でのプレゼンテーションを行なうためエンジンから潜在的データ変更に関する情報を要求し、デルタが表示を変更させた時に非同期的に通知される。
【００２７】
デバイス（Ｄｅｖｉｃｅ）は、たとえばパーソナル・コンピュータ（ｐｃ）や通信機器など、本明細書では文脈からして特に別のものが示されない限りは、通常ネットワーク接続可能な、即ちネットワーク接続可能な他のデバイスとネットワーク上たとえばインターネット上でインターネット・プロトコルを使用して通信することができるような物理的ハードウェア装置を表わす。全てのデバイスにはユニークな識別コードがＡＢＣシステムによって割り当てられ、ＵＲＬを有し、デバイスを使用する者とは区別される。デバイスは潜在的に多くのテレスペースをホスティングする。デバイスは、たとえば、ｐｃであったり、セルラホン、ファックス、ハンドヘルド・オーガナイザ、ケーブルテレビのセットトップ・ボックス、エンターテイメント用電子ユニット（たとえば電子玩具やゲームと、ステレオ装置、またはこれら以外の同様にネットワーク接続可能な機器、装置、製品など）のことがある。
【００２８】
ダイナミクス・マネージャ（Ｄｙｎａｍｉｃｓ  ｍａｎａｇｅｒ）は、ＡＢＣシステムのフレームワークの一部を表わし、デルタの作成を支援したりデルタの実行を調整する。ダイナミクス・マネージャはたとえば、ユーザのパーソナル・コンピュータ上でまたはその他の形態を有しネットワーク接続可能なデバイス上で動作するコンピュータで実行可能なプログラムとして実装することができる。
【００２９】
エンドポイント（Ｅｎｄｐｏｉｎｔ）は、デバイスと人のユニークなペアを表わす。ＡＢＣシステムでは、ある１つのデバイスの多数のユーザの中から一人の人をユニークに識別する方法として、またはその同じ人によって使用される多数のコンピュータの中から１つのデバイスや複数のデバイスを識別する方法として、この概念を使用する。
【００３０】
エンジン（Ｅｎｇｉｎｅ）は、ＡＢＣシステム内部の永続的格納及びデータ構造の管理及び変更を実現するものであってアクティビティの「下半分」と呼ばれるものを表わす。エンジンはコンポーネントとしてパッケージされ、それ自体にはユーザ・インタフェースがなく、ユーザ・インタフェースについては対応するツールに依存し、実質的に移植可能である。エンジンは対応するツールを機能させるためにのみ存在するのが望ましい。エンジンはユニバーサル同期（ｕｎｉｖｅｒｓａｌ  ｓｙｎｃｈｒｏｎｙ）した状態で動作するのが望ましい。
【００３１】
フレームワーク（Ｆｒａｍｅｗｏｒｋ）は、ＡＢＣシステムの「内部動作」を表わし、ダイナミクス・マネージャを始めそのサブシステムのほとんどのものを含んでいるが、ユーザ・インタフェースはない。フレームワークはユーザのパーソナル・コンピュータ上またはその他の形態のネットワーク接続可能なデバイス上で動作することのできるものでコンピュータで実行可能なプログラムであり論理的には高レベルのコントローラとアクティビティの間に位置する。
【００３２】
アイデンティティ（Ｉｄｅｎｔｉｔｙ）は、一般に「人（ｐｅｒｓｏｎ）」と同義語だが、一般にＵＲＬで表わされるもので他の人がある人を認知できる１つの名前を指す。この概念が使用される理由としては、ＡＢＣシステムではある人が多くのアイデンティティまたは別名を持つことができ、またたとえば多くの異なるＵＲＬを持てるという考え方を採用しているためである。
【００３３】
メンバー（Ｍｅｍｂｅｒ）は、テレスペース内部の参加者またはテレスペースの加入者を表わし、一般にテレスペースのメンバーシップを表わす場合にはエンドポイントの人の部分（デバイス部分と区別して）と同義語である。
【００３４】
ナビゲーション（Ｎａｖｉｇａｔｉｏｎ）はＵＲＬ間を移動する動作を表わし、ＡＢＣシステムではウェブ・ブラウザによるウェブページ間、ウェブサイト間のナビゲーションと類似している。
【００３５】
人（Ｐｅｒｓｏｎ）は、人間、または人間の代理として作用するサーバを指し、一般にテレスペース内部のアクティビティに参加している者を指す。各々の人は１つまたはそれ以上のアイデンティティを有し、その各々はＵＲＬでユニークに識別される。
【００３６】
サーバ（Ｓｅｒｖｅｒ）は、普通は人間との直接対話ができないがサービス・コントローラのもとでバックグラウンド・プログラムとしてのみ実行することができるデバイスを指す。
【００３７】
テレスペース（Ｔｅｌｅｓｐａｃｅ）は、仮想空間であって、１つ以上のアクティビティに参加するために人びとが集まり、人びとが何らかのものを共有する仮想空間を指す。テレスペースとアクティビティの結果はユーザのパーソナル・コンピュータ上またはその他の形態のネットワーク接続可能なデバイス上のメモリに永続的に格納される。テレスペースは、一般に、あるユーザのデバイスと他の人達のデバイスの間で同期を保っている。テレスペースは「メンバーシップ」の論理的単位またアクティビティへのアクセスを表わす。テレスペースは１つ以上のアクティビティのインスタンシエーション（ｉｎｓｔａｎｔｉａｔｉｏｎ）である。
【００３８】
ツール（Ｔｏｏｌ）は、アクティビティのユーザ・インタフェースを実現するものであってアクティビティの「上半分」と呼ばれるものを指す。ツールはコンポーネントとしてパッケージされ、ユーザのジェスチャーに応答してデルタの作成を開始し、個々のアクティビティの対応するエンジンと対話して特定のタスクを実行する。
【００３９】
ＵＲＬは、ｕｎｉｖｅｒｓａｌ  ｒｅｓｏｕｒｃｅ  ｌｏｃａｔｏｒ（汎用資源識別子）の略語で、ドキュメントなどの資源の構造化されたユニークなアドレスであり、また場合によっては資源を取り扱うときの方法を表わす。ＵＲＬは本明細書において実質的に全ての永続的オブジェクト、ユーザから見えるオブジェクト、及び外部プログラムから見えるオブジェクトについて使用される。
【００４０】
ＸＭＬは、前述の通り、拡張マークアップ言語（ｅＸｔｅｎｄｅｄ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）の略語で、ウェブ上で使用することを想定したＳＧＭＬから派生した標準化され的構造化されたデータ・フォーマットである。状況によってはＡＢＣシステムで使用されるメモリ内のオブジェクト構造を表わすこともあり、これはＸＭＬ標準のセマンティクス（ｓｅｍａｎｔｉｃｓ）に準拠するものである。多くのＸＭＬの概念が本明細書で使用されており、たとえばドキュメント、エレメント、タグ、属性、値、コンテンツ、エンティティ、リンク、ポインタなどがある。ＸＭＬは本明細書ではたとえばドキュメント内のデータを構造化するために使用される。
【００４１】
Ｂ．従来のコンピュータ・システム
図１は、代表的なコンピュータ・システム１００の従来型のシステム・アーキテクチャを図で表わしたものであり、開示された本発明をこれに実装することができる。図１に例示したコンピュータ・システムは説明の目的でのみ議論するが、本発明を制限するものとして見なすべきではない。本発明はさらにコンピュータ・システムとして従来考えられてきたデバイスに制限されるものではなく、これはたとえばビデオゲーム・コンソール、パーソナル機器、またはケーブルテレビのセットトップボックスなどを含む各種のネットワーク接続可能なデバイスのいずれにおいても本発明を実装できるためである。以下の説明は特定のコンピュータ・システムを記述する際に共通に使用される術語を示しているが、説明される概念は図１に図示したものとは異なるアーキテクチャを有する他のコンピュータ・システムにも等しく適用されるものである。たとえば、ケーブルテレビのセットトップボックスは大容量格納機能を含まないがデジタル信号プロセッサを内蔵したビデオチューナを含んでいる。
【００４２】
コンピュータ・システム１００は、従来のマイクロプロセッサを含む中央演算処理装置（ＣＰＵ）１０５、一時的な情報格納用のランダム・アクセス・メモリ（ＲＡＭ）１１０、永久的な情報格納用のリード・オンリー・メモリ（ＲＯＭ）１１５を含む。メモリ・コントローラ１２０はシステムＲＡＭ１１０を制御するために提供される。バス・コントローラ１２５はバス１３０を制御するために提供されており、割り込みコントローラ１３５は他のシステム・コンポーネントからの様々な割り込み信号を受信して処理するために使用される。
【００４３】
大容量格納はディスケット１４２、ＣＤ−ＲＯＭ１４７またはハードディスク装置１５２によって提供できる。データやソフトウェアはリムーバブル・メディアたとえばディスケット１４２やＣＤ−ＲＯＭ１４７を経由してクライアント・コンピュータ１００と交換できる。ディスケット１４２はディスケットドライブ装置１４１に挿入することができ、ディスケットドライブ装置１４１はコントローラ１４０によってバス１３０へ接続されている。同様に、ＣＤ−ＲＯＭ１４７はＣＤ−ＲＯＭドライブ装置１４６に挿入することができ、ＣＤ−ＲＯＭドライブ装置１４６はコントローラ１４５によってバス１３０へ接続されている。最後に、ハードディスク１５２は固定ディスクドライブ装置１５１の一部であり、これはコントローラ１５０によってバス１３０へ接続されている。
【００４４】
クライアント・コンピュータ１００へのユーザ入力は多数のデバイスによって提供され得る。たとえば、キーボード１５６とマウス１５７はキーボード及びマウス・コントローラ１５５によってバス１３０へ接続される。オーディオ・トランスデューサ１９６はマイクロホン及びスピーカの両方として機能することができるもので、オーディオ・コントローラ１９７を介してバス１３０へ接続されている。他の入力デバイスたとえばペンおよび／またはタブレットや、音声入力用マイクロホンなどを適当なコントローラとバス１３０経由でクライアント・コンピュータ１００へ接続することができるのは当業者には明らかであろう。ＤＭＡコントローラ１６０はシステムＲＡＭ１１０へのダイレクト・メモリアクセスを実行するために提供される。視覚表示はビデオコントローラ１６５によって生成され、これがビデオ・ディスプレイ１７０を制御する。
【００４５】
コンピュータ・システム１００はまたクライアント・コンピュータ１００がバス１９１経由でネットワーク１９５へ相互接続できるようにするネットワーク・アダプタ１９０も含む。ネットワーク１９５はローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、またはインターネットであり、多数のネットワーク・デバイスを相互接続する汎用通信回線を使用する。
【００４６】
コンピュータ・システム１００は一般にオペレーティング・システム・ソフトウェアによって制御調節される。コンピュータ・システム制御機能のなかでも、オペレーティング・システムはシステム資源の割り当てを制御しプロセスのスケジュール、メモリ管理、ネットワーク及びＩ／Ｏサービスなどのタスクを実行する。
【００４７】
Ｃ．データ・モデルを制御する従来の方法
図２は「モデル・ビュー・コントローラ」として周知の技術を使ったデータ・モデルを制御する従来のシステム２００を示す。システム２００において、データ・モデル・モジュール２０２はたとえばデータベースなどのデータをデータ・モデルにしたがって格納し維持する。コントローラ・モジュール２０４はローカルに開始したイベント２０６（たとえばユーザ入力など）やまたは外部で開始したイベント２０８（たとえばリモートのコンピュータ・システムから受信したイベント通知など）に応じて、「現在値をセットする」コマンドをデータ・モデル・モジュール２０２に指示して格納しているデータへの変更を行なわせる。コントローラ・モジュール２０４はデータ変更を出力装置たとえばディスプレイ２０６などに通知する。ディスプレイ２０６はデータ・モデル・モジュール２０２から変更されたデータを取得してデータの表示を更新し、現在のデータがユーザから観察できるようにする。前述の技術は厳密にイベント駆動型であり動作においてリニアである。典型的には、データへの変更をコントローラ・モジュール２０４に指示させる内部または外部のイベントはコントローラ・モジュール２０４のＦＩＦＯ（先入れ先出し）型バッファに格納され、次いでイベント通知がコントローラモジュールに到達した順序で処理される。また典型的には、グローバルな一貫性問題、即ちシステム２００内のモデルデータのコピーが他のリモートシステムにあるデータと一致していることを保証する対応がシステム２００には行なわれていない。
【００４８】
システム２００で例示したようなデータ・モデルを制御する従来のアプローチは、コンピュータ・システムがメインフレームとパーソナル・コンピュータとを問わず相互に隔絶されて動作していた時代には適切だった。インターネットの発達とともに、コンピュータ・ユーザはコラボレーションするときのもっと優れた方法を要求しており、本発明では、データ・モデルに対してデータ変更エンジンによって行なわれる変更にダイナミクス・マネージャが介在する「モデル介在型制御」と呼べるようなものを提供する。
【００４９】
Ｄ．コンピュータ間動作のインターネット・パラダイム
図３はインターネット環境３００を示したもので、本発明が有利に使用できるものである。ユーザの観点からすると、従来のクライアントサーバ・ビュー３０２において、個別のクライアント３０６、３０８はインターネット３０９上でサーバ３１０と別々に通信する。各々のクライアント３０６、３０８はインターネット３０９経由でサーバへ要求を発信し、各々について、サーバ上に格納されたドキュメントをインターネット３０９上でクライアントへ提供することにより、サーバ３１０がこの要求に応答する。各々のサーバ３１０とクライアント３０６、３０８は、図１に図示したようなパーソナル・コンピュータとして実現でき（サーバの場合には幾つかのＵＩコンポーネントはオプションとなる）、適当なプログラムたとえばクライアント・ブラウザ３１１および／または後述するようなその他の通信インタフェースの実行が可能である。インターネット使用のピア・ツー・ピア・ビュー３１２においては、ユーザのコンピュータ・システムはピア・ユニット３１４Ａ〜Ｄを構成し、インターネット経由の通信は一つのピア・ユニットから別のピア・ユニットへ明らかに介在するものがなくても配向できる。各々のピア・ユニット３１４Ａ〜Ｄは図１に図示したようなパーソナル・コンピュータとして、またはその他の形態のネットワーク接続可能なデバイスとして実現可能である。本発明はクライアント３０６、３０８、またはピア・ユニット３１４Ａ〜Ｄのいずれかで有利なるように実現可能であるが、このような説明はシステムのピア・ツー・ピア・ビューでの実装が中心となる。
【００５０】
さらに詳細には以下で説明するが、このようなピア・ツー・ピア通信は直接またはリレー・デバイス３１６経由で行なうことができる。リレー・デバイス３１６は「ストア・アンド・フォワード」型が望ましく、これはインターネットから一時的に切断されているピア・ユニット３１４へ向けられたメッセージを格納し、その後再接続した時にそのピア・ユニットへメッセージを転送することができるものである。
【００５１】
Ｅ．ＡＢＣシステムのアーキテクチャと動作
図４はピア・ユニット３１４Ａ〜Ｄの一つ、たとえばピア・ユニット３１４Ａにおいて実現されるＡＢＣシステム４００を示す。ピア・ユニット３１４Ａ上のＡＢＣシステムはフレームワーク４０２、少なくとも一つのテレスペース４０４、及びユーザ・インタフェース４０６を備える。フレームワーク４０２は多数のテレスペース４０４にサービスするためのプラットフォームを提供するのが望ましい。フレームワーク４０２は、アクティビティが動作しフレームワーク・コンポーネントと通信するプログラマ・インタフェースを備えるモジュラー構造が望ましい。
【００５２】
フレームワーク４０２はユーザ・インタフェース・マネージャ４０８、アイデンティティ・マネージャ４１０、テレスペース・マネージャ４１２、アクティビティ・マネージャ４１４、格納・マネージャ４１６、コントローラ・サービス・マネージャ４１８、ダイナミクス・マネージャ４２０、通信マネージャ４２２を含む。
【００５３】
ユーザ・インタフェース（ＵＩ）マネージャ４０８は多数のユーザ・インタフェース・コントローラ（図示していない）の共有サービスの管理を担当する。ＵＩマネージャ４０８はディスプレイ・ウインドウの窓ガラスの向こうにあるアクティビティのレイアウトを管理し、それ以外にユーザ・インタフェースとして期待する「ルック・アンド・フィール」を提供する。ＵＩマネージャ４０８はアクティビティのナビゲーション（たとえばｇｏ（行く）、ｎｅｘｔ（次）、ｐｒｅｖｉｏｕｓ（前））なども管理しナビゲーション履歴を保持する。
【００５４】
アイデンティティ・マネージャ４１０はあるテレスペース・メンバーのアイデンティティの保存を担当する。前述したように、アイデンティティは名前であり、また対応するＵＲＬであり、これにより各々のユーザが他のユーザによって認識される。個々のユーザは１つまたは多数のアイデンティティを持つことがある。アイデンティティ・マネージャ４１０はアイデンティティのレコードまたはテーブルを望ましくはＸＭＬで保持する。アイデンティティ・マネージャ４１０はまたテレスペース・メンバーのＵＲＬとこれらに対応するデバイスのＵＲＬのレコードまたはテーブルを望ましくはＸＭＬで保存する。これ以外に、独立したメンバー・マネージャを実装することができる。
【００５５】
テレスペース・マネージャ４１２はピア・ユニット３１４Ａで開くことができるテレスペース４０４の各々の管理を担当する。各々のテレスペース４０４は１つまたはそれ以上のアクティビティのインスタンシエーション（ｉｎｓｔａｎｔｉａｔｉｏｎ）である。各々のテレスペース４０４は対応するアクティビティ・マネージャ４１４を有している。
【００５６】
アクティビティ・マネージャ４１４は（ａ）テレスペースへ新規アクティビティを追加する、（ｂ）テレスペースで既存のアクティビティを開く、（ｃ）アクティビティ・テンプレートの新しいバージョンからテレスペースのアクティビティを更新する。新規のアクティビティを追加するには、アクティビティ・マネージャ４１４にアクティビティ・テンプレートのＵＲＬを提供してテンプレートを開き、テンプレート情報（たとえばコンポーネントＵＲＬ）を抽出してテレスペースへ伝搬する。テンプレートはあるテレスペースについての初期アクティビティ構成を定義する。ユーザは後で必要に応じてテレスペース４０４へさらにアクティビティを追加できる。追加した後、アクティビティはテレスペースの「一部」となりテレスペースのメンバー全員から見えるようになる。テレスペースはアクティビティ・マネージャを識別してアクティビティ・マネージャとデータを結合するタグを備える。望ましくは、各々のドキュメントはローカル・レジストリをこれにリンクし、ＸＭＬタグの名前がレジストリに保存されるようにして、拡張可能な、プラットホームに依存しない方法でドキュメントとこれに対応するテレスペースの間のマッピング（参照ポインタまたは連係）を表現するようにする。各々のテレスペース・メンバーはその人のピア・ユニット３１４Ａ〜Ｄで利用できるテレスペースのフレームワークとアクティビティ・テンプレートを有する。
【００５７】
各々のアクティビティはツール４２４などのツールと、エンジン４２６などのエンジンとを含む。ツール４２４はアクティビティにユーザ・インタフェース（ＵＩ）機能を提供してメンバーとＵＩ４０６経由で対話する。ＵＩを介した対話はたとえばキーボード１５６経由で（図１）またはマウス１５７経由で（図１）開始されたＵＩイベントを含む。このようなＵＩイベントに応答して、ツール４２４はこれに対応するエンジン４２６に対してデータ・モデル変更を実行するように要求し、データ変更が起こった時に非同期的にＵＩを更新する非同期データ変更通知をエンジン４２６に予約する。ツール４２４もコントローラ・サービス・マネージャ４１８の指示の下に提供されるバックグラウンドサービスと対話するためのアプリケーション・プログラム・インタフェース（ＡＰＩ）を実装している。エンジン４２６はテレスペース４０４をサポートするデータの維持と変更、および／またはツールを介して得られたユーザとの対話からの結果の維持と変更を担当する。後述するように、エンジン４２６は永続的モデルデータを変更することと非同期データ変更通知をツール４２４に送出することをどちらもダイナミクス・マネージャ４２０の指示制御下で行なうことができる。格納・マネージャ４１６は格納されたデータへのアクセスを制御する。
【００５８】
アクティビティ・テンプレートの作成について、ソフトウェア・デベロッパはフレームワーク内で使用するツールとエンジンを書いたり取り込んだりできる。アクティビティ・テンプレートはアクティビティを含むツール・コンポーネント及びエンジン・コンポーネントの永続的表現である。アクティビティ・テンプレートはたとえばシュリンク・ラップしたソフトウェアとして配布したりたとえばインターネット上で遠隔地のサーバからピア・ユニット３１４Ａにダウンロードしたりできる。アクティビティ・コンポーネントはウェブ・ドキュメントであると考えることができ、ＵＲＬ経由で永続的に表現される。アクティビティ・テンプレートそれ自体がＵＲＬを有するのが望ましく、これによりアクティビティ設計の変更を追跡できるようになる。アクティビティ・テンプレートは単一のアクティビティ・テンプレートかまたはアクティビティ集合体テンプレートであり得る。単一のアクティビティ・テンプレートはたとえば「チャット」などの一つのアクティビティにだけに関連する。それに対してアクティビティ集合体テンプレートは「チャット及びアウトライン」などといったアクティビティの集合体に関連する。
【００５９】
使用するときは、ＡＢＣシステム４００はアイデンティティ・マネージャ４１０経由でメンバーのアイデンティティを取得し、テレスペース・マネージャを開き、テレスペース・マネージャに対してＵＲＬ経由でテレスペースを開くように要求し、テレスペース・マネージャにアクティビティ・マネージャを要求し、さらに、通常はアクティビティのＵＲＬを使って、アクティビティ・マネージャがアクティビティを開く。次に、ＡＢＣシステム４００はメンバーがテレスペースを使用して特定のアクティビティによって提供される共有された特定のタスクを実行することができるようにする。
【００６０】
図５はピア・ユニット３１４Ａ〜Ｄ上のＡＢＣシステム５００の代表的なマルチ・テレスペースの使用方法を示す。ＡＢＣシステム５００が分散システムであることは理解されるべきである。そこでここでは、ピア・ユニット３１４Ａだけのコンポーネントの説明が提供されているが、ピア・ユニット３１４Ｂ〜Ｄも同様のコンポーネントを備えているので、これらについては別個の説明は不要である。
【００６１】
ピア・ユニット３１４Ａについて図示したように、ＡＢＣシステム５００はピア・ユニット３１４Ａがメンバーとして登録されている複数の代表的テレスペースを含み、これには自動車設計テレスペース５０２、チャット・テレスペース５０４、チェスで遊ぶテレスペース５０６が含まれている。また図示してあるように、ピア・ユニット３１４はテレスペース５０２、５０４、５０６の操作中に使用される複数のコンポーネントを有している。ピア・ユニット３１４Ａは、メンバーとして登録されているテレスペース５０２、５０４、５０６の各々をリストし記述してあるテレスペース・レコード５０８と、これらのテレスペースに参加するテレスペース・メンバーのアイデンティティの各々をリストし記述してあるメンバー・レコード５１２とを保持するメモリ５１０を備えている。ＵＩ５１２はユーザが開始したテレスペースへの変更及びメンバー・レコード５０８．５１４への変更を受信できる。
【００６２】
テレスペース５０２、５０４、５０６の各々は図示したアクティビティ５２２、５２４、５２６のうちの異なる一つを例示している（これとは別の場合には、図示したアクティビティ５２２、５２４、５２６は単一のテレスペースに常駐することもあるが、この場合単一のテレスペースの全てのメンバーがアクティビティの各々へのアクセスを行なうことになる）。各々のアクティビティ５２２、５２４、５２６は各々のアクティビティに対応する特定のツール５３２、５３４、５３６であって、各々のエンジン５４２、５４４、５４６の制御下にメモリ５１０に格納された対応するデータ・モデル５５２、５５４、５５６に対して変更を行うためのツール５３２、５３４、５３６を含み、これらのツールはそれぞれテレスペース５０２、５０４、５０６の中に永続的に保存される。たとえば、自動車設計テレスペース５０２はＣＡＤ（ｃｏｍｐｕｔｅｒ−ａｉｄｅｄ  ｄｅｓｉｇｎ）ソフトウェアの形でツール５３２を含むことができるアクティビティ５２２のインスタンスであり、チェスで遊ためのテレスペース５０６はソフトウェアのチェスゲームの形を取るツール５３６を含むことができるアクティビティ５２６のインスタンスである。
【００６３】
ユーザはユーザ・インタフェース５１４経由でテレスペース５０２、５０４、５０６のアクティビティ５２２、５２４、５２６を遂行し、ユーザ・インタフェース５１４はツール５３２、５３４、５３６とのインタフェースを持つことによりユーザの要求をツールに提供する。この要求に応答して、エンジン５４２、５４４、５４６がダイナミクス・マネージャ５０１の制御下でメモリ５１０内の対応するデータ・モデル５５２、５５４、５５６の永続状態を変更し、現在の状態を反映させる。たとえば、チェスで遊ぶためのテレスペース５０６でのデータの永続的状態は、そのチェス盤と、盤上のチェスの駒の位置を含むことができる。ユーザ要求はチェスの駒の動きを指定でき、これがデータの変更、即ちデルタを構成する。また現在の状態はデルタの実行と駒の動きの完了を反映する。
【００６４】
図６はＡＢＣシステム５００の動作を示したもので、ピア・ユニット３１４Ａに配置され図５を参照して説明したコンポーネントに関するものである。エンジン５４６はアクティビティ５２６の特定の集中タスクを推進する上で実装するときの候補となるアクションまたはオプション（たとえばチェスの駒の動き）をツール５３６に提示する。ツール５３６はユーザ・インタフェース５１４経由でテレスペース５０６のメンバー（メンバー・レコード５１２に記録されているメンバー）であるユーザと対話し、アクティビティのビュー（画像）を提示する（たとえば、チェス盤面のビューと、おそらくは動きのリスト）。ユーザのジェスチャーと呼ばれる（たとえばビショップをＸからＹへ動かすなど）ものであってユーザ・インタフェース５１４から入力されたユーザ入力に応答して、ツール５３６はデルタを生成してシステム内に格納することにより、ユーザによる選択をメモリ内に記録する。デルタは要求された変更の単位であり、好ましくは、コンテナ・オブジェクトの形である。コンテナ・オブジェクトはオブジェクト指向プログラミング技術に馴染みのある者にはには周知である。ツール５３６はデルタにおいて要求された変更の粒度（ｇｒａｎｕｌａｒｉｔｙ）の決定を担当する。デルタ・コンテナ・オブジェクトはたとえば特定のチェスの駒の識別及びチェスの駒の動きを構成する盤面のもとの位置と目標位置といった、ユーザの指定したデータに加えて、変更を実行するための１つまたはそれ以上のコマンドを保持（内蔵）することができる。生成時には、デルタはコマンドが何も入っていない空の状態で、変更を行なうためにエンジン５４６によって適当なコマンドを埋め込まれるまで、それ自身が単に変更要求を構成しているだけである。デルタにおいてエンジン特有の方法（これはツール５３６には分かっていなくとも良い）で変更を行なうのに必要とされるコマンドを記録するのはエンジン５４６の責任である。
【００６５】
さらに詳しく説明すると、線「ａ」で示したように、ツール５３６はダイナミクス・マネージャ５０１によるデルタ生成を要求することからデルタの作成を開始する。ダイナミクス・マネージャ５０１はデルタを作成して線ａ’でツール５３６へデルタを返し、フォールトリカバリ（障害復旧）が必要な場合に備えて作成したデルタを記録する。
【００６６】
図６の線「ａ」で示してあるように、ツール５３６はツール・インタフェース６０２を介してエンジン５４６のツール・エンド６０４へデルタの制御を渡し、これによりエンジンを起動する（この説明は時としてデルタが渡されるまたはデルタへの制御を一つのコンポーネントから別のコンポーネントへ渡すべきであることを表わす。望ましくは、デルタはメモリ内に割り当てられ、ポインタがＸＭＬエレメントとして渡されるオブジェクトである。）。エンジンのツール・インタフェース６０２はデルタにコーティングされている要求された変更を行なうことができるコマンドを作成するための、または、言い換えればユーザの意図にしたがうように逐次的な形で適当なコマンド、代表的にはエンジンに特有なコマンドでデルタを埋めるための、一組のアプリケーション・プログラム・インタフェースを表出する。次にエンジン５４６はこの段階ではコマンドで埋められているデルタの制御をツール５３６に戻す。
【００６７】
図６の線「ｂ」で示してあるように、ツール５３６は実行のために埋められたデルタの制御をダイナミクス・マネージャ５０１へ渡す（即ち送出する）。ダイナミクス・マネージャ５０１は他のピア・ユニット３１４Ｂ〜Ｄから線「ｂ」経由で到着するデルタも受信することができる。ダイナミクス・マネージャ５０１は、ピア・ユニット３１４Ｂ〜Ｄにおけるダイナミクス・マネージャとともに、チェスゲームのテレスペースに参加している全てのメンバーについて、ＡＢＣシステムの一方のエンドから別のエンドへ、データ・モデル５５６へ行なわれた変更の一貫性を維持する責任がある。
【００６８】
ダイナミクス・マネージャ５０１はキュー構造６１２とダイナモ・プロセス６１４とを含み、好ましくはコンピュータで実行可能なプログラムがダイナミクス・マネージャの主論理を含む。ダイナミクス・マネージャ５０１とそのダイナモ・プロセス６１４は通信マネージャ６２２と双方向通信する。ダイナミクス・マネージャ５０１は受信したデルタを順序付ける目的でキューに入れてキュー構造６１２にして、次にダイナモ・プロセス６１４がキューに入っているデルタを処理するときにはキュー構造にサービスし、エンジン５４６に指示して適当な順序でデルタを実行させる。さらに詳しく説明すると、ダイナミクス・マネージャ５０１のダイナモ・プロセス６１４はインタフェース６１５を介して図６の線「ｃ」を介してエンジン５４６のダイナミクス・マネージャ・エンド６１６へ向けて、「デルタ・コマンド実行」メッセージの形で制御信号を送信する。デルタコマンド実行メッセージはエンジン５４６に指示して、メモリ５１０に含まれており、テレスペースに永続するデータ・モデル５５６への要求された変更を行なうことで、ツール５３６から受信したデルタの実行を遂行する。
【００６９】
ダイナミクス・マネージャ５０１のダイナモ・プロセス６１４はまた、通信マネージャ６２２経由で他のエンドポイントへ向けてローカルに開始した全デルタを配布し、通信マネージャ６２２はネットワークたとえば６２６上でピア・ユニット３１４Ｂ〜Ｄへデルタを送信する。ピア・ユニット３１４Ｂ〜Ｄ各々では、各々のダイナミクス・マネージャが受信したデルタを自分のローカル・キュー構造へとキュー入れし、つぎに特定の順序で各々のエンジンへデルタを渡して実行させる。
【００７０】
一つのダイナミクス・マネージャはアプリケーションによって一つのテレスペースまたは多数のテレスペースをサポートできるので、多数のエンジンに指示して様々なテレスペース用のデルタを実行させる責任をとらせることもできる。多数のテレスペースを持つシステムでは、図５に図示したように、デルタの情報を調べることで、あるデルタをどのエンジンが実行すべきかを、ダイナミクス・マネージャ５０１が決定する。デルタはエンジンのうちの特定の一つに同定されまたデルタのペイロードの中に入っているエンジン識別子またはコードのタグを付けられたコマンドを含む。キューに入れられたデルタがダイナミクス・マネージャで処理される時に、ダイナミクス・マネージャはエンジン・コードと参照されたデルタとを関連付け、適当なエンジンによるデルタの実行を指示する。
【００７１】
最後に、図６の線「ｄ」で示されているように、エンジン５４６は「データ変更通知」メッセージを送出してツール５３６にデルタの実行を通知し、またデータ・モデル５５６におけるデータの新しい現在状態を通知する。デルタ変更通知は値または参照を使って行うことができる。つまり、通知は新しいデータの値それ自体を含むことができたり、またはメモリ内の新しいデータへのポインタを含むことができる。この通知に応答して、ツール５３６はたとえばチェス番のグラフィック上での動きを表示することにより、ユーザが利用可能な変更をユーザ・インタフェース５１４に行なわせる。ユーザがディスプレイ１７０を観察している場合（図１）、ユーザは、デルタの実行によって行なわれたチェス・ゲームへの変更を見ることができるが、それ以外の場合には、変更が行なわれた時点でユーザが変更を「見る」ことなくメモリ５１０内のデータに変更が行なわれる。
【００７２】
望ましくは、ピア・ユニット３１４Ａのデータ・モデル５５６に格納されているデータ・モデル５５６へ変更がエンジン５４６によって行なわれるのと実質的に同時に、他のピア・ユニット３１４Ｂ〜Ｄもローカルに格納しているデータに対して同様の変更を行なって一貫した方法でデルタの意図を反映する。ピア・ユニット３１４Ａ〜Ｄのどれかがネットワークたとえばインターネットに接続されていないような状況が起こり得る。ピア・ユニット３１４Ａが切断されているときには、通信マネージャ６２２はデバイス・プレゼンス・デテクタ４３０を使用してピア・ユニット３１４Ａが接続されているかどうかを確認し、接続されていない場合には、接続が復元される時まで送出されるデルタを送出デルタストア６２８に格納しておき、接続された時点で、格納したデルタを送信する。１つ以上の宛先ピア・ユニット３１４Ｂ〜Ｄがネットワークから切断されている場合、ピア・ユニット３１４Ａの通信マネージャ６２２はプロセスを続けて他のピア・ユニットが切断されているか否かにかかわらず送出デルタをリレー３１６（図３）に送信する。リレー・デバイス３１６（図３）はこのような送出デルタを受信し、必要に応じて送出デルタストア３１８（図３）に格納し、ピア・ユニット３１４Ｂ〜Ｄが再接続された時点で宛先へ転送する。動作中には、通信マネージャ６２２は全ての送出デルタをリレー３１６のＵＲＬへ送信することができ、リレーは搭載されている参照テーブル３２０を使用してデルタを中継する場合に使用する宛先ピア・ユニット３１４Ｂ〜ＤのエンドポイントＵＲＬを確認する。リレー・サービスは実際にはインターネット・サービス・プロバイダ（ＩＳＰ）またはその他のインターネット組織によって提供され得るものである。
【００７３】
ツール５３６とエンジン５４６の間で、ユーザ・インタフェース・アクティビティはツール５３６経由でのみ直接行なわれ、データ・モデルの変更はエンジン５４６経由でのみ直接行なわれることが理解される。専門用語を使った表現では、ツール５３６はＵＩを「保有」しており、エンジン５４６はデータ・モデルを「保有」している。これは図２に図示したような現行の代表的アプリケーションとは対照的である。たとえば、今日のスプレッドシート・プログラムでは、代表的にはツールの機能とエンジンの機能を組み合わせており、本発明の前述の実施態様のようにこれらを分離するのではない。ツールをエンジンから分離することにより、従ってデータ・モデルからＵＩを分離することにより、ダイナミクス・マネージャはたとえばデータの一貫性を維持する目的で、様々なピア・ユニットから発せられたデルタの間に介在し仲介できる。さらに、エンジンからツールを切り離すことでデルタの実行処理を非同期的に行なえるようになる。これはダイナミクス・マネージャ５０１とエンジン５４６がテレスペースの中にいる全てのメンバーについてデータの一貫性を維持するような方法で各々の責任を遂行するのに時間がかかるため有用である。また、他のピア・ユニット３１４Ｂ〜Ｄから到着するデルタがローカルに開始されたデルタの実行のタイミングに影響することがあることからも有用である。
【００７４】
アクティビティを構成する各ツール−エンジンの組み合わせが別々のダイナミクス・マネージャに対応できることと、多数のダイナミクス・マネージャを提供してた数の同時に実行するアクティビティに対応できる点で、ＡＢＣシステムはマルチタスク、マルチスレッドであり得る。テレスペースとダイナミクス・マネージャの間の一対一の関係ではデルタ処理で最小のレイテンシが導入されるが、スレッドが窮乏する（ｓｔａｒｖａｔｉｏｎ）とエラーまたはフォールト条件を起してしまうことがある。他方、単一のダイナミクス・マネージャで多くのテレスペースをサポートすると渋滞（ｃｏｎｇｅｓｔｉｏｎ）の問題が起こることがある。各コンポーネントの最適な個数はハードウェアの用途、参加するピア・ユニットの個数、トラフィック条件によって左右される。
【００７５】
アクティビティを構成する各ツール−エンジンの組み合わせが別々のダイナミクス・マネージャに対応できることと、多数のダイナミクス・マネージャを提供してた数の同時に実行するアクティビティに対応できる点で、ＡＢＣシステムはマルチタスク、マルチスレッドにすることもできる。テレスペースとダイナミクス・マネージャの間の一対一の関係ではデルタ処理で最小の遅延が導入されるが、スレッドが窮乏する（ｓｔａｒｖａｔｉｏｎ）とエラー状態またはフォールト状態を起してしまうことがある。他方、単一のダイナミクス・マネージャで多くのテレスペースをサポートすると渋滞（ｃｏｎｇｅｓｔｉｏｎ）の問題が起こることがある。各コンポーネントの最適な個数はハードウェアの用途、参加するピア・ユニットの個数、トラフィック条件によって左右される。
【００７６】
ＡＢＣシステムは複数のコンピュータ・システム（ＣＳ）を含み、その各々が１つ以上のテレスペース（ＴＳ）を備え、各テレスペースが１つ以上のアクティビティ・コンポーネントを具現化（ｉｎｓｔａｎｔｉａｔｉｏｎ）し、各アクティビティ・コンポーネントには１つ以上のツール（Ｔ）とエンジン（Ｅ）のペアを有し、これら各々の動作はダイナミクス・マネージャ（ＤＭ）によって調整される。つまり、ＡＢＣシステムは１つ以上のダイナミクス・マネージャを備えた多数のテレスペースを有することができる。したがって、ＡＢＣシステムはたとえば次のように構成することができる：
ＡＢＣシステム＝
ＣＳ１  ＝  ＤＭ１  ＋  Ａ１、
ここでＡ１  ＝  Ｔ１  ＋  Ｅ１、
ＣＳ２  ＝  ＤＭ２  ＋  Ａ２、
ここでＡ２  ＝  Ｔ２  ＋  Ｅ２
．．．
．．．
ＣＳｎ  ＝  ＤＭｎ  ＋  Ａｎ、
ここでＡｎ  ＝  Ｔｎ  ＋  Ｅｎ
【００７７】
ここで全部のアクティビティＡ、Ａ２、Ａｎは１つ以上のテレスペースに含まれるものとし、”ｎ”は正の整数である。つまり、例を挙げると、様々なテレスペースのインスタンシーエションの例は次のようになる：
ＴＳ  ⊂  Ａ１、または
ＴＳ  ⊂  Ａ１  ＋  Ａ２、
または
ＴＳ  ⊂  Ａ１  ＋  Ａ２  ＋  Ａｍ
あるいは
ＴＳ１  ⊂  Ａ１
ＴＳ２  ⊂  Ａ２
．．．
ＴＳｍ  ⊂  Ａｍ
【００７８】
ここで記号「⊂」は「〜を含む集合」を表わし、「ｍ」は正の整数である。したがって、各テレスペースは１つまたはそれ以上のアクティビティを具現化し、フレームワークは単一のテレスペースを有することができる。別の方法では、各テレスペースは１つ以上のアクティビティを具現化し、フレームワークが多数のテレスペースを有することができる。
【００７９】
前述した実施態様のコンポーネントをソフトウェアで実装したものは、たとえばコンピュータで読み取り可能な媒体、たとえば図１のディスケット１４２、ＣＤ−ＲＯＭ１４７、ＲＯＭ１１５、またはハードディスク装置１５２などの有形の媒体上に固定されるか、またはモデムまたはその他のインタフェース・デバイスたとえば媒体１９１上のネットワーク１９５に接続した通信アダプタ１９０を介して送信することができるかのどちらかのコンピュータ用命令及びルーチンを含む。媒体１９１は光通信回線または有線通信回線を含みこれに制限されない有形の媒体であるか、またはマイクロ波、赤外線、またはその他の通信技術を含みこれに制限されない無線技術で実現される。これはまたインターネットであっても良い。一連のコンピュータ用命令が本明細書で本発明に関連して前述し多機能の全部または一部を実現する。多くのコンピュータ・アーキテクチャまたはオペレーティング・システムで使用される多数のプログラミング言語でこのようなコンピュータ用命令を書くことができることは当業者には理解されよう。さらに、このような命令は現在または将来の、半導体、磁気、光、またはその他のメモリ・デバイスを含みこれに制限されない何らかのメモリ技術を用いて保存することができ、あるいは現在または将来の、光、赤外線、マイクロ波、またはその他の送信技術を含みこれに制限されない何らかの通信技術を用いて送信される。このようなコンピュータ・プログラム製品が、印刷したまたは電子化された説明を伴ったリムーバブル媒体、たとえばシュリンクラップ・ソフトウェアとして配布される、コンピュータ・システムのたとえばシステムのＲＯＭまたは固定ディスク上にプリロードされる、またはたとえばインターネットまたはＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）などのネットワーク上のサーバまたは電子掲示板システムから配布されることを想定している。
【図面の簡単な説明】
【図１】  図１は、従来のコンピュータ・システムの代表的アーキテクチャのブロック図である。
【図２】  図２は、図１のコンピュータ・システムで実行される従来のアプリケーションのブロック図で、制御モジュールはディスプレイまたはその他のユーザ・インタフェースとインタフェースすること及びデータ・モデルにしたがってデータを維持することを担当する。
【図３】  図３は、インターネット・ベースのシステムのブロック図で、ＷＷＷ用のクライアントサーバ・システムと、本発明の実施態様によるパーソナル・ウェブのためのピア・ツー・ピアシステムとの両方を示す。
【図４】  図４は、本発明の実施態様による図１のコンピュータ・システムで実装されるＡＢＣシステムの一部のブロック図である。
【図５】  図５は、図１のコンピュータ・システムで実装されるＡＢＣシステムの一部のブロック図で本発明の実施態様による代表的テレスペース・アプリケーションを示す。
【図６】  図６は、図５のチェス・テレスペースで実装されるＡＢＣシステムの一部のブロック図である。
【図１】
0004762467.tif 000002
【図２】
0004762467.tif 000003
【図３】
0004762467.tif 000004
【図４】
0004762467.tif 000005
【図５】
0004762467.tif 000006
【図６】
0004762467.tif 000007