クラウドデータベース
「ニフティクラウド mobile backend」について

Monaca から簡単に使えるクラウドデータベースとして「ニフティクラウド mobile backend」というサービスがあります。このサービスは「mobile backend as a Service」の頭文字をとって mBaaS と呼ばれるジャンルに属するクラウドサービスで、データベース機能である「データストア」をはじめとして「プッシュ通知」「会員管理」「ファイルストア」「スクリプト」といった、スマホアプリのバックエンド機能を一連でそろえているサービスです。これらの機能はすべて JavaScript SDK を提供しているため、Monaca 環境からも簡単に使え、データの保存・取得・条件検索といったデータベースの操作も簡単に行えます。
今回の記事では以下のサンプルプロジェクトを元に Monaca から mBaaS のクラウドデータベース「データストア」を使う方法をご紹介します。

▼サンプルプロジェクト
Monacaとクラウドデータベースを連携してみよう!

mBaaSとMonacaを連携させるには?
押さえておくべきポイント

mBaaS を使って Monaca からデータの保存・取得・条件検索を行うために事前準備として2つの設定を行う必要があります。

設定の1つ目は、SDK のインストールです。mBaaS では、iOS/Android/JavaScript/Unity の4種類 SDK を提供しています。Monaca で
mBaaS を利用するためには、JavaScript SDK をインストールします。

設定の2つ目は、API キーを使った SDK の初期化です。APIキーは、アプリケーションキーとクライアントキーの2種類からなるもので Monaca と mBaaS 間でアクセスの認証を行う際に必要なものです。初期化は下記のコードを書きます。

//APIキーの設定とSDKの初期化
var appKey    = "アプリケーションキー";
var clientKey = "クライアントキー";
var ncmb  = new NCMB(appKey,clientKey);

アプリケーションキーとクライアントキーは mBaaS でアプリ作成時に発行された API キーに置き換えます。以上の2点によって、mBaaS と Monaca の連携は完了となります。

▼参考
SDKのインストール手順
mBaaSとMonacaの連携手順

データの保存・取得・条件検索の実装例

ここからは、データの保存・取得・条件検索についてコード実装例とあわせてご紹介します。

(1)データの保存

データの保存は下記のようなコードで行います。

//保存先クラスの作成
var SaveData = ncmb.DataStore("SaveData");

//インスタンスの生成
var saveData = new SaveData();

//データの保存
saveData.set("username", username)
        .set("mailaddress", mailaddress)
        .set("prefecture", prefecture)
        .set("age", ageint)
        .set("title", title)
        .set("comment", comment)
        .save()
        .then(function(results){
            //保存に成功した場合の処理
        })
        .catch(function(error){
            //保存に失敗した場合の処理
        });

まず、データの保存先クラスとして SaveData をコード2行目のように定義することで、mBaaS のデータストアに SaveData というクラスが出来ます。次に、SaveData クラスにデータを保存するためのインスタンス saveData を作成したら、このインスタンスに .set() で保存したいフィールドとデータを引数として設定します。最後に、.save() でデータストアへの保存を実行します。

クラス:mBaaS のデータストアにおけるテーブル
フィールド:mBaaSのデータストアにおけるカラム

(2)データの取得

データの取得は下記のように実装します。

//インスタンスの生成
var saveData = ncmb.DataStore("SaveData");

//データを降順で取得する
saveData.order("createDate",true)
        .fetchAll()
         .then(function(results){
             //全件検索に成功した場合の処理
         })
         .catch(function(error){
             //全件検索に失敗した場合の処理
         });

上記の例では、コード2行目でデータを取得するクラスを指定しています。 .order() メソッドでは取得するデータをどのように並び替えるかを指定するメソッドです。第一引数に「フィールド」を指定する”文字列”、第二引数に「降順か昇順か」を指定する”真偽値”を指定します。今回の場合であれば、「createDate」フィールドを「降順」に並び替えるようにしています。
.fetchAll()メソッドを続けることで、並び替えされたデータの取得が実行されます。

(3)データの条件検索

データの検索について実装は下記のように行いますが、中でも特に重要な2つのメソッドを紹介します。

  • .lessThanOrEqualTo()
  • .greaterThanOrEqualTo()
//インスタンスの生成
var saveData = ncmb.DataStore("SaveData");

//指定日以前に登録されたデータを取得する
saveData.lessThanOrEqualTo("createDate", { "__type": "Date", "iso": date.toISOString() })
.order("createDate",true)
.fetchAll()
.then(function(results){
    //検索に成功した場合の処理
})
.catch(function(error){
    //検索に失敗した場合の処理
});

.lessThanOrEqualTo() は、入力した値以下のオブジェクトを検索するメソッドです。ここでは、引数に createDate{ "__type": "Date", "iso": date.toISOString() } を設定することで、入力した日付よりも以前に登録されたデータを検索できるようになっています。
.lessThanOrEqualTo() のかわりに .greaterThanOrEqualTo() を指定すると、入力した日付よりも以後に登録されたデータを検索できるようになります。

この後に .order().fetchAll() を続けることで、並び替えと条件に合致するデータの全件取得を行います。

まとめ

mBaaS と Monaca を連携させることで、データの保存や検索といった機能もたった数行程度のコードでアプリに導入することが可能です。

▼サンプルプロジェクト
Monacaとクラウドデータベースを連携してみよう!

mBaaS のデータストアを使って導入できる機能はまだまだ他にもありますので、機能を組み合わせてアプリ開発に役立ててみてください。また、お悩みの際には是非mBaaSの「サンプルとチュートリアル」もチェックしてみましょう!

サンプルとチュートリアルのご紹介

mBaaS ではデータストアに関連したサンプルとチュートリアルを多数ご用意しております!データストアの様々な活用方法を紹介しているので、アプリ開発のご参考にしてみてください。