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 処理を適用します。