メニューを閉じる

テクノデジタルグループ

メニューを開く

2015.01.15

開発環境・ツール

UnityからKiiCloudを使う

こんにちは、KTです。

UnityからKiiCloudに接続する対応が必要だったので、備忘録兼ねて簡単に紹介します。

※ KiiCloudで出来ることの一部しか使ってないのであしからず。

KiiCloudとはMBaasの一種で、ユーザ管理やデータ管理を提供しています。

詳細はリンクを参照。

 

※ 前提

KiiCloud上でUnity用のアプリを作成しておいてください。

ここではUnityとの繋ぎ込みの部分のみ説明します。

※ 前提2

今回、データ管理のみしか使用していないので、

説明もデータ管理部分のみとなります。

ユーザ管理等々を使いたい方はググってください。

 

1. KiiCloudのSDKのインストール

KiiCloudのサイトから、Unity用のSDKをダウンロード。

https://developer.kii.com/v2/downloads

ダウンロードが完了したら、Unityを起動し、

Assets > Import Package > Custom Package

からパッケージをインポート。

インポートが完了したらUnityのProjectビューにKiiディレクトリが生成されていることを確認してください。

 

2. 初期化

Unity上で、適当なゲームオブジェクトを作成し、

Kii > Libs > KiiCloudUnitySDK > KiiInitializeBehaviour

をアタッチ。

その後、KiiCloudの管理ページから取得したApp ID、App Keyを

KiiInitializeBehaviourのパラメータに設定。

 

3. ログイン及びバケットの作成

3.1. ログイン

今回はユーザ管理を使わないため、下記の用にして仮ユーザでログインします。

public class Hoge : MonoBehaviour {
  void Start () {
    UserFields user = new UserFields();
    user.Displayname = "test";

    // 仮ユーザで登録
    KiiUser.RegisterAsPseudoUser (user, (KiiUser u, Exception e) => {
      if (e != null) {
        Debug.LogError (e.Message);
        return;
      }

      // 登録したトークンでログイン
      KiiUser.LoginWithToken (KiiUser.AccessToken, (KiiUser u2, Exception e2) => {
        if (e2 != null) {
          Debug.LogError (e2.Message);
        }
      });
    });
  }
}

 

3.2 バケットの作成

バケットとはKiiCloud上のデータの種類分けに用いられる、ディレクトリのようなものです。(階層構造は持てませんが)

データを管理するために、まずはデータの入れ物となるバケットを用意します。

public class Hoge : MonoBehaviour {
  KiiBucket bucket;

  void Start() {
    bucket = Kii.Bucket("fuga");
  }
}

 

4. データの操作

4.1. データ格納

データをKiiObjectと呼ばれるKiiCloud上のデータ管理用オブジェクトに格納します。

KiiObjectはKiiBucket内に複数持つことが出来ます。

public Create (string message) {
  KiiObject obj = bucket.NewKiiObject(); // バケットにオブジェクトを追加
  obj["date"] = DateTime.Now.ToString("yyyy/MM/dd HH:mm");
  obj["text"] = message;

  // オブジェクトの保存
  obj.Save ((KiiObject savedObj, Exception e) => {
    if (e != null) {
      Debug.LogError (e.Message);
      return;
    }

    // 成功時の処理
  });
}

 

4.2. データ検索

バケットに登録されているデータを検索するにはKiiQueryを使用します。

KiiQueryは、KiiClauseにより構成された検索用クエリです。

bucket.Query()に空のKiiQueryを渡すと全件検索になります。

検索結果はKiiQueryResult<KiiObject>オブジェクトに格納され、foreach等でKiiObjectを取り出すことが出来ます。

public Find () {
  try {
    KiiQuery q = new KiiQuery (
      KiiClause.Equals ("id", 1) // "id"が1のデータを検索
    );

    // 検索
    KiiQueryResult<KiiObject> result = bucket.Query(q);

    // 検索結果の参照
    if (result != null) {
      foreach (KiiObject obj in result) {
        Debug.Log((string)obj["date"] + " : " + (string)obj["text"]);
      }
    }
  } catch (Exception e) {
    Debug.LogError (e.Message);
  }
}

なお、一度の検索で取得できるデータは最大200件までです。

続きが必要であれば、以下のようにして201件目以降のデータを取得することが出来ます。

KiiQueryResult<KiiObject> result = bucket.Query(new KiiQuery()); // 全件取得
if (result.Count > 0) foreach (KiiObject o in result) { /* Do Something */ }

// 続きの取得
while (result.HasNext) {
  result = result.GetNextQueryResult();
  // Do Something
}

 

4.3. データ更新

KiiCloudのデータはKiiObjectのSaveメソッドを呼ぶことで更新出来ます。

public Update(string message) {
  // まずは検索してKiiObjectを取得
  KiiQueryResult<KiiObject> result = bucket.Query(new KiiQuery());
  if (result == null) return;

  KiiObject obj = result[0];
  obj["text"] = message;
  obj.Save ((KiiObject updatedObj, Exception e) => {
    if (e != null) {
      Debug.LogError (e.Message);
      return;
    }

    // 更新後の処理
  });
}

 

 

とりあえず、今回の対応で使ったのはここまで。

以上。


【記事への感想募集中!】

記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!
  • こんな記事が読んでみたい、こんなことが知りたい、調べてほしい!という意見も募集中!
  • いただいた感想は今後の記事に活かしたいと思います!

感想フォームはこちら


【テクノデジタルではエンジニア/デザイナーを積極採用中です!】

下記項目に1つでも当てはまる方は是非、詳細ページへ!
  • 自分でアプリを作ってみたい
  • ITで世の中にワクワクを生み出したい
  • 使いやすさ、デザインにこだわったWebサイトを開発したい

採用情報の詳細はこちら


Qangaroo(カンガルー)

  • 徹底した見やすさと優れた操作性で、テストの「見える化」を実現。
  • テストの進捗が見える。開発がスマートに進む。
  • クラウド型テスト管理ツール『Qangaroo(カンガルー)』

【テクノデジタルのインフラサービス】

当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。

https://www.tcdigital.jp/infrastructure/

最近の記事