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

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

スクリプト(Unity)

基本的な使い方

スクリプト機能について

ニフクラ mobile backend のスクリプト機能は、 準備や面倒な管理なしにサーバー上でコードの実行が行えるサービス です。JavaScriptで記述したスクリプトファイルを mobile backend 上に登録し実行することで、結果をアプリ側で受け取ることが可能です。

スクリプトの動作手順


  1. スクリプトファイルの作成
    • JavaScriptファイル(.js)として作成します
    • 1ファイルあたり 8KB まで利用可能です
    • 利用できる Node.js のバージョンは以下です
      latest, 6.11.1, 6.9.1, 6.3.0, 5.11.1, 5.7.0, 5.6.0    
      ※CVE-2017-11499 に対応した 6.11.1 以上のバージョンをご利用ください。(6.11.1 より前のバージョンは後方互換性のために利用可能としています。)
      ※latest を指定した場合、スクリプトシステムのアップデートによりバージョンが変動します。必要に応じて固定のバージョンをご指定ください。
  2. スクリプトファイルのアップロード
  3. スクリプトファイルの実行
    • ダッシュボードまたはアプリからの実行が可能です
    • タイムアウトは 30秒 となっています

スクリプトの作成

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

サンプルコード

例)リクエストとして渡されたパラメータに応じて文字列をレスポンスボディとして返却するスクリプト

function myFunc(req, res) {
  if (req.query.name) {
    res.send('Hello,' + req.query.name);
  } else {
    res.send('Hello');
  }
}

module.exports = myFunc;

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

module.exports = function(req, res) {
  if (req.query.name) {
    res.send('Hello,' + req.query.name);
  } else {
    res.send('Hello');
  }
}

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

リクエスト/レスポンス

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

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をレスポンスボディとして返却
対応ライブラリ

スクリプトのコード中では各種ライブラリを使用することができます。
※ 対応ライブラリ一覧は スクリプト (Unity) : サンプル集 をご参照ください。

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

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

スクリプト一覧画面

アップロード画面が表示されたら、ドラッグ&ドロップまたは「ファイルを選択」をクリックして、作成したスクリプトファイルを選択します。

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

以下の設定項目が表示されます。各々状況に応じた設定を行い、「アップロード」ボタンをクリックするとアップロード完了です。

項目 内容
ファイル名 アップロードするスクリプトファイル名
メソッド スクリプト実行のリクエストを受け付ける HTTPメソッド
GET, POST, PUT, DELETE の4種類から選択
ファイルの状態 スタンバイ:ダッシュボードからのみ実行可能
実行可能:外部からも実行可能
バージョン スクリプトを実行する Node.js のバージョン指定
指定がなければ最新版を適用
パーミッション スクリプトの実行権限
会員やロールの設定が可能



例)サンプルコードを実行する場合の設定

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

スクリプトの実行(ダッシュボードから)

ダッシュボードにアップロードしたスクリプトファイルを、 ダッシュボード から実行します。
実行するスクリプトを選択します。

スクリプトの選択画面

「詳細情報」タブから「実行」タブに切り替えるとスクリプトの実行画面が表示されます。
実行時は以下の設定を行います(任意)。

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



例)サンプルコードを実行する場合

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

Queryname=NCMBを設定してみましょう。(未設定でも実行可能です)



設定が完了したら「実行」ボタンをクリックします。
ポップアップが表示されますので、確認後「実行する」ボタンをクリックすると、スクリプトが実行されます。

スクリプトのポップアップ画面

実行後、「結果」欄に実行結果が画面に表示されます。



例)サンプルコードを実行した場合

スクリプトの結果画面

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

スクリプトの実行(アプリから)

ダッシュボードにアップロードしたスクリプトファイルを、 アプリ から実行します。
Unity SDK でスクリプトを呼び出すには、NCMBScript クラスを利用します。

NCMBScript script = new NCMBScript ("testScript.js", NCMBScript.MethodType.GET);
Dictionary<string, object> query = new Dictionary<string, object> (){ { "name", "tarou" } };
script.ExecuteAsync (null, null, query, (byte[] result, NCMBException e) => {
    if (e != null) {
        // 失敗
    } else {
        // 成功
    }
});

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

「実行ログ」のタブに切り替えます。

スクリプトのログ画面



ログの取得ボタンをクリックするとログ一覧が表示されます。

スクリプトのログ出力画面

実行結果が複数ある場合は、下記の項目設定することで 絞り込み表示 が可能です。

カテゴリ 説明
取得件数 ログの取得件数を指定。最新から指定の件数を表示。デフォルト設定:20件。
期間 取得対象のログの実行期間を指定。開始日時と終了日時を入力。
ステータスコード 実行ログのステータスコードを指定。

スクリプトの更新

アップロード済みのスクリプトファイルを更新する場合は、更新対象のスクリプトファイルを選択し、右上の「変更」ボタンをクリックします。

スクリプトの選択画面

ポップアップが表示されますので、更新箇所を編集し「変更」ボタンをクリックします。

スクリプトの選択画面

ファイル本体を更新する場合

「ファイルの本体の変更」の「変更する」にチェックを入れるとファイルのアップロード画面が表示されるので、画面に従って新しいスクリプトファイルをアップロードします。

スクリプトの選択画面

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

新しく Node.js のプロジェクトを作成します。
まず以下の内容で package.json を作成し、 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 License 2.0",
  "dependencies": {
    "express": "^4.14.0",
    "body-parser": "^1.15.2",
    "ncmb": "2.1.2",
    "superagent": "2.2.0"
  }
}

次に以下の内容で index.js を作成し、同じ場所にデバッグするスクリプトファイル(例: testScript.js )を用意します。

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

var app = express();

app.use(bodyParser.json());

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

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

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

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

最後に $ node index.js コマンドでローカルサーバーを起動します。
任意のブラウザを起動し、

http://localhost:3000/2015-09-01/script/testScript.js

にアクセスするとスクリプトを呼び出し結果を表示します。

ローカルデバッグ1

参考 :ローカルサーバー起動し、 curl コマンドを利用してスクリプトを呼び出すこともできます。

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

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

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

ページの先頭へ