以下、本発明の各実施形態について、添付の図面を参照して説明する。
(第1実施形態)
図1は、本発明の一実施形態に係る情報処理システムの構成例を示す図である。100は、ネットワークである。本実施形態におけるネットワーク100は、インターネット、WAN (Wide Area Network)、LAN (Local Area Network)などの複合であっても実現できる。
101は、ユーザAのカメラである。カメラ101は、情報処理装置106に、XMPPサーバ105を介して、センサ情報を送信する。102は、ユーザAのスマートフォンである。スマートフォン102は、情報処理装置106に、XMPPサーバ105を介して、センサ情報を送信する。103は、ユーザBのカメラである。カメラ103は、情報処理装置107に、XMPPサーバ105を介して、センサ情報を送信する。
104は、ユーザBのプリンタである。プリンタ104は、情報処理装置107に、XMPPサーバ105を介して、センサ情報を送信する。105は、XMPP(eXtensive Message and Presence Protocol)のサーバ機能を有するXMPPサーバである。XMPPサーバ105は、カメラ101、スマートフォン102、カメラ103、プリンタ104、情報処理装置106、情報処理装置107からの接続を受け付け、メッセージ交換を行う。本実施形態において、XMPPサーバ105は、xxx.co.jp(ユーザAのドメイン)とyyy.co.jp(ユーザBのドメイン)を管理する。
106は、ユーザAの情報処理装置である。情報処理装置106は、ユーザAとデバイスの関係性、ユーザAに係るデバイス(カメラ101、スマートフォン102)のセンサ情報の管理を行う。さらに、情報処理装置106は、ユーザA、カメラ101、スマートフォン102に対するメッセージを受信し、メッセージ内容やデバイスのセンサ情報に応じて、宛先を選択し、メッセージを送信する。
107は、ユーザBの情報処理装置である。情報処理装置107は、ユーザBとデバイスの関係性、ユーザBに係るデバイス(カメラ103、プリンタ104)のセンサ情報の管理を行う。さらに、情報処理装置107は、ユーザB、カメラ103、プリンタ104に対するメッセージを受信し、メッセージ内容やデバイスのセンサ情報に応じて、宛先を選択し、メッセージを送信する。
図2は、本発明の一実施形態に係る情報処理装置106のモジュール構成図である。情報処理装置107についても同様の構成である。200は、各モジュールを接続するバスである。201は、画像や各種グラフィカルユーザインターフェース(GUI)を表示する表示部である。
202は、ユーザAとユーザAの保持するカメラ101とスマートフォン102とを関連付けて、それぞれのセンサ情報を管理するデバイス管理部である。デバイス管理部202は、カメラ101およびスマートフォン102のセンサ情報の履歴をデータベースに保存し、管理する。デバイス管理部202は、ユーザAとユーザAの宛先アドレス(XMPP JID)、カメラ101およびスマートフォン102の宛先アドレス(XMPP JID)を管理する。これらの宛先情報は、予め設定しておいてもよいし、カメラ101及び/又はスマートフォン102から入力してもよい。203は、カメラ101およびスマートフォン102のセンサ情報に応じて、送信先のデバイスを選択する選択部である。
204は、カメラ101およびスマートフォン102からセンサ情報を受信するセンサ情報受信部である。本実施形態では、カメラ101およびスマートフォン102から直接センサ情報を受け取っているが、これに限らず、他のPC(パーソナルコンピュータ)などを介して受信してもよい。センサ情報とは、タッチセンサ、光学センサ、圧力センサ、ジャイロセンサ、角度センサ、GPS、画像センサ、音センサ、磁気センサ、ソフトセンサの1つまたは複合により検出された情報である。
センサ情報はこれ以外の物理的なセンサやソフト的なセンサで取得した情報であっても良い。また、カメラ101およびスマートフォン102のセンサ情報を、カメラ101およびスマートフォン102の周囲にあるセンサデバイスから受信してもよい。例えば、物体認識センサ、人感センサ、監視カメラなどの画像センサなどである。ここでは、物体や人物に関連するセンサを挙げたがこれに限らず音声センサなど他のセンサであっても良い。
205は、ユーザやデバイスからのメッセージを受信するメッセージ受信部である。206は、ユーザやデバイスにメッセージを送信するメッセージ送信部である。207は、メッセージ受信部205で受信したメッセージの内容を判断するメッセージ内容判断部である。メッセージ内容判断部207は、メッセージが同報や通知であるか、操作であるかなどの判断を行う。また、メッセージが操作である場合はメッセージのコマンド(例えば、プリント、コピー、画像取得など)によっての判断を行っても良い。本実施形態では、メッセージの内容を同報や通知、操作などによって判断したが、これに限るものではない。
208は、センサ情報の更新頻度を調整する更新頻度調整部である。更新頻度調整部208は、カメラ101およびスマートフォン102からのセンサ情報量、カメラ101およびスマートフォン102の処理負荷、情報処理装置106の処理負荷に応じて、更新頻度の計算を行う。例えば、情報処理装置106の処理量がx(bps)、デバイス(カメラ101乃至スマートフォン102)の処理量がy(bps)、帯域幅がb(bps)、センサ情報のデータ量がd(bps)であるとする。この時、更新頻度の最大間隔は、e (sec) = min{b, d} / min{x, y}で示すことができる。なお、本実施形態では上式を用いたがこれに限らず、固定的に掛かる処理時間、ネットワークの遅延やネットワークの揺らぎ、帯域遅延積、データ送受信のウインドウサイズのメモリ量などを用いてもよい。また、これらの情報の少なくとも何れか1つを使用して更新頻度の計算を行ってもよい。
情報処理装置107は、情報処理装置106と同様の構成である。なお本実施形態では別々の装置として記載しているが、これに限らず、同一の装置内にあってもよい。また、他の情報処理装置と共にサーバやクラウド上に分散的に配置する構成であっても実現できる。
図3は、本発明の一実施形態に係るカメラ101のモジュール構成図である。スマートフォン102、カメラ103についても同様の構成である。プリンタ104はこの構成に印刷機能が追加される。本実施形態では、カメラ、スマートフォン、プリンタを例にあげたが、これに限らず、別のデバイス(例えば、タブレット、ビューワ、スキャナ)であっても良い。
300は、各モジュールを接続するバスである。301は、画像や各種グラフィカルユーザインターフェース(GUI)を表示する表示部である。302は、画像を撮影する撮影部である。
303は、カメラ101の周囲の変化、ユーザの利用状況、アプリケーションの状態などのセンサ情報を収集するセンサ情報収集部である。カメラ101内の情報だけでなく、カメラ101周辺にある外部センサを探索し、そこからセンサ情報を取得してもよい。例えば、外部の温度センサ、湿度センサ、監視カメラなどが考えられる。
304は、センサ情報収集部303で収集したセンサ情報を情報処理装置106に送信するセンサ情報送信部である。本実施形態では、センサ情報送信部304は、XMPPを利用して、XMPPサーバ105を介して、情報処理装置106にセンサ情報を送信する。これに限らず、REST(Representational State Transfer)やSOAP(Simple Object Access Protocol)といったウェブサービスを用いて、情報処理装置106に送信してもよい。
305は、メッセージを受信するメッセージ受信部である。306は、ユーザ乃至デバイスを宛先とするメッセージを送信するメッセージ送信部である。307は、センサ情報を情報処理装置106に送信する更新頻度を変更する更新頻度変更部である。308は、センサ情報を情報処理装置106に送信するかを判断するセンサ情報判断部である。
図4は、本発明の一実施形態に係る情報処理装置106がセンサ情報を受信した際の処理の手順を示すフローチャートである。
S401において、センサ情報受信部204は、カメラ101およびスマートフォン102からセンサ情報を受信し、S402に進む。S402において、デバイス管理部202は、受信したセンサ情報をそれぞれのデバイスに関連付けて保存し、S403に進む。S403において、選択部203は、デバイス管理部202によって管理されているデバイス(ユーザAのデバイス)のセンサ情報の比較を行い、S404に進む。
S404において、選択部203は、比較結果に応じて、優先すべきデバイスを選択する。例えば、照度センサとジャイロセンサが、一定値以上の数値を示している場合、デバイスはポケット(カバン)から出されて利用されていると判断することができる。ここでは、利用されているデバイスを選択する。このS404での選択結果に応じて、後述の図8(b)の806で示す表示を行う。同様に、友人側の811についての表示を行う(図8については、後で詳しく述べる)。
なお本実施形態では、照度センサとジャイロセンサについての例を示したが、これに限るものではない。例えば、選択部203はセンサ情報から利用頻度や利用日時を取得し、これらの情報からデバイスを選択してもよい。より具体的には、ユーザの利用頻度がより高いデバイス、または、ユーザの利用日時がより近いデバイスを選択する。それ以外にも、タッチセンサによる最後に画面をタッチした時間、音センサで周囲の音の大きさを解析した結果、角度センサによるデバイスの動きなどを用いても、デバイスが利用されていると判断することができる。また、デバイスのCPUパワー、メモリ残量、ネットワーク帯域幅、接続しているネットワークタイプ(WiFi,3G,LTEなど)、磁気センサなどを利用しても良いし、アプリケーションの利用ログを利用しても良い。これらの複合によって、デバイス選択の判断の精度を向上させることができる。
図5は、本発明の一実施形態に係る情報処理装置106がメッセージを受信した際の処理の手順を示すフローチャートである。
S501において、メッセージ受信部205は、情報処理装置107からメッセージを受信し、S502に進む。S502において、メッセージ内容判断部207は、ユーザA宛のメッセージであるか、デバイス(カメラ101乃至スマートフォン102)宛のメッセージであるかの判断を行う。ユーザA宛のメッセージの場合、S503に進む。一方、デバイス宛のメッセージの場合、S508に進む。XMPPを利用して実現する場合、宛先アドレス(ユーザのアドレス、デバイスのアドレス)の形式について説明する。kensuke@xxx.co.jp(Bare JID)が宛先に入っている場合、ユーザA宛のメッセージである。また、宛先アドレスがkensuke@xxx.co.jp/camera(Full JID)である場合、カメラ101宛のメッセージである。宛先アドレスがkensuke@xxx.co.jp/smartphone(Full JID)である場合、スマートフォン102宛のメッセージである。ユーザ名のBare JIDにデバイス名のリソース情報を付与した形で表現される。尚、情報処理装置106は、kensuke@xxx.co.jp/virtualで示される。情報処理装置106、カメラ101、スマートフォン102のプライオリティは、情報処理装置106のプライオリティが一番高くなるように設定する。これによって、kensuke@xxx.co.jp宛のメッセージを受け取った時、情報処理装置106に送られるようになる。本実施形態では、XMPPの形式を利用するため、上記のような設計を行ったが、これに限らず、ユーザ宛のセッションを別に作成してもよい。例えば、kensuke@xxx.co.jp/userのセッションを情報処理装置106から生成し、ユーザ宛のメッセージはkensuke@xxx.co.jp/userに送ることとする。これによって、必ずユーザ宛のメッセージが情報処理装置106に到達することとなる。これ以外にも、SOAPやRESTなどのAPI(Application Programming Interface)を用いて、ユーザAの全てのメッセージを情報処理装置106経由で交換してもよい。同様にユーザBのメッセージは情報処理装置107が処理する。
各装置とXMPPのアドレスとの対応を示した表を図9に示す。カメラ101、スマートフォン102、カメラ103、プリンタ104のプライオリティについては-1が設定され、情報処理装置106、情報処理装置107のプライオリティについては0が設定される。ユーザAの装置内で情報処理装置106のプライオリティを最も高く設定することによって、XMPPサーバ105はユーザ宛のメッセージ(例えば、kensuke@xxx.co.jp宛)を情報処理装置106に送ることができる。情報処理装置107についても同様である。カメラ101、スマートフォン102、カメラ103、プリンタ104のプライオリティを-1に設定することで、XMPPサーバ105上でメッセージがコピーされなくなる。結果として、各デバイスは他のデバイス宛のメッセージを受け取らなくなる。これにより、不必要なメッセージを受信する必要がなくなり、デバイスの処理負荷を低減させる効果がある。
S503において、メッセージ内容判断部207は、メッセージに含まれるコマンドが通知であるか操作であるかの判断を行う。通知とは、イベント、Notify、ACK、同報などの非同期的なお知らせである。操作とは、RPC(Remote Procedure Call)などの返答を必要とする同期的な命令である。操作には、例えば、コンテンツのコピーや移動、カメラファインダの遠隔操作などがある。メッセージに含まれるコマンドが通知であると判断された場合、S504に進む。一方、メッセージに含まれるコマンドが操作であると判断された場合、S509に進む。
S504において、選択部203は、デバイス管理部202から該当するデバイスのセンサ情報を取得し、そのセンサ情報が一定以上であるかの判断を行う。センサ情報が一定以上のデバイスが複数存在すると判断された場合、当該複数のデバイスを選択して、S505に進む。本実施形態では複数のデバイスを選択していたが、これに限らず1つであってもよい。一方、一定以上のセンサ情報のデバイスがないと判断された場合、S506に進む。たとえば、照度センサとジャイロセンサとの両方が一定値以上であったら、ユーザが利用している(ポケットから出して手に持っている)と判断する。例えば、ユーザAがカメラ101を右手にスマートフォン102を左手にそれぞれを持って利用していると、両方のデバイスにメッセージが到達することになる。
S505において、メッセージ送信部206は、選択部203によって選択されたデバイスのためにメッセージを複製した後、選択されたデバイス全てにメッセージを送信し、処理を終了する。なお、本実施形態ではメッセージを複製して送信したが、XMPP以外のプロトコルを利用し、複数の宛先をサポートできるプロトコルであった場合には、複数の宛先に対するメッセージ送信であってもよい。
S506において、メッセージ送信部206は、選択部203によって選択されたデバイスがないため、デバイスの状態が変わるまでメッセージを保存し、処理を終了する。本実施形態では、メッセージの保存期間などを決めていないが、例えば1時間などメッセージの保存期間を決めても良い。また、メッセージそのものに有効期間が含まれており、その期間中しか保存しない構成でもよい。
S507において、選択部203は、センサ情報から最適なデバイスを選択する。例えば、画像の表示であれば、ユーザAのデバイス(カメラ101とスマートフォン102)のそれぞれのセンサ情報から、ユーザAの利用しているデバイス(ここでは、カメラ101)を選択する。本実施形態における選択方法は、前述のS404の処理と同様である。S404の時のセンサ情報との差分がない、または、差分が所定値よりも小さく、計算結果が同じになると予想される場合にはこの選択をスキップしてもよい。スキップする場合は、S404で選択されたデバイスを利用する。これによって、処理の工程を低減することができる。なお本実施形態では、S404と同様の処理を行ったが、これに限らず、操作の内容(プリントなのかコピーなのか)に応じて、詳細なアルゴリズムを変えても良い。以下ではプリントの場合の例を説明する。例えば、ユーザAがカメラ101とプリンタを保持している時、カメラ101ではプリントを実行できないため、プリンタを選択する。プリンタにはメッセージを送信し、さらに、カメラ101にはプリンタを操作したこと(プリントしたこと)を通知するメッセージを送っても良い。これにより、よりきめ細やかなユーザの意図を選択に反映させることが可能となり、利便性が向上する。
さらに、メッセージの操作内容によって、デバイスのセンサ情報の処理を変更する例を示す。例えば、操作の内容が印刷であれば、ジョブが空いていて、かつ、ユーザが近くにいるデバイスを選択してもよい。メッセージの操作内容によって、デバイスのセンサ情報の処理アルゴリズムを切り替えることができるため、様々なシチュエーションに対応することができ、システムの汎用性やユーザビリティが向上する。
また、連続したメッセージの場合、連続したメッセージ群が別のデバイスに伝達されることを防ぐために、ある処理の塊は同じデバイスを選択してもよい。この場合、メッセージ内に連続した処理であることを示す識別子を付与した上で、メッセージ内容判断部207はその識別子と選択したデバイスとの関連付けを保持する。これにより、識別子に応じて選択したデバイスを検索することが可能となって、同じデバイスを選択することが可能となる。この処理はS507だけでなく、S504の選択にも適用できる。上記処理により、一連の処理において同一のデバイスを選択し送信することが可能となる。
S508において、メッセージ送信部206は、指定されたデバイスにメッセージを送信することを決定し、S509に進む。
S509において、選択部203は、決定されたデバイスのセンサ情報に基づいて、当該デバイスが現在利用可能であるか否かを判断する。利用可能であると判断された場合、S510に進む。一方、利用不可能であると判断された場合、S511に進む。例えば、無線が混雑している、無線の電波強度が低い、カメラ撮影中など、ユーザが利用中であるが他の状況・状態によって利用できない等の判断を行う。なお本実施形態では、デバイスの選択と利用可能状態の確認を別々に行ったが、これに限らず、同時に実行してもよい。
S510において、メッセージ送信部206は、指定されたデバイスにメッセージを送信し、S511に進む。例えば、カメラ101に送信すると判断された場合、kensuke@xxx.co.jp/cameraにメッセージを送信する。
S511において、メッセージ送信部206は、カメラ101に送信したことを、ユーザAの他のデバイスであるスマートフォン102に通知し、処理を終了する。デバイス管理部202が保持するユーザAとデバイスとの関係情報を用いて、kensuke@xxx.co.jp/smartphoneを宛先として通知のメッセージを送信する。また、送信元のユーザBのデバイス(カメラ103、プリンタ104)にもカメラ101にメッセージを送ったことを通知するメッセージを送信しても良い。情報処理装置106がユーザBのデバイスに直接送っても良いし、情報処理装置107を介して送っても良い。また、ユーザBのデバイスではなく、ユーザBに対する通知(naoki@yyy.co.jp宛の通知)であってもよい。
S512において、メッセージ送信部206は、一時的にメッセージを保存し、処理を終了する。
本実施形態では、S506およびS512において、メッセージを保存したが、これに限らず、デバイスに通知した後、送信したデバイスが許可した時のみ保存し、許可しなかった時は破棄してもよい。
図6は、本発明の一実施形態に係る情報処理装置106が一定時間毎に実行する処理の手順を示すフローチャートである。
S601において、メッセージ送信部206は、一定時間待機し、その後S602に進む。S602において、メッセージ送信部206は、保存されたメッセージがあるか否かの判断を行う。メッセージ送信部206が保存されたメッセージがあると判断した場合、S603に進む。一方、メッセージ送信部206が保存されたメッセージがないと判断した場合、処理を終了する。本実施形態では、S506とS512においてメッセージが保存されることになる。
S603において、メッセージ内容判断部207は、ユーザA宛のメッセージであるか、デバイス(カメラ101乃至スマートフォン102)宛のメッセージであるかの判断を行う。ユーザA宛のメッセージであると判断された場合、S607に進む。一方、デバイス宛のメッセージであると判断された場合、S604に進む。S603はS502と同様の処理である。
S604において、選択部203は、宛先として指定されたデバイスのセンサ情報に基づいて、当該デバイスが現在利用可能であるか否かを判断する。利用可能であると判断された場合、S605に進む。一方、利用不可能であると判断された場合、処理を終了するS604はS509と同様の処理である。
S605において、メッセージ送信部206は、指定されたデバイス(たとえば、カメラ101)にメッセージを送信し、S606に進む(S510と同様の処理である)。S606において、メッセージ送信部206は、カメラ101にメッセージを送信したことを、ユーザAの他のデバイスであるスマートフォン102に通知し、S609に進む(S511と同様の処理である)。
S607において、選択部203は、デバイス管理部202から該当するデバイスのセンサ情報を取得し、そのセンサ情報が一定以上であるか否かの判断を行う。センサ情報が一定以上のデバイスが1以上あると判断された場合、選択部203は、そのデバイスを選択し、S608に進む。一方、センサ情報が一定以上のデバイスがないと判断された場合、S609に進む。S607はS504と同様の処理である。
S608において、メッセージ送信部206は、メッセージを複製した後、選択部203によって選択されたデバイス全てにメッセージを送信し、S609に進む(S505と同様の処理である)。S609において、メッセージ送信部206は、送信が終了したメッセージを消去し、処理を終了する。
このように、メッセージを一時的に保存することで、デバイスの状況や状態によってメッセージが配送できないというリスクを低減することができる。これにより、デバイスを利用している利用者が、ある期間にメッセージが来るかも知れないのでデバイスを使わないようにするといった必要がなくなり、ユーザビリティが向上する。
図7は、本発明の一実施形態に係る情報処理システムのシーケンス図である。
情報処理装置106は、カメラ101およびスマートフォン102から受信したセンサ情報と帯域幅、情報処理装置106の処理速度からセンサ情報の更新頻度を決定する。更新頻度の計算方法については後述する。
M701において、情報処理装置106は、XMPPサーバ105を介して、決定した更新頻度をカメラ101に通知する。M702において、情報処理装置106は、XMPPサーバ105を介して、決定した更新頻度をスマートフォン102に通知する。
M703において、カメラ101は、XMPPサーバ105を介して、指定された更新頻度の間隔でセンサ情報を情報処理装置106に通知する。M704において、スマートフォン102は、XMPPサーバ105を介して、指定された更新頻度の間隔でセンサ情報を情報処理装置106に通知する。
この更新頻度は最大更新頻度であって、送信された値より小さい値であれば、デバイス側の都合で決定してよい。また、センサ情報の変更がない場合、センサ情報を通知しなくてもよい。本実施形態では、M703、M704はデバイス側から送信しているが、これに限らず、情報処理装置106側から定期的に取得しても良い。また、外部センサ(例えば備え付けの温度センサ)を用いている場合は、当該外部センサから更新頻度に合わせてセンサ情報を通知してもよい。
M705において、情報処理装置106は、カメラ101およびスマートフォン102から受信したセンサ情報を保存する。情報処理装置106は、ユーザAのデバイス(カメラ101、スマートフォン102)の内から、それぞれのセンサ情報に応じて、優先すべきデバイスを選択する。
M706において、カメラ103は、XMPPサーバ105を介して情報処理装置107にユーザAを宛先とするメッセージを送信する。M707において、情報処理装置107はXMPPサーバ105を介して情報処理装置106にユーザAを宛先とするメッセージを送信する。
M708において、情報処理装置106は、メッセージ内容の解析を行う。情報処理装置106は、ユーザAを宛先とするメッセージであり、メッセージ内容がファイルのコピー(操作)であると判断する。情報処理装置106は、ユーザAに関連付けられているデバイスのセンサ情報の比較を行い、それらのデバイスからカメラ101を選択する。
M709において、情報処理装置106は、カメラ101が利用可能な状態か否かの確認を行う。カメラ101が利用可能でないと判断された場合、情報処理装置106は受信したメッセージを保存する。情報処理装置106は一定時間毎に利用状態の確認を行う。
M710において、情報処理装置106は、カメラ101にメッセージを送信する。M711において、情報処理装置106は、スマートフォン102へ、カメラ101にメッセージを送信したことを通知する。M712において、情報処理装置106は、XMPPサーバ105を介して情報処理装置107へ、カメラ101にメッセージを送信したことを通知する。この時の通知はユーザB宛でも良いし、送信元のデバイスであるカメラ103でも良い。本実施形態では、ユーザB宛に通知を送信している。M713において、情報処理装置107は、XMPPサーバ105を介してカメラ103へ、メッセージを送信したことを伝える通知を行う。
図8(a)及び図8(b)は、本発明の一実施形態に係るカメラ103のユーザインタフェースの一例を示す図である。図8(a)は、ユーザBからみた自身が保持するデバイスである。801は、自ユーザのデバイスを表示するためのタグである。図8(a)の例ではこの801のタグが選択されている。802は、友達の一覧と友達のデバイスを表示するためのタグである。
803は、自ユーザのアイコンである。自ユーザの顔写真やアバターなどを表示する。このアイコンをロングタップすることで自ユーザの持つデバイスのセンサ情報の一覧を別ウインドウで閲覧できる。また、センサ情報から自ユーザの持つデバイスによって実行できるコマンドのリストを表示できる。本実施形態では、センサ情報とコマンドリストとを表示するが、これに限らない。
804は、カメラ103のアイコンである。このアイコンをロングタップすることで、カメラ103のセンサ情報を取得する。また、カメラ103宛のメッセージを送信するウインドウが開き、メッセージを作成後、カメラ103宛のメッセージを送信できる。この時のXMPPの宛先はnaoki@yyy.co.jp/cameraである。
805は、プリンタ104のアイコンである。このアイコンをロングタップすることで、プリンタ104のセンサ情報を取得する。また、プリンタ104宛のメッセージを送信できる。この時のXMPPの宛先はnaoki@yyy.co.jp/printerである。
812は、ユーザBのデバイスの中から選択されたデバイスに付くマークである。本実施形態では、センサ情報の比較によって、カメラ103が選択されている。また、ユーザBがプリンタ104の操作を行うと、情報処理装置107はプリンタ104のセンサ情報の更新からプリンタ104が利用されていると判断し、マーク812をアイコン805に付与する。このように、センサ情報の更新によってマーク812が移り変わる。ユーザはこのマーク812により情報処理装置107がどのデバイスを選択しているかを知ることができ、安心してデバイスを利用することができる。更に、ユーザにとって所望のデバイスが選択されていない場合、ユーザインタフェース(アイコンのダブルクリックなど)や音等を介して、所望のデバイスを情報処理装置107に通知できる。情報処理装置107は、この通知を累積しておき、今後のデバイスの選択に利用する。より高精度な選択が可能となり、利便性が向上する。
図8(b)は、ユーザBからみた友達の一覧と友達のデバイスである。ここでは、図8(a)との差分について詳しく述べる。図8(b)の例では802の友人のタグが選択されている。
806は、ユーザAのアイコンである。ユーザAの顔写真やアバターなどを表示する。ここでは名前の付加情報(山田)を重畳して表示している。ユーザA(山田さん)のアイコンをクリックすると、ユーザAが選択され、アイコン806の淵の幅が広くなる。アイコン806をロングタップすることで、ユーザAの持つデバイスのセンサ情報の一覧を別ウインドウで閲覧できる。更にユーザAにメッセージを送信することもできる。この時のユーザAのXMPPの宛先はkensuke@xxx.co.jpとなる。
807は、ユーザCのアイコンである。ユーザCの顔写真やアバターなどを表示する。808は、ユーザDのアイコンである。ユーザDの顔写真やアバターなどを表示する。809は、ユーザAのカメラ101のアイコンである。アイコン809をロングタップすることでカメラ101のセンサ情報を閲覧できる。更にカメラ101にメッセージを送信することもできる。この時のXMPPの宛先はkensuke@xxx.co.jp/cameraである。
810は、ユーザAのスマートフォン102のアイコンである。アイコン810をロングタップすることでスマートフォン102のセンサ情報を閲覧できる。更にスマートフォン102にメッセージを送信することもできる。この時のXMPPの宛先はkensuke@xxx.co.jp/smartphoneである。
811は、ユーザAのデバイスの中から選択されたデバイスに付くマークである。本実施形態では、センサ情報の比較によって、カメラ101が選択されている。また、ユーザAがスマートフォン102の操作を行うと、情報処理装置106は、スマートフォン102のセンサ情報の更新からスマートフォン102が利用されていると判断し、マーク811をアイコン810に付与する。このように、センサ情報の更新によってマーク811が移り変わる。ユーザBはこのマーク811により情報処理装置106がどのデバイスを選択しているかを予め知ることができる。なお、本実施形態ではマークを示したが、これに限らず、新しいアイコンを出したり、アイコンの種類を変えたり、他の視覚的な表現、音による読み上げなどの表現であっても良い。
このように、ユーザインタフェースへの表示や不図示の音出力部を介して、選択されたデバイスや現在利用可能なデバイスを、各デバイスに対応する名前、色付け、マーク、または音のうち少なくとも1つを使用して通知する。
また本実施形態では、ユーザインタフェースがカメラ103上にある例を説明したが、別のデバイス上にあっても良いし、情報処理装置106上にあっても良い。
以上説明したように、ユーザ宛のメッセージであった場合、デバイスのセンサ情報からデバイスを選択し、選択されたデバイスにメッセージを送信する。
本実施形態によれば、ユーザが所望するデバイスにメッセージを到達させることを可能とする。これによって、複数のデバイスを保持するユーザは、任意のデバイスを利用しているだけで、ユーザの利用しているデバイスにメッセージが到達し、便利になる。さらに、ユーザは、相手ユーザのデバイスではなく相手ユーザそのものに対してメッセージを送信すれば良く、相手ユーザが持つデバイスのネットワーク環境などの設定にかかる手間が省け、ユーザビリティが向上する。
(第2実施形態)
以下、添付の図面を参照して、第1実施形態との差異を中心に説明する。本実施形態では、情報処理装置106および情報処理装置107がメッセージを受信した時のメッセージの宛先処理について詳しく説明する。
図11は、本発明の一実施形態に係る、ユーザBがカメラ103からユーザA宛にコンテンツを送信した際のシーケンス図である。図10(a)−(f)は、図11と関連した図であり、宛先の遷移を示す図である。
M1101において、カメラ103は、XMPPサーバ105を介して情報処理装置107にメッセージを送信する。図10(a)はこの時のパケットの宛先と送信元を示す。To (hop-by-hop)はXMPPの宛先を示しnaoki@yyy.co.jp/virtualであり、From (hop-by-hop)はXMPPの送信元を示しnaoki@yyy.co.jp/cameraである。To (inner-header)はXMPPのペイロード領域に含まれる本実施形態のヘッダに含まれる宛先である。From (inner-header)はXMPPのペイロード領域に含まれる本実施形態のヘッダに含まれる送信元である。To (inner-header)およびFrom (inner-header)はXMPP形式の宛先を含んでいるがこれに限らず、名前であってもよい。その場合、システム上に名前をXMPP形式のアドレスに変換する機能を更に有するように構成すればよい。
M1102において、情報処理装置107は、受信したメッセージ内容を確認し、図10(a)から図10(b)の形式にヘッダの書き換えを行う。To(hop-by-hop)は、ユーザAの情報処理装置106に送信するため、kensuke@xxx.co.jp/virtualに書き換えられる。From(hop-by-hop)は、ユーザBの情報処理装置107から送信されることになるため、情報処理装置107のXMPPのJIDであるnaoki@yyy.co.jp/virtualに書き換えられる。次に、To(inner-header)は、ユーザA宛であるため、変更はない。From(inner-header)は、本メッセージの送信元であるnaoki@yyy.co.jp/cameraであるため、変更はない。本実施形態では、From(inner-header)をデバイスのままにしたが、これに限らず、naoki@yyy.co.jpに書き換えて、ユーザBそのものとしてもよい。デバイスから書き換えない場合には送信したデバイスに送り返すことができるという利点があり、ユーザに書き換える場合にはユーザの持つデバイスの中で適したものをメッセージ返信時に情報処理装置が選択できるという利点がある。
M1103において、情報処理装置107は、XMPPサーバ105を介して情報処理装置106に図10(b)の形式に書き換えたメッセージを送信する。M1104において、情報処理装置106は、受信したメッセージ内容を確認し、図10(b)から図10(c)の形式にヘッダの書き換えを行う。To(hop-by-hop)は、情報処理装置106がユーザAのデバイスから適したデバイスを選択し送信する(図5の処理)ため、kensuke@xxx.co.jp/cameraに書き換えられる。From(hop-by-hop)は、情報処理装置106から送信されることとなるため、情報処理装置106のXMPPのJIDであるkensuke@xxx.co.jp/virtualに書き換えられる。次に、To(inner-header)は、ユーザA宛であるため、変更はない。From(inner-header)は、本メッセージの送信元であるnaoki@yyy.co.jp/cameraであるため、変更はない。
M1105において、情報処理装置106は、XMPPサーバ105を介してカメラ101に、図10(c)の形式に書き換えたメッセージを送信する。M1106において、カメラ101はメッセージを受信し、メッセージ内容に応じてメッセージに含まれたコンテンツをカメラ101に保存する。コンテンツを受信したことを示す返答のメッセージをカメラ103に送信する。本実施形態では、from(inner-header)がデバイスを示しているため、返信先のデバイスを指定している。From(inner-header)がユーザである場合は、図10(a)〜(c)と同様(ユーザAとユーザBが入れ替わる点は異なる)に処理を行う。カメラ101は、図10(c)の宛先から図10(d)の宛先の返信用のパケットを生成する。To(hop-by-hop)は、ユーザAの情報処理装置106の宛先であるkensuke@xxx.co.jp/virtualを書き入れる。From(hop-by-hop)は、カメラ101のJIDを書き入れる。To(inner-header)は、ユーザBのカメラ103の宛先であるnaoki@yyy.co.jp/cameraを書き入れる。From(inner-header)は、ユーザAのカメラ101の宛先であるkensuke@xxx.co.jp/cameraを書き入れる。
M1107において、カメラ101は、XMPPサーバ105を介して情報処理装置106に図10(d)の形式のメッセージを送信する。M1108において、情報処理装置106は、受信したメッセージ内容を確認し、図10(d)から図10(e)の形式にヘッダの書き換えを行う。情報処理装置106は、To(inner-header)からユーザBの宛先を取り出す。To(hop-by-hop)は、取り出された宛先に情報処理装置を示すリソース情報(virtual)を付与した宛先(naoki@yyy.co.jp/virtual)に書き換えられる。From(hop-by-hop)は、情報処理装置106から送信されることとなるため、情報処理装置106のXMPPのJIDであるkensuke@xxx.co.jp/virtualに書き換えられる。次に、To(inner-header)は、ユーザBのカメラ103宛であるため、変更はない。From(inner-header)は、本メッセージの送信元であるkensuke@xxx.co.jp/cameraであるため、変更はない。本実施形態では、デバイスを送信元としたが、これに限らず、ユーザAを送信元(kensuke@xxx.co.jp)に書き換えてもよい。
M1109において、情報処理装置106は、XMPPサーバ105を介して情報処理装置107に図10(e)の形式のメッセージを送信する。M1110において、情報処理装置107は、受信したメッセージ内容を確認し、図10(e)から図10(f)の形式にヘッダの書き換えを行う。情報処理装置107は、To(inner-header)からユーザBのカメラ103のJID(naoki@yyy.cp.jp/camera)が指定されていることを判断する。カメラ103のJIDが指定されているため、このJIDを持つデバイスへの送信のモードになる。To(hop-by-hop)は、情報処理装置107により、カメラ103の宛先(naoki@yyy.cp.jp/camera)に書き換えられる。From(hop-by-hop)は、情報処理装置107から送信されることとなるため、情報処理装置107のXMPPのJIDであるnaoki@yyy.co.jp/virtualに書き換えられる。次に、To(inner-header)は、ユーザBのカメラ103宛であるため、変更はない。From(inner-header)は、本メッセージの送信元であるkensuke@xxx.co.jp/cameraであるため、変更はない。M1111において、情報処理装置107は、XMPPサーバ105を介してカメラ103に図10(f)の形式のメッセージを送信する。
尚、デバイスを指定して通信を行う場合は、図10(d)〜図10(f)の処理となる。返信を送り返す場合には、図10(d)〜図10(f)の宛先と送信元が、ユーザに合致するデバイスと情報処理装置に置き換わるだけであるため、説明を省略する。
次に図12は、本発明の一実施形態に係る情報処理装置106がメッセージを受信した時の処理の手順を示すフローチャートである。ここでは、図5のフローチャートとの差異を中心に説明する。
S1201において、メッセージ受信部205は、メッセージ(第1のメッセージ)を受信し、S1202に進む。S1202において、メッセージ内容判断部207は、メッセージに含まれる宛先を解析し、S1203に進む。ここでの宛先とは図10に示すXMPPの宛先(情報処理装置のアドレスを示す第1の送信先To(hop-by-hop)と、情報処理装置への送信を行った第1の送信元From(hop-by-hop))、および、プロトコルの宛先(最終的な宛先を示す第2の送信先To(inner-header)と、メッセージを最初に送信した第2の送信元From(inner-header))である。
S1203において、メッセージ内容判断部207は、To(inner-header)の宛先が自ユーザ(ユーザA宛)であるか他ユーザ(ユーザA宛以外の例えばユーザB宛)であるかの判断を行う。すなわち、第2の送信先To(inner-header)に基づいて、メッセージが情報処理装置106と関連する自ユーザを対象としているか、又は他ユーザを対象としているかを判断する。メッセージ内容判断部207は、デバイス管理部202が管理しているユーザ及びデバイスの宛先アドレスの情報を利用することで判断することができる。To(inner-header)の宛先が自ユーザを対象としていると判断された場合、S1204に進む(M1104に相当)。一方、To(inner-header)の宛先が他ユーザを対象としていると判断された場合、S1205に進む(M1102に相当)。
S1204において、メッセージ内容判断部207は、To(inner-header)の宛先にリソース情報が付与されているかの判断を行う。ここでのリソース情報とはデバイスを示す識別子(smartphoneやcamera等)である。なお、情報処理装置106を示す識別子(実施形態中ではvirtual)が付与されていた場合、リソース情報がないとして処理される。To(inner-header)の宛先にリソース情報が付与されていると判断された場合、S1205に進む(M1110に相当)。一方、To(inner-header)の宛先にリソース情報が付与されていないと判断された場合、S1209に進む(M1104に相当)。
S1205において、デバイス管理部202は、リソース情報に対応するデバイスがユーザAに関連付けられているか否かの確認を行う。ユーザAに関連付けられているリソースがあると判断された場合(ユーザAは指定されたデバイスを保持している)、S1206に進む。一方、ユーザAに関連付けられているリソースがないと判断された場合(ユーザAは指定されたデバイスを保持していない)、S1222に進む。
S1206において、メッセージ内容判断部207は、自ユーザのデバイス宛のメッセージと判断し、S1207に進む。S1207において、メッセージ送信部206は、To(hop-by-hop)をTo(inner-header)で指定されたリソース(デバイス)に書き換え、S1208に進む。なお本実施形態では、宛先の書き換えで説明したが、これに限らず、新たにメッセージを生成してもよい。また、メッセージ送信部でメッセージの生成および書き換えを行ったが、これに限らず、情報処理装置106内にメッセージ生成部を別途用意してもよい。
S1208において、メッセージ送信部206は、From(hop-by-hop)を送信元(kensuke@xxx.co.jp/virtual)に書き換え、S1219に進む。S1209において、メッセージ内容判断部207は、自ユーザ宛のメッセージであると判断し、S1210に進む。
S1210において、選択部203は、センサ情報に応じてユーザAに関連付けられたデバイスから該当するデバイスを選択する。そしてメッセージ送信部206は、To(hop-by-hop)を、選択されたデバイスの宛先に書き換え、S1211に進む。
S1211において、メッセージ送信部206は、From(hop-by-hop)を送信元(kensuke@xxx.co.jp/virtual)に書き換え、S1212に進む。
S1212において、メッセージ内容判断部207は、メッセージの内容とセンサ情報とに応じてメッセージの複製を行い、S1219に進む。処理の方法は、図5のS503と同様である。
S1213において、メッセージ内容判断部207は、To(inner-header)にリソース情報(smartphone、camera等)が付与されているかの判断を行う(ユーザを指定しているかデバイスを指定しているかの判断を行う)。To(inner-header)にリソース情報が付与されていると判断された場合、S1214に進む(M1108に相当)。一方、To(inner-header)にリソース情報が付与されていないと判断された場合、S1215に進む(M1102に相当)。
S1214において、メッセージ内容判断部207は、他ユーザのデバイス宛のメッセージであると判断し、S1217に進む。S1215において、メッセージ内容判断部207は他ユーザ宛のメッセージであると判断し、S1216に進む。
S1216において、メッセージ送信部206は、To(inner-header)に情報処理装置107のリソース情報であるvirtual(第2のリソース情報)を付与し、S1217に進む。なお、本実施形態では情報処理装置107のリソース情報は予め決められていたが、これに限らず、リソース名を取得するためにサーバに問い合わせを行っても実現できる。
S1217において、メッセージ送信部206は、To(inner-header)のユーザ部分(リソース情報部分を抜いたnaoki@yyy.co.jp)を取り出す。メッセージ送信部206は、naoki@yyy.co.jpと情報処理装置107のリソース情報であるvirtual(第2のリソース情報)を連結し、naoki@yyy.co.jp/virtualを生成する。その後、メッセージ送信部206は、To(hop-by-hop)をnaoki@yyy.co.jp/virtualに書き換え、S1218に進む。
S1218において、メッセージ送信部206は、From(hop-by-hop)を送信元(kensuke@xxx.co.jp/virtual)に書き換え、S1219に進む。
S1219において、メッセージ内容判断部207は、デバイス管理部202で管理されているセンサ情報に基づいて、デバイスが利用可能か否かを判断する(図5のS509からの処理に相当する)。利用可能であると判断された場合、S1220に進む。一方、利用不可能であると判断された場合、S1221に進む。
S1220において、メッセージ送信部206は、XMPPサーバ105を介してメッセージを送信し、処理を終了する。S1221において、メッセージ送信部206は、メッセージを一時的に保存して、処理を終了する。図12の処理によって一時的に保存されたメッセージは定期的にチェックされ、送信可能であれば送信される。
S1222において、メッセージ送信部206は、エラーである旨をメッセージのFrom(inner-header)の宛先に送信する。また、他ユーザからのメッセージであった場合は、情報処理装置に対してもエラーメッセージを送る。エラーメッセージは他ユーザのデバイスに直接送っても良いし、図11に示すように情報処理装置を介した通信により、エラーが発生した場所から逆のパスを利用して返信しても良い。
本実施形態では、メッセージの宛先を一つに選んでいたが、これ限らず、第1実施形態で説明したように、メッセージ内容に応じて、メッセージを複製して複数の宛先に送信してもよい。
本実施形態では、XMPPを利用したが、これに限らず、別のメッセージを配送するプロトコルであってもよい。また、別のメッセージを配送するプロトコルとそのペイロードにある別のプロトコルとの複合であっても実現できる。
以上説明したように、本実施形態に係る情報処理装置は、メッセージを受信すると、メッセージ内容に含まれる第2の宛先からユーザ宛かデバイス宛かを判断する。第2の宛先やユーザ情報基づいて、第1の宛先の書き換えを行い、メッセージを送信する。
本実施形態によれば、宛先の書き換えを行うことで、円滑にメッセージ搬送を行うことができる。これにより、ユーザおよびデバイスを一元的に制御することが可能となり、ユーザの場所を意識しなくとも通信ができるようになり、複数のデバイスを利用するシーンでのユーザビリティが向上する。
(第3実施形態)
本実施形態では、公共スペースにあるプリンタ(不図示)やテレビ・モニタの処理についての説明を行う。例えば、ユーザAがオフィスの公共スペースにあるプリンタ(不図示)の前に立つと、プリンタはユーザAを人感センサで認識し、近くにある監視カメラ画像からユーザAであることを認識する。ユーザAは予め会社のセキュリティシステムに顔が登録されているため、監視カメラによってユーザAであるという特定を行うことができる。ここでは監視カメラ画像によるユーザ識別を行ったが、これに限るものではない。ユーザ識別方法は、無線タグによる認証などの別方式の方式でも実現できる。ユーザAは、一時的にオフィスの公共スペースにあるプリンタと関連付けができる。デバイス管理部202はセキュリティシステムからプリンタに関する宛先アドレスを取得する。その後、デバイス管理部202は、プリンタの宛先アドレス(system@zzz.co.jp/printer)と情報処理装置106内の宛先アドレス(kensuke@xxx.co.jp/printer)を関連付け登録する。
情報処理装置106は、kensuke@xxx.co.jp/printerのデバイスに対するメッセージをsystem@zzz.co.jp/printerに転送することで、一時的にプリンタを利用できる。また、ユーザA宛のメッセージ(印刷)を受け取ると、ユーザAのプリンタが選択され、印刷が開始される。このように、ユーザAは簡単に公共スペースにあるデバイスを利用することができる。例えば、ユーザAがメッセージ(プリント)を受信し、ユーザAはプリンタを持っていなかった場合、カメラ101にメッセージ(プリント)を受信したことを表示する。ユーザAは、公共スペースにあるプリンタに近づくだけで、プリントを実行できるようになる。
この時、ユーザAはカメラ101を持っていきプリンタに近づけることにより、ユーザAの承認を行っても良い。ユーザAがプリンタから遠ざかると、監視カメラの撮影範囲からユーザAが消えることを検知し、ユーザAとプリンタとの紐付けを解除する。紐付けは、1度行われたら、半永久的に継続しても良いし、本実施形態のように、何かのトリガーによって解除しても良い。また、解除した後も、ログとして残っていて図8のデバイスとして表示しても良い。この時、デバイスは他の常に関連付けられているデバイスとは違った表示(例えば、グレーアウト)を行うことで、ユーザに分かりやすく構成できる。
また、テレビ、モニタ、プロジェクタにおいても同様の処理を行うことができる。この場合は、ユーザAが近づくと、それを認識し、メッセージ(画像)を表示することができる。
本実施形態では、プリンタの宛先アドレスと情報処理装置内の宛先アドレスとの変換を行ったが、これに限らず、プリンタがkensuke@xxx.co.jp/printerのセッションを生成してもよい。これにより、情報処理装置106内の宛先アドレスの変換処理を低減することができる。
なお、ここでは物理的に近付くことでユーザAと各種デバイスの紐付けを行うことを示したが、これに限らず、ユーザAのデバイス操作による紐付け処理でも良い。
これによって、公共スペース(オフィスの共用スペース、公共機関の待合所、病院、コンビニなど)にあるデバイスを様々な人が簡単に利用できるようになり、利便性が向上する。
(その他の実施形態)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。