LoginSignup
4

More than 5 years have passed since last update.

QiMessaging Javascript (qiSDK js bindings) を読む

Last updated at Posted at 2016-11-30

はじめに

QiMessaging Javascript とは?

この記事は?

  • そんなライブラリのソースコードを読んで、シーケンス図・やり取りされるデータの内容等を簡単にまとめています。ライブラリ自体は 151 行しかありません。
bash
$ wc -l libs/qi/2/qi.js
     151 libs/qi/2/qi.js

シーケンス図

図について

  • 大まかな流れが分かれば良いと思っているので、結構大雑把です。
  • また、Promise について、UML ではどう書いたら良いのかを知らないので、何となく読めれば良いか、くらいの適当な感じで書いてます。

内容について

  • 大きく「セッション作成」(create session)、「モジュールのオブジェクト取得」(create module object)、「モジュールのメソッド呼び出し」(call method)部分に分けて書いています。

libqi-js.png

データ

  • js - NAOqi 間のデータ送受信は Socket.IO (v0.9.11) が使われています。

js -> NAOqi

  • "call" イベントとして、以下のような形式のデータを送信します。
{
  "idm": IDM(int),
  {
    "obj": OBJ(string),
    "member": MEMBER(string),
    "args": [
      ...
    ]
}
  • idm: セッション内のオブジェクトを識別するための ID
  • obj: モジュール名
  • member: メソッド名
  • args: メソッドの引数

NAOqi -> js

  • "reply" イベントで以下のような形式のデータを受信します。
{
  "idm": IDM(int),
  "result": {
    "pyobject": PYOBJECT(string),
    "metaobject": {
      "methods": [
        { "name": NAME(string) }, 
        ...
      ],
      "signals": [
        { "name": NAME(string) }, 
        ...
      ],
      "properties": [
        { "name": NAME(string) }, 
        ...
      ]
    }
  }
}
  • idm: セッション内のオブジェクトを識別するための ID
  • result: リクエスト結果
  • pyobject:
  • metaobject: モジュール情報
  • methods: メソッド一覧
  • signals: シグナル一覧?
  • properties: プロパティ一覧?

感想

  • Socket.IO でデータをやり取りするだけのようですね。
  • Socket.IO (v0.9.11) というのが残念なところです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4