ニフクラmBaaSお役立ちブログ

スマホアプリ開発にニフクラmBaaS。アプリ開発に役立つ情報をおとどけ!

JavaScript SDKがnode.jsに対応しました

JavaScriptはWebブラウザで使うものでしたが、ここ数年で状況が大きく変わっています。その要因はnode.jsの登場です。Google Chromeで使われているJavaScriptエンジンのv8を使い、サーバサイドでもJavaScriptを実行します。作法は異なりますが、node.jsを使うことでクライアントサイド、サーバサイドの両方をJavaScriptで開発できるようになります。

そしてニフティクラウド mobile backendのJavaScript SDKについても1.2.5よりnode.jsをサポートしました。今回はその簡単な使い方を紹介します。

必要なもの

作業用ディレクトリの作成と準備

node.jsとnpmのインストールが終わっていれば、作業用ディレクトリで以下のコマンドを入力します。

$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sane defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
name: (node_sample) NCMBSample
version: (0.0.0) 0.0.1
description: Sample Code for Nifty Cloud Mobile Backend with node.
entry point: (index.js) 
test command: 
git repository: 
  :

対話型でプロジェクト名やバージョンなどを入力していきます。終わったらpackage.jsonが生成されているはずです。

次に依存するライブラリをインストールします。

$ npm install localStorage --save
$ npm install form-data --save

これで準備が完了しました。

JavaScript SDKのダウンロード

ニフティクラウド mobile backendのJavaScript SDK配布ページからJavaScript SDKをダウンロードします。それを作業用ディレクトリ直下に配置します。ファイルの配置はこのようになります。

スクリプトを書いてみる

では実際にnode.jsを使ったサンプルコードを書いてみます。今回はデータストアを使ってみます。

var NCMB = require("./ncmb-1.2.5").NCMB;

NCMB.initialize("APPLICATION_KEY", "CLIENT_KEY");

var TestClass = NCMB.Object.extend("TestClass");
var testClass = new TestClass();

var query = new NCMB.Query(TestClass);
query.equalTo("message", "test");
query.find({
  success: function(results) {
    if (results[0] != null){
      console.info(results[0].get("message"));
    } else {
      testClass.set("message", "Hello, NCMB!");
      testClass.save({
        success: function(results) {
          console.info("Success", results.get("message"));
        }
      });
      console.log("Save..");
    }
  },
  error: function(results) {
    console.error(results);
  }
});

APPLICATION_KEY と CLIENT_KEY はニフティクラウド mobile backend管理画面から取得して変更してください。

このスクリプトではTestClassの検索を行い、データがなければ新しいデータを作成しています。実行すると次のように表示されます。

$ node index.js 
Save..
Success Hello, NCMB!

最初のrequire部分、

var NCMB = require("./ncmb-1.2.5").NCMB;

だけがnode.js特有ですが、それ以外はWebブラウザ向けのJavaScript SDKでのコードがそのまま使えます。

今回のコードはGitHubにアップロードしてあります。参考にしてください。

メリット

アプリケーションキー、クライアントキーの隠蔽

node.jsはサーバサイドになりますので、アプリケーションキーとクライアントキーが隠蔽できることでセキュリティ上の懸念がなくなります。

サーバサイドからニフティクラウド mobile backendを使う際に

これまでObjective-C/Java/Unity/JavaScriptといった言語向けにはライブラリを提供していますが、サーバサイドから操作する場合はREST APIをコールしていました。node.js対応したことでサーバサイドから定期実行するようなスクリプトもSDKを使って簡単に書けるようになります。

IoT デバイスへの対応

IoTデバイスではC言語のようなプログラミング言語に加えてnode.jsをサポートしていることが多いです(Edisonなど)。そういったIoTデバイスとニフティクラウド mobile backendを連携させるためにもぜひSDKを活用して頂きたいです。


01月19日(月)にIoTをテーマに勉強会を行います。この時にもnode.jsライブラリを紹介します。ご興味がありましたらぜひご参加ください!

アプリ別活用事例集 mbaas nifty mobilebackend