> For the complete documentation index, see [llms.txt](/llms.txt)

# GS2の機能拡張

GS2 のマイクロサービスの機能拡張方法




GS2 は様々な機能をマイクロサービスとして提供しています。
しかし、場合によっては機能を拡張したいと感じる場面があるかもしれません。

GS2-Script は Lua 言語を利用したスクリプティング機能を提供し、GS2 のマイクロサービスの機能を拡張できます。
GS2-Script に記述したスクリプトは任意のタイミングで呼び出せるようなものではなく、GS2 の各マイクロサービスが定義するトリガーに応じて実行されます。

たとえば、GS2-Account には以下のトリガーが存在します。

- アカウント新規作成
- 認証実行
- 引き継ぎ情報登録
- 引き継ぎ実行

それぞれ、スクリプトの実行タイミングとして「同期処理」「非同期処理」が利用できます。

## アカウント新規作成時に実行されるスクリプトの例

### Request

|           | 型         | 説明            |
|-----------|-----------|---------------|
| namespace | Namespace | ネームスペース       |
| account   | Account   | ゲームプレイヤーアカウント |

### Result

|         | 型    | 必須  | デフォルト  | 値の制限  | 説明             |
|---------|------|-----|--------|-------|----------------|
| permit  | bool | ✓   |        |       | アカウントの作成を許可するか |

### 実装例

```lua
namespace = args.namespace
account = args.account

result = {
  permit=permit
}
```

## GS2-Script の同期処理

トリガーに対して同期処理を設定すると、スクリプトの実行が完了するまでAPIの処理はブロックされます。
スクリプトの実行時間分、APIの応答速度が落ちる代わりに 「スクリプトから結果を改竄」したり「処理を止める」ことができます。

もう少し具体的な例を示すと、スクリプトからクエストの入手経験値量を 2倍 に書き換えたり、クエストの開始処理で編成されたパーティに特定のキャラクターが含まれていない場合はエラー応答させることができます。

## GS2-Script の非同期処理

トリガーに対して非同期処理を設定すると、APIが応答した後に非同期処理でスクリプトが実行されます。

アイテムの所持数量でランキングを実現したい場合、アイテムを入手・消費した際のトリガーに非同期スクリプトを割り当てることで、
APIの応答速度を損なうことなく、スクリプト内からアイテムの所持数量をスコアとしてランキングに登録するような処理ができます。

## Amazon Event Bridge の非同期処理

GS2 は非同期処理の実装方法として、AWS が提供する 「Amazon Event Bridge」 が利用できます。
「Amazon Event Bridge」 の利用方法については別途資料を参考にしてください。




- [Amazon Event Bridge の利用](/ja/overview/workflow/coding/extend/event_bridge/)
  
