JP2014102815A - 表示端末装置、表示画面共有システム、及び表示画面共有方法 - Google Patents

表示端末装置、表示画面共有システム、及び表示画面共有方法 Download PDF

Info

Publication number
JP2014102815A
JP2014102815A JP2013186067A JP2013186067A JP2014102815A JP 2014102815 A JP2014102815 A JP 2014102815A JP 2013186067 A JP2013186067 A JP 2013186067A JP 2013186067 A JP2013186067 A JP 2013186067A JP 2014102815 A JP2014102815 A JP 2014102815A
Authority
JP
Japan
Prior art keywords
user
display
object data
unit
command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2013186067A
Other languages
English (en)
Inventor
Seiji Tsukada
誠司 塚田
Takeshi Nakada
武史 中田
Yusuke Takenaka
祐介 竹中
Akira Namita
亮 波多
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Funai Electric Co Ltd
Original Assignee
Funai Electric Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Funai Electric Co Ltd filed Critical Funai Electric Co Ltd
Priority to JP2013186067A priority Critical patent/JP2014102815A/ja
Priority to US14/048,229 priority patent/US20140123053A1/en
Publication of JP2014102815A publication Critical patent/JP2014102815A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04845Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range for image manipulation, e.g. dragging, rotation, expansion or change of colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Between Computers (AREA)
  • User Interface Of Digital Computer (AREA)
  • Processing Or Creating Images (AREA)

Abstract

【課題】描画装置から受信したオブジェクトデータを表示しても、既に表示されているオブジェクトデータが消失したかのような不安感をユーザに与えないようにする。
【解決手段】仮想空間に配置されるオブジェクトを表示部に表示する表示端末装置が識別情報生成部、送信部、受信部、保管部、及び表示制御部を備える。識別情報生成部は、ユーザ識別情報を含んでオブジェクト識別情報を生成する。送信部は、ユーザ入力されたオブジェクト及びそのオブジェクト識別情報を描画装置に送信する。受信部は、描画装置からオブジェクト及びそのオブジェクト識別情報を受信する。保管部は、送信部が送信したオブジェクトを受信部が受信するまでの間、描画装置から受信するオブジェクト及びオブジェクト識別情報を保管する。表示制御部は、受信部が受信したオブジェクトを表示するように、表示部の表示画面を更新する。
【選択図】図3

Description

本発明は、表示端末装置、表示画面共有システム、及び表示画面共有方法に関し、特に、複数の表示端末装置間で表示画面を共有する方法及びそのシステムに関する。
従来、描画装置が管理する描画スペースを、ネットワークを介して描画装置に接続する複数の表示端末装置が共有する描画システムが知られている。このような描画システムでは、一般に、エリア別に作業を担当するユーザが特定されており、同じエリアに対して複数のユーザが同時並列的に作業を行うことはない。すなわち、エリア毎に一人のユーザが作業を行っているため、時系列に操作履歴通りのオブジェクトが表示されても、ユーザが違和感を覚えることはない。
一方、たとえば特許文献1のように、複数の設計者がチーム形式で設計作業を行うCADシステムもある。このシステムでは、各設計者は、オブジェクトを自由に描画スペースに配置したり、配置されたオブジェクトの変更・削除などの操作をしたりすることができる。また、設計者が配置したオブジェクトは自身の表示端末装置に直ちに表示されるが、他の設計者が配置したオブジェクトは描画装置からネットワークを通じて自分の表示端末装置に送信される。そのため、設計者が配置したオブジェクトの表示と他の設計者が配置したオブジェクトの表示には時間差が生じる。
また、設計者が配置したオブジェクトは表示画面の最前面に表示されるが、配置したオブジェクトを描画装置に送信してから再び自分の表示端末装置で受信するまでの間に、他の設計者が配置したオブジェクトを受信する場合がある。
特許第2951312号公報
しかしながら、受信した順にオブジェクトを表示すると、既に表示されているオブジェクトがオーバーライトで消えてしまうという表示状況が発生し、あたかもオブジェクトが消失したようにみえるという不都合が生じる。このような問題は、特許文献1では考慮されていない。
本発明は、このような状況を鑑みてなされたものであり、描画装置から受信したオブジェクトデータを表示しても、既に表示されているオブジェクトデータが消失したかのような不安感をユーザに与えないようにすることができる表示端末装置、表示画面共有システム、及び表示画面共有方法を提供することを目的とする。
上記目的を達成するために、本発明の一の態様による表示端末装置は、仮想空間に配置されるオブジェクトデータを表示部に表示する表示端末装置であって、当該表示端末装置のユーザにより入力されたオブジェクトデータを示すオブジェクト識別情報を、当該ユーザを示すユーザ識別情報を含んで生成する識別情報生成部と、ユーザにより入力されたオブジェクトデータ、及び識別情報生成部により生成されたオブジェクト識別情報を描画装置に送信する送信部と、描画装置からオブジェクトデータ、及び当該オブジェクトデータを示すオブジェクト識別情報を受信する受信部と、送信部が送信したオブジェクトデータを受信部が受信するまでの間、描画装置から受信するオブジェクトデータ及びオブジェクト識別情報を保管する保管部と、受信部が受信したオブジェクトデータを表示するように、表示部の表示画面を更新する表示制御部と、を備えている。
上記構成によれば、送信部が送信したオブジェクトデータを受信部が受信するまでの間、描画装置から受信するオブジェクトデータ及びオブジェクト識別情報は、保管部に保管され、表示部の表示画面は更新されずに維持される。そして、送信したオブジェクトデータを受信部が受信すると、受信したオブジェクトデータを表示するように、表示部の表示画面が更新される。従って、表示制御部が表示部の表示画面を更新しても、表示端末装置のユーザによって入力されたオブジェクトデータを表示画面の最上位(最前面)位置に表示することができる。従って、描画装置から受信したオブジェクトデータを表示しても、既に表示されているオブジェクトデータが消失したかのような不安感をユーザに与えないようにすることができる。
また、表示画面の更新により、描画装置から受信したオブジェクトデータがまとめて表示されるので、オブジェクトデータの表示動作を一度に済ますことができる。従って、表示動作を複数回行う場合に比べて、表示画面のちらつき等を抑制し、ユーザに違和感を与えないようにすることができる。
また、上記構成において、描画装置から受信したオブジェクト識別情報に含まれるユーザ識別情報がユーザのユーザ識別情報と一致するか否かを判定する識別情報判定部をさらに備え、識別情報判定部によりユーザ識別情報が一致しないと判定した場合に、表示制御部は、描画装置から受信したオブジェクトデータ、及びオブジェクト識別情報を保管部に保管し、識別情報判定部によりユーザ識別情報が一致すると判定した場合に、表示制御部は、保管部に保管されているオブジェクトデータを表示するように、表示部の表示画面を更新してもよい。
この構成によれば、描画装置から受信したオブジェクト識別情報に含まれるユーザ識別情報が表示端末装置のユーザのユーザ識別情報と一致する場合には、描画装置から受信したオブジェクトデータとオブジェクト識別情報とが保管部に保管される。そして、表示部の表示画面は更新されずに維持される。また、両者が一致しない場合には、保管部に保管されているオブジェクトデータを表示するように、表示部の表示画面が更新される。従って、表示部の表示画面が更新されても、表示端末装置のユーザによって入力されたオブジェクトデータを表示画面の最上位(最前面)位置により確実に表示することができる。
また、上記構成において、保管部は、ユーザにより表示部に表示されているオブジェクトデータが編集されている間、描画装置から受信したオブジェクトデータ及びオブジェクト識別情報を保管してもよい。
この構成によれば、ユーザがオブジェクトデータを編集している間、描画装置から受信するオブジェクトデータ及びオブジェクト識別情報は、保管部に保管され、表示部の表示画面は更新されずに維持される。従って、より確実に、表示画面の更新により、既に表示されているオブジェクトデータが消失したかのような不安感をユーザに与えないようにすることができる。また、表示画面の更新に起因するちらつきなどをより効果的に抑制することができる。
また、上記構成において、表示画面を更新してから所定期間の間に受信部が描画装置からオブジェクトデータを受信する場合、表示制御部は、描画装置から受信するオブジェクトデータ及びオブジェクト識別情報を保管部に格納してもよい。
この構成によれば、表示画面を更新してから所定期間の間、描画装置から受信するオブジェクトデータ及びオブジェクト識別情報は、保管部に保管され、表示部の表示画面は更新されずに維持される。従って、さらに確実に、表示画面の更新により、既に表示されているオブジェクトデータが消失したかのような不安感をユーザに与えないようにすることができる。また、表示画面の更新に起因するちらつきなどもより効果的に抑制することができる。
また、上記構成において、描画装置として機能する描画ユニットをさらに備え、描画ユニットは、仮想空間に配置されるオブジェクトデータを登録する描画データベース、及び当該オブジェクトデータに実行するユーザ操作毎のレコードを蓄積する操作履歴データベースを格納する記憶部と、ユーザ操作に対応するコマンドに基づいて、描画データベース及び操作履歴データベースを編集し、描画データベースに登録されたオブジェクトデータを表示部に表示させる制御部と、を有し、操作履歴データベースに蓄積されるレコードは、ユーザ操作を示すコマンドと、ユーザ操作後のオブジェクトデータと、ユーザ操作を取り消す反転操作を示す反転コマンドと、ユーザ操作前のオブジェクトデータと、を含んで構成され、制御部は、ユーザ操作を取り消すコマンドが実行された場合、反転コマンドを実行させてユーザ操作前のオブジェクトデータを表示部に表示させてもよい。
上記構成によれば、操作履歴データベースに蓄積されるレコードは、コマンドと、ユーザ操作後のオブジェクトデータと、反転コマンドと、ユーザ操作前のオブジェクトデータと、を含んで構成される。また、コマンドはオブジェクトデータに実行するユーザ操作を示し、反転コマンドはユーザ操作を取り消す反転操作を示す。そのため、ユーザ操作を取り消すコマンドが実行された場合、操作履歴データベースを全検索することなく、反転コマンドを実行させてユーザ操作前のオブジェクトデータを表示部に表示させることができる。従って、表示画面を高速に同期して、高速に描画することができる。
また、上記構成において、制御部は、ユーザ操作をやり直すコマンドが実行された場合、ユーザ操作を示すコマンドを実行させてユーザ操作後のオブジェクトデータを表示部に表示させてもよい。
この構成によれば、ユーザ操作をやり直すコマンドが実行された場合、操作履歴データベースを全検索することなく、ユーザ操作を示すコマンドを実行させてユーザ操作後のオブジェクトデータを表示部に表示させることができる。
また、上記構成において、操作履歴データベースに蓄積されるレコードは、さらに、オブジェクトデータにユーザ操作を実行するユーザを示すユーザ識別情報を含んで構成され、制御部は、ユーザ操作を取り消すコマンドが実行された場合、操作履歴データベースに蓄積されているレコードにおいて、当該ユーザ操作を取り消すコマンドを実行したユーザのユーザ識別情報を含むレコードのうち最新のレコードに基づいて反転コマンドを実行させてユーザ操作前のオブジェクトデータを表示部に表示させてもよい。
この構成によれば、ユーザは自らが実行した最新のユーザ操作を選択的に取り消すことができる。従って、オブジェクトデータの操作性を向上させることができる。
さらに、上記構成において、制御部は、ユーザ操作をやり直すコマンドが実行された場合、操作履歴データベースに蓄積されているレコードにおいて、ユーザ操作をやり直すコマンドを実行したユーザのユーザ識別情報を含むレコードのうち最新のレコードに基づいてユーザ操作を示すコマンドを実行させてユーザ操作後のオブジェクトデータを表示部に表示させてもよい。
この構成によれば、ユーザは自らが実行した最新のユーザ操作を選択的に取り消した後、そのユーザ操作を再びやり直すことができる。従って、オブジェクトデータの操作性をさらに向上させることができる。
また、上記構成において、描画ユニットは、表示部、及び、ユーザ操作を受け付ける入力部のうちの少なくとも一方を備える他の表示端末装置とデータを送受する通信部をさらに有し、他の表示端末装置とネットワークを介して接続されてもよい。
この構成によれば、ネットワークを介して接続される他の表示端末装置でのオブジェクトデータの外部表示、及び、当該他の表示端末装置からのユーザ操作の外部入力の受け付けのうちの少なくとも一方を行うことができる。
また、上記目的を達成するために、本発明の一の態様による表示画面共有システムは、上述のような複数の表示端末装置と、複数の表示端末装置と接続される描画装置と、を備える。
上記構成によれば、表示端末装置において、送信部が送信したオブジェクトデータを受信部が受信するまでの間、描画装置から受信するオブジェクトデータ及びオブジェクト識別情報は、保管部に保管され、表示部の表示画面は更新されずに維持される。そして、送信したオブジェクトデータを受信部が受信すると、受信したオブジェクトデータを表示するように、表示部の表示画面が更新される。従って、表示制御部が表示部の表示画面を更新しても、表示端末装置のユーザによって入力されたオブジェクトデータを表示画面の最上位(最前面)位置に表示することができる。従って、描画装置から受信したオブジェクトデータを表示しても、既に表示されているオブジェクトデータが消失したかのような不安感をユーザに与えないようにすることができる。
また、上記構成において、表示端末装置は、表示部、及び、ユーザ操作を受け付ける入力部のうちの少なくとも一方を有し、描画装置は、表示端末装置とデータを送受する通信部をさらに有し、表示端末装置とネットワークを介して接続されてもよい。
この構成によれば、ネットワークを介して接続される表示端末装置でのオブジェクトデータの外部表示、及び、当該表示端末装置からのユーザ操作の外部入力の受け付けのうちの少なくとも一方を行うことができる。
また、上記目的を達成するために、本発明の一の態様による表示画面共有方法は、仮想空間に配置されるオブジェクトデータを登録する描画データベースを有する描画装置と接続される複数の表示端末装置の表示画面共有方法であって、表示端末装置が、ユーザにより入力されたオブジェクトデータを示すオブジェクト識別情報を、当該ユーザを示すユーザ識別情報を含んで生成するステップと、表示端末装置が、ユーザにより入力されたオブジェクトデータ、及び、生成するステップにて生成されたオブジェクト識別情報を描画装置に送信するステップと、表示端末装置が、描画装置からオブジェクトデータ、及び当該オブジェクトデータを示すオブジェクト識別情報を受信するステップと、表示端末装置が、送信するステップにて送信したオブジェクトデータを受信するまでの間、描画装置から受信するオブジェクトデータ及びオブジェクト識別情報を保管するステップと、表示端末装置が、受信するステップにて受信したオブジェクトデータを表示するように、表示部の表示画面を更新するステップと、を備えている。
上記構成によれば、表示端末装置が描画装置に送信したオブジェクトデータを描画装置から受信するまでの間、描画装置から受信するオブジェクトデータ及びオブジェクト識別情報は保管され、表示部の表示画面は更新されずに維持される。そして、表示端末装置が送信したオブジェクトデータを受信すると、受信したオブジェクトデータを表示するように、表示部の表示画面が更新される。従って、表示制御部が表示部の表示画面を更新しても、表示端末装置のユーザによって入力されたオブジェクトデータを表示画面の最上位(最前面)位置に表示することができる。従って、描画装置から受信したオブジェクトデータを表示しても、既に表示されているオブジェクトデータが消失したかのような不安感をユーザに与えないようにすることができる。
また、上記構成において、描画装置が、仮想空間に配置されるオブジェクトデータに実行するユーザ操作に対応するコマンドに基づいて描画データベースを編集するステップと、描画装置が、ユーザ操作を示すコマンド、ユーザ操作後のオブジェクトデータ、ユーザ操作を取り消す反転操作を示す反転コマンド、及び、ユーザ操作前のオブジェクトデータを含んで構成されるレコードをユーザ操作毎に蓄積する操作履歴データベースをユーザ操作に対応するコマンドに基づいて編集するステップと、描画装置が、描画データベースに登録されたオブジェクトデータを表示部に表示させるステップと、をさらに備え、表示させるステップは、描画装置が、ユーザ操作を取り消すコマンドが実行された場合、反転コマンドを実行させてユーザ操作前のオブジェクトデータを表示部に表示させるステップを含んでいてもよい。
この構成によれば、操作履歴データベースに蓄積されるレコードは、コマンドと、ユーザ操作後のオブジェクトデータと、反転コマンドと、ユーザ操作前のオブジェクトデータと、を含んで構成される。また、コマンドはオブジェクトデータに実行するユーザ操作を示し、反転コマンドはユーザ操作を取り消す反転操作を示す。そのため、ユーザ操作を取り消すコマンドが実行された場合、操作履歴データベースを全検索することなく、反転コマンドを実行させてユーザ操作前のオブジェクトデータを表示部に表示させることができる。従って、表示画面を高速に同期して、高速に描画することができる。
本発明によれば、描画装置から受信したオブジェクトデータを表示しても、既に表示されているオブジェクトデータが消失したかのような不安感をユーザに与えないようにすることができる表示端末装置、表示画面共有システム、及び表示画面共有方法を提供することができる。
本実施形態に係る分散型描画システムの概略構成図である。 描画サーバの概略構成図である。 クライアントの概略構成図である。 クライアントの表示画面の一例を示す図である。 線の色選択パレット及び線の太さ選択パレットの表示例を示す図である。 線の種類選択パレットの表示例を示す図である。 描画ツールパレットの表示例を示す図である。 アンドゥパレットの表示例を示す図である。 描画データ配列及び描画バックアップ配列の一例を示すデータ構造図である。 全操作履歴配列の一例を示すデータ構造図である。 アンドゥ履歴配列の一例を示すデータ構造図である。 描画スペーストークン配列の一例を示すデータ構造図である。 描画スペース接続配列の一例を示すデータ構造図である。 描画スペースのユーザ操作の一例を示す表である。 フリーハンド形式の図形オブジェクトが表現されたデータの一例を示す図である。 直線オブジェクトが表現されたデータの一例を示す図である。 円形オブジェクトが表現されたデータの一例を示す図である。 四角形オブジェクトが表現されたデータの一例を示す図である。 三角形オブジェクトが表現されたデータの一例を示す図である。 テキストオブジェクトが表現されたデータの一例を示す図である。 ユーザのログイン認証のシーケンス図である。 クライアントのログイン画面の一例を示す図である。 クライアント入室のシーケンス図である。 図形追加処理のシーケンス図である。 図形追加処理における描画サーバの動作を示すフローチャートである。 図形変更処理のシーケンス図である。 描画サーバの図形変更処理のフローチャートである。 図形削除処理のシーケンス図である。 描画サーバの図形削除処理のフローチャートである。 図形全削除処理のシーケンス図である。 描画サーバの図形全削除処理のフローチャートである。 アンドゥ用コマンド及びアンドゥ用オブジェクトデータの設定方法を示すフローチャートである。 描画サーバのアンドゥ処理のフローチャートである。 描画サーバのリドゥ処理のフローチャートである。 第1実施形態における各クライアントでの表示画面の更新状態を説明するシーケンス図である。 第2実施形態における各クライアントでの表示画面の更新状態を説明するシーケンス図である。
以下に、本発明の実施形態について、分散型描画システム1を例として図面を参照して説明する。
<第1実施形態>
(システムの構成)
図1は、本実施形態に係る分散型描画システムの概略構成図である。分散型描画システム1は、描画スペース(仮想空間)に配置されるオブジェクトデータを描画サーバ2に接続される複数のクライアント3に表示させる表示画面共有システムの一例である。描画サーバ2により管理される描画スペースには少なくとも1以上のユーザが参加できる。図1に示すように、描画サーバ2には、ネットワーク4を介して複数のクライアント3が接続されている。このネットワーク4は、たとえば、無線LAN、有線LAN、移動体通信網である。なお、描画サーバ2に接続されるクライアント3の数は、図1の例に限定されない。クライアント3は少なくとも1以上であればよい。
(描画サーバの構成)
次に、描画サーバ2の構成について説明する。描画サーバ2は、1以上の描画スペースを管理し、参加を許可したユーザにより使用されるクライアント3と描画スペースを共有するサーバ装置として機能する描画装置の一例である。図2は、描画サーバの概略構成図である。図2に示すように、描画サーバ2は、記憶部21と、通信部22と、CPU23と、を備える。
記憶部21は、不揮発性の記憶媒体であり、描画サーバ2の各構成部にて用いられる様々なプログラム及び制御情報を格納している。また、記憶部21は、描画サーバ2が管理する描画スペースのデータ、描画スペースに用いられる様々なデータ配列、及び、各描画スペースに参加可能なユーザに関するユーザデータなども格納している。データ配列は、たとえば、描画データ配列51、全操作履歴配列52、アンドゥ履歴配列53、描画バックアップ配列54、描画スペーストークン配列55、描画スペース接続配列56などである。描画データ配列51は描画スペースに配置されるオブジェクトデータを登録している。また、全操作履歴配列52はオブジェクトデータに実行するユーザ操作毎のレコードを蓄積している。なお、描画データ配列51、全操作履歴配列52、アンドゥ履歴配列53、及び描画バックアップ配列54は、各描画スペース毎に作成されている。これらのデータ配列については、後に詳述する。また、ユーザデータには、たとえば、参加を許可したユーザを識別するためのユーザID、及びそのユーザを認証するためのパスワードなどが登録されている。
通信部22は、ネットワーク4を介してクライアント3とデータを送受する通信インターフェースである。
CPU23は、記憶部21に格納されたプログラム及び制御情報を用いて、描画サーバ2の各構成部を制御する制御部である。また、CPU23は、記憶部21に格納されたデータの編集なども行う。特に、CPU23は、通信部22がクライアント3から受信する様々なユーザ操作に対応するコマンドに基づいて、描画データ配列51、全操作履歴配列52、及びアンドゥ履歴配列53などを編集する。そして、CPU23は、描画データ配列51に登録されたオブジェクトデータをクライアント3に表示させるように制御する。また、CPU23は、オブジェクトID及びユーザIDなどの様々な識別情報の判定などの処理も行う。
(クライアントの構成)
次に、クライアント3の構成について説明する。クライアント3は、描画サーバ2が管理する描画スペースへの参加が許可されたユーザにより使用されるクライアント装置(又は入出力装置)として機能する表示端末装置である。図3は、クライアントの概略構成図である。図3に示すように、クライアント3は、CPU31と、タッチパネル32と、フラッシュROM33と、RAM34と、送受信部35と、無線LANアンテナ36と、を備えている。このほか、クライアント3はさらに、たとえばキーボード、マウスなどの物理的な入力部を備えていてもよい。
CPU31は、フラッシュROM33に格納されるプログラム及び制御情報などを用いて、クライアント3の各構成部を制御する制御部である。また、CPU31は、ID生成部311と、ID判定部312と、表示制御部313とを有する。
ID生成部311は、オブジェクトデータを一意に示すオブジェクトIDを生成する識別情報生成部である。ID生成部311は、クライアント3のユーザによって入力されたオブジェクトデータを示すオブジェクトIDを、クライアント3のユーザを示すユーザIDを含んで生成する。なお、このオブジェクトIDは、クライアント3を使用するユーザを示す一意なユーザIDの文字列と、ユーザIDにおいて一意な固有値とを含んでいる。
ID判定部312は、オブジェクトID及びユーザIDなどの識別情報を判定する識別情報判定部である。ID判定部312は、送受信部35が描画サーバ2からデータ(たとえば、コマンド、オブジェクトID、オブジェクトデータなど)を受信したとき、受信したオブジェクトIDからユーザIDを抽出する。そして、抽出したユーザIDがクライアント3のユーザのユーザIDと一致するか否かを判定する。
表示制御部313は液晶ディスプレイ321の表示制御を行ない、送受信部35によって受信したオブジェクトデータを表示するように、液晶ディスプレイ321の表示画面7を更新する。表示制御部313は、ID判定部312が一致しないと判定する場合に、描画サーバ2から受信したオブジェクトデータを後述する保管部331に一時的に格納する。また、表示制御部313は、ID判定部312が一致すると判定する場合に、保管部331に一時的に格納されているオブジェクトデータを液晶ディスプレイ321に表示すべく、液晶ディスプレイ321の表示画面7を更新する。なお、このとき、表示制御部313は、既に表示画面7に表示されているオブジェクトのうち、描画サーバ2から受信したオブジェクトIDが示すオブジェクトを削除する。その後、表示制御部313は、保管部331に一時的に格納されている全てのオブジェクトデータと、送受信部35が描画サーバ2から受信したオブジェクトデータとを表示画面7の後述するオブジェクト表示領域71に表示する。なお、これらのオブジェクトデータは、送受信部35が描画サーバ2から受信した順に表示される。
こうすれば、表示画面7を更新しても、描画サーバ2に送信されるオブジェクトデータを表示画面7の最上位(最前面)位置に表示することができる。従って、描画サーバ2から受信したオブジェクトデータを表示しても、既に表示されているオブジェクトデータが消失したかのような不安感をユーザに与えないようにすることができる。表示画面7の更新により、描画サーバ2から受信したオブジェクトデータ(すなわち保管部331に格納されたオブジェクトデータ)がまとめて表示されるので、オブジェクトデータの表示動作を一度に済ますことができる。従って、表示動作を複数回行う場合に比べて、表示画面7のちらつき等を抑制し、ユーザに違和感を与えないようにすることができる。
また、クライアント3が、描画サーバ2に送信すべき全てのオブジェクトデータの送信を送受信部35が完了し、且つ、クライアント3から送信したオブジェクトデータを送受信部35が描画サーバ2から全て受信し終えた状態にあるとする。この場合、表示制御部313は、描画サーバ2から受信したオブジェクトデータを液晶ディスプレイ321に表示する。なお、この動作は、オブジェクトデータのオブジェクトIDが示すユーザIDとは無関係に行われる。すなわち、この動作では、ID判定部312はユーザIDの判定を行わない。
こうすれば、描画サーバ2に送信すべき全てのオブジェクトデータの送信を送受信部35が完了し、且つ、クライアント3から送信したオブジェクトデータを送受信部35が描画サーバ2から全て受信し終えた状態にあるとき、クライアント3は、描画サーバ2から受信するオブジェクトデータを直ちに液晶ディスプレイ321に表示することができる。従って、このとき、クライアント3は表示画面7を高速に更新することができる。
また、表示制御部312は、表示画面7の更新をしてから所定期間(たとえば、0.5[sec])の間に、送受信部35が描画サーバ2からオブジェクトデータを受信すると、そのオブジェクトデータを保管部331に格納する。この動作は、描画サーバ2から受信するオブジェクトデータのオブジェクトIDが示すユーザIDとは無関係に行われる。すなわち、この動作では、ID判定部312はユーザIDの判定を行わない。
こうすれば、描画サーバ2に送信したオブジェクトデータを描画サーバ2から受信するまでの期間が所定期間(たとえば、0.5[sec])よりも短い場合であっても、一時的に格納されているオブジェクトデータを表示するための表示画面7の更新をしないようにすることができる。従って、さらに確実に、表示画面7の更新により、表示画面7から既に表示されているオブジェクトデータが消失したかのような不安感をユーザに与えないようにすることができる。また、表示画面7の更新に起因するちらつきなどもより効果的に抑制することができる。
次に、タッチパネル32は、ユーザのタッチ操作によりユーザ入力を受け付ける表示入力部の一例である。たとえば、ユーザの指又はタッチペンなどが表示画面7に触れると、タッチパネル32は、そのタッチ操作が示すユーザ入力を受け付ける。このタッチパネル32は、液晶ディスプレイ321と、タッチセンサ部322と、を含んで構成される。液晶ディスプレイ321は、クライアント3を使用するユーザが参加する描画スペースのオブジェクトデータを表示する表示部の一例である。タッチセンサ部322は、ユーザ操作を受け付ける入力部の一例である。なお、クライアント3は、タッチパネル32に代えて、液晶ディスプレイ321などの表示部と、たとえばキーボード、マウスなどの入力部と、をそれぞれ独立して備えていてもよい。
フラッシュROM33は、不揮発性の記憶媒体であり、クライアント3の各構成部にて用いられる様々なプログラム及び制御情報、及び描画スペースを表示するためのデータなどを格納している。また、フラッシュROM33は、送受信部35が描画サーバ2から受信したデータ(たとえば、コマンド、オブジェクトデータ、オブジェクトIDなど)を一時的に格納する保管部331を有している。なお、保管部331は、フラッシュROM33に代えて、RAM34が有していてもよい。
RAM34は揮発性の記憶媒体である。
送受信部35は、無線LANアンテナ36を介してネットワーク4に接続される通信インターフェースであり、描画サーバ2と様々なデータを送受する。たとえば、送受信部35は、オブジェクトデータに実行するユーザ操作を示すコマンドとユーザ操作後のオブジェクトデータ及びそのオブジェクトIDとを描画サーバ2に送信する送信部として機能する。また、送受信部35は、コマンドとオブジェクトデータ及びそのオブジェクトIDとを描画サーバ2から受信する受信部としても機能する。なお、本実施形態では、送受信部35が送信部及び受信部の機能を有しているが、送信部と受信部とを別々に備える構成であってもよい。
(クライアントの表示画面)
次に、各クライアント3のタッチパネル32における描画スペースの表示画面7について説明する。図4は、クライアントの表示画面の一例を示す図である。図4に示すように、表示画面7は、オブジェクト表示領域71と、メニュー表示領域72とを含んで構成されている。
オブジェクト表示領域71は、クライアント3のユーザが参加している描画スペースのオブジェクトデータを表示する領域である。この描画スペースには、たとえば図形オブジェクト、テキストオブジェクト、イメージ(画像)オブジェクトなどのオブジェクトを配置することが可能である(後述の図15A〜図15F参照)。なお、図形オブジェクトには、所定の図形(円形、多角形、及びそれらの塗りつぶし図形、直線、矢印など)のほか、ユーザがタッチパネル32にタッチ入力するフリーハンド(手描き)形式の図形も含まれる。また、以下では、オブジェクトデータを単に「オブジェクト」と呼び、図形オブジェクトを単に「図形」と呼ぶことがある。
メニュー表示領域72は、描画スペースに配置されるオブジェクトを操作するために必要なアイコンが配列された描画メニューを表示する領域である。描画メニューは、線の色選択ボタン721、線の種類選択ボタン722、描画ツールボタン723、アンドゥボタン724、及びクリアボタン725を含んで構成されている。このほか、描画メニューは、テキストモードボタン、画像入力ボタン、選択モードボタン、キャンパス編集ボタン、スナップショットボタン、及び描画スペース情報表示ボタンをも含んで構成されている。なお、テキストモードボタンは、入力したテキストデータを配置するためアイコンである。また、画像入力ボタンは、所望のイメージデータを配置するためのアイコンである。
線の色選択ボタン721は、描画スペースの図形の線の色を選択するためのアイコンである。ユーザが線の色選択ボタン721が選択すると、その表示位置の近傍に、線の色選択パレット7211及び線の太さ選択パレット7212が表示される。図5は、線の色選択パレット及び線の太さ選択パレットの表示例を示す図である。図5に示すように、線の色選択パレット7211には複数の色サンプルが表示され、線の太さ選択パレット7212には複数の太さサンプルが表示される。ユーザは、描画スペースから所望の図形を選択した状態で、タッチ入力によって色サンプルのいずれかを選択することにより、選択した図形を構成する線の色を色サンプルと同じ色にすることができる。また、いずれかの太さサンプルを選択することにより、選択した図形の線を太さサンプルと同じ太さにすることができる。
線の種類選択ボタン722は、描画スペースの図形の線の種類(たとえば実線、破線、一点鎖線など)を選択するためのアイコンである。線の種類選択ボタン722が選択されると、その表示位置の近傍に、線の種類選択パレット7221が表示される。図6は、線の種類選択パレットの表示例を示す図である。図6に示すように、線の種類選択パレット7221には、複数の線サンプルが表示される。ユーザは、描画スペースから所望の図形を選択した状態で、タッチ入力によって線サンプルのいずれかを選択すると、選択した所望の図形の線を線サンプルと同じ種類の線にすることができる。
描画ツールボタン723は、描画スペースに図形を追加するためのアイコンである。描画ツールボタン723が選択されると、その表示位置の近傍に、描画パレット7231が表示される。図7は、描画パレットの表示例を示す図である。図7に示すように、描画パレット7231には、フリーハンド表示7231aと、複数の図形サンプル(直線、矢印、円形、四角形、三角形など)とが表示される。ユーザは、たとえばフリーハンド表示7231aをタッチ入力により選択した場合、タッチパネル32の表面をなぞると、タッチ入力の軌跡に対応する図形を描画スペースに配置することができる。また、ユーザは、複数の図形サンプルのいずれかをタッチ入力により選択した場合、選択した図形サンプルと同じ図形を描画スペースに配置することができる。なお、このとき、ユーザは、配置する図形のサイズなども設定可能であるが、その設定方法は本発明の趣旨とは異なるため、その説明を省略する。
アンドゥボタン724は、ユーザが描画スペースに行ったユーザ操作を取り消す反転操作(アンドゥ)又はその復活操作(リドゥ)をするためのアイコンである。アンドゥボタン724が選択されると、その表示位置の近傍に、アンドゥパレット7241が表示される。図8は、アンドゥパレットの表示例を示す図である。図8に示すように、アンドゥパレット7241には、マイアンドゥボタン7241a、全体アンドゥボタン7241b、及びリドゥボタン7241cが表示される。
マイアンドゥボタン7241aは、個人アンドゥ処理を行うためのアイコンである。なお、個人アンドゥ処理は、たとえば、クライアント3Aであれば、ユーザAが描画スペースに実行したユーザ操作のうちの最も直前(最新)の操作を取り消すための処理である。この場合、個人アンドゥ処理によりユーザAが実行したユーザ操作のみを取り消すことができる。
また、全体アンドゥボタン7241bは、全体アンドゥ処理を行うためのアイコンである。全体アンドゥ処理は、クライアント3の全ユーザのうちのいずれかが描画スペースに実行したユーザ操作のうちの最も直前(最新)の操作を取り消すための処理である。すなわち、全体アンドゥ処理は、たとえば、ユーザAであれば、ユーザAが入力した操作だけではなく、ユーザA以外に描画スペースに参加しているユーザが入力した操作も取り消すことができる。また、ユーザA以外のユーザも同様である。
また、リドゥボタン7241cは、個人アンドゥ処理又は全体アンドゥ処理を取り消すリドゥ処理を行うためのアイコンである。
これら、個人アンドゥ処理、全体アンドゥ処理、及びリドゥ処理については、後に詳述する。
クリアボタン725(図4参照)は、描画スペースに配置されたオブジェクトを全削除するためのアイコンである。
(データ配列の構造)
次に、描画スペースに用いられる各データ配列(描画データ配列51、全操作履歴配列52、アンドゥ履歴配列53、描画バックアップ配列54、描画スペーストークン配列55、及び描画スペース接続配列56)について説明する(図2参照)。図9は、描画データ配列及び描画バックアップ配列の一例を示すデータ構造図である。図10は、全操作履歴配列の一例を示すデータ構造図である。図11は、アンドゥ履歴配列の一例を示すデータ構造図である。図12は、描画スペーストークン配列の一例を示すデータ構造図である。図13は、描画スペース接続配列の一例を示すデータ構造図である。図14は、描画スペースのユーザ操作の一例を示す表である。なお、図14の操作内容は図9及び図10のデータ構造と対応している。
図9に示す描画データ配列51は、描画スペースに配置されるオブジェクトデータを保持するための描画データベースであり、描画スペース毎に存在している。描画データ配列51は、オブジェクトIDと、オブジェクトデータと、ユーザIDと、Zオーダーとを含んで構成されている。オブジェクトIDは、描画スペースに配置される各オブジェクトデータを識別するための一意な文字列のデータであり、各オブジェクトデータに個別に付与されるオブジェクト識別情報である。オブジェクトデータは、描画スペースに配置されるオブジェクトの本体データである。後述するように、オブジェクトデータは、オブジェクトID及びオブジェクトの詳細な状態を示すベクトルデータ(たとえば形状を示す座標値、線の色、太さ、種類など)などを含んで構成されている。ユーザIDは、クライアント3を使用するユーザを識別するための一意なユーザ識別情報であり、描画データ配列51ではオブジェクトを配置したユーザを示している。Zオーダーは、描画スペースにおける各オブジェクトの上下関係を表わすデータである。Zオーダーの数値が大きいほどオブジェクトは前面(上位)側に配置され、数値が小さいほどオブジェクトは背面(下位)側に配置される。たとえば、Zオーダーが「1」のオブジェクトは描画スペースの最背面(最下位)に配置される。
また、描画バックアップ配列54は、描画スペースのオブジェクトデータが全削除される際に作成される描画データ配列51の複製(バックアップ)データである。すなわち、描画バックアップ配列54は、全削除操作された描画スペースを、後述するアンドゥ処理によりリストアするためのデータ配列である。そのため、描画バックアップ配列54は、図9に示すように、描画データ配列51と同様のデータ構造となっている。また、描画バックアップ配列54は、図形の全削除処理が行われる度に作成されるため、その世代(何番目に作成されたか)が分るようになっている。たとえば、世代が描画バックアップ配列54のファイル名で表現されていてもよいし、世代を示すメタデータが描画バックアップ配列54に付与されていてもよい。
図10に示す全操作履歴配列52は、描画スペースのオブジェクトデータに実行するユーザ操作毎のレコードを蓄積する操作履歴データベースとして機能するデータ配列である。全操作履歴配列52は、オブジェクトデータのユーザ操作をアンドゥする処理、及びリドゥする処理を実現するために用いられ、描画スペース毎に存在している。全操作履歴配列52は、コマンド番号と、コマンドと、ユーザ操作後のオブジェクトデータと、アンドゥ用コマンドと、アンドゥ用オブジェクトデータと、世代付きの描画バックアップ配列54と、オブジェクトIDと、ユーザのユーザIDと、個人アンドゥ済みデータと、実行前Zオーダーとを含んで構成される。なお、図10に示す全操作履歴配列52において、空欄は、データが登録されないこと、或いはヌルデータが格納されることを示している。
コマンド番号は、描画サーバ2がコマンドを受信した順番(コマンドが示すユーザ操作を実行した順番)を識別するためデータである。コマンドは、ユーザが使用するクライアント3から描画サーバ2が受信したユーザ操作を示す。アンドゥ用コマンドは、ユーザ操作を取り消すアンドゥ操作(反転操作)を示す反転コマンドである。アンドゥ用オブジェクトデータは、ユーザ操作前のオブジェクトデータを示す。描画バックアップ配列54は、コマンドが描画スペースに配置されたオブジェクトの全削除を示す場合にそのコマンドを含むレコードに登録され、描画バックアップ配列54の格納先と、その世代(♯n:nは1以上の正の整数)とを示す。オブジェクトIDは、オブジェクトデータを識別するための一意なオブジェクト識別情報である。ユーザIDは、オブジェクトデータにユーザ操作を実行したユーザを示す一意なユーザ識別情報である。個人アンドゥ済みデータは、後述する個人アンドゥ処理が行われたか否かを示している。個人アンドゥ処理が行われていないレコードであれば”FALSE”が設定されるが、個人アンドゥ処理が行われたレコードであれば”TRUE”が設定される。実行前Zオーダーは、コマンドが示すユーザ操作が実行される前のレコードのZオーダーを示す。
図11に示すアンドゥ履歴配列53は、ユーザ操作を取り消すコマンドにより実行されたアンドゥ操作毎のレコードを蓄積するアンドゥ履歴データベースとして機能するデータ配列であり、描画スペース毎に存在している。アンドゥ履歴配列53は、アンドゥ番号と、アンドゥ種類と、アンドゥユーザIDとを含んで構成される。アンドゥ番号は、描画サーバ2がユーザ操作を取り消すコマンドを受信した順番(アンドゥ操作を実行した順番)を識別するためデータである。アンドゥ種類は、アンドゥ操作により個人アンドゥ処理及び全体アンドゥのうちのどちらが実行されたかを示す。アンドゥユーザIDは、個人アンドゥを実行したユーザのユーザIDを示す。なお、全体アンドゥが実行される場合には、データが登録されない、或いはヌルデータが格納される。
図12に示す描画スペーストークン配列55は、描画サーバ2が管理する描画スペースへの参加を予め登録しているユーザと、そのユーザが参加する描画スペースとを関連付けるためのデータ配列である。描画スペーストークン配列55は、ユーザIDと、描画スペーストークンと、描画スペースIDと、を含んで構成されている。なお、描画スペースIDは、描画サーバ2が管理する描画スペースを識別するための一意なデータであり、描画スペーストークン配列55では、ユーザIDにより識別されるユーザに参加を許可する描画スペースを示している。描画スペーストークンは、ユーザと描画スペースIDとを紐付けるためのデータであり、たとえばユーザが参加を要求する描画スペースを識別するための一時的なパスワードなどである。
図13に示す描画スペース接続配列56は、ユーザが使用するクライアント3の通信経路と、ユーザ及び該ユーザが参加する描画スペースとを関連付けるためのデータ配列である。描画スペース接続配列56は、ネットワーク接続情報、ユーザID、描画スペースIDで構成される。なお、ネットワーク接続情報は、ユーザがたとえばWebsocket、SPDY、またはこれらに類似する他のプロトコルなどを用いて描画サーバ2に新規接続したときに得られる。ネットワーク接続情報は、たとえば送信元(ユーザが使用するクライアント3)のIPアドレス、ポート、描画サーバ2の内部情報(たとえばOSのパラメータ)などを含んでいる。また、ユーザIDは描画サーバ2に接続しているユーザを示し、描画スペースIDはユーザIDにより識別されるユーザが参加(すなわち、ユーザが使用するクライアント3が入室)する描画スペースを示している。
(オブジェクトデータ)
次に、描画スペースに配置されるオブジェクトデータについて詳しく説明しておく。前述したように、描画スペースには、図形オブジェクト、テキストオブジェクト、及びイメージ(画像)オブジェクトなどの配置が可能である。また、図形オブジェクトには、たとえば、フリーハンド形式(手描き)の図形、直線、矢印、円形、四角形、及び三角形などのオブジェクトがある。図15A〜15Fは、各オブジェクトデータの表現例を示している。
図15Aは、フリーハンド形式の図形オブジェクトが表現されたデータの一例を示す図である。図15Aに示すように、フリーハンド形式の図形オブジェクトデータは、たとえば、オブジェクトIDと、タッチ入力の軌跡により閉じた領域の内側を塗りつぶす色と、線の太さと、線の色と、及びタッチ入力の軌跡が通過した点の座標配列とを含んで表現される。
図15Bは、直線オブジェクトが表現されたデータの一例を示す図である。図15Bに示すように、直線オブジェクトデータは、たとえば、オブジェクトIDと、タッチ入力を開始した位置のX座標及びY座標と、タッチ入力を終了した位置のX座標及びY座標と、線の太さと、線の色とを含んで表現される。
図15Cは、円形オブジェクトが表現されたデータの一例を示す図である。図15Cに示すように、円形オブジェクトデータは、たとえば、オブジェクトIDと、中心点のX座標及びY座標と、X軸方向の半径と、Y軸方向の半径と、線の太さと、線の色と、線の種類(たとえば、実線、破線など)とを含んで表現される。
図15Dは、四角形オブジェクトが表現されたデータの一例を示す図である。図15Dに示すように、四角形オブジェクトデータは、たとえば、オブジェクトIDと、所定の頂点のX座標及びY座標と、図形の大きさ(幅及び高さ)、線の太さと、線の色と、線の種類とを含んで表現される。なお、所定の頂点としては、たとえばタッチパネル32に表示されたときの左上の頂点を例示することができる。
図15Eは、三角形オブジェクトが表現されたデータの一例を示す図である。図15Eに示すように、三角形オブジェクトデータは、たとえば、オブジェクトIDと、三辺で囲まれた領域の内側を塗りつぶす色と、線の太さと、線の色と、3つの頂点の座標配列とを含んで表現される。
図15Fは、テキストオブジェクトが表現されたデータの一例を示す図である。図15Fに示すように、テキストオブジェクトデータは、たとえば、オブジェクトIDと、テキストデータを表示する領域の所定の位置のX座標及びY座標と、フォントサイズと、文字色と、テキストデータの内容を示す文字列とを含んで表現される。なお、テキストデータを表示する領域の所定の位置としては、たとえばタッチパネル32に表示されたときの最も左上側の位置を例示することができる。
(描画スペースへの入室)
次に、ユーザAが、描画スペースに参加し、描画スペースのオブジェクトを操作する方法について説明する。なお、以下では、ユーザAが使用するクライアント3が描画スペースに入室する例を説明するが、クライアント3A以外のクライアント3が入室する際も同様の処理が行われることは言うまでもない。また、以下では、ユーザAが使用するクライアント3をクライアント3Aと呼び、クライアント3A以外のm個(mは0又は1以上の正の整数)のクライアント3をクライアント3Bと総称する。
((ログイン認証処理))
まず、ユーザAが、クライアント3Aを使用して、描画サーバ2が管理する所定の描画スペースに参加する際のログイン認証手順について説明する。図16は、ユーザのログイン認証のシーケンス図である。また、図17は、クライアントのログイン画面の一例を示す図である。
ログイン認証を開始する際、クライアント3Aのタッチパネル32には図17のようなログイン画面8が表示されている。このログイン画面8には、ユーザID入力部81と、パスワード入力部82と、ログインボタン83と、ユーザ作成ボタン84とが表示されている。ユーザID入力部81はユーザIDを入力するための表示オブジェクトであり、パスワード入力部82はパスワードを入力するための表示オブジェクトである。また、ログインボタン83はログイン認証を開始させるための表示オブジェクトであり、ユーザ作成ボタン84は描画サーバ2に新規ユーザとして登録を行うための表示オブジェクトである。
クライアント3AのユーザAはログイン画面8を見て、ユーザAに予め付与された一意のユーザIDをユーザID入力部81に入力し、描画サーバ2に予め登録されているユーザAのパスワードをパスワード入力部82に入力する(SQ101)。ユーザがログインボタン83をタップすると、クライアント3Aは、HTTP(又はHTTPS)のプロトコルを用いてユーザID及びパスワードを描画サーバ2に送信する(SQ102)。
描画サーバ2は、クライアント3Aから送られてきたユーザIDとパスワードの組み合わせが正しいか判断を行なう。ユーザIDとパスワードの組み合わせが正しければ、描画サーバ2は、クライアント3Aに対して、一意的なユーザトークンを生成する。なお、ユーザトークンとは、ユーザと描画スペースとを紐付けるためのデータであり、たとえば参加を要求するユーザを識別するための一時的なパスワードなどである。描画サーバ2は、ログイン認証が成功した旨とともにユーザトークンをクライアント3Aに送信する(SQ103)。そして、次に説明する描画スペース入室処理が開始される。
なお、ユーザIDとパスワードの組み合わせが正しくなければ、SQ103にて描画サーバ2は、クライアント3Aに対して、ログイン認証に失敗したことを示すエラーコードをクライアント3Aに送信する。そして、ログイン認証が終了する。或いは、ログイン認証を最初からやり直すようにしてもよい。
((描画スペース入室処理))
次に、ログイン認証されたユーザAにより使用されるクライアント3Aが描画スペースに入室する手順について説明する。図18は、クライアント入室のシーケンス図である。
ログイン認証に成功したクライアント3Aは、ユーザトークンとともに、ユーザAが参加できる描画スペースを示す描画スペースリスト(board list)を要求する旨を描画サーバ2に送信する(SQ201)。
描画サーバ2は、受信したユーザトークンが正しいかチェックを行う。ユーザトークンが正しければ、描画サーバ2は、ユーザトークンからユーザIDを抽出する。描画サーバ2は、描画スペーストークン配列55を参照してユーザIDからユーザAを特定し、ユーザAが参加する描画スペースリストを作成する。そして、描画サーバ2は、描画スペースリストの提供を許可する旨とともに、描画スペースリストをクライアント3Aに送信する(SQ202)。
一方、ユーザトークンが正しくなければ、SQ202にて描画サーバ2は、描画スペースリストの提供を許可しない旨をクライアント3Aに送信する。
描画スペースリストを受信したクライアント3Aは、その描画スペースリスト(たとえば各描画スペース名の一覧)をタッチパネル32に表示する(SQ203)。描画スペースリストを見たユーザAは、タップ入力により参加を所望する描画スペースを選択する(SQ204)。クライアント3Aは、選択された描画スペースの描画スペースIDとともに、入室許可を要求する旨及びユーザトークンを描画サーバ2に送信する(SQ205)。
描画サーバ2は、受信したユーザトークンが正しいかチェックを行う。ユーザトークンが正しければ、描画サーバ2は、受信した描画スペースIDに対応する描画スペーストークンを作成する。このとき、描画サーバ2は、ユーザIDと、生成した描画スペーストークンと、受信した描画スペースIDとを描画スペーストークン配列55に登録する。そして、描画サーバ2は、入室を許可する旨とともに、生成した描画スペーストークンをクライアント3Aに送信する(SQ206)。
一方、ユーザトークンが正しくなければ、SQ206にて描画サーバ2は、入室を許可しない旨をクライアント3Aに送信する。
入室が許可されたクライアント3Aは、描画スペーストークンとともにたとえばWebSocketで描画サーバ2と接続する(SQ207)。
描画サーバ2は、WebSocketの新規接続を検出すると、描画スペーストークンが付加されているか否かを判定する。描画スペーストークンが付加されていれば、描画サーバ2は、描画スペーストークン配列55を参照し、受信した描画スペーストークンが、SQ206にてクライアント3A(すなわちユーザA)に送信した描画スペーストークンと一致するか否かを判定する。
描画スペーストークンが正しければ、WebSocketの新規接続時に得られるネットワーク接続情報と、ユーザIDと、描画スペーストークンとを描画スペース接続配列56に追加登録する。さらに、描画サーバ2は、クライアント3Aが入室した描画スペースの描画データ配列51を編集する。なお、この編集により、描画データ配列51のレコードがZオーダー順に並び替えられる。そして、描画サーバ2は、接続を許可する旨及び画面更新を示すコマンドとともに、編集した描画データ配列51のうちのオブジェクトデータのみをクライアント3Aに送信する(SQ208)。クライアント3Aは、受信したオブジェクトデータに基づいて描画スペースを液晶ディスプレイ321に表示する。こうして、ユーザAは、所望する描画スペースに参加することができ、オブジェクトの操作が可能な状態となる。
一方、SQ207にて描画スペーストークンが付加されていない場合、又は、その描画スペーストークンが正しくない場合、SQ208にて描画サーバ2はクライアント3Aとの接続を拒否する。
(オブジェクトの操作)
次に、描画スペースに参加したユーザAは、オブジェクトの追加、削除、変更、及び全削除などの操作を行うことができる。なお、以下では、これらの操作例として、図形オブジェクトに対する各操作を説明する。
((オブジェクトの追加(配置)))
まず、ユーザAによる描画スペースへの図形追加処理について説明する。この処理では、描画スペースに図形オブジェクトを配置する。
(((システムの動作)))
図19は、図形追加処理のシーケンス図である。ユーザAはクライアント3Aの表示画面7の描画パレット7231(図7参照)から所望の図形サンプルを選択し、描画スペースに追加する図形を入力する(SQ301)。
クライアント3Aは、ユーザ入力に基づく図形オブジェクトデータと、そのオブジェクトIDとを同時に作成する。たとえば、描画パレット7231からフリーハンド表示7231aが選択されると、ユーザAがタッチパネル32をなぞることにより、その軌跡に対応する手描きの図形が入力される。クライアント3Aは、ユーザが手描きした図形の各座標を検出し、これらの座標を通る図形のオブジェクトデータ(図15A)と、この図形オブジェクトデータの一意なオブジェクトIDとを生成する。
また、直線を示す図形サンプル表示が選択されると、クライアント3Aは、直線のオブジェクトデータ(図15B)と、この図形オブジェクトデータのオブジェクトIDとを生成する。この図形オブジェクトデータは、ユーザAがタッチ入力を開始した位置を示す第1座標と、タッチ入力を終了した位置を示す第2座標とを結ぶ直線を示す。第1座標はたとえばタッチパネル32に指又はタッチペンが初めて触れた位置であり、第2座標はたとえばタッチパネル32から指又はタッチペンを離した位置である。
また、円形を示す図形サンプル表示が選択されると、クライアント3Aは、円形のオブジェクトデータ(図15C)と、この図形オブジェクトデータのオブジェクトIDとを生成する。この図形オブジェクトデータは、ユーザAがタッチ入力を開始した位置を示す第1座標と、タッチ入力を終了した位置を示す第2座標とを結ぶ直線が対角線になる矩形に内接し、その対角線の中点を中心とする円形を示す。
また、四角形を示す図形サンプル表示が選択されると、クライアント3Aは、四角形のオブジェクトデータ(図15D)と、この図形オブジェクトデータのオブジェクトIDと、を生成する。この図形オブジェクトデータは、ユーザAがタッチ入力を開始した位置を示す第1座標と、タッチ入力を終了した位置を示す第2座標とを結ぶ直線が対角線になる矩形に内接する四角形を示す。
また、三角形を示す図形サンプル表示が選択されると、クライアント3Aは、三角形の図形オブジェクトデータ(図15E)と、この図形オブジェクトデータのオブジェクトIDと、を同時に生成する。この図形オブジェクトデータは、ユーザAがタッチ入力を開始した位置を示す第1座標と、タッチ入力を終了した位置を示す第2座標とを結ぶ直線が対角線になる矩形に内接する三角形を示す。
そして、クライアント3Aは、図形追加を示すコマンドとともに、オブジェクトIDを内包したオブジェクトデータに描画サーバ2に送信する(SQ302)。
描画サーバ2は、図形追加を示すコマンドをクライアント3Aから受信すると、図形追加処理(後述の図20参照)を行なう。そして、描画サーバ2は、描画スペースに入室している全てのクライアント3に、コマンド(図形追加)と、オブジェクトIDを内包したオブジェクトデータと、を送信する(SQ303)。
クライアント3A(及びクライアントB)は、コマンド(図形追加)とオブジェクトIDを内包したオブジェクトデータとを描画サーバ2から受信し、受信したオブジェクトデータを表示すべく、表示画面7を更新する。こうして、ユーザAが入力した図形が描画スペースに配置される。
(((描画サーバの動作)))
ここで、図形追加処理における描画サーバ2の動作を詳しく説明する。図20は、図形追加処理における描画サーバの動作を示すフローチャートである。
描画サーバ2は、SQ302にて図形追加を示すコマンドを受信したときに得られるネットワーク接続情報に基づいて、描画スペース接続配列56からコマンドの発行元となるユーザIDを抽出する(S401)。さらに、描画サーバ2は、クライアント3Aから受信したデータをオブジェクトID及びオブジェクトデータに分解する(S402)。また、描画サーバ2は、全操作履歴配列52からZオーダーの最大値を検出し、その最大値をインクリメント(1を加算)した値を用意する(S403)。なお、この値は、描画スペースの最前面を示す。
描画サーバ2は、S402及びS403にて得たデータを用いて、クライアント3Aが入室している描画スペースの描画データ配列51を編集する(S404)。この編集により、描画データ配列51では、オブジェクトID、オブジェクトデータ、ユーザAを示すユーザID、及び、図形を最前面に配置するためのZオーダーを含んで構成される新たなレコードが追加される。
また、S404と同時に、描画サーバ2は、S402及びS403にて得たデータを用いて、クライアント3Aが入室している描画スペースの全操作履歴配列52を編集する(S405)。この編集により、全操作履歴配列52には、新たなレコードが追加される。この新たなレコードは、最新のコマンド番号、コマンド(図形追加)、オブジェクトデータ、アンドゥ用コマンド(図形削除)、オブジェクトID、ユーザID、及び、個人アンドゥ済みデータを含んで構成されている。コマンド(図形追加)はクライアント3Aから受信し、アンドゥ用コマンド(図形削除)は図形追加操作を取り消すために用いられる。また、ユーザIDはユーザAを示し、個人アンドゥ済みデータは”FALSE”を示す。なお、クライアント3Aから受信したコマンドが図形追加を示すため、アンドゥ用コマンドは図形削除を示している。また、新たなレコードには、アンドゥ用オブジェクトデータ、描画バックアップ配列、及び実行前Zオーダーは格納されないが、それぞれにヌル(オブジェクト)データが格納されていてもよい。
そして、描画サーバ2は、前述のSQ303を行う(S406)。なお、このとき、ヌル(オブジェクト)データが格納されているデータを送信してもよいし、送信しなくてもよい。
なお、上述の追加例では、図形オブジェクトを追加しているが、他のオブジェクト(たとえばテキストオブジェクト、イメージオブジェクトなど)を同様の手順により追加することも可能である。
((オブジェクトの変更方法))
次に、ユーザAによる描画スペースの図形変更処理について説明する。ここでは、図形変更処理の例として、描画スペースに既に描画されている図形の線の色を変更する場合を説明する。
(((システムの動作)))
図21は、図形変更処理のシーケンス図である。ユーザAは、変更を行う図形を描画スペースから選択した後、クライアント3Aの表示画面7の線の色選択パレット7211(図5参照)から所望の線の色サンプルを選択する(SQ501)。
クライアント3Aは、変更後の図形オブジェクトデータの生成と、選択された図形のオブジェクトIDの選出とを行う。そして、クライアント3Aは、図形変更を示すコマンドととともに、変更後のオブジェクトデータにそのオブジェクトIDを内包させて、描画サーバ2に送信する(SQ502)。
描画サーバ2は、図形変更を示すコマンドをクライアント3Aから受信すると、図形変更処理(後述の図22参照)を行なう。そして、描画サーバ2は、描画スペースに入室している全てのクライアント3に、コマンド(図形変更)と、オブジェクトIDを内包した変更後のオブジェクトデータとを送信する(SQ503)。
クライアント3A(及びクライアントB)は、コマンド(図形変更)とオブジェクトIDを内包したオブジェクトデータとを描画サーバ2から受信し、受信したオブジェクトデータを表示すべく、表示画面7を更新する。こうして、ユーザAが変更した図形は描画スペースに配置される。
(((描画サーバの動作)))
ここで、図形変更処理における描画サーバ2の動作を詳しく説明する。図22は、図形変更処理における描画サーバの動作を示すフローチャートである。
描画サーバ2は、SQ502にて図形変更を示すコマンドを受信したときに得られるネットワーク接続情報に基づいて、描画スペース接続配列56からコマンドの発行元となるユーザIDを抽出する(S601)。さらに、描画サーバ2は、クライアント3Aから受信したデータをオブジェクトID及びオブジェクトデータに分解する(S602)。
描画サーバ2は、S602にて得たデータを用いて、クライアント3Aが入室している描画スペースの描画データ配列51を編集する(S603)。この編集により、描画データ配列51では、SQ502にて受信したオブジェクトIDに対応するオブジェクトデータのみが、受信したオブジェクトデータに置き換えられる。
またS603と同時に、描画サーバ2は、S602にて得たデータを用いて、クライアント3Aが入室している描画スペースの全操作履歴配列52を編集する(S604)。この編集により、全操作履歴配列52には、新たなレコードが追加される。このレコードは、最新のコマンド番号、コマンド(図形変更)、オブジェクトデータ、アンドゥ用コマンド(図形変更)、アンドゥ用オブジェクトデータ、オブジェクトID、ユーザID、個人アンドゥデータ、及び、実行前Zオーダーを含んで構成される。コマンド(図形変更)はクライアント3Aから送信され、アンドゥ用コマンド(図形変更)は図形変更操作を取り消すために用いられる。アンドゥ用オブジェクトデータは図形変更処理前のオブジェクトデータであり、ユーザIDはユーザAを示す。また、個人アンドゥデータは”FALSE”を示し、実行前Zオーダーは図形変更処理前のZオーダーを示す。なお、クライアント3Aから受信したコマンドが図形変更を示すため、アンドゥ用コマンドも図形変更を示している。また、新たなレコードには、描画バックアップ配列は格納されないが、ヌルデータが格納されていてもよい。
そして、描画サーバ2は前述のSQ503を行う(S605)。なお、このとき、ヌル(オブジェクト)データが格納されているデータを送信してもよいし、送信しなくてもよい。
なお、上述では、図形の線の色を変更する例を説明しているが、他の設定(たとえば、線の太さ、塗りつぶしの有無など)も同様の手順により変更することが可能である。
((オブジェクトの削除方法))
次に、ユーザAによる描画スペースの図形削除処理について説明する。この処理では、描画スペースに既に配置されている図形オブジェクトを選択的に削除する。
(((システムの動作)))
図23は、図形削除処理のシーケンス図である。ユーザAは、削除したい図形を描画スペースから選択した後、クライアント3Aの表示画面7のクリアボタン725(図4参照)を選択する(SQ701)。
クライアント3Aは、図形削除を示すコマンドとともに、選択された図形のオブジェクトIDを描画サーバ2に送信する(SQ702)。
描画サーバ2は、図形削除を示すコマンドをクライアント3Aから受信すると、図形削除処理(後述の図24参照)を行なう。そして、描画サーバ2は、描画スペースに入室している全てのクライアント3に、コマンド(図形削除)と、オブジェクトIDとを送信する(SQ703)。
クライアント3A(及びクライアントB)は、コマンド(図形削除)とオブジェクトIDとを描画サーバ2から受信し、受信したオブジェクトIDの図形を描画スペースから抹消する。こうして、ユーザAが削除した図形は描画スペースから抹消される。
(((描画サーバの動作)))
ここで、図形削除処理における描画サーバ2の動作を詳しく説明する。図24は、図形削除処理における描画サーバの動作を示すフローチャートである。
描画サーバ2は、SQ702にて図形変更を示すコマンドを受信したときに得られるネットワーク接続情報に基づいて、描画スペース接続配列56からコマンドの発行元となるユーザIDを抽出する(S801)。さらに、描画サーバ2は、クライアント3Aから受信したデータをオブジェクトID及びオブジェクトデータに分解する(S802)。
描画サーバ2は、S802にて得たデータを用いて、クライアント3Aが入室している描画スペースの描画データ配列51を編集する(S803)。これらの編集により、描画データ配列51では、S802にて得たオブジェクトIDを含むレコード(オブジェクトID、オブジェクトデータ、ユーザID、及びZオーダー)が削除される。
また、S803と同時に、描画サーバ2は、S802にて得たデータを用いて、クライアント3Aが入室している描画スペースの全操作履歴配列52を編集する(S804)。この編集により、全操作履歴配列52には、新たなレコードが追加される。このレコードは、最新のコマンド番号、コマンド(図形削除)、アンドゥ用コマンド(図形追加)、アンドゥ用オブジェクトデータ、オブジェクトID、ユーザID、個人アンドゥ済みデータ、及び、実行前Zオーダーを含んで構成される。コマンド(図形削除)はクライアント3Aから受信し、アンドゥ用コマンド(図形追加)は図形削除操作を取り消すために用いられる。アンドゥ用オブジェクトデータは図形削除処理前のオブジェクトデータであり、ユーザIDはユーザAを示す。また、個人アンドゥ済みデータは”FALSE”を示し、実行前Zオーダーは図形削除処理前のZオーダーを示す。なお、クライアント3Aから受信したコマンドが図形削除を示すため、アンドゥ用コマンドは図形追加を示している。また、新たなレコードには、オブジェクトデータ及び描画バックアップ配列は格納されないが、それぞれにヌル(オブジェクト)データが格納されていてもよい。
そして、描画サーバ2は前述のSQ703を行う(S805)。なお、このとき、ヌル(オブジェクト)データが格納されているデータを送信してもよいし、送信しなくてもよい。
なお、上述では、図形の削除例を説明しているが、他のオブジェクト(たとえばテキストオブジェクト、イメージオブジェクトなど)を同様の手順により削除することも可能である。
((オブジェクトの全削除方法))
次に、ユーザAによる描画スペースの全削除処理について説明する。この処理では、描画スペースに既に配置されている全てのオブジェクトが削除される。
(((システムの動作)))
図25は、全削除処理のシーケンス図である。ユーザAは、描画スペースの図形を選択していない状態のときに、クライアント3Aの表示画面7のクリアボタン725(図4参照)を選択する(SQ901)。
クライアント3Aは、全削除を示すコマンドを描画サーバ2に送信する(SQ902)。
描画サーバ2は、全削除を示すコマンドをクライアント3Aから受信すると、全削除処理(後述の図26参照)を行なう。そして、描画サーバ2は、描画スペースに入室している全てのクライアント3に、コマンド(全削除)を送信する(SQ903)。
クライアント3A(及びクライアントB)は、コマンド(全削除)を描画サーバ2から受信すると、液晶ディスプレイ321に表示されている全ての図形を抹消する。こうして、描画スペースに配置されたオブジェクトは全て削除される。
(((描画サーバの動作)))
ここで、全削除処理における描画サーバ2の動作を詳しく説明する。図26は、全削除処理における描画サーバの動作を示すフローチャートである。
描画サーバ2は、描画データ配列51をバックアップ(複製)することにより、描画バックアップ配列54を生成する(S1001)。そして、描画サーバ2は、クライアント3Aが入室している描画スペースの描画データ配列51を編集する(S1002)。この編集により、クライアント3Aが入室している描画スペースの描画データ配列51に登録されている全てのレコード(オブジェクトID、オブジェクトデータ、ユーザID、及びZオーダー)が削除される。
また、S1002と同時に、描画サーバ2は、クライアント3Aが入室している描画スペースの全操作履歴配列52を編集する(S1003)。この編集により、また、全操作履歴配列52には、新たなレコードが追加される。このレコードは、最新のコマンド番号、コマンド(全削除)、アンドゥ用コマンド(リストア)、描画バックアップ配列54及びその世代と、ユーザID、及び、個人アンドゥデータを含んで構成される。コマンド(全削除)はクライアント3Aから送信され、アンドゥ用コマンド(リストア)は全削除操作を取り消すために用いられる。ユーザIDはユーザAを示し、個人アンドゥデータは”FALSE”を示す。なお、クライアント3Aから受信したコマンドが全削除を示すため、アンドゥ用コマンドはリストアを示している。また、新たなレコードには、オブジェクトデータ、アンドゥ用オブジェクトデータ、オブジェクトID、及び実行前Zオーダーは格納されないが、それぞれにヌル(オブジェクト)データが格納されていてもよい。
そして、描画サーバ2は前述のSQ903を行う(S1004)。なお、このとき、ヌル(オブジェクト)データが格納されているデータを送信してもよいし、送信しなくてもよい。
(アンドゥ用コマンド及びアンドゥ用オブジェクトデータの設定処理)
次に、全操作履歴配列52に追加されるレコードのアンドゥに関するデータの決定方法について説明する。図27は、アンドゥ用コマンド及びアンドゥ用オブジェクトデータの設定方法を示すフローチャートである。なお、以下では、ユーザAが使用するクライアント3Aから図形オブジェクトに実行するユーザ操作に対応するコマンドを受信した場合を例にして説明する。
描画サーバ2は、クライアント3Aからコマンドを受信すると、そのコマンドが描画スペースに対する図形追加、図形変更、図形削除、及びオブジェクトの全削除のうちのいずれであるかを判定する。
まず、受信したコマンドが図形追加を示すか否かを判定する(S1101)。図形追加を示すと判定した場合(S1101でYes)には、図形追加操作を取り消すために、図形削除を示すアンドゥ用コマンドを作成する(S1102)。そして、処理を終了する。
図形追加を示さないと判定した場合(S1101でNo)には、受信したコマンドが図形変更を示すか否かを判定する(S1103)。図形変更を示すと判定した場合(S1103でYes)には、図形変更操作を取り消すために、図形変更を示すアンドゥ用コマンドを作成する(S1104)。また、描画データ配列51から、受信したオブジェクトIDを含むレコードを検索する(S1105)。そして、検索の結果に得られた描画データ配列51のオブジェクトデータを、全操作履歴配列52のアンドゥ用オブジェクトデータに設定する(S1106)。そして、処理を終了する。
図形変更を示さないと判定した場合(S1103でNo)には、受信したコマンドが図形削除を示すか否かを判定する(S1107)。図形削除を示すと判定した場合(S1107でYes)には、図形削除操作を取り消すために、図形追加を示すアンドゥ用コマンドを作成する(S1108)。また、描画データ配列51から、受信したオブジェクトIDを含むレコードを検索する(S1109)。そして、検索の結果に得られた描画データ配列51のオブジェクトデータを、全操作履歴配列52のアンドゥ用オブジェクトデータに設定する(S1110)。そして、処理を終了する。
図形削除を示さないと判定した場合(S1107でNo)には、受信したコマンドが全削除を示すか否かを判定する(S1111)。全削除を示すと判定した場合(S1111でYes)には、全削除操作を取り消すために、リストアを示すアンドゥ用コマンドを作成する(S1112)。また、描画データ配列51を複製して第n世代(nは1以上の正の整数)の描画バックアップ配列54とし、描画スペースと関連付けて記憶部21に格納する(S1113)。なお、描画バックアップ配列54に付与される世代は、関連付けられた描画スペースの何番目の描画バックアップ配列54であるかを示す。そして、処理を終了する。
なお、全削除を示さないと判定した場合(S1111でNo)には、アンドゥ用コマンド及びアンドゥ用オブジェクトデータを設定せずに、処理を終了する。
(アンドゥ処理)
各クライアント3のユーザは、描画スペースに行った上述のようなユーザ操作を取り消すアンドゥ操作を実行することができる。図28は、描画サーバのアンドゥ処理のフローチャートである。以下に、図28を参照して、アンドゥ処理について説明する。
ユーザAは、最も直前に行われた操作を取り消すために、クライアント3Aの表示画面7のアンドゥボタン724を選択する。さらに、ユーザAは、アンドゥパレット7241(図8参照)から個人アンドゥボタン7241a又は全体アンドゥボタン7241bを選択入力する。クライアント3Aは、ユーザAの選択に応じて個人アンドゥ処理又は全体アンドゥ処理を示すコマンドを描画サーバ2に送信する。
描画サーバ2は、個人アンドゥ処理又は全体アンドゥ処理を示すコマンドを受信したときに得られるネットワーク接続情報に基づいて、描画スペース接続配列56からコマンド(アンドゥ)の発行元となるユーザIDを抽出する(S1201)。
さらに、描画サーバ2は、クライアント3Aから受信したコマンド(アンドゥ)が個人アンドゥ処理及び全体アンドゥ処理のどちらであるかを判定する(S1202)。
全体アンドゥ処理を示すコマンドであると判定された場合(S1202でYes)、描画サーバ2は、全操作履歴配列52から、最も直前のレコードを取り出す(S1203)。すなわち、全操作履歴配列52において、コマンド番号が現在のコマンド番号未満であり、且つ、個人アンドゥ済みデータが”FALSE”であるレコードのうち、コマンド番号が最大となるレコードを取り出す。また、現在のコマンド番号から1を減算する(S1204)。たとえば、図10の全操作履歴配列52であれば、S1203の時点のコマンド番号が”7”であれば、コマンド番号が”6”のレコードが取り出され、S1204の時点のコマンド番号が”6”に設定される。
そして、アンドゥ履歴配列53に、新たなレコードを追加し、そのアンドゥ番号に現在のアンドゥ履歴番号を設定し、アンドゥ種類に全体アンドゥを設定する(S1205)。たとえば、図11のアンドゥ履歴配列53であれば、描画スペースにユーザ操作を取り消すコマンドの実行が所定の時点(たとえば、描画スペースの開設時、ユーザが設定した時点など)から1回目である場合、アンドゥ番号が”1”に設定される。また、そのコマンドが全体アンドゥを示す場合、アンドゥ種類が”全体アンドゥ”に設定され、アンドゥユーザIDには、データ登録されない、又はヌルデータが登録される。
一方、個人アンドゥ処理を示すコマンドであると判定された場合(S1202でNo)、描画サーバ2は、全操作履歴配列52から、ユーザIDが一致するレコードのうち、最も直前のレコードを取り出す(S1206)。すなわち、コマンド番号が現在のコマンド番号未満であり、且つ、ユーザIDがS1201にて抽出したユーザIDと一致し、且つ、個人アンドゥ済みデータが”FALSE”であるレコードのうち、コマンド番号が最大となるレコードを取り出す。また、取り出したレコードの個人アンドゥ済みデータを”TRUE”に設定する(S1207)。たとえば、図10の全操作履歴配列52であれば、S1206の時点でコマンド番号が”7”であれば、コマンド番号が”6”のレコードが取り出され、S1207においてコマンド番号が”6”のレコードの個人アンドゥ済みデータが”TRUE”に設定される。なお、S1207の時点のコマンド番号は”7”のままである。
そして、アンドゥ履歴配列53に、新たなレコードを追加し、そのアンドゥ番号に現在のアンドゥ履歴番号を設定し、アンドゥ種類に全体アンドゥを設定する(S1208)。たとえば、図11のアンドゥ履歴配列53であれば、描画スペースにユーザ操作を取り消すコマンドの実行が2回目である場合、アンドゥ番号が”2”に設定される。また、そのコマンドが個人アンドゥを示す場合、アンドゥ種類が”個人アンドゥ”に設定され、アンドゥユーザIDにはユーザ操作を実行したユーザ(たとえばユーザA)のユーザIDが登録される。
次に、描画サーバ2は、現在のアンドゥ履歴番号に1を加算する(S1209)。そして、描画サーバ2は、S1203又はS1206において取り出したレコードのアンドゥ用コマンドが示す図形操作(図形追加、図形変更、図形削除、リストア)を判定する。まず、描画サーバ2は、取り出したレコードのアンドゥ用コマンドが図形追加を示すか否かを判定する(S1210)。図形追加を示すと判定した場合(S1210でYes)、後述するS1220に進み、アンドゥ処理により図形追加操作を行う。
図形追加を示さないと判定した場合(S1210でNo)、図形変更を示すか否かを判定する(S1211)。図形変更を示すと判定した場合(S1211でYes)、後述するS1230に進み、アンドゥ処理により図形変更操作を行う。
図形変更を示さないと判定した場合(S1211でNo)、図形削除を示すか否かを判定する(S1212)。図形削除を示すと判定した場合(S1212でYes)、後述するS1240に進み、アンドゥ処理により図形削除操作を行う。
図形削除を示さないと判定した場合(S1212でNo)、リストアを示すか否かを判定する(S1213)。リストアを示すと判定した場合(S1213でYes)、後述するS1250に進み、アンドゥ処理によりリストア操作を行う。なお、リストアを示さないと判定した場合(S1213でNo)には処理を終了する。
((アンドゥ:図形追加))
図形追加操作のアンドゥ処理では、描画サーバ2は、S1203又はS1206にて全操作履歴配列52から取り出したレコードのオブジェクトIDと、アンドゥ用オブジェクトデータと、Zオーダーとを描画データ配列51に追加する(S1220)。すなわち、これらのデータが描画データ配列51に追加されたレコードのオブジェクトID、オブジェクトデータ、及びZオーダーとしてそれぞれ登録される。なお、追加されたレコードのユーザIDには、S1201にて抽出したユーザIDが登録される。
また、描画サーバ2は、コマンド(画面更新)と、Zオーダー順に並び替えた描画データ配列51の全オブジェクトデータを全クライアント3に送信する(S1221)。各クライアント3は、受信したデータに基づいて画面を更新する。
((アンドゥ:図形変更))
図形変更操作のアンドゥ処理では、描画サーバ2は、S1203又はS1206にて全操作履歴配列52から取り出したレコードのアンドゥ用オブジェクトデータで、取り出したレコードのオブジェクトIDが示す描画データ配列51のオブジェクトデータを置き換える(S1230)。
また、描画サーバ2は、描画スペースに入室している全てのクライアント3に、アンドゥ用コマンド(図形変更)と、S1203又はS1206にて取り出したレコードのオブジェクトID及びアンドゥ用オブジェクトデータとを送信する(S1231)。このとき、実行前Zオーダーも送信してもよい。各クライアント3は、アンドゥ用コマンド(図形変更)と、オブジェクトIDを内包するアンドゥ用オブジェクトデータとを描画サーバ2から受信する。そして、各クライアント3は、受信したアンドゥ用オブジェクトデータに基づいて表示画面7を更新する。
((アンドゥ:図形削除))
図形削除操作のアンドゥ処理では、描画サーバ2は、S1203又はS1206にて全操作履歴配列52から取り出したレコードのオブジェクトIDと同じオブジェクトIDを含むレコードを、描画データ配列51から削除する(S1240)。
また、描画サーバ2は、描画スペースに入室している全てのクライアント3に、アンドゥ用コマンド(図形削除)と、S1203又はS1206にて取り出したレコードのオブジェクトIDとを送信する(S1241)。このとき、アンドゥ用オブジェクトデータは送信しないが、ヌルオブジェクトデータとして送信してもよい。各クライアント3は、アンドゥ用コマンド(図形削除)とオブジェクトIDとを描画サーバ2から受信し、受信したオブジェクトIDに対応する図形を表示画面7から抹消する。
((アンドゥ:リストア))
リストア操作のアンドゥ処理では、描画サーバ2は、描画データ配列51から全てのレコードを削除する(S1250)。その後、描画サーバ2は、描画バックアップ配列54の全てのレコードを描画データ配列51に追加する(S1251)。そして、描画サーバ2は、描画スペースに入室している全てのクライアント3に、コマンド(画面更新)と、Zオーダー順で並べた描画データ配列51のレコードのオブジェクトデータとを送信する(S1252)。
各クライアント3は、アンドゥ用コマンド(画面更新)と、オブジェクトデータとを描画サーバ2から受信し、受信したトデータに基づいて画面を更新する。
(リドゥ処理)
次に、各クライアント3のユーザは、アンドゥ処理により取り消したコマンドが示すユーザ操作をやり直すリドゥ操作を実行することもできる。図29は、リドゥ処理における描画サーバの動作のフローチャートである。以下に、図29を参照して、このリドゥ処理について説明する。
ユーザは、直前のアンドゥ動作を取り消すために、クライアント3Aの表示画面7のアンドゥボタン724を選択する。さらに、ユーザは、アンドゥパレット7241(図8参照)からリドゥボタン7241cを選択入力する。リドゥボタン7241cが選択入力されると、クライアント3Aはユーザ操作をやり直すコマンド(リドゥ)を描画サーバ2に送信する。
描画サーバ2は、コマンド(リドゥ)を受信したときに得られるネットワーク接続情報に基づいて、描画スペース接続配列56からコマンド(リドゥ)の発行元となるユーザIDを抽出する(S1301)。
次に、描画サーバ2は、現在のアンドゥ履歴番号から1を減算する(S1302)。また、描画サーバ2は、アンドゥ履歴配列53からアンドゥ履歴番号と同じ値が設定されているアンドゥ番号を含むレコードを取り出す(S1303)。そして、描画サーバ2は、アンドゥ履歴配列53から取り出したレコードのアンドゥ種類が全体アンドゥであるか否かを判定する(S1304)。
全体アンドゥであると判定された場合(S1304でYes)、描画サーバ2は、全操作履歴配列52から、現在のコマンド番号のレコード(最も直前のレコード)を取り出す(S1305)。そして、現在のコマンド番号に1を加算する(S1306)。
一方、個人アンドゥであると判定された場合(S1304でNo)、描画サーバ2は、全操作履歴配列52から、コマンド番号が最大となるレコード(最も直前のレコード)を取り出す(S1307)。なお、このレコードは、コマンド番号が現在のコマンド番号未満であり、且つ、ユーザIDがS1305にて抽出したユーザIDと一致し、且つ、個人アンドゥ済みデータが”TRUE”であるレコードから取り出される。そして、取り出したレコードの個人アンドゥ済みデータを”FALSE”に設定する(S1308)。
次に、描画サーバ2は、S1305又はS1307において取り出したレコードのコマンドが示す図形操作(図形追加、図形変更、図形削除、全削除)を判定する。まず、描画サーバ2は、取り出したレコードのコマンドが図形追加を示すか否かを判定する(S1309)。図形追加を示すと判定した場合(S1309でYes)、後述するS1320に進み、リドゥ処理により図形追加操作を行う。
図形追加を示さないと判定した場合(S1309でNo)、図形変更を示すか否かを判定する(S1310)。図形変更を示すと判定した場合(S1310でYes)、後述するS1330に進み、リドゥ処理により図形変更操作を行う。
図形変更を示さないと判定した場合(S1310でNo)、図形削除を示すか否かを判定する(S1311)。図形削除を示すと判定した場合(S1311でYes)、後述するS1340に進み、リドゥ処理により図形削除操作を行う。
図形削除を示さないと判定した場合(S1311でNo)、全削除を示すか否かを判定する(S1312)。全削除を示すと判定した場合(S1312でYes)、後述するS1350に進み、リドゥ処理により全削除操作を行う。なお、全削除を示さないと判定した場合(S1312でNo)には処理を終了する。
((リドゥ:図形追加))
図形追加操作のリドゥ処理では、描画サーバ2は、S1305又はS1307にて全操作履歴配列52から取り出したレコードのオブジェクトIDと、オブジェクトデータと、実行前Zオーダーとを描画データ配列51に追加する(S1320)。なお、追加されたレコードのユーザIDには、S1301にて抽出したユーザIDが登録される。
また、描画サーバ2は、コマンド(画面更新)と、Zオーダー順に並べ替えた描画データ配列51の全オブジェクトデータとを全クライアント3に送信する(S1321)。各クライアント3は、描画サーバ2から受信したデータに基づいて表示画面7を更新する。
((リドゥ:図形変更))
図形変更操作のリドゥ処理では、描画サーバ2は、S1305又はS1307にて取り出したレコードのオブジェクトデータで、取り出したレコードのオブジェクトIDが示す描画データ配列51のオブジェクトデータを置き換える(S1330)。
また、描画サーバ2は、描画スペースに入室している全てのクライアント3に、コマンド(図形変更)と、S1305又はS1307にて取り出したレコードのオブジェクトID及びオブジェクトデータとを送信する(S1331)。このとき、実行前Zオーダーも送信してもよい。各クライアント3は、コマンド(図形変更)と、オブジェクトIDを内包するオブジェクトデータとを描画サーバ2から受信し、受信したオブジェクトデータに基づいて表示画面7を更新する。
((リドゥ:図形削除))
図形削除操作のリドゥ処理では、描画サーバ2は、S1305又はS1307にて全操作履歴配列52から取り出したレコードのオブジェクトIDと同じオブジェクトIDを含むレコードを、描画データ配列51から削除する(S1340)。
また、描画サーバ2は、描画スペースに入室している全てのクライアント3に、コマンド(図形削除)と、S1305又はS1307にて取り出したレコードのオブジェクトIDとを送信する(S1341)。このとき、オブジェクトデータは送信しないが、ヌルオブジェクトデータとして送信してもよい。各クライアント3は、コマンド(図形削除)とオブジェクトIDとを描画サーバ2から受信し、受信したオブジェクトIDに対応する図形を表示画面7から抹消する。
((リドゥ:全削除))
全削除操作のリドゥ処理では、描画サーバ2は、描画データ配列51から全てのレコードを削除する(S1350)。そして、描画サーバ2は、描画スペースに入室している全てのクライアント3に、コマンド(図形全削除)を送信する(S1351)。
各クライアント3は、コマンド(図形全削除)を描画サーバ2から受信すると、液晶ディスプレイ321に表示されている全ての図形を抹消する。
以上、分散型描画システム1の描画サーバ2の動作及びその描画方法について説明した。この描画サーバ2は、記憶部21と、CPU23と、を備えている。記憶部21は、描画データ配列51と、全操作履歴配列52と、を格納する。描画データ配列51は描画スペース(仮想空間)に配置されるオブジェクトデータを登録し、全操作履歴配列52はオブジェクトデータに実行するユーザ操作毎のレコードを蓄積する。CPU23は、ユーザ操作に対応するコマンドに基づいて、描画データ配列51及び全操作履歴配列52を編集する。また、CPU23は、描画データ配列51に登録されたオブジェクトデータを液晶ディスプレイ321に表示させるように制御する。また、全操作履歴配列52に蓄積されるレコードは、コマンドと、(ユーザ操作後の)オブジェクトデータと、アンドゥ用コマンド(反転コマンド)と、アンドゥ用オブジェクトデータと、を含んで構成される。コマンドはユーザ操作を示しており、アンドゥ用コマンド(反転コマンド)はユーザ操作を取り消すアンドゥ操作(反転操作)を示している。CPU23は、ユーザ操作を取り消すコマンド(アンドゥ)が実行された場合、アンドゥ用コマンドを実行させてアンドゥ用オブジェクトデータを液晶ディスプレイ321に表示させる。
また、上述の描画サーバ2における描画方法では、描画スペース(仮想空間)に配置されるオブジェクトデータが液晶ディスプレイ321に表示される。すなわち、オブジェクトデータを登録する描画データ配列51が、オブジェクトデータに実行するユーザ操作に対応するコマンドに基づいて編集される。また、全操作履歴配列52が、ユーザ操作に対応するコマンドに基づいて編集される。なお、この全操作履歴配列52は、コマンドと、(ユーザ操作後の)オブジェクトデータと、アンドゥ用コマンドと、アンドゥ用オブジェクトデータとを含んで構成されるレコードをユーザ操作毎に蓄積している。また、描画データ配列51に登録されたオブジェクトデータが液晶ディスプレイ321に表示される。また、液晶ディスプレイ321に表示される際に、ユーザ操作を取り消すコマンド(アンドゥ)が実行された場合、アンドゥ用コマンドが実行されて、アンドゥ用オブジェクトデータが液晶ディスプレイ321に表示される。
これらの構成によれば、ユーザ操作を取り消すコマンド(アンドゥ)が実行された場合、全操作履歴配列52を全検索することなく、アンドゥ用コマンドを実行させてユーザ操作前のオブジェクトデータを液晶ディスプレイ321に表示させることができる。従って、その表示画面を高速に同期して、高速に描画することができる。
また、上述の描画サーバ2では、CPU23は、ユーザ操作をやり直すコマンド(リドゥ)が実行された場合、ユーザ操作を示すコマンドを実行させてユーザ操作後のオブジェクトデータを液晶ディスプレイ321に表示させる。こうすれば、ユーザ操作をやり直すコマンド(リドゥ)が実行された場合、全操作履歴配列52を全検索することなく、ユーザ操作を示すコマンドを実行させてユーザ操作後のオブジェクトデータを液晶ディスプレイ321に表示させることができる。
また、上述の描画サーバ2では、全操作履歴配列52に蓄積されるレコードは、さらに、オブジェクトデータにユーザ操作を実行するユーザを示すユーザIDを含んで構成される。CPU23は、ユーザ操作を取り消すコマンド(アンドゥ)が実行された場合、アンドゥ用コマンドを実行させてアンドゥ用オブジェクトデータを液晶ディスプレイ321に表示させる。なお、この動作は、全操作履歴配列52に蓄積されているレコードにおいて、当該ユーザ操作を取り消すコマンド(アンドゥ)を実行したユーザのユーザIDを含むレコードのうち最新のレコードに基づいて行われる。こうすれば、ユーザは自らが実行した最新のユーザ操作を選択的に取り消すことができる。従って、オブジェクトデータの操作性を向上させることができる。
さらに、上述の描画サーバ2では、CPU23は、ユーザ操作をやり直すコマンド(リドゥ)が実行された場合、ユーザ操作を示すコマンドを実行させてユーザ操作後のオブジェクトデータを液晶ディスプレイ321に表示させる。なお、この動作は、全操作履歴配列52に蓄積されているレコードにおいて、ユーザ操作をやり直すコマンド(リドゥ)を実行したユーザのユーザIDを含むレコードのうち最新のレコードに基づいて行われる。こうすれば、ユーザは自らが実行した最新のユーザ操作を選択的に取り消した(個人アンドゥした)後、そのユーザ操作を再びやり直す(リドゥする)ことができる。従って、オブジェクトデータの操作性をさらに向上させることができる。
また、上述の描画サーバ2は、クライアント3とデータを送受する通信部22をさらに備える。また、クライアント3は、液晶ディスプレイ321、及び、ユーザ操作を受け付けるタッチセンサ部322などの入力部のうちの少なくとも一方を備える。描画サーバ2は、当該クライアント3とネットワーク4を介して接続される。こうすれば、ネットワーク4を介して接続されるクライアント3でのオブジェクトデータの外部表示、及び当該クライアント3からのユーザ操作の外部入力の受け付けのうちの少なくとも一方を行うことができる。
(表示画面共有方法)
次に、描画サーバ2が管理する描画スペースに入室する複数のクライアント3間で表示画面7を共有する表示画面共有方法について説明する。なお、以下では、ユーザBが使用するクライアント3をクライアント3Bと呼ぶ。また、以下では、2つのクライアント3A及び3B間で表示画面7が共有される例を説明するが、クライアント3A、3B以外のクライアント3においても同様の方法で表示画面7が共有されることは言うまでもない。
図30は、第1実施形態における各クライアントでの表示画面の更新状態を説明するシーケンス図である。なお、図30の初期状態において、描画スペースには図形オブジェクト(三角形)が配置されており、各クライアント3A、3Bの表示画面7にも図形オブジェクト(三角形)が表示されている。
まず、クライアント3Bにおいて、ユーザBは表示画面7の描画パレット7231(図7参照)から四角形の図形サンプルを選択し、描画スペースに追加する図形(四角形)を入力する(SQ1401)。
クライアント3Bは、ユーザBのタッチ入力が終了した時点(たとえばユーザBの指又はタッチペンがタッチパネル32から離れた時点)で、ユーザBのユーザIDとその一意な固有値とを利用して、入力された図形(四角形)のオブジェクトIDを生成する。また、クライアント3Bは、オブジェクトIDと、ユーザ入力から抽出したベクトルデータとを紐付けた四角形のオブジェクトデータ(図15D参照)を生成して、生成した図形(四角形)を表示画面7に表示する。そして、クライアント3Bは、オブジェクトIDを内包する図形オブジェクト(四角形)をコマンド(図形追加)とともに描画サーバ2に送信する(SQ1402)。
一方、クライアント3Aでは、ユーザAは表示画面7の描画パレット7231(図7参照)から円形の図形サンプルを選択し、描画スペースに追加する図形(円形)を入力する(SQ1403)。
クライアント3Aは、ユーザAのタッチ入力が終了した時点で、ユーザAのユーザIDとその一意な固有値とを利用して、入力された図形(円形)のオブジェクトIDを生成する。また、クライアント3Aは、オブジェクトIDと、ユーザ入力から抽出したベクトルデータとを紐付けた円形のオブジェクトデータ(図15C参照)を生成して、生成した図形(円形)を表示画面7に表示する。そして、クライアント3Aは、オブジェクトIDを内包する図形オブジェクト(円形)をコマンド(図形追加)とともに描画サーバ2に送信する(SQ1404)。なお、図30では、SQ1404はSQ1402の後に実行される。
描画サーバ2は、描画スペースへのオブジェクトの配置と、全クライアント3へのオブジェクトの送信とを、時系列(オブジェクトを受信した順)に処理する。まず、描画サーバ2は、クライアント3Bから受信したコマンド(図形追加)に基づく図形追加処理を行ない、図形オブジェクト(四角形)を描画スペースに配置する(SQ1405s)。そして、描画サーバ2は、描画スペースに入室している全てのクライアント3に、コマンド(図形追加)と、オブジェクトIDを内包する図形オブジェクト(四角形)とを送信する(SQ1405)。
クライアント3Aは、描画サーバ2から受信したオブジェクトIDからユーザIDを抽出し、抽出したユーザIDとユーザAのユーザIDとが一致するか否か判定する。ここでは、両者は合致しないため、クライアント3Aは、この図形オブジェクト(四角形)がクライアント3Aの送信したオブジェクトでないと判定する。従って、クライアント3Aは、受信した図形オブジェクト(四角形)を保管部331に一時的に格納し、表示画面7を更新しない。すなわち、クライアント3Aは、図形オブジェクト(四角形)を液晶ディスプレイ321には表示しない(SQ1405a)。
一方、クライアント3Bは、描画サーバ2から受信したオブジェクトIDからユーザIDを抽出し、抽出したユーザIDとユーザBのユーザIDとが一致するか否か判定する。ここでは、両者は合致するため、クライアント3Bは、この図形オブジェクト(四角形)がクライアント3Bの送信したオブジェクトであると判定する。そして、クライアント3Bは、受信したオブジェクトIDに基づいて既に表示画面7に表示されている図形オブジェクト(四角形)を消去した後、受信した図形オブジェクト(四角形)を表示画面7に改めて表示する(SQ1405b)。
次に、描画サーバ2は、クライアント3Aから受信したコマンド(図形追加)に基づく図形追加処理を行ない、図形オブジェクト(円形)を描画スペースに配置する(SQ1406s)。そして、描画サーバ2は、描画スペースに入室している全てのクライアント3に、コマンド(図形追加)と、オブジェクトIDを内包する図形オブジェクト(円形)とを送信する(SQ1406)。
クライアント3Aは、描画サーバ2から受信したオブジェクトIDからユーザIDを抽出し、抽出したユーザIDとユーザAのユーザIDとが合致するか否か判定する。ここでは、両者は合致するため、クライアント3Aは、この図形オブジェクト(円形)がクライアント3Aにより送信されたオブジェクトであると判定する。そして、クライアント3Aは、受信したオブジェクトIDに基づいて既に表示画面7に表示されている図形オブジェクト(円形)を一旦消去する。その後、クライアント3Aは、保管部331に格納されている図形オブジェクト(四角形)、及び図形オブジェクト(円形)を表示すべく、表示画面7を更新する。すなわち、クライアント3Aは、保管部331から取り出した図形オブジェクト(四角形)と、描画サーバ2から受信した図形オブジェクト(円形)とを時系列(描画サーバ2から受信した順)に表示する(SQ1406a)。
一方、クライアント3Bは、SQ1405bの時点において、描画サーバ2に送信すべき図形オブジェクト(四角形)の送信を完了しており、且つ、クライアント3Bが描画サーバ2に送信した図形オブジェクト(四角形)も描画サーバ2から受信し終えている。そのため、クライアント3Bは、図形オブジェクト(円形)のユーザIDの確認を行うことなく、受信した図形オブジェクト(円形)を表示画面7に追加表示する(SQ1406b)。すなわち、クライアント3Bは、このときに受信したオブジェクトIDからユーザIDを抽出しないし、ユーザBのユーザIDとの判定も行わない。
以上の手順により、描画サーバ2に接続されている全てのクライアント3の表示画面7には、描画スペースに配置されたオブジェクトが全て表示される。すなわち、全てのクライアント3は、描画スペースと同期した表示画面7を共有することができる。
なお、上述の表示画面共有方法では、各クライアント3A,3Bが送信するオブジェクトが1つである場合について説明している。各クライアント3A、3Bが送信するオブジェクトが複数である場合には、たとえばSQ1406aと同様の処理が、送信したオブジェクトの一部を受信したときに行われてもよいし、送信したオブジェクトの全てを受信したときに行われてもよい。
また、上述の表示画面共有方法では、たとえばSQ1406にて表示画面7を更新した直後に、クライアント3A、3Bが描画サーバ2からオブジェクトを受信した場合、直ちに、受信したオブジェクトを表示すべく、表示画面7を更新することも可能である。望ましくは、その所定期間(たとえば、0.5[sec])の後に表示画面7を更新する。すなわち、この所定期間の間に受信したオブジェクトは保管部331に一時的に格納しておき、所定期間の後に保管部331に格納したオブジェクトをまとめて時系列に表示すればよい。こうすれば、表示画面7からオブジェクトの表示が消失したかのような不安感をユーザに与えないようにすることがさらに確実にできるし、表示画面7のちらつきなどもより効果的に抑制することができる。
以上、第1実施形態における分散型描画システム1のクライアント3での表示画面共有方法について説明した。上述のように分散型描画システム1は、描画サーバ2と、描画サーバ2と接続される複数のクライアント3と、を備えている。描画サーバ2は、描画スペース(仮想空間)に配置されるオブジェクトデータを登録する描画データ配列51を有している。
また、各クライアント3は、描画スペースに配置されるオブジェクトデータを液晶ディスプレイ321に表示する表示端末装置である。また、各クライアント3は、ID生成部311と、送受信部35と、保管部331と、表示制御部313と、を備えている。ID生成部311は、当該クライアント3のユーザによって入力されたオブジェクトデータを示すオブジェクトIDを、当該クライアント3のユーザを示すユーザIDを含んで生成する。送受信部35は、送信部として機能し、当該クライアント3のユーザによって入力されたオブジェクトデータと、ID生成部311によって生成されたオブジェクトIDとを描画サーバ2に送信する。また、送受信部35は、受信部としても機能し、描画サーバ2からオブジェクトデータと、当該オブジェクトデータを示すオブジェクトIDとを受信する。保管部331は、送受信部35が送信したオブジェクトデータを送受信部35が受信するまでの間、描画サーバ2から受信するオブジェクトデータ及びオブジェクトIDを保管する。表示制御部313は、送受信部35によって受信したオブジェクトデータを表示するように、液晶ディスプレイ321の表示画面7を更新する。
また、上述のクライアント3における表示画面共有方法は、描画スペース(仮想空間)に配置されるオブジェクトデータを登録する描画データ配列51を有する描画サーバ2と接続される複数のクライアント3の表示画面共有方法である。この表示画面共有方法では、クライアント3が、ユーザを示すユーザIDを用いて、オブジェクトデータを示すオブジェクトIDを生成する。また、クライアント3が、ユーザによって入力されたオブジェクトデータと、オブジェクトIDとを描画サーバ2に送信する。また、クライアント3が、描画サーバ2からオブジェクトデータと、当該オブジェクトデータを示すオブジェクトIDとを受信する。また、クライアント3が、描画サーバ2に送信したオブジェクトデータを描画サーバ2から受信するまでの間、描画サーバ2から受信するオブジェクトデータ及びオブジェクトIDを保管する。そして、クライアント3が、描画サーバ2から受信したオブジェクトデータを表示するように、液晶ディスプレイ321の表示画面7を更新する。
これらの構成によれば、送受信部35が送信したオブジェクトデータを送受信部35が受信するまでの間、描画サーバ2から受信するオブジェクトデータ及びオブジェクトIDは、保管部331に保管される。また、液晶ディスプレイ321の表示画面7は更新されずに維持される。すなわち、送信したオブジェクトデータを送受信部35が受信すると、受信したオブジェクトデータを表示するように、液晶ディスプレイ321の表示画面7が更新される。従って、表示制御部313が液晶ディスプレイ321の表示画面7を更新しても、クライアント3のユーザによって入力されたオブジェクトデータを表示画面7の最上位(最前面)位置に表示することができる。従って、描画サーバ2から受信したオブジェクトデータを表示しても、既に表示されているオブジェクトデータが消失したかのような不安感をユーザに与えないようにすることができる。
また、表示画面7の更新により、描画サーバ2から受信したオブジェクトデータがまとめて表示されるので、オブジェクトデータの表示動作を一度に済ますことができる。従って、表示動作を複数回行う場合に比べて、表示画面7のちらつき等を抑制し、ユーザに違和感を与えないようにすることができる。
また、上述のクライアント3では、クライアント3はID判定部312をさらに備える。このID判定部312は、描画サーバ2から受信したオブジェクトIDに含まれるユーザIDがクライアント3のユーザのユーザIDと一致するか否かを判定する。また、ID判定部312によってユーザIDが一致しないと判定した場合に、表示制御部313は、保管部331に描画サーバ2から受信したオブジェクトデータとオブジェクトIDとを保管する。一方、ID判定部312によってユーザIDが一致すると判定した場合に、表示制御部313は、保管部331に保管されているオブジェクトデータを表示するように、液晶ディスプレイ321の表示画面7を更新する。
こうすれば、描画サーバ2から受信したオブジェクトIDに含まれるユーザIDがクライアント3のユーザのユーザIDと一致する場合には、描画サーバ2から受信したオブジェクトデータとオブジェクトIDとが保管部331に保管される。そして、液晶ディスプレイ321の表示画面7は更新されずに維持される。また、両者が一致しない場合には、保管部331に保管されているオブジェクトデータを表示するように、液晶ディスプレイ321の表示画面7が更新される。従って、液晶ディスプレイ321の表示画面7が更新されても、クライアント3のユーザによって入力されたオブジェクトデータを表示画面7の最上位(最前面)位置により確実に表示することができる。
また、上述のクライアント3では、表示画面7を更新してから所定期間の間に送受信部35が描画サーバ2からオブジェクトデータを受信するとき、表示制御部313は、描画サーバ2から受信するオブジェクトデータ及びオブジェクトIDを保管部331に格納する。こうすれば、表示画面7を更新してから所定期間の間、描画サーバ2から受信するオブジェクトデータ及びオブジェクトIDは、保管部331に保管され、液晶ディスプレイ321の表示画面7は更新されずに維持される。従って、さらに確実に、表示画面7の更新により、既に表示されているオブジェクトデータが消失したかのような不安感をユーザに与えないようにすることができる。また、表示画面7の更新に起因するちらつきなどもより効果的に抑制することができる。
<第2実施形態>
次に、本実施形態の第2実施形態について説明する。まず、タッチパネル32にオブジェクトの入力が開始されてから入力されたオブジェクトが描画サーバ2に送信されるまでの間に、送受信部35が描画サーバ2からオブジェクトを受信したとする。第2実施形態では、このような場合、クライアント3の表示制御部313はさらに、受信したオブジェクトを保管部331に格納し、表示画面7を更新しない。この動作は、受信したオブジェクトのオブジェクトIDが示すユーザIDとは無関係に行われる。すなわち、この動作では、ID判定部312は受信したオブジェクトのユーザIDの判定を行わない。これら以外は、第1実施形態と同様である。なお、以下では、第2実施形態において、第1実施形態と同様の構成には同じ符号を付し、その省略を説明することがある。
(表示画面共有方法)
図31は、第2実施形態における各クライアントでの表示画面の更新状態を説明するシーケンス図である。なお、図31の初期状態では、描画スペースには図形オブジェクト(三角形)が配置されており、各クライアント3A、3Bの表示画面7にも図形オブジェクト(三角形)が表示されている。
第2実施形態では、SQ1405が行われる前に、クライアント3Aにおいて、ユーザAが、表示画面7の描画パレット7231(図7参照)から円形の図形サンプルを選択し、描画スペースに追加する図形(円形)の入力を開始する(SQ1503a)。そして、SQ1405が行われた後に、図形(円形)の入力が終了する(SQ1503b)。
そのため、SQ1405aにおいて、クライアント3Aは、描画サーバ2から受信した図形オブジェクト(四角形)を保管部331に格納し、表示画面7を更新しない。また、このとき、クライアント3Aは、図形オブジェクト(四角形)のオブジェクトIDからユーザIDを抽出しないし、図形オブジェクト(四角形)のユーザIDがユーザAのユーザIDと一致するかの判定もしない。
そして、SQ1503bにおいて、ユーザAのタッチ入力が終了すると、クライアント3Aは、ユーザAのユーザIDとその一意な固有値とを利用して、入力された図形(円形)のオブジェクトIDを生成する。また、クライアント3Aは、オブジェクトIDと、ユーザ入力から抽出したベクトルデータとを紐付けた円形のオブジェクトデータ(図15C参照)を生成して、生成した図形(円形)を表示画面7に表示する。
そして、クライアント3Aは、オブジェクトIDを内包する図形オブジェクト(円形)をコマンド(図形追加)とともに描画サーバ2に送信する(SQ1504)。
次に、描画サーバ2は、クライアント3Aから受信したコマンド(図形追加)に基づく図形追加処理を行ない、図形オブジェクト(円形)を描画スペースに配置する(SQ1406s)。また、描画サーバ2は、描画スペースに入室している全てのクライアント3に、コマンド(図形追加)と、オブジェクトIDを内包する図形オブジェクト(円形)とを送信する(SQ1406)。そして、SQ1406aにおいて、クライアント3Aは、受信したオブジェクトIDに基づいて既に表示画面7に表示されている図形オブジェクト(円形)を一旦消去する。その後、クライアント3Aは、保管部331から取り出した図形オブジェクト(四角形)、及び図形オブジェクト(円形)を表示すべく、表示画面7を更新する。また、SQ1406bにおいて、クライアント3Bは、図形オブジェクト(円形)のユーザIDの確認を行うことなく、受信した図形オブジェクト(円形)を表示画面7に追加表示する。
以上、第2実施形態における分散型描画システム1のクライアント3の動作及びその表示画面共有方法について説明した。上述のように第2実施形態では、保管部331は、クライアント3のユーザが液晶ディスプレイ321に表示されているオブジェクトデータを編集している間、描画サーバ2から受信したオブジェクトデータ及びオブジェクトIDを保管している。こうすれば、ユーザがオブジェクトデータを編集している間、描画サーバ2から受信するオブジェクトデータ及びオブジェクトIDは、保管部331に保管され、液晶ディスプレイ321の表示画面7は更新されずに維持される。従って、より確実に、表示画面7の更新により、既に表示されているオブジェクトデータが消失したかのような不安感をユーザに与えないようにすることができる。また、表示画面7の更新に起因するちらつきなどをより効果的に抑制することができる。
以上、本発明の実施形態について説明した。なお、上述の実施形態は例示であり、その各構成要素や各処理の組み合わせに色々な変形が可能であり、本発明の範囲にあることは当業者に理解されるところである。
たとえば、上述の第1及び第2実施形態では、ID生成部311、ID判定部312、及び表示制御部313はCPU31の機能部として実現されているが、本発明の適用範囲はこの例示に限定されない。これらの全て又は少なくとも一部は、電子回路などの物理的な構成部として実現されていてもよい。
また、上述の第1及び第2実施形態では、ログインから描画スペース入室までの処理と描画スペースの管理とを同じ描画サーバ2で行なっているが、個別のサーバ装置で行ってもよい。この場合、クライアントの入室(図18参照)の際にクライアントが得る参加描画スペースリストに描画スペース及び描画サーバ2へのURLが含まれる。或いは、描画スペース入室結果に描画スペース及び描画サーバ2へのURLが含まれるようにしてもよい。
また、上述の第1及び第2実施形態では、描画スペースにおけるプロトコルとしてWebSocketを用いたが、たとえばSPDYなどの類似する他のプロトコルを用いてもよい。
また、上述の第1及び第2実施形態では、本発明を分散型描画システム1に適用した例について説明したが、表示端末装置(たとえばクライアント3)を内蔵する描画装置に適用することも可能である。言い換えると、本発明は、表示端末装置(たとえばクライアント3)として機能する表示端末ユニットを備える描画装置に適用されてもよいし、描画装置(たとえば描画サーバ2)として機能する描画ユニットを備える表示端末装置に適用されてもよい。
また、上述の第1及び第2実施形態では、表示端末装置(たとえばクライアント3)に無線LANアンテナ36を備える例を示したが、有線LANや移動体通信網アンテナと併用、または置き換えられてもよい。
1 分散型描画システム(表示画面共有システム)
2 描画サーバ(描画装置)
21 記憶部
22 通信部
23 CPU
3 クライアント(表示端末装置)
31 CPU
311 ID生成部
312 ID判定部
313 表示制御部
32 タッチパネル
321 液晶ディスプレイ
322 タッチセンサ部
33 フラッシュROM
331 保管部
34 RAM
35 送受信部
36 無線LANアンテナ
4 ネットワーク
51 描画データ配列
52 全操作履歴配列
53 アンドゥ履歴配列
54 描画バックアップ配列
55 描画スペーストークン配列
56 描画スペース接続配列
7 表示画面
71 オブジェクト表示領域
72 メニュー表示領域
721 線の色選択ボタン
7211 線の色選択パレット
7212 線の太さ選択パレット
722 線の種類選択ボタン
7221 線の種類選択パレット
723 描画ツールボタン
7231 描画パレット
7231a フリーハンド表示
724 アンドゥボタン
7241 アンドゥパレット
7241a マイアンドゥボタン
7241b 全体アンドゥボタン
7241c リドゥボタン
725 クリアボタン
8 ログイン画面
81 ユーザID入力部
82 パスワード入力部
83 ログインボタン
84 ユーザ作成ボタン

Claims (13)

  1. 仮想空間に配置されるオブジェクトデータを表示部に表示する表示端末装置であって、
    当該表示端末装置のユーザにより入力されたオブジェクトデータを示すオブジェクト識別情報を、当該ユーザを示すユーザ識別情報を含んで生成する識別情報生成部と、
    前記ユーザにより入力されたオブジェクトデータ、及び前記識別情報生成部により生成されたオブジェクト識別情報を描画装置に送信する送信部と、
    前記描画装置からオブジェクトデータ、及び当該オブジェクトデータを示すオブジェクト識別情報を受信する受信部と、
    前記送信部が送信したオブジェクトデータを前記受信部が受信するまでの間、前記描画装置から受信するオブジェクトデータ及びオブジェクト識別情報を保管する保管部と、
    前記受信部が受信したオブジェクトデータを表示するように、前記表示部の表示画面を更新する表示制御部と、
    を備えることを特徴とする表示端末装置。
  2. 前記描画装置から受信したオブジェクト識別情報に含まれるユーザ識別情報が前記ユーザのユーザ識別情報と一致するか否かを判定する識別情報判定部をさらに備え、
    前記識別情報判定部によりユーザ識別情報が一致しないと判定した場合に、前記表示制御部は、前記描画装置から受信したオブジェクトデータ、及びオブジェクト識別情報を前記保管部に保管し、
    前記識別情報判定部によりユーザ識別情報が一致すると判定した場合に、前記表示制御部は、前記保管部に保管されているオブジェクトデータを表示するように、前記表示部の表示画面を更新することを特徴とする請求項1に記載の表示端末装置。
  3. 前記保管部は、前記ユーザにより前記表示部に表示されているオブジェクトデータが編集されている間、前記描画装置から受信したオブジェクトデータ及びオブジェクト識別情報を保管することを特徴とする請求項1又は請求項2に記載の表示端末装置。
  4. 前記表示画面を更新してから所定期間の間に前記受信部が前記描画装置から前記オブジェクトデータを受信する場合、前記表示制御部は、前記描画装置から受信する前記オブジェクトデータ及びオブジェクト識別情報を前記保管部に格納することを特徴とする請求項1〜請求項3のいずれかに記載の表示端末装置。
  5. 前記描画装置として機能する描画ユニットをさらに備え、
    前記描画ユニットは、
    前記仮想空間に配置されるオブジェクトデータを登録する描画データベース、及び当該オブジェクトデータに実行するユーザ操作毎のレコードを蓄積する操作履歴データベースを格納する記憶部と、
    ユーザ操作に対応するコマンドに基づいて、前記描画データベース及び前記操作履歴データベースを編集し、前記描画データベースに登録されたオブジェクトデータを表示部に表示させる制御部と、
    を有し、
    前記操作履歴データベースに蓄積されるレコードは、前記ユーザ操作を示すコマンドと、前記ユーザ操作後のオブジェクトデータと、前記ユーザ操作を取り消す反転操作を示す反転コマンドと、前記ユーザ操作前のオブジェクトデータと、を含んで構成され、
    前記制御部は、前記ユーザ操作を取り消すコマンドが実行された場合、前記反転コマンドを実行させて前記ユーザ操作前のオブジェクトデータを前記表示部に表示させることを特徴とする請求項1〜請求項4のいずれかに記載の表示端末装置。
  6. 前記制御部は、前記ユーザ操作をやり直すコマンドが実行された場合、前記ユーザ操作を示すコマンドを実行させて前記ユーザ操作後のオブジェクトデータを前記表示部に表示させることを特徴とする請求項5に記載の表示端末装置。
  7. 前記操作履歴データベースに蓄積されるレコードは、さらに、前記オブジェクトデータに前記ユーザ操作を実行するユーザを示すユーザ識別情報を含んで構成され、
    前記制御部は、前記ユーザ操作を取り消すコマンドが実行された場合、前記操作履歴データベースに蓄積されているレコードにおいて、当該ユーザ操作を取り消すコマンドを実行したユーザのユーザ識別情報を含むレコードのうち最新のレコードに基づいて前記反転コマンドを実行させて前記ユーザ操作前のオブジェクトデータを前記表示部に表示させることを特徴とする請求項5又は請求項6に記載の表示端末装置。
  8. 前記制御部は、前記ユーザ操作をやり直すコマンドが実行された場合、前記操作履歴データベースに蓄積されているレコードにおいて、前記ユーザ操作をやり直すコマンドを実行したユーザのユーザ識別情報を含むレコードのうち最新のレコードに基づいて前記ユーザ操作を示すコマンドを実行させて前記ユーザ操作後のオブジェクトデータを前記表示部に表示させることを特徴とする請求項7に記載の表示端末装置。
  9. 前記描画ユニットは、
    前記表示部、及び、前記ユーザ操作を受け付ける入力部のうちの少なくとも一方を備える他の表示端末装置とデータを送受する通信部をさらに有し、
    前記他の表示端末装置とネットワークを介して接続されることを特徴とする請求項5〜請求項8のいずれかに記載の表示端末装置。
  10. 請求項1〜請求項4のいずれかに記載の複数の表示端末装置と、
    前記複数の表示端末装置と接続される描画装置と、
    を備えることを特徴とする表示画面共有システム。
  11. 前記表示端末装置は、前記表示部、及び、前記ユーザ操作を受け付ける入力部のうちの少なくとも一方を有し、
    前記描画装置は、前記表示端末装置とデータを送受する通信部をさらに有し、前記表示端末装置とネットワークを介して接続されることを特徴とする請求項10に記載の表示画面共有システム。
  12. 仮想空間に配置されるオブジェクトデータを登録する描画データベースを有する描画装置と接続される複数の表示端末装置の表示画面共有方法であって、
    前記表示端末装置が、ユーザにより入力されたオブジェクトデータを示すオブジェクト識別情報を、当該ユーザを示すユーザ識別情報を含んで生成するステップと、
    前記表示端末装置が、前記ユーザにより入力されたオブジェクトデータ、及び、前記生成するステップにて生成されたオブジェクト識別情報を前記描画装置に送信するステップと、
    前記表示端末装置が、前記描画装置からオブジェクトデータ、及び当該オブジェクトデータを示すオブジェクト識別情報を受信するステップと、
    前記表示端末装置が、前記送信するステップにて送信したオブジェクトデータを受信するまでの間、前記描画装置から受信するオブジェクトデータ及びオブジェクト識別情報を保管するステップと、
    前記表示端末装置が、前記受信するステップにて受信したオブジェクトデータを表示するように、表示部の表示画面を更新するステップと、
    を備えることを特徴とする表示画面共有方法。
  13. 前記描画装置が、前記仮想空間に配置されるオブジェクトデータに実行するユーザ操作に対応するコマンドに基づいて前記描画データベースを編集するステップと、
    前記描画装置が、前記ユーザ操作を示すコマンド、前記ユーザ操作後のオブジェクトデータ、前記ユーザ操作を取り消す反転操作を示す反転コマンド、及び、前記ユーザ操作前のオブジェクトデータを含んで構成されるレコードを前記ユーザ操作毎に蓄積する操作履歴データベースを前記ユーザ操作に対応するコマンドに基づいて編集するステップと、
    前記描画装置が、前記描画データベースに登録されたオブジェクトデータを表示部に表示させるステップと、
    をさらに備え、
    前記表示させるステップは、前記描画装置が、前記ユーザ操作を取り消すコマンドが実行された場合、前記反転コマンドを実行させて前記ユーザ操作前のオブジェクトデータを前記表示部に表示させるステップを含むことを特徴とする請求項12に記載の表示画面共有方法。
JP2013186067A 2012-10-25 2013-09-09 表示端末装置、表示画面共有システム、及び表示画面共有方法 Pending JP2014102815A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013186067A JP2014102815A (ja) 2012-10-25 2013-09-09 表示端末装置、表示画面共有システム、及び表示画面共有方法
US14/048,229 US20140123053A1 (en) 2012-10-25 2013-10-08 Display terminal device, display screen sharing system, and display screen sharing method

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP2012236139 2012-10-25
JP2012236131 2012-10-25
JP2012236131 2012-10-25
JP2012236139 2012-10-25
JP2013186067A JP2014102815A (ja) 2012-10-25 2013-09-09 表示端末装置、表示画面共有システム、及び表示画面共有方法

Publications (1)

Publication Number Publication Date
JP2014102815A true JP2014102815A (ja) 2014-06-05

Family

ID=50548686

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013186067A Pending JP2014102815A (ja) 2012-10-25 2013-09-09 表示端末装置、表示画面共有システム、及び表示画面共有方法

Country Status (2)

Country Link
US (1) US20140123053A1 (ja)
JP (1) JP2014102815A (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10320865B2 (en) * 2013-08-28 2019-06-11 Mersive Technologies, Inc. Graphical indicator of presence, identity, and action for media sharing on a display
US20160191482A1 (en) * 2014-12-31 2016-06-30 Cyanogen Inc. System and method for providing authenticated communications from a remote device to a local device
CN110221891A (zh) * 2019-05-17 2019-09-10 北京大米科技有限公司 一种绘图数据获取方法、装置、存储介质以及终端
CN111277576A (zh) * 2020-01-14 2020-06-12 广州华多网络科技有限公司 绘制数据展示方法、装置、计算机设备和存储介质
US11914733B2 (en) * 2021-01-21 2024-02-27 International Business Machines Corporation Timing for user data erasure requests
CN113542862A (zh) * 2021-07-22 2021-10-22 广州朗国电子科技股份有限公司 一种无线传屏中信息共享的方法
CN116450057B (zh) * 2023-06-19 2023-08-15 成都赛力斯科技有限公司 基于客户端的车辆功能图片生成方法、装置及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5173854A (en) * 1984-06-11 1992-12-22 Tandem Computers Incorporated Distributed text editing system with remote terminal transmits successive audit messages each identifying individual editing operation
JP3195498B2 (ja) * 1994-09-13 2001-08-06 キャダムシステム株式会社 三次元形状作成方法及びその装置
JP2951312B1 (ja) * 1998-04-03 1999-09-20 株式会社トヨタケーラム チーム形式設計用cadシステム
US6192378B1 (en) * 1998-05-13 2001-02-20 International Business Machines Corporation Method and apparatus for combining undo and redo contexts in a distributed access environment
JP3817689B2 (ja) * 2001-02-08 2006-09-06 株式会社日立製作所 Cad情報管理システムおよびcad情報管理方法
US20120110595A1 (en) * 2010-10-28 2012-05-03 Michael Reitman Methods and systems for managing concurrent design of computer-aided design objects

Also Published As

Publication number Publication date
US20140123053A1 (en) 2014-05-01

Similar Documents

Publication Publication Date Title
JP2014102815A (ja) 表示端末装置、表示画面共有システム、及び表示画面共有方法
CN105302784B (zh) 复制/剪切和粘贴数据的方法和***
US9886230B2 (en) Device, method, and graphical user interface for collaborative editing in documents
JP5644266B2 (ja) 電子黒板システム、電子黒板装置、電子黒板システムの制御方法及びプログラム
CN109710909B (zh) 内容获取方法、装置、终端及存储介质
RU2623804C2 (ru) Устройство для обработки информации, способ обработки информации, программа и носитель для хранения информации
TW201525776A (zh) 對於鍵盤使用者介面的啓用控制
WO2020035007A1 (zh) 一种应用程序图标的位置调整方法及显示终端
US11154779B2 (en) Processing device, program, and method
JP2011128962A (ja) 画像処理装置、画像処理方法、及びコンピュータプログラム
JP5775618B1 (ja) メッセージ表示制御装置、メッセージ表示制御システム、メッセージ表示制御サーバ、及びプログラム
CN108369577A (zh) 在电子文档之间共享内容
US20180178127A1 (en) Game development system
CN107037939B (zh) 电子黑板和图像处理方法
CN111712858A (zh) 电子相册装置及其工作方法和工作程序
US20220229638A1 (en) Content development device
US20110258555A1 (en) Systems and methods for interface management
WO2013180266A1 (ja) 画像作成システム、画像作成アプリケーションサーバ、画像作成方法およびプログラム
US11266908B2 (en) Game system, game control device, and information storage medium
CN111492396A (zh) 混合现实服务提供方法及***
JP5767371B1 (ja) 仮想空間平面上に配置したオブジェクトを表示制御するゲーム・プログラム
JP7262296B2 (ja) 3次元cad装置、及び3次元cadプログラム
JP7381556B2 (ja) メディアコンテンツ計画システム
CN106648280B (zh) 任务管理交互方法和装置
JP6350260B2 (ja) 会議支援装置、会議支援システム、会議支援方法、及び会議支援プログラム

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20150604