Kii Cloudに登場するデータの種類

ツイート このエントリーをはてなブックマークに追加
1つ上へ / ブログトップへ

Kii Cloudにはいくつかのデータが登場します。ここでは、それらを紹介し、KiiLib-Android-Volleyでどのように扱うかを紹介します。

KiiUesr

アプリのユーザーを表します。プロパティとしてメールアドレスやログイン名などがあります。それ以外にも、JSONObjectにセットできるデータを追加属性として設定できます。

各ユーザーはIDを持っています。KiiLib-Android-Volleyでは、IDを指定してKiiUserオブジェクトを作成します。

// 実際のユーザーIDはもっと長い
String userId = "1234";
KiiUser user = new KiiUser(userId);

KiiGroup

ユーザーのグループを表します。プロパティとしてグループ名と、メンバーのリストを持っています。グループ名はUnique制約が無いので、同名のグループをいくつも作成することができます。

各グループはIDを持っています。KiiLib-Android-Volleyでは、IDを指定してKiiGroupオブジェクトを作成します。

// 実際のグループIDはもっと長い
String groupId = "group1234";
KiiGroup group = new KiiGroup(groupId);

KiiBucket

Kii Cloudにおけるデータ(JSONObject)は、バケツと呼ばれる入れ物に入っています。このバケツ(KiiBucket)には名前があり、MySQLなどのリレーショナルデータベースにおけるテーブルのようなものですが、下記のような違いがあります。

  • データの検索はバケツ単位
  • なので、正規化してJoinのようなことはできない
  • スキーマは無い。key-value storageなので各データにはIDがある
  • トップレベルのJSONObjectのフィールドを検索条件に含めることができる

また、このバケツには所有者の概念があります。所有者となれるのは次の3つです。

  • アプリケーション
  • グループ
  • ユーザー

基本的に、所有者に含まれるユーザーのみアクセスができます。例えば、ある特定のユーザーのバケツを、他ユーザーが検索したりすることはできません。

KiiLib-Android-Volleyでは、所有者と名前を指定してKiiBucketオブジェクトを作成します。

// 所有者はアプリ。誰でもアクセスできる
String bucketName = "ranking";
KiiBucket bucket = new KiiBucket(null, bucketName);

// 所有者は指定したグループ。このグループに所属する人のみアクセスできる
String groupId = "group1234";
KiiGroup group = new KiiGroup(groupId);

String bucketName = "board";
KiiBucket bucket = new KiiBucket(group, bucketName);

// 所有者はログイン中のユーザー(id=meはログイン中のユーザーを表す特別なID)
// ログイン中のユーザー以外はアクセスできない
String userId = "me";
KiiUser user = new KiiUser(userId);
       
String bucketName = "board";
KiiBucket bucket = new KiiBucket(user, bucketName);

KiiObject

Kii Cloud内におけるデータそのもの。MySQLなどのリレーショナルデータベースにおけるレコードのようなものですが、実体はJSONObjectです。

各KiiObjectは、どのバケツに入っているかを表す必要があるため、KiiLib-Android-Volleyでは、IDとKiiBucketを指定してKiiObjectオブジェクトを作成します。

String userId = "me";
KiiUser user = new KiiUser(userId);

String bucketName = "board";
KiiBucket bucket = new KiiBucket(user, bucketName);

// ログイン中のユーザー用のバケツに入っているオブジェクトを作成
String objectId = "obj1234";
KiiObject obj = new KiiObject(bucket, objectId);
1つ上へ / ブログトップへ