メインコンテンツまでスキップ

イベントハンドラの使用を開始する

Last updated on February 4, 2026

注釈:本資料はAI技術を用いて翻訳されています。

概要

この記事では、Extend Event Handlerアプリのセットアップ方法について説明します。ここでは、Extend Event Handlerアプリテンプレートを使用します。このテンプレートは、AccelByte Gaming Services (AGS) のUserLoginおよびUserThirdPartyLoggedInイベントをリッスンし、ユーザーがログインした際にゲーム内アイテムを付与します。

前提条件

  1. 以下のツールがインストールされた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の場合:

      1. Ubuntuリポジトリからインストールするには、sudo apt update && sudo apt install docker.io docker-buildx docker-compose-v2を実行します。
      2. ユーザーをdockerグループに追加します: sudo usermod -aG docker $USER
      3. ログアウトして再度ログインし、変更を有効にします。
    • 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

    • こちらから利用可能なバイナリを使用してください

    f. extend-helper-cli

    • こちらから利用可能なバイナリを使用してください
  1. AGS Admin Portal環境へのアクセス。

    • ベースURL: <環境のドメインURL>
      • AGS Shared Cloudのお客様の例: https://spaceshooter.prod.gamingservices.accelbyte.io
      • AGS Private Cloudのお客様の例: https://dev.customer.accelbyte.io
    • まだゲームネームスペースがない場合は、ゲームネームスペースを作成してください。ネームスペースIDをメモしておいてください。
    • 以下の権限を含むconfidentialクライアントタイプでOAuthクライアントを作成してください:
      • AGS Private Cloudのお客様の場合:
        • ADMIN:NAMESPACE:{namespace}:USER:*:FULFILLMENT [CREATE]
      • AGS Shared Cloudのお客様の場合:
        • Platform Store -> Fulfillment (Create) Client IDClient Secretを保管してください。
  2. ストアと付与するゲーム内アイテムをセットアップします。

    1. ネームスペースに新しいストアを作成して公開します。既存のストアがある場合は、それを使用することもできます。ストアの作成と公開の詳細については、StoreおよびEntitlementsを参照してください。

      Store in AGS Admin Portal

    2. ストアを作成して公開したら、ユーザーがログインした際に付与したい公開ストア内のゲーム内Item IDをメモしておいてください。

      Published Item in AGS Admin Portal

アプリテンプレートのクローン

git clone https://github.com/AccelByte/extend-event-handler-csharp.git

Extendアプリのセットアップ、実行、テスト

このセクションでは、Extendアプリのセットアップ、ビルド、実行、テストの方法について説明します。

Extendアプリのセットアップ

このアプリを実行するには、以下のセットアップ手順に従ってください:

  1. .env.templateファイルの内容をコピーして、docker composeの.envファイルを作成します。

    注記

    ホストOSの環境変数は.envファイルの変数よりも優先されます.envファイルの変数が正しく反映されない場合は、同じ名前のホストOS環境変数が存在しないか確認してください。詳細については、docker compose環境変数の優先順位に関するDockerのドキュメントを参照してください。

  2. 以下のように、.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を使用してローカルでテストできます。

  1. 以下のコマンドを使用してこのアプリを実行します。

    docker compose up --build
  2. Postmanを開き、新しいgRPCリクエストを作成し、URLとしてlocalhost:6565を入力します。

    Postman new grpc request

  3. UserLoginイベントに関心があるため、UserAuthenticationUserLoggedInService/OnMessageメソッドを選択します。

    Postman new grpc request

  4. 以下のサンプルKafkaイベントJSONをコピー&ペーストし、少なくともnamespaceuserIdを有効な値に置き換えてから、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"
    }
  5. 成功すると、以下のようにレスポンスが表示され、このテストに使用しているユーザーにゲーム内アイテムが付与されたことも確認できます。

    Postman new grpc request

    Granted entitlement

  6. UserThirdPartyLoggedInイベントで同じことを行うには、UserAuthenticationUserThirdPartyLoggedInService/OnMessageを選択し、以下のサンプルKafkaイベントJSONを使用します。少なくともnamespaceuserIdの有効な値も必要です。

    {
    "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アプリの作成

  1. AGS Admin Portalで、Extend Event Handlerアプリを作成したいnamespaceに移動します。

  2. サイドバーメニューでExtendにカーソルを合わせ、Event Handlerをクリックします。Create Newをクリックして、新しいExtend Event Handlerアプリを作成します。

  3. アプリ作成ページで、App NameDescriptionを入力します。必要に応じてリソース設定を調整できます。その後、Createをクリックします。

Extendアプリのアップロード

  1. extend-helper-cli用のIAMクライアントをセットアップします。クライアントタイプconfidentialIAMクライアントを作成し、以下にリストされている必要な権限を割り当てます。Client IDClient 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)
  2. 必要な環境変数をエクスポートし、extend-helper-cliを使用してExtendアプリコンテナイメージをビルドしてAGSにアップロードします。

    • <project-dir>がExtendアプリプロジェクトディレクトリを指していることを確認してください
    • <namespace><app-name>の値は、ExtendアプリのApp Detailページで確認できます
    • 適切なイメージタグを使用してください(例: 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
    important
    • 上記のコマンドは、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のイメージが表示されます。

    image history in AGS Admin Portal

Extendアプリの設定

アップロードしたExtendアプリをデプロイする前に、Extendアプリに必要な環境変数を設定する必要があります。アプリの詳細ページで、ローカルでExtendアプリを実行およびテストする際に使用したのと同じ値で、以下の環境変数を設定します。

  • AB_CLIENT_ID
  • AB_CLIENT_SECRET
  • ITEM_ID_TO_GRANT

Extendアプリのデプロイ

Extendアプリをデプロイするには、Deploy Latest Imageをクリックします。アプリのステータスがRUNNINGに更新されるまで待ちます。これは、Extendアプリが正常にデプロイされたことを示します。

デプロイされたExtendアプリのテスト

ネームスペースに新しいユーザーを作成し、そのユーザーでログインします。Admin Portalのそのユーザーのエンタイトルメントページで、Item IDが付与されているか確認します。

Granted entitlement

次のステップ