##【Kotlin×mBaaS】シリーズ概要
- Kotlinで ニフクラ mobile backend (通称:mBaaS)を使ってSwiftで開発を始めたい人向けのドキュメントです。
- ニフクラ mobile backend のAndroid(Java SDK)用ドキュメントをKotlin用に書き換えて動かしてみたものをまとめました。
- 初心者でもわかりやすいよう心掛けて作っていますが、わかりにくい部分がありましたらコメントをいただければ訂正しますのでお気軽にご意見をお願いします^^*
- 今回は<データストア編③>としてランキングを作る・アクセス権限設定です!
- 注:「データストア」が ニフクラ mobile backend の「データベース」のことです◎
##事前準備のお願い
- 事前に ニフクラ mobile backend の登録とアプリの新規作成をし、KotlinでmBaaSを始めよう!をご覧いただき、必要な初期設定(SDKのインストールなど)をAndroid Studio上で行った上でご利用ください。
##Kotlinでデータベースを使おう!
- ニフクラ mobile backend のダッシュボードで確認をしながらAndroid Studioで動作確認をしてください。
- ドキュメントの動作確認の方法についてはKotlinでデータベースを使おう!①(保存・取得・更新・削除)の「ドキュメントの動作確認方法」にまとめてありますので参考にしてみてください。
##ランキングを作る
Androidアプリでランキングを実装する場合の使い方について解説します。
スコアの保存
- 通常のオブジェクトの保存方法と同じようにプレイヤー名とスコアを設定してデータストアのHighScoreクラスに保存します。
Kotlin
// HighScoreクラスのインスタンスを作成
val score = NCMBObject("HighScore")
// 名前とスコアをセット
score.put("Name", "name")
score.put("Score", 0)
// データストアに保存
score.saveInBackground { e ->
if (e != null) {
// 保存に失敗した場合の処理
} else {
// 保存に成功した場合の処理
}
}
###ランキングの取得
- 各プレイヤーのスコアが保存されるHighScoreクラスから、スコアの降順データを検索することで、簡単にランキングを取得できます。
Kotlin
// HighScoreクラスを検索するNCMBQueryを作成
val query = NCMBQuery<NCMBObject>("HighScore")
// Scoreの降順でデータを取得するように設定
query.addOrderByDescending("Score")
query.setLimit(5)
query.findInBackground { objects, e ->
if (e != null){
// 検索失敗時の処理
} else{
// 検索成功時の処理
}
}
- ゲームのにオンラインランキングはこんなに簡単に実装できてしまうんですね!!
##アクセス権限設定
データストアのACL機能を利用して各データのアクセス権限を会員、ロールごとに設定する方法を説明します。
- ACLを設定する場合は、NCMBAclクラスを利用します。
Kotlin
//ACLオブジェクトを作成
val acl = NCMBAcl()
//読み込み(検索)・書き込みを全開放を設定
acl.publicReadAccess = true
acl.publicWriteAccess = true
val obj = NCMBObject("test")
//オブジェクトにACLを設定
obj.acl = acl
obj.save()
- 会員やロールを対象にACLを設定することも可能です。このとき、会員やロールは登録が済んでおりobjectIdを持っている必要があります。
- 一部会員管理クラス(userクラス)の知識が必要です。
- 会員管理のドキュメントには<会員管理編>をご覧ください。
Kotlin
val sharedNote = NCMBObject("Note")
sharedNote.put("content","This note is shared!")
// NCMBACLのインスタンスを作成
val groupACL = NCMBAcl()
val user = NCMBUser()
user.userName = "user"
user.setPassword("password")
//上記ユーザー名とパスワードで新規登録ログインを実施
user.signUp()
// 引数で渡された会員userへの読み込み権限を設定する
groupACL.setReadAccess(user.objectId, true)
// 引数で渡された会員userへの書き込み権限を設定する
groupACL.setWriteAccess(user.objectId, true)
//ACLをオブジェクトに設定する
sharedNote.acl = groupACL
sharedNote.save()
##参考