Kii Cloud SDK for Thing の機能概要

本ページでは Kii Cloud SDK で Thing を取り扱う際の基本的な概念を説明します。

Thing とオーナー

Kii Cloud で Thing を扱う場合は、Thing をサーバー上で定義し、その所有者と紐付ける必要があります。

Thing を操作できるオーナーとの関係を定義する操作やその目的は、Thing Interaction Framework の 初期登録 と同じです。

初期化の際は、以下に示す 3 つの手順が必要ですが、使用する SDK によって API が異なります。

  • Thing-IF SDK と Kii Cloud SDK for Thing の機能を併用する場合

    まず、Kii Cloud SDK の ユーザー管理機能 または グループ管理機能 によって、オーナーとなるユーザーやグループを作成します(:num1:)。

    次に、Thing-IF SDK の初期登録 API を呼び出して初期登録を行います。API の内部では、Thing の作成を行い(:num2:)、指定されたユーザーまたはグループとの間でオーナー関係を構築します(:num3:)。

    初期登録の完了後、Kii Cloud SDK for Thing の機能を使用したい場合は、 Thing-IF SDK の API を使って作成済みの Thing の ID やアクセストークンを取得し、それらを使って Kii Cloud SDK for Thing の API を呼び出します。

  • Kii Cloud SDK for Thing の機能だけを使用する場合

    まず、Kii Coud SDK の ユーザー管理機能 または グループ管理機能 によって、オーナーとなるユーザーやグループを作成します(:num1:)。

    次に、Kii Cloud SDK for Thing の API を呼び出して、Thing を作成します(:num2:)。作成した Thing からは thingID を取得できます。詳細は本セクションの Thing 管理 で説明します。

    次に、Kii Cloud SDK for Thing の API を呼び出して、オーナー登録を行います(:num3:)。ここでは、ユーザーと Thing をそれぞれ指定して紐付けます。詳細は本セクションの Thing オーナー管理 で説明します。

    なお、Thing-IF SDK の初期登録では内部処理用の Bucket なども初期化しているため、この方法で Thing を初期化した場合は、Thing-IF SDK の API を実行できません。

Thing の識別子

Kii Cloud 内で Thing を扱う際は、Thing のそれぞれを vendorThingID と thingID という 2 種類の ID によって識別します。これらは Thing-IF SDK の Thing の識別子 に示した概念と同じです。

2 つの SDK を併用する場合、Thing-IF SDK で構築した Thing を、Kii Cloud SDK for Thing から ID で参照して使用します。

thingID を使用する際は、Thing-IF SDK と Kii Cloud SDK for Thing での形式の違いにご注意ください。下記の図のように、Kii Cloud SDK for Thing では型情報を除いた文字列を指定します。

ユーザーやグループ、KiiObject などと異なり、クライアント SDK では Thing に対応する URI は存在しません。URL の詳細は、「オブジェクトの ID と URI」(AndroidiOSJavaScript)を参照してください。

Thing スコープ

Kii Cloud は、登録された Thing に対して専用の Thing スコープを作成します。このスコープ内には、Bucket、KiiObject、トピック などを作成できます。Thing スコープは、他のスコープと同様の振る舞いをします(他のスコープの詳細は スコープとアクセス権 および ユーザープッシュ通知 (Push to User) を参照してください)。

Thing スコープと他のスコープの関係は以下の図のとおりです。

図のように、アプリケーションは複数の Thing を持つことができます。この場合、それぞれの Thing は互いに独立したスコープを持ちます。

Thing を作成した直後のオーナー登録を行う前の状態では、Thing スコープは対象 Thing に閉じた状態です。スコープ内の Bucket や KiiObject に対してアクセス可能なのはこの Thing(と管理者)のみとなります。このように Kii Cloud は Thing が生成したデータを、他の Thing やユーザーがアクセスできないような状態で保存します。

Thing オーナー

ユースケースによっては、ある Thing が生成したデータを複数のユーザーやグループで共有したい場合があります。このような場合は、共有相手であるユーザーやグループを Thing のオーナーにすることができます。オーナーになったユーザーやグループは、以後 Thing スコープ内の Bucket や KiiObject にアクセスできるようになります。

Thing オーナーの追加は、ユーザーもしくはグループ単位で行います。グループを追加した場合は、このグループのメンバー全員が Thing オーナーになります。ある Thing は複数のオーナーを持つことができます。前出の図を例に取ると、中央に位置する Thing は中央のグループをオーナーとしています。同様に右に位置する Thing は、右のグループとユーザーを同時にオーナーとしています。

新たに Thing オーナーを追加する方法として、Kii Cloud は 2 種類のフローを用意しています。開発者は、実現するサービスや利用する Thing の機能に応じて適切なフローを選択できます。詳しくは Thing オーナー管理 をご参照ください。

Thing オーナーになったユーザーは、Thing に対して以下のアクションを行えます。

  • Thing スコープへのフルアクセス

    Thing オーナーは、スコープ内の Bucket を作成・削除したり、Bucket 内の KiiObject を作成・更新・削除・検索したりできます。詳しくは データ管理 をご覧ください。

    さらに、Thing スコープのトピックを講読したり、メッセージを送信したりできます。詳しくは プッシュ通知 をご覧ください。

  • Thing の管理

    Thing オーナーは、Thing 情報の更新や Thing の無効化/有効化などができます。詳しくは Thing 管理 をご覧ください。

アクセスモデル

Kii Cloud では、Thing で発生したデータを Thing スコープに書き込み、Thing オーナーからそのデータを利用するモデルを基本とします。デフォルトでは、Thing オーナーが設定されていても、Thing からそのオーナーのスコープへはアクセスできません。

ただし、アプリケーションによっては Thing からユーザー等のスコープを書き換えたい場合があります。たとえば、体重計を Thing とするアプリケーションでは、家族からの体重データのアクセスを防止するため、Thing からユーザースコープの Bucket に直接書き込む設計が適切です。このような場合は、ACL の変更 によって Thing からの書き込みを許可することができます。