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管理画面から取得して変更してください。
$ 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ライブラリを紹介します。ご興味がありましたらぜひご参加ください!