Reduce¶
In This Section
概要¶
Reduce システムは、 Map 処理の key:value
のペアを入力値として採用します。入力値が定義した条件を満たした場合、Reduce は定義された処理を使用して、新しい key:value
ペアを生成します。
reduce 処理には、 min
、 max
、 count
、 sum
があります。reduce 処理のアウトプットは、入力値を reduce 処理の配列に変換した概要です。
Reduce 定義の例¶
{
"version": "1.7.0",
"event": {
"game": {
"reductions": [
{
"id": "changeColor",
"where": {"key": ["changeColor", "<name>", "<color>"]},
"key": ["<name>", "<color>"],
"value": ["$count"],
"period": 250
},
{
"id": "cheer",
"where": {"key": ["cheer", "<name>"]},
"key": ["<name>"],
"value": ["$sum"],
"period": 250
}
]
}
}
}
Reduce スキーマ¶
id
reduce を参照する一意の文字列です。
where
新しいkey:value
ペアの生成を起動する条件を定義するスキーマ。詳細は、Where 節のコンテンツ を参照してください。
period
Reduce の実行間隔はミリ秒 (ms) です。たとえば、250ms の間隔というのは、毎秒 4 回のアウトプットをゲームが受け取ることを意味しています。
key
新しいキーを表す文字列の配列。次のような文字列があります。
- 英数字の文字列: 単純文字列。
- <anyText>: 入力キーから得られる値。
value
入力値をマージして、アウトプットを生成する処理の配列。処理を指定した場合でも、すべての処理は現在、reduce に戻されます。
処理には次のようなものがあります。
$min
: すべての入力値の最小値を戻します。$max
: すべての入力値の最大値を戻します。$count
: キーの出現数を戻します。$sum
: すべての入力値の合計値を戻します。
Reduce の例¶
Reduce 処理は、 key:value
ペアを入力値として、他の key:value
ペアに変換しますが、マージして数を減らします。
マッピングステップと同様、Genvid は Reduce のステップに JSON を使用します。
{
"id": "playerlike",
"where": {
"key": ["like", "<playerName>"]
},
"key": ["like", "<playerName>"],
"value": ["$count"],
"period": 1000
}
Reduce のステップ中、 "like"
で始まるキーを探し、2 番目のパラメータは無視します (2 番目のパラメータで一致するものは、以降のステップでトークン playerName
で参照可能です)。
この処理で、一致する key:value
をマージします。値はマージされて値のペアになり、元のキー値を検出した回数が値として割り当てられます。Genvid はこの結果を使用してイベントデータを送信します。
たとえば、 Map 機能の結果は次のようになります。
[
{ "key": ["like", "player1"], "value": 1 },
{ "key": ["like", "player1"], "value": 1 },
{ "key": ["like", "player2"], "value": 1 },
{ "key": ["like", "player1"], "value": 1 }
]
Reduce 機能は、次のようにマージします。
[
{"key": ["like", "player1"], "value": "3"},
{"key": ["like", "player2"], "value": "1"}
]