(57)【特許請求の範囲】
【請求項１】
タッチパネルと、通信部と、記憶部とを有する電子機器に、
前記タッチパネルに対する接触が検出された最新の位置に関する情報と、その直前に接触が検出された直前の位置に関する情報とを含み、前記タッチパネルに対して描画を行うための描画情報を生成し、生成した前記描画情報を、前記通信部を介して他の機器へ送信するとともに、生成した前記描画情報、及び、前記他の機器から送信された前記描画情報を、前記記憶部に設けられた先入れ先出し方式の描画バッファに格納する入出力処理スレッドと、
前記描画バッファから先に格納された前記描画情報を順次読み出し、該描画情報の前記最新の位置に関する情報と前記直前の位置に関する情報とに基づいて、前記描画情報を描画する順序を判定し、判定した順序に従って、前記タッチパネルに対する描画を行う描画スレッドとを
並列に実行させる画像通信プログラム。
【請求項２】
前記描画情報は、描画の属性に関する情報を含み、
前記入出力処理スレッドは、前記描画情報を前記他の機器へ送信する場合に、該描画情報が、描画の開始に対応する描画情報でない場合には、該描画情報から前記描画の属性に関する情報を削除する請求項１に記載の画像通信プログラム。
【請求項３】
前記描画スレッドは、描画した要素を、該要素を描画するための操作が検出された機器毎に消去する請求項１または２に記載の画像通信プログラム。
【請求項４】
前記入出力処理スレッドは、前記タッチパネルを介して検出された操作に対応した描画を前記タッチパネルに対して行うための前記描画情報を、前記記憶部に設けられた送信バッファに時系列に格納し、
前記描画スレッドは、前記描画情報を読み出し、該描画情報に基づいて描画を再現する請求項１から３のいずれか１つに記載の画像通信プログラム。
【請求項５】
タッチパネルと、通信部と、記憶部とを有する電子機器による画像通信方法であって、
前記電子機器が、
前記タッチパネルに対する接触が検出された最新の位置に関する情報と、その直前に接触が検出された直前の位置に関する情報とを含み、前記タッチパネルに対して描画を行うための描画情報を生成し、生成した前記描画情報を、前記通信部を介して他の機器へ送信するとともに、生成した前記描画情報、及び、前記他の機器から送信された前記描画情報を、前記記憶部に設けられた先入れ先出し方式の描画バッファに格納するステップと、
前記描画バッファから先に格納された前記描画情報を順次読み出し、該描画情報の前記最新の位置に関する情報と前記直前の位置に関する情報とに基づいて、前記描画情報を描画する順序を判定し、判定した順序に従って、前記タッチパネルに対する描画を行うステップとを
並列に実行する画像通信方法。
【請求項６】
タッチパネルと、通信部と、記憶部と、制御部とを備えた電子機器であって、
前記制御部は、
前記タッチパネルに対する接触が検出された最新の位置に関する情報と、その直前に接触が検出された直前の位置に関する情報とを含み、前記タッチパネルに対して描画を行うための描画情報を生成し、生成した前記描画情報を、前記通信部を介して他の機器へ送信するとともに、生成した前記描画情報、及び、前記他の機器から送信された前記描画情報を、前記記憶部に設けられた先入れ先出し方式の描画バッファに格納する処理と、
前記描画バッファから先に格納された前記描画情報を順次読み出し、該描画情報の前記最新の位置に関する情報と前記直前の位置に関する情報とに基づいて、前記描画情報を描画する順序を判定し、判定した順序に従って、前記タッチパネルに対する描画を行う処理とを
並列に実行する電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像通信プログラム、画像通信方法、および電子機器に関する。
【背景技術】
【０００２】
タッチパネルを有する電子機器には、タッチパネルを介してユーザから入力された手書き画像を、他の電子機器との間でやりとりする、いわゆる手書きチャットが可能なものがある（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−８２６４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、手書き画像を電子機器間で共有する技術では、画像の更新を電子機器間で反映させる処理にタイムラグがあり、手書き画像を用いて効率よく質の高い情報交換を行うことが難しいことがあった。
【０００５】
本発明は、上記に鑑みてなされたものであって、手書き画像を電子機器間で共有する場合に、画像の更新を電子機器間で反映させる処理のリアルタイム性を向上させることができる画像通信プログラム、画像通信方法、および電子機器を提供することを目的とする。
【課題を解決するための手段】
【０００６】
１つの態様において、画像通信プログラムは、タッチパネルと、通信部と、記憶部とを有する電子機器に、前記タッチパネルに対する接触が検出された最新の位置に関する情報と、その直前に接触が検出された直前の位置に関する情報とを含み、前記タッチパネルに対して描画を行うための描画情報を生成し、生成した前記描画情報を、前記通信部を介して他の機器へ送信するとともに、生成した前記描画情報、及び、前記他の機器から送信された前記描画情報を、前記記憶部に設けられた先入れ先出し方式の描画バッファに格納する入出力処理スレッドと、前記描画バッファから先に格納された前記描画情報を順次読み出し、該描画情報の前記最新の位置に関する情報と前記直前の位置に関する情報とに基づいて、前記描画情報を描画する順序を判定し、判定した順序に従って、前記タッチパネルに対する描画を行う描画スレッドとを並列に実行させる。
【０００７】
他の態様において、画像通信方法は、タッチパネルと、通信部と、記憶部とを有する電子機器による画像通信方法であって、電子機器が、前記タッチパネルに対する接触が検出された最新の位置に関する情報と、その直前に接触が検出された直前の位置に関する情報とを含み、前記タッチパネルに対して描画を行うための描画情報を生成し、生成した前記描画情報を、前記通信部を介して他の機器へ送信するとともに、生成した前記描画情報、及び、前記他の機器から送信された前記描画情報を、前記記憶部に設けられた先入れ先出し方式の描画バッファに格納するステップと、前記描画バッファから先に格納された前記描画情報を順次読み出し、該描画情報の前記最新の位置に関する情報と前記直前の位置に関する情報とに基づいて、前記描画情報を描画する順序を判定し、判定した順序に従って、前記タッチパネルに対する描画を行うステップとを並列に実行する。
【０００８】
他の態様において、電子機器は、タッチパネルと、通信部と、記憶部と、制御部とを備える。前記制御部は、前記タッチパネルに対する接触が検出された最新の位置に関する情報と、その直前に接触が検出された直前の位置に関する情報とを含み、前記タッチパネルに対して描画を行うための描画情報を生成し、生成した前記描画情報を、前記通信部を介して他の機器へ送信するとともに、生成した前記描画情報、及び、前記他の機器から送信された前記描画情報を、前記記憶部に設けられた先入れ先出し方式の描画バッファに格納する処理と、前記描画バッファから先に格納された前記描画情報を順次読み出し、該描画情報の前記最新の位置に関する情報と前記直前の位置に関する情報とに基づいて、前記描画情報を描画する順序を判定し、判定した順序に従って、前記タッチパネルに対する描画を行う処理とを並列に実行する。
【発明の効果】
【０００９】
本発明に係る画像通信プログラム、画像通信方法、および電子機器は、手書き画像を電子機器間で共有する場合に、画像の更新を電子機器間で反映させる処理のリアルタイム性を向上させることができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、画像通信システムの構成を示す図である。
【図２】図２は、画像通信画面の例を示す図である。
【図３】図３は、手書きによる情報交換の例を示す図である。
【図４】図４は、情報の消去の例を示す図である。
【図５】図５は、電子機器の構成の例を示すブロック図である。
【図６】図６は、スレッドの並列動作について説明するための図である。
【図７】図７は、電子機器間の接続を確立するための動作の例を示すシーケンス図である。
【図８】図８は、入出力処理スレッドの動作の例を示すフローチャートである。
【図９】図９は、モード変更処理の手順を示すフローチャートである。
【図１０】図１０は、手書き情報格納処理の手順を示すフローチャートである。
【図１１】図１１は、文字情報格納処理の手順を示すフローチャートである。
【図１２】図１２は、受信情報格納処理の手順を示すフローチャートである。
【図１３】図１３は、描画スレッドの動作の例を示すフローチャートである。
【図１４】図１４は、頂点を滑らかに接続する線を描画する手順を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に、画像通信プログラム、画像通信方法、および電子機器の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【００１２】
図１を参照しながら、実施例に係る画像通信システム１の構成の例について説明する。図１は、画像通信システム１の構成を示す図である。図１に示す画像通信システム１は、実施例に係る画像通信方法により、画像通信を可能にする。画像通信とは、１つの画像を共有しながらその画像を編集していくことにより、画像を用いた情報交換を可能にする通信である。画像通信システム１は、電子機器１０ａおよび１０ｂと、サーバ２０とを有する。電子機器１０ａおよび１０ｂは、移動体向け通信網２およびインターネット３を解して、サーバ２０と通信可能に接続される。
【００１３】
移動体向け通信網２は、携帯電話事業者等の移動体向けの通信サービスを提供する１乃至複数の企業によって運用されるネットワークである。移動体向け通信網２は、電子機器１０ａおよび１０ｂ等の移動体と無線通信を行うためのセルを構成する基地局と、基地局間を接続する有線部分とを含む。移動体向け通信網２では、ＴＣＰ／ＩＰのような汎用的な通信プロトコルに加えて、プッシュ通信等の移動体向け通信独自の通信プロトコルを利用することができる。
【００１４】
電子機器１０ａおよび１０ｂは、画像通信を行う利用者が使用する機器である。電子機器１０ａおよび１０ｂは、タッチパネル１１を有する。タッチパネル１１は、図形および文字等の情報を表示する表示機能と、情報が表示される表示面に対する指、スタイラス、ペン等による接触操作を検出する接触検出機能とを有する。電子機器１０ａおよび１０ｂは、例えば、タブレットデバイス、スマートフォン、パソコン、ゲーム機、メディアプレイヤ、又は電子ブックリーダである。以下の説明では、説明を簡単にするために、タッチパネル１１に対する接触操作は、指を用いて行われるものと想定する。以下の説明では、電子機器１０ａおよび１０ｂを、いずれであるかを特定することなく、電子機器１０と呼ぶことがある。
【００１５】
サーバ２０は、電子機器１０ａと電子機器１０ｂとの間の通信を支援する。サーバ２０は、例えば、電子機器１０ａおよび１０ｂが、他方の電子機器１０と通信するために必要なアドレス情報を取得するのを支援する。
【００１６】
実施例に係る画像通信システムの構成は、図１に示した構成に限定されない。例えば、サーバ２０は、移動体向け通信網２に接続されてもよい。画像を用いた情報交換を行う利用者が使用する電子機器１０は、３台以上であってもよい。
【００１７】
図２から図４を参照しながら、実施例に係る画像通信方法の利用例について説明する。図２は、画像通信の利用時に表示される画像通信画面４０の例を示す図である。図３は、手書きによる情報交換の例を示す図である。図４は、情報の消去の例を示す図である。
【００１８】
画像通信の利用時には、図２に示すような画像通信画面４０が、電子機器１０ａおよび１０ｂのタッチパネル１１に表示される。画像通信画面４０は、ヘッダ領域４１と、操作パネル領域４２と、描画領域４３とを有する。画像通信画面４０の表示中に、文字入力用の仮想キーボード５０がさらにタッチパネル１１に表示されることがある。
【００１９】
ヘッダ領域４１は、画像通信画面４０の上部に設けられる帯状の領域である。ヘッダ領域４１には、例えば、画像通信の相手を特定するための名称等が表示される。操作パネル領域４２は、ヘッダ領域４１と描画領域４３との間に設けられる。操作パネル領域４２には、各種の動作または切り替えを利用者が指示するための操作オブジェクトが配置された領域である。描画領域４３は、大きな面積を占める領域である。描画領域４３には、情報交換用の画像が表示される。情報交換用の画像は、画像通信に参加している各電子機器１０で共有され、各電子機器１０での入力に応じて更新（変更）される。情報交換用の画像は、文字および手書きされた線図等の要素を含むことができる。
【００２０】
操作パネル領域４２は、「保存」ボタン４２１と、「消去」ボタン４２２と、「相手を消去」ボタン４２３と、「自分を消去」ボタン４２４と、手書き操作領域４２５と、文字入力操作領域４２６とを有する。「保存」ボタン４２１は、描画領域４３に表示されている画像の保存を指示するためのボタンである。「消去」ボタン４２２は、描画領域４３に表示されている画像に含まれる全ての要素の消去を指示するためのボタンである。「相手を消去」ボタン４２３は、描画領域４３に表示されている画像に含まれる要素のうち、相手が入力した要素の消去を指示するためのボタンである。「自分を消去」ボタン４２４は、描画領域４３に表示されている画像に含まれる要素のうち、当方が入力した要素の消去を指示するためのボタンである。
【００２１】
画像に含まれる要素の消去は、画像通信に参加している各電子機器１０に反映される。例えば、電子機器１０ａによって「消去」ボタン４２２への操作が検出された場合、電子機器１０ａだけでなく、電子機器１０ａとの画像通信に参加している電子機器１０ｂでも、描画領域４３に表示されている画像に含まれる全ての要素が消去される。電子機器１０ａによって「相手を消去」ボタン４２３への操作が検出された場合、電子機器１０ａだけでなく、電子機器１０ｂでも、描画領域４３に表示されている画像に含まれる要素のうち、電子機器１０ｂの利用者によって入力された要素が消去される。電子機器１０ａによって「自分を消去」ボタン４２４への操作が検出された場合、電子機器１０ａだけでなく、電子機器１０ｂでも、描画領域４３に表示されている画像に含まれる要素のうち、電子機器１０ａの利用者によって入力された要素が消去される。
【００２２】
手書き操作領域４２５は、「手書き」ボタン４２５ａと、色選択ボタン４２５ｂと、太さ選択ボタン４２５ｃ〜４２５ｅとを有する。「手書き」ボタン４２５ａは、手書きモードへの切り替えを指示するためのボタンである。手書きモードでは、描画領域４３を指でなぞる軌跡に沿って、線図が画像に追加される。
【００２３】
色選択ボタン４２５ｂと、太さ選択ボタン４２５ｃ〜４２５ｅとは、手書きモードにおける描画属性を変更するためのボタンである。色選択ボタン４２５ｂは、線図の色を選択するための選択画面の表示を指示するためのボタンである。色選択ボタン４２５ｂは、現在選択されている色を、ラベルの文字、ラベルの色、またはラベルの背景の色によって提示する。太さ選択ボタン４２５ｃ〜４２５ｅは、線図の太さを指示するためのボタンである。太さ選択ボタン４２５ｃ〜４２５ｅは、選択されている太さを、選択されている太さに対応するボタンの表示態様を他のボタンと変更することによって提示する。
【００２４】
文字入力操作領域４２６は、「キーボード」ボタン４２６ａと、色選択ボタン４２６ｂと、フォントサイズ選択ボタン４２６ｃ〜４２６ｅとを有する。「キーボード」ボタン４２６ａは、文字入力モードへの切り替えを指示するためのボタンである。文字入力モードでは、描画領域４３を指でタップした位置を始点として、仮想キーボード５０を用いて入力された文字が画像に追加される。
【００２５】
色選択ボタン４２６ｂと、フォントサイズ選択ボタン４２６ｃ〜４２６ｅとは、文字入力モードにおける描画属性を変更するためのボタンである。色選択ボタン４２６ｂは、文字の色を選択するための選択画面の表示を指示するためのボタンである。色選択ボタン４２６ｂは、現在選択されている色を、ラベルの文字、ラベルの色、またはラベルの背景の色によって提示する。フォントサイズ選択ボタン４２６ｃ〜４２６ｅは、フォントサイズを指示するためのボタンである。フォントサイズ選択ボタン４２６ｃ〜４２６ｅは、選択されているフォントサイズを、選択されているフォントサイズに対応するボタンの表示態様を他のボタンと変更することによって提示する。
【００２６】
手書き操作領域４２５および文字入力操作領域４２６を操作することによって切り替えられる描画のモードは、画像通信に参加している電子機器１０毎に独立している。例えば、電子機器１０ａでは、赤い線図を用いた手書モードに切り替わっているときに、電子機器１０ｂでは、黒い文字色を用いた文字入力モードに切り替わっていることがある。
【００２７】
描画領域４３に表示される画像の更新は、移動体向け通信網２を介した通信により、ほぼリアルタイムで他方の電子機器１０に反映される。例えば、図３に示すステップＳ１１に示すように、電子機器１０ａの利用者が、円を描くように指Ｆ１を用いてタッチパネル１１をなぞる操作を開始すると、電子機器１０ａとほぼ同じタイミングで、電子機器１０ｂでも線図Ｄ１が表示され始める。その後、ステップＳ１２およびステップＳ１３のように、利用者が、円を描くように指Ｆ１を用いてタッチパネル１１をなぞる操作を継続すると、線図Ｄ１は、指Ｆ１の動きに追随して、電子機器１０ａおよび１０ｂの両方で、ほぼリアルタイムに伸びていく。
【００２８】
描画領域４３に表示される画像のリアルタイムな更新は、双方向で実現される。例えば、図３に示すステップＳ１２に示すように、電子機器１０ｂの利用者が、三角形を描くように指Ｆ２を用いてタッチパネル１１をなぞる操作を開始すると、電子機器１０ｂとほぼ同じタイミングで、電子機器１０ａでも線図Ｄ２が表示され始める。その後、ステップＳ１３およびステップＳ１４のように、利用者が、三角形を描くように指Ｆ２を用いてタッチパネル１１をなぞる操作を継続すると、線図Ｄ２は、指Ｆ２の動きに追随して、電子機器１０ａおよび１０ｂの両方で、ほぼリアルタイムに伸びていく。
【００２９】
画像のリアルタイムな更新は、画像への新しい要素の追加だけでなく、画像からの要素の削除についても適用される。図４に示すステップＳ２１では、図３に示したステップＳ１４と同様に、電子機器１０ａの利用者によって描かれた線図Ｄ１と、電子機器１０ｂの利用者によって描かれた線図Ｄ２とが、表示中の画像に含まれている。ステップＳ２２では、電子機器１０ｂの利用者が、指Ｆ２を用いて、「自分を消去」ボタン４２４を操作している。
【００３０】
「自分を消去」ボタン４２４に対する操作を検出すると、電子機器１０ｂは、ステップＳ２３に示すように、電子機器１０ｂの利用者によって描かれた線図Ｄ２を表示中の画像から消去する。さらに、電子機器１０ｂは、移動体向け通信網２を介した通信により、線図Ｄ２の消去を、ほぼリアルタイムで電子機器１０ａに反映させる。
【００３１】
このように、画像の更新をほぼリアルタイムで実現することにより、まるで参加者が顔を突き合わせて１枚の紙を共有しながら筆談しているかのように、インタラクティブで質の高い情報交換が可能になる。さらに、共同で１枚の絵を描くというような共同作業を効率よく実現することが可能になる。
【００３２】
図５および図６を参照しながら、図１に示した電子機器１０ａおよび１０ｂの構成について説明する。電子機器１０ａおよび１０ｂは、同様の構成を有するため、以下では、電子機器１０ａを例として用いて、構成を説明する。図５は、電子機器１０ａの構成の例を示すブロック図である。図６は、スレッドの並列動作について説明するための図である。
【００３３】
図５に示すように、電子機器１０ａは、タッチパネル１１と、通信部１２と、媒体読取部１３と、制御部１４と、記憶部１５とを有する。タッチパネル１１は、タッチセンサ１１１と、表示部１１２とを有する。タッチセンサ１１１は、接触検出機能を実現する。接触検出機能は、例えば、静電容量式タッチセンサ、抵抗薄膜式タッチセンサ、赤外線式タッチセンサ等の各種タッチセンサを用いて実現される。表示部１１２は、表示機能を実現する。表示機能は、例えば、液晶表示得装置、有機ＥＬ表示装置等の各種表示装置を用いて実現される。
【００３４】
通信部１２は、他の機器と通信を行うための通信機能を実現する。通信部１２によって実現される通信機能において用いられる通信方式は、例えば、ＬＴＥ（Long Term Evolution）、Ｗ−ＣＤＭＡ（Wideband Code Division Multiple Access）、ＣＤＭＡ２０００等の無線通信方式を含む。通信部１２は、無線通信方式に加えて、または、無線通信方式に代えて、有線通信方式、近接通信方式等をサポートしてもよい。
【００３５】
媒体読取部１３は、メモリカード、光ディスク、磁気ディスク、光磁気ディスク、磁気テープ等の可搬で非一過的な（non-transitory）記憶媒体に記憶されているデータおよびプログラム等を読み出す。媒体読取部１３は、記憶媒体にデータ等を書き込む機能を有していてもよい。電子機器１０ａは、媒体読取部１３を含まなくてもよい。電子機器１０ａは、媒体読取部１３を着脱できるように構成されてもよい。
【００３６】
制御部１４は、電子機器１０ａを統括的に制御する。制御部１４は、ＣＰＵ（Central Processing Unit）等のプロセッサを有し、記憶部１５に記憶されているプログラムをプロセッサを用いて実行することによって、各種の機能を実現する。制御部１４が実現する機能には、画像通信の機能が含まれる。
【００３７】
記憶部１５は、データおよびプログラム等を記憶する。記憶部１５は、半導体記憶装置、磁気記憶装置等の不揮発性の記憶装置を有する。記憶部１５は、ＤＲＡＭ（Dynamic Random Access Memory）のような揮発性の記憶装置をさらに含んでもよい。記憶部１５に記憶されるデータおよびプログラムは、通信部１２による通信によって他の装置からダウンロードされてもよい。記憶部１５に記憶されるデータおよびプログラムは、媒体読取部１３によって、記憶媒体から読み出されてもよい。
【００３８】
記憶部１５は、ＯＳ（Operating System）１５１、画像通信プログラム１５２、アドレス帳データ１５３、保存データ１５４等を記憶する。さらに、記憶部１５には、データを一時的に記憶するための一時領域１５５が設けられる。一時領域１５５は、揮発性の記憶装置に設けられてもよい。
【００３９】
ＯＳ１５１は、電子機器１０ａの基本的な機能を実現させる。例えば、ＯＳ１５１は、制御部１４によって実行されることにより、制御部１４を、入力制御部１４１、表示制御部１４２、および通信制御部１４３として機能させる。入力制御部１４１は、タッチセンサ１１１が検出する接触の位置、数、継続時間、時間間隔、移動方向、移動の軌跡等に基づいて、入力操作の種別等を判定する。表示制御部１４２は、表示すべき情報に対応する制御信号を生成し、表示部１１２へ供給する。通信制御部１４３は、各種の通信プロトコルに基づいて通信部１２を制御することにより、移動体向け通信網２またはインターネット３を介した情報のやりとりを可能にする。
【００４０】
画像通信プログラム１５２は、画像通信の機能を実現させる。例えば、画像通信プログラム１５２は、制御部１４によって実行されることにより、制御部１４を、画像通信管理部１４４として機能させるとともに、制御部１４に入出力処理スレッド１４５および描画スレッド１４６を並列に実行させる。画像通信管理部１４４は、画像通信の相手の選択、画像通信のための接続の確立、接続の監視等の、画像通信のための基本的な機能を実現する。入出力処理スレッド１４５は、タッチセンサ１１１に対して行われた操作に対応する描画のための描画情報１６を取得し、一時領域１５５に設けられた描画バッファに格納するとともに、画像通信に参加している他の電子機器１０へ送信する機能を実現する。さらに、入出力処理スレッド１４５は、他の電子機器１０から送信された描画情報１６を描画バッファに格納する機能を実現する。描画スレッド１４６は、描画バッファに格納された描画情報１６に対応する描画を描画領域４３に対して行う。
【００４１】
アドレス帳データ１５３は、画像通信の相手の候補に関する情報を含む。画像通信の相手の候補に関する情報には、相手が使用する電子機器１０を特定するための情報が少なくとも含まれる。保存データ１５４は、描画領域４３に表示されている画像が保存されたデータである。一時領域１５５は、各種の機能のためのデータが一時的に保存される領域である。
【００４２】
画像通信における画像のリアルタイムな更新は、入出力処理スレッド１４５および描画スレッド１４６が並列に実行されることによって実現される。「スレッド」とは、処理の実行単位である。スレッドは、「プロセス」のように、メモリ空間が（仮想的に）独立して形成される、より大きな実行単位とは異なり、関連するスレッド間でメモリ空間が共有される。このため、スレッドは、関連するスレッドとの実行の切り替えを短時間で完了することができ、さらに、共有しているメモリ空間のデータにそれぞれのスレッドが容易にアクセスすることができる。制御部１４が複数のプロセッサを有している場合には、関連するスレッドを別々のプロセッサに割り当てて、並列に実行させることもできる。このように、入出力処理スレッド１４５および描画スレッド１４６は、データを共有しつつ、処理を並列に実行するのに適している。
【００４３】
入出力処理スレッド１４５および描画スレッド１４６の並列動作について、図６を参照しながら、より詳細に説明する。描画領域４３を指でなぞるというような描画のための操作が行われると、タッチセンサ１１１は、行われた操作に応じて検出された信号を入力制御部１４１へ送信する（ステップＳ２１）。入力制御部１４１は、送信された信号に基づいて、どのような操作が行われたかを判定し、判定された操作に関する情報を入出力処理スレッド１４５が取得する（ステップＳ２２）。
【００４４】
入出力処理スレッド１４５は、判定された操作に対応する描画を行うための描画情報１６を生成し、描画バッファ１５６に格納する（ステップＳ２３）。描画バッファ１５６は、一時領域１５５に設けられる先入れ先出し方式の記憶領域であり、入出力処理スレッド１４５および描画スレッド１４６によって共有される。
【００４５】
さらに、入出力処理スレッド１４５は、描画情報１６を、通信制御部１４３を介して、通信部１２から、画像通信に参加している他の電子機器１０へ送信させる（ステップＳ２４およびステップＳ２５）。そして、入出力処理スレッド１４５は、送信した描画情報１６を送信バッファ１５８に格納する（ステップＳ２６）。送信バッファ１５８は、一時領域１５５に設けられる記憶領域であり、他の電子機器１０へ送信された描画情報１６を時系列に格納する。他の電子機器１０へ送信された描画情報１６は、描画領域４３に表示される画像に含まれる要素のうち、当方が入力した要素に対応する。
【００４６】
上述したステップＳ２１からステップＳ２６の動作は、画像通信に参加している他の電子機器１０でも実行される。そのため、他の電子機器１０において、ステップＳ２４およびステップＳ２５が実行されると、通信部１２によって描画情報１６が受信される。通信部１２によって描画情報１６が受信されると、入出力処理スレッド１４５が、通信制御部１４３を介して、描画情報１６を取得する（ステップＳ３１およびステップＳ３２）。
【００４７】
入出力処理スレッド１４５は、取得した描画情報１６を描画バッファ１５６に格納する（ステップＳ３３）。さらに、入出力処理スレッド１４５は、描画情報１６を受信バッファ１５７に格納する（ステップＳ３４）。受信バッファ１５７は、一時領域１５５に設けられる記憶領域であり、他の電子機器１０から送信された描画情報１６を時系列に格納する。他の電子機器１０から送信された描画情報１６は、描画領域４３に表示される画像に含まれる要素のうち、相手が入力した要素に対応する。
【００４８】
このように、入出力処理スレッド１４５により、タッチセンサ１１１の検出に基づく描画情報１６および通信部１２により受信された描画情報１６が描画バッファ１５６に格納される。
【００４９】
描画スレッド１４６は、描画バッファ１５６を監視し、描画バッファ１５６に描画情報１６が格納されていれば、描画情報１６を読み出す（ステップＳ４１）。描画バッファ１５６は、ＦＩＦＯであるので、複数の描画情報１６が描画バッファ１５６が含まれている場合、最も先に格納された描画情報１６が読み出される。読み出された描画情報１６が格納されていた領域は、他の描画情報１６を格納できるように設定される。
【００５０】
描画スレッド１４６は、読み出した描画情報１６に基づいて、描画領域４３にどのような描画を行うかを判定し、判定した描画の実行を表示制御部１４２に指示する（ステップＳ４２）。表示制御部１４２は、指示に応じた制御信号を表示部１１２へ送信する（ステップＳ４３）。
【００５１】
このように、入出力処理スレッド１４５および描画スレッド１４６は、描画バッファ１５６を介して描画情報１６をやりとりすることにより、独立して（非同期で）処理を並列に実行することができる。このため、画像通信に参加している各電子機器１０で入力された操作に対応する描画を、各電子機器１０において、ほぼリアルタイムに実現することができる。
【００５２】
描画スレッド１４６は、受信バッファ１５７または送信バッファ１５８に含まれている描画情報１６に基づいて、描画処理を実行することもできる。
【００５３】
受信バッファ１５７に含まれている描画情報１６に基づく描画処理では、描画スレッド１４６は、受信バッファ１５７に含まれている描画情報１６を時系列に順次読み出す（ステップＳ５１）。そして、描画スレッド１４６は、読み出した描画情報１６に基づいて描画の実行を表示制御部１４２に指示し（ステップＳ４２）、表示制御部１４２は、指示に応じた制御信号を表示部１１２へ送信する（ステップＳ４３）。受信バッファ１５７に含まれている描画情報１６に基づく描画処理は、例えば、当方が入力した要素を消去することを指示された場合に、描画領域４３のクリア後に相手が入力した要素を再描画するために実行される。
【００５４】
送信バッファ１５８に含まれている描画情報１６に基づく描画処理では、描画スレッド１４６は、送信バッファ１５８に含まれている描画情報１６を時系列に順次読み出す（ステップＳ６１）。そして、描画スレッド１４６は、読み出した描画情報１６に基づいて描画の実行を表示制御部１４２に指示し（ステップＳ４２）、表示制御部１４２は、指示に応じた制御信号を表示部１１２へ送信する（ステップＳ４３）。送信バッファ１５８に含まれている描画情報１６に基づく描画処理は、例えば、相手が入力した要素を消去することを指示された場合に、描画領域４３のクリア後に当方が入力した要素を再描画するために実行される。
【００５５】
図７から図１４を参照しながら、図１に示した画像通信システム１の動作についてより詳細に説明する。図７は、電子機器１０間の接続を確立するための動作の例を示すシーケンス図である。図７に示す例は、電子機器１０ａが電子機器１０ｂに対して画像通信の開始を要求する場合の例である。図７に示す例における電子機器１０ａおよび電子機器１０ｂの動作は、画像通信管理部１４４が提供する機能によって実現される。
【００５６】
電子機器１０ａは、タッチパネル１１等を介して画像通信の開始の指示を検出する（ステップＳ１０１）。画像通信の開始の指示は、例えば、アドレス帳データ１５３に含まれる候補者がタッチパネル１１に一覧表示される画面において、利用者が所望の候補者を通信相手として選択することによって入力される。以下の説明では、電子機器１０ｂの利用者が通信相手として選択されたものとする。
【００５７】
電子機器１０ａは、通信相手に対応する電子機器１０ｂへのプッシュ通知の送信によって、画像通信の開始を要求する（ステップＳ１０２）。プッシュ通知は、電話番号のように、移動体向けの通信サービスにおいて電子機器１０ｂに予め割り当てられているＩＤを用いて送信することができる。プッシュ通知には、発信側の電子機器１０（この場合、電子機器１０ａ）を識別するための発信側ＩＤが含まれる。発信側ＩＤは、電話番号のように機器に予め割り当てられているＩＤであってもよいし、画像通信サービスの利用開始時に登録されたユーザＩＤのようにサービス毎に割り当てられるＩＤであってもよい。
【００５８】
電子機器１０ａは、さらに、サーバ２０に対して、アドレス情報の登録を要求する（ステップＳ１０３）。サーバ２０に対する要求の送信は、サーバ２０に予め割り当てられているＩＰアドレス、または、ＩＰアドレスに対応するドメイン名を指定して行われる。サーバ２０に対する要求には、発信側ＩＤが含まれる。
【００５９】
サーバ２０は、要求を受けると、発信側ＩＤを、要求元（この場合、電子機器１０ａ）のアドレス情報と対応付けて保存する（ステップＳ１０４）。アドレス情報は、他の電子機器１０が要求元の電子機器１０と通信するために、送信先を特定するための情報として用いられる情報であり、例えば、グローバルＩＰアドレスとポート番号とを含む。電子機器１０ａにプライベートアドレスが割り当てられている場合、電子機器１０ａは、自分に割り当てられているグローバルＩＰアドレスを知ることはできない。しかしながら、インターネット３に接続されているサーバ２０は、受信した要求のヘッダ部から、電子機器１０ａに割り当てられているグローバルＩＰアドレス等を取得することができる。
【００６０】
電子機器１０ｂは、プッシュ通知を受信すると、着信音の出力、表示部１１２へのメッセージ等の表示、ランプの点灯、振動等により、画像通信の要求があることを利用者に伝え、画像通信を承認するか否かの確認を求める呼び出し処理を実行する（ステップＳ１０５）。呼び出し処理は、電話の着信時の処理と同様の処理である。承認を得られなかった場合、または、所定の時間を経過しても利用者からの指示がなかった場合（ステップＳ１０６，Ｎｏ）、電子機器１０ｂは、処理を中止する（ステップＳ１０７）。
【００６１】
利用者の承認を得られた場合（ステップＳ１０６，Ｙｅｓ）、電子機器１０ｂは、サーバ２０に対して、アドレス情報の登録を要求する（ステップＳ１０８）。サーバ２０に対する要求には、受信側の電子機器１０（この場合、電子機器１０ｂ）を識別するための受信側ＩＤが含まれる。受信側ＩＤは、電話番号のように機器に予め割り当てられているＩＤであってもよいし、画像通信サービスの利用開始時に登録されたユーザＩＤのようにサービス毎に割り当てられるＩＤであってもよい。
【００６２】
サーバ２０は、要求を受けると、受信側ＩＤを、要求元（この場合、電子機器１０ｂ）のアドレス情報と対応付けて保存する（ステップＳ１０９）。電子機器１０ｂにプライベートアドレスが割り当てられている場合でも、サーバ２０は、受信した要求のヘッダ部から、電子機器１０ｂに割り当てられているグローバルＩＰアドレス等を取得することができる。
【００６３】
さらに、電子機器１０ｂは、サーバ２０に対して、発信側のアドレス情報の提供を要求する（ステップＳ１１０）。サーバ２０に対する要求には、プッシュ通知で受信した発信側ＩＤが含まれる。サーバ２０は、要求を受けると、発信側ＩＤと対応付けて保存されているアドレス情報を応答する（ステップＳ１１１）。電子機器１０ｂは、応答された発信側のアドレス情報を記憶する（ステップＳ１１２）。
【００６４】
ステップＳ１０３の後、電子機器１０ａは、サーバ２０に対して、受信側のアドレス情報の提供を要求する（ステップＳ１１３）。サーバ２０に対する要求には、アドレス帳データ１５３等から取得した受信側ＩＤが含まれる。サーバ２０は、要求を受けると、受信側ＩＤと対応付けて保存されているアドレス情報を応答する（ステップＳ１１４）。受信側ＩＤと対応付けてアドレス情報が保存されていない場合、サーバ２０は、アドレス情報の登録を所定時間待つ。例えば、ステップＳ１０７で電子機器１０ｂが処理を中止した場合、受信側のアドレス情報は登録されない。この場合、サーバ２０は、所定時間待った後、要求を破棄するか、または、アドレス情報が見つからない旨を応答する。
【００６５】
アドレス情報が応答されずに所定時間経過した場合（ステップＳ１１５，Ｙｅｓ）、電子機器１０ａは、処理を中止する（ステップＳ１１６）。
【００６６】
所定時間が経過しないうちにアドレス情報が応答された場合（ステップＳ１１５，Ｎｏ）、電子機器１０ａは、応答された受信側のアドレス情報を記憶する（ステップＳ１１７）。そして、電子機器１０ａは、画像通信画面４０をタッチパネル１１に表示させ（ステップＳ１１８）、入出力処理スレッド１４５および描画スレッド１４６を起動し（ステップＳ１１９）、電子機器１０ｂに対して準備完了を通知する（ステップＳ１２０）。
【００６７】
一方、電子機器１０ｂは、画像通信画面４０をタッチパネル１１に表示させ（ステップＳ１２１）、入出力処理スレッド１４５および描画スレッド１４６を起動し（ステップＳ１２２）、電子機器１０ａに対して準備完了を通知する（ステップＳ１２３）。
【００６８】
このように、サーバ２０を介してアドレス情報の登録と取得とを行うことにより、電子機器１０ａおよび電子機器１０ｂは、通信相手のアドレス情報を取得することができる。これにより、電子機器１０ａおよび電子機器１０ｂは、サーバ２０等を介することなく、描画情報１６等をピアツーピア通信によって短時間で送信することができる。
【００６９】
電子機器１０間の接続を確立するための動作は、図７に示した例に限定されない。例えば、接続を確立しようとする電子機器１０は、プッシュ通知等を利用して、通信状態に関する情報を交換してもよい。受信側の電子機器１０が、通話中または他の機器と画像通信中の場合、その旨を発信側の電子機器１０へ送信し、送信側の電子機器１０が利用者に通知することにより、利用者は、所定時間の経過を待たずに、受信側が画像通信に応じることができる状態にないことを知ることができる。
【００７０】
図７に示した例では、サーバ２０を介してアドレス情報の登録と取得とを行う例を示したが、既知のアドレス情報を用いて接続を確立することができる場合、サーバ２０は、画像通信システム１に含まれなくてもよい。
【００７１】
図７では、描画情報１６等をピアツーピア通信によって送信するために、電子機器１０間の接続を確立する例について説明したが、描画情報１６等は、サーバ２０を介して送信されてもよい。この場合、サーバ２０を介したアドレス情報の登録と取得は、行われなくてもよい。
【００７２】
図８は、入出力処理スレッド１４５の動作の例を示すフローチャートである。図８に示す動作は、繰り返して実行される。
【００７３】
入出力処理スレッド１４５は、操作パネル領域４２に対する操作が検出されたかを判定する（ステップＳ２０１）。操作パネル領域４２に対する操作が検出された場合（ステップＳ２０１，Ｙｅｓ）、入出力処理スレッド１４５は、操作に応じて描画のモードの切り替え等を行うために、後述するモード変更処理を実行する（ステップＳ２０２）。操作パネル領域４２に対する操作が検出されていない場合（ステップＳ２０１，Ｎｏ）、ステップＳ２０２は実行されない。
【００７４】
続いて、入出力処理スレッド１４５は、描画領域４３に対する操作が検出されたかを判定する（ステップＳ２０３）。描画領域４３に対する操作が検出された場合（ステップＳ２０３，Ｙｅｓ）、入出力処理スレッド１４５は、現在の描画のモードが、手書きモードであるかを判定する（ステップＳ２０４）。現在の描画のモードが手書きモードである場合（ステップＳ２０４，Ｙｅｓ）、入出力処理スレッド１４５は、手書きに応じた描画が行われるように、後述する手書き情報格納処理を実行する（ステップＳ２０５）。現在の描画のモードが手書きモードでなく文字入力モードである場合（ステップＳ２０４，Ｎｏ）、入出力処理スレッド１４５は、操作された位置を文字入力の位置として記憶する（ステップＳ２０６）。描画領域４３に対する操作が検出されていない場合（ステップＳ２０３，Ｎｏ）、ステップＳ２０４からステップＳ２０６は実行されない。
【００７５】
続いて、入出力処理スレッド１４５は、仮想キーボード５０を用いた文字入力操作が検出されたかを判定する（ステップＳ２０７）。文字入力操作が検出された場合（ステップＳ２０７，Ｙｅｓ）、入出力処理スレッド１４５は、入力された文字が描画されるように、後述する文字情報格納処理を実行する（ステップＳ２０８）。文字入力操作が検出されていない場合（ステップＳ２０７，Ｎｏ）、ステップＳ２０８は実行されない。
【００７６】
続いて、入出力処理スレッド１４５は、画像通信に参加している他方の電子機器１０から描画情報１６が受信されたかを判定する（ステップＳ２０９）。描画情報１６が受信された場合（ステップＳ２０９，Ｙｅｓ）、入出力処理スレッド１４５は、受信された描画情報１６に基づく描画が行われるように、後述する受信情報格納処理を実行する（ステップＳ２１０）。描画情報１６が受信されていない場合（ステップＳ２０９，Ｎｏ）、ステップＳ２１０は実行されない。
【００７７】
図８に示したステップＳ２０１、ステップＳ２０３、ステップＳ２０７、およびステップＳ２０９の判定を実行する順序は、図８に示した例の順序に限定されない。
【００７８】
図９は、図８に示したモード変更処理の手順を示すフローチャートである。入出力処理スレッド１４５は、「消去」ボタン４２２に対する操作が検出されたかを判定する（ステップＳ３０１）。「消去」ボタン４２２に対する操作が検出された場合（ステップＳ３０１，Ｙｅｓ）、入出力処理スレッド１４５は、他方の電子機器１０でも消去が実行されるように、他方の電子機器１０へ描画情報１６を送信する（ステップＳ３０２）。送信される描画情報１６には、種別として「ＣＬＥＡＲＡＬＬ」が設定される。「ＣＬＥＡＲＡＬＬ」は、画像の全ての要素の消去を指示する種別である。さらに、入出力処理スレッド１４５は、描画バッファ１５６をクリアし（ステップＳ３０３）、送信バッファ１５８をクリアし（ステップＳ３０４）、受信バッファ１５７をクリアし（ステップＳ３０５）、描画領域４３をクリアする（ステップＳ３０６）。
【００７９】
「消去」ボタン４２２に対する操作が検出されていない場合（ステップＳ３０１，Ｎｏ）、入出力処理スレッド１４５は、「相手を消去」ボタン４２３に対する操作が検出されたかを判定する（ステップＳ３０７）。「相手を消去」ボタン４２３に対する操作が検出された場合（ステップＳ３０７，Ｙｅｓ）、入出力処理スレッド１４５は、他方の電子機器１０で入力された要素の消去が他方の電子機器１０でも消去が実行されるように、他方の電子機器１０へ描画情報１６を送信する（ステップＳ３０８）。送信される描画情報１６には、種別として「ＣＬＥＡＲＹＯＵＲＳ」が設定される。「ＣＬＥＡＲＹＯＵＲＳ」は、画像の要素のうち、他方の電子機器１０で入力された要素の消去を指示する種別である。さらに、入出力処理スレッド１４５は、描画バッファ１５６をクリアし（ステップＳ３０９）、受信バッファ１５７をクリアし（ステップＳ３１０）、描画領域４３をクリアする（ステップＳ３１１）。そして、入出力処理スレッド１４５は、送信バッファ１５８内の描画情報１６に基づく再描画の実行を描画スレッド１４６に依頼する（ステップＳ３１２）。
【００８０】
「相手を消去」ボタン４２３に対する操作が検出されていない場合（ステップＳ３０７，Ｎｏ）、入出力処理スレッド１４５は、「自分を消去」ボタン４２４に対する操作が検出されたかを判定する（ステップＳ３１３）。「自分を消去」ボタン４２４に対する操作が検出された場合（ステップＳ３１３，Ｙｅｓ）、入出力処理スレッド１４５は、当方の電子機器１０で入力された要素の消去が他方の電子機器１０でも消去が実行されるように、他方の電子機器１０へ描画情報１６を送信する（ステップＳ３１４）。送信される描画情報１６には、種別として「ＣＬＥＡＲＭＩＮＥ」が設定される。「ＣＬＥＡＲＭＩＮＥ」は、画像の要素のうち、当方の電子機器１０で入力された要素の消去を指示する種別である。さらに、入出力処理スレッド１４５は、描画バッファ１５６をクリアし（ステップＳ３１５）、送信バッファ１５８をクリアし（ステップＳ３１６）、描画領域４３をクリアする（ステップＳ３１７）。そして、入出力処理スレッド１４５は、受信バッファ１５７内の描画情報１６に基づく再描画の実行を描画スレッド１４６に依頼する（ステップＳ３１８）。
【００８１】
「自分を消去」ボタン４２４に対する操作が検出されていない場合（ステップＳ３１３，Ｎｏ）、入出力処理スレッド１４５は、「手書き」ボタン４２５ａに対する操作が検出されたかを判定する（ステップＳ３１９）。「手書き」ボタン４２５ａに対する操作が検出されたということは、手書きモードへの切り替えを指示されたことを意味する。「手書き」ボタン４２５ａに対する操作が検出された場合（ステップＳ３１９，Ｙｅｓ）、入出力処理スレッド１４５は、仮想キーボード５０を消去する（ステップＳ３２０）。
【００８２】
「手書き」ボタン４２５ａに対する操作が検出されていない場合（ステップＳ３１９，Ｎｏ）、入出力処理スレッド１４５は、「キーボード」ボタン４２６ａに対する操作が検出されたかを判定する（ステップＳ３２１）。「キーボード」ボタン４２６ａに対する操作が検出されたということは、文字入力モードへの切り替えを指示されたことを意味する。「キーボード」ボタン４２６ａに対する操作が検出された場合（ステップＳ３２１，Ｙｅｓ）、入出力処理スレッド１４５は、仮想キーボード５０を表示させる（ステップＳ３２２）。
【００８３】
「キーボード」ボタン４２６ａに対する操作が検出されていない場合（ステップＳ３２１，Ｎｏ）、入出力処理スレッド１４５は、「保存」ボタン４２１に対する操作が検出されたかを判定する（ステップＳ３２３）。「保存」ボタン４２１に対する操作が検出されていないということは、この例の場合、色選択ボタン４２５ｂ等の描画属性の変更のためのボタンが操作されたことを意味する。「保存」ボタン４２１に対する操作が検出されていない場合（ステップＳ３２３，Ｎｏ）、入出力処理スレッド１４５は、操作されたボタンに応じて描画属性を変更する（ステップＳ３２４）。
【００８４】
「保存」ボタン４２１に対する操作が検出された場合（ステップＳ３２３，Ｙｅｓ）、入出力処理スレッド１４５は、描画領域４３に表示されている画像を保存データ１５４として、記憶部１５に記憶させる（ステップＳ３２５）。保存データ１５４は、ビットマップ形式の画像データであってもよいし、ベクトル形式の画像データであってもよい。保存データ１５４は、描画情報１６の集合であってもよい。
【００８５】
図１０は、図８に示した手書き情報格納処理の手順を示すフローチャートである。入出力処理スレッド１４５は、描画領域４３で検出された操作がタッチの開始であるかを判定する（ステップＳ４０１）。タッチの開始が検出されたということは、新たな線図の描画が開始されることを意味する。描画領域４３で検出された操作がタッチの開始である場合（ステップＳ４０１，Ｙｅｓ）、入出力処理スレッド１４５は、新たな線図が他方の電子機器１０でも描画されるように、他方の電子機器１０へ描画情報１６を送信する（ステップＳ４０２）。その後、入出力処理スレッド１４５は、ステップＳ４０６へ進む。
【００８６】
送信される描画情報１６には、種別として「ＤＲＡＷＳＴＡＲＴ」が設定され、現在の描画属性に基づいて、線図の色を示す色情報と、線図の太さを示す太さ情報とが設定される。さらに、送信される描画情報１６には、描画領域４３において接触が検出された最新の位置（座標）が、現在の位置情報として設定され、継続中の接触が前回検出された位置（座標）が、直前の位置情報として設定される。タッチの開始が検出された場合、それ以前の継続中の接触は存在しないため、直前の位置情報には、（−１，−１）のような通常ではあり得ない位置が設定される。
【００８７】
このように、線図を描画するための描画情報１６に現在の位置情報と直前の位置情報とを設定することにより、簡単なデータ構成により、線図の繋がりを正確に再現することができる。例えば、接触が検出された位置が、（１０，２０）、（２０，２４）、（３０，２６）と移動した場合、現在の位置情報に（１０，２０）が設定され、直前の位置情報に（−１，−１）が設定された描画情報１６と、現在の位置情報に（２０，２４）が設定され、直前の位置情報に（１０，２０）が設定された描画情報１６と、現在の位置情報に（３０，２６）が設定され、直前の位置情報に（２０，２４）が設定された描画情報１６とが生成される。これらの描画情報１６は、現在の位置情報が示す位置が直前の位置情報として設定されている描画情報１６を探すことにより、描画情報１６の描画順序を容易に判定することができる。
【００８８】
描画情報１６に含まれる情報から描画順序を判定できると言うことは、描画情報１６を他の電子機器１０へ送信する際に、ＴＣＰ（Transmission Control Protocol）のような順序性が保証されるプロトコルを用いずに、ＵＤＰ（User Datagram Protocol）のようなオーバーヘッドの少ないプロトコルを用いることを可能にする。このように、線図を描画するための描画情報１６は、簡単な構成である上に、オーバーヘッドの少ないプロトコルを用いて送信することができる。この特徴は、画像の更新を電子機器１０間でほぼリアルタイムに反映させるために非常に有利である。
【００８９】
描画情報１６に含まれる情報から描画順序を判定できるということは、他方の電子機器１０で入力された線図と、当方の電子機器１０で入力された線図とを区別して描画することも可能にする。さらに、このことは、タッチセンサ１１１が、複数の箇所での接触操作を同時に検出するマルチタッチに対応している場合には、接触操作が検出された箇所毎に直前の接触位置を記憶しておくことにより、複数の接触操作に対応するそれぞれの線図を区別しながら同時に描画することを可能にする。
【００９０】
描画領域４３で検出された操作がタッチの開始でない場合（ステップＳ４０１，Ｎｏ）、入出力処理スレッド１４５は、描画領域４３で検出された操作がタッチの終了であるかを判定する（ステップＳ４０３）。タッチの終了が検出されたということは、線図の描画が終了することを意味する。描画領域４３で検出された操作がタッチの終了である場合（ステップＳ４０３，Ｙｅｓ）、入出力処理スレッド１４５は、線図の描画が他方の電子機器１０でも終了するように、他方の電子機器１０へ描画情報１６を送信する（ステップＳ４０４）。その後、入出力処理スレッド１４５は、ステップＳ４０６へ進む。
【００９１】
送信される描画情報１６には、種別として「ＤＲＡＷＥＮＤ」が設定される。さらに、送信される描画情報１６には、描画領域４３において接触が検出された最新の位置（座標）が、現在の位置情報として設定され、継続中であった接触が前回検出された位置（座標）が、直前の位置情報として設定される。色情報と、太さ情報は、タッチの開始の検出時と同じであるため、省略される。これらを省略することにより、データ送信量を少なくすることができ、画像の更新を電子機器１０間でほぼリアルタイムに反映させ易くなる。
【００９２】
描画領域４３で検出された操作がタッチの終了でない場合（ステップＳ４０３，Ｎｏ）、描画領域４３で検出された操作は、タッチパネル１１との接触を保ったまま接触位置を移動させる操作である。これは、線図の描画が継続していることを意味する。この場合、入出力処理スレッド１４５は、線図の描画が他方の電子機器１０でも継続するように、他方の電子機器１０へ描画情報１６を送信する（ステップＳ４０５）。その後、入出力処理スレッド１４５は、ステップＳ４０６へ進む。
【００９３】
送信される描画情報１６には、種別として「ＤＲＡＷ」が設定される。さらに、送信される描画情報１６には、描画領域４３において接触が検出された最新の位置（座標）が、現在の位置情報として設定され、継続中の接触が前回検出された位置（座標）が、直前の位置情報として設定される。色情報と、太さ情報は、タッチの開始の検出時と同じであるため、省略される。これらを省略することにより、データ送信量を少なくすることができ、画像の更新を電子機器１０間でほぼリアルタイムに反映させ易くなる。
【００９４】
ステップＳ４０６では、入出力処理スレッド１４５は、送信した描画情報１６を描画バッファ１５６に格納する。格納に際して、入出力処理スレッド１４５は、描画情報１６から種別を削除する。これにより、描画バッファ１５６の記憶容量を比較的小さくすることができる。
【００９５】
さらに、入出力処理スレッド１４５は、送信した描画情報１６を送信バッファ１５８に格納する（ステップＳ４０７）。格納に際して、入出力処理スレッド１４５は、描画情報１６から種別を削除する。これにより、送信バッファ１５８の記憶容量を比較的小さくすることができる。
【００９６】
そして、入出力処理スレッド１４５は、次回の処理のために、描画領域４３において接触が検出された最新の位置を、直前の位置情報として記憶する（ステップＳ４０８）。
【００９７】
図１１は、図８に示した文字情報格納処理の手順を示すフローチャートである。入出力処理スレッド１４５は、入力された文字が他方の電子機器１０でも描画されるように、他方の電子機器１０へ描画情報１６を送信する（ステップＳ５０１）。送信される描画情報１６には、種別として「ＴＥＸＴ」が設定され、入力された文字または文字列が入力文字列として設定される。さらに、現在の描画属性に基づいて、文字の色を示す色情報と、文字の大きさを示すフォントサイズ情報とが設定される。さらに、送信される描画情報１６には、ステップＳ２０６で記憶された位置が、位置情報として設定される。
【００９８】
入出力処理スレッド１４５は、送信した描画情報１６を描画バッファ１５６に格納する（ステップＳ５０２）。格納に際して、入出力処理スレッド１４５は、描画情報１６から種別を削除する。これにより、描画バッファ１５６の記憶容量を比較的小さくすることができる。
【００９９】
さらに、入出力処理スレッド１４５は、送信した描画情報１６を送信バッファ１５８に格納する（ステップＳ５０３）。格納に際して、入出力処理スレッド１４５は、描画情報１６から種別を削除する。これにより、送信バッファ１５８の記憶容量を比較的小さくすることができる。
【０１００】
図１２は、図８に示した受信情報格納処理の手順を示すフローチャートである。入出力処理スレッド１４５は、受信された描画情報１６の種別を判定する（ステップＳ６０１）。描画情報１６の種別が「ＣＬＥＡＲＡＬＬ」の場合（ステップＳ６０２，Ｙｅｓ）、入出力処理スレッド１４５は、描画バッファ１５６をクリアし（ステップＳ６０３）、送信バッファ１５８をクリアし（ステップＳ６０４）、受信バッファ１５７をクリアし（ステップＳ６０５）、描画領域４３をクリアする（ステップＳ６０６）。
【０１０１】
描画情報１６の種別が「ＣＬＥＡＲＭＩＮＥ」の場合（ステップＳ６０２，ＮｏかつステップＳ６０７，Ｙｅｓ）、入出力処理スレッド１４５は、描画バッファ１５６をクリアし（ステップＳ６０８）、受信バッファ１５７をクリアし（ステップＳ６０９）、描画領域４３をクリアする（ステップＳ６１０）。そして、入出力処理スレッド１４５は、送信バッファ１５８内の描画情報１６に基づく再描画の実行を描画スレッド１４６に依頼する（ステップＳ６１１）。
【０１０２】
描画情報１６の種別が「ＣＬＥＡＲＹＯＵＲＳ」の場合（ステップＳ６０７，ＮｏかつステップＳ６１２，Ｙｅｓ）、入出力処理スレッド１４５は、描画バッファ１５６をクリアし（ステップＳ６１３）、送信バッファ１５８をクリアし（ステップＳ６１４）、描画領域４３をクリアする（ステップＳ６１５）。そして、入出力処理スレッド１４５は、受信バッファ１５７内の描画情報１６に基づく再描画の実行を描画スレッド１４６に依頼する（ステップＳ６１６）。
【０１０３】
描画情報１６の種別が「ＤＲＡＷＳＴＡＲＴ」の場合（ステップＳ６１２，ＮｏかつステップＳ６１７，Ｙｅｓ）、入出力処理スレッド１４５は、描画情報１６に含まれる色情報と太さ情報とを記憶する（ステップＳ６１８）。そして、入出力処理スレッド１４５は、描画情報１６を描画バッファ１５６に格納し（ステップＳ６１９）、さらに、受信バッファ１５７に格納する（ステップＳ６２０）。格納に際して、入出力処理スレッド１４５は、描画情報１６から種別を削除する。これにより、描画バッファ１５６および受信バッファ１５７の記憶容量を比較的小さくすることができる。
【０１０４】
描画情報１６の種別が「ＤＲＡＷ」または「ＤＲＡＷＥＮＤ」の場合（ステップＳ６１７，ＮｏかつステップＳ６２１，Ｙｅｓ）、入出力処理スレッド１４５は、描画情報１６を描画バッファ１５６に格納し（ステップＳ６１９）、さらに、受信バッファ１５７に格納する（ステップＳ６２０）。入出力処理スレッド１４５は、ステップＳ６１８で記憶した色情報と太さ情報とを、格納される描画情報１６に設定する。格納に際して、入出力処理スレッド１４５は、描画情報１６から種別を削除する。これにより、描画バッファ１５６および受信バッファ１５７の記憶容量を比較的小さくすることができる。
【０１０５】
描画情報１６の種別が「ＴＥＸＴ」の場合（ステップＳ６２１，ＮｏかつステップＳ６２２，Ｙｅｓ）、入出力処理スレッド１４５は、描画情報１６を描画バッファ１５６に格納し（ステップＳ６２３）、さらに、受信バッファ１５７に格納する（ステップＳ６２４）。格納に際して、入出力処理スレッド１４５は、描画情報１６から種別を削除する。これにより、描画バッファ１５６および受信バッファ１５７の記憶容量を比較的小さくすることができる。
【０１０６】
描画情報１６の種別が「ＴＥＸＴ」でない場合（ステップＳ６２２，Ｎｏ）、特に処理は行われない。
【０１０７】
図１３は、描画スレッド１４６の動作の例を示すフローチャートである。図１３に示す動作は、繰り返して実行される。
【０１０８】
描画スレッド１４６は、送信バッファ１５８内の描画情報１６に基づく再描画の実行を依頼されたかを判定する（ステップＳ７０１）。依頼された場合（ステップＳ７０１，Ｙｅｓ）、描画スレッド１４６は、送信バッファ１５８内の描画情報１６を順次読み出して、読み出した描画情報１６に基づいて、描画領域４３に対する描画を実行する（ステップＳ７０２）。依頼されていない場合（ステップＳ７０１，Ｎｏ）、ステップＳ７０２は、実行されない。
【０１０９】
続いて、描画スレッド１４６は、受信バッファ１５７内の描画情報１６に基づく再描画の実行を依頼されたかを判定する（ステップＳ７０３）。依頼された場合（ステップＳ７０３，Ｙｅｓ）、描画スレッド１４６は、受信バッファ１５７内の描画情報１６を順次読み出して、読み出した描画情報１６に基づいて、描画領域４３に対する描画を実行する（ステップＳ７０４）。依頼されていない場合（ステップＳ７０３，Ｎｏ）、ステップＳ７０４は、実行されない。
【０１１０】
続いて、描画スレッド１４６は、描画バッファ１５６内の描画情報１６を順次読み出して、読み出した描画情報１６に基づいて、描画領域４３に対する描画を実行する（ステップＳ７０５）。そして、描画スレッド１４６は、描画に用いた描画情報１６の、描画バッファ１５６における記憶領域を再利用可能にする（ステップＳ７０６）。
【０１１１】
描画スレッド１４６は、文字入力に対応する描画情報１６に基づいて描画を行う場合、同じ位置情報を有する描画情報１６に含まれる文字または文字列を連結して文字列を生成し、生成した文字列を、位置情報が示す位置を始点として描画する。描画スレッド１４６は、生成した文字列が描画領域４３の外側にはみ出す場合は、はみ出した部分を改行して表示する。
【０１１２】
描画スレッド１４６は、線図に対応する描画情報１６に基づいて描画を行う場合、現在の位置情報と直前の位置情報とに基づいて、描画情報１６の現在の位置情報が示す点をどの順序で接続して線図を描画するかを判定する。描画スレッド１４６は、描画情報１６の現在の位置情報が示す点が、判定した順序で滑らかに接続されるように線図を描画する。複数の点（頂点）を結ぶ滑らかな線は、例えば、図１４に示したステップＳ８０１からステップＳ８１４の手順を実行することによって実現される。
【０１１３】
上述した各種の構成は、本発明の趣旨を逸脱しない範囲で、任意に変形することができる。例えば、画像通信プログラム１５２は、他のプログラムと統合されてもよいし、複数のモジュールに分割されてもよい。
【０１１４】
電子機器１０ａおよび１０ｂは、物理的なキーボードを備え、仮想キーボード５０でなく、物理的なキーボードを介して文字の入力を受け付けてもよい。
【０１１５】
上記の実施形態では、一方の電子機器１０で入力された要素を画像から消去するために、描画領域４３をクリアした後に他方の電子機器１０で入力された要素を再描画する例を示した。しかしながら、一方の電子機器１０で入力された要素を画像から消去する処理はレイア処理によって実現してもよい。具体的には、それぞれの電子機器１０で入力された要素を異なるレイヤに描画し、描画領域４３にはレイヤを重ねた画像を表示する。このようにすることで、一方のレイヤをクリアするだけで、要素の再描画を行うことなく、一方の電子機器１０で入力された要素を画像から消去することができる。
【０１１６】
上記の実施形態で説明した装置（機器）及び画面の構成は例であり、本願発明は、これらに限定されない。
【符号の説明】
【０１１７】
１  画像通信システム
２  移動体向け通信網
３  インターネット
１０ａ、１０ｂ  電子機器
１１  タッチパネル
１１１  タッチセンサ
１１２  表示部
１２  通信部
１３  媒体読取部
１４  制御部
１４１  入力制御部
１４２  表示制御部
１４３  通信制御部
１４４  画像通信管理部
１４５  入出力処理スレッド
１４６  描画スレッド
１５  記憶部
１５１  ＯＳ
１５２  画像通信プログラム
１５３  アドレス帳データ
１５４  保存データ
１５５  一時領域
１５６  描画バッファ
１５７  受信バッファ
１５８  送信バッファ
２０  サーバ
４０  画像通信画面
４１  ヘッダ領域
４２  操作パネル領域
４３  描画領域
【図１】
0005838185.tif 000002
【図２】
0005838185.tif 000003
【図３】
0005838185.tif 000004
【図４】
0005838185.tif 000005
【図５】
0005838185.tif 000006
【図６】
0005838185.tif 000007
【図７】
0005838185.tif 000008
【図８】
0005838185.tif 000009
【図９】
0005838185.tif 000010
【図１０】
0005838185.tif 000011
【図１１】
0005838185.tif 000012
【図１２】
0005838185.tif 000013
【図１３】
0005838185.tif 000014
【図１４】
0005838185.tif 000015