Server Code の機能

Kii Cloud では、Server Code の実行形態として、以下の表に示す 4 通りの方法をサポートしており、実現したい機能に応じてこれらを使い分けることができます。

機能 説明
手動実行 Kii Cloud SDK や REST API から、指定された Server Code を呼び出し、その実行結果を戻り値として受け取ります。
Server Hook(サーバートリガー起動) ユーザーや Bucket などに更新などのイベントが発生したとき、指定された Server Code を自動的に呼び出す機能です。
Server Hook(スケジュール起動) 指定された日時に Server Code を自動的に呼び出す機能です。
Thing-IF のトリガー Thing-IF SDK による IoT 機能で、Thing から登録されたステートが条件を満たしたとき、Server Code を自動的に実行する機能です。

※ Thing-IF のトリガーの機能の詳細は、トリガーによる自動実行 を参照してください。

Server Code は JavaScript のプログラムを記述した JS ファイルと、Server Hook の実行条件を記述した Server Hook 設定ファイルの 2 つから構成されます。手動実行だけを使用する場合は Server Hook 設定ファイルは不要です。

Server Code を利用することで様々なメリットが生じますが、ここでは手動実行と Server Hook の利用例を元に、それらを紹介します。

手動実行

手動実行は、Kii Cloud に登録された Server Code を Kii Cloud SDK や REST API から呼び出して、サーバー上で実行する機能です。呼び出し元は、実行結果だけをレスポンスとして受け取ります。

Server Code のプログラムはユーザーに配布しないため、リバースエンジニアリングに基づく不正な操作を防止できます。さらに、Server Code では管理者権限を使った操作を安全に実行できるため、ACL の設定を組み合わせて、セキュアなデータを不正なアクセスから守ることができます(KiiObject へのアクセスを Server Code 経由に限定すれば、更新方法自体も分かりません)。

セキュアな更新の例

セキュアな更新を行う例として、Server Code を使ってゲームのハイスコアを管理するようなケースが挙げられます。ここでは、ゲーム終了時にハイスコアを更新するものとします。

クライアントから Server Code にハイスコアの更新をリクエストする際は、パラメーターとして、スコアの他、チェックポイントの通過時刻などのスコア算出の証拠を渡すものとします。Server Code では受け取った途中経過を評価し、不正を行っていないかどうかをチェックすることができます。また、ハイスコアの更新処理を管理者権限で実行することで、KiiObject に対する直接更新などの不正アクセスも防止できます。

Server Code の実行結果として、呼び出し元へは新記録が更新されたかどうかの結果だけを返すことができます。

Server Code の利点の 1 つとして、セキュリティ向上の効果が挙げられます。
ここに示したように、プログラムのリバースエンジニアリングを防止したり、管理者権限を使ってセキュアなデータに安全にアクセスしたりできます。

Server Hook による自動実行

Server Hook による自動実行には、サーバートリガー起動とスケジュール起動の 2 つがあります。

  • サーバートリガー起動では、下記のイベントが発生したときの処理を指定できます。Server Hook 設定ファイルの記述に従って Server Code が呼び出されます。

    対象 トリガー
    Bucket 指定された Bucket に対する Object の作成、削除、更新
    User ユーザーの作成/削除、メールアドレス/電話番号の認証、パスワードのリセット/更新、ユーザー属性の更新
    Group グループの作成、削除、メンバーの追加/削除
    Thing Thing の登録/登録解除、有効化/無効化、オーナー追加/削除、Thing 情報の更新
    Installation プッシュ通知受け取り用のデバイスの登録と解除
  • スケジュール起動では、日時とその際に実行される Server Code を指定できます。時刻は、月、日、時、分、曜日の組み合わせと、その繰り返しや値の一覧として設定できます。たとえば、毎時 0 分のような単純なもののほか、週末(土~日)の 11:00 と 16:00 に実行などの柔軟な設定もできます。

Server Hook の利用例

ここでは、サーバートリガー起動の一例として、新規ユーザー登録時にアプリ内のアイテムをプレゼントするようなキャンペーンを考えます。この例では、ユーザーの作成のタイミングで Server Code を起動し、その処理でユーザースコープのデータを書き換えることを想定しています。

Server Hook 設定ファイルでは、「ユーザーの作成」というイベントと、特定の Server Code の関数を紐付けておきます。Server Code が呼び出されたとき、関数の引数では、作成されたユーザーが渡されるため、そのユーザーのスコープにアクセスして、KiiObject を書き換えることができます。

Server Hook を利用すると、イベントの発生に伴って、特定の処理を確実に実行できます。Kii Cloud のアプリケーション内で実行されるユーザー作成の処理すべてをフックできるため、処理の漏れがありません。また、公衆回線や Wi-Fi を通すモバイルアプリよりも、クラウド内の方が通信環境として安定しているため、通信エラーによる処理抜けのリスクも軽減できます(完全な結果が必要な場合は、自動的に再試行するロジックの実装が必要です)。

さらに、Server Code では、モバイルアプリのように配信やインストールが不要であるめ、Server Code の有効化と同時に、すべての処理を新しいロジックに置き換えることができます。キャンペーンのように頻繁にルールが変わるようなビジネスロジックも、すぐに全ユーザーの処理に反映できます。

Server Code の利点として、完全性や運用性の向上の側面もあります。
ここに示したように、処理の網羅性や実行の確実性を向上させる効果や、配信不要で即座にプログラムを反映できるなどの効果も期待できます。


この機能の詳細は...