Bucket の作成

Kii Cloud にデータを格納するにはまず Bucket を作成する必要があります。

Bucket の名前

Bucket を作成する際には、下記の例外を除いて任意の名前をつけることができます。この名前は作成済みの Bucket を参照するときに使用します。

Bucket の命名に関するルールは次のとおりです。

  • 以下は予約語のため利用できません。
    • users
    • devices
    • installations
    • internal
    • things
  • "_"(アンダースコア)で始まる名前は利用できません。
  • 英数字、"_"(アンダースコア)、"-"(ハイフン)から構成される 2~64 文字の名前として指定します。

  • Bucket の名前はアプリケーションスコープ、グループスコープ、ユーザースコープで同じものを使用できますが、それぞれ違う Bucket として認識されます。

Bucket の作成

Bucket はアプリケーションスコープ、グループスコープ、ユーザースコープのいずれのスコープにも作成できます。

  • アプリケーションスコープ

    アプリケーションスコープの Bucket は、アプリケーション上に所属するため、他のスコープのように所属するインスタンスを選択する必要がありません。

    Kii クラスが提供するスタティックメソッド bucket(withName:) を実行して作成します。

    Objective-C:

    Swift:

    // Create a bucket in the application scope.
    let bucket1 = Kii.bucket(withName: "my_app")
    
    // Create a bucket in the application scope.
    KiiBucket *bucket1 = [Kii bucketWithName:@"my_app"];
    

    アプリケーションスコープはすべてのユーザーから参照できるため、モバイルアプリで利用できるデータを置く場所としても利用できます。設定情報やテキストデータなどの JSON 形式で表現できるデータであれば、キーと値のペアとして KiiObject に格納しておくことができます。また、画像やサウンドなどのリソースであれば、Object Body としてアップロードしておくことができます。

    なお、アプリケーションスコープを使用する場合はセキュリティにご注意ください。セキュリティ に示すように、アプリケーションスコープは AppID と AppKey があれば、モバイルアプリ外からもアクセスできるため、顧客情報のような機密情報を保存する用途には向いていません。このような場合は、Server Code と ACL の削除を使って、管理者だけからアクセスできる領域を用意することで回避できます。実装方法のヒントは 管理者 をご覧ください。

  • グループスコープ

    グループスコープの Bucket は、特定のグループの配下にデータを保存するための Bucket です。

    Bucket を作成したいグループの KiiGroup インスタンスを取得し、その bucket(withName:) メソッドを実行して作成します。

    Swift:

    // Create a bucket in the group scope. Login is required.
    let bucket2 = group.bucket(withName: "my_group")
    

    Objective-C:

    // Create a bucket in the group scope. Login is required.
    KiiBucket *bucket2 = [group bucketWithName:@"my_group"];
    
  • ユーザースコープ

    ユーザースコープの Bucket は、特定のユーザーの配下にデータを保存するための Bucket です。

    Bucket を作成したいユーザーの KiiUser のインスタンスを取得し、その bucket(withName:) メソッドを実行して作成します。

    Swift:

    // Create a bucket in the user scope. Login is required.
    let bucket3 = KiiUser.current()!.bucket(withName: "my_private")
    

    Objective-C:

    // Create a bucket in the user scope. Login is required.
    KiiBucket *bucket3 = [[KiiUser currentUser] bucketWithName:@"my_private"];
    

Bucket の作成タイミング

Bucket インスタンスを作成した段階では、Kii Cloud 上に Bucket は生成されていないことに注意してください。Bucket は、その中に KiiObject を保存した際に生成されます。たとえば、以下の例のように save(_:) メソッドをコールして KiiObject が生成されたタイミングで bucket1 が Kii Cloud 上に生成されます。

Swift:

  • let obj1 = bucket1.createObject()
    do{
      try obj1.saveSynchronous()
    } catch let error as NSError {
      // Handle the error.
      return
    }
  • let obj1 = bucket1.createObject()
    obj1.save { (retObj : KiiObject?, error : Error?) -> Void in
      if (error != nil) {
        // Handle the error.
        return
      }
    }

Objective-C:

  • NSError *error;
    KiiObject *obj1 = [bucket1 createObject];
    [obj1 saveSynchronous:&error];
    if (error != nil) {
      // Handle the error.
      return;
    }
  • KiiObject *obj1 = [bucket1 createObject];
    [obj1 saveWithBlock:^(KiiObject *object, NSError *error) {
      if (error != nil) {
        // Handle the error.
        return;
      }
    }];

Bucket 一覧機能の実装ヒント

Bucket 一覧の機能が必要な場合、アプリ側での実装が必要となります。

通常、Bucket は Bucket 名を使ってプログラムから固定的にアクセスするため、一覧が必要となるケースはあまりないはずです。動的に Bucket を生成するような特殊なケースで一覧が必要な場合は、アプリケーションスコープに Bucket 名の一覧の情報を格納するなどの方法をとれます。実装方法は、ユーザー一覧の実装方法 を参考にしてください。