(57)【要約】【課題】効率的なデータ送信を行うようにすること。【解決手段】他の情報処理装置へデータを送信する情報処理装置において、前記他の情報処理装置において前記データの変化を表現可能な粒度を受信する受信部と、前記データが変化すると、前記受信部により受信された前記粒度と、前記データが変化した程度とに応じて、変化後の前記データを前記他の情報処理装置に送信する送信制御部と、を有する。【選択図】図３
2018173820.tif 000002
【特許請求の範囲】
【請求項１】
他の情報処理装置へデータを送信する情報処理装置であって、
前記他の情報処理装置において前記データの変化を表現可能な粒度を受信する受信部と、
前記データが変化すると、前記受信部により受信された前記粒度と、前記データが変化した程度とに応じて、変化後の前記データを前記他の情報処理装置に送信する送信制御部と、
を有する情報処理装置。
【請求項２】
前記データは、前記情報処理装置における表示データであり、
前記粒度は、前記表示データを表示する領域の解像度であり、
前記送信制御部は、最後に前記他の情報処理装置に送信した前記表示データと、変化後の前記表示データとの変化の程度、及び前記情報処理装置の解像度と、前記受信部により受信された解像度との比に応じて、変化後の前記表示データを前記他の情報処理装置に送信する、
請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、前記他の情報処理装置に送信するデータの種別に応じて、前記情報処理装置の前記粒度を決定する決定部を有し、
前記受信部は、前記種別に応じて、前記他の情報処理装置の前記粒度を受信する、
請求項１または２に記載の情報処理装置。
【請求項４】
前記送信制御部は、前記情報処理装置と前記他の情報処理装置との間のネットワークの負荷が所定の閾値以上である場合、または、前記情報処理装置の処理負荷が所定の閾値以上でない場合、前記受信部により受信された前記粒度と、前記データが変化した程度とに応じて、変化後の前記データを前記他の情報処理装置に送信する、
請求項１乃至３のいずれか一項に記載の情報処理装置。
【請求項５】
前記送信制御部は、ユーザからの操作の区切りにおける前記データを、前記他の情報処理装置に送信する、
請求項１乃至４のいずれか一項に記載の情報処理装置。
【請求項６】
前記送信制御部は、前記受信部により受信された利用粒度が同一である前記他の情報処理装置に、前記データを一斉送信する、
請求項１乃至５のいずれか一項に記載の情報処理装置。
【請求項７】
前記送信制御部は、前記データの変化が予測可能である場合、その旨を前記他の情報処理装置に送信し、前記データの変化が予測可能である間の前記データを前記他の情報処理装置に送信しない、
請求項１乃至６のいずれか一項に記載の情報処理装置。
【請求項８】
他の情報処理装置からデータを受信する情報処理装置であって、
前記他の情報処理装置に、前記データの変化を表現可能な粒度を送信する送信部と、
前記データが変化すると、前記粒度と、前記データが変化した程度とに応じて、変化後の前記データを前記他の情報処理装置から受信する受信部と、
前記データの変化が予測可能であることを前記他の情報処理装置から通知されると、予測された変化に応じたデータを生成する生成部と、
を有する情報処理装置。
【請求項９】
第１の情報処理装置と、前記第１の情報処理装置へデータを送信する第２の情報処理装置とを有する情報処理システムであって、
前記第１の情報処理装置は、
前記第１の情報処理装置において前記データの変化を表現可能な粒度を前記第２の情報処理装置に送信する送信部と、
前記第２の情報処理装置から受信した前記データに基づいて、画面に表示するデータを更新する更新部と、
を有し、
前記第２の情報処理装置は、
前記粒度を受信する受信部と、
前記データが変化すると、前記受信部により受信された前記粒度と、前記データが変化した程度とに応じて、変化後の前記データを前記第１の情報処理装置に送信する送信制御部と、
を有する情報処理システム。
【請求項１０】
他の情報処理装置へデータを送信する情報処理装置が実行する情報処理方法であって、
前記他の情報処理装置において前記データの変化を表現可能な粒度を受信し、
前記データが変化すると、前記粒度と、前記データが変化した程度とに応じて、変化後の前記データを前記他の情報処理装置に送信する、
処理を実行する情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム、及び情報処理方法に関する。
【背景技術】
【０００２】
従来、複数の端末間で、デスクトップ画面等の情報を共有するシステムが知られている。例えば、ＰＣの画面の情報を端末に表示させる場合に、ＰＣの全画面を端末に表示させるのではなく、端末の画面サイズに画像を切り出し、切り出した画像を端末に表示させる技術が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−００５５８２号公報
【特許文献２】特開平０５−２０６９５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術では、複数の端末で共有する情報が変化した場合に、一方の端末では変化を表現しないような細かい変化の場合でも、変化した情報が送受信されるため、無駄な通信が発生するという問題がある。
【０００５】
そこで、一側面では、効率的なデータ送信を行うことができる技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
一つの案では、他の情報処理装置へデータを送信する情報処理装置において、前記他の情報処理装置において前記データの変化を表現可能な粒度を受信する受信部と、前記データが変化すると、前記受信部により受信された前記粒度と、前記データが変化した程度とに応じて、変化後の前記データを前記他の情報処理装置に送信する送信制御部と、を有する。
【発明の効果】
【０００７】
一側面によれば、効率的なデータ送信を行うようにすることができる。
【図面の簡単な説明】
【０００８】
【図１】実施形態に係る情報処理システムの構成例を示す図である。
【図２】実施形態に係る情報処理装置のハードウェア構成例を示す図である。
【図３】第１の実施形態に係る情報処理装置の機能ブロック図の一例を示す図である。
【図４】実施形態に係る情報処理システムの処理の一例を示すシーケンス図である。
【図５Ａ】共有ノード情報記憶部に記憶されるデータの一例を示す図である。
【図５Ｂ】共有ノード情報記憶部に記憶されるデータの他の一例を示す図である。
【図６】共有データ記憶部に記憶されるデータの一例を示す図である。
【図７】受信部の処理の一例を示すフローチャートである。
【図８】更新部の処理の一例を示すフローチャートである。
【図９】送信制御部の処理の一例を示すフローチャートである。
【図１０】送信制御部が変更データを間引いて送信する処理の一例について説明する図である。
【図１１】送信制御部が変更データを間引かずに送信する処理の一例について説明する図である。
【図１２】決定部の処理の一例を示すフローチャートである。
【図１３】送信部の処理の一例を示すフローチャートである。
【図１４】送信制御部が所定の区切りにおいてデータを整合させる処理について説明する図である。
【図１５】第２の実施形態に係る情報処理装置の機能ブロック図の一例を示す図である。
【図１６】第２の実施形態に係る情報処理システムの処理の一例を示すシーケンス図である。
【発明を実施するための形態】
【０００９】
以下、図面に基づいて本発明の実施形態を説明する。図１は、実施形態に係る情報処理システム１の構成例を示す図である。図１において、情報処理システム１は、情報処理装置１０−１、１０−２、１０−３、・・・（以下で、それぞれを区別する必要がない場合は、単に「情報処理装置１０」と称する。）を有する。
【００１０】
なお、以下では、情報処理システム１において、例えば、ユーザのスマートフォンの画面や、机に埋め込まれた画面での操作に応じた画面を、壁に埋め込まれた比較的大きな画面に表示することにより、情報を共有する例について説明する。
【００１１】
情報処理装置１０−１、１０−２、１０−３、・・・は、ＬＡＮ（Local  Area  Network）やインターネット等の通信回線によって通信可能に接続される。
【００１２】
情報処理装置１０は、例えば、ＰＣ（Personal  Computer）、タブレット型端末、スマートフォン、電子白板等である。情報処理装置１０の画面は、例えば壁や机に埋め込まれていてもよい。
【００１３】
図２は、実施形態に係る情報処理装置１０のハードウェア構成例を示す図である。図２の情報処理装置１０は、それぞれバスＢで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、インタフェース装置１０５、表示装置１０６、及び入力装置１０７等を有する。  
情報処理装置１０での処理を実現する情報処理プログラムは、記録媒体１０１によって提供される。情報処理プログラムを記録した記録媒体１０１がドライブ装置１００にセットされると、情報処理プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、情報処理プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされた情報処理プログラムを格納すると共に、必要なファイルやデータ等を格納する。  
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従って情報処理装置１０に係る機能を実現する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。表示装置１０６はプログラムによるＧＵＩ（Graphical  User  Interface）等を表示する。入力装置１０７はタッチパネル及びボタン等で構成され、様々な操作指示を入力させるために用いられる。
【００１４】
なお、記録媒体１０１の一例としては、ＣＤ−ＲＯＭ、ＤＶＤディスク、又はＵＳＢメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置１０２の一例としては、ＨＤＤ（Hard  Disk  Drive）又はフラッシュメモリ等が挙げられる。記録媒体１０１及び補助記憶装置１０２のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。
【００１５】
［第１の実施形態］
＜機能構成＞
次に、図３を参照し、情報処理装置１０の機能構成について説明する。図３は、第１の実施形態に係る情報処理装置１０の機能ブロック図の一例を示す図である。情報処理装置１０は、決定部１２、送信部１３、受信部１４、更新部１５、及び送信制御部１６を有する。これら各部は、情報処理装置１０にインストールされた１以上のプログラムが、情報処理装置１０のＣＰＵ１０４に実行させる処理により実現される。
【００１６】
決定部１２は、情報処理装置１０の画面において、データの変化を表現可能な粒度（細かさ、精度）である利用粒度を決定する。
【００１７】
送信部１３は、決定部１２により決定された利用粒度を、データを共有する他の情報処理装置１０に送信する。
【００１８】
受信部１４は、他の情報処理装置１０における利用粒度や、共有データ等を受信する。
【００１９】
更新部１５は、共有データに基づいて、画面に表示するデータを更新する。
【００２０】
送信制御部１６は、データが変化した程度、及び決定部１２により決定された利用粒度と受信部１４により受信された利用粒度との比に応じて、共有データを他の情報処理装置１０に送信する。
【００２１】
また、情報処理装置１０は、共有ノード情報記憶部１１１、及び共有データ記憶部１１２を有する。これらの記憶部は、例えば、補助記憶装置１０２等を用いて実現される。共有ノード情報記憶部１１１、及び共有データ記憶部１１２に記憶されるデータについては後述する。
【００２２】
＜処理＞
次に、図４を参照して、情報処理システム１の処理について説明する。図４は、実施形態に係る情報処理システム１の処理の一例を示すシーケンス図である。
【００２３】
ステップＳ１において、情報処理装置１０−１の決定部１２は、情報処理装置１０−１のシステム情報を取得する。ここで、例えば、情報処理装置１０−１の画面の解像度の情報が、情報処理装置１０−１のＯＳ（Operating  System）から取得される。
【００２４】
続いて、情報処理装置１０−１の決定部１２は、情報処理装置１０−１のアプリケーションから、利用粒度を取得する（ステップＳ２）。ここで、情報処理装置１０のアプリケーションは、画面を他の情報処理装置１０と共有する機能を有する。また、利用粒度は、例えば、情報処理装置１０−１において、他の情報処理装置１０−２、・・・と共有する画面の情報を表示する画面の解像度である。
【００２５】
続いて、情報処理装置１０−１の決定部１２は、ステップＳ１で取得したシステム情報、及びステップＳ２で取得した利用粒度のうち少なくとも一方に基づいて、利用粒度を決定する（ステップＳ３）。
【００２６】
続いて、情報処理装置１０−１の決定部１２は、情報処理装置１０−１の共有ノード情報記憶部１１１から、画面を共有する相手先の一覧（ノード一覧）を取得する（ステップＳ４）。
【００２７】
図５Ａは、共有ノード情報記憶部１１１に記憶されるデータの一例を示す図である。共有ノード情報記憶部１１１には、ノードＩＤに対応付けて、接続状態、利用粒度、及び前回送信データが記憶される。
【００２８】
ノードＩＤは、画面を共有する他の情報処理装置１０のＩＤである。接続状態は、ノードＩＤに係る情報処理装置１０が通信可能な状態であるか否かを示す情報である。接続状態は、通信可能である場合、「Ａｃｔｉｖｅ」と設定される。利用粒度は、ノードＩＤに係る情報処理装置１０から通知された、当該情報処理装置１０における利用粒度である。前回送信データは、ノードＩＤに係る情報処理装置１０に前回送信したデータである。
【００２９】
続いて、情報処理装置１０−１の決定部１２は、情報処理装置１０−１の送信部１３を用いて、当該ノード一覧に含まれる他の情報処理装置１０−２、・・・に、ステップＳ３で決定した利用粒度と、情報処理装置１０−１のＩＤを送信する（ステップＳ５）。ここで、情報処理装置１０−１のＩＤは、例えば、情報処理装置１０−１のＭＡＣアドレスやＩＰアドレス等の通信アドレスでもよい。
【００３０】
図５Ｂは、共有ノード情報記憶部１１１に記憶されるデータの他の一例を示す図である。図５Ｂでは、利用粒度に対応付けて、ノードＩＤが記憶される。そして、ノードＩＤに対応付けて、接続状態、及び前回送信データが記憶される。
【００３１】
続いて、情報処理装置１０−２の受信部１４は、情報処理装置１０−２の共有ノード情報記憶部１１１に、ステップＳ５で受信した利用粒度と、情報処理装置１０−１のＩＤを対応付けて記憶する（ステップＳ６）。
【００３２】
続いて、情報処理装置１０−２の更新部１５は、情報処理装置１０−２のアプリケーションから、変更された現在の共有データ（変更データ）を取得する（ステップＳ７）。ここで、情報処理システム１において共有される画面が、例えば、情報処理装置１０−２のユーザの操作に応じて変更された場合に、変更後の画面を示す共有データが取得される。
【００３３】
続いて、情報処理装置１０−２の更新部１５は、情報処理装置１０−２の共有データ記憶部１１２に記憶されている、情報処理システム１において共有される画面の情報を更新する（ステップＳ８）。これにより、情報処理装置１０−２の画面には、更新後の共有画面が表示される。
【００３４】
図６は、共有データ記憶部１１２に記憶されるデータの一例を示す図である。共有データ記憶部１１２には、データＩＤに対応付けて、共有データが記憶される。
【００３５】
データＩＤは、共有されるデータのＩＤである。共有データは、共有されるデータの内容である。共有データには、例えば、共有されるデスクトップ画面における各ウィンドウの左下と右上の座標等の、当該各ウィンドウの位置と大きさを示すデータが含まれる。
【００３６】
続いて、情報処理装置１０−２の更新部１５は、情報処理装置１０−２の共有ノード情報記憶部１１１から、画面を共有する相手先の一覧（ノード一覧）を取得する（ステップＳ９）。
【００３７】
続いて、情報処理装置１０−２の更新部１５は、ステップＳ７で取得した共有データ、及びステップＳ９で取得したノード一覧を、情報処理装置１０−２の送信制御部１６に送信する（ステップＳ１０）。
【００３８】
続いて、情報処理装置１０−２の送信制御部１６は、共有ノード情報記憶部１１１を参照し、当該ノード一覧に含まれる他の情報処理装置１０−１、・・・の各々に送信する共有データを判定する（ステップＳ１１）。
【００３９】
続いて、情報処理装置１０−２の送信制御部１６は、情報処理装置１０−２の送信部１３を用いて、当該ノード一覧に含まれる他の情報処理装置１０−１、・・・の各々に応じて判定した共有データを、他の情報処理装置１０−１、・・・の各々に送信する（ステップＳ１２）。なお、送信部１３は、利用粒度が同一である複数の情報処理装置１０宛てに、マルチキャスト等により、同一の共有データを一斉送信してもよい。
【００４０】
続いて、情報処理装置１０−１の受信部１４は、情報処理装置１０−１宛てに送信された共有データを受信し、情報処理装置１０−１の更新部１５に送信する（ステップＳ１３）。
【００４１】
続いて、情報処理装置１０−１の更新部１５は、受信された共有データに基づいて、情報処理装置１０−１の共有データ記憶部１１２に記憶されている、情報処理システム１において共有される画面の情報を更新する（ステップＳ１４）。これにより、情報処理装置１０−１の画面には、更新後の共有画面が表示される。
【００４２】
＜変形例＞
各情報処理装置１０は、複数の種別のデータを共有するようにしてもよい。例えば、複数の画面のデータを共有してもよい。この場合、決定部１２は、共有するデータの種別毎に利用粒度を決定し、共有するデータの種別毎に共有ノード情報記憶部１１１、及び共有データ記憶部１１２を設けてもよい。また、この場合、共有するデータの種別毎に受信部１４の受信ポートを分け、受信ポート毎にコールバック関数等を設定することにより、共有するデータの種別毎に受信部１４の処理を設定してもよい。
【００４３】
≪受信部１４の処理≫
次に、図７を参照し、ステップＳ６、ステップＳ１３の受信部１４の処理について説明する。図７は、受信部１４の処理の一例を示すフローチャートである。
【００４４】
ステップＳ１０１において、受信部１４は、インタフェース装置１０５により、データを受信する。
【００４５】
続いて、受信部１４は、受信したデータが共有データであるか否かを判定する（ステップＳ１０２）。
【００４６】
受信したデータが共有データである場合（ステップＳ１０２でＹＥＳ）、受信した共有データを、更新部１５に送信し（ステップＳ１０３）、処理を終了する。
【００４７】
受信したデータが共有データでない場合（ステップＳ１０２でＮＯ）、受信したデータを、共有ノード情報記憶部１１１に記憶し（ステップＳ１０４）、処理を終了する。
【００４８】
≪更新部１５の処理≫
次に、図８を参照し、ステップＳ７乃至ステップＳ１０、及びステップＳ１４の更新部１５の処理について説明する。図８は、更新部１５の処理の一例を示すフローチャートである。以下では、情報処理装置１０−１の更新部１５の処理について説明するが、他の情報処理装置１０−２、・・・の更新部１５の処理も同様でもよい。
【００４９】
ステップＳ２０１において、情報処理装置１０−１の更新部１５は、共有データを受信する。
【００５０】
続いて、情報処理装置１０−１の更新部１５は、共有データ記憶部１１２に記憶されている、情報処理システム１において共有される画面の情報を更新する（ステップＳ２０２）。
【００５１】
続いて、情報処理装置１０−１の更新部１５は、ステップＳ２０１で受信した共有データは、情報処理装置１０−１のアプリケーションから受信したものであるか否かを判定する（ステップＳ２０３）。
【００５２】
情報処理装置１０−１のアプリケーションから受信したものでない場合（ステップＳ２０３でＮＯ）、処理を終了する。
【００５３】
情報処理装置１０−１のアプリケーションから受信したものである場合（ステップＳ２０３でＹＥＳ）、情報処理装置１０−１の更新部１５は、情報処理装置１０−１の共有ノード情報記憶部１１１から、画面を共有する相手先の一覧（ノード一覧）を取得する（ステップＳ２０４）。
【００５４】
続いて、情報処理装置１０−１の更新部１５は、ステップＳ２０１で取得した共有データ、及びステップＳ２０４で取得したノード一覧を、送信制御部１６に送信し（ステップＳ２０５）、処理を終了する。
【００５５】
≪送信制御部１６の処理≫
次に、図９を参照し、ステップＳ１１、ステップＳ１２の送信制御部１６の処理について説明する。図９は、送信制御部１６の処理の一例を示すフローチャートである。
【００５６】
ステップＳ３０１において、送信制御部１６は、共有データ、及びノード一覧を、更新部１５から取得する。
【００５７】
以下では、ノード一覧に含まれる各情報処理装置１０のうちの一の情報処理装置１０（以下、「処理対象の情報処理装置１０」と称する。）についての処理について説明する。そのため、以下の処理は、ノード一覧に含まれる各情報処理装置１０について実行される。
【００５８】
続いて、送信制御部１６は、共有ノード情報記憶部１１１において、処理対象の情報処理装置１０に対応付けて、前回送信データが記憶されているか否かを判定する（ステップＳ３０２）。
【００５９】
前回送信データが記憶されていない場合（ステップＳ３０２でＮＯ）、後述するステップＳ３０７の処理に進む。
【００６０】
前回送信データが記憶されている場合（ステップＳ３０２でＹＥＳ）、送信制御部１６は、処理対象の情報処理装置１０に対応付けられた前回送信データを、共有ノード情報記憶部１１１から取得する（ステップＳ３０３）。
【００６１】
続いて、送信制御部１６は、前回送信データと、現在の共有データである変更データとの差分を算出する（ステップＳ３０４）。ここで、例えば、前回送信データにおける所定のウィンドウの位置と、変更データにおける当該所定のウィンドウの位置との差が算出される。
【００６２】
続いて、送信制御部１６は、処理対象の情報処理装置１０に対応付けられた利用粒度を、共有ノード情報記憶部１１１から取得する（ステップＳ３０５）。
【００６３】
続いて、送信制御部１６は、ステップＳ３０４で算出した差分が、ステップＳ３で決定部１２により決定された利用粒度に対する、処理対象の情報処理装置１０に対応付けられた利用粒度の比の値以上であるか否かを判定する（ステップＳ３０６）。ここで、例えば、処理対象の情報処理装置１０に対応付けられた利用粒度が２５６０×１４４０画素であり、自情報処理装置１０−１の利用粒度が５１２０×２８８０画素である場合、当該比の値は、縦（２８８０／１４４０）、横（５１２０／２５６０）とも「２」となる。
【００６４】
差分が当該比の値以上でない場合（ステップＳ３０６でＮＯ）、処理を終了する。
【００６５】
差分が当該比の値以上である場合（ステップＳ３０６でＹＥＳ）、送信制御部１６は、送信部１３を用いて、処理対象の情報処理装置１０に、変更データを送信する（ステップＳ３０７）。
【００６６】
ここで、図１０、図１１を参照し、送信制御部１６が利用粒度に基づいて変更データを送信する処理について説明する。
【００６７】
図１０は、送信制御部１６が変更データを間引いて送信する処理の一例について説明する図である。例えば、情報処理装置１０−１において、ユーザが、所定のウィンドウを１秒間において等速で３０ピクセル移動させたとする。情報処理装置１０−１のアプリケーションが、３０ｆｐｓ（Frames  Per  Second）で画面の変化をサンプリングする場合、当該所定のウィンドウが１ピクセルずつ移動する３０個の共有データが生成される。
【００６８】
この場合において、画面を共有する他の情報処理装置１０−２の縦横の解像度が、それぞれ、情報処理装置１０−１の半分であったとすると、利用粒度の比の値は「２」ピクセルとなる。そのため、情報処理装置１０−１の送信制御部１６は、前回送信データと変更データとの差分が２ピクセルより小さい場合、当該変更データを送信しない。
【００６９】
この場合、前回送信データと変更データとの差分が２ピクセル以上となる場合に、当該変更データが他の情報処理装置１０−２に送信される。この場合、情報処理装置１０−１において、図１０（Ａ）に示すように、５０２ａ乃至５０９ａの矢印に沿って、所定のウィンドウの位置が５０１乃至５０９に変化すると、他の情報処理装置１０−２では、図１０（Ｂ）に示すように、５０３ａ、５０５ａ、５０７ａ、５０９ａの矢印に沿って、所定のウィンドウの位置が５０１、５０３、５０５、５０７、５０９の位置に変化する。
【００７０】
これにより、解像度等の制約により他の情報処理装置１０−２にて表示が変化されない、５０２、５０４、５０６、５０８の位置の変更データが間引かれ、送受信されなくなるため、無駄な通信を省くことができる。
【００７１】
図１１は、送信制御部１６が変更データを間引かずに送信する処理の一例について説明する図である。例えば、情報処理装置１０−１において、ユーザが、所定のウィンドウを０．５秒間において等速で３０ピクセル移動させたとする。情報処理装置１０−１のアプリケーションが、３０ｆｐｓ（Frames  Per  Second）で画面の変化をサンプリングする場合、当該所定のウィンドウが２ピクセルずつ移動する１５個の共有データが生成される。
【００７２】
この場合において、画面を共有する他の情報処理装置１０−２の縦横の解像度が、それぞれ、情報処理装置１０−１の半分であったとすると、利用粒度の比の値は「２」ピクセルとなる。この場合、情報処理装置１０−１において、図１１に示すように、６０２ａ乃至６０５ａの矢印に沿って、所定のウィンドウの位置が６０１乃至６０５に変化すると、他の情報処理装置１０−２においても、図１１に示すように、６０２ａ乃至６０５ａの矢印に沿って、所定のウィンドウの位置が６０１乃至６０５に変化する。
【００７３】
これにより、他の情報処理装置１０−２にて表示が変化される変更データは、間引かずに送受信される。
【００７４】
続いて、送信制御部１６は、共有ノード情報記憶部１１１において、処理対象の情報処理装置１０に対応付けられた前回送信データの項目に、今回送信したデータである変更データを記憶させる（ステップＳ３０８）。これにより、処理対象の情報処理装置１０に対応付けられた前回送信データが、当該変更データに更新される。
【００７５】
≪決定部１２の処理≫
次に、図１２を参照し、ステップＳ１乃至ステップＳ５の決定部１２の処理について説明する。図１２は、決定部１２の処理の一例を示すフローチャートである。
【００７６】
ステップＳ４０１において、決定部１２は、情報処理装置１０のシステム情報を取得する。
【００７７】
続いて、決定部１２は、システム情報に利用粒度の情報が含まれるか否かを判定する（ステップＳ４０２）。ここで、情報処理装置１０の全画面を、他の情報処理装置１０と共有する場合は、システム情報に含まれる画面の解像度を利用粒度とすればよいため、システム情報に利用粒度の情報が含まれると判定される。一方、情報処理装置１０の画面の一部の領域を、他の情報処理装置１０と共有する等の場合は、システム情報に利用粒度の情報が含まれないと判定される。
【００７８】
システム情報に利用粒度の情報が含まれない場合（ステップＳ４０２でＮＯ）、後述するステップＳ４０６の処理に進む。
【００７９】
システム情報に利用粒度の情報が含まれる場合（ステップＳ４０２でＹＥＳ）、決定部１２は、利用粒度の情報を記憶しておく（ステップＳ４０３）。
【００８０】
続いて、決定部１２は、共有ノード情報記憶部１１１から、画面を共有する相手先の一覧（ノード一覧）を取得する（ステップＳ４０４）。
【００８１】
続いて、決定部１２は、送信部１３を用いて、当該ノード一覧に含まれる他の情報処理装置１０−２、・・・に、当該利用粒度を送信する（ステップＳ４０５）。
【００８２】
続いて、決定部１２は、情報処理装置１０のアプリケーションからデータを取得するまで待機する（ステップＳ４０６）。
【００８３】
続いて、決定部１２は、情報処理装置１０のアプリケーションから、利用粒度の設定要求を取得したか否かを判定する（ステップＳ４０７）。ここで、例えば、情報処理装置１０のディスプレイを、縦型で利用される場合と横型で利用される場合とが変化した際に、利用粒度の設定要求を取得する。
【００８４】
利用粒度の設定要求を取得した場合（ステップＳ４０７でＹＥＳ）、ステップＳ４０３で記憶していた利用粒度の情報を、情報処理装置１０のアプリケーションに要求された利用粒度で更新し（ステップＳ４０８）、ステップＳ４０４の処理に進む。
【００８５】
利用粒度の設定要求を取得していない場合（ステップＳ４０７でＮＯ）、ステップＳ４０６の処理に進む。なお、ステップＳ４０６の処理は、例えば、情報処理装置１０のアプリケーションが起動している間継続し、情報処理装置１０のアプリケーションが終了された際に、処理を終了してもよい。
【００８６】
≪送信部１３の処理≫
次に、図１３を参照し、ステップＳ５、ステップＳ１２における送信部１３の処理について説明する。図１３は、送信部１３の処理の一例を示すフローチャートである。
【００８７】
ステップＳ５０１において、送信部１３は、決定部１２または送信制御部１６から、送信するデータと、送信先のノードの情報を受信する。
【００８８】
続いて、送信部１３は、共有ノード情報記憶部１１１を参照し、当該ノードの接続状態がＡｃｔｉｖｅ（通信可能）であるか否かを判定する（ステップＳ５０２）。
【００８９】
当該ノードがＡｃｔｉｖｅでない場合（ステップＳ５０２でＮＯ）、処理を終了する。
【００９０】
当該ノードがＡｃｔｉｖｅである場合（ステップＳ５０２でＹＥＳ）、送信部１３は、当該データを、当該ノードに送信し（ステップＳ５０３）、処理を終了する。
【００９１】
≪送信制御部１６の処理の変形例≫
以下では、情報処理装置１０−１の送信制御部１６の処理の変形例について説明するが、他の情報処理装置１０−２、・・・の送信制御部１６の処理も同様でもよい。
【００９２】
情報処理装置１０−１の送信制御部１６は、各情報処理装置１０間のネットワークの負荷が所定の閾値以上である場合や、共有データを送信する情報処理装置１０−１のＣＰＵ１０４の処理負荷が所定の閾値以上でない場合に、図９のステップＳ３０６による間引き処理を行うようにしてもよい。すなわち、各情報処理装置１０間のネットワークの負荷が所定の閾値以上でない場合や、共有データを送信する情報処理装置１０−１のＣＰＵ１０４の処理負荷が所定の閾値以上である場合、ステップＳ３０６による間引き処理を行わず、全ての変更データを送信するようにする。この場合、共有データを受信した他の情報処理装置１０にて、表示に不要な共有データを破棄する等すればよい。なお、ネットワークの負荷や、ＣＰＵ１０４の処理負荷は、公知の方法を用いて取得してもよい。
【００９３】
また、情報処理装置１０−１の送信制御部１６は、各情報処理装置１０間のネットワークの負荷が所定の閾値以上である場合や、共有データを受信する他の情報処理装置１０−２、・・・のＣＰＵ１０４の処理負荷が所定の閾値以上の場合、図９の処理よりもさらに間引く処理を行うようにしてもよい。例えば、ステップＳ３０６において、利用粒度の比の値を、整数倍した値に補正するようにしてもよい。
【００９４】
また、情報処理装置１０−１の送信制御部１６は、図９の処理より送信するデータを間引いた場合、例えば、ユーザからの各操作の区切りの際の変更データは、利用粒度に関わらず、処理対象の情報処理装置１０に送信してもよい。図１４は、送信制御部１６が所定の区切りにおいてデータを整合させる処理について説明する図である。例えば、情報処理装置１０−１において、ユーザの操作により、図１４（Ａ）に示すように、５０２ａ乃至５１０ａの矢印に沿って、所定のウィンドウの位置が５０１乃至５１０に変化したとする。この場合、図１０の場合と同様に、利用粒度の比の値が「２」である他の情報処理装置１０−２では、図１４（Ｂ）に示すように、５０３ａ、５０５ａ、５０７ａ、５０９ａの矢印に沿って、所定のウィンドウの位置が５０１、５０３、５０５、５０７、５０９の位置に変化する。そして、他の情報処理装置１０−２は、当該所定のウィンドウの位置を５０９の位置に表示しつつ、共有データ記憶部１１２において、当該所定のウィンドウの位置を５１０であると記憶する。これにより、例えば、各情報処理装置１０において、壁面に設置される大画面かつ高解像度のディスプレイを有する一の情報処理装置１０の解像度を基準とした座標系を用いて、画面のデータを共有する場合に、各情報処理装置１０が共有するデータが不整合を起こすことを防止できる。また、例えば、情報処理装置１０−２が、情報処理装置１０−１から受信した画面のデータを、情報処理装置１０−３に送信する場合に、情報処理装置１０−１と情報処理装置１０−３との間のデータが不整合を起こすことを防止できる。
【００９５】
なお、この場合、情報処理装置１０−１の送信制御部１６は、各操作の区切りの際の変更データを送信する代わりに、変更データを送信した後に一定時間継続して変更データを送信していない場合、情報処理装置１０−１のアプリケーションが終了する際、情報処理装置１０−１がシャットダウンする際、または画面を共有する他の情報処理装置１０−２、・・・からアプリケーションの終了を通知された際等において、利用粒度に関わらず、未送信の変更データを送信してもよい。
【００９６】
［第２の実施形態］
第２の実施形態では、共有データの変化を予測して、送信側にて、送信するデータを間引くとともに、受信側にて、予測される共有データの変化に応じてデータを補完する例について説明する。なお、第２の実施形態は一部を除いて第１の実施形態と同様であるため、適宜説明を省略する。以下では、第１の実施形態と共通する部分については説明を省略し、異なる部分についてのみ説明する。
【００９７】
＜機能構成＞
次に、図１５を参照し、情報処理装置１０の機能構成について説明する。図１５は、第２の実施形態に係る情報処理装置１０の機能ブロック図の一例を示す図である。情報処理装置１０は、予測部１７をさらに有する。予測部１７は、情報処理装置１０にインストールされた１以上のプログラムが、情報処理装置１０のＣＰＵ１０４に実行させる処理により実現される。
【００９８】
第２の実施形態に係る送信制御部１６は、共有データの変化が予測可能である場合、その旨を、画面を共有する他の情報処理装置１０に通知する。
【００９９】
また、送信制御部１６は、例えば、ユーザの操作に応じた、共有データの変化が止まった場合、その旨を、画面を共有する他の情報処理装置１０に通知する。
【０１００】
予測部１７は、画面を共有する他の情報処理装置１０から、共有データの変更が予測可能である旨の通知を受信すると、既に受信した変更データに基づき、共有データの変化を予測する。
【０１０１】
＜処理＞
次に、図１６を参照し、第２の実施形態に係る情報処理システム１の処理について説明する。図１６は、第２の実施形態に係る情報処理システム１の処理の一例を示すシーケンス図である。
【０１０２】
ステップＳ１００１において、情報処理装置１０−２の送信制御部１６は、共有データの変化が予測可能か否かを判定する。ここで、情報処理装置１０−２の送信制御部１６は、例えば、ユーザの操作に応じて、所定のウィンドウが一定の方向に連続的に移動すると推定できるか否かを判定する。
【０１０３】
続いて、情報処理装置１０−２の送信制御部１６は、変化が予測可能であると判定すると、推定できる旨の通知を、情報処理装置１０−１の予測部１７に送信する（ステップＳ１００２）。
【０１０４】
続いて、情報処理装置１０−１の予測部１７は、情報処理装置１０−２から受信した変更データに基づいて、変更データの変化を予測する（ステップＳ１００３）。予測部１７は、前々回受信した変更データにおける所定のウィンドウの位置及び時間と、前回受信した変更データにおける当該所定のウィンドウの位置及び時間との差分を算出し、当該差分の時間間隔で、当該差分の位置ずつ、当該所定のウィンドウが移動すると予測する。
【０１０５】
続いて、情報処理装置１０−１の予測部１７は、予測した変化に応じた変更データを生成（補完）し（ステップＳ１００４）、情報処理装置１０−１の更新部１５に送信する（ステップＳ１００５）。これにより、共有データ記憶部１１２に記憶されている画面の情報が更新され、画面に更新後の共有画面が表示される。
【０１０６】
続いて、情報処理装置１０−２の送信制御部１６は、共有データの変更が終了したか否かを判定する（ステップＳ１００６）。
【０１０７】
情報処理装置１０−２の送信制御部１６は、共有データの変化が終了したと判定すると、共有データの変化が終了した旨の通知を、情報処理装置１０−１の予測部１７に送信する（ステップＳ１００７）。ここで、送信制御部１６は、例えば、ユーザの操作に応じた、当該所定のウィンドウの移動が止まった場合、その旨を通知する。
【０１０８】
続いて、情報処理装置１０−１の予測部１７は、更新データの変化を予測する処理を終了する（ステップＳ１００８）。
【０１０９】
これにより、変化中の変更データの送信を間引くことができる。
【０１１０】
≪予測の変形例≫
受信側である情報処理装置１０−１の予測部１７において、受信した変更データに基づいて差分を算出する代わりに、送信側である情報処理装置１０−２の予測部１７において、差分を算出するようししてもよい。この場合、情報処理装置１０−２の予測部１７は、算出した差分のデータを情報処理装置１０−１の予測部１７に通知するようにしてもよい。または、送信側である情報処理装置１０−２の予測部１７が、変化のパターンを予測し、予測した変化のパターンを情報処理装置１０−１の予測部１７に通知するようにしてもよい。
【０１１１】
≪送信制御部１６の処理の変形例≫
情報処理装置１０−１の送信制御部１６は、各情報処理装置１０間のネットワークの負荷が所定の閾値以上である場合や、共有データを送信する情報処理装置１０−１のＣＰＵ１０４の処理負荷が所定の閾値以上でない場合に、ステップＳ１００１の共有データの変化が予測可能か否かの判定を行うようにしてもよい。すなわち、各情報処理装置１０間のネットワークの負荷が所定の閾値以上でない場合や、共有データを送信する情報処理装置１０−１のＣＰＵ１０４の処理負荷が所定の閾値以上である場合、予測可能か否かの判定を行わず、第１の実施形態と同様の処理により間引いた変更データ、または全ての変更データを送信するようにする。
【０１１２】
または、情報処理装置１０−１の送信制御部１６は、他の情報処理装置１０の計算能力（ＣＰＵの能力）、及びＣＰＵの処理負荷の度合いを動的に取得し、送信先の情報処理装置１０における計算能力の余力が所定の閾値よりも低い場合、共有データの変化の予測に基づく間引きを行わずに、変更データを送信するようにしてもよい。この場合、情報処理装置１０−１の送信制御部１６は、送信先の情報処理装置１０との間のネットワークの負荷と、送信先の情報処理装置１０における計算能力の余力とに基づいて、予測による補完処理のコストの度合いよりも通信コストの度合いが低いと判断した場合、共有データの変化の予測に基づく間引きを行わずに、変更データを送信するようにしてもよい。
【０１１３】
＜変形例＞
上述した実施形態では、画面を共有する場合に、解像度に応じて送信するデータを間引く例について説明したが、開示の技術は、例えば、以下のような実施形態にも適用できる。
・少数点以下まで計測できるセンサを有する情報処理装置１０−１と、簡易的に整数単位でグラフ化するアプリケーションを有する情報処理装置１０−２、・・・との間のセンサデータの共有。
・複数のユーザの現在地を地図上で表示するアプリケーションを有し、車で移動するモードで比較的大まかな位置を表示させる情報処理装置１０−１と、当該アプリケーションを有し、徒歩で移動するモードで比較的詳細な位置を表示させる情報処理装置１０−２、・・・との間の位置データの共有。
・色情報を詳細に扱えるディスプレイを有する情報処理装置１０−１と、白黒ベースで表示するディスプレイを有する情報処理装置１０−２、・・・との間のデータ共有。
【０１１４】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【０１１５】
情報処理装置１０の各機能部は、例えば１以上のコンピュータにより構成されるクラウドコンピューティングにより実現されていてもよい。なお、予測部１７は、「生成部」の一例である。
【０１１６】
以上の実施例１〜２を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
他の情報処理装置へ、データを送信する情報処理装置であって、
前記他の情報処理装置において前記データの変化を表現可能な粒度を受信する受信部と、
前記データが変化すると、前記受信部により受信された前記粒度と、前記データが変化した程度とに応じて、変化後の前記データを前記他の情報処理装置に送信する送信制御部と、
を有する情報処理装置。
（付記２）
前記データは、前記情報処理装置における表示データであり、
前記粒度は、前記表示データを表示する領域の解像度であり、
前記送信制御部は、最後に前記他の情報処理装置に送信した前記表示データと、変化後の前記表示データとの変化の程度、及び前記情報処理装置の解像度と、前記受信部により受信された解像度との比に応じて、変化後の前記表示データを前記他の情報処理装置に送信する、
付記１に記載の情報処理装置。
（付記３）
前記情報処理装置は、前記他の情報処理装置に送信するデータの種別に応じて、前記情報処理装置の前記粒度を決定する決定部を有し、
前記受信部は、前記種別に応じて、前記他の情報処理装置の前記粒度を受信する、
付記１または２に記載の情報処理装置。
（付記４）
前記送信制御部は、前記情報処理装置と前記他の情報処理装置との間のネットワークの負荷が所定の閾値以上である場合、または、前記情報処理装置の処理負荷が所定の閾値以上でない場合、前記受信部により受信された前記粒度と、前記データが変化した程度とに応じて、変化後の前記データを前記他の情報処理装置に送信する、
付記１乃至３のいずれか一項に記載の情報処理装置。
（付記５）
前記送信制御部は、ユーザからの操作の区切りにおける前記データを、前記他の情報処理装置に送信する、
付記１乃至４のいずれか一項に記載の情報処理装置。
（付記６）
前記送信制御部は、前記受信部により受信された利用粒度が同一である前記他の情報処理装置に、前記データを一斉送信する、
付記１乃至５のいずれか一項に記載の情報処理装置。
（付記７）
前記送信制御部は、前記データの変化が予測可能である場合、その旨を前記他の情報処理装置に送信し、前記データの変化が予測可能である間の前記データを前記他の情報処理装置に送信しない、
付記１乃至６のいずれか一項に記載の情報処理装置。
（付記８）
前記送信制御部は、前記情報処理装置と前記他の情報処理装置との間のネットワークの負荷が所定の閾値以上である場合、または、前記情報処理装置の処理負荷が所定の閾値以上でない場合、前記データの変化が予測可能である間の前記データを前記他の情報処理装置に送信しない、
付記７に記載の情報処理装置。
（付記９）
他の情報処理装置からデータを受信する情報処理装置であって、
前記他の情報処理装置に、前記データの変化を表現可能な粒度を送信する送信部と、
前記データが変化すると、前記粒度と、前記データが変化した程度とに応じて、変化後の前記データを前記他の情報処理装置から受信する受信部と、
前記データの変化が予測可能であることを前記他の情報処理装置から通知されると、予測された変化に応じたデータを生成する生成部と、
を有する情報処理装置。
（付記１０）
第１の情報処理装置と、前記第１の情報処理装置へデータを送信する第２の情報処理装置とを有する情報処理システムであって、
前記第１の情報処理装置は、
前記第１の情報処理装置において前記データの変化を表現可能な粒度を前記第２の情報処理装置に送信する送信部と、
前記第２の情報処理装置から受信した前記データに基づいて、画面に表示するデータを更新する更新部と、
を有し、
前記第２の情報処理装置は、
前記粒度を受信する受信部と、
前記データが変化すると、前記受信部により受信された前記粒度と、前記データが変化した程度とに応じて、変化後の前記データを前記第１の情報処理装置に送信する送信制御部と、
を有する情報処理システム。
（付記１１）
他の情報処理装置へデータを送信する情報処理装置が実行する情報処理方法であって、
前記他の情報処理装置において前記データの変化を表現可能な粒度を受信し、
前記データが変化すると、前記受信部により受信された前記粒度と、前記データが変化した程度とに応じて、変化後の前記データを前記他の情報処理装置に送信する、
処理を実行する情報処理方法。
【符号の説明】
【０１１７】
１  情報処理システム
１０  情報処理装置
１１１  共有ノード情報記憶部
１１２  共有データ記憶部
１２  決定部
１３  送信部
１４  受信部
１５  更新部
１６  送信制御部
１７  予測部
【図１】
2018173820.tif 000003
【図２】
2018173820.tif 000004
【図３】
2018173820.tif 000005
【図４】
2018173820.tif 000006
【図５Ａ】
2018173820.tif 000007
【図５Ｂ】
2018173820.tif 000008
【図６】
2018173820.tif 000009
【図７】
2018173820.tif 000010
【図８】
2018173820.tif 000011
【図９】
2018173820.tif 000012
【図１０】
2018173820.tif 000013
【図１１】
2018173820.tif 000014
【図１２】
2018173820.tif 000015
【図１３】
2018173820.tif 000016
【図１４】
2018173820.tif 000017
【図１５】
2018173820.tif 000018
【図１６】
2018173820.tif 000019