<システムの全体構成の一例>
以下、図面を参照して、実施形態について説明する。図1は、実施形態のシステムの一例を示している。システム1は、複数の端末2A〜2Z(以下、総称して端末2と称することもある)とサーバ3とを有する。図1のシステム1は一例であり、システム1は、図1の例には限定されない。
端末2には、任意の情報処理装置を適用してもよい。例えば、端末2は、パーソナルコンピュータやテレビ、プロジェクタ、ヘッドマウントディスプレイ、スマートフォン、タブレット端末等を適用してもよい。端末2は、操作支援装置の一例である。
端末2A〜2Zには、表示装置4A〜4Zが接続されている。また、端末2Aには入力装置5Aが接続されている。端末2Aを操作するユーザは、入力装置5Aを用いて、端末2Aに対して操作を行う。
端末2Bには入力装置が接続されていない。例えば、表示装置4Bがタッチパネルディスプレイの場合、表示装置4Bが入力装置の機能を果たす。端末2Zと入力装置5Zとの間は、近距離無線通信が可能である。ユーザは、入力装置5Zを用いて、端末2Zに対して操作を行う。
システム1は、2つ以上の端末2を有する。システム1が有する端末2の数は任意の数であってよい。また、端末2、表示装置4および入力装置5の関係は、図1の例には限定されない。
各端末2とサーバ3との間は、ネットワーク5により接続されている。ネットワーク5は、例えばLocal Area Network(LAN)等であってもよい。ネットワーク5はLANには限定されない。例えば、ネットワーク5は専用回線等であってもよい。
サーバ3にはデータベース6が接続されている。実施形態では、データベース6は、文書に関する文書データを記憶する。データベース6は、1以上の文書データを記憶する。文書データは、データの一例である。データは、文書データ以外のデータであってもよい。例えば、ウェブページや静止画、動画、Computer Aided Design(CAD)等のデータであってもよい。
サーバ3は、同期制御部11と文書データ取得部12と文書データ更新部13とサーバ通信部14とを備える。同期制御部11は、複数の端末2が記憶する文書データの同期を制御する。
文書データ取得部12は、データベース6から所定の文書データを取得する。文書データ更新部13は、データベース6に記憶されている所定の文書データの内容を更新する。サーバ通信部14は、各端末2と通信を行う。
文書データ取得部12は、各端末2からの要求に基づいて、文書データをデータベース6から取得する。文書データ更新部13は、端末2からの要求に基づいてデータベース6の文書データを更新または削除する。
システム1は、サーバ3を有しなくてもよい。図2は、サーバ3を有しない場合のシステム1の一例を示している。図2の例の場合、データベース6はネットワーク5に接続されている。この場合、各端末2のうち何れかの端末2が、図1のサーバ3の各部の機能を持つ。
各端末2は、ネットワーク5を介して、データベース6から文書データを取得することができる。また、各端末2は、ネットワーク5を介して、データベース6に記憶されている文書データを更新することができる。
<端末の一例>
図3は、端末2の一例を示している。図3の端末2には、表示装置4と入力装置5とが接続されている。表示装置4は表示部の一例である。端末2は、文書同期部21と操作判定部22と操作情報取得部23と競合判定部24と影響判定部25と記憶部26と仮統合部27と仮文書データ表示部28と端末通信部29とを備える。
以下、2台の端末2を想定して説明する場合がある。端末2Aは、ユーザが操作する端末2である。端末2Bは、他のユーザが操作する他の端末2である。端末2が3台以上の場合には、端末2Aがユーザの端末2になり、端末2A以外の2台以上の端末2が他の端末2になる。
文書同期部21は、自身の端末2の文書データと他の端末2の文書データとを同期させる。文書同期部21は、サーバ3の同期制御部11に対して要求することで、文書データの同期を行う。サーバ3の同期制御部11は、文書同期部21からの要求に応じて、各端末2の文書データを同期させる。これにより、各端末2の間で文書データの一貫性をとることができる。文書同期部21は、同期部の一例である。
図2の例のようにシステム1がサーバ3を有していない場合、文書同期部21は、同期制御部11の機能を持つ端末2に対して要求することで、文書データの同期を行う。
文書データの同期が行われるときには、端末2の間または端末2とサーバ3との間で通信が行われる。この通信の手法は特に限定されない。実施形態では、同期制御部11が文書データの同期の制御を行っているが、この例には限定されない。
操作判定部22は、端末2の文書データが編集中であるか否かを判定する。文書データは1以上のオブジェクトを含む。文書データの中でオブジェクトは操作可能なデータである。操作判定部22は、文書データに含まれるオブジェクトに対して操作が行われているか否かを判定する。例えば、文書データに含まれるオブジェクトに対する編集は、操作の一例である。
オブジェクトは、1つの塊となるデータである。文書データに含まれるオブジェクトは任意のデータであってよい。例えば、オブジェクトは、文書に付される付箋や文の段落、画像、表、表のセル、テキストボックス、図形等であってよい。
オブジェクトは属性を有する。オブジェクトの属性には、オブジェクトの内容や書式、位置、大きさ等がある。例えば、操作判定部22は、オブジェクトに対するカーソル位置や文字入力、クリック、タッチ等の状態に関する条件に基づいて、文書データを編集中であるか否かを判定してもよい。
例えば、操作判定部22は、オブジェクトに対してドラッグ操作が行われているときに文書データが編集中であると判定してもよい。また、操作判定部22は、オブジェクトを選択して所定時間以内であるときに、文書データが編集中であると判定してもよい。
また、操作判定部22は、オブジェクトに対して文字の入力または削除が行われてから所定時間以内であるときに、文書データが編集中であると判定してもよい。また、操作判定部22は、オブジェクトの書式が変更されてから所定時間以内であるときに、文書データが編集中であると判定してもよい。
また、操作判定部22は、文書データに含まれる1以上のオブジェクトに対して操作が行われているときに何れのオブジェクトに対して操作が行われているかを特定する。オブジェクトに対する操作は、入力装置5により行われる。このため、操作判定部22は、入力装置5による操作に基づいて、オブジェクトの特定を行ってもよい。
実施形態では、操作判定部22は、1以上のオブジェクトに対して操作が行われているときに、何れのオブジェクトに対して操作が行われているか否かを特定している。ただし、操作が行われているオブジェクトを特定する機能は、操作判定部22ではなく、別途に設けられていてもよい。
操作情報取得部23は、ユーザの端末2Aが文書データに対して操作を行っているときに、端末2Bが同一の文書データに対して操作している場合、他の端末2Bが操作している内容を示す情報を取得する。この情報を、操作情報と称する。操作情報は、操作されたオブジェクトの情報と該オブジェクトに対して行われた操作の内容を示す情報とを含む。
なお、上記の同一の文書データは、論理的に同一の文書データであることを示す。端末2Aと端末2Bとは異なる装置であり、端末2Aの文書データと端末2Bの文書データとは物理的には異なる。
ただし、端末2Aの文書データと端末2Bの文書データとは文書同期部21およびサーバ3の同期制御部11により同期されているため、論理的には同一の文書データである。以下、物理的には異なっていても、論理的に同一の文書データを同一の文書データと称する。
ユーザの端末2Aが文書データに対して行う操作を第1の操作とし、端末2Aの文書データに同期する文書データに対して他の端末2Bが行う操作を第2の操作とする。また、第1の操作に関する情報を第1の操作情報とし、第2の操作に関する情報を第2の操作情報とする。
競合判定部24は、自身の端末2Aと他の端末2Bとが同一のオブジェクトを操作しているときに、操作が競合するか否かを判定する。例えば、同一のオブジェクトに対する操作の順序によって操作結果が変わるときに、操作は競合すると判定してもよい。なお、同一のオブジェクトとは、上述した文書データと同様に、論理的に同一のオブジェクトのことである。
例えば、自身の端末2Aと他の端末2Bとが同時に同一のオブジェクトの色を変更する操作の場合、最後に操作を終了した端末で変更した色が採用されるという前提においては、自身の端末2Aと他の端末2Bとで色を変更する順序によって、該オブジェクトの色の変更の結果が異なる。この場合、競合判定部24は、操作が競合すると判定する。
なお、上記の前提において、操作が競合する場合、最初にオブジェクトに対して行った操作は無効になる。このため、オブジェクトに対する操作の効率性が低下する可能性がある。
一方、自身の端末2Aと他の端末2Bとが同時に同一のオブジェクトの操作を行った場合であっても、操作が競合しない場合がある。例えば、自身の端末2Aがオブジェクトに対して位置の変更を行い、且つ他の端末2Bが同一のオブジェクトに対して色の変更を行う場合、操作の順序にかかわらず、操作を行った結果は同じになるため、操作は競合しない。
オブジェクトは複数の属性を持つ。上記の場合、オブジェクトの位置と色とは異なる属性であり、それぞれの属性は独立である。よって、自身の端末2Aと他の端末2Bとが同じオブジェクトに対して位置の変更と色の変更との操作を行わったとしても、操作が競合することはない。このように独立で異なる属性への操作の場合、競合判定部24は、操作が競合しないと判定する。
影響判定部25は、操作の競合がない場合、端末2Aと他の端末2Bとから同一の文書データに対して同時に操作が行われた場合、端末2Aおよび他の端末2Bの操作性に影響が生じるか否かを判定する。影響判定部25は、判定部の一例である。
操作の競合がない場合、同一のオブジェクトに対して複数の端末2から同時に操作を行うことができる。ただし、自身の端末2Aと他の端末2Bとから同時に同一のオブジェクトに対して操作が行われるため、操作性が低下する場合がある。一方、オブジェクトに対する操作によっては、同時に同一のオブジェクトに対して操作を行なわれたとしても、操作性に影響がない場合がある。
影響判定部25は、自身の端末2Aの第1の操作情報と他の端末2Bの第2の操作情報とに基づいて、自身の端末2Aと他の端末2Bとから同時に同じオブジェクトに対して操作が行われたときに、操作性に影響があるか否かを判定する。
記憶部26は、各種情報を記憶する。記憶部26はテーブルを記憶する。テーブルは、第1の操作情報と第2の操作情報との組み合わせごとに、操作性の影響の有無および競合の有無を示す。競合判定部24は、記憶部26の記憶するテーブルに基づいて、操作の競合の有無を判定する。影響判定部25は、記憶部26の記憶するテーブルに基づいて、操作性の影響の有無を判定する。記憶部26は、テーブル以外の情報も記憶する。例えば、記憶部26は、文書データを記憶してもよい。
仮統合部27は、影響判定部25の判定結果によって、他の端末2Bの操作情報を自身の端末2Aの文書データに適用するか否かを決定する。影響判定部25が操作性に影響があると判定した場合、仮統合部27は、文書データの全部または一部を複製した文書データに対して、他の端末2Bの第2の操作情報が表す操作を適用する。以下、他の端末2Bの操作情報が表す操作を適用する上記の複製した文書データを仮文書データと称する。
仮統合部27は、第2の操作情報を仮文書データに適用する。また、仮統合部27は、操作判定部22が自身の端末2で操作がされていないと判定したときに、第2の操作情報が適用された仮文書データを消去する。
仮文書データ表示部28は、自身の端末2Aで操作中の部分の表示を維持したまま、該操作中の部分の表示とは異なる態様で、仮文書データを表示装置4の画面に表示する。また、仮文書データ表示部28は、仮統合部27が第2の操作情報が適用された仮文書データを消去するとき、仮文書データを非表示にする。
例えば、仮文書データ表示部28は、第2の操作情報の透明度や色味等を変化させて、仮文書データを表示装置4に表示してもよい。例えば、他の端末2Bの第2の操作情報がオブジェクトに対する操作を表す情報であれば、仮文書データ表示部28は、第2の操作情報の表す操作の対象のオブジェクトの透明度を高くして仮文書データを表示装置4に表示してもよい。
なお、仮統合部27が第2の操作情報が表す操作を自身の端末2Aで操作中の部分の表示とは異なる態様で仮文書データに適用してもよい。そして、仮文書データ表示部28が仮文書データを表示するようにしてもよい。
仮文書データ表示部28は、自身の端末2Aで操作中のオブジェクトの表示を維持したまま、該オブジェクトに仮文書データを重畳表示してもよい。この場合、表示装置4には、端末2Aで操作中のオブジェクトおよび他の端末2Bで操作中のオブジェクトの複製が異なる態様で表示されることになる。これにより、端末2Aを操作しているユーザは、他の端末2Bで同一のオブジェクトに対して操作が行われたことを視覚的に認識できる。
仮文書データ表示部28が上記の重畳表示を行う場合、端末2Aで操作中のオブジェクトと他の端末2Bで操作中のオブジェクトの複製とが重なることがある。この場合、視認性が低下する。この場合、仮文書データ表示部28は、重畳表示の位置をずらしてもよいし、オブジェクトの拡大または縮小を行ってもよい。
また、仮文書データ表示部28は、表示装置4の画面を分割し、分割された一部の領域に仮文書データを表示してもよい。仮文書データ表示部28は、他の領域に自身の端末2の文書データを表示してもよい。
仮文書データ表示部28は、画面を分割した一部の領域に対して拡大、縮小または移動を行ってもよい。また、仮文書データ表示部28は、表示装置4の画面を左右または上下に分割してもよいし、画面の一部を切り取ってもよい。
また、表示装置4が複数の画面を有する場合、1つの画面に自身の端末2の文書データを表示し、他の画面に仮文書データを表示してもよい。仮文書データに適用される操作を表す第2の操作情報は、オブジェクトおよび該オブジェクトに対する操作を表す情報だけではなく、付加的な情報であってもよい。
例えば、仮文書データに第2の操作情報を適用した結果、第2の操作情報の示す操作の対象のオブジェクトが表示装置4の画面の領域外に移動する場合がある。この場合、仮文書データ表示部28は、オブジェクトが画面外に移動したことを示す文字情報を表示装置4の画面に表示してもよい。また、仮文書データ表示部28は、文字情報に対して、例えば、第2の操作を行った編集者の情報をオブジェクトに関連付けて表示してもよい。
端末通信部29は、ネットワーク5を介して、他の端末2やサーバ3と通信を行う。端末2は、図3の例には限定されず、他の要素を有していてもよい。また、上述したように、入力装置5は端末2と近距離無線通信を行うものであってもよいし、表示装置4と入力装置5とは一体的なタッチパネルディスプレイであってもよい。
<同期処理の一例>
図4は、同期処理の一例を示すフローチャートである。各端末2の文書同期部21は、サーバ3に対して、文書データの取得要求を送信する。サーバ3の文書データ取得部12はデータベース6から所定の文書データを取得する。
サーバ3のサーバ通信部14は、ネットワーク5を介して、各端末2に文書データを送信する。各端末2の端末通信部29は文書データを取得する(ステップS1)。これにより、各端末2で文書データの同期が行われる。
各端末2は文書データに対して編集が行われたか否かを判定する(ステップS2)。全ての端末2において文書データに対して編集が行われていない場合(ステップS2でNO)、文書データは同期されている。従って、処理は終了する。
一方、少なくとも1つの端末2において文書データに対して編集が行われている場合(ステップS2でYES)、文書データの同期のための処理が行われる。この場合、端末2は、サーバ3に対して編集の内容を示す操作情報を送信する(ステップS3)。
サーバ3の文書データ更新部13は、受信した操作情報に基づいて、データベース6の文書データを更新する(ステップS4)。サーバ3は、受信した操作情報を他の端末2に対して送信する(ステップS5)。他の端末2は受信した操作情報を文書データに反映する(ステップS6)。
以上により、各端末2のうち何れかの端末2から文書データが編集されたとしても、各端末2の間は編集後の文書データで同期される。図4の同期処理は一例であり、各端末2の間での文書データの同期は任意の方法を採用することができる。
<操作性に影響のある操作の一例>
図5は、操作性に影響のある操作の一例を示している。図5は、自身の端末2Aと他の端末2Bとの間で同じオブジェクトが操作されている画面例を示している。図5に示す「操作の順」は時間軸を示し、一点鎖線は時間の区切りを示す。
図5において、端末2Aの文書データ31Aにはオブジェクト32Aが含まれている。端末2Bの文書データ31Bにはオブジェクト32Bが含まれている。オブジェクト32Aとオブジェクト32Bとは同一のオブジェクトである。また、図5の例では、オブジェクト32Aおよび32Bは、例えば付箋である。
1番の「初期状態」では、端末2Aの文書データ31Aおよび端末2Bの文書データ31Bには操作がされていない。図5の1番の例では、オブジェクト32Aおよび32Bは、テキスト「ABC」を含んでいる。
2番の「テキスト編集開始」で、端末2Aにおいてオブジェクト32Aのテキスト編集(以下、テキスト入力操作と称することもある)が開始される。例えば、図5の例では、ユーザは、入力装置5を用いて、オブジェクト32Aにテキスト「a」を入力している。なお、テキスト「a」の下線はテキストが編集中であることを示している。
端末2Aにおいてオブジェクト32Aのテキストが「a」に編集されたため、文書データ31Aと文書データ31Bとの間の同期がとられ、端末2Bのオブジェクト32Bのテキストも「a」となる。
3番の「テキスト編集中」で、端末2Aにおいてオブジェクト32Aのテキストが「abc」に編集される。このとき、端末2Bはオブジェクト32Bを矢印Mの方向に移動させている。従って、同一のオブジェクト32Aと32Bとに対して、端末2Aと端末2Bとで同時に異なる操作が行われている。
ただし、端末2Aにおけるオブジェクト32Aに対する操作は、オブジェクト32Aのテキストの属性に対する操作(第1の操作)であり、端末2Bにおけるオブジェクト32Bに対する操作は、オブジェクト32Bの位置の属性に対する操作(第2の操作)である。
従って、端末2Aにおける第1の操作と端末2Bにおける第2の操作とは同じオブジェクトの異なる属性に対する操作である。よって、第1の操作と第2の操作とは競合しない。このため、第1の操作と第2の操作とを同時に行うことは可能である。
4番の「オブジェクト移動終了」で、端末2Bによるオブジェクト32Bの移動操作が終了したとする。端末2Aの文書データと端末2Bの文書データとが同期すると、端末2Aのオブジェクト32Aの位置も端末2Bのオブジェクト32Bに対応する位置に移動する。
端末2Aを操作するユーザは、3番の「テキスト編集中」のときに、オブジェクト32Aに対してテキスト編集を行っている。そして、4番の「テキスト編集終了」のときまでには、端末2Aはオブジェクト32Aの移動操作を行っていないにもかかわらず、オブジェクト32Aはオブジェクト32Bの対応する位置に移動する。
オブジェクト32Bの移動操作がオブジェクト32Aに即座に反映されると、オブジェクト32Aに対してユーザがテキスト入力操作を行っているときに、オブジェクト32Aが移動する。この移動は、端末2Aを操作するユーザの予測しない操作である。
端末2Aを操作するユーザは、移動するオブジェクト32Aに対してテキスト入力を行うことになり、入力操作の操作性が低下する。また、テキスト入力の入力ミスが発生する可能性もある。
また、オブジェクト32Bの移動操作が終了した後に、文書同期部21は、該移動操作をオブジェクト32Aに反映させることも考えられる。この場合、オブジェクト32Aは突然別の位置に移動するため、端末2Aを操作するユーザは、テキスト入力操作を行っていたオブジェクト32Aを見失う可能性がある。
<操作支援処理の具体例(その1)>
次に、図6の例を参照して、操作支援処理の具体例(その1)について説明する。文書同期部21は、データベース6から文書データを取得する。図6の例では、文書データはオブジェクトを含んでいる。該オブジェクトは、「ABC」というテキストを含んでいる。
図6の例では、端末2Aの文書データ31Aはオブジェクト32Aを含んでおり、端末2Bの文書データ31Bはオブジェクト32Bを含んでいる。文書データ31Aと文書データ31Bとは同一であり、同期がとられている。
ユーザは、入力装置5を用いて、端末2Aのオブジェクト32Aに対してテキスト編集の操作を行っている。端末2Aの操作判定部22は、文書データ31Aのオブジェクト32Aに対してテキスト編集を行っていることを判定する。
端末2Aの操作判定部22は、文書データ31Aに含まれるオブジェクトの中から操作中(編集中)のオブジェクト32Aを特定する。図6の例の場合、端末2Aのオブジェクト32Aに対しては、「ABC」というテキストから「a」というテキストに編集されている。
端末2Aの文書同期部21は、オブジェクト32Aのテキストが「a」に変更されたことを表す操作情報をサーバ3に送信する。文書データ更新部13は、データベース6の文書データを更新する。また、サーバ3は、オブジェクト32Aのテキストが「a」に変更されことを表す操作情報を端末2Bに送信する。
端末2Bでは何らの操作も行われていないため、端末2Bの文書同期部21は、受信した操作情報に基づいてオブジェクト32Bのテキストを「a」に変更する。これにより、文書データ31Aと文書データ31Bとが内容が同一になる。
次に、端末2Bを操作する他のユーザは、オブジェクト32Bを矢印Mの方向に移動する操作を行う。端末2Bの操作判定部22は、移動操作が行われていると判定する。端末2Bの操作判定部22は、操作が行われたオブジェクト32Bを特定する。
端末2Bの文書同期部21は、オブジェクト32Bに対して移動操作が行われたことを表す操作情報をサーバ3に送信する。これにより、データベース6が更新される。また、オブジェクト32Bに対して移動操作が行われたことを表す操作情報は、サーバ3により端末2Aに対して送信される。
端末2Aでは、オブジェクト32Aに対してテキスト編集が行われている。競合判定部24は、第1の操作と第2の操作とが競合しているか否かを判定する。
第1の操作は、端末2Aにおけるオブジェクト32Aに対するテキスト入力操作(テキスト編集)である。第2の操作は、端末2Bにおけるオブジェクト32Bに対する移動操作である。
実施形態では、端末2Aおよび端末2Bの競合判定部24は、記憶部26のテーブルに記憶されている内容に基づいて、第1の操作と第2の操作とが競合しているか否かを判定する。上記の場合、競合判定部24は、第1の操作と第2の操作とは競合しないと判定する。よって、端末2Aにおいてオブジェクト32Aに対してテキスト編集の操作が行われているときに、端末2Bにおいてオブジェクト32Aと同一のオブジェクト32Bに対して移動操作を行うことができる。
また、端末2Aおよび端末2Bの影響判定部25は、記憶部26に記憶されているテーブルに基づいて、第1の操作と第2の操作とが操作性に影響を与えるか否かを判定する。図6の例では、影響判定部25は操作性に影響を与えると判定する。
影響判定部25が操作性に影響を与えると判定した場合、端末2Aの仮統合部27は、文書データ31Aの複製データに対して、端末2Bの第2の操作情報が表す操作を適用し仮文書データとする。ここでは、端末2Aの仮統合部27は、複製データに対して、オブジェクト32Bの移動操作を示す第2の操作情報で表される操作を適用し仮文書データ33Aとする。
なお、仮統合部27は、文書データ31Aの全てを複製してもよいが、文書データ31Aが含むオブジェクトのうち、第2の操作情報に関連するオブジェクトだけを複製してもよい。
仮文書データ33Aに含まれる、オブジェクト32Aの複製で、第2の操作情報で表される操作が適用されるオブジェクトを適用オブジェクト34Bと称する。適用オブジェクト34Bは、複製元のオブジェクト32Aとは異なる表示態様で表示される。図6の例では、適用オブジェクト34Bを破線で示し、他のオブジェクトのテキストを斜線で示している。なお、オブジェクト32Aは文書データ31Aに含まれるオブジェクトであり、適用オブジェクト34Bは、仮文書データ33Aに含まれるオブジェクトである。
端末2Aの仮文書データ表示部28は、仮文書データ33Aを表示装置4の画面に表示する。適用オブジェクト34Bは、他の端末2Bによる第2の操作が適用されているため、端末2Aを操作しているユーザは、適用オブジェクト34Bを視認することにより、他の端末2Bの第2の操作の内容を視覚的に認識できる。
端末2Bにおけるオブジェクト32Bの移動操作は、移動するごとに、仮文書データ33Aに含まれる適用オブジェクト34Bに反映される。よって、端末2Aを操作するユーザは、適用オブジェクト34Bの移動を逐次、表示装置4の画面で確認することができる。
従って、端末2Aを操作するユーザは、自身が操作しているオブジェクト32Aと同一のオブジェクト32Bに対して他の端末2Bにおいて移動操作が行われたことを認識することができるため、操作性が向上する。
また、端末2Aを操作するユーザは、自身が操作しているオブジェクト32Aと適用オブジェクト34Bとが異なる表示態様で表示されているため、自身の操作しているオブジェクト32Aを容易に特定することができる。
また、端末2Aの表示装置4には、影響判定部25が操作性に影響を与えると判定した場合に適用オブジェクト34Bが表示される。従って、操作性に影響がない場合、適用オブジェクト34Bは表示されない。
操作性に影響がない場合に、適用オブジェクト34Bが表示装置4の画面に表示されることは、端末2Aを操作するユーザの視認性に影響を与える。このため、操作性に影響がない場合には、仮文書データ表示部28は適用オブジェクト34Bを表示しないことで、ユーザの視認性を低下させることがない。
図6の例の4番の「オブジェクト移動終了」は端末2Bにおいてオブジェクト32Bの移動操作(第2の操作)が終了したことを示している。このとき、端末2Aでは、オブジェクト32Aに対してテキストが「abc」に編集中である。このテキストの編集結果が端末2Bのオブジェクト32Bに反映される。よって、オブジェクト32Bのテキストは「abc」になる。
なお、図6の例の4番の「テキスト編集中」においては、オブジェクト32Aに対して操作が行われているため、仮文書データ33Aに含まれる適用オブジェクト34Bが図6の例の3番から引き続き表示される。
端末2Aの仮統合部27は、操作判定部22が操作していないと判定したときに、仮文書データ33Aを破棄する。そして、仮文書データ表示部28は、仮文書データ33Aに含まれる適用オブジェクト34Bを非表示にする。これにより、適用オブジェクト34Bは、表示装置4に表示されない。
従って、図6の例の5番の「テキスト編集終了」に示すように、オブジェクト32Aはテキスト「abc」に編集がされる。また、文書データ31Aに含まれるオブジェクト32Aは、端末2Bで行われたオブジェクト32Bの移動操作が適用され位置が移動する。以上により、端末2Aの文書データ31Aと端末2Bの文書データ31Bとは同一になる。
<操作支援処理の具体例(その2)>
次に、操作支援処理の具体例(その2)について、図7の例を参照して説明する。端末2Aの2番の「テキスト編集開始」および端末2Bの2番の「同期」までは、図6の例と同様である。
図7の3番の「テキスト編集中」において、端末2Aの操作判定部22は、文書データ31Aの何れかのオブジェクトが操作されていると判定する。端末2Aの操作判定部22は、操作されているオブジェクトがオブジェクト32Aであると特定する。
端末2Aの操作情報取得部23は、端末2Bの第2の操作情報を取得する。このとき、端末2Aでは、オブジェクト32Aに対するテキストの編集という操作が行われている。
図7の3番の例では、端末2Bでは文書データ31Bに対して縮小処理を行っている。文書データ31Bが画面全部を占める場合には、該縮小処理は、表示装置4の画面の縮小処理になる。図7の例では、縮小処理について説明するが、端末2Bで行なわれる操作は拡大処理や移動処理であってもよい。拡大処理および縮小処理、移動処理は、パン・ズームとも称される。
端末2Aおよび端末2Bの競合判定部24は、端末2Aにおける第1の操作がオブジェクト32Aのテキスト編集の操作であり、端末2Bにおける第2の操作が文書データ31Bの縮小処理の操作であるため、記憶部26のテーブルに基づいて、2つの操作は競合しないと判定する。また、端末2Aおよび端末2Bの影響判定部25は、記憶部26のテーブルに基づいて、操作性に影響を及ぼす操作であると判定する。
従って、端末2Aの仮統合部27は、文書データ31Aを複製して作成した仮文書データ33Aに対して、端末2Bにおいて行われた縮小処理を適用する。また、端末2Bの仮統合部27は、文書データ31Bを複製して作成した仮文書データ33Bに対して、端末2Aにおいて行われたオブジェクト32Aのテキストの編集を適用する。仮文書データ33Bに含まれる、該テキストの編集が適用されたオブジェクトを、適用オブジェクト34Aと称する。
図7の例に示すように、端末2Bで縮小処理が行われると、端末2Aの表示装置4には、編集中のオブジェクト32Aだけでなく、縮小処理が適用された仮文書データ33Aも仮文書データ表示部28により表示される。このため、端末2Aを操作しているユーザは、端末2Bにおいて縮小処理が行われたことを認識できる。
この例の場合、オブジェクト32Aに対するテキスト入力操作と文書データ31Bの縮小操作とが行われている。つまり、文書データに含まれるオブジェクトと同一の文書データとに同時に操作がされた場合でも、端末2Aは端末2Bの操作を認識できるため、操作性が向上する。
<操作支援処理の具体例(その3)>
次に、図8の例を参照して、操作支援処理の具体例(その3)について説明する。この例では、端末2Aの表示装置4が低解像度であり、端末2Bの表示装置4が高解像度であるものとする。
また、文書データ31Aおよび文書データ31Bは、画面全体に表示されているものとする。なお、図8の例は、解像度にはかかわらず、端末2Aの表示装置4の画面に対して拡大処理がされているか、または端末2Bの表示装置4Bの画面に対して縮小処理がされていてもよい。
この例では、端末2Aを操作するユーザは、オブジェクト32Aのテキストを編集する操作を行い、端末2Bを操作するユーザは、オブジェクト32Bを移動する操作を行うとする。この例での文書同期部21、操作判定部22、操作情報取得部23、競合判定部24、影響判定部25、仮統合部27の処理は、操作支援処理の具体例(その1)と同様である。したがって、端末2Aの仮統合部27は、第2の操作情報で表される操作を適用する仮文書データ33Aを作成する。仮文書データ33Aには、オブジェクト32Aに対応するオブジェクトで、第2の操作情報で表される操作が適用されたオブジェクトである適用オブジェクト34Bが含まれる。
図8の3番の「オブジェクト移動開始」で、端末2Bでオブジェクト32Bの移動操作が大きく行われたとする。端末2Bの表示装置4は高解像度であるため、移動後のオブジェクト32Bの表示は、表示装置4の画面内から消えない。
一方、端末2Aの表示装置4は低解像度である。この場合、端末2Aの仮統合部27がオブジェクト32Bの移動に関する第2の操作情報で表される操作を仮文書データ33Aに適用すると、端末2Aの表示装置4は低解像度であることから、オブジェクトの表示が画面から消える可能性がある。
第2の操作情報が端末2Aの表示装置4に表示されないと、端末2Aを操作しているユーザは、端末2Bの第2の操作がオブジェクト32Aに対して与える影響を認識できない。このため、ユーザの端末2Aの操作性が低下する。
そこで、この場合、仮文書データ表示部28は、オブジェクト32Aに対応する適用オブジェクト34Bが画面の領域外に移動することを示す文字情報35を表示する。この文字情報35は第2の操作情報および適用オブジェクト34Bに基づいて算出される。
端末2Aを操作するユーザは、オブジェクト32Aに対してテキストを編集しているときに、文字情報35を表示装置4の画面で視認する。
これにより、端末2Aを操作するユーザは、文字情報35に基づいて、オブジェクト32Aに対するテキスト編集が終了した後には、表示装置4の画面からオブジェクト32Aの表示が消えることを認識することができる。
<破棄操作の一例>
次に、図9を参照して、端末2に対して行われた操作が破棄される例を説明する。図9は、オブジェクトの移動操作が行われたときに、該移動操作が破棄される例を示している。
例えば、端末2Bを操作するユーザは、英単語を含むオブジェクトは移動せず、英単語を成していないアルファベットを含むオブジェクトを移動するというタスクを行っているとする。図9の例では、5番の「テキスト編集中」において端末2Aでオブジェクト32Aのテキストに英単語が入力されたときに、端末2Bを操作するユーザは、オブジェクト32Aに対応するオブジェクトであるオブジェクト32Bの移動操作を思い直し、端末2Bのオブジェクト32Bの移動操作を破棄するものとする。
図9の2番の「同期」の例に示すように、2番の「同期」の時点では、端末2Bのオブジェクト32Bは英単語を成していないアルファベット「b」を含んでいる。端末2Bを操作するユーザは、このオブジェクト32Bを移動しようとする。一方、同時に端末2Aを操作するユーザはオブジェクト32Aのテキストを「box」に編集する。図9の4番の「テキスト編集中」までに、オブジェクト32Aのテキストは「box」に編集される。「box」は英単語であるため、図9の5番の「移動操作破棄」では、端末2Bのユーザは前記タスクに従い、図9の4番の「オブジェクト移動終了」までに行ったオブジェクト32Bの移動操作を破棄するとする。
この例での文書同期部21、操作判定部22、操作情報取得部23、競合判定部24、影響判定部25、仮統合部27、仮文書データ表示部28の処理は、操作支援処理の具体例(その1)と同様である。したがって、端末2Bの仮統合部27は、第1の操作情報で表される操作を適用する仮文書データ33Bを作成する。仮文書データ33Bには、オブジェクト32Bに対応するオブジェクトで、第1の操作情報で表される操作が適用されたオブジェクトである適用オブジェクト34Aが含まれる。
図9の例の4番の「オブジェクト移動終了」では、仮文書データ表示部28により、端末2Bの表示装置4には適用オブジェクト34Aが表示されている。この適用オブジェクト34Aは端末2Aにおいてオブジェクト32Aに「box」という英単語が編集されたことを示している。
よって、前記タスクを実施している端末2Bを操作しているユーザは、オブジェクト32Bの移動操作が不要になったことを認識することができる。これにより、ユーザは移動操作の破棄操作を実行できるため、操作性の向上を図ることができる。操作が破棄される例は、上記の例に限定されない。
<操作支援処理のフローチャートの一例>
次に、操作支援処理のフローチャートの一例について、図10を参照して説明する。端末2Aの操作判定部22は、現在自身の端末2Aで操作が行われているか否かを判定する(ステップS11)。
操作判定部22が現在自身の端末2Aで操作が行われていると判定した場合(ステップS11でYES)、操作判定部22は、文書データのうち操作がされているオブジェクトを特定する(ステップS12)。
端末2Aの端末通信部29は、自身の操作に関する情報を第1の操作情報として、サーバ3に送信する(ステップS13)。サーバ3は、受信した第1の操作情報に基づいて、データベース6を更新する。第1の操作情報は、文書データに含まれるオブジェクトに対する操作だけでなく、文書データに対する操作であってもよい。
サーバ3は、受信した第1の操作情報を他の端末2Bに送信する。他の端末2Bも同様に、操作が行われている場合には、第2の操作情報をサーバ3に送信する。サーバ3は、受信した第2の操作情報に基づいて、データベース6を更新する。また、サーバ3は、受信した第2の操作情報を端末2Aに送信する。
端末2Aの操作情報取得部23は、端末通信部29がサーバ3から第2の操作情報を受信したか否かを判定する(ステップS14)。第2の操作情報は、端末2Bの操作に関する情報である。第2の操作情報は、文書データに含まれるオブジェクトに対する操作だけなく、文書データに対する操作であってもよい。
第2の操作情報を受信していないと操作情報取得部23が判定した場合(ステップS14でNO)、処理はステップS11に戻る。例えば、端末2Bにおいて操作がされていない場合には、端末2Aは第2の操作情報を受信しない。
一方、端末2Bにおいて何らかの操作が行われている場合には、端末2Aはサーバ3から第2の操作情報を受信する。従って、端末2Aの操作情報取得部23は、第2の操作情報を受信したと判定する(ステップS14でYES)。
そして、競合判定部24は、記憶部26のテーブルに基づいて、第1の操作と第2の操作とが競合するか否かを判定する(ステップS15)。第1の操作と第2の操作とが競合する関係にある場合には、処理はステップS11に戻る。
一方、第1の操作と第2の操作とが競合しない関係にある場合には、影響判定部25は、第1の操作と第2の操作とに基づいて、第1の操作および第2の操作が操作性に影響があるか否かを判定する(ステップS16)。影響判定部25は、記憶部26のテーブルに基づいて、操作性に影響があるか否かを判定する。
影響判定部25が操作性に影響がないと判定した場合(ステップS16でNO)、特別な処理は行われない。ステップS16でNOの場合、処理はステップS11に戻る。
一方、影響判定部25が操作性に影響があると判定した場合(ステップS16でYES)、端末2Aの仮統合部27は、文書データを一時的に複製する(ステップS17)。この一時的に複製された文書データが仮文書データ33Aである。
仮統合部27は、仮文書データ33Aに対して、受信した第2の操作情報が表す操作を適用する。第2の操作情報は、端末2Bの操作に関する情報である。例えば、第2の操作情報がオブジェクトに対する編集の操作を表す情報である場合には、仮統合部27は、端末2Aの仮文書データに含まれる該操作情報で指示されるオブジェクトに対して、該操作情報で指示される編集の操作を適用する(ステップS18)。
そして、第2の操作情報が適用された仮文書データ33Aが、仮文書データ表示部28により表示装置4に重畳表示される(ステップS19)。これにより、端末2Aを操作するユーザは、表示装置4に表示される仮文書データ33Aにより、第2の操作情報を認識することができる。ステップS19の処理が終了すると、処理はステップS11に戻る。
一方、操作判定部22が自身の端末2Aで操作が行われていないと判定した場合(ステップS11でNO)、操作判定部22は、破棄操作が行われたか否かを判定する(ステップS20)。破棄操作が行われた場合(ステップS20でYES)、自身の端末2Aの操作が元に戻される(ステップS21)。一方、破棄操作が行われていない場合(ステップS20でNO)、ステップS21の処理は行われない。
端末2Aの仮統合部27は、文書データの一時的な複製つまり仮文書データがあるか否かを判定する(ステップS22)。仮文書データがある場合(ステップS22でYES)、仮統合部27は、仮文書データを削除し、仮文書データ表示部28は仮文書データの表示を削除する(ステップS23)。仮文書データがない場合(ステップS22でNO)、ステップS23の処理は行われない。
そして、文書同期部21は文書データの同期を行う(ステップS24)。端末2Aには第1の操作情報および第2の操作情報で表される操作が適用された文書データが表示される。
以上により、ユーザが端末2Aを操作しているときに、文書データの同期をしている他の端末2Bで何らかの操作がされたとしても、端末2Aには第2の操作情報で表される操作が適用された仮文書データが逐次的に表示される。従って、端末2Aを操作するユーザは、端末2Bで行われた操作を逐次的に視認でき、操作性が向上する。
<記憶部の一例>
次に、図11を参照して、記憶部26が記憶しているテーブルの一例を説明する。記憶部26が記憶しているテーブルは、第1の操作情報と第2の操作情報との組み合わせごとに、仮統合部27で作成した仮文書データに対して第2の操作情報で表される操作を適用するのではなく、元の文書データに対して第2の操作情報で表される操作を適用した場合に、操作性に影響があるか否か、および競合があるか否かを示している。なお、以下において、オブジェクト32Aおよびオブジェクト32Bは、図5の例で示したオブジェクトであるものとする。ただし、以下の説明のオブジェクトは、図5の例のオブジェクト32Aおよびオブジェクト32Bには限定されない。
第1の操作情報がオブジェクトのテキスト入力を表す情報であり、第2の操作情報が同オブジェクトの移動を表す情報の場合、操作性に影響があるものとする。ユーザが端末2Aのオブジェクト32Aに対してテキストの入力操作を行っているときに、他のユーザが、端末2Bでオブジェクト32Aに対応するオブジェクト32Bに対して移動操作を行う。
この場合、オブジェクト32Aはオブジェクト32Bの移動操作が逐次適用されて移動する。しかし、この移動は、端末2Aを操作しているユーザが予測しない移動である。よって、端末2Aを操作しているユーザの操作性に影響がある。よって、操作性影響は「YES」になる。
第1の操作と第2の操作とは、同一のオブジェクトに対する操作である。ただし、同一のオブジェクトの異なる独立な属性に対する操作であるため、第1の操作と第2の操作とは競合しない。よって、競合は「NO」になる。なお、オブジェクトの異なる属性に対する操作であったとしても、依存関係があれば、第1の操作と第2の操作とは競合する。第1の操作と第2の操作とが逆になったとしても、同様である。
第1の操作情報がオブジェクトの色変更を表す情報であり、第2の操作情報が文書データ全体の拡大または縮小を表す情報の場合にも、操作性影響は「YES」となる。オブジェクトの色変更の操作を行っているユーザにとっては、文書データ全体の拡大または縮小は予測しない操作である。よって、操作性に影響がある。なお、第1の操作情報と第2の操作情報で、操作情報が示す操作の対象のオブジェクトが異なるため、競合は「NO」となる。
第1の操作情報がオブジェクトへの任意の編集を表す情報であり、第2の操作情報が別オブジェクトの前記オブジェクトと同位置への移動を表す情報の場合、操作性影響は「YES」となる。例えば、端末2Aでオブジェクト32Aに対して色変更操作が行われている最中に、端末2Bが別のオブジェクトをオブジェクト32Aの位置に移動したとする。
この場合、オブジェクト同士が部分的にまたは全面的に重なるため、ユーザの視認性が低下し、操作性が低下する。従って、操作性影響は「YES」となる。なお、第1の操作情報と第2の操作情報で、操作情報が示す操作の対象のオブジェクトが異なるため、競合は「NO」となる。
第1の操作情報がオブジェクトのテキスト入力を表す情報であり、第2の操作情報が同一のオブジェクトの色変更を表す情報の場合、操作性影響は「NO」となる。オブジェクトのテキスト入力が行われているときに、同一のオブジェクトの色が変更されたとしても、操作性に影響がないか、または軽微な影響となる。操作性に与える影響が軽微な場合、実施形態では、操作性に影響がないものとする。なお、第1の操作情報と第2の操作情報で、操作情報が示す操作の対象の属性が異なり独立なため、競合は「NO」となる。
第1の操作情報がオブジェクトの色変更を表す情報であり、第2の操作情報が同一のオブジェクトの色変更を表す情報の場合、同一のオブジェクトの同じ属性に対する操作であるため、競合は「YES」となる。なお、操作性影響についても「YES」となる。第1の操作情報がオブジェクトのテキスト入力を表す情報であり、第2の操作情報が同一のオブジェクトのテキスト入力を表す情報である場合も同様である。
第1の操作情報が文書データ全体の背景色変更を表す情報であり、第2の操作情報がオブジェクトの色変更を表す情報の場合、操作性に影響がないか、または軽微な影響であるため、操作性影響は「NO」となる。なお、第1の操作情報と第2の操作情報で、操作情報が示す操作の対象のオブジェクトが異なるため、競合は「NO」となる。第1の操作情報がオブジェクトの移動であり、第2の操作情報が文書全体の背景色変更の場合も同様である。
第1の操作情報と第2の操作情報との組み合わせは、図11の例には限定されない。例えば、第1の操作情報または第2の操作情報は、オブジェクトの入力領域の大きさや形状、入力領域を囲う枠のスタイル等を操作することに関する情報であってもよい。また、第1の操作情報または第2の操作情報は、テキストのフォントや大きさ、色、太さ、下線等の装飾を編集する操作を表す情報であってもよい。
<操作支援処理の時間的推移を示す一例>
次に、操作支援処理の時間的推移を示す一例について、図12乃至図14を参照して説明する。図12は、文書データに含まれるオブジェクトのオブジェクトIDと属性と値との関係を示す表の一例である。例えば、複数のオブジェクトを含む文書データは、図12の例の表を用いて表現することができる。図12の例の表は、データベース6に記憶されている。
文書データ取得部12は、データベース6に記憶されている表を取得することができる。文書データ更新部13は、データベース6に記憶されている表を更新または削除することができる。
図13の例は、端末2Aの文書データ41Aおよび端末2Bの文書データ41Bを示している。端末2Aと端末2Bとはサーバ3で識別されているものとする。端末2Aおよび端末2Bの文書同期部21は、文書データを取得するようサーバ3に要求する。
サーバ3は、図12の表で示される文書データを端末2Aおよび端末2Bに送信する。初期状態では、端末2Aの文書データ41Aと端末2Bの文書データ41Bとは、同一の内容である。この状態では、図13の「0秒〜10秒」のように、オブジェクトIDが「001」に対応するオブジェクト42Aおよび42B、および、オブジェクトIDが「002」に対応するオブジェクト43Aおよび43Bが、端末2Aおよび端末2Bの表示装置4に等しく表示されている。
図13に示す「0秒〜10秒」においては、端末2Aを操作するユーザは文書データ41Aに対して操作を行わず、端末2Bを操作するユーザも文書データ41Bに対して操作を行わない。従ってオブジェクト42Aおよび42Bに変化はない。また、オブジェクト43Aおよび43Bに変化はない。
上述したように、端末2Aを操作するユーザは、入力装置5を用いて、文書データ41Aに対して操作を行うことができる。端末2Bを操作するユーザは、入力装置5を用いて、文書データ41Bに対して操作を行うことができる。
端末2Aの操作に関する情報は、端末2Aで操作が行われるときに逐次、第1の操作情報として、サーバ3に送信される。サーバ3の文書データ更新部13は、第1の操作情報に基づいて、データベース6の上記の表を更新する。
端末2Bの操作に関する情報は、端末2Bで操作が行われるときに逐次、第2の操作情報として、サーバ3に送信される。サーバ3の文書データ更新部13は、第2の操作情報に基づいて、データベース6の上記の表を更新する。サーバ3のサーバ通信部14は、データベース6に変更が生じたときに、第1の操作情報または第2の操作情報を各端末2(端末2Aおよび2Bを含む)に送信する。
端末2Aおよび2Bの操作判定部22は、現在操作中か否かを判定する。例えば、オブジェクトに対してドラッグ操作を行っている場合、または最後にドラッグ操作を行ってから所定時間(例えば、1秒)以内の場合、操作判定部22は、操作を行っていると判定する。
また、例えば、オブジェクトに対してテキスト入力を行っている場合、または最後にテキスト入力を行ってから所定時間(例えば、1秒)以内の場合、操作判定部22は、操作を行っていると判定する。
「10秒」のタイミングで、端末2Aを操作するユーザはオブジェクト42Aに対してテキスト入力操作を開始したとする。また、このテキスト入力操作は「25秒」で終了したとする。従って、「10秒〜26秒」までの間、端末2Aの操作判定部22は、操作を行っていると判定する。
端末2Aの端末通信部29は、オブジェクト42Aのテキストが変更されるごとに、サーバ3に第1の操作情報を送信する。図13の「10秒〜15秒」の場合、端末2Aのオブジェクト42Aのテキストは「App」に変更されている。ここでは、第1の操作情報は、オブジェクト42Aに対するテキスト入力操作に関する情報で、オブジェクト42Aに対応するオブジェクトID「001」および、テキストの入力内容「App」を含む。
サーバ3の文書データ更新部13は、受信した第1の操作情報に基づいて、データベース6を更新する。また、サーバ3は、第1の操作情報を端末2Bに送信する。端末2Bを操作するユーザは操作を行っていないため、文書同期部21は、文書データ41Bに第1の操作情報で表される操作を反映する。
端末2Bの文書同期部21は、サーバ3から送信された第1の操作情報に基づいて、該操作情報が示すオブジェクトID「001」に対応するオブジェクト42Bのテキストを「App」に変更する。
以上が「10秒〜15秒」のタイミングにおける、端末2Aおよび端末2Bの処理である。次に、「15秒〜20秒」のタイミングにおける端末2Aおよび端末2Bの処理について説明する。
前記の通り、端末2Aを操作するユーザは、「25秒」までテキスト入力操作を行うため「15秒〜20秒」において操作判定部22は、端末2Aのオブジェクト42Aに対して、引き続きテキスト入力操作が行われていると判定する。図13の「15秒〜20秒」の例では、オブジェクト42Aのテキストは「Ban」に変更されている。
端末2Bでは、オブジェクト42Bに対して移動操作が行われている。端末2Aの操作情報取得部23は、オブジェクト42Bの移動操作に関する第2の操作情報を取得する。影響判定部25は、端末2Aでオブジェクト42Aに対して行われているテキスト入力操作に関する第1の操作情報とオブジェクト42Bの移動操作に関する第2の操作情報との組み合わせについて、操作性の影響を判定する。
第1の操作情報はオブジェクトID「001」のオブジェクトのテキストの入力操作を表す情報であり、第2の操作情報は同じオブジェクトID「001」のオブジェクトの移動操作を表す情報である。このため、影響判定部25は、記憶部26のテーブルに基づいて、操作性影響が「YES」と判定する。つまり、影響判定部25は、操作性に影響があると判定する。なお、第1の操作情報と第2の操作情報が示す操作の対象の属性がテキストと位置で異なるため、競合は「NO」と判定される。
影響判定部25の判定結果に従って、端末2Aの仮統合部27は、文書データ41Aを複製して、複製した文書データを仮文書データ44Aとする。ただし、端末2Aが受信した第2の操作情報は、オブジェクトID「001」のオブジェクトに関する操作情報なので、文書データ41Aをすべて複製せずに、文書データ41AのうちオブジェクトID「001」に関するデータのみを複製してもよい。
ここで、端末2Aが文書データ41Aのうち、受信した第2の操作情報が参照しているオブジェクトID「001」のオブジェクトに関するデータを複製した仮文書データ44Aを既に記憶している場合、仮統合部27は、文書データ41Aの複製は行わず、記憶されている仮文書データ44Aを使用してもよい。
そして、仮統合部27は、仮文書データ44Aに受信した第2の操作情報で表される操作を適用する。ここでは、上記のとおり第2の操作情報は、オブジェクトID「001」のオブジェクトの移動操作を表す情報である。このため、仮文書データ44Aのうち、オブジェクトID「001」のオブジェクトに関する位置の属性が更新される。仮文書データ表示部28は、更新された仮文書データ44Aに基づいて、オブジェクトID「001」に対応するオブジェクト45Bを、オブジェクト42Aおよび43Aに重畳表示する。以下では、仮文書データ表示部28により、仮文書データに基づいて表示されたオブジェクトを適用オブジェクトと呼ぶ。つまり、オブジェクト45Bは、適用オブジェクト45Bと呼ぶ。
従って、図13の「15〜20秒」の例に示すように、端末2Aでは適用オブジェクト45Bが、端末2Bにおいて文書データ41BのオブジェクトID「001」に対応するオブジェクト42Bと同じ位置に表示される。なお、適用オブジェクト45Bのテキストは、仮統合部27が仮文書データ44Aの複製を行った時点の「App」となる。
仮文書データ表示部28は、仮文書データ44Aに基づいて表示される適用オブジェクト45Bとそれ以外のオブジェクトとを異なる表示態様で表示する。これにより、端末2Aを操作するユーザは、端末2BにおいてオブジェクトID「001」に対応するオブジェクト42Bが移動操作されたことを認識できる。また、端末2Aを操作するユーザは、適用オブジェクト45Bが仮文書データ41Aに基づいて表示されていることを視覚的に区別することができる。
一方、「15〜20秒」で端末2Bの操作判定部22は、オブジェクト42Bに対して移動操作が行われていると判定する。このとき、端末2Aは、オブジェクト42Aに対してテキスト入力操作を行っている。
端末2Bの操作情報取得部23は、端末2Aの第1の操作情報を取得する。端末2Bの影響判定部25は、第1の操作情報と第2の操作情報とに基づいて、操作性に影響があるか否かを判定する。第1の操作情報は、文書データ41AでオブジェクトID「001」に対応するオブジェクト42Aに対するテキスト入力操作に関する情報であり、第2の操作情報は、文書データ41Bで同じオブジェクトID「001」に対応するオブジェクト42Bに対する移動操作に関する情報であるため、影響判定部25は、操作性に影響があると判定する。
そこで、端末2Bの仮統合部27は、文書データ41Bのうち、オブジェクトIDが「001」に関するデータを複製して、仮文書データ44Bを作成する。そして、端末2Bの仮統合部27は、仮文書データ44Bに受信した第1の操作情報で表される操作を適用する。該操作情報は、上記のとおりオブジェクトID「001」のオブジェクトに対するテキスト入力操作を表すので、仮文書データ44Bのデータのうち、オブジェクトID「001」のオブジェクトに関するテキストの属性が更新される。なお、端末2Bの記憶部26が仮文書データ44Bを記憶している場合には、該仮文書データ44Bを使用する。
端末2Bの仮文書データ表示部28は仮文書データ44Bに基づいて、適用オブジェクト45Aを重畳表示する。なお、適用オブジェクト45Aのテキストは端末2Aで編集されたテキストと等しくなる。従って、適用オブジェクト45Aのテキストは、図13の「15秒〜20秒」に示されるように、「Ban」になる。また、仮文書データ44Bのデータのうち、オブジェクトID「001」のオブジェクトに関する位置の属性は更新されていないので、適用オブジェクト45Aの位置は、仮統合部27で仮文書データ44Bを作成したときのままで、そのときの文書データ41BのオブジェクトID「001」に対応するオブジェクト42Bの位置と等しくなる。
これにより、端末2Bを操作するユーザは、端末2AにおいてオブジェクトID「001」に対応するオブジェクト42Aにテキスト入力操作が行われたことを視覚的に認識できる。また、端末2Bを操作するユーザは、適用オブジェクト45Aが異なる態様で表示されているため、適用オブジェクト45Aが仮文書データ44Bに基づいて表示されていることを視覚的に区別することができる。
次に、図14の「21秒」を参照して、「21秒」のタイミングの端末2Bの処理について説明する。
端末2Bでは、「15秒〜20秒」の間、オブジェクト42Bの移動操作が行われる。「21秒」のタイミングでは、端末2Bを操作するユーザが「20秒」に該移動操作を終了してから「1秒」が経過したため、端末2Bの操作判定部22は、オブジェクト42Bの移動操作が終了したと判定する。
端末2Bの操作判定部22で操作をしていないと判定されたので、端末2Bの仮統合部27は、仮文書データ44Bを破棄する。これにより、仮文書データ表示部28は、表示装置4の画面で仮文書データ44Bを非表示にする。端末2Bの文書同期部21は、適用オブジェクト45Aに対応するオブジェクトID「001」の情報を含む文書データをサーバ3から取得する。端末2Bの文書同期部21は、取得した文書データ41Bに基づいて、オブジェクトID「001」に対応するオブジェクト42Bを変更する。従って、図14の「21秒」の例に示すように、オブジェクト42Bのテキストは「Ban」に変更される。従って、図14の「21秒」に示すように、第1の操作と第2の操作との双方が適用された文書データ41Bが端末2Bの表示装置4の画面に表示される。
次に、「21秒〜25秒」のタイミングの端末2Aの処理および端末2Bの処理について説明する。端末2Aでは、オブジェクト42Aに対してテキスト入力操作が行われている。図14の「21秒〜25秒」の端末2Aの例では、オブジェクト42Aのテキストが「Banana」に変更されている。
端末2Bの文書同期部21は、端末2Aのオブジェクト42Aに対するテキスト入力操作が行われるごとに、文書データ41Bをサーバ3と同期する。従って、端末2Aのオブジェクト42Aのテキスト入力操作の内容が逐次端末2Bのオブジェクト42Bに反映される。図14の「21秒〜25秒」の端末2Bの例では、オブジェクト42Bのテキストは、オブジェクト42Aのテキストと等しく「Banana」に変更されている。
次に、「26秒」のタイミングの端末2Aの処理について説明する。端末2Bの文書データ44Bに変化はない。
端末2Aでは、「25秒」まで、オブジェクト42Bに対するテキスト入力操作が行われている。「26秒」のタイミングでは、端末2Aを操作するユーザが「25秒」にテキスト入力操作を終了してから「1秒」が経過したため、端末2Aの操作判定部22は、テキスト入力操作が行われていないと判定する。端末2Aの仮統合部27は、仮文書データ44Aを破棄する。
これにより、端末2Aの仮文書データ表示部28は、表示装置4の画面から仮文書データ44Aを非表示にする。端末2Aの文書同期部21は、適用オブジェクト45Bに対応するオブジェクトID「001」の情報を含む文書データをサーバ3から取得する。端末2Aの文書同期部21は、取得した文書データ41Aに基づいて、オブジェクトID「001」に対応するオブジェクト42Aを変更する。従って、図14の「26秒」の例に示すように、オブジェクト42Aの位置は画面右下に変更される。第1の操作と第2の操作との双方が適用された文書データ41Aが表示装置4の画面に表示される。以上により、文書データ41Aと文書データ41Bとが同期される。
<操作支援装置のハードウェア構成の一例>
次に、図15を参照して、操作支援装置のハードウェア構成の一例を説明する。図15の例に示すように、バス100に対して、プロセッサ111とRandom Access Memory (RAM)112とRead Only Memory(ROM)113と補助記憶装置114と媒体接続部115と通信インタフェース116とが接続されている。
プロセッサ111はCentral Processing Unit(CPU)のような任意の処理回路である。プロセッサ111はRAM112に展開されたプログラムを実行する。実行されるプログラムとしては、実施形態の操作支援プログラムを適用することができる。ROM113はRAM112に展開されるプログラムを記憶する不揮発性の記憶装置である。
補助記憶装置114は、種々の情報を記憶する記憶装置であり、例えばハードディスクドライブや半導体メモリ等を補助記憶装置114に適用することができる。媒体接続部115は、可搬型記録媒体117と接続可能に設けられている。
可搬型記録媒体117としては、可搬型のメモリや光学式ディスク(例えば、Compact Disk(CD)やDigital Versatile Disk(DVD)等)を適用することができる。この可搬型記録媒体117に実施形態の操作支援プログラムが記録されていてもよい。
通信インタフェース116は、外部との通信を行うときのインタフェースである。例えば、端末通信部29は通信インタフェース116により実現されてもよい。また、記憶部26は補助記憶装置114やRAM112に記憶されてもよい。また、図2の例の端末2のうち記憶部26および端末通信部29以外の各部は、プロセッサ111により実現されてもよい。
RAM112、ROM113および補助記憶装置114は、何れもコンピュータ読み取り可能な有形の記憶媒体の一例である。これらの有形な記憶媒体は、信号搬送波のような一時的な媒体ではない。
<その他>
上述した実施形態では、競合判定部24が競合の有無を判定していた。第1の操作と第2の操作とが競合するとき、先に開始された操作を有効にし、後に開始された操作を禁止するようにしてもよい。
第1の操作と第2の操作とが競合するときに無条件に操作を禁止するのではなく、先に開始された操作を有効にすることで、少なくとも先に開始された操作が無駄になることがなくなる。
また、第1の操作と第2の操作とが競合する場合に、端末2Aまたは端末2Bの何れかが操作の対象のオブジェクトの複製を行い、新たなオブジェクトを生成してもよい。そして、複製元のオブジェクトに対して第1の操作を適用し、複製された新たなオブジェクトに第2の操作を適用してもよい。これにより、第1の操作および第2の操作は無駄になることはない。
また、オブジェクトに対する操作には削除操作もある。例えば、端末2Aでオブジェクト32Aに対してテキスト入力操作(第1の操作)を行っているときに、他の端末2Bが同一のオブジェクト32Bを削除する操作を行う可能性がある。
他の端末2Bに表示されているオブジェクト32Bは、端末2Aの第1の操作が逐次適用されている。このため、他の端末2Bを操作するユーザは、端末2Aで操作が行われていることを視認するため、オブジェクト32Aと同一のオブジェクト32Bを削除しない可能性が高い。
ただし、他の端末2Bで削除操作が行われる可能性はゼロではない。この場合、他の端末2Bは、削除の操作を無効にするようにしてもよい。そして、端末2Aで第1の操作が行われなくなったときに、オブジェクト32Bを削除する操作を有効にしてもよい。
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
端末と1以上の他の端末との間でデータを同期し、
前記データに含まれるオブジェクトに対する操作が競合しない場合、前記端末による操作に関する第1の操作情報と前記他の端末の操作に関する第2の操作情報とに基づいて、前記オブジェクトが前記端末で操作されているときに、前記端末に前記第2の操作情報を表示するか否かを判定し、
前記第2の操作情報を表示すると判定された場合には、前記端末の画面に前記第1の操作情報と前記第2の操作情報とを表示する、
処理をコンピュータが実行する操作支援方法。
(付記2)
前記第1の操作情報と前記第2の操作情報との組み合わせごとに操作性に影響を与えるか否かを示すテーブルに基づいて、前記端末に前記第2の操作情報を表示するか否かを判定する、
付記1記載の操作支援方法。
(付記3)
前記端末が前記第1の操作情報を含む前記データを複製し、
複製した前記データに前記第2の操作情報を適用したデータを前記端末の画面に表示する、
付記1記載の操作支援方法。
(付記4)
前記第2の操作情報を前記第1の操作情報と異なる態様で表示する、
付記1記載の操作支援方法。
(付記5)
前記第2の操作情報と前記第1の操作情報とを異なる透明度または色合いで表示する、
付記4記載の操作支援方法。
(付記6)
前記第2の操作情報が前記端末の画面の領域外に位置する場合、文字情報を表示する、
付記4記載の操作支援方法。
(付記7)
前記他の端末で前記データの拡大または縮小が行われたときに、前記端末が前記第2の操作情報を拡大または縮小して表示する、
付記1記載の操作支援方法。
(付記8)
前記第1の操作情報または前記第2の操作情報の何れか一方の操作を破棄する処理を行う、
付記1記載の操作支援方法。
(付記9)
コンピュータに、
端末と1以上の他の端末との間でデータを同期し、
前記データに含まれるオブジェクトに対する操作が競合しない場合、前記端末による操作に関する第1の操作情報と前記他の端末の操作に関する第2の操作情報とに基づいて、前記オブジェクトが前記端末で操作されているときに、前記端末に前記第2の操作情報を表示するか否かを判定し、
前記第2の操作情報を表示すると判定された場合には、前記端末の画面に前記第1の操作情報と前記第2の操作情報とを表示する、
処理を実行させるための操作支援プログラム。
(付記10)
端末と1以上の他の端末との間でデータを同期させる同期部と、
前記データに含まれるオブジェクトに対する操作が競合しない場合、前記端末による操作に関する第1の操作情報と前記他の端末の操作に関する第2の操作情報とに基づいて、前記オブジェクトが前記端末で操作されているときに、前記端末に前記第2の操作情報を表示するか否かを判定する判定部と、
前記第2の操作情報を表示すると判定された場合には、前記端末の画面に前記第1の操作情報と前記第2の操作情報とを表示する表示部と、
を備える操作支援装置。