一昨日訓練で職業人講話その2があって、その中でBaaSについて話が出たのでちょっと使ってみようと思い立って唐突に記事を書いています。
BaaSとは
Backend as a Serviceの略でスマートフォンアプリ向けのサーバ機能を提供するクラウドサービスの一種。MBaaSとも言う(MはMobile)。
サーバで行うユーザー管理、データ管理等の環境をアプリ開発者が構築しなくて済むため、アプリそのものの開発に集中でき、開発速度の向上などのメリットがある。
主な機能や各BaaSの比較は
注目BaaSの機能を学んで、簡単モバイルアプリを制作してみよう – 鈴木理恵子 | type IT Academy
が参考になると思います。
今回はKii Cloudを試してみます。
選んだ理由としては、
・国産だから日本語の開発者向けドキュメントが存在する
・Unity対応
の2点です。
ParseもUnity向けのSDKがあるのですが、Kii CloudはトップでUnity連携を推してたりしますし、「Unity BaaS」で検索するとKii Cloudの情報が多いので実装までのハードルが低そうな予感もあるので。
Parseも後々試してみようかなとは思いますが。(実はAndroidとの連携実験はすでに済んでたりする)
アカウント登録
何は無くともアカウントが無いと始まりません。
まずはトップページ右上の「登録」からアカウント登録をします。
メアドとパスワードだけで登録完了。
ありがたがられる。
メールで登録後の手順が送られてくる。(英語、日本語の順で手順が書いてある)
新規アプリ登録
送られてきたメールの手順1に従ってDeveloper Portalに行く。
右上の「ログイン」から登録メールアドレスとパスワードを入力してログイン。
ログインするとデカデカと「You have not created any apps yet. Create a New App」と言われるので、アプリを新規作成します。
「Create a New App」をクリックして新規作成。
アプリ名入力
Server Locationに日本を選択
プラットフォームにUnityを選択。android単独でもやってみたいけど今回はUnityだけ。
アプリ登録完了。おめでたい。
Unityと連携する
まずは登録完了画面からCloud SDKを選んでダウンロード。
閉じてしまった場合は上部ナビゲーションから「SDK」を選択して、Unity向けのCloud SDKをダウンロードする。
ここからは公式のKii Cloud SDK の導入手順に従って行う。
1.ファイルを解凍して、中のdllをUnityを起動してAssets/Plugins/の中に放り込む。
2.PlayerSetting(Edit > Project Settings > Player)でAndroidのタブを選んで、Other Settings > Internet AccessでRequire(必須)を選択
3.SDK を導入するクラスの Awake() メソッド内で、Kii.Initialize() を呼び出す。
とりあえずStartBehaviourクラスを作った。
1 2 3 4 5 6 7 8 9 10 11 |
using UnityEngine; using System.Collections; using KiiCorp.Cloud.Storage; public class StartBehaviour : MonoBehaviour { void Awake () { Kii.Initialize("___APPID___", "___APPKEY___", Kii.Site.JP); } } |
作ったアプリのダッシュボードの上部にあるアイコンメニューの中の「Access Keys」から
___APPID___にはApp IDを
___APPKEY___にはApp Keyをそれぞれ代入する。
よくわからないのでとりあえずMain Cameraにくっつけてみた。
エラーも起きていないので連携できたようだが全く分からない・・・・
そもそもゲーム画面作ってないし・・・どうしよう・・・・
デモゲームをやってみる
手探りでUI作るよりも実際に連携しているコードを見た方が理解が早いかな?と思い、Kii Cloudが提供しているデモゲームをやってみることにした。
今回やってみるデモはこれ。
Kii Game Cloud Demo
簡単なブロック崩しが搭載されたデモ。
とりあえずインポートしてプレイしてみる。
するとこんな画面が。
無効なAPIキーやぞ!トリセツ読めや!APIキーとってこいや!
とありがたいお言葉が。
読んでみるとさっき連携する時に読んだKii Cloud SDK の導入手順と同じような内容が。
ああ、なるほど。どこのアプリにも結びついてないわけですね。
でよく見ると3つキーをセットする方法があるらしい。
1)エディター内のKii Game CloudのSetupでキーを入れる
2)Assets/Plugins/KiiConfig.txtにキーを追加・編集する
3)KiiAutoInitialize.csのKii.Initialize()の引数を直接変更する
んで僕は3を選びました。
ごめん。嘘ついた。Readme適当に読んで「ああ、これKii.Initialize()探して変えるやつだわ」って一人で納得して一人でいじくった。
多分1が楽だと思う・・・・
エディター上にメニュー生成されるし・・・
※デフォルトだとウィンドウサイズが小さくてSiteのプルダウンとSaveボタンが隠れてる可能性があるので注意
これ生成してるEditor/SetupUI.csそのまま使い回し効きそうだし・・・・
まあもうファイル直でいじっちゃったので後の祭りってことでコード公開
Assets/Editor/KiiAutoInitialize.csの
41 |
//Kii.Initialize("__KII_APP_ID__", "__KII_APP_KEY__", __KII_APP_SITE__); |
のコメントアウトを外して、
41 |
Kii.Initialize("登録アプリのApp ID", "登録アプリのApp Key", Kii.Site.JP); |
に変更します。
4行ぐらい上のKii.Initialize(appID, appKey, appSite);はコメントアウトするか削除しましょう。要らないので。
しかし「Login」を押すとエラーが。
Level '2_KiiCloudLogin' (-1) couldn't be loaded because it has not been added to the build settings. To add a level to the build settings use the menu File->Build Settings... UnityEngine.Application:LoadLevel(String) GameTitle:OnGUI() (at Assets/Scripts/GameTitle.cs:39)
ああ・・・シーンがロード出来ないようです。
確かに設定してなかった。
File > Build SettingsのScenes In BuildにAssets/Scenesの中身を全部ぶっこみます。ドラッグ&ドロップでOK。順番は番号の通りの順番で。
さあ実行。
「Login」を押すと画面遷移しました。
まだユーザー登録してないので、
好きなユーザー名とパスワードを入れて「Register」をクリック。
キタ━━━━(゚∀゚)━━━━!!
とりあえず適当にいじくってゲームオーバーさせてみる。
「Send high score」をとりあえず押してみる。
ゲーム画面は無反応だけどConsoleが反応してるので多分OK。
結果セットを取り出す
さあKii Cloudのダッシュボードをチェック!!
「Users」をクリック!「Console」をクリック!
更新ボタンをクリック!
取れてる!!!
(何度か試したので3人登録されてます)
Scoreもユーザーに紐付いてました。数回プレイして確認しました。
ただ、全体表示する方法がよく分からなかった・・・・
一応ユーザー単位で取る方法は分かったので書いておきます。
Objects > Data Browser > Search By Bucket NameにBucket Name(今回はBreakoutHighScore)を入力して検索ボタンを押す。
するとallのところに「There are no objects in this bucket.」とこのバケツにはオブジェクトが無い。とたしなめられます。
なのでallタブの横の+をクリックして条件設定をします。
設定は以下の感じで。
Scopeを「User」にします。
User IdはUsersから任意のユーザーのUser IDフィールドの値を入れます。
KEYは今回はscoreで、「is not」を使ってscoreのVALUEが指定の値と一致しないものを結果セットとして取り出すようにします。
画像ではVALUEを0にしていますが、絶対にヒットしない1とかにすれば指定ユーザーの全データを取り出せると思います。型はAutoのままで大丈夫だと思います。いつもそれでいいって訳じゃないでしょうけど。
最後に「Save」をクリックすれば結果セットが表示されます。
完成
何とか連携を体感出来るところまで出来ました。
後は他の機能やAPIの仕様をチェックしてうまく使えるようにしたいですね。
Unityって時点でクロスプラットフォームですが、Kii CloudのAPIでJSONを取り出せるので使いこなせればWeb上でランキングを公開したりなんてことも出来るんじゃないかなーなんて感じで夢広がりんぐでした。
しかし長い記事になったぜ・・・・ヒィヒィ。
この調子だとParseもいじくって作業が割れるよりもKii Cloudを突き詰めたほうがよさそうですね。
コメント
No Trackbacks.