Node.js での実行
Kii Cloud SDK for JavaScript は Node.js でも利用可能です。
まず、開発環境に Node.js をインストールしてください。実行環境でも Node.js が必要です。
サーバー機能拡張 で Kii Cloud SDK for JavaScript を利用する場合、このページの情報は該当しません。ブラウザー上に SDK をそのまま組み込んだ場合と同じスタイルで実装してください。
Node.js の利用形態
Node.js は様々な使い方ができますが、Kii Cloud では以下の 2 通りの利用形態を想定しています。実装方法そのものは、いずれの場合も同じです。
ブラウザー向けの JavaScript ファイルを生成する
これは、Node.js をブラウザー向けのビルド環境として利用する方法です。
Node.js には、ライブラリーを名前空間の衝突なしに利用する仕組みがあります。
require
やexports
によって、様々なライブラリーやモジュールを混乱なく組み込むことができます。最終的に、作成したソースを webpack や Browserify を使ってビルドすれば、ブラウザー上で動作する JavaScript ファイルを生成できます。
JavaScript コードを実行する
これは、Node.js を JavaScript コードの実行環境として利用する方法です。
特に、IoT ソリューションの Thing 側を JavaScript で実装する場合、Thing 上に Node.js をインストールして JavaScript の実行エンジンとして Node.js を利用します。Thing での利用方法は、JavaScript SDK で Thing を実装 をご覧ください。
Node.js を使ってブラウザー用の JavaScript ファイルを生成する方法や、Node.js 上で JavaScript ファイルを実行する方法は Kii Cloud 外の技術であるため、Web 上の一般的な技術情報をご覧ください。
SDK パッケージのインストール
以下の手順に従いプロジェクトを設定します。
Node.js 上でプロジェクトを準備します。
事前に Node.js 上で開発プロジェクト用のディレクトリを作成し、
npm init
で package.json を生成しておきます。また、Web アプリの開発に使用するフレームワークなどを組み込み、"Hello World" 的なプログラムが動作する状態にしておきます。Kii Cloud SDK の組み込みを行う前に、この時点での動作を確認しておくことをおすすめします。
プロジェクトにライブラリーを組み込みます。
Kii Cloud SDK for JavaScript のライブラリーを追加します。
$ npm install kii-cloud-sdk --save
実行すると、npm コマンドによって package.json の "dependencies" に以下の 1 行が追加されます。
"dependencies": { ... "kii-cloud-sdk": "^XX.XX.XX", ... }
XX.XX.XX
は最新版のバージョンが埋め込まれます。npm view kii-cloud-sdk versions
を実行してバージョンを確認することもできます。ここでは、先頭にキャレット
^
を付けて "^XX.XX.XX" のように指定されているため、次回の npm install や npm update で SDK の更新が自動的に取り込まれます。予期しない更新を避けたい場合は、キャレットを削除してバージョンを固定することもできます。
インストール完了後、プロジェクトのディレクトリー内にある node_modules
ディレクトリーに kii-cloud-sdk
が、さらにその内部の階層に依存ライブラリーのディレクトリー xmlhttprequest
が作成されます。
SDK モジュールの読み込みと初期化
アプリのスクリプトの冒頭に以下の内容を追加して kii-cloud-sdk
モジュールの読み込みと初期化を行います。
var kii = require('kii-cloud-sdk').create();
kii.Kii.initializeWithSite("___APPID___", "___APPKEY___", kii.KiiSite.JP);
___APPID___
には開発者ポータルにて取得した AppID を、___APPKEY___
には任意の値を設定してください。
webpack がビルドエラーになる場合
Kii Cloud SDK for JavaScript と require
を組み込んだ後、webpack を使ってブラウザー用の JavaScript ファイルを作成しようとすると、エラーが発生する場合があります。
XMLHttpRequest.js で Cannot resolve module 'child_process'
、Cannot resolve module 'fs'
エラーになる場合は、webpack.config.js に以下の externals
からの 3 行を追加してください。
module.exports = [
{
......
externals:[{
xmlhttprequest: '{XMLHttpRequest:XMLHttpRequest}'
}],
......
}
]
利用可能な機能
JavaScript SDK のほぼ全ての機能が利用可能ですが、以下の制限があります。
Node.js で JavaScript コードを実行する場合、Object body のアップロードおよびダウンロードは利用できません。ただし、Node.js でビルドした JavaScript ファイルをブラウザー上で実行する場合は利用できます。
Node.js ではモジュールごとに独立したスコープを持つため、クラス名や定数名の呼び方に注意が必要です。一例として上記のサンプルコードでは
var kii = require('kii-cloud-sdk').create();
で SDK モジュールを読み込んでいるため、以後 SDK が提供するメソッドや定数を参照する際にkii.
を先頭につけています(例:kii.Kii.initializeWithSite
、kii.KiiSite.JP
)