サーバー構築不要!スマートフォンアプリ向けの新クラウド

トップ >ドキュメント >スクリプト(JavaScript):基本的な使い方

スクリプト(JavaScript)

ドキュメント内検索

基本的な使い方

スクリプト機能について

スクリプト機能は、JavaScriptで記述したスクリプトをニフティクラウド mobile backendに登録し、
スクリプトの実行結果をアプリで受け取る機能です。

スクリプトの作成

スクリプトファイルはJavaScriptファイル(.js)として作成してください。
スクリプトファイルは1ファイルあたり8KBまでご利用頂けます。
スクリプトのタイムアウトは30秒となっております。
スクリプトで利用できるNode.jsのバージョンは以下の通りです。

  • latest
  • 6.3.0
  • 5.11.1
  • 5.7.0
  • 5.6.0
モジュール化

スクリプトは、1モジュール1ファイルとして扱われます。
以下のようにmodule.exportsで関数をモジュールとして定義してください。

function myFunc(req, res) {
  res.send("Hello World");
}

module.exports = myFunc;

匿名関数を用いて以下のようにも定義できます(推奨)。

module.exports = function(req, res) {
  res.send("Hello World");
}

module.exportsについての詳細はNode.js Documentationをご参照ください。

リクエスト/レスポンス

モジュール化された関数にはExpress.js準拠のrequestオブジェクトとresponseオブジェクトの2つの引数が渡されます。

  • requestオブジェクトのプロパティ
名前 説明
request.query クエリストリングで渡されたパラメーターのオブジェクト
request.body リクエストボディで渡されたパラメータのオブジェクト(MethodがPOST / PUTの場合のみ)
request.headers リクエストヘッダーのオブジェクト
request.header(key) keyで指定されたリクエストヘッダーの値を返す
request.get(key) keyで指定されたリクエストヘッダーの値を返す
request.url APIリクエスト時のURL
request.method APIリクエスト時のメソッド
  • responseオブジェクトのプロパティ
名前 説明
response.set(key, value) 引数として渡された値をレスポンスヘッダに追加
response.get(key) keyで指定されたレスポンスヘッダーの値を返す
response.status(status) 引数として渡された数値をステータスコードとして指定
response.send(data) 引数として渡された文字列をレスポンスボディとして返却
response.json(data) 引数として渡されたJSONをレスポンスボディとして返却
ライブラリの使用

スクリプトのコード中では対応しているライブラリを使用することができます。
以下はJavaScript SDKを用いて、データストアから値を取得し、ランダムに返すサンプルスクリプトです。

module.exports = function(req, res) {
  var NCMB = require('ncmb');
  var ncmb = new NCMB(YOUR_APPLICATION_KEY, YOUR_SECRET_KEY);

  var Item = ncmb.DataStore('Item');
  Item.fetchAll()
        .then(function(items){
          var item = items[Math.floor(Math.random() * items.length)];
          res.status(200)
              .json(item);
        })
        .catch(function(err){
          res.status(500)
              .json({error: 500});
        });
}

対応ライブラリ

現在は以下のライブラリが使用可能です。

ライブラリ名 version require 説明
ncmb_js 2.1.3 ncmb ニフティクラウド mobile backendのSDK
bookshelf 0.10.2 bookshelf ORMライブラリ
co 4.6.0 co 非同期処理を記述しやすくするライブラリ
fluent-logger 2.2.0 fluent-logger Fluentdのライブラリ
knex 0.12.6 knex SQLビルダーのライブラリ
lodash 4.16.4 lodash ユーティリティライブラリ
moment 2.15.2 moment 日付型を操作するためのライブラリ
mqtt 1.14.1 mqtt MQTTを利用するためのライブラリ
mysql 2.11.1 mysql MySQLのクライアントライブラリ
pg 6.1.0 pg PostgreSQLのクライアントライブラリ
redis 2.6.2 redis Redisのクライアントライブラリ
socket.io 1.5.1 socket.io Websocketなどを利用するためのライブラリ
superagent 2.3.0 superagent ajaxリクエストを容易に生成するためのライブラリ
underscore 1.8.3 underscore ユーティリティライブラリ
niftycloud-auth 0.1.2 niftycloud-auth ニフティクラウド APIの認証を行うライブラリ

対応ライブラリは随時追加予定です。

スクリプトをローカルでデバッグする

新しくnode.jsのプロジェクトを作成します。

以下のpackage.jsonを作成して、npm installを実行してください。
(node.jsをローカル環境にインストールする必要があります)

{
  "name": "scriptsample",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "Apache-2.0",
  "dependencies": {
    "express": "^4.14.0",
    "body-parser": "^1.15.2",
    "ncmb": "2.1.2",
    "superagent": "2.2.0"
  }
}

index.jsを作成し、同じ場所にデバッグするスクリプトを用意します。

var express = require('express');
var bodyParser = require('body-parser');

var app = express();

app.use(bodyParser.json());

//デバッグするスクリプトをモジュールとして読み込む
var moduleForGetMethod = require('./testScript_GET.js');

var apiVersion = "/2015-09-01";
var servicePath = "/script";

//読み込んだスクリプトをハンドラーとして定義
app.get(apiVersion + servicePath + '/testScript_GET.js', moduleForGetMethod);

//expressでサーバーを起動
app.listen(3000, function () {
    console.log('app listening on port 3000');
});

node index.jsコマンドでサーバーを起動し、curlコマンドを利用してスクリプトを呼び出します。

$ curl "http://localhost:3000/2015-09-01/script/testScript_GET.js"
hello

スクリプトのアップロード

スクリプトのアップロードはダッシュボードから行います。
一覧画面にあるアップロードボタンをクリックします。

スクリプト一覧画面

アップロード画面が表示されたら、作成したスクリプトを選択してアップロードします。

スクリプトのアップロード画面

アップロード時には以下の設定が可能です。

  • ファイル名
  • メソッド:スクリプト実行のリクエストを受け付けるHTTPメソッド
  • ファイルの状態:スタンバイを選択すると、ダッシュボードでのみ実行可能になります。
  • バージョン:スクリプトを実行するNode.jsのバージョンを指定できます。
  • パーミッション:スクリプトを実行できる権限

スクリプトを選択したあとの設定画面

パーミッションの設定画面ではすべてのアプリ利用者や特定の会員、ロールに対して
スクリプト実行の権限を設定することができます。

スクリプトのパーミッション設定

スクリプトをアプリから呼び出す

// パラメータを付与せず実行
ncmb.Script
      .exec("GET", "testScript.js")
      .then(function(res){
        // 実行後処理
      })
      .catch(function(err){
        // エラー処理
      });

// メソッドチェインでパラメータを付与し実行
ncmb.Script
      .set({"user-agent": agent})     // リクエストヘッダを指定
      .data({"name": name})           // リクエストボディを指定
      .exec("POST", "formScript.js")
      .then(function(res){
        // 実行後処理
      })
      .catch(function(err){
        // エラー処理
      });

// メソッドチェインでクエリストリングを付与し実行
ncmb.Script
      .query({"user": userName})      // クエリストリングを指定
      .exec("GET", "searchScript.js")
      .then(function(res){
        // 実行後処理
      })
      .catch(function(err){
        // エラー処理
      });

スクリプトをダッシュボードで実行する

実行するスクリプトを選択します。
スクリプトの選択画面

詳細情報タグから実行タグに切り替えます。
以下の設定が可能です。

カテゴリ 説明
Body POST,PUT時のみ設定可能。スクリプト実行時のリクエストボディ
Header スクリプト実行時のリクエストヘッダ
Query スクリプト実行時のクエリパラメーター

スクリプトの実行タグ画面

実行ボタンクリック後にポップアップが表示されます。
確認を行ってから実行してください。
スクリプトのポップアップ画面

実行後、スクリプトの結果が画面に表示されます。
スクリプトの結果画面

エラーとしてE409002が表示される場合は、スクリプトのデプロイが完了するまでしばらくお待ちいただき、
再度スクリプトの実行を試してください。

スクリプトの更新

更新するスクリプトを選択し、右上の変更ボタンをクリックします。
スクリプトの選択画面

ポップアップが表示されますので、更新する内容を設定し変更ボタンをクリックします。
ファイル本体を更新する場合は、「ファイルの本体の変更」の「変更する」にチェックを入れ、
ファイルを再アップロードします。
スクリプトの選択画面

スクリプトの実行ログを確認する

実行ログのタグに切り替えます。
以下の設定で絞り込み検索が可能です。

カテゴリ 説明
取得件数 ログの取得件数(デフォルト最新20件)
期間 ログの取得対象日時  
ステータスコード スクリプト実行時のステータスコード  

スクリプトのログ画面

ログの取得ボタンをクリックするとログが表示されます。
スクリプトのログ出力画面

お探しの内容が見つからなかった場合はユーザーコミュニティ もご活用ください。(回答保証はいたしかねます)
なお、 Expertプラン以上のお客様はテクニカルサポートにてご質問を承らせて頂きます。

推奨画面サイズ1024×768px以上

ページの先頭へ