イベントハンドラの使用を開始する
注釈:本資料はAI技術を用いて翻訳されています。
概要
この記事では、Extend Event Handlerアプリのセットアップ方法について説明します。ここでは、Extend Event Handlerアプリテンプレートを使用します。このテンプレートは、AccelByte Gaming Services (AGS) のUserLoginおよびUserThirdPartyLoggedInイベントをリッスンし、ユーザーがログインした際にゲーム内アイテムを付与します。
前提条件
- C#
- Go
- Java
- Python
-
以下のツールがインストールされたWindows 11 WSL2/Linux Ubuntu 22.04またはmacOS 14+:
a. Bash
-
Windows WSL2またはLinux Ubuntuの場合:
bash --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
... -
macOSの場合:
bash --version
GNU bash, version 3.2.57(1)-release (arm64-apple-darwin23)
...
b. Make
-
Windows WSL2またはLinux Ubuntuの場合:
Ubuntuリポジトリからインストールするには、
sudo apt update && sudo apt install makeを実行します。make --version
GNU Make 4.3
... -
macOSの場合:
make --version
GNU Make 3.81
...
c. Docker (Docker Desktop 4.30+/Docker Engine v23.0+)
-
Linux Ubuntuの場合:
- Ubuntuリポジトリからインストールするには、
sudo apt update && sudo apt install docker.io docker-buildx docker-compose-v2を実行します。 - ユーザーを
dockerグループに追加します:sudo usermod -aG docker $USER。 - ログアウトして再度ログインし、変更を有効にします。
- Ubuntuリポジトリからインストールするには、
-
WindowsまたはmacOSの場合:
WindowsまたはmacOSへのDocker Desktopのインストールに関するDockerのドキュメントに従ってください。
docker version
...
Server: Docker Desktop
Engine:
Version: 24.0.5
...
d. .NET 8 SDK
-
Linux Ubuntuの場合:
Ubuntuリポジトリからインストールするには、
sudo apt-get update && sudo apt-get install -y dotnet-sdk-8.0を実行します。 -
WindowsまたはmacOSの場合:
WindowsまたはmacOSへの.NETのインストールに関するMicrosoftのドキュメントに従ってください。
dotnet --version
8.0.119
e. Postman
- こちらから利用可能なバイナリを使用してください
- こちらから利用可能なバイナリを使用してください
-
-
以下のツールがインストールされたWindows 11 WSL2/Linux Ubuntu 22.04またはmacOS 14+:
a. Bash
-
Windows WSL2またはLinux Ubuntuの場合:
bash --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
... -
macOSの場合:
bash --version
GNU bash, version 3.2.57(1)-release (arm64-apple-darwin23)
...
b. Make
-
Windows WSL2またはLinux Ubuntuの場合:
Ubuntuリポジトリからインストールするには、
sudo apt update && sudo apt install makeを実行します。make --version
GNU Make 4.3
... -
macOSの場合:
make --version
GNU Make 3.81
...
c. Docker (Docker Desktop 4.30+/Docker Engine v23.0+)
-
Linux Ubuntuの場合:
- Ubuntuリポジトリからインストールするには、
sudo apt update && sudo apt install docker.io docker-buildx docker-compose-v2を実行します。 - ユーザーを
dockerグループに追加します:sudo usermod -aG docker $USER。 - ログアウトして再度ログインし、変更を有効にします。
- Ubuntuリポジトリからインストールするには、
-
WindowsまたはmacOSの場合:
WindowsまたはmacOSへのDocker Desktopのインストールに関するDockerのドキュメントに従ってください。
docker version
...
Server: Docker Desktop
Engine:
Version: 24.0.5
...
d. Go v1.24
- Goのインストールガイドに従ってください。
go version
go version go1.24.0 ...e. Postman
- こちらから利用可能なバイナリを使用してください
- こちらから利用可能なバイナリを使用してください
-
-
以下のツールがインストールされたWindows 11 WSL2/Linux Ubuntu 22.04またはmacOS 14+:
a. Bash
-
Windows WSL2またはLinux Ubuntuの場合:
bash --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
... -
macOSの場合:
bash --version
GNU bash, version 3.2.57(1)-release (arm64-apple-darwin23)
...
b. Make
-
Windows WSL2またはLinux Ubuntuの場合:
Ubuntuリポジトリからインストールするには、
sudo apt update && sudo apt install makeを実行します。make --version
GNU Make 4.3
... -
macOSの場合:
make --version
GNU Make 3.81
...
c. Docker (Docker Desktop 4.30+/Docker Engine v23.0+)
-
Linux Ubuntuの場合:
- Ubuntuリポジトリからインストールするには、
sudo apt update && sudo apt install docker.io docker-buildx docker-compose-v2を実行します。 - ユーザーを
dockerグループに追加します:sudo usermod -aG docker $USER。 - ログアウトして再度ログインし、変更を有効にします。
- Ubuntuリポジトリからインストールするには、
-
WindowsまたはmacOSの場合:
WindowsまたはmacOSへのDocker Desktopのインストールに関するDockerのドキュメントに従ってください。
docker version
...
Server: Docker Desktop
Engine:
Version: 24.0.5
...
d. JDK 17
-
Linux Ubuntuの場合:
Ubuntuリポジトリからインストールするには、
sudo apt update && sudo apt install openjdk-17-jdkを実行します。 -
WindowsまたはmacOSの場合:
Microsoft Build for OpenJDKのインストールに関するMicrosoftのドキュメントに従ってください。
java --version
openjdk 17.0.10 2024-01-16
...
e. Postman
- こちらから利用可能なバイナリを使用してください
- こちらから利用可能なバイナリを使用してください
-
-
以下のツールがインストールされたWindows 11 WSL2/Linux Ubuntu 22.04またはmacOS 14+:
a. Bash
-
Windows WSL2またはLinux Ubuntuの場合:
bash --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
... -
macOSの場合:
bash --version
GNU bash, version 3.2.57(1)-release (arm64-apple-darwin23)
...
b. Make
-
Windows WSL2またはLinux Ubuntuの場合:
Ubuntuリポジトリからインストールするには、
sudo apt update && sudo apt install makeを実行します。make --version
GNU Make 4.3
... -
macOSの場合:
make --version
GNU Make 3.81
...
c. Docker (Docker Desktop 4.30+/Docker Engine v23.0+)
-
Linux Ubuntuの場合:
- Ubuntuリポジトリからインストールするには、
sudo apt update && sudo apt install docker.io docker-buildx docker-compose-v2を実行します。 - ユーザーを
dockerグループに追加します:sudo usermod -aG docker $USER。 - ログアウトして再度ログインし、変更を有効にします。
- Ubuntuリポジトリからインストールするには、
-
WindowsまたはmacOSの場合:
WindowsまたはmacOSへのDocker Desktopのインストールに関するDockerのドキュメントに従ってください。
docker version
...
Server: Docker Desktop
Engine:
Version: 24.0.5
...
d. Python 3.10
-
Linux Ubuntuの場合:
Ubuntuリポジトリからインストールするには、
sudo apt update && sudo apt install python3 python3-venvを実行します。 -
WindowsまたはmacOSの場合:
こちらから利用可能なインストーラーを使用してください。
python3 --version
Python 3.10.12
e. Postman
- こちらから利用可能なバイナリを使用してください
- extend-helper-cliから利用可能なバイナリを使用してください。
-
-
AGS Admin Portal環境へのアクセス。
- ベースURL:
<環境のドメインURL>- AGS Shared Cloudのお客様の例:
https://spaceshooter.prod.gamingservices.accelbyte.io - AGS Private Cloudのお客様の例:
https://dev.customer.accelbyte.io
- AGS Shared Cloudのお客様の例:
- まだゲームネームスペースがない場合は、ゲームネームスペースを作成してください。ネームスペースIDをメモしておいてください。
- 以下の権限を含む
confidentialクライアントタイプでOAuthクライアントを作成してください:- AGS Private Cloudのお客様の場合:
ADMIN:NAMESPACE:{namespace}:USER:*:FULFILLMENT [CREATE]
- AGS Shared Cloudのお客様の場合:
- Platform Store -> Fulfillment (Create)
Client IDとClient Secretを保管してください。
- Platform Store -> Fulfillment (Create)
- AGS Private Cloudのお客様の場合:
- ベースURL:
-
ストアと付与するゲーム内アイテムをセットアップします。
-
ネームスペースに新しいストアを作成して公開します。既存のストアがある場合は、それを使用することもできます。ストアの作成と公開の詳細については、StoreおよびEntitlementsを参照してください。

-
ストアを作成して公開したら、ユーザーがログインした際に付与したい公開ストア内のゲーム内
Item IDをメモしておいてください。
-
アプリテンプレートのクローン
- C#
- Go
- Java
- Python
git clone https://github.com/AccelByte/extend-event-handler-csharp.git
git clone https://github.com/AccelByte/extend-event-handler-go.git
git clone https://github.com/AccelByte/extend-event-handler-java.git
git clone https://github.com/AccelByte/extend-event-handler-python.git
Extendアプリのセットアップ、実行、テスト
このセクションでは、Extendアプリのセットアップ、ビルド、実行、テストの方法について説明します。
Extendアプリのセットアップ
このアプリを実行するには、以下のセットアップ手順に従ってください:
-
.env.templateファイルの内容をコピーして、docker composeの.envファイルを作成します。注記ホストOSの環境変数は
.envファイルの変数よりも優先されます。.envファイルの変数が正しく反映されない場合は、同じ名前のホストOS環境変数が存在しないか確認してください。詳細については、docker compose環境変数の優先順位に関するDockerのドキュメントを参照してください。 -
以下のように、
.envファイルに必要な環境変数を入力します:AB_BASE_URL=https://test.accelbyte.io # AGS環境のベースURL
AB_CLIENT_ID='xxxxxxxxxx' # 前提条件セクションのClient ID
AB_CLIENT_SECRET='xxxxxxxxxx' # 前提条件セクションのClient Secret
AB_NAMESPACE='xxxxxxxxxx' # 前提条件セクションのNamespace ID
ITEM_ID_TO_GRANT='xxxxxxxxxx' # 先ほどメモした公開ストアのゲーム内アイテムID
Extendアプリのビルド
このアプリをビルドするには、以下のコマンドを実行します:
make build
Extendアプリの実行
このアプリをコンテナで(ビルドして)実行するには、以下のコマンドを実行します:
docker compose up --build
Extendアプリのテスト
このアプリはPostmanを使用してローカルでテストできます。
-
以下のコマンドを使用してこのアプリを実行します。
docker compose up --build -
Postmanを開き、新しいgRPCリクエストを作成し、URLとしてlocalhost:6565を入力します。
-
UserLoginイベントに関心があるため、
UserAuthenticationUserLoggedInService/OnMessageメソッドを選択します。
-
以下のサンプルKafkaイベントJSONをコピー&ペーストし、少なくとも
namespaceとuserIdを有効な値に置き換えてから、Invokeをクリックして、UserLoginイベントをgRPCサーバーに送信します。{
"payload": {
"user_account": {
"user_id": "string",
"email_address": "string",
"country": "string",
"namespace": "string"
},
"user_authentication": {
"platform_id": "string",
"refresh": true
}
},
"id": "string",
"version": 0,
"name": "string",
"namespace": "string",
"parent_namespace": "string",
"timestamp": "2019-08-24T14:15:22Z",
"client_id": "string",
"user_id": "string",
"trace_id": "string",
"session_id": "string"
} -
成功すると、以下のようにレスポンスが表示され、このテストに使用しているユーザーにゲーム内アイテムが付与されたことも確認できます。


-
UserThirdPartyLoggedInイベントで同じことを行うには、
UserAuthenticationUserThirdPartyLoggedInService/OnMessageを選択し、以下のサンプルKafkaイベントJSONを使用します。少なくともnamespaceとuserIdの有効な値も必要です。{
"payload": {
"userAccount": {
"userId": "string",
"emailAddress": "string",
"userName": "string",
"country": "string",
"namespace": "string",
"platformId": "string",
"displayName": "string"
},
"userAuthentication": {
"platformId": "string",
"refresh": true,
"platformUserId": "string",
"simultaneousPlatformId": "string",
"simultaneousPlatformUserId": "string"
},
"loginLocation": {
"country": "string",
"state": "string",
"city": "string"
}
},
"id": "string",
"version": 0,
"name": "string",
"namespace": "string",
"parentNamespace": "string",
"timestamp": "2019-08-24T14:15:22Z",
"clientId": "string",
"userId": "string",
"traceId": "string",
"sessionId": "string"
}
AGSへのデプロイ
Extendアプリの作成
-
AGS Admin Portalで、Extend Event Handlerアプリを作成したい
namespaceに移動します。 -
サイドバーメニューでExtendにカーソルを合わせ、Event Handlerをクリックします。Create Newをクリックして、新しいExtend Event Handlerアプリを作成します。
-
アプリ作成ページで、App NameとDescriptionを入力します。必要に応じてリソース設定を調整できます。その後、Createをクリックします。
Extendアプリのアップロード
-
extend-helper-cli用のIAMクライアントをセットアップします。クライアントタイプ
confidentialでIAMクライアントを作成し、以下にリストされている必要な権限を割り当てます。Client IDとClient Secretのコピーを保管してください。- AGS Private Cloudのお客様の場合:
ADMIN:NAMESPACE:{namespace}:EXTEND:REPOCREDENTIALS[READ]ADMIN:NAMESPACE:{namespace}:EXTEND:APP[READ]
- AGS Shared Cloudのお客様の場合:
- Extend > Extend app image repository access (Read)
- Extend > App (Read)
- AGS Private Cloudのお客様の場合:
-
必要な環境変数をエクスポートし、extend-helper-cliを使用してExtendアプリコンテナイメージをビルドしてAGSにアップロードします。
<project-dir>がExtendアプリプロジェクトディレクトリを指していることを確認してください<namespace>と<app-name>の値は、ExtendアプリのApp Detailページで確認できます- 適切なイメージタグを使用してください(例:
v0.0.1)
- Linux
- Windows (WSL2)
- macOS
# AGS環境のベースURL(例: https://spaceshooter.prod.gamingservices.accelbyte.io、https://dev.accelbyte.io など)
export AB_BASE_URL='https://xxxxxxxxxx'
# extend-helper-cli用のOAuthクライアントのClient ID(ステップ1より)
export AB_CLIENT_ID='xxxxxxxxxx'
# extend-helper-cli用のOAuthクライアントのClient Secret(ステップ1より)
export AB_CLIENT_SECRET='xxxxxxxxxx'
./extend-helper-cli-linux_amd64 image-upload --login --work-dir <project-dir> --namespace <namespace> --app <app-name> --image-tag v0.0.1# AGS環境のベースURL(例: https://spaceshooter.prod.gamingservices.accelbyte.io、https://dev.accelbyte.io など)
export AB_BASE_URL='https://xxxxxxxxxx'
# extend-helper-cli用のOAuthクライアントのClient ID(ステップ1より)
export AB_CLIENT_ID='xxxxxxxxxx'
# extend-helper-cli用のOAuthクライアントのClient Secret(ステップ1より)
export AB_CLIENT_SECRET='xxxxxxxxxx'
./extend-helper-cli-linux_amd64 image-upload --login --work-dir <project-dir> --namespace <namespace> --app <app-name> --image-tag v0.0.1# AGS環境のベースURL(例: https://spaceshooter.prod.gamingservices.accelbyte.io、https://dev.accelbyte.io など)
export AB_BASE_URL='https://xxxxxxxxxx'
# extend-helper-cli用のOAuthクライアントのClient ID(ステップ1より)
export AB_CLIENT_ID='xxxxxxxxxx'
# extend-helper-cli用のOAuthクライアントのClient Secret(ステップ1より)
export AB_CLIENT_SECRET='xxxxxxxxxx'
./extend-helper-cli-darwin_amd64 image-upload --login --work-dir <project-dir> --namespace <namespace> --app <app-name> --image-tag v0.0.1important- 上記のコマンドは、Extendアプリプロジェクトとは別のターミナルおよび異なる作業ディレクトリから実行することをお勧めします。これにより、extend-helper-cliがExtendアプリ用の環境変数を誤って使用することを防ぎます。
- 以下のエラーが発生した場合は、解決手順についてトラブルシューティング: Dockerログインが失敗するを参照してください。
Error saving credentials: error storing credentials - err: exit status 1, out: `error storing credentials - err: exit status 1, out: `The stub received bad data.`
イメージが正常にアップロードされると、Image Version Historyページにバージョンv0.0.1のイメージが表示されます。

Extendアプリの設定
アップロードしたExtendアプリをデプロイする前に、Extendアプリに必要な環境変数を設定する必要があります。アプリの詳細ページで、ローカルでExtendアプリを実行およびテストする際に使用したのと同じ値で、以下の環境変数を設定します。
AB_CLIENT_IDAB_CLIENT_SECRETITEM_ID_TO_GRANT
Extendアプリのデプロイ
Extendアプリをデプロイするには、Deploy Latest Imageをクリックします。アプリのステータスがRUNNINGに更新されるまで待ちます。これは、Extendアプリが正常にデプロイされたことを示します。
デプロイされたExtendアプリのテスト
ネームスペースに新しいユーザーを作成し、そのユーザーでログインします。Admin Portalのそのユーザーのエンタイトルメントページで、Item IDが付与されているか確認します。

次のステップ
- アプリ開発を開始する前に、メッセージ処理と冪等性の管理の記事を確認して、Event Handlerアプリを使用してメッセージ処理と冪等性を処理する方法についての理解を深めることをお勧めします。
- このテンプレートプロジェクトを変更して、独自のイベントハンドラを作成してください。さまざまなAGSイベントのリッスンと処理を参照してください。