Map

概要

map 機能は、 key:value ペアを入力値として、定義された条件を満たした場合に、別の key:value ペアに変換します。

map 機能のアウトプットは、新しい key:value ペアになります。

キーが定義されたパターンに合致し、値がリストの文字列である場合、同一の key:value が転送されます。

Map 定義の例

{
  "version": "1.7.0",
  "event": {
    "game": {
      "maps": [
        {
          "id": "changeColor",
          "source": "userinput",
          "where": {"key": ["changeColor", "<name>"], "name": "<color>", "type": "string"},
          "key": ["changeColor", "<name>", "<color>"],
          "value": 1
        },
        {
          "id": "cheer",
          "source": "userinput",
          "where": {"key": ["cheer"], "name": "<name>", "type": "string"},
          "key": ["cheer", "<name>"],
          "value": 1
        }
      ]
    }
  }
}

Map スキーマ

id

Map を参照する一意の文字列です。

source

イベントが作成された場所を表します (現在 “userinput” のみに対応)。

where

新しい key:value ペアの生成を起動する条件を定義するスキーマ。詳細は、Where 節のコンテンツ を参照してください。

key

新しいキーを表す文字列の配列。次のような文字列があります。

  • 英数字の文字列: 単純文字列。
  • <anyText>: 入力キーから得られる値。

value

map 後に値フィールドにどの値を割り当たるかを指定します。map によって生成される値には次のようなものがあります。

  • 英数字の文字列: 単純文字列。
  • 数字: 数値文字列。
  • ブール: ブール値 (true または false)。

Map の例

Map 関数は、 key:value のペアを入力値として、特定の条件を満たした時に、それぞれを別の key:value ペアに変換します。これを マッピング ステップと呼びます。

Genvid は、JSON ファイルを使用して、map と変換の両方を定義します。

{
  "id": "playerlike",
  "source": "userinput",
  "where": {
    "key": [ "player", "like" ],
    "name": "<like>",
    "type": "string"
  },
  "key": ["like", "<like>"],
  "value": 1
}

この例では、 ["player", "like"] と一致するキーがシステムに入ってきた時に、新しい key:value ペアを生成します。新しいキーは ["like", "$value"] となり、 "$value" は、そのキーに割り当てられた文字列の値と対応します。変換されたキーの値として 「1」 が割り当てられると、マッピングステップは終了します。

たとえば、以下のイベントが複数の視聴者から送信されます。

{ "key": ["player", "like"], "value": "player1" }
{ "key": ["player", "like"], "value": "player1" }
{ "key": ["player", "like"], "value": "player2" }
{ "key": ["player", "like"], "value": "player1" }

map playerlike は、次のように変化します。

{ "key": ["like", "player1"], "value": 1 }
{ "key": ["like", "player1"], "value": 1 }
{ "key": ["like", "player2"], "value": 1 }
{ "key": ["like", "player1"], "value": 1 }

データの変換後、 Reduce 処理を適用します。