以下、図面を参照しながら本発明の実施形態について詳しく説明する。
(第1の実施形態)
まず、本発明の第1の実施形態について説明する。
図1は、本発明の第1の実施形態に係る情報処理システムS1の構成の一例を示す概略ブロック図である。
図1に示すように、情報処理システムS1は、データ管理サーバ装置1と、定義情報サーバ装置2と、情報処理装置3と、機器4と、を含んで構成される。情報処理装置3は、記憶部31と、入力部32と、第2通信部33と、制御部34と、第1通信部35と、表示部36と、を含んで構成される。
データ管理サーバ装置1は、インターネットなどの通信路を介して、情報処理装置3に通信接続されている。なお、データ管理サーバ装置1には、複数の情報処理装置3が通信接続されていてもよい。データ管理サーバ装置1は、後述する情報処理装置3が機器4から受信した通知データをデータ変換し、データ変換した通知データのデータフォーマットを変換して生成した送信データを記憶する。データ管理サーバ装置1は、情報処理装置3から後述するシーケンスに関する問い合わせを受信すると、当該問い合わせに対する応答を返信する。
定義情報サーバ装置2は、インターネットなどの通信路を介して、情報処理装置3に通信接続されている。なお、定義情報サーバ装置2には、複数の情報処理装置3が通信接続されていてもよい。定義情報サーバ装置2は、機器4を特定するための機器特定情報に対応する定義情報を記憶している。定義情報には、シーケンス定義情報と、メッセージ定義情報と、メッセージ構造定義情報と、メッセージ・データ定義情報とが含まれる。シーケンス定義情報は、機器特定情報ごとのシーケンス定義情報であり、機器4との通信に関するシーケンスを定義するデータである。メッセージ定義情報は、シーケンス定義情報に記載されているメッセージを定義するデータである。メッセージ構造定義情報は、メッセージ定義情報に記載されているメッセージの構造を定義するデータである。メッセージ・データ定義情報は、メッセージ定義情報に記載されているメッセージにあるデータを定義するデータである。定義情報サーバ装置2は、情報処理装置3から機器特定情報を含む問い合わせを受けると、当該問い合わせに対する応答として、当該機器特定情報に対応する定義情報を情報処理装置3に返す。具体的には、定義情報サーバ装置2は、情報処理装置3から機器特定情報を含む問い合わせを受けると、当該問い合わせに対する応答として、当該機器特定情報に対応するシーケンス定義情報と、当該シーケンス定義情報に記載されているメッセージのメッセージ定義情報と、当該メッセージ定義情報に記載されているメッセージ構造定義情報及びメッセージ・データ定義情報とを情報処理装置3に返す。
情報処理装置3は、スマートフォン、タブレット、パーソナルコンピュータなどである。情報処理装置3は、機器4と当該機器4のアドレス、認証キー、暗号化キーなどを交換して通信接続を確立する。そして、情報処理装置3は、機器4から機器情報を取得し、当該機器情報に基づいて定義情報を特定する機器特定情報を生成する。情報処理装置3は、機器4から当該機器4により通知データを取得し、機器特定情報に基づいて通知データをデータ変換し、データ変換した通知データのデータフォーマットを変換して送信データを生成し、当該送信データをデータ管理サーバ装置1に送信する。機器4は、一例として、生体の状態を測定する生体測定機器であり、例えば、歩数計、活動量計、体重計、体組成計、血圧計、脈拍計、体温計などである。他の例として、ウェアラブル機器であり、例えば、スマートウォッチ、スマート眼鏡などである。機器4は、ブルートゥース(Bluetooth(登録商標))などの通信路を介して、通知データを情報処理装置3に送信する。ここで、通知データには、通知項目に対応する一つまたは複数のデータ情報が含まれる。
次いで、情報処理装置3の構成を説明する。
記憶部31は、RAM(Random Access Memory;ランダムアクセスメモリ)、マスクROM(Read Only Memory:ロム)、FeRAM(Ferroelectric Randam Access Memory:強誘電体メモリ)、フラッシュメモリ、メモリカード、ハードディスク、SSD(Solid State Drive;ソリッドステートドライブ)などのメモリであり、制御部34が実行するプログラムおよび制御部34が当該プログラムを実行する際に必要となるデータを記憶する。当該プログラムには、アプリケーションやミドルウェアデバイスドライバ、オペレーションシステムなども含まれる。入力部32は、タッチパネル、入力キー、マウス、音声入力装置など、ユーザによる入力操作を受け付ける入力デバイスである。
第2通信部33は、無線LAN(Local Area Network;ローカルエリアネットワーク)による通信を行う。情報処理装置3の各部がデータ管理サーバ装置1との間で行う通信は、第2通信部33を介して行われる。また、情報処理装置3の各部が定義情報サーバ装置2との間で行う通信は、第2通信部33を介して行われる。なお、第2通信部33は、3G(第3世代)回線、4G回線、WiMAX(Worldwide Interoperability for Microwave Access;ワイマックス)、LTE(Long Term Evolution)などのその他の無線通信、あるいは、インターネットなどの有線通信を行ってもよい。
制御部34は、CPU(Central Processing Unit;中央演算処理装置)を備え、記憶部31が記憶するプログラムを実行することで、情報処理装置3の各部を制御する。第1通信部35は、ブルートゥース(Bluetooth(登録商標))による通信を行う。本実施形態では、情報処理装置3の各部が機器4との間で行う通信は、第1通信部35を介して行われる。なお、第1通信部35は、NFC(Near Field Communication;近距離通信)、無線LANなどのその他の無線通信、あるいは、USB(Universal Serial Bus;ユーエスビー)などの有線通信を行ってもよい。表示部36は、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイ、プラズマディスプレイなどの表示装置を備え、画像を表示する。
図2は、第1の実施形態に係る情報処理装置3の機能構成の一例を示す概略ブロック図である。本図において、変換処理部30は、制御部34が記憶部31からプログラムを読み出して実行することで実現される。変換処理部30は、ペアリング部301と、機器情報記憶部302と、機器特定部303と、定義情報取得部304と、定義情報記憶部305と、シーケンス調整部306と、シーケンス実行部307と、メッセージ処理部308と、メッセージ通信部309と、データ通信部310と、を含んで構成される。
ペアリング部301は、広告(advertising)している機器4を検出し、当該機器4と接続し、情報処理装置3と機器4との間の通信に必要な通信情報を交換し、情報処理装置3と機器4との間の通信接続を確立する。そして、ペアリング部301は、当該通信情報を機器情報記憶部302に記憶させる。ここで、通信情報とは、機器4のアドレス情報、認証キー情報、暗号化キー情報などを含む通信接続を確立するための情報である。例えば、ペアリング部301は、広告しているブルートゥース機器(機器4)を検出し、当該ブルートゥース機器と接続し、情報処理装置3とブルートゥース機器との間の通信に必要なブルートゥース機器のアドレス、認証キー情報、暗号化キー情報を交換し、情報処理装置3とブルートゥース機器との間の通信接続を確立する。
ペアリング部301は、通信接続された機器4が提供するサービスを検索し、当該サービスに含まれる機器情報を提供するサービスに対してデータ要求を行い、機器4から機器情報を取得する。ここで、機器情報とは、機器4の機種名と、機種種別とを含む情報である。なお、機器情報は、機器4の機種を識別できる情報であればよく、JAN(Japanese Article Number;ジャン)コードやUUID(Universally Unique Identifer;一意識別子)などの商品識別コードであってもよいし、型番や機種名であってもよいし、メーカー名と型番とのように複数の機種を識別できる情報の組み合わせであってもよい。
ペアリング部301は、通信接続を確立した機器4と、取得した機器情報と、を対応付けて機器情報記憶部302に記憶させる。
なお、2回目以降、同じ機器4と接続する場合、ペアリング部301は、機器情報の取得を行わなくてもよい。これにより、機器4と通信接続する毎に機器情報を取得する必要がなくなり、処理を簡素化できるとともに、処理時間を短縮することができる。また、当該処理の簡素化、処理時間の短縮により消費電力を削減することができる。
機器情報記憶部302は、機器4と機器情報とを対応付けて記憶する。具体的には、機器情報記憶部302は、機器4のアドレスと機器情報とを対応付けて記憶する。
機器特定部303は、機器情報記憶部302から機器情報に含まれるメーカー名と型番とUUIDとを読み出し、当該メーカー名と型番とUUIDとから機器4の定義情報を特定するための機器特定情報を生成する。そして、機器特定部303は、生成した機器特定情報を定義情報取得部304およびメッセージ処理部308に出力する。また、機器特定部303は、生成した機器特定情報を定義情報記憶部305に記憶させる。
なお、機器特定情報には、歩数計、活動量計、体重計、体組成計、血圧計、脈拍計、体温計、スマートウォッチ、スマート眼鏡などの機器4の種別が含まれてもよい。また、機器情報には、一定の共通点を有する機器4が機器群に予め分類された機器群情報が含まれてもよく、当該機器群情報が機器情報に含まれる場合、機器特定部303は、当該機器群情報と、メーカー名とから機器特定情報を生成してもよい。
なお、機器特定部303が機器特定情報に基づいて定義情報記憶部305を参照し、当該機器特定情報に対応する定義情報が定義情報記憶部305に記憶されている場合、定義情報取得部304は、定義情報の取得を行わなくてもよい。これにより、ネットワークを経由した問い合わせおよび当該問い合わせに対する応答の取得などの処理が不要になり、処理時間が短縮することができるため消費電力を削減することができる。
定義情報取得部304は、機器特定部303から入力された機器特定情報に基づいて定義情報サーバ装置2に問い合わせを送信し、当該問い合わせに対する応答として当該機器特定情報に対応する定義情報を取得する。定義情報取得部304は、機器特定情報と取得した定義情報とを対応付けて定義情報記憶部305に記憶させる。定義情報記憶部305は、機器特定情報と定義情報とを対応付けて記憶する。具体的には、定義情報記憶部305は、メッセージの構造を定義するメッセージ構造定義情報と、メッセージに格納されるデータを定義するメッセージ・データ定義情報と、メッセージ構造定義情報及びメッセージ・データ定義情報を指定して機器4と通信するメッセージを定義するメッセージ定義情報とを記憶し、メッセージ定義情報を指定して通信に関するシーケンスを定義するシーケンス定義情報を機器4毎に記憶する。定義情報は、XML(Extensible Markup Language)形式で記載されている。
シーケンス調整部306は、送信データの送信先であるデータ管理サーバ装置1に基づいて、シーケンスを1つ選択する。具体的には、まず、シーケンス調整部306は、機器特定部303が特定した機器特定情報に対応するシーケンス定義情報を定義情報記憶部305から読み出す。続いて、シーケンス調整部306は、読み出したシーケンス定義情報が複数ある場合には、読み出した複数のシーケンス定義情報に関する問い合わせをデータ管理サーバ装置1に送信して、当該問い合わせに対する応答に基づいて最適なシーケンス定義情報を1つ選択する。最適なシーケンス定義情報は、読み出した複数のシーケンス定義情報のうち、これまでのデータ管理の状態等に基づく評価の最も高いシーケンス定義情報である。具体的には、シーケンス調整部306は、データ管理サーバ装置1におけるデータ管理の状態や、機器4の機器状況等に基づいて、シーケンスを評価する。シーケンス調整部306は、最適なシーケンス定義情報をシーケンス実行部307に通知する。シーケンス実行部307は、シーケンス調整部306から通知されたシーケンス定義情報を定義情報記憶部305から読み出し、読み出したシーケンス定義情報に定義されたシーケンスの各ステップを順に実行する。
メッセージ処理部308は、シーケンス実行部307が実行する各ステップにおけるメッセージを、メッセージ定義情報が指定するメッセージ構造定義情報及びメッセージ・データ定義情報に基づいて処理する。具体的には、メッセージ処理部308は、メッセージ定義情報に基づいてメッセージを生成し、生成したメッセージをメッセージ通信部309に出力する。また、メッセージ処理部308は、メッセージ定義情報に基づいて、メッセージ通信部309から入力されたメッセージを解釈し、データ管理サーバ装置1に送信するための送信データを生成する。そして、メッセージ処理部308は、生成した送信データをデータ通信部310に出力する。メッセージ通信部309は、メッセージ処理部308が処理するメッセージを、通信接続が確立された機器4と送受信する。具体的には、メッセージ通信部309は、メッセージ処理部308から入力されたメッセージを機器4に送信する。また、メッセージ通信部309は、機器4から受信したメッセージをメッセージ処理部308に出力する。
データ通信部310は、データ管理サーバ装置1と通信する。例えば、データ通信部310は、メッセージ処理部308から入力された送信データをデータ管理サーバ装置1に送信する。また、データ通信部310は、データ管理サーバ装置1から受信した受信データをメッセージ処理部308に出力する。なお、データ通信部310は、送信データを複数のデータ管理サーバ装置1に送信してもよい。
なお、本実施形態では、メッセージ処理部308が生成した送信データをデータ管理サーバ装置1に送信すると説明したが、データ管理サーバ装置1の代わりに変換処理部30に予めインストールされたデータ管理用のアプリケーションに送信データを送信してもよい。この場合、ネットワークを経由したデータ送信の必要がなくなるため、処理時間を短縮することができ、消費電力を削減することができる。また、第2通信部33が一時的に通信不可能になった場合であっても、データ管理用のアプリケーションへのデータ送信は可能であり、表示部36を用いて送信データを確認することもできる。
図3は、第1の実施形態に係る定義情報記憶部305が記憶するシーケンス定義情報の一例を示す概略図である。図示するように、シーケンス定義情報は、シーケンス名と、シーケンスの各ステップを示すステップテーブルとを有するデータである。シーケンス名は、シーケンスの名称であり、シーケンス定義情報の識別情報である。ステップテーブルは、ステップNoと、種類と、ステップ内容と、次ステップと、の各項目の列を有する行と列からなる2次元の表形式のデータである。ステップNoは、ステップの番号である。種類は、ステップにおける処理である。種類「送信メッセージ」はメッセージを送信することを示し、種類「受信メッセージ」はメッセージを受信することを示す。ステップ内容は、送信または受信するメッセージを示す。次ステップは、次のステップのステップNoである。次ステップ「end」はシーケンスの終了を示す。
図3(a)に示す例では、シーケンス名がシーケンス1である。また、ステップテーブルの1行目は、ステップNoが0であり、種類が送信メッセージであり、ステップ内容が送信メッセージ1であり、次ステップが1である。2行目は、ステップNoが1であり、種類が受信メッセージであり、ステップ内容が受信メッセージ1であり、次ステップがendである。図3(b)に示す例では、シーケンス名がシーケンス2である。また、ステップテーブルの1行目は、ステップNoが0であり、種類が送信メッセージであり、ステップ内容が送信メッセージ2であり、次ステップが1である。2行目は、ステップNoが1であり、種類が受信メッセージであり、ステップ内容が受信メッセージ2であり、次ステップがendである。
シーケンス実行部307は、シーケンス定義情報に基づいてシーケンスを実行する際、ステップNoの小さいステップから順に各ステップを実行する。また、シーケンス実行部307は、ステップの実行が完了すると、次ステップに記載されているステップNoのステップを実行する。また、シーケンス実行部307は、次ステップに「end」が設定されている場合には、シーケンスを終了する。本例では、まず、シーケンス実行部307は、ステップNo.0のステップを実行する。次に、シーケンス実行部307は、ステップNo.0の次ステップに記載されているステップNo.1のステップを実行してシーケンスを終了する。
図4は、第1の実施形態に係る定義情報記憶部305が記憶するシーケンス定義情報の一例を示す概略図である。本図は、図3に示すシーケンス定義情報をXML形式で記述した例である。図示するように、シーケンス定義情報は、sequence要素で表現する。また、シーケンス名はname属性で示す。ステップはstep要素で表現する。ステップNoはnumber属性で示す。種類の「送信メッセージ」はtx_message要素で表現する。また、種類の「受信メッセージ」はrx_message要素で表現する。ステップ内容はname属性で示す。次ステップはnext_step属性で示す。
図5は、第1の実施形態に係る定義情報記憶部305が記憶するメッセージ定義情報の一例を示す概略図である。図示するように、メッセージ定義情報は、機器4と通信するメッセージを定義する情報であり、メッセージ名と、タイプと、メッセージ内容とを有するデータである。メッセージ名は、メッセージの名称であり、メッセージ定義情報の識別情報である。タイプは、メッセージが送信であるか受信であるかを示す。メッセージ内容は、メッセージの内容であり、メッセージ構造とメッセージ・データとの各項目の列を有する行と列からなる2次元の表形式のデータである。メッセージ構造は、メッセージ構造定義情報である。メッセージ・データは、メッセージ・データ定義情報である。定義情報記憶部305は、記憶しているシーケンス定義情報に記載された全てのメッセージのメッセージ定義情報を記憶している。
メッセージ処理部308は、シーケンスの各ステップにおけるステップ内容のメッセージに対応するメッセージ定義情報を定義情報記憶部305から読み出し、読み出したメッセージ定義情報に基づいて送信または受信するメッセージを処理する。メッセージ処理部308は、メッセージ定義情報のタイプが送信である場合、メッセージ内容が示すメッセージを生成し、生成したメッセージを機器4に送信する。一方、メッセージ処理部308は、メッセージ定義情報のタイプが受信である場合、機器4から受信したメッセージが、メッセージ内容が示すメッセージと一致するか否かを判定することにより、メッセージを正しく受信したか否かを判定する。
図5(a)に示す例では、メッセージ名は送信メッセージ1であり、タイプは送信であり、メッセージ内容のメッセージ構造は共通メッセージ構造であり、メッセージ・データはメッセージ・データT1である。図5(b)に示す例では、メッセージ名は受信メッセージ1であり、タイプは受信であり、メッセージ内容のメッセージ構造は共通メッセージ構造であり、メッセージ・データはメッセージ・データR1である。図5(c)に示す例では、メッセージ名は送信メッセージ2であり、タイプは送信であり、メッセージ内容のメッセージ構造は共通メッセージ構造であり、メッセージ・データはメッセージ・データT2である。図5(d)に示す例では、メッセージ名は受信メッセージ2であり、タイプは受信であり、メッセージ内容のメッセージ構造は共通メッセージ構造であり、メッセージ・データはメッセージ・データR2である。
図6は、第1の実施形態に係る定義情報記憶部305が記憶するメッセージ定義情報の一例を示す概略図である。本図は、図5に示すメッセージ定義情報をXML形式で記述した例である。図示するように、メッセージ定義情報は、message要素で表現する。メッセージ名はname属性で示す。メッセージのタイプはtype属性で示す。メッセージ構造はstructure属性で示す。メッセージ・データはdata属性で示す。
図7は、第1の実施形態に係る定義情報記憶部305が記憶するメッセージ構造定義情報の一例を示す概略図である。図示するように、メッセージ構造定義情報は、メッセージの構造を定義する情報であり、メッセージ構造名と、メッセージ構造内容とを有するデータである。メッセージ構造名は、メッセージ構造の名称であり、メッセージ構造定義情報の識別情報である。メッセージ構造内容は、メッセージの構造であり、サイズと、タイプと、内容との各項目の列を有する行と列からなる2次元の表形式のデータである。サイズは、データのサイズであり、タイプは、データのタイプであり、内容は、データの内容である。定義情報記憶部305は、記憶しているメッセージ定義情報に記載された全てのメッセージ構造定義情報を記憶している。
図示する例では、メッセージ構造名は共通メッセージ構造である。また、メッセージ構造内容の1行目は、サイズが1であり、タイプが定数であり、内容が0x00である。また、2行目は、サイズが2であり、タイプが引数であり、内容がarg.DATA1である。また、3行目は、サイズが2であり、タイプが引数であり、内容がarg.DATA2である。また、4行目は、サイズが2であり、タイプが引数であり、内容がarg.DATA3である。また、5行目は、サイズが1であり、タイプが定数であり、内容が0xFFである。
図8は、第1の実施形態に係る定義情報記憶部305が記憶するメッセージ構造定義情報の一例を示す概略図である。本図は、図7に示すメッセージ構造定義情報をXML形式で記述した例である。図示するように、メッセージ構造定義情報は、message_structure要素で表現する。メッセージ構造名はname属性で示す。メッセージ構造の引数はargument属性で示す。ここで引数は、メッセージ定義情報で指定されたメッセージ・データ定義情報に定義されている。引数は、メッセージ・データ定義情報の中で定義されているデータと「arg.」という接頭語を利用して関連付ける。メッセージのデータはdata要素で表現する。data要素の並び順がそのままメッセージのデータの並び順となる。メッセージのデータのサイズはsize属性で示す。サイズにおける数字はオクテット数(バイト数)を意味する。メッセージのデータのタイプはtype属性で示し、例えば、定数はconst、引数はargumentで示す。メッセージのデータの内容はvalue属性で示す。内容は、タイプが定数である場合は数値を示し、タイプが引数である場合は接頭語に引数を意味する「arg.」を付加して、メッセージ・データ定義情報の中で定義されているデータのデータ名を示す。
図9は、第1の実施形態に係る定義情報記憶部305が記憶するメッセージ・データ定義情報の一例を示す概略図である。図示するように、メッセージ・データ定義情報は、メッセージにおけるデータを定義する情報であり、メッセージ・データ名と、メッセージ・データ内容とを有するデータである。メッセージ・データ名は、メッセージ・データの名称であり、メッセージ・データ定義情報の識別情報である。メッセージ・データ内容は、メッセージに格納されるデータの内容であり、データ名と、タイプと、データ内容と、データ型との各項目の列を有する行と列からなる2次元の表形式のデータである。データ名は、データの名称である。タイプはデータのタイプである。データ内容は、データの内容である。データ型は、データの型である。定義情報記憶部305は、記憶しているメッセージ定義情報に記載された全てのメッセージ・データ定義情報を記憶している。
図9(a)に示す例では、メッセージ・データ名はメッセージ・データT1である。また、メッセージ・データ内容の1行目は、データ名がDATA1であり、タイプがパラメータであり、データ内容がパラメータT11であり、データ型が16ビット整数である。2行目は、データ名がDATA2であり、タイプがパラメータであり、データ内容がパラメータT12であり、データ型が16ビット整数である。3行目は、データ名がDATA3であり、タイプがパラメータであり、データ内容がパラメータT13であり、データ型が16ビット整数である。図9(b)に示す例では、メッセージ・データ名はメッセージ・データR1である。また、メッセージ・データ内容の1行目は、データ名がDATA1であり、タイプが通知データであり、データ内容が体重であり、データ型が16ビット浮動小数点数である。2行目は、データ名がDATA2であり、タイプが通知データであり、データ内容が体脂肪率であり、データ型が16ビット浮動小数点数である。3行目は、データ名がDATA3であり、タイプが通知データであり、データ内容が骨格筋率であり、データ型が16ビット浮動小数点数である。
図9(c)に示す例では、メッセージ・データ名はメッセージ・データT2である。また、メッセージ・データ内容の1行目は、データ名がDATA1であり、タイプがパラメータであり、データ内容がパラメータT21であり、データ型が16ビット整数である。2行目は、データ名がDATA2であり、タイプがパラメータであり、データ内容がパラメータT22であり、データ型が16ビット整数である。3行目は、データ名がDATA3であり、タイプがパラメータであり、データ内容がパラメータT23であり、データ型が16ビット整数である。図9(d)に示す例では、メッセージ・データ名はメッセージ・データR2である。また、メッセージ・データ内容の1行目は、データ名がDATA1であり、タイプが通知データであり、データ内容が歩数であり、データ型が16ビット整数である。2行目は、データ名がDATA2であり、タイプが通知データであり、データ内容が消費カロリーであり、データ型が16ビット浮動小数点数である。3行目は、データ名がDATA3であり、タイプが通知データであり、データ内容が距離であり、データ型が16ビット浮動小数点数である。
図10は、第1の実施形態に係る定義情報記憶部305が記憶するメッセージ・データ定義情報の一例を示す概略図である。本図は、図9に示すメッセージ・データ定義情報をXML形式で記述した例である。図示するように、メッセージ・データ定義情報は、message_data要素で表現する。メッセージ・データ名はname属性で示す。メッセージ・データ内容のデータはdata要素で表現する。データのデータ名はname属性で示す。データのタイプはtype属性で示す。タイプ「パラメータ」はparameter、タイプ「通知データ」はnotificationで示す。なお、パラメータはデータ管理サーバ装置1からデータ受信を行うデータであり、通知データはデータ管理サーバ装置1へデータ送信を行うデータである。データのデータ内容はvalue属性で示す。情報処理装置3は、このデータ内容の名称を用いてデータ管理サーバ装置1とデータの送受信を行う。データのデータ型はdataType属性で示す。
次に、具体例を用いて、情報処理装置3におけるメッセージ処理方法について説明する。本例では、機器4に対応するシーケンス定義情報が「シーケンス1」である場合について説明する。まず、シーケンス実行部307は、シーケンス1のステップNo.0のステップを実行する。具体的には、シーケンス実行部307は、ステップNo.0に対応するステップ内容「送信メッセージ1」をメッセージ処理部308に出力する。
メッセージ処理部308は、送信メッセージ1のメッセージ定義情報を定義情報記憶部305から読み出す。続いて、メッセージ処理部308は、メッセージ定義情報「メッセージ1」に記載されているメッセージ・データ定義情報「メッセージ・データT1」を定義情報記憶部305から読み出す。続いて、メッセージ処理部308は、メッセージ・データ定義情報「メッセージ・データT1」においてタイプがパラメータであるデータ「パラメータT11」「パラメータT12」「パラメータT13」について、データ通信部310を介してデータ管理サーバ装置1に問い合わせをし、その値を受信する。
図11は、第1の実施形態に係るデータ管理サーバ装置1から受信するデータ値情報の一例を示す概略図である。図示するように、データ値情報は、データと、データの型と、データの値と、データの値(16進数)との項目を有する。データの型は、メッセージ・データ定義情報に定義されたデータ型である。データの値は、対応するデータの値である。データの値(16進数)は、データの値を16進数で示したものである。図示する例では、1行目は、データがパラメータT11であり、データの型が16ビット整数であり、データの値が1であり、データの値(16進数)が0x0001である。2行目は、データがパラメータT12であり、データの型が16ビット整数であり、データの値が256であり、データの値(16進数)が0x0100である。3行目は、データがパラメータT13であり、データの型が16ビット整数であり、データの値が21930であり、データの値(16進数)が0x55AAである。
次に、メッセージ処理部308は、メッセージ定義情報「送信メッセージ1」に記載されているメッセージ構造定義情報「共通メッセージ構造」を定義情報記憶部305から読み出す。続いて、メッセージ処理部308は、メッセージ構造定義情報「共通メッセージ構造」においてタイプが定数であるデータについては、その内容をメッセージに格納する。また、メッセージ処理部308は、メッセージ構造定義情報「共通メッセージ構造」においてタイプが引数となっているデータについては、その内容から引数であることを意味する文字列「arg.」を除いた名前と、データ名が一致するデータをメッセージ・データ定義情報「メッセージ・データT1」から検索する。そして、メッセージ処理部308は、検索したデータのタイプがパラメータである場合には、データ管理サーバ装置1から受信したデータの値をメッセージに格納する。このように、メッセージ処理部308は、メッセージ「送信メッセージ1」を生成する。
図12は、第1の実施形態に係るメッセージ処理部308が生成する送信メッセージの一例を示す概略図である。図示するように、送信メッセージ1には、位置「+0」に定数「00」が格納されており、位置「+1」「+2」にパラメータT11の値「01」「00」が格納されており、位置「+3」「+4」にパラメータT12の値「00」「01」が格納されており、位置「+5」「+6」にパラメータT13の値「AA」「55」が格納されており、位置「+7」に定数「FF」が格納されている。なお、メッセージ処理部308は、メッセージ構造定義情報におけるサイズが2以上であるデータに対しては、データの下位バイトからデータ変換処理を行うリトルエンディアンの方法を使用する。
メッセージ処理部308は、送信メッセージ1のタイプが送信であるため、生成した送信メッセージ1をメッセージ通信部309に出力する。メッセージ通信部309は、入力された送信メッセージ1を機器4に送信する。
続いて、シーケンス実行部307は、シーケンス定義情報「シーケンス1」のステップNo.0の次ステップであるステップNo.1のステップを実行する。具体的には、シーケンス実行部307は、ステップNo.1に対応するステップ内容「受信メッセージ1」をメッセージ処理部308に出力する。メッセージ通信部309は、機器4からメッセージを受信する。
図13は、第1の実施形態に係る機器4から受信する受信メッセージの一例を示す概略図である。受信メッセージ1には、位置「+0」に定数「00」が格納されており、位置「+1」「+2」に「CF」「F2」が格納されており、位置「+3」「+4」に「C9」「F0」が格納されており、位置「+5」「+6」に「49」「F1」が格納されており、位置「+7」に定数「FF」が格納されている。
メッセージ処理部308は、受信メッセージ1のメッセージ定義情報を定義情報記憶部305から読み出す。続いて、メッセージ処理部308は、メッセージ定義情報「受信メッセージ1」に記載されているメッセージ構造定義情報「共通メッセージ構造」とメッセージ・データ定義情報「メッセージ・データR1」とを定義情報記憶部305から読み出す。続いて、メッセージ処理部308は、メッセージ構造定義情報「共通メッセージ構造」においてタイプが定数であるデータについては、その内容とメッセージのデータが一致していることを確認する。また、メッセージ処理部308は、メッセージ構造定義情報「共通メッセージ構造」においてタイプが引数であるデータについては、まず、そのサイズ分のデータを受信メッセージ1から抽出する。続いて、メッセージ処理部308は、その内容から引数であることを意味する文字列「arg.」を除いた名前と、データ名が一致するデータをメッセージ・データ定義情報「メッセージ・データR1」から検索する。そして、メッセージ処理部308は、検索したデータのタイプが通知データである場合には、抽出したデータをそのデータ内容に対応するデータとする。そして、メッセージ処理部308は、抽出したデータとデータ内容とを対応付けて、データ管理サーバ装置1に送信する送信データを生成する。
図14は、第1の実施形態に係るデータ管理サーバ装置1に送信する送信データの一例を示す概略図である。図示するように、送信データは、データと、データの型と、データの値(16進数)と、データの値との各項目を有する。本例では、送信データの1行目は、データが体重であり、データの型が16ビット浮動小数点数であり、データの値(16進数)が0xF2CFであり、データの値が71.9である。2行目は、データが体脂肪率であり、データの型が16ビット浮動小数点数であり、データの値(16進数)が0xF0C9であり、データの値が20.1である。3行目は、データが骨格筋率であり、データの型が16ビット浮動小数点数であり、データの値(16進数)が0xF149であり、データの値が32.9である。
メッセージ処理部208は、メッセージ・データ定義「メッセージ・データR1」のデータ型をもとにデータの型を決定する。また、メッセージ処理部308は、メッセージ構造定義情報におけるサイズが2以上であるデータに対しては、データの下位バイトからデータ変換処理を行うリトルエンディアンの方法を使用する。また、16ビット浮動小数点数のフォーマットは、順に、基数10の指数部4ビット(2の補数)、仮数部12ビット(2の補数)から構成されるものとする。
例えば、メッセージ処理部308は、体重のデータの型が16ビット浮動小数点数、サイズが2であることから、受信メッセージにおける体重を表すバイト列CF、F2から0xF2CFと変換し、指数部を0xF=−1、仮数部を0x2CF=719と算出する。そして、メッセージ処理部308は、算出した0xF=−1、0x2CF=719から719×10−1=71.9と変換することで体重を表すデータ情報のデータ変換を行う。そして、送信データのデータ「体重」に対応するデータの値にデータ変換した71.9を格納する。同様に、メッセージ処理部308は、体脂肪率、骨格筋率のデータ情報をデータ変換する。
そして、メッセージ処理部308は、生成した送信データをデータ通信部310に出力する。データ通信部310は、入力された送信データをデータ管理サーバ装置1に送信する。シーケンス実行部307は、シーケンス定義情報「シーケンス1」のステップNo.1の次ステップがendであるため、シーケンス終了と判定し、処理を終了する。
図15は、第1の実施形態に係る変換処理部30のメッセージ処理の一例を示すフローチャートである。
ステップST101において、ペアリング部301は、広告(advertising)している機器4を検出し、当該機器4と接続し、初めて通信接続される機器4か否かを判定する。機器4が初めて通信接続される場合、ステップST102に進む。一方、初めて通信接続される機器4ではない場合、ステップST105に進む。
ステップST102において、ペアリング部301は、機器4と通信情報を交換し、通信接続を確立する(ペアリング実行)。
ステップST103において、ペアリング部301は、通信接続された機器4が提供するサービスを検索し、当該サービスに含まれる機器情報を提供するサービスに対してデータ要求を行い、機器4から機器情報を取得する。
なお、本実施形態では、情報処理装置3は、ステップST102及びST103において、ペアリングを行い、接続を確立した上で機器情報を取得しているが、これに限らず、ペアリングを行わない機器4と通信する場合には、ペアリングを行わずに接続を確立して機器情報を取得するようにしてもよい。或いは、情報処理装置3は、例えば、機器4の広告に機器情報が含まれる場合等、接続を確立せずとも機器情報を取得することができる場合は、接続を確立せずに取得した機器情報を利用してもよい。
ステップST104において、ペアリング部301は、取得した機器情報を機器情報記憶部302に記憶させ、ステップST106に進む。
ステップST105において、機器特定部303は、機器情報記憶部302から機器情報を読み出し、ステップST106に進む。
ステップST106において、機器特定部303は、機器情報に含まれるメーカー名と型番とUUIDとから機器特定情報を生成する。
ステップST107において、機器特定部303は、機器特定情報に対応する定義情報が定義情報記憶部305に記憶されているか否かを判定する。定義情報が記憶されている場合、ステップST110に進む。一方、定義情報が記憶されていない場合、ステップST108に進む。
ステップST108において、定義情報取得部304は、機器特定部303が生成した機器特定情報に基づいて定義情報サーバ装置2に問い合わせを送信し、当該問い合わせに対する応答として当該機器特定情報に対応する定義情報を取得する。
ステップST109において、定義情報取得部304は、機器特定部303が生成した機器特定情報と取得した定義情報とを対応付けて定義情報記憶部305に記憶させ、ステップST111に進む。
ステップST110において、シーケンス調整部306は、機器特定部303が生成した機器特定情報に対応する定義情報を定義情報記憶部305から読み出し、ステップST111に進む。
なお、情報処理装置3が機器4と接続を開始して(ステップST101)から、定義情報サーバ装置2から定義情報を取得し(ステップST108)、取得した定義情報を記憶する(ステップST109)までに時間がかかることがある。この場合、機器4によっては、接続タイムアウトが発生し、確立した接続が切断されてしまうことがある。このような場合には、情報処理装置3は、定義情報が利用可能になった段階(ステップST109又はST110)で機器4と再接続して処理を継続する。
ステップST111において、シーケンス調整部306が、複数のシーケンス定義情報から最適なシーケンス定義情報を1つ選択する。具体的には、シーケンス調整部306は、機器特定部303が生成した機器特定情報に対応するシーケンス定義情報を定義情報記憶部305から読み出し、読み出したシーケンス定義情報に関する問い合わせをデータ管理サーバ装置1に送信する。続いて、シーケンス調整部306は、当該問い合わせに対する応答に基づいて、これまでのデータのやり取りの状態等を材料にシーケンス定義情報の評価を行い、最適なシーケンス定義情報を選択する。なお、シーケンス調整部306は、シーケンス定義情報が1つである場合には、データ管理サーバ装置1にアクセスせず、当該シーケンス定義情報を選択する。
ステップST112において、シーケンス実行部307は、シーケンス調整部306が選択した最適なシーケンス定義情報に従ってシーケンスを開始する。具体的にはシーケンス定義情報の最初のステップに進む。
ステップST113において、シーケンス実行部307は、現在のステップの内容に基づいて、シーケンスを終了するか否かを判定する。具体的には、シーケンス実行部307は、実行の完了したステップの次ステップがendである場合に、シーケンスを終了すると判定する。シーケンスを終了する場合は、ステップST114に進む。一方、シーケンスを終了しない場合は、ステップST115に進む。
ステップST114において、シーケンス実行部307は、シーケンスを終了して、処理を終了する。
ステップST115において、シーケンス実行部307は、現在のステップ種類に基づいて、メッセージが受信であるか送信であるかを判定する。具体的には、シーケンス実行部307は、種類が受信メッセージである場合には受信と判定し、種類が送信メッセージである場合には送信と判定する。メッセージが受信である場合は、ステップST116に進む。一方、メッセージが送信である場合は、ステップST120に進む。
ステップST116において、メッセージ通信部309は、機器4から送信されるメッセージを受信し、受信したメッセージをメッセージ処理部308に出力する。なお、当該メッセージには、例えば、数値や日付、時刻、文字列等の値を示すデータが格納されている。
ステップST117において、メッセージ処理部308は、シーケンス実行部307から現在のステップのステップ内容を取得し、ステップ内容に記載されているメッセージ定義情報を定義情報記憶部305から読み出す。続いて、メッセージ処理部308は、読み出したメッセージ定義情報に記載されているメッセージ構造定義情報に基づいて、メッセージの構造を特定する。続いて、メッセージ処理部308は、読み出したメッセージ定義情報に記載されているメッセージ・データ定義情報に基づいて、特定した構造に合わせて、メッセージに格納されているデータを特定し、メッセージの中からデータを抽出して送信データを生成する。そして、メッセージ処理部308は、生成した送信データをデータ通信部310に出力する。
ステップST118において、データ通信部310は、データ管理サーバ装置1にアクセスし、送信データを送信する。
ステップST119において、シーケンス実行部307は、シーケンス定義情報の次ステップに進み、ステップST113に戻る。
ステップST120において、メッセージ処理部308は、シーケンス実行部307から現在のステップのステップ内容を取得し、ステップ内容に記載されているメッセージ定義情報を定義情報記憶部305から読み出す。続いて、メッセージ処理部308は、読み出したメッセージ定義情報に記載されているメッセージ・データ定義情報に基づいて、機器4に送信するメッセージに格納するデータを特定する。続いて、メッセージ処理部308は、特定したデータの値をデータ通信部310に要求する。データ通信部310は、データ管理サーバ装置1にアクセスし、メッセージ処理部308から要求されたデータの値を受信する。続いて、データ通信部310は、受信したデータの値をメッセージ処理部308に出力する。
なお、本実施形態では、メッセージ処理部308は、データ管理サーバ装置1からデータの値を取得しているが、これに限らず、データ管理サーバ装置1の代わりに、変換処理部30に予めインストールされたデータ管理用のアプリケーションからデータの値を取得してもよい。この場合、ネットワークを経由したデータ受信の必要が無くなるため、処理時間を短縮することができ、消費電力を削減ですることができる。また、第2通信部33が一時的に通信不可能になった場合であっても、データ管理用のアプリケーションからのデータ受信は可能である。また、ユーザは、入力部32からデータ管理用のアプリケーションへデータの値を入力することができる。
ステップST121において、メッセージ処理部308は、読み出したメッセージ定義情報に記載されているメッセージ構造定義情報に基づいて、メッセージの構造を特定する。続いて、メッセージ処理部308は、読み出したメッセージ定義情報に記載されているメッセージ・データ定義情報に基づいて、特定した構造に合わせてデータ通信部310から入力されたデータの値を格納してメッセージを生成する。続いて、メッセージ処理部308は、生成したメッセージをメッセージ通信部309に出力する。
ステップST122において、メッセージ通信部309は、入力されたメッセージを機器4に送信する。その後、ステップST119に進む。
このように、本実施形態によれば、情報処理装置3は、機器(機器4)と通信接続される情報処理装置3であって、機器(機器4)に関する情報を取得する機器情報取得部(ペアリング部301)と、機器情報取得部(ペアリング部301)が機器(機器4)に関する情報に基づいて機器(機器4)を特定する機器特定部303と、メッセージの構造を定義するメッセージ構造定義情報と、メッセージに格納されるデータを定義するメッセージ・データ定義情報と、メッセージ構造定義情報及びメッセージ・データ定義情報を指定してメッセージを定義するメッセージ定義情報とを記憶し、メッセージ定義情報を指定して通信に関するシーケンスを定義するシーケンス定義情報を機器(機器4)毎に記憶する定義情報記憶部305と、機器特定部303が特定した機器(機器4)に応じたシーケンス定義情報を定義情報記憶部305から読み出し、読み出した前記シーケンス定義情報に定義されたシーケンスを実行するシーケンス実行部307と、シーケンス実行部307が実行するシーケンスの各ステップにおけるメッセージを、メッセージ定義情報が指定するメッセージ構造定義情報及びメッセージ・データ定義情報に基づいて処理するメッセージ処理部308と、メッセージ処理部308が処理するメッセージを機器(機器4)と送受信するメッセージ通信部309と、を備える。
これにより、情報処理装置3は、メッセージの構造が異なる複数の機器から転送されるデータを管理する場合であって、それぞれの機器が非常に多くのメッセージを有する場合であっても、メッセージの構造を抽象化したメッセージ構造定義情報を定義することができ、メッセージ構造と分離してメッセージに格納される(する)データ(メッセージ・データ定義情報)を定義することができるため、定義情報のファイルサイズを小さくすることができる。すなわち、定義情報を記憶するためのメモリ容量を少なくすることができる。また、新たな機器のデータ管理が必要になった場合であっても、機器の種類に対応した定義情報により新たなメッセージに対応できるため、情報処理装置3のプログラムを修正する必要がない。
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。第2の実施形態における情報処理システムS1の構成及び情報処理装置3の構成は、図1、図2に示す第1の実施形態における構成と同様であるため、その説明を省略する。本実施形態では、複数のメッセージの構造が大きく異なる場合であっても、定義情報のファイルサイズが膨大になることを防ぐために、メッセージ構造定義情報は条件分岐により各メッセージの構造を抽象化して定義している。本実施形態によるメッセージ処理部308は、メッセージ構造定義情報において定義される構造のうち、メッセージ・データ定義情報に合致する条件の構造を、処理するメッセージの構造とする。
図16は、第2の実施形態に係る定義情報記憶部305が記憶するメッセージ構造定義情報の一例を示す概略図である。本図は、メッセージ定義情報をXML形式で記述した例である。図示するように、if要素で条件分岐を表現する。また、test属性で条件式を示す。メッセージ処理部308は、条件式を満たす場合、if要素の内容が有効であると判定する。本例では、メッセージ処理部308は、メッセージ・データ定義情報で定義されているデータ名「message_type」のデータ内容が0である場合、if要素の内容が有効であると判定する。また、for_loop要素で繰り返しを表現する。init属性で初期化処理、condition属性でループの継続条件、inc属性でカウンタ変数の更新処理を、それぞれ示す。メッセージ処理部308は、ループの継続条件を満たす限り、カウンタ変数を更新しながらfor_loop要素の内容を繰り返す。本例では、メッセージ処理部308は、カウンタ変数Iを1,2,3と更新しながら3回、for_loop要素の内容を繰り返す。また、else要素で条件分岐(条件式が偽の場合)を表現する。メッセージ処理部308は、直前のif要素で条件式を満たさない場合、else要素の内容が有効であると判定する。本例では、メッセージ処理部308は、メッセージ・データ定義情報で定義されているデータ名「message_type」のデータ内容が0以外である場合、else要素の内容が有効であると判定する。他の構成要素は第1の実施形態と同様であるため、その説明を省略する。
図17は、第2の実施形態に係る定義情報記憶部305が記憶するメッセージ・データ定義情報の一例を示す概略図である。本図は、メッセージ・データ定義情報をXML形式で記述した例である。図示するように、各メッセージ・データ定義情報には、メッセージ構造定義情報で指定される条件に係るデータ名「message_type」のデータが定義されている。他の構成要素は、第1の実施形態と同様であるため、その説明を省略する。
図示する例では、メッセージ・データ名「メッセージ・データT3」のメッセージ・データ内容の1行目は、データ名(name)がmessage_typeであり、タイプ(type)は定数(const)であり、データ内容(value)が0であり、データ型(dataType)がなしである。2行目は、データ名がDATA[1]であり、タイプがパラメータ(parameter)であり、データ内容がパラメータT31であり、データ型が16ビット整数である。3行目は、データ名がDATA[2]であり、タイプがパラメータであり、データ内容がパラメータT32であり、データ型が16ビット整数である。4行目は、データ名がDATA[3]であり、タイプがパラメータであり、データ内容がパラメータT33であり、データ型が16ビット整数である。メッセージ・データ名「メッセージ・データR3」のメッセージ・データ内容の1行目は、データ名がmessage_typeであり、タイプは定数であり、データ内容が0であり、データ型がなしである。2行目は、データ名がDATA[1]であり、タイプが通知データ(notification)であり、データ内容が通知データ31であり、データ型が16ビット浮動小数点数である。3行目は、データ名がDATA[2]であり、タイプが通知データであり、データ内容が通知データ32であり、データ型が16ビット浮動小数点数である。4行目は、データ名がDATA[3]であり、タイプが通知データであり、データ内容が通知データ33であり、データ型が16ビット浮動小数点数である。
メッセージ・データ名「メッセージ・データT4」のメッセージ・データ内容の1行目は、データ名がmessage_typeであり、タイプは定数であり、データ内容が1であり、データ型がなしである。2行目は、データ名がDATA[1]であり、タイプがパラメータであり、データ内容がパラメータT41であり、データ型が32ビット整数である。3行目は、データ名がDATA[2]であり、タイプがパラメータであり、データ内容がパラメータT42であり、データ型が32ビット整数である。メッセージ・データ名「メッセージ・データR4」のメッセージ・データ内容の1行目は、データ名がmessage_typeであり、タイプは定数であり、データ内容が1であり、データ型がなしである。2行目は、データ名がDATA[1]であり、タイプが通知データであり、データ内容が通知データ41であり、データ型が32ビット浮動小数点数である。3行目は、データ名がDATA[2]であり、タイプが通知データであり、データ内容が通知データ42であり、データ型が32ビット浮動小数点数である。
図18は、第2の実施形態に係るメッセージ処理部308が処理するメッセージの一例を示す概略図である。本図に示す例は、図16に示すメッセージ構造定義情報と図17に示すメッセージ・データ定義情報とに基づいて定義されるメッセージの一例である。図18(a)に示す送信メッセージ3は、メッセージ構造定義情報「共通メッセージ構造2」とメッセージ・データ定義情報「メッセージ・データT3」とに基づくメッセージである。送信メッセージ3には、位置「+0」に定数「00」が格納されており、位置「+1」「+2」にパラメータT31の値が格納されており、位置「+3」「+4」にパラメータT32の値が格納されており、位置「+5」「+6」にパラメータT33の値が格納されており、位置「+7」に定数「FF」が格納されている。図18(b)に示す受信メッセージ3は、メッセージ構造定義情報「共通メッセージ構造2」とメッセージ・データ定義情報「メッセージ・データR3」とに基づくメッセージである。受信メッセージ3には、位置「+0」に定数「00」が格納されており、位置「+1」「+2」に通知データ31の値が格納されており、位置「+3」「+4」に通知データ32の値が格納されており、位置「+5」「+6」に通知データ33の値が格納されており、位置「+7」に定数「FF」が格納されている。
図18(c)に示す送信メッセージ4は、メッセージ構造定義情報「共通メッセージ構造2」とメッセージ・データ定義情報「メッセージ・データT4」とに基づくメッセージである。送信メッセージ4には、位置「+0」に定数「FF」が格納されており、位置「+1」に定数「FF」が格納されており、位置「+2」〜「+5」にパラメータT41の値が格納されており、位置「+6」〜「+9」にパラメータT42の値が格納されており、位置「+10」に定数「00」が格納されており、位置「+11」に定数「00」が格納されている。図18(d)に示す受信メッセージ4は、メッセージ構造定義情報「共通メッセージ構造2」とメッセージ・データ定義情報「メッセージ・データR4」とに基づくメッセージである。受信メッセージ4には、位置「+0」に定数「FF」が格納されており、位置「+1」に定数「FF」が格納されており、位置「+2」〜「+5」に通知データ41の値が格納されており、位置「+6」〜「+9」に通知データ42の値が格納されており、位置「+10」に定数「00」が格納されており、位置「+11」に定数「00」が格納されている。
このように、メッセージ構造定義情報において、if要素、else要素、for_loop要素の組み合わせでメッセージの構造を定義することにより、さらに複雑で異なるメッセージの構造を定義することが可能になる。
なお、本実施形態では、メッセージ構造定義情報において、if要素及びelse要素で条件分岐を表現しているが、これに限らず、他の要素により、条件分岐を表現してもよい。図19は、第2の実施形態に係る定義情報記憶部305が記憶するメッセージ構造定義情報の他の例を示す概略図である。本図に示す例では、switch要素で条件分岐を表現する。case要素のvalue属性で、switch要素の制御式の評価結果と比較する値を示す。メッセージ処理部308は、valueの値が制御式の評価結果と一致する場合、case要素の内容が有効と判定する。本例では、メッセージ処理部308は、メッセージ・データ定義情報で定義されているデータ名「message_type」のデータ内容が0である場合、case要素の内容が有効であると判定する。また、default要素でswitch要素に含まれる全てのcase要素が有効にならなかった場合の条件分岐を表現する。本例では、メッセージ処理部308は、メッセージ・データ定義情報で定義されているデータ名「message_type」ののデータ内容が0以外である場合、default要素の内容が有効であると判定する。他の構成要素は、図16に示すメッセージ構造定義情報と同様であるため、その説明を省略する。
図20は、第2の実施形態に係る定義情報記憶部305が記憶するメッセージ構造定義情報の他の例を示す概略図である。本図に示す例では、data要素のcondition属性でデータを有効とする条件式を示す。本例では、data要素にcondition属性を追加し、データ毎に有効又は無効を切り替える仕組みを取り入れている。具体的には、data要素のcondition属性でデータを有効とする条件式を示す。メッセージ処理部308は、条件式が「arg.message_type==0」である場合には、メッセージ・データ定義情報で定義されているデータ名「message_type」のデータ内容が0であるときに、そのdata要素が有効であると判定する。また、メッセージ処理部308は、条件式が「arg.message_type!=0」である場合には、メッセージ・データ定義情報で定義されているデータ名「message_type」のデータ内容が0以外であるときに、そのdata要素が有効であると判定する。他の構成要素は、図16に示すメッセージ構造定義情報と同様であるため、その説明を省略する。
このように、本実施形態によれば、情報処理装置3は、第1の実施形態における構成に加えて、メッセージ構造定義情報は、条件分岐により各メッセージの構造を定義し、メッセージ処理部308は、メッセージ構造定義情報において定義される構造のうち、メッセージ・データ定義情報に合致する条件の構造を、処理するメッセージの構造とする。これにより、情報処理装置3は、第1の実施形態における効果に加えて、複数あるメッセージの構造が複雑でより大きく異なる場合であっても、メッセージの構造を抽象化したメッセージ構造定義情報を定義することができ、メッセージ構造と分離してメッセージに格納される(する)データ(メッセージ・データ定義情報)を定義することができるため、定義情報のファイルサイズをより小さくすることができる。
なお、上述した実施形態における情報処理装置3の一部、例えば、変換処理部30をコンピュータで実現するようにしても良い。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピュータシステム」とは、情報処理装置3に内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
例えば、上述した実施形態では、情報処理装置3は、ネットワークを介して定義情報サーバ装置2から定義情報を取得しているが、これに限らず、情報処理装置3に接続可能な記憶媒体に定義情報を記憶しておき、当該記憶された定義情報を利用してもよい。記憶媒体は、例えば、光磁気ディスク、フレキシブルディスク、フラッシュメモリなどの可搬記憶媒体である。或いは、機器4に張り付けられたQR(Quick Response)コード(登録商標)やRFID(Radio Frequency IDentification)に定義情報を格納してもよい。この場合、情報処理装置3は、QRコード(登録商標)またはRFIDから定義情報を読み取り、読み取った定義情報を利用する。
また、上述した実施形態では、第1通信部35の通信をブルートゥースとしたが、これに限らず、例えば、シリアル(例えば、UART(Universal Asynchronous Receiver Transmitter))やUSBなどの有線通信や、赤外線や無線LANなどの無線通信であってもよい。
(1)機器と通信接続される情報処理装置であって、機器に関する情報を取得する機器情報取得部と、機器情報取得部が取得した機器に関する情報に基づいて機器を特定する機器特定部と、メッセージの構造を定義するメッセージ構造定義情報と、メッセージに格納されるデータを定義するメッセージ・データ定義情報と、メッセージ構造定義情報及びメッセージ・データ定義情報を指定してメッセージを定義するメッセージ定義情報とを記憶し、メッセージ定義情報を指定して通信に関するシーケンスを定義するシーケンス定義情報を機器毎に記憶する定義情報記憶部と、機器特定部が特定した前記機器に応じたシーケンス定義情報を定義情報記憶部から読み出し、読み出した前記シーケンス定義情報に定義されたシーケンスを実行するシーケンス実行部と、シーケンス実行部が実行するシーケンスの各ステップにおけるメッセージを、メッセージ定義情報が指定するメッセージ構造定義情報及びメッセージ・データ定義情報に基づいて処理するメッセージ処理部と、メッセージ処理部が処理するメッセージを機器と送受信するメッセージ通信部と、を備えることを特徴とする情報処理装置。
(2)メッセージ構造定義情報は、メッセージ構造定義情報において定義される構造のうち、メッセージ・データ定義情報に合致する条件の構造を、処理するメッセージの構造とすることを特徴とする(1)に記載の情報処理装置。
(3)機器と通信接続される情報処理装置とを備える情報処理システムであって、
機器は、機器に関する情報を送信し、情報処理装置は、機器に関する情報に基づいて機器を特定する機器特定部と、メッセージの構造を定義するメッセージ構造定義情報と、メッセージに格納されるデータを定義するメッセージ・データ定義情報と、メッセージ構造定義情報及びメッセージ・データ定義情報を指定してメッセージを定義するメッセージ定義情報とを記憶し、メッセージ定義情報を指定して通信に関するシーケンスを定義するシーケンス定義情報を前記機器毎に記憶する定義情報記憶部と、前記機器特定部が特定した前記機器に応じたシーケンス定義情報を前記定義情報記憶部から読み出し、読み出した前記シーケンス定義情報に定義されたシーケンスを実行するシーケンス実行部と、シーケンス実行部が実行するシーケンスの各ステップにおけるメッセージを、メッセージ定義情報が指定するメッセージ構造定義情報及びメッセージ・データ定義情報に基づいて処理するメッセージ処理部と、メッセージ処理部が処理するメッセージを機器と送受信するメッセージ通信部と、を備えることを特徴とする情報処理システム。
(4)機器と通信接続される情報処理装置における情報処理方法であって、機器に関する情報を取得する機器情報取得過程と、機器情報取得過程が取得した機器に関する情報に基づいて機器を特定する機器特定過程と、メッセージの構造を定義するメッセージ構造定義情報と、メッセージに格納されるデータを定義するメッセージ・データ定義情報と、メッセージ構造定義情報及びメッセージ・データ定義情報を指定してメッセージを定義するメッセージ定義情報とを記憶し、メッセージ定義情報を指定して通信に関するシーケンスを定義するシーケンス定義情報を機器毎に記憶する定義情報記憶部から、機器特定過程が特定し記機器に応じたシーケンス定義情報を読み出し、読み出したシーケンス定義情報に定義されたシーケンスを実行するシーケンス実行過程と、シーケンス実行過程が実行するシーケンスの各ステップにおけるメッセージを、メッセージ定義情報が指定するメッセージ構造定義情報及びメッセージ・データ定義情報に基づいて処理するメッセージ処理過程と、メッセージ処理過程が処理するメッセージを機器と送受信するメッセージ通信過程と、を有することを特徴とする情報処理方法。
(5)機器と通信接続される情報処理装置のコンピュータに、機器に関する情報を取得する機器情報取得ステップと、機器情報取得ステップが取得した機器に関する情報に基づいて機器を特定する機器特定ステップと、メッセージの構造を定義するメッセージ構造定義情報と、メッセージに格納されるデータを定義するメッセージ・データ定義情報と、メッセージ構造定義情報及びメッセージ・データ定義情報を指定してメッセージを定義するメッセージ定義情報とを記憶し、メッセージ定義情報を指定して通信に関するシーケンスを定義するシーケンス定義情報を機器毎に記憶する定義情報記憶部から、機器特定ステップが特定した機器に応じたシーケンス定義情報を読み出し、読み出したシーケンス定義情報に定義されたシーケンスを実行するシーケンス実行ステップと、シーケンス実行ステップが実行するシーケンスの各ステップにおけるメッセージを、メッセージ定義情報が指定するメッセージ構造定義情報及びメッセージ・データ定義情報に基づいて処理するメッセージ処理ステップと、メッセージ処理ステップが処理するメッセージを機器と送受信するメッセージ通信ステップと、を実行させるための情報処理プログラム。