この記事でのバージョン
Unity 5.2.2f1 Personal
NCMB 2.1.0
はじめに
以前、Parseを使ってみて、かなり楽で良かったんですが、
残念ながらそのParseが終了してしまいました……。
それで、似たようなサービスはないものかーと探していたら
ニフティクラウドモバイルバックエンド(NCMB)なるものを発見、
しかもUnity対応で無料でも使えるとかなんとか!
結論から言うと凄い楽に使えてオススメです!
何が楽って、Unityエディタ上で動作する上にiOS、Android共に特別な作業がいらない。
さらにチュートリアルやドキュメントが日本のサービスでは珍しく分かり易い!!
という事でNCMBを使ってみた記事です!
なお、データストア機能とはデータを保存・共有することができるデータベース機能の事です。
とは言え、データベース周りは全部勝手にやってくれるので、
ただデータを保存したり読み込んだりするだけの簡単なお仕事です!
NCMB
そもそもNCMBで何が出来るの?って話ですが、以下の通りデータストア機能を始め、
プッシュ通知や位置情報検索なんてのも出来るようです。
ただし、ファイルストア機能がUnityに対応していなかったり対応状況はまちまちなようです。
今回はこのうちのデータストア機能を使ってみました。
価格、制限
気になるお値段ですが、だいたい以下の通り。
無料でもAPIリクエスト数が200万回 ⁄ 月と個人レベルで使うには十分じゃないでしょうか?
欲を言えば、BasicとExpertの間にお安いプランが欲しかった所……。
アカウント作成
では早速、NCMBを使っていくわけですが、まずはアカウント作成。
@niftyのアカウント(無料)が必要なようなので、これを作成。
アカウントを作成したらクイックスタートを進めて行きます。
なおリファレンスはこちら。
アプリ登録
NCMBを利用するアプリを適当に登録します。
もちろん、リリースされていなくても問題ありません。
SDKインストール
以下からNCMB.○.○.○.zipをダウンロードし解凍。
解凍したディレクトリに入っているNCMB.unitypackageを実行し、SDKをインストールします。
ただし、android-support-v4.jarやgoogle-play-services.jarが
既に入っている場合は重複しないように注意しましょう。
NCMBSettings作成
適当なゲームオブジェクトにNCMBSettingsをアタッチし、
ApplicationKeyとClientKeyを設定します。
なお、ApplicationKeyとClientKeyはダッシュボードから確認できます。
これで設定は完了です!
スクリプトからデータ登録
試しにスクリプトからデータベースにデータを登録してみます。
using NCMB;//必須 //TestClassというクラスを作成、サーバーに存在していなければ送信時に自動作成される。 NCMBObject testClass = new NCMBObject("TestClass"); //TestClassにmessageという項目を作成し、Hello, NCMB!というデータを登録 testClass["message"] = "Hello, NCMB!"; //データ送信 testClass.SaveAsync();
上記のコードを実行すると、
これが、
こう!簡単!!
ブラウザでデータ登録
データはブラウザ上からも登録可能です。
例えば、先ほど作成したTestClassに新しいデータを追加したい場合は、
新しいレコードからレコードを追加し、パーミッションを編集します。
後はてきとうにmessageを編集して完了!
これまた簡単!!
データ取得
データの登録が済んだら読み込んでみましょう!
以下のようにNCMBQueryを使ってQuery(検索条件)を発行して取得します。
Queryの種類はリファレンスにて。
//TestClassからデータを取得する NCMBQuery<NCMBObject> query = new NCMBQuery<NCMBObject> ("TestClass"); query.WhereNotEqualTo ("message", "");//messageが入力されていないもの以外全て取得 //データを検索し取得 query.FindAsync ((List<NCMBObject> objectList,NCMBException e) => { //取得失敗 if(e != null){ //エラーコード表示 Debug.Log(e.ToString()); return; } //取得した全データのmessageを表示 foreach (NCMBObject ncbObject in objectList) { Debug.Log ("message : " + ncbObject ["message"]); } });
これを実行すると、
データ取得!簡単!!
しかもこの状態で、iOSやAndroidでも動作します!
よくある各OS毎の設定とかもありません。
ただ一点、Awakeで取得や保存を実行しようとすると失敗することがあるので注意が必要です。