(57)【要約】【課題】  ほぼリアルタイムに文書及び文書へのマークアップを共有するシステム及び方法を提供する。【解決手段】  ネットワークを介して複数のクライアント装置に結合されるサーバは、１又は複数の共同セッションにおいて該複数のクライアント装置の各々に文書を公平に配信するよう構成される。サーバは、特定の共同セッションに関連付けられた複数のクライアント装置に配信するために文書を受信し、前記文書を断片に解体し、前記文書の全ての断片が配信されるまで、繰り返し、送信のために前記文書の断片を選択し、前記選択した断片を前記複数のクライアント装置の各々へ送信し、前記選択した断片のサイズ及び最小ネットワーク帯域幅に基づき、遅延を計算し、前記計算した遅延の間、待機する。【選択図】図４
2015170360.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが実施する方法であって、
共同セッションにおいて複数のクライアント装置に配信するために文書を受信するステップと、
前記文書を断片に解体するステップと、
前記文書の全ての断片が配信されるまで、繰り返し、
送信のために前記文書の断片を選択するステップと、
前記複数のクライアント装置の各々へ前記選択した断片を送信するステップと、
前記選択した断片のサイズ及び最小ネットワーク帯域幅に基づき、遅延を計算するステップと、
前記計算した遅延の間、待機するステップと、
を有する方法。
【請求項２】
前記選択した断片を送信するステップは、前記選択した断片を送信のためにグローバルキューに追加するステップを更に有する、請求項１に記載の方法。
【請求項３】
送信のために前記文書の断片を選択するステップは、
前記複数のクライアント装置のユーザにより最も多く閲覧されているページを決定するステップと、
前記最も多く閲覧されているページを送信のために選択するステップと、
を更に有する、請求項１に記載の方法。
【請求項４】
前記文書の前記断片は、ヘッダ及びストローク断片を有する、請求項１に記載の方法。
【請求項５】
前記文書の前記断片は、ＳＶＧ（scalable  vector  graphics）フォーマットである、請求項４に記載の方法。
【請求項６】
前記遅延は、トークンバケットアルゴリズムを用いて計算される、請求項１に記載の方法。
【請求項７】
遅延読み込みアルゴリズムを用いて、異なるチャネルで、前記文書の画像を送信するステップ、を更に有する請求項１に記載の方法。
【請求項８】
複数のクライアント装置と、
ネットワークを介して前記複数のクライアント装置に結合されるサーバと、
を有し、前記サーバは、
共同セッションにおいて、前記複数のクライアント装置に配信するために文書を受信し、
前記文書を断片に解体し、
前記文書の全ての断片が配信されるまで、繰り返し、
送信のために前記文書の断片を選択し、
前記複数のクライアント装置の各々へ前記選択した断片を送信し、
前記選択した断片のサイズ及び最小ネットワーク帯域幅に基づき、遅延を計算し、
前記計算した遅延の間、待機する、
よう構成される、システム。
【請求項９】
前記選択した断片を送信するために、前記サーバは、前記選択した断片を送信のためにグローバルキューに追加するよう更に構成される、請求項８に記載のシステム。
【請求項１０】
前記サーバは、ＸＭＰＰ（eXtensible  Messaging  and  Presence  Protocol）を用いて前記複数のクライアント装置と通信する、請求項８に記載のシステム。
【請求項１１】
送信のために前記文書の断片を選択するために、前記サーバは、
前記複数のクライアント装置のユーザにより最も多く閲覧されているページを決定し、
前記最も多く閲覧されているページを送信のために選択する、
よう更に構成される、請求項８に記載のシステム。
【請求項１２】
前記文書の前記断片は、ヘッダ及びストローク断片を有する、請求項８に記載のシステム。
【請求項１３】
前記文書の前記断片は、ＳＶＧ（scalable  vector  graphics）フォーマットである、請求項１２に記載のシステム。
【請求項１４】
前記遅延は、トークンバケットアルゴリズムを用いて計算される、請求項８に記載のシステム。
【請求項１５】
前記サーバは、遅延読み込みアルゴリズムを用いて、異なるチャネルで、前記文書の画像を送信するよう更に構成される、請求項８に記載のシステム。
【請求項１６】
前記複数のクライアント装置は、プロジェクタ、モニタ、テレビジョン、対話型ホワイトボード、ウェブカメラ、マイクロフォン、ラウドスピーカ、ＣＤ／ＤＶＤプレイヤ、電子ペーパ装置、電子リーダ装置、デスクトップコンピュータ、タブレット、又はスマートフォンのうちの１又は複数を有する、請求項８に記載のシステム。
【請求項１７】
コンピュータプログラムプロダクトであって、コンピュータ可読プログラムを有するコンピュータ使用可能媒体を有し、前記コンピュータ可読プログラムは、コンピュータで実行されると、前記コンピュータに、
共同セッションにおいて複数のクライアント装置に配信するために文書を受信し、
前記文書を断片に解体し、
前記文書の全ての断片が配信されるまで、繰り返し、
送信のために前記文書の断片を選択し、
前記選択した断片を前記複数のクライアント装置の各々へ送信し、
前記選択した断片のサイズ及び最小ネットワーク帯域幅に基づき、遅延を計算し、
前記計算した遅延の間、待機する、
ようにさせる、コンピュータプログラムプロダクト。
【請求項１８】
前記選択した断片を送信するために、前記コンピュータ可読プログラムは、前記コンピュータに、さらに、前記選択した断片を送信のためにグローバルキューに追加させる、請求項１７に記載のコンピュータプログラムプロダクト。
【請求項１９】
前記コンピュータ可読プログラムは、前記コンピュータに、さらに、ＸＭＰＰ（eXtensible  Messaging  and  Presence  Protocol）を用いて前記選択した断片を送信させる、請求項１７に記載のコンピュータプログラムプロダクト。
【請求項２０】
送信のために前記文書の断片を選択するために、前記コンピュータ可読プログラムは、前記コンピュータに、さらに、
前記複数のクライアント装置のユーザにより最も多く閲覧されているページを決定し、
前記最も多く閲覧されているページを送信のために選択する、
ようにさせる、請求項１７に記載のコンピュータプログラムプロダクト。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書は、文書及び文書へのマークアップをほぼリアルタイムに共有するシステム及び方法に関連する。特に、本願明細書は、文書及びマークアップをクライアント装置の各々に公平に共有するための、クライアント装置と通信するサーバ及びプロトコルに関する。
【背景技術】
【０００２】
サーバへのネットワーク接続は、速度及び品質において変化し得る。種々の速度の接続を有するユーザがウェブ会議のような共同セッションに接続されるとき、問題が生じ得る。その結果、高帯域幅を有するユーザと低帯域幅を有するユーザが異なるものを見る場合に、ユーザに混乱が生じ得る。例えば、低帯域幅を有するユーザは、文書のページを受信し及び見るのが他のユーザより遅く、又は他のユーザが文書のページに追加したマークを見ることができない。
【０００３】
例えば、会社が会議室で会議を開くとき、一部の従業員はモバイル装置を用い、会議室はスライドを投影するプロジェクタを有し、他のユーザは彼らのラップトップ及び／又は他のモバイル装置を用いてその会議に遠隔から接続する。リモートユーザは、スライド及びマークをリアルタイムに見るために会議ソフトウェアを用いることができる。しかしながら、帯域幅が変化する結果、閲覧者は異なる時間に異なるものを見てしまう。したがって、共同セッションに文書を公平に追加するシステム及び方法が必要である。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、文書及び文書へのマークアップをほぼリアルタイムに共有するシステム及び方法を提供する。
【課題を解決するための手段】
【０００５】
本開示は、共同セッションにおいてユーザ間で公平にデータを共有するシステム及び方法に伴う従来の不備を克服する。一実施形態では、ネットワークを介して複数のクライアント装置に結合されるサーバは、１又は複数の共同セッションにおいて該複数のクライアント装置の各々に文書を公平に配信するよう構成される。サーバは、特定の共同セッションに関連付けられた複数のクライアント装置に配信するために文書を受信し、前記文書を断片に解体し、前記文書の全ての断片が配信されるまで、繰り返し、送信のために前記文書の断片を選択し、前記選択した断片を前記複数のクライアント装置の各々へ送信し、前記選択した断片のサイズ及び最小ネットワーク帯域幅に基づき、遅延を計算し、前記計算した遅延の間、待機する。
【０００６】
他の態様は、上述の及び他の新規な態様のための対応する方法、システム、装置及びコンピュータプログラムを有する。
【０００７】
本願明細書に記載される特徴及び利点は網羅的ではなく、図面及び説明を参照して多くの追加の特徴及び利点が明らかになるだろう。さらに、留意すべき点は、本願明細書で用いられる語は、基本的に読み易さ及び説明的目的で選択されており、本願明細書に開示された事項の範囲を制限しない。
【図面の簡単な説明】
【０００８】
本発明は、例を用いて説明され、添付の図面に限定されるものではない。図中、同様の参照符号は同様の要素を表すために用いられる。
【図１】共同セッションに文書を公平に追加するシステムの一実施形態を示す上位ブロック図である。
【図２】ストローク共有サーバの一実施形態を示すブロック図である。
【図３】ストローク共有サーバのマスタコンポーネントの一実施形態を示すブロック図である。
【図４】ストローク共有サーバのマスタコンポーネントにより会議に文書を追加する方法の一実施形態のフロー図である。
【図５】会議毎キュー内のイベントを処理する方法の一実施形態のフロー図である。
【発明を実施するための形態】
【０００９】
共同セッションに文書を公平に追加するシステム及び方法を以下に記載する。以下の説明では、説明を目的として、本願明細書で紹介する技術の完全な理解を提供するために、多くの詳細事項が説明される。しかしながら、当業者は、実施形態がそのような特定の詳細にかかわらず実施できることを理解するだろう。他の例では、技術を不明瞭にしないために、構造及び装置がブロック図で示される。例えば、本技術は、以下の一実施形態では、スマートフォン及び特定のソフトウェア及びハードウェアのようなユーザ装置を参照して説明される。しかしながら、以下の説明は、データ及びコマンドを受信可能な如何なる種類のコンピューティング装置、並びにサービスを提供する如何なる周辺装置にも適用される。
【００１０】
本願明細書において「一実施形態」又は「ある実施形態」等のような表現は、実施形態と関連して記載された特定の機能、構造又は特徴が少なくとも１つの実施形態に含まれることを意味する。明細所内の種々の文の中の「一実施形態では」という表現の出現は、必ずしも全て同じ実施形態を参照していない。
【００１１】
以下の詳細な説明の一部は、コンピュータメモリ内のデータビットに対する動作のアルゴリズム及び象徴的表現の観点で提供される。これらのアルゴリズムの説明及び表現は、データ処理技術の当業者により、業務内容を最も効率的に他の当業者に伝えるために用いられる手段である。アルゴリズムは、ここでは及び概して、所望の結果を生じる自己矛盾のないステップシーケンスであると考えられる。ステップは、物理量の物理的操作を必要とするステップである。通常、必ずしも必要ではないが、これらの量は、格納され、転送され、結合され、比較され及びその他の場合には操作され得る電気信号又は磁気信号の形式を取る。基本的に一般的に用いられるという理由で、これらの信号をビット、値、要素、シンボル、文字、語、数値、等として表すことが便利であることが分かっている。
【００１２】
しかしながら、これらの及び類似の語の全ては、適切な物理量に関連付けられ、これらの量に適用される便宜的ラベルに過ぎない。特に断りのない限り、以下の議論から明らかなように、以下の説明を通じて、「処理」、「計算」又は「演算」又は「決定」又は「表示」等の語を用いた議論は、コンピュータシステム又は同様の電子コンピューティング装置の動作及び処理を表す。コンピュータシステム又は同様の電子コンピューティング装置は、コンピュータシステムのレジスタ及びメモリ内にある物理（電子）量として表されたデータを操作し、コンピュータシステムのメモリ若しくはレジスタ又は情報記憶、送信又は表示装置等の中の物理量として同様に表される他のデータに変換する。
【００１３】
この詳細な説明は、本願明細書の動作を実行する装置にも関する。この装置は、所要の目的のために特に構成されても良く、又はコンピュータに格納されたコンピュータプログラムにより選択的に起動され又は再構成される汎用目的コンピュータを有しても良い。このようなコンピュータプログラムは、フロッピディスク、光ディスク、ＣＤ−ＲＯＭ及び磁気ディスクを含む任意の種類のディスク、ＲＯＭ（read−only  memory）、ＲＡＭ（random  access  memory）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気若しくは光カード、不揮発性メモリを有するＵＳＢキーを含むフラッシュメモリ、又は電子命令を格納するのに適する任意の種類の媒体のような、各々がコンピュータシステムバスに結合された、しかしこれらに限定されないコンピュータ可読記憶媒体に格納されても良い。
【００１４】
幾つかの実施形態は、完全なハードウェアの実施形態、完全なソフトウェアの実施形態又はハードウェアとソフトウェア要素の両方を含む実施形態の形式を取り得る。好適な実施形態は、ファームウェア、常駐ソフトウェア、マイクロコード等を含むがこれらに限定されないソフトウェアで実装されても良い。
【００１５】
さらに、幾つかの実施形態は、コンピュータ又は任意の命令実行システムにより又はそれと関連して使用するためのプログラムコードを提供するコンピュータにより使用可能な又はコンピュータにより読み取り可能な媒体からアクセス可能なコンピュータプログラムプロダクトの形式を取り得る。本発明の目的のために、コンピュータにより使用可能な又はコンピュータにより読み取り可能な媒体は、命令実行システム、機器又は装置により若しくはそれらと関連して使用するためのプログラムを有し、格納し、通信し、伝達し又は転送することが可能な任意の機器であっても良い。
【００１６】
プログラムコードを格納し及び／又は実行するのに適するデータ処理システムは、システムバスを通じてメモリ要素に直接又は間接に結合される少なくとも１つのプロセッサを有しても良い。メモリ要素は、プログラムコードの実際の実行中に用いられるローカルメモリ、大容量記憶装置、及び実行中にコードが大容量記憶装置から読み出されなければならない回数を低減するために少なくとも特定のプログラムコードの一時的記憶を提供するキャッシュメモリを含み得る。入力／出力又はＩ／Ｏ装置（キーボード、ディスプレイ、ポインティングデバイス等を含むがこれらに限定されない）は、直接に又は介入するＩ／Ｏ制御部を通じてシステムに結合され得る。
【００１７】
ネットワークアダプタも、介入する私設若しくは公衆ネットワークを通じてデータ処理システムを他のデータ処理システムに又は遠隔プリンタ若しくは記憶装置に結合するために、システムに結合されても良い。モデム、ケーブルモデム及びEthernet（登録商標）カードは、現在利用可能な種類のネットワークアダプタのうちの少数の例に過ぎない。
【００１８】
最後に、本願明細書で提示されるアルゴリズム及びディスプレイは、本質的に、任意の特定のコンピュータ又は他の機器にも関連しない。種々の汎用システムが、本願明細書の教示に従ってプログラムと共に用いられても良く、所要の方法ステップを実行するために更に特定の装置を構成することが都合が良いことがあり得る。種々のこれらのシステムの所要の構造は、以下の説明から明らかである。さらに、本願明細書は、任意の特定のプログラミング言語を参照して記載されない。理解されるべきことに、種々のプログラミング言語が、本願明細書に記載された種々の実施形態の教示を実施するために用いられても良い。
【００１９】
＜システム概要＞
図１は、共同セッションに文書を公平に追加するストローク共有サーバを実装するシステム１００の上位ブロック図を示す。システム１００の図示の実施形態は、ユーザ装置１０２ａ−１０２ｎ、共同コンピューティング装置１０３ａ−１０３ｎ、ネットワーク１０４、ストローク共有サーバ１０１を有する。図１及びその他の図では、参照符号の後の文字は、例えば「１０２ａ」は、特定の参照符号を有する要素への参照である。文章中の、後続の文字を有しない参照符号、例えば「１０２」は、その参照符号を付された要素の任意の又は全ての例への全般的な参照である。
【００２０】
ネットワーク１０４は、従来型の有線又は無線であり、スター型、トークンリング型又は当業者に知られている他の構成のような任意の数の構成を有しても良い。さらに、ネットワーク１０４は、ＬＡＮ（local  area  network）、ＷＡＮ（wide  area  network）（例えば、インターネット）、及び／又は複数のサービスが通信できる任意の他の相互接続されたデータ経路を有しても良い。更に別の実施形態では、ネットワーク１０４は、ピアツーピアネットワークであっても良い。ネットワーク１０４は、種々の異なる通信プロトコルでデータを送信する通信ネットワークの一部に結合され又はそれを含んでも良い。更に別の実施形態では、ネットワーク１０４は、Ｂｌｕｅｔｏｏｔｈ（登録商標）通信ネットワーク又はＳＭＳ（short  messaging  service）、ＭＭＳ（multimedia  messaging  service）、ＨＴＴＰ（hypertext  transfer  protocol）、直接データ接続、ＷＡＰ、電子メール等を介してデータを送信及び受信するセルラ通信ネットワークを有しても良い。１つのネットワーク１０４のみが複数のユーザ装置１０２ａ−１０２ｎ、複数の共同コンピューティング装置１０３ａ−１０３ｎ、ストローク共有サーバ１０１に結合されて示されるが、実際には、任意の数のネットワーク１０４がこれらのエンティティに接続できる。
【００２１】
ユーザ装置１０２ａ−１０２ｎは、特定ユーザに関連付けられた装置である。例えば、会社は、自身の従業員にモバイル装置又はラップトップを供給する。ユーザ装置１０２ａ−１０２ｎの各々は、それぞれ信号線１１２ａ−１１２ｎを介してネットワーク１０４に結合される。ユーザ装置１０２は、メモリ、プロセッサ及び通信能力を有する任意のコンピューティング装置である。例えば、ユーザ装置１０２は、タブレットコンピュータ、パーソナルデジタルアシスタント、スマートフォン、フューチャフォン等であり得る。ユーザ装置１０２は、無線で又は有線接続を通じてネットワーク１０４と通信できる。ユーザ装置１０２は、ストローク共有サーバ１０１により処理されるべきメッセージを生成する１又は複数のユーザアプリケーション（図示しない）を有する。
【００２２】
ユーザ装置１０２は、データをストローク共有サーバ１０１へ送信し及びそれから受信するよう適応される。例えば、ユーザ装置１０２は、プレゼンテーションプログラム文書の画像を複数の共同コンピューティング装置１０３ａ−１０３ｎ及び／又はユーザ装置１０２ａ−１０２ｎのうちの少なくとも１つで投影するコマンドを、ストローク共有サーバ１０１へ送信する。ユーザ装置１０２は、ストローク共有サーバ１０１により提供される情報を閲覧するためのディスプレイを有する。
【００２３】
一実施形態では、共同コンピューティング装置１０３ａ−１０３ｎは、特定の位置及び／又は特定の機能を関連付けられた装置である。共同コンピューティング装置１０３ａ−１０３ｎは、会議室に割り当てられ、又は会議に割り当てられ得る。例えば、プロジェクタ及び対話型ホワイトボードは、ビル内の複数の会議室のうち選択された会議室に割り当てられ得る。共同コンピューティング装置１０３ａ−１０３ｎの各々は、それぞれ信号線１１３ａ−１１３ｎを介してネットワーク１０４に結合される。共同コンピューティング装置１０３は、メモリ及びプロセッサを有する任意のコンピューティング装置であっても良い。例えば、共同コンピューティング装置１０３は、プロジェクタ、モニタ、テレビジョン、対話型ホワイトボード、ウェブカメラ、マイクロフォン、ラウドスピーカ、ＣＤ／ＤＶＤプレイヤ、電子ペーパ装置、電子リーダ、デスクトップコンピュータ、タブレット、スマートフォン等であり得る。
【００２４】
共同コンピューティング装置１０３は、データをストローク共有サーバ１０１へ送信し及びそれから受信するよう適応される。例えば、会議室内のプロジェクタは、ストローク共有サーバ１０１からプレゼンテーションプログラム文書を受信できる。
【００２５】
ストローク共有サーバ１０１は、メモリ及びプロセッサを有する任意のコンピューティング装置であり、信号線１１６を介してネットワーク１０４に接続されても良い。種々の実施形態では、「ストローク」（ユーザ装置１０２又は共同コンピューティング装置１０３でユーザにより行われたマーク）、画像／スクリーン、テキスト、文書、及びオーディオ及び／又はビデオ会議を共有することに基づく豊富な対話型ホワイトボード型の相互作用で、ストローク共有サーバ１０１は、同じ部屋にいる人々及び異なる場所にいる人々の間の協調を支援するよう構成される。共同セッションは、本願明細書では「会議」としても参照され得る。ストローク共有サーバ１０１は、文書及び会議のためのＡＰＩ、オーディオミキシング（オーディオ会議サーバ）、ストローク共有プロトコル、ウェブブラウザを用いるクライアントのためのサポート、アカウントを提供し、制御部によりキャプチャされたスクリーンを共有する。ストローク共有サーバ１０１は、図２を参照して以下に詳述される。
【００２６】
ユーザ装置１０２ａ−１０２ｎ又は共同コンピューティング装置１０３ａ―１０３ｎは、特定の通信プロトコルを介して特定のメッセージングフォーマットを用いて、ストローク共有サーバ１０１を通じて互いに通信し及びサービス要求を送信する。メッセージフォーマットは、メッセージの構造及び形式を定める。例えば、メッセージフォーマットは、ＸＭＰＰ（eXtensible  Messaging  and  Presence  Protocol）、ＳＯＡＰ（Simple  Object  Access  Protocol）、ＸＭＬ（eXtensible  Markup  Language）、ＳＩＰ（Session  Initiation  Protocol）、等を有する。通信プロトコルは、シンタックス、セマンティクス、及び通信の同期を規定するルールセットを定める。例えば、通信プロトコルは、ＸＭＰＰ（eXtensible  Messaging  and  Presence  Protocol）、ＳＩＰ（Session  Initiation  Protocol）、ＦＴＰ（File  Transfer  Protocol）、ＨＴＴＰ（Hypertext  Transfer  Protocol）、ＭＱ（Message  Queue）、ＨＯＰ（Internet  Inter−Orb  Protocol）等を有する。
【００２７】
＜ストローク共有サーバ＞
図２を参照すると、ストローク共有サーバ１０１の一例がより詳細に示される。ストローク共有サーバは、会議の生成／管理、文書のインポート／エクスポート／管理、並びに、ユーザ装置１０２及び共同コンピューティング装置１０３のようなクライアントに正しい情報を調達するためにＸＭＰＰのようなメッセージングプロトコルの使用を担う。図２は、ストローク共有サーバ１０１のブロック図である。ストローク共有サーバ１０１は、プロセッサ２４０、メモリ２４５、通信ユニット２５０、ＨＴＴＰ／ＨＴＴＰＳサーバ２０１、ＸＭＰＰサーバ２０３、マスタコンポーネント２０５、オーディオ会議サーバ２０７、データベース２０９を有する。
【００２８】
プロセッサ２４０、メモリ２４５、通信ユニット２５０及びデータ記憶装置２５５は、バス２２０に通信可能に結合される。バス２２０は、ＩＳＡ（industry  standard  architecture）バス、ＰＣＩ（peripheral  component  interconnect）バス、ＵＳＢ（universal  serial  bus）又は同様の機能を提供する従来知られている特定の他のバスを含む１又は複数のバスを表しても良い。
【００２９】
プロセッサ２４０は、論理演算ユニット、マイクロプロセッサ、汎用制御部、又は計算を実行しディスプレイ装置に電子表示信号を提供する特定の他のプロセッサアレイを有する。プロセッサ２４０は、信号線２３１を介してサーバ１０１の他のコンポーネントと通信するためにバス２２０に結合される。プロセッサ２４０は、データ信号を処理し、ＣＩＳＣ（complex  instruction  set  computer）アーキテクチャ、ＲＩＳＣ（reduced  instruction  set  computer）アーキテクチャ、又は命令セットの組合せを実施するアーキテクチャを含む種々のコンピューティングアーキテクチャを有しても良い。図２には単一のプロセッサのみを示したが、複数のプロセッサが含まれても良い。処理能力は、画像表示のサポート、画像のキャプチャ及び送信に限られても良い。処理能力は、種々の種類の特徴抽出及びサンプリングを含むより複雑なタスクを実行するために十分であっても良い。当業者には、他のプロセッサ、オペレーティングシステム、センサ、ディスプレイ、物理的構成が可能であることが明らかである。
【００３０】
メモリ２４５は、プロセッサ２４０により実行され得る命令及び／又はデータを格納する。メモリ２４５は、信号線２３３を介してサーバ１０１の他のコンポーネントと通信するためにバス２２０に結合される。命令及び／又はデータは、本願明細書に記載した技術のいずれか及び／又は全てを実行するコードを有しても良い。メモリ２４５は、ＤＲＡＭ（dynamic  random  access  memory）素子、ＳＲＡＭ（static  random  access  memory）素子、フラッシュメモリ又は従来知られている特定の他のメモリ素子であっても良い。一実施形態では、メモリ２４５は、不揮発性メモリ、又は同様の永久記憶装置、及び媒体ハードディスクドライブ、フロッピディスクドライブ、ＣＤ−ＲＯＭ装置、ＤＶＤ−ＲＯＭ装置、ＤＶＤ−ＲＡＭ装置、ＤＶＤ−ＲＷ装置、フラッシュメモリ装置又は従来知られているより永久的に情報を格納する特定の他の大容量記憶装置のような媒体も含む。
【００３１】
通信ユニット２５０は、プロセッサ２４０に接続することにより、ネットワーク１０４及び他の処理システムからデータを受信し及びそれへ送信するハードウェアである。通信ユニット２５０は、画像、ビデオ又は文書のようなデータを、複数のユーザ装置１０２ａ−１０２ｎ及び／又は共同コンピューティング装置１０３ａ−１０３ｎから受信する。通信ユニット２５０は、複数のユーザ装置１０２ａ−１０２ｎ及び／又は共同コンピューティング装置１０３ａ−１０３ｎへ情報を送信する。例えば、通信ユニット２５０は、ストローク、画像、文書又はビデオを表示するためのグラフィカルデータを送信する。通信ユニット２５０は、信号線２３５を介してサーバ１０１の他のコンポーネントと通信するためにバス２２０に結合される。
【００３２】
一実施形態では、通信ユニット２５０は、ユーザ装置１０２、共同コンピューティング装置１０３、又は別の通信チャネルへの直接物理接続のためのポートを有する。例えば、通信ユニット２５０は、ユーザ装置１０２又は共同コンピューティング装置１０３との有線通信のために、ＲＪ１４又はＴ５６８Ａ若しくはＴ５６８Ｂ又は同様のポートを有する。別の実施形態では、通信ユニット２５０は、ＩＥＥＥ８０２．１１、ＩＥＥＥ８０２．１６、Ｂｌｕｅｔｏｏｔｈ（登録商標）又は別の適切な無線通信方法のような１又は複数の無線通信方法を用いて、ユーザ装置１０２又は任意の他の通信チャネルとデータを交換するために無線通信機を有する。
【００３３】
更に別の実施形態では、通信ユニット２５０は、ＳＭＳ（short  messaging  service）、ＭＭＳ（multimedia  messaging  service）、ＨＴＴＰ（hypertext  transfer  protocol）、直接データ接続、ＷＡＰ、電子メール又は他の適切な種類の電子通信等を介してセルラネットワークでデータを送信及び受信するセルラ通信トランシーバを有する。更に別の実施形態では、通信ユニット２５０は、有線ポート及び無線通信機を有する。通信ユニット２５０は、当業者に理解されるように、ＴＣＰ／ＩＰ、ＸＭＰＰ、ＦＴＰ、ＨＴＴＰ、ＨＴＴＰＳ及びＳＭＴＰのような標準的ネットワークプロトコルを用いてファイル及び／又はメディアオブジェクトを配信するために、ネットワークへの他の従来型接続も提供する。
【００３４】
データ記憶２５５は、ストローク共有サーバ１０１の機能のためにデータを格納する非一時的メモリである。データ記憶２５５は、信号線２３７を介してサーバ１０１の他のコンポーネントと通信するためにバス２２０に結合される。
【００３５】
一実施形態では、データ記憶２５５は、プロトコル変換のために通信プロトコル及びメッセージフォーマットのライブラリを格納する。データ記憶２５５が格納する通信プロトコル及びメッセージフォーマットは、例えば、ＸＭＰＰ（eXtensible  Messaging  and  Presence  Protocol）、ＳＯＡＰ（Simple  Object  Access  Protocol）、ＸＭＬ（eXtensible  Markup  Language）、ＪＭＳ（Java（登録商標）  Message  Service）、ＦＴＰ（File  Transfer  Protocol）、ＨＴＴＰ（Hypertext  Transfer  Protocol）、ＭＱ（Message  Queue）、ＨＯＰ（Internet  Inter−Orb  Protocol）、ＲＥＳＴ（Representational  State  Transfer）、ＪＳＯＮ（JavaScript（登録商標）  Object  Notation）、ＤＣＯＭ（Distributed  Component  Object  Model）、ＳＮＭＰ（Simple  Network  Management  Protocol）等を含む。幾つかの実施形態では、プロトコル適応エンジンは、プロトコル及びメッセージフォーマットにアクセスし、受信側と互換性のあるプロトコル及びメッセージフォーマットに要求を変換する。
【００３６】
ＨＴＴＰ／ＨＴＴＰＳサーバ２０１は、一実施形態では、ＷｅｂＤＡＶ（Web  Distribution  Authoring  and  Versioning）サポート、及びＨＴＴＰ／ＨＴＴＰＳリバースプロキシサーバを有しても良い。一実施形態では、ＨＴＴＰ／ＨＴＴＰＳサーバはnginxサーバであっても良いが、他のＨＴＴＰ／ＨＴＴＰＳサーバも用いることができる。ＨＴＴＰ／ＨＴＴＰＳは、ユーザ装置１０２及び共同コンピューティング装置１０３のようなクライアント装置と、ストローク共有サーバ１０１との間の通信を提供する。ＨＴＴＰ／ＨＴＴＰＳサーバ２０１は、信号線２２２を介してサーバ１０１の他のコンポーネントと通信するためにバス２２０に結合される。
【００３７】
オーディオ会議サーバ２０７は、オーディオ会議、例えばＳＩＰ（Session  Initiation  Protocol）により開始されるオーディオ会議をサポートし、種々の実施形態ではＳＩＰ登録サーバ及びＳＩＰプロキシと共に用いられる。オーディオ会議サーバ２０７は、信号線２２４を介してサーバ１０１の他のコンポーネントと通信するためにバス２２０に結合される。
【００３８】
一実施形態では、データベース２０９は、会議及び文書の全ての情報を格納する。データベースは、種々の知られているデータベースのうちの任意のもの、例えばＳＱＬ、ＮｏＳＱＬ、等であっても良い。データベース２０９は、信号線２２６を介してサーバ１０１の他のコンポーネントと通信するためにバス２２０に結合される。
【００３９】
ＸＭＰＰサーバ２０３は、ユーザ装置１０２及び共同コンピューティング装置１０３及びマスタコンポーネント２０５のようなクライアント装置間でメッセージをルーティングする。ＸＭＰＰサーバ２０３機能は、アカウント及び名簿（連絡先／友達リスト／友人）、存在（ユーザがオンライン又はオフラインである）、及びセキュリティを有する。一実施形態では、ＸＭＰＰサーバはejabberdであり得る。別の実施形態では、ＸＭＰＰサーバはOpenfireであり得る。他の実施形態では、他のＸＭＰＰサーバが用いられ得る。ＸＭＰＰサーバ２０３は、信号線２２３を介してサーバ１０１の他のコンポーネントと通信するためにバス２２０に結合される。
【００４０】
マスタコンポーネント２０５は、ストローク共有プロトコルを実装し、会議のための通信の中央当局である。一実施形態では、マスタコンポーネント２０５は、クライアントにより表示されるべきもののフラグメントを定めるＳＶＧ（Scalable  Vector  Graphics）等を含むＸＭＬコマンドを用いてクライアントに変化を伝達する。フラグメントは、ストローク、テキスト、画像、空白ページ、文書、等であっても良い。会議は複数の文書を有しても良く、文書は複数のページを有し得る。一実施形態では、マスタコンポーネントは、ＸＭＰＰコンポーネントとして実装され、ＸＭＰＰコンポーネントプロトコルを用いてＸＭＰＰサーバ２０３と通信する。マスタコンポーネント２０５は、信号線２２７を介してサーバ１０１の他のコンポーネントと通信するためにバス２２０に結合される。
【００４１】
代替の実施形態では、マスタコンポーネント２０５は、ＸＭＰＰサーバ２０３へのプラグインとして実装される。
【００４２】
マスタコンポーネント２０５が会議に文書を追加するとき、文書を配信するために用いられる帯域幅（例えば、５０ｋバイト／秒）を制限して、全てのクライアント（例えば、制限された帯域幅を有するクライアント）が良好なユーザ経験を有するようにすることは有利である。帯域幅の制限は、３Ｇのような限られた帯域幅接続、転送されるデータ量に関連するコストを有する接続、及びサーバ帯域幅を制限する要求の場合に特に有利である。
【００４３】
マスタコンポーネント２０５により実装されるストローク共有プロトコルを用いて、文書は、小さな断片（つまり、「ストローク」）でクライアント装置（例えば、装置１０２及び１０３）の各々に配信される。一実施形態では、断片は５０ｋバイトより小さい。別の実施形態では、断片はそれぞれ４乃至８ｋバイトの範囲である。ストローク共有プロトコルは、使用される帯域幅を制限するために断片の各々の送信と送信の間の遅延を定め、複数の会議の間で公平なサーバ使用及び帯域幅を可能にする。
【００４４】
一実施形態では、文書が画像を有する場合、画像は解体されページデータの残りの部分と同じ方法で送信されても良く、又は画像のサイズに依存して異なるチャネルでクライアント装置１０２及び１０３の各々へ送信されても良い。例えば、画像が非常に小さな画像（例えば、８ｋバイト以下）である場合、画像は、ストロークデータに解体され、ストローク共有プロトコルを用いて送信されても良い。しかしながら、画像が大きい場合、画像は、異なる技術（例えば、遅延読み込み）を用いて別個のチャネルでクライアント装置へ送信されても良い。
【００４５】
＜グローバルイベントハンドラ＞
図３は、ストローク共有サーバのマスタコンポーネント２０５の一実施形態を示すブロック図である。マスタコンポーネント２０５は、サーバに登録された各会議の会議データ３０５ａ−３０５ｎを格納し処理する。各会議データは、クライアント装置１０２及び１０３と通信するためにマスタコンポーネント２０５により用いられるイベントを処理するために、対応する会議毎キュー３０３ａ−３０３ｎを有する。マスタコンポーネント２０５は、会議毎キュー３０３内のイベントを処理し、クライアント装置に配信するためにイベントをグローバルキュー３０１に配置する。この処理は、図４及び図５を参照して以下に詳述する。
【００４６】
図４及び５参照して、本願明細書で紹介される技術の方法の種々の例示的な実施形態を説明する。図４は、ストローク共有サーバのマスタコンポーネントにより会議に文書を追加する方法４００の一実施形態のフロー図である。４０２で、マスタコンポーネント２０５は、会議に文書を追加する要求を受信する。一実施形態では、要求は、マスタコンポーネントへのＡＰＩ呼び出しであっても良い。例えば、EditMeeting  API呼び出しは、会議に追加されるべき文書を列挙するmoreFiles  inputパラメータを有し得る。
【００４７】
４０４で、マスタコンポーネント２０５は、送信するために文書を断片に解体する。４０６で、EditMeeting  API呼び出しに基づき、マスタコンポーネント２０５は、「文書追加（add  document）」イベントを生成する。文書は、１又は複数のページ及び任意で文書ヘッダデータである。ページはヘッダデータ及びストロークデータである。文書ヘッダデータの一例は、文書のタイトル、ページ順序、等である。一実施形態では、文書ヘッダデータは最初のページのページヘッダに含まれるので、文書断片はペ―ジヘッダデータ及びストロークデータである。別の実施形態では、文書断片は、文書ヘッダデータ、ページヘッダデータ、及びストロークデータである。ストロークデータは、文書のページのコンテンツを構成する線、曲線、軌道、多角形、画像、又はテキストであっても良い。一実施形態では、ストロークデータは、ＳＶＧシンタックスにおける任意の描画コマンド又は複数の描画コマンドであっても良い。４０８で、マスタコンポーネント２０５は、ＡＰＩ呼び出しで指定された現在の会議の会議毎キュー３０３に「文書追加（add  document）」イベントを追加する。一実施形態では、既に会議毎キューが存在する場合、マスタコンポーネント２０５は既存のキューにイベントを追加する。その他の場合、マスタコンポーネント２０５は、会議の会議毎キュー３０３を生成し、該会議毎キューにイベントを追加する。
【００４８】
４１０で、マスタコンポーネント２０５は、会議毎キューにその後に追加された任意の他のイベントと共に「文書追加（add  document）」イベントを処理し、次にキューを破棄する。
【００４９】
図５は、会議毎キュー内のイベントを処理する方法４０８の一実施形態のフロー図である。「文書追加（add  document）」イベントが会議毎キューの一番上に達すると、５０２で、マスタコンポーネント２０５は、送信すべきページヘッダデータが存在するか否かを決定することにより、該イベントを処理する。送信すべきページヘッダデータが存在する場合、マスタコンポーネント２０５は、５０４で１つのヘッダをグローバルキュー３０１に追加し、５０６で送信したデータのサイズ及び最小ネットワーク帯域幅に基づき遅延を計算する。一実施形態では、遅延は、０．０２秒の長さであり、データサイズ（ｋバイト）／５１２００である。一実施形態では、遅延は、トークンバケットアルゴリズムを用いて計算されても良い。グローバルキュー３０１に追加されると、データは、ＦＩＦＯ順序で会議のためにクライアント装置１０２及び１０３へ送信される。一実施形態では、マスタコンポーネント２０５は、グローバルキュー３０１を処理し、ＸＭＰＰサーバ２０３へデータを送信し、データを受信するのに応答して、ＸＭＰＰサーバはクライアント装置１０２及び１０３の各々へデータを送信する。マスタコンポーネント２０５は、５０８で、計算された遅延の量だけ待機し、５１８で会議毎キューに新しいイベントを入れる。この新しいイベントは、処理されると、送信すべきヘッダデータが存在しなくなるまで（５０２−Ｎｏ）、グローバルキューにヘッダデータを追加し続ける。
【００５０】
５１０で、マスタコンポーネント２０５は、クライアント装置１０２及び１０３へ送信すべき「文書追加（add  document）」に関連するストロークデータが存在するかどうかを決定する。ストロークデータが存在する場合、５１２で、マスタコンポーネント２０５はページ転送が未完了かどうかを決定する。特定のページからのストロークデータが既にグローバルキューに追加されているが、グローバルキューに追加すべきストロークデータが未だ残っているとき、ページ転送は未完了である。ページ転送が未完了である場合、５１４で、該ページのストロークデータは、マスタコンポーネント２０５によりグローバルキュー３０１に追加される。ストロークデータがグローバルキューに追加された後、５０６で、マスタコンポーネントは、送信したデータのサイズ及び最小ネットワーク帯域幅に基づき遅延を計算する。マスタコンポーネント２０５は、５０８で、計算した遅延の量だけ待機し、５１８で会議毎キューに新しいイベントを入れる。この新しいイベントは、処理されると、ページが完全に送信されるまで処理を繰り返す。５１２でマスタコンポーネント２０５がページ転送は未完了ではないと決定する場合、５１６で、マスタコンポーネント２０５は、どのページからグローバルキューにストロークデータを追加するかを選択する。一実施形態では、マスタコンポーネント２０５は、最も多数のクライアント装置で現在閲覧されているページを選択する。一実施形態では、タイのイベントで、ページ順序で最初に現れるページが送信されても良い。５１４で、ストロークデータはグローバルキューに追加される。５０６で遅延が計算され、マスタコンポーネント２０５は、該遅延だけ待機し、会議毎キューに新しいイベントを入れる。処理は、５１０で文書のストロークデータがもはや存在しなくなるまで繰り返し、そして処理は終了しても良い。
【００５１】
５０８でマスタコンポーネント２０５は待機しているが、クライアント装置からの新しいストロークイベントのような他のイベントは、会議毎キューに入れられても良い。システムでは、複数の会議が同時に生じているとき、マスタコンポーネントが５０８で第２の会議を待機している間、第１の会議からのイベントはグローバルキュー３０１に入れられても良い。
【００５２】
以上の実施形態の説明は、説明及び解説を目的としている。上述の記載は、網羅的であること又は本願明細書を開示の特定の形式に限定することを意図しない。上述の教示に照らして多くの修正及び変形が可能である。実施形態の範囲はこの詳細な説明に限定されず、本願の特許請求の範囲により定められる。当業者により理解されるように、種々の例が、本発明の精神又は基本的特徴から逸脱することなく他の特定の形式で実施できる。同様に、モジュール、ルーチン、特徴、属性、方法及び他の態様の特定の名称及び区分は、必須でも重要でもなく、明細書及びその特徴を実施するメカニズムは、異なる名称、区分及び／又はフォーマットを有しても良い。さらに、当業者に明らかなように、本願明細書のモジュール、ルーチン、特徴、属性、方法は、ソフトウェア、ファームウェア、又それらの任意の組合せで実装できる。また、本願明細書の例えばモジュールであるコンポーネントがソフトウェアとして実装されるときは、コンポーネントは、スタンドアロンプログラム、大規模プログラムの一部、複数の別個のプログラム、静的又は動的リンクライブラリ、カーネルローダブルモジュール、デバイスドライバとして、及び／又はコンピュータプログラミングの当業者に現在知られている若しくは将来知られる如何なる他の方法でも実装され得る。さらに、本願明細書は、特定プログラミング言語、又は特定のオペレーティングシステム若しくは環境での実装に限定されない。したがって、本開示は、限定ではなく、本願明細書の範囲の説明を目的とする。
【符号の説明】
【００５３】
１０１  ストローク共有サーバ
１０２  ユーザ装置
１０３  共同コンピューティング装置
１０４  ネットワーク
１１２、１１３、１１６  信号線
２０１  ＨＴＴＰ／ＨＴＴＰＳサーバ
２０３  ＸＭＰＰサーバ
２０５  マスタコンポーネント
２０７  オーディオ会議サーバ
２０９  データベース
２２０  バス
２４０  プロセッサ
２４５  メモリ
２５０  通信ユニット
２５５  データ記憶装置
３０１  グローバルキュー
３０３  会議毎キュー
３０５  会議データ
【図１】
2015170360.tif 000003
【図２】
2015170360.tif 000004
【図３】
2015170360.tif 000005
【図４】
2015170360.tif 000006
【図５】
2015170360.tif 000007