(57)【要約】【課題】ユーザーによる様々な種類の操作を収集して共有し、アプリケーション側で、統一的な枠組みで利用することができるようにする。【解決手段】操作情報共有装置における受信部は、操作に基づいて発生した操作データを操作入力装置から受信する。入力装置識別部は、操作データの送信元である操作入力装置を識別して識別情報を出力する。データ変換部は、操作データに入力装置識別部によって与えられた前記識別情報を付加し、操作イベントとして出力する。操作イベント送出部は、データ変換部から出力される操作イベントを、ネットワークを介して送出する。そして、アプリ実行装置側では、この操作イベントを受信するとともに、ジェスチャーに変換する。【選択図】図２
2017033397.tif 000002
【特許請求の範囲】
【請求項１】
ユーザーによる操作に基づいて発生した操作データを操作入力装置から受信する受信部と、
前記操作データの送信元である操作入力装置を識別して識別情報を出力する入力装置識別部と、
前記操作データに前記入力装置識別部によって与えられた前記識別情報を付加し、操作イベントとして出力するデータ変換部と、
前記データ変換部から出力される前記操作イベントを、ネットワークを介して送出する操作イベント送出部と、
を具備することを特徴とする操作情報共有装置。
【請求項２】
前記データ変換部は、同一の前記操作入力装置からの同一種別の操作データを連続的に受け取ったときには、当該一連の操作に関して、操作開始、操作中、操作終了のいずれかを表す情報を付加して、前記操作イベントとして出力する、
ことを特徴とする請求項１に記載の操作情報共有装置。
【請求項３】
前記受信部は、前記操作データを、ネットワーク経由で、またはネットワークを経由せずに、いずれでも受信できる、
ことを特徴とする請求項１に記載の操作情報共有装置。
【請求項４】
アプリケーションを実行するためのアプリケーション実行部と、
外部装置との間で通信コネクションを確立して、ユーザーによる操作に基づいて発生した操作データと当該操作データの送信元である操作入力装置を識別するための識別情報とを含んだ操作イベントを、前記外部装置から受信する操作イベント受信部と、
を具備することを特徴とするアプリ実行装置。
【請求項５】
前記操作イベント受信部が受信した前記操作イベントに基づいてジェスチャーの種別を判定し得られたジェスチャー種別の情報を、前記アプリケーション実行部において実行される前記アプリケーションに提供するジェスチャー変換部、
をさらに具備することを特徴とする請求項４に記載のアプリ実行装置。
【請求項６】
前記ジェスチャー変換部は、前記操作イベントに基づいて前記ジェスチャーの種別を判定するためのパラメーターを設定可能とする、
ことを特徴とする請求項５に記載のアプリ実行装置。
【請求項７】
ユーザーによる操作に基づいて発生した操作データを送信する操作入力装置と、
請求項１から３までのいずれか一項に記載の操作情報共有装置と、
請求項４から６までのいずれか一項に記載のアプリ実行装置と、
を具備することを特徴とする操作情報共有システム。
【請求項８】
請求項１から３までのいずれか一項に記載の操作情報共有装置と、
請求項４から６までのいずれか一項に記載のアプリ実行装置と、
の機能を備える情報処理装置。
【請求項９】
コンピューターを、
請求項１から３までのいずれか一項に記載の操作情報共有装置として機能させるためのプログラム。
【請求項１０】
アプリケーションを実行するためのアプリケーション実行部を備えるコンピューターを、
請求項４から６までのいずれか一項に記載のアプリ実行装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、操作情報共有装置、アプリ実行装置、操作情報共有システム、情報処理装置、およびプログラムに関する。
【背景技術】
【０００２】
近年、スマートフォン、タブレット、スマートウォッチ、スマートテレビなどネットワークに接続して利用するデバイスが増えている。さらには、ＩｏＴ（Internet of Things）の普及に伴い、今後さらに多種多様なデバイスの利活用が想定される。スマートフォン、タブレット、スマートウォッチなどのデバイスでは、ユーザーインタフェースとしてタッチスクリーンが一般的に利用されているが、今後は加速度センサーやイメージセンサーなど様々なセンサーのインタフェースとしての利用も予想される。多様なネットワーク対応デバイスが普及すると、個人ユーザーがそれぞれのデバイスの様々なユーザーインタフェースを用いてサービスにアクセスしながらも、複数のユーザーがそのサービスを一緒に利用するという状況が想定される。
【０００３】
このような状況下において、多様なユーザーインタフェースで入力された多様なユーザー操作のデータを共有して利用するための技術や、ネットワーク接続機能を有するデバイスと有しないデバイスからのデータを一元的に管理するための技術が求められる。
【０００４】
特許文献１には、手書きのストローク情報を複数のデバイスから収集し、収集した情報を複数のデバイス上共有する技術が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−１１００６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら特許文献１に記載された技術では、共有するユーザー操作が手書きのストロークに限定されており、多様なユーザーインタフェースを用いた多様なユーザー操作に対応できない。
【０００７】
本発明は、上記の課題認識に基づいて行なわれたものであり、様々な種類の操作を収集して共有し、利用することのできる操作情報共有装置、アプリ実行装置、操作情報共有システム、情報処理装置、およびプログラムを提供するものである。
【課題を解決するための手段】
【０００８】
［１］上記の課題を解決するため、本発明の一態様による操作情報共有装置は、ユーザーによる操作に基づいて発生した操作データを操作入力装置から受信する受信部と、前記操作データの送信元である操作入力装置を識別して識別情報を出力する入力装置識別部と、前記操作データに前記入力装置識別部によって与えられた前記識別情報を付加し、操作イベントとして出力するデータ変換部と、前記データ変換部から出力される前記操作イベントを、ネットワークを介して送出する操作イベント送出部と、を具備することを特徴とする。
【０００９】
［２］また、本発明の一態様は、上記の操作情報共有装置において、前記データ変換部は、同一の前記操作入力装置からの同一種別の操作データを連続的に受け取ったときには、当該一連の操作に関して、操作開始、操作中、操作終了のいずれかを表す情報を付加して、前記操作イベントとして出力する、ことを特徴とする。
【００１０】
［３］また、本発明の一態様は、上記の操作情報共有装置において、前記受信部は、前記操作データを、ネットワーク経由で、またはネットワークを経由せずに、いずれでも受信できる、ことを特徴とする。
【００１１】
［４］また、本発明の一態様によるアプリ実行装置は、アプリケーションを実行するためのアプリケーション実行部と、外部装置との間で通信コネクションを確立して、ユーザーによる操作に基づいて発生した操作データと当該操作データの送信元である操作入力装置を識別するための識別情報とを含んだ操作イベントを、前記外部装置から受信する操作イベント受信部と、を具備することを特徴とする。
【００１２】
［５］また、本発明の一態様は、上記のアプリ実行装置において、前記操作イベント受信部が受信した前記操作イベントに基づいてジェスチャーの種別を判定し得られたジェスチャー種別の情報を、前記アプリケーション実行部において実行される前記アプリケーションに提供するジェスチャー変換部、をさらに具備することを特徴とする。
【００１３】
［６］また、本発明の一態様は、上記のアプリ実行装置において、前記ジェスチャー変換部は、前記操作イベントに基づいて前記ジェスチャーの種別を判定するためのパラメーターを設定可能とする、ことを特徴とする。
【００１４】
［７］また、本発明の一態様は、ユーザーによる操作に基づいて発生した操作データを送信する操作入力装置と、上記のいずれかの操作情報共有装置と、上記のいずれかのアプリ実行装置と、を具備することを特徴とする操作情報共有システムである。
【００１５】
［８］また、本発明の一態様は、上記のいずれかの操作情報共有装置と、上記のいずれかのアプリ実行装置と、の機能を備える情報処理装置である。
【００１６】
［９］また、本発明の一態様は、コンピューターを、上記のいずれかの操作情報共有装置として機能させるためのプログラムである。
【００１７】
［１０］また、本発明の一態様は、アプリケーションを実行するためのアプリケーション実行部を備えるコンピューターを、上記のいずれかのアプリ実行装置として機能させるためのプログラム。
【発明の効果】
【００１８】
本発明によれば、多様なユーザーインタフェースを持つ多様な操作入力装置（デバイス）におけるユーザー操作に関する情報を、操作情報共有装置が取得し、複数のアプリ実行装置（デバイス）に送出する。アプリ実行装置は、操作イベントを受信できる。
アプリ実行装置における操作イベント受信部をプログラムで実現する場合には、そのプログラムを組み込んだアプリケーション（例えば、ＪａｖａＳｃｒｉｐｔ（登録商標）による実行コードを含んだウェブアプリケーション）を、様々なアプリ実行装置で実行させることができる。これにより、アプリ実行装置は、他の装置（操作入力装置）の操作データを利用するアプリケーションを実現できる。
【００１９】
操作情報共有装置が、ネットワークに接続されていない操作入力装置からの操作データも処理できる場合には、ネットワーク接続非対応のセンサーデバイスも操作入力装置として用いることができる。
【００２０】
アプリ実行装置におけるジェスチャー変換部が、ジェスチャーの種別を判定するためのパラメーターを設定可能とする場合には、サービスやデバイスに応じて適切な値を柔軟に設定することができる。
【図面の簡単な説明】
【００２１】
【図１】本発明の実施形態による操作情報共有システムの概略構成を示すブロック図である。
【図２】同実施形態による操作情報共有装置の概略機能構成を示すブロック図である。
【図３】同実施形態によるアプリ実行装置の概略機能構成を示すブロック図である。
【図４】同実施形態による操作データの構成とデータ例とを示す概略図である。
【図５】同実施形態による操作イベントのデータ構成とデータ例とを示す概略図である。
【図６】同実施形態による操作情報共有装置とアプリ実行装置との間でのデータ等のやり取りの概略手順を示すシーケンスチャートである。
【発明を実施するための形態】
【００２２】
［第１実施形態］
次に、本発明の実施形態について、図面を参照しながら説明する。
図１は、本実施形態による操作情報共有システムの概略構成を示すブロック図である。同図に示すように、操作情報共有システム１は、操作情報共有装置１０と、単数または複数の操作入力装置１１および１２と、単数または複数のアプリ実行装置１５とを含んで構成される。なお、「アプリ」はアプリケーションプログラムの略である。
操作情報共有装置１０は、アプリ実行装置１５の各々との間で、通信ネットワークを介して接続される。また、操作情報共有装置１０は、操作入力装置１２の各々との間で、通信ネットワークを介して接続される。また、操作情報共有装置１０は、操作入力装置１１の各々と、通信ネットワークを介さずに直接接続される。
【００２３】
操作情報共有装置１０は、操作入力装置１１や操作入力装置１２から渡される操作入力の情報を集約し、ネットワークを介してそれらの情報を共有できるようにする装置である。操作情報共有装置１０は、操作入力装置１１や操作入力装置１２から収集した操作データを処理し、通信ネットワークを介してアプリ実行装置１５に供給する。操作情報共有装置１０は、例えば、パーソナルコンピューター（ＰＣ）を用いて実現される。なお、操作情報共有装置１０のより詳細な機能等については、後で別図を参照しながら詳述する。
【００２４】
操作入力装置１１および１２は、ユーザーによる操作に基づき、その操作の情報を取得または生成し、操作情報共有装置１０に渡す。操作入力装置１１および１２は、ユーザーによる操作を検知するためのセンサーを備えている。ここで、センサーとは、例えば人の指等によるタッチを検出するタッチセンサーや、加速度を検出する加速度センサーや、その他のセンサーである。タッチセンサーや加速度センサー自体は、既存技術により実現されるものである。操作入力装置１１および１２は、例えば、それらのセンサーを備えたスマートフォン（スマホ）あるいはタブレット端末として構成される。あるいは、操作入力装置１１および１２は、それらのセンサーを備え、画像ないしは映像を表示するための表示装置（例えば、液晶表示装置や有機ＥＬ表示装置）として構成される。操作入力装置１１および１２は、ユーザーによる操作を検知すると、入力された操作データを操作情報共有装置１０に送信する。操作入力装置１１と１２との相違点は、この操作データを操作情報共有装置１０に送信する際のインタフェースである。操作入力装置１１は、通信ネットワーク（例えば、インターネットプロトコルを用いたＩＰネットワーク）を介さず、直接、操作情報共有装置１０と結合され、操作データを渡す。操作入力装置１１は、例えば、ＵＳＢ（ユニバーサル・シリアル・バス）等のインタフェースを経由して、操作情報共有装置１０と独自のプロトコルで通信する。一方、操作入力装置１２は、通信ネットワーク（例えば、ＩＰネットワーク）を介して、操作情報共有装置１０との間でＨＴＴＰ（ハイパーテキスト転送プロトコル）やウェブソケット（WebSocket）などといった標準的なネットワークプロトコルで通信する。
【００２５】
アプリ実行装置１５は、ユーザーがサービスを利用するためのアプリ（アプリケーションプログラム）を実行する環境を備えた装置である。アプリのプラットフォームとして、例えば、AndroidやiOSなどの様々なものが考えられる。本実施形態においては、アプリ実行装置１５は、ウェブブラウザの機能を備え、そのブラウザ上でウェブアプリを動作させることができるようになっている。ウェブアプリは、例えば、ＨＴＭＬ（ハイパーテキストマークアップ言語）とＪａｖａＳｃｒｉｐｔ（ジャバスクリプト，登録商標）を用いて記述される。アプリ実行装置１５が備えるウェブブラウザは、ＨＴＭＬで記述された文書データを解釈して表示させたり、ＪａｖａＳｃｒｉｐｔで記述された実行コードを実行させたりする機能を有している。アプリ実行装置１５は、例えば、テレビ放送の受信機能を備えたテレビ受像機として構成される。あるいは、アプリ実行装置１５は、スマートフォンやタブレット端末として構成される。
【００２６】
図１に記載される各装置（操作情報共有装置１０、操作入力装置１１、操作入力装置１２、アプリ実行装置１５）のうちのいずれかの複数の装置の機能をまとめて一つの装置として実現しても良い。一例として、アプリ実行装置１５がテレビ受像機であり、操作入力装置１１がそのテレビ受像機の表示部（液晶表示装置）に設けられたタッチセンサー付き小型デバイスであるといった形態が考えられる。ただし、複数の装置の機能をまとめて一つの装置として実現する組み合わせは、これに限定されない。
【００２７】
図２は、操作情報共有装置１０の概略機能構成を示すブロック図である。図示するように、操作情報共有装置１０は、操作入力装置インタフェース部１０１（受信部）と、ネットワーク入力インタフェース部１０２（受信部）と、操作イベント処理部１１０と、操作イベント送出部１２１と、ネットワーク出力インタフェース部１２５と、を含んで構成される。また、操作イベント処理部１１０は、データ変換部１１１と、入力装置識別部１１２と、を含んで構成される。以下に、これら各部の詳細について説明する。
【００２８】
操作入力装置インタフェース部１０１とネットワーク入力インタフェース部１０２は、それぞれ、ユーザーによる操作に基づいて発生した操作データを外部の操作入力装置から受信する受信部として機能する。つまり、受信部は、操作データを、ネットワーク経由で、またはネットワークを経由せずに、いずれの方法ででも受信できる。
【００２９】
操作入力装置インタフェース部１０１は、操作入力装置１１と接続するためのインタフェース機能を有する。操作入力装置インタフェース部１０１が用いるインタフェースは、操作入力装置１１と接続性が担保できるものである。操作入力装置インタフェース部１０１は、操作入力装置１１から受信した操作データを、操作イベント処理部１１０に渡す。
ネットワーク入力インタフェース部１０２は、例えばＩＰネットワークを介して操作入力装置１２からの操作データを受信するためのネットワークインタフェース機能を有する。ネットワーク入力インタフェース部１０２は、ＨＴＴＰやウェブソケットなどといった標準的なネットワークプロトコルを用いて、転送されてくる操作データを受信する。そして、ネットワーク入力インタフェース部１０２は、操作入力装置１２から受信した操作データを、操作イベント処理部１１０に渡す。
【００３０】
操作イベント処理部１１０は、操作入力装置インタフェース部１０１およびネットワーク入力インタフェース部１０２から操作データを受信する。そして、操作イベント処理部１１０は、受信した操作データを、操作イベント送出部１２１によって処理可能な形態のデータに変換する。操作イベント処理部１１０によって変換された後のデータを、以後、操作イベントと呼ぶ。操作イベント処理部１１０が受信する操作データと、操作イベント処理部１１０によって変換された後の操作イベントデータとについては、後で別図を参照しながら詳述する。
【００３１】
操作イベント送出部１２１は、操作イベント処理部１１０から渡される操作イベントを、ネットワーク出力インタフェース部１２５を経由してアプリ実行装置１５に送出する。
具体的には、操作イベント送出部１２１は、データ変換部１１１から出力される操作イベントを、ネットワークを介して送出する。操作情報共有装置１０からアプリ実行装置１５にデータを送信するための通信プロトコルとして、例えば、標準的なウェブブラウザが対応しているウェブソケット（WebSocket）を用いる。そして、操作イベント送出部１２１は、アプリ実行装置１５に含まれる操作イベント受信部１８１（後述）からからのリクエストを受信したときに、このリクエストに応答する。そして、このリクエストに基づいて、操作イベント送出部１２１は、両者間の接続が解除されるまでの間、通信路を確保するとともに、当該リクエストの送信元であるアプリ実行装置１５に対して、操作イベントのデータを順次送出する。
なお、操作イベント送出部１２１と、アプリ実行装置１５側の操作イベント受信部１８１との間の通信を行うために、上記ウェブソケット以外の通信プロトコルを適宜用いても良い。
【００３２】
ネットワーク出力インタフェース部１２５は、上記の操作イベント送出部１２１がアプリ実行装置１５に対して操作イベントのデータを送信するためのインタフェース機能を備える。ネットワーク出力インタフェース部１２５は、上記のウェブソケットにより伝送されるデータを、より下位のプロトコルを用いて転送する。
なお、ネットワーク出力インタフェース部１２５の機能とネットワーク入力インタフェース部１０２の機能とを共通化しても良い。
【００３３】
前述の操作イベント処理部１１０は、データ変換部１１１と、入力装置識別部１１２とを含んで構成される。
データ変換部１１１は、受信した操作データに入力装置識別部１１２によって与えられる識別情報（操作入力装置を識別する情報）を付加し、操作イベントとして出力する。データ変換部１１１は、また、操作イベントの種別（event_type）を操作イベントに付加する。イベントの種別は、操作データの基となったセンサーの種別を表す情報を含むものである。例えば、タッチセンサーの場合、イベントの種別は、その操作が「touch」であることを表す情報を含む。また、操作入力装置から同一種別の操作データが連続的に入力された場合、種別として一連の操作開始、操作中、終了の情報を、操作の種別として付加する。例えば、タッチセンサーが検知した操作イベントであって、その一連の操作の開始時点における操作イベントに関しては、イベント種別は「touchstart」である。その一連の操作の操作中における操作イベントに関しては、イベント種別は「touchmove」である。その一連の操作の終了時点における操作イベントに関しては、イベント種別は「touchend」である。
【００３４】
入力装置識別部１１２は、操作データの送信元である操作入力装置を識別して識別情報を出力する。入力装置識別部１１２は、その識別情報をデータ変換部１１１に供給する。なお、入力装置識別部１１２は、操作入力装置のアドレス（例えば、ＩＰアドレス）や、デバイス名等によって、あるいは操作入力装置との間で確立されているコネクションを識別する情報（例えば、コネクションの論理的な名前など）によって、操作入力装置を識別する。
【００３５】
図３は、アプリ実行装置の概略機能構成を示すブロック図である。図示するように、アプリ実行装置１５は、ネットワークインタフェース部１５１と、ウェブブラウザ部１６０（アプリケーション実行部）と、提示部１９１と、を含んで構成される。アプリ実行装置１５内のウェブブラウザ部１６０がアプリを実行させる。
【００３６】
ネットワークインタフェース部１５１は、アプリ実行装置１５と操作情報共有装置１０とが通信ネットワークを介して通信を行うための機能を備えている。
ウェブブラウザ部１６０は、アプリケーションを実行させる機能を備えている。アプリは、ＨＴＭＬと、ＪａｖａＳｃｒｉｐｔと、ＣＳＳ（カスケーディング・スタイル・シート）とで構成される一般的なウェブアプリである。ウェブブラウザ部１６０は、ネットワークインタフェース部１５１を介して、外部の装置（操作情報共有装置１０など）との間でデータの送受信を行える。
【００３７】
提示部１９１は、ウェブブラウザ部１６０から出力される画像や映像や音声などを外部のユーザーに対して提示する機能を備える。提示部１９１は、例えば、液晶ディスプレイ装置等の表示手段を備えるよう構成される。
なお、アプリ実行装置１５をテレビ受像機として構成する場合、提示部１９１は、上記のアプリからの出力をユーザーに提示するとともに、放送信号から抽出された映像や音声をもユーザーに提示する。
【００３８】
ウェブブラウザ部１６０についてさらに詳細に説明する。
ウェブブラウザ部１６０は、ＨＴＭＬ処理部１７１と、ＣＳＳ処理部１７２と、ＪａｖａＳｃｒｉｐｔ実行部１８０とを含んで構成される。さらに、ＪａｖａＳｃｒｉｐｔ実行部１８０は、操作イベント受信部１８１とジェスチャー変換部１８２とを含んで構成される。
【００３９】
ＨＴＭＬ処理部１７１は、ＨＴＭＬで記述されたコンテンツを解釈し、テキストや画像や映像などを、定められた書式で画面等に配置する。なお、ＨＴＭＬ処理部１７１がコンテンツ（テキストや画像や映像など）の配置を決定する際には、下記のＣＳＳ処理部１７２が決定する表示属性にも従う。
ＣＳＳ処理部１７２は、階層化されたクラスごとに定義される属性を解決し、コンテンツ（テキストや画像や映像など）の提示のための属性（サイズや、位置や、色や、その他の属性）を決定する。
【００４０】
ＪａｖａＳｃｒｉｐｔ実行部１８０は、ＪａｖａＳｃｒｉｐｔによって記述された実行コードを、例えばインタープリター形式で実行する。ＪａｖａＳｃｒｉｐｔのコードは、独立したファイルとして存在する場合もあり、またＨＴＭＬのファイルの中に埋め込まれる場合もある。
【００４１】
操作イベント受信部１８１は、操作情報共有装置１０の操作イベント送出部１２１から送られてくる操作イベントのデータを受信する機能を備える。操作イベント受信部１８１は、ネットワークインタフェース部１５１を通して、操作イベント送出部１２１からの操作イベントを受信する。つまり、操作イベント受信部１８１は、外部装置との間で通信コネクションを確立して、ユーザーによる操作に基づいて発生した操作データと当該操作データの送信元である操作入力装置を識別するための識別情報とを含んだ操作イベントを、外部の操作情報共有装置１０から受信する。
ジェスチャー変換部１８２は、操作イベント受信部１８１が受信した操作イベント（または、複数の操作イベントの列）を、所定のルールに基づいてジェスチャーに変換する。ここで、ジェスチャーとは、操作イベントや、時系列にしたがった一連の操作イベント列から解釈される、より高次元な操作の単位である。なお、ジェスチャーの詳細については後述する。つまり、ジェスチャー変換部１８２は、操作イベント受信部１８１が受信した操作イベントに基づいて、ジェスチャーの種別を判定し得られたジェスチャー種別の情報を、ウェブブラウザ部１６０において実行されるアプリケーションに提供する。
また、ジェスチャー変換部１８２は、操作イベントに基づいてジェスチャーの種別を判定するためのパラメーターを設定可能とするが、このパラメーターの詳細については後述する。
【００４２】
操作イベント受信部１８１とジェスチャー変換部１８２の各々は、一例として、プログラムの機能として実現される。
操作イベント受信モジュール（モジュールは、プログラムの論理的なまとまりの単位）をＪａｖａＳｃｒｉｐｔ実行部１８０上で実行することにより、操作イベント受信部１８１が機能する。操作イベント受信モジュールには、操作情報共有装置１０より送出される操作イベントを受信するためのコードが記述されている。また、ジェスチャー変換モジュールをＪａｖａＳｃｒｉｐｔ実行部１８０上で実行することにより、ジェスチャー変換部１８２が機能する。ジェスチャー変換モジュールには、受信した操作イベントをジェスチャーに変換するためのコードが記述されている。
これらの操作イベント受信モジュールおよびジェスチャー変換モジュールは、例えば、アプリの一部として組み込まれる形で配布される。
【００４３】
図４は、操作データの構成とデータ例とを示す概略図である。同図に示す操作データは、操作入力装置（１１または１２）から、操作情報共有装置１０に送られるデータである。また、この操作データは、操作情報共有装置１０内の操作イベント処理部１１０が受け取るデータである。図示するデータ例は、操作入力装置（１１または１２）が備えるタッチセンサーによって得られる時系列のデータである。同図における１行分のデータが、ある一時点におけるタッチセンサーからの出力に対応している。各行は、ｉｄと、ｘと、ｙとの、３つのデータ項目を含んでいる。ｉｄは、指を識別する情報である。本例では、ｉｄ＝０という値が、第０番目の指によるタッチであることを表している。ｘは、タッチセンサーにおいて検出されたｘ座標の値を表す情報である。ｙは、そのタッチセンサーにおいて検出されたｙ座標の値を表す情報である。タッチセンサーは、ｘおよびｙからなる２次元の座標により、タッチが検知された位置を示す。つまり、図示するデータは４行のデータを含んでいる。これらのデータは、ｉｄ＝０で識別される１本の指に関して、（ｘ，ｙ）＝（１００，２００）という座標で表される位置においてタッチ操作を開始し、（ｘ，ｙ）＝（１０３，２００）の位置まで移動することを表している。
【００４４】
図５は、操作イベントのデータ構成とデータ例とを示す概略図である。同図に示す操作イベントは、操作情報共有装置１０内の操作イベント処理部１１０が操作データを基に変換して生成するデータである。具体的には、操作イベント処理部１１０内のデータ変換部１１１がこのデータ変換処理を行う。
【００４５】
図示するデータ例において、キーワード「device」は、デバイス名を表す。本データ例においてデバイス名の値は「touchsensorA」である。このデバイス名の情報は、予め操作情報共有装置１０に登録されていた情報に基づいて、データ変換部１１１が付加した情報である。このデバイス名は、入力装置識別部１１２に予め登録されている。そして、デバイスの接続中にはそのデバイスが操作情報共有装置によって認識されている。操作入力装置（１１または１２）からの操作データが操作イベント処理部１１０に入力された時点で、操作イベント処理部１１０は、デバイスを把握し適切なデバイス名を操作イベントに記述する。また、キーワード「event_type」は、操作イベントの種別を表す。操作イベントの種別は、センサーの種別（タッチセンサーや加速度センサーなど）ごとに定義されるものである。操作イベントの種別は、操作入力装置（１１または１２）側で宣言される場合と、操作情報共有装置１０の入力装置識別部１１２においてデバイスと関連付けて登録しておく場合とがある。図示する例において、操作イベントの種別は、「touchstart」、「touchmove」、「touchend」の３種類である。「touchstart」はタッチの開始（操作開始）を表し、「touchmove」はタッチ操作によって指が移動している状況（操作中）であることを表し、「touchend」はタッチの終了（操作終了）を表す。操作入力装置（１１または１２）側からは、ユーザーの操作時には、操作データが時系列に（ほぼ一定時間間隔で）連続的に入力される。したがって、データ変換部１１１は、それらの時系列のデータが一連の動作であるか否かの判定も行う。つまり、データ変換部１１１は、同一の操作入力装置（１１または１２）からの同一種別の操作データを連続的に受け取ったときには、当該一連の操作に関して、操作開始、操作中、操作終了のいずれかを表す情報を付加して、操作イベントとして出力する。なお、ここで、同一種別の操作データとは、例えば、連続する操作がいずれも「タッチ操作」である場合などである。
なお、図５のデータの各行における「id」および「x,y」のデータは、図４にも示した操作データから引き継いだ情報である。
【００４６】
なお、操作データと操作イベントについて、ここではＪＳＯＮ（ジェイソン、JavaScript Object Notation）形式で記述されているが、他の記述形式を用いても構わない。
【００４７】
次に装置間での処理のシーケンスについて説明する。
図６は、操作情報共有装置１０とアプリ実行装置１５との間でのデータ等のやり取りの概略手順を示すシーケンスチャートである。以下、同図に沿って手順を説明する。
まずステップＳ１において、アプリ実行装置１５側のウェブブラウザ部１６０は、アプリを起動する。そして、ＪａｖａＳｃｒｉｐｔ実行部１８０は、ＪａｖａＳｃｒｉｐｔのコードをロードする。
【００４８】
次にステップＳ２において、アプリ実行装置１５側の操作イベント受信部１８１は、操作情報共有装置１０側に対して、操作イベント取得リクエストを送る。そして、操作イベント受信部１８１は、操作情報共有装置１０側からの応答を待つ。操作情報共有装置１０側の操作イベント送出部１２１は、操作イベント受信部１８１から送られた操作イベント取得リクエストを受信する。
【００４９】
次にステップＳ３において、操作情報共有装置１０側の操作イベント送出部１２１は、上記の操作イベント取得リクエストを送信してきたアプリ実行装置１５を、送出先の一つとして登録する。これにより、当該アプリ実行装置は、操作イベントの送付先リストに加わる。より具体的には、操作情報共有装置１０は、操作イベント取得リクエストを受理するとともに、アプリ実行装置１５のＩＰアドレスなどデバイスを認識するための情報を登録し、ウェブソケットで操作イベントのデータを送信するための通信路を確立する。
【００５０】
次にステップＳ４において、操作情報共有装置１０側の操作イベント送出部１２１は、ステップＳ２において受信した操作イベント取得リクエストに対する応答を、アプリ実行装置１５側に対して送信する。この応答は、リクエスト完了通知と呼ばれる。このリクエスト完了通知は、アプリ実行装置１５側がリクエストした操作イベントのデータを、そのアプリ実行装置１５に対して送出する準備が完了したことを通知するものである。アプリ実行装置１５側の操作イベント受信部１８１は、このリクエスト完了通知を受信する。そして、後続して送られてくるはずの操作イベントのデータを待つ。
【００５１】
次にステップＳ５とＳ６とＳ７の各ステップにおいて、操作情報共有装置側の操作イベント送出部１２１は、操作イベントのデータを、アプリ実行装置１５に対して操作イベントのデータを送信する。そして、これらの各ステップにおいて、アプリ実行装置１５側の操作イベント受信部１８１は、この操作イベントのデータを受信する。また、操作イベント受信部１８１は、受信した操作イベントのデータを順次、ジェスチャー変換部１８２に渡す。ジェスチャー変換部１８２は、操作イベントをジェスチャーに変換するべきタイミングが到来するまで、受け取った操作イベントを例えば待ち行列形式の記憶手段に一時的に保管しておく。
なお、ジェスチャー変換部１８２が操作イベントをジェスチャーに変換するべきタイミングであるか否かとは無関係に、操作情報共有装置１０内の操作イベント送出部１２１は、操作イベントを次々にアプリ実行装置１５に向けて送り続ける。
【００５２】
次にステップＳ８において、アプリ実行装置１５側のジェスチャー変換部１８２は、その時点までに蓄積されている操作イベントの列を、ジェスチャーに変換するべきタイミングであることを判断する。そして、ジェスチャー変換部１８２は、蓄積されている操作イベントの列に基づいて、操作ジェスチャーを判定する。そして、ジェスチャー変換部１８２は、入力された操作イベント（の列）を変換した結果として、ジェスチャーを出力する。なお、操作イベントからジェスチャーへの変換の詳細については、後述する。
【００５３】
ステップＳ８においてジェスチャー変換部１８２によって操作イベントのジェスチャーへの変換が行われているか否かに関わらず、操作情報共有装置１０側の操作イベント送出部１２１は、操作イベントを順次、送出していく。
同図においては、ステップＳ９において、またこのステップＳ９に後続する複数のステップの各々において、操作情報共有装置１０側の操作イベント送出部１２１は、操作イベントのデータをアプリ実行装置１５に向けて送出する。
【００５４】
そして、以後は、操作情報共有装置１０とアプリ実行装置１５との間の通信接続が終了するまで、操作イベント送出部１２１は、操作イベントを送り続ける。そして、アプリ実行装置１５側のジェスチャー変換部１８２は、然るべきタイミングが来たときに、操作イベントをジェスチャーに変換して出力する処理を行う。
【００５５】
なお、上記の一連の処理において、ジェスチャー変換部１８２から出力される操作ジェスチャーのデータは、アプリ実行装置１５で実行されているアプリの他の部分に渡される。ジェスチャー変換部１８２を含むアプリがＪａｖａＳｃｒｉｐｔのプログラムとして実行される場合には、ジェスチャー変換部１８２（ジェスチャー変換モジュール）は、関数戻り値として、あるいはプロセス間通信等の手段で、変換結果であるジェスチャーを他のモジュールに渡す。
【００５６】
上述したシーケンスでは、操作情報共有装置１０と１台のアプリ実行装置１５とのやりとりを説明したが、操作情報共有装置１０は、複数のアプリ実行装置１５に対して、同時並行的に操作イベントを送出することもできる。その場合、操作情報共有装置１０は、アプリ実行装置１５からの操作イベント取得リクエストを随時受け付け、そのアプリ実行装置１５との通信路を確立し、操作イベントを送出する。その間、操作情報共有装置１０は、他のアプリ実行装置１５との間でも並行して同様の処理を行う。
【００５７】
次に、ジェスチャー変換部１８２によるジェスチャー判定の詳細について説明する。ジェスチャー変換部１８２は、受信した連続する操作イベントのデータに基づいて、操作の特徴量を抽出し、ジェスチャーを判定する。以下で、タッチ操作の操作イベントに基づいて、タップ、長押し、フリック、ピンチ、回転といったジェスチャーを判定する例を説明する。ジェスチャー変換部１８２は、特徴量を抽出するためのパラメーターを予め設定できるようになっている。サービスの種類やデバイスの種類などに応じてこのパラメーターの値を変更することが可能である。また、ジェスチャー変換部１８２は、判定の結果として、ジェスチャーの種別のほかに、付加的な値を返す。
【００５８】
（１）タップ
タップは、指先で一度触れる操作である。タップ操作に関するパラメーターは、１回のタップとして許容される操作時間（時間の長さの上限）と、１回のタップ中に許容されるｘ方向およびｙ方向それぞれの変位（変位の上限）である。ジェスチャー変換部１８２は、１回のタッチ操作が、パラメーターで指定される操作時間以下であり、且つ、その間の変位がパラメーターで許容される範囲内である時に、ジェスチャーの種別が「タップ」であると判定する。そして、ジェスチャー変換部１８２は、ジェスチャー種別「タップ」とともに、タップしたポイントを識別するＩＤと、タップしたポイントの座標（ｘ，ｙ）とを、戻り値として返す。
【００５９】
（２）長押し
長押しは、指先で所定時間以上押し続ける操作である。長押し操作に関するパラメーターは、長押しと判定されるための最低継続時間と、１回の長押し中に許容されるｘ方向およびｙ方向それぞれの変位（変位の上限）である。ジェスチャー変換部１８２は、タッチ操作が、パラメーターで指定される最低継続時間以上であり、且つ、その間の変位がパラメーターで許容される範囲内である時に、ジェスチャーの種別が「長押し」であると判定する。そして、ジェスチャー変換部１８２は、ジェスチャー種別「長押し」とともに、長押ししたポイントを識別するＩＤと、長押ししたポイントの座標（ｘ，ｙ）とを、戻り値として返す。
【００６０】
（３）フリック
フリックは、タッチセンサー面上に一旦置いた指をスライドさせて離す操作である。
フリック操作に関するパラメーターは、フリックとして許容される最大操作時間と、フリックとして許容される最小の変位量（ｘ方向への変位、ｙ方向への変位、またはｘ方向とｙ方向の変位を合成した変位量）である。ジェスチャー変換部１８２は、タッチ操作が、パラメーターで指定される最大操作時間以下であり、且つ、その間の変位がパラメーターで指定される最小変位量以上である時に、ジェスチャーの種別が「フリック」であると判定する。そして、ジェスチャー変換部１８２は、ジェスチャー種別「フリック」とともに、フリックしたポイントを識別するＩＤと、フリックした開始ポイントの座標（ｘ，ｙ）と、フリックによる変位量（ｄｘ，ｄｙ）を、戻り値として返す。
【００６１】
（４）ピンチ
ピンチは、２本の指を近づけたり離したりする操作である。ピンチ操作に関するパラメーターは、ピンチであると判定する最小の縮尺と、２点間のイベント発生の時間差として許容される最大時間である。なお、上記の縮尺とは、２本の指によるタッチの位置に関して、最も近づいているときの２点間の距離と、最も遠いときの２点間の距離との比率である。ジェスチャー変換部１８２は、２点におけるタッチの連続した操作であり、最も近づいているときの２点間の距離と最も遠いときの２点間の距離との比率がパラメーターで指定される縮尺以上であり、且つ、その２点におけるイベント発生の時間差がパラメーターで指定される許容最大時間以下である時に、ジェスチャーの種別が「ピンチ」であると判定する。そして、ジェスチャー変換部１８２は、ジェスチャー種別「ピンチ」とともに、ピンチしたポイントを識別するＩＤと、２点間の中心座標（ｘ，ｙ）と、ピンチ開始時における２点間の距離に対するピンチ終了時の２点間の距離の縮尺の値とを、戻り値として返す。
【００６２】
（５）回転
回転は、２本の指をタッチセンサー面に付けたまま面上で回転させる操作である。回転操作に関するパラメーターは、回転であると判定する最小の回転角度と、２点間のイベント発生の時間差として許容される最大時間である。なお、上記の回転角度とは、タッチしている２点を結ぶ直線の、回転開始時から回転終了時までの変位角の量である。ジェスチャー変換部１８２は、２点におけるタッチの連続した操作であり、回転角度がパラメーターで指定された最小回転角度以上であり、且つ、その２点におけるイベント発生の時間差がパラメーターで指定される許容最大時間以下である時に、ジェスチャーの種別が「回転」であると判定する。そして、ジェスチャー変換部１８２は、ジェスチャー種別「回転」とともに、回転したポイントを識別するＩＤと、２点間の中心座標（ｘ，ｙ）と、回転開始時の２点を結ぶ直線に対する回転終了時の２点を結ぶ直線の回転角度差とを、戻り値として返す。
【００６３】
次に、上述した実施形態に関して、複数の変形例を説明する。
【００６４】
［変形例１］
ジェスチャー変換部１８２をプログラムによって実現する場合、ジェスチャー種別ごとにモジュール化して、それらのモジュールをライブラリ等から選択してアプリケーションに組み込めるようにしても良い。また、ジェスチャー変換部がジェスチャーの判定に用いるためのパラメーターを、可変とすることができる。これらのパラメーターの値も、例えばアプリケーションごとに異なる値を設定するようにできる。これらにより、アプリケーション開発者に対して、利用するジェスチャーを取捨選択したり、柔軟に操作をハンドリングする手段を提供したりすることが可能となる。
【００６５】
［変形例２］
上記実施形態ではタッチセンサーによって検知されるタッチ操作を中心に説明した。タッチセンサー以外にも、例えば、加速度センサーや、画像センサーなどを用いて、操作をハンドリングすることができる。加速度センサーを用いる場合には、例えば、操作入力装置を傾ける操作や、操作入力装置を振ったり投げたりする操作などを検出して、ジェスチャーの種別としてアプリケーションに渡すことができる。画像センサーを用いる場合には、例えば、指を用いたサインや、身体によるポーズや、顔の表情などを操作として検出して、ジェスチャーの種別としてアプリケーションに渡すことができる。
【００６６】
［変形例３］
上記実施形態で説明した複数の装置の機能をまとめて、１台の装置として構成しても良い。例えば、操作入力装置（１１または１２）と、アプリ実行装置１５との機能をまとめて１台の装置（デバイス、情報処理装置）として構成しても良い。また、例えば、操作入力装置（１１または１２）と、操作情報共有装置１０との機能をまとめて１台の装置として構成しても良い。また、操作情報共有装置１０とアプリ実行装置１５との機能をまとめて１台の装置として構成しても良い。
【００６７】
［変形例４］
上記実施形態では、操作イベントを操作情報共有装置１０側から送出して、それらの操作イベントに基づいてアプリ実行装置１５側でジェスチャーへの変換を行っていた。代わりに、ジェスチャーの判定を操作情報共有装置１０側で行い、判定されたジェスチャーの種別および付加的な値を、アプリ実行装置側に順次送出する形態としても良い。この場合、アプリ実行装置側では、操作イベント受信部１８１の代わりにジェスチャー受信部（不図示）を設けて、受信したジェスチャーの情報をアプリケーションに提供するようにする。
【００６８】
なお、上述した実施形態およびその変形例における操作情報共有装置、操作入力装置、アプリ実行装置の機能の全部または一部を、コンピューターで実現するようにしても良い。その場合、これらの機能を実現するためのプログラムをコンピューター読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピューターシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピューターシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【００６９】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【産業上の利用可能性】
【００７０】
本発明は、テレビ受像機や、インターネット端末や、それらの機能を複合した情報機器等に利用することができる。
【符号の説明】
【００７１】
１  操作情報共有システム
１０  操作情報共有装置
１１  操作入力装置
１２  操作入力装置
１５  アプリ実行装置
１０１  操作入力装置インタフェース部（受信部）
１０２  ネットワーク入力インタフェース部（受信部）
１１０  操作イベント処理部
１１１  データ変換部
１１２  入力装置識別部
１２１  操作イベント送出部
１２５  ネットワーク出力インタフェース部
１５１  ネットワークインタフェース部
１６０  ウェブブラウザ部（アプリケーション実行部）
１７１  ＨＴＭＬ処理部
１７２  ＣＳＳ処理部
１８０  ＪａｖａＳｃｒｉｐｔ実行部
１８１  操作イベント受信部
１８２  ジェスチャー変換部
１９１  提示部
【図１】
2017033397.tif 000003
【図２】
2017033397.tif 000004
【図３】
2017033397.tif 000005
【図４】
2017033397.tif 000006
【図５】
2017033397.tif 000007
【図６】
2017033397.tif 000008