第3回となる今回は、
Kii Cloudは第2回で解説したMBaaSの一例となるものであり、
以降で、
Kii Cloudのドキュメントは以下になります。
各プラットフォームごとのSDKの提供
Kii Cloudは、
執筆時点では、
ユーザ管理
Kii Cloudは、
- サインアップ
(ユーザ作成) - サインイン
(ログイン) - ユーザ情報の取得
- グループの管理
以下は、
// SDKの初期化処理(詳細は次回に説明)
Kii.initialize(<AppID>, <AppKey>, Kii.Site.JP);
// ユーザ名をユーザ識別用の情報として用いる
KiiUser.Builder builder = KiiUser.builderWithName("gihyo_kiicloud");
KiiUser user = builder.build();
try {
user.register("gihyo_password");
} catch (AppException e) {
// ネットワークエラー以外
Log.d("ERROR", String.format("ユーザの作成に失敗しました:%s", e.toString()));
throw e;
} catch (IOException e) {
// ネットワークエラー
Log.d("ERROR", String.format("ネットワークエラーが発生しました:%s", e.toString()));
throw e;
}
同様の処理をiOS SDK上で行う場合は、
// SDKの初期化処理
[Kii beginWithID:<AppID> andKey:<AppKey> andSite:kiiSiteJP];
// ユーザ名をユーザ識別用の情報として用いる
KiiUser *user = [KiiUser userWithUsername:@"gihyo_kiicloud_ios" andPassword:@"gihyo_password"];
NSError *error = nil;
[user performRegistrationSynchronous:&error];
if (error != nil) {
// エラー処理
NSLog(@"ユーザの作成に失敗しました:%@", error);
return;
}
データ管理
Kii Cloudは、
以下は、
// SDKの初期化処理(詳細は次回に説明)
Kii.initialize(<AppID>, <AppKey>, Kii.Site.JP);
// ユーザの作成
KiiUser.Builder builder = KiiUser.builderWithName("gihyo_kiicloud_data");
KiiUser user = builder.build();
try {
user.register("gihyo_password");
} catch (AppException e) {
Log.d("ERROR", String.format("ユーザの作成に失敗しました:%s", e.toString()));
throw e;
} catch (IOException e) {
Log.d("ERROR", String.format("ネットワークエラーが発生しました:%s", e.toString()));
throw e;
}
// ユーザスコープのバケットを作成する(スコープの詳細は後述)
KiiBucket bucket = user.bucket("gihyo_bucket");
// オブジェクトをサーバに作成する
KiiObject data1 = bucket.object();
KiiObject data2 = bucket.object();
data1.set("data_key", "match_query");
data2.set("data_key", "not_match_query");
try {
data1.save();
data2.save();
} catch (AppException e) {
Log.d("ERROR", String.format("オブジェクトの作成に失敗しました:%s", e.toString()));
throw e;
} catch (IOException e) {
Log.d("ERROR", String.format("ネットワークエラーが発生しました:%s", e.toString()));
throw e;
}
// "data_key":"match_query"を含むオブジェクトを取得するクエリを作成する
KiiQuery query = new KiiQuery(KiiClause.equals("data_key", "match_query"));
// クエリを実行して結果を受け取る
KiiQueryResult<KiiObject> queryResult = null;
try {
queryResult = bucket.query(query);
} catch (AppException e) {
Log.d("ERROR", String.format("クエリの実行に失敗しました:%s", e.toString()));
throw e;
} catch (IOException e) {
Log.d("ERROR", String.format("ネットワークエラーが発生しました:%s", e.toString()));
throw e;
}
List<KiiObject> result = queryResult.getResult();
// 結果は1件で"data_key":"match_query"を含んでいる
Log.d("DEBUG", String.format("クエリの結果は%d件です", result.size()));
Log.d("DEBUG", String.format("data_keyの値は%sです", result.get(0).getString("data_key")));
同様の処理をiOS SDK上で行う場合は、
// SDKの初期化処理
[Kii beginWithID:<AppID> andKey:<AppKey> andSite:kiiSiteJP];
// ユーザ名の作成
KiiUser *user = [KiiUser userWithUsername:@"gihyo_kiicloud_ios_data" andPassword:@"gihyo_password"];
NSError *userError = nil;
[user performRegistrationSynchronous:&userError];
if (userError != nil) {
NSLog(@"ユーザの作成に失敗しました:%@", userError);
return;
}
// ユーザスコープのバケットを作成する
KiiBucket *bucket = [user bucketWithName:@"gihyo_ios_bucket"];
// オブジェクトをサーバに作成する
KiiObject *data1 = [bucket createObject];
KiiObject *data2 = [bucket createObject];
[data1 setObject:@"match_query" forKey:@"data_key"];
[data2 setObject:@"not_match_query" forKey:@"data_key"];
NSError *objError = nil;
[data1 saveSynchronous:&objError];
[data2 saveSynchronous:&objError];
if (objError != nil) {
NSLog(@"オブジェクトの作成に失敗しました:%@", objError);
return;
}
// "data_key":"match_query"を含むオブジェクトを取得するクエリを作成する
KiiQuery *query = [KiiQuery queryWithClause:[KiiClause equals:@"data_key" value:@"match_query"]];
NSError *queryError = nil;
KiiQuery *nextQuery = nil;
NSArray *queryResult = [bucket executeQuerySynchronous:query withError:&queryError andNext:&nextQuery];
if (queryError != nil) {
NSLog(@"クエリの実行に失敗しました:%@", queryError);
return;
}
// 結果は1件で"data_key":"match_query"を含んでいる
NSLog(@"クエリの結果は%d件です", [queryResult count]);
NSLog(@"data_keyの値は%@です", [[queryResult objectAtIndex:0] getObjectForKey:@"data_key"]);
アクセス制御
Kii Cloudのアクセス制御は、
アプリケーションスコープ
「あるアプリケーションがバケットを所有している」
グループスコープ
「あるグループがバケットを所有している」
ユーザスコープ
「あるユーザがバケットを所有している」
上記に示したデフォルトのアクセス制御は、
プッシュ通知
モバイルアプリケーションでは、
Kii Cloudでは上記のサーバを既に構築しているため、
また、
データの分析
第1回で触れたように、
Kii Cloudでは上記の分析を支援する強力な解析機能を持っています。ユーザ数やオブジェクト数などの基本的な評価尺度に加え、
最適なサーバロケーションの選択
Kii Cloudではアプリケーションサーバを配置するリージョンを、
解説した機能以外では、
- 複数のアドネットワークをサポートするAds SDK
- 事前に登録したJavaScriptをサーバサイドで実行するServer Extension
- A/
Bテスト - アプリケーション課金の決済機能
- 各種管理機能を提供するWebインターフェースの拡充
以上で、