KiiCloud

ひとりKii Cloud Advent Calendar 2014-12-20

More than 3 years have passed since last update.

この記事は、ひとりKii Cloud Advent Calendarの20日目の記事です。


20日目「オブジェクトのIDをうまく使う」

ここまで非公式ライブラリの簡単な使い方ばかり続いたので、残り5日はHack的なものを紹介。多分公式SDKでも同様のHackが使えるはず。

例えばユーザー毎の設定情報を1つのオブジェクトとして保存したいというケースを考える。設定情報を保存しているオブジェクトがたくさんできても困るので、


  • オブジェクトが無ければ作成

  • オブジェクトがあればそいつを更新

といったことがやりたくなる。

オブジェクトの作成は、例えばPHPだと

$obj = $api->objectAPI()->create($bucket, $data);

のように、バケツとデータを渡すのみなので、ただ呼ぶだけだとどんどん増えてしまう。

2つ以上作らないよう、作成前に毎回Queryを呼んで、バケツ内のオブジェクトの数を数えるのも効率が悪い。API使用数も大切にしておきたいところ。

この問題をまとめて解決してくれるのが、オブジェクトID。作成した後、getId()で取得できる文字列がオブジェクトIDだが、これ、実は作成時に指定することができる。

オブジェクトIDを指定してオブジェクトをバケツにいれようとした場合、


  • もし、そのバケツに同一IDのオブジェクトがあれば上書き

  • 無ければ新規作成

という動きになる。

非公式ライブラリでは、こんな感じで呼べばよい。


Java

KiiObject obj = new KiiObject(bucket, id);

obj.put("name", "fkm");


PHP

# $idはオブジェクトID

$obj = new KiiObject($bucket, $id, $data);
$obj->data['name'] = 'fkm';
$api->objectAPI()->update($obj);


Python

obj = kiilib.KiiObject(bucket, id)

obj['name'] = 'fkm'
api.objectAPI.save(obj)