不適切表現フィルタのカスタマイズを始める
注釈:本資料はAI技術を用いて翻訳されています。
概要
AccelByte Gaming Services (AGS)では、不適切表現フィルタリング用のカスタムロジックを実装できます。
この記事では、Extend Overrideアプリテンプレートを例に、カスタムの不適切表現フィルタロジックを設定する手順を説明します。
前提条件
- 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
- Postmanから利用可能なバイナリを使用します。
- extend-helper-cliから利用可能なバイナリを使用します。
g. TCPフォワーディング機能を持つローカルトンネルサービス。例:
-
無料プランには登録が必要です。クイックスタートについてはngrokのドキュメントを参照してください。
-
登録なしで無料で試用できます。クイックスタートについてはpinggyのドキュメントを参照してください。
-
-
以下のツールがインストールされた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
- Postmanから利用可能なバイナリを使用します。
- extend-helper-cliから利用可能なバイナリを使用します。
g. TCPフォワーディング機能を持つローカルトンネルサービス。例:
-
無料プランには登録が必要です。クイックスタートについてはngrokのドキュメントを参照してください。
-
登録なしで無料で試用できます。クイックスタートについてはpinggyのドキュメントを参照してください。
-
-
以下のツールがインストールされた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
- Postmanから利用可能なバイナリを使用します。
- extend-helper-cliから利用可能なバイナリを使用します。
g. TCPフォワーディング機能を持つローカルトンネルサービス。例:
-
無料プランには登録が必要です。クイックスタートについてはngrokのドキュメントを参照してください。
-
登録なしで無料で試用できます。クイックスタートについてはpinggyのドキュメントを参照してください。
-
-
以下のツールがインストールされた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. Curl
-
Windows WSL2またはLinux Ubuntuの場合:
Ubuntuリポジトリからインストールするには、
sudo apt update && sudo apt install curlを実行します。curl --version
curl 7.81.0 (x86_64-pc-linux-gnu)
... -
macOSの場合:
curl --version
curl 8.4.0 (x86_64-apple-darwin23.0) ...
...
f. Jq
-
Windows WSL2またはLinux Ubuntuの場合:
Ubuntuリポジトリからインストールするには、
sudo apt update && sudo apt install jqを実行します。jq --version
jq-1.6
... -
macOSの場合:
Homebrewを使用してインストールするには、
brew install jqを実行します。jq --version
jq-1.7.1
g. Postman
- Postmanから利用可能なバイナリを使用します。
- extend-helper-cliから利用可能なバイナリを使用します。
i. TCPフォワーディング機能を持つローカルトンネルサービス。例:
-
無料プランには登録が必要です。クイックスタートについてはngrokのドキュメントを参照してください。
-
登録なしで無料で試用できます。クイックスタートについてはpinggyのドキュメントを参照してください。
-
- AGS Admin Portal環境へのアクセス。
- ベースURL:
<your environment's domain URL>- AGS Private Cloudのお客様の場合の例:
https://dev.customer.accelbyte.io
- AGS Private Cloudのお客様の場合の例:
- まだ作成していない場合は、ゲームネームスペースを作成します。ネームスペースIDを控えておいてください。
confidentialクライアントタイプでOAuthクライアントを作成します。Client IDとClient Secretを保管しておいてください。
- ベースURL:
アプリテンプレートをクローンする
- C#
- Go
- Java
- Python
git clone https://github.com/AccelByte/profanity-filter-grpc-plugin-server-csharp.git
git clone https://github.com/AccelByte/profanity-filter-grpc-plugin-server-go.git
git clone https://github.com/AccelByte/profanity-filter-grpc-plugin-server-java.git
git clone https://github.com/AccelByte/profanity-filter-grpc-plugin-server-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' # 前提条件セクションのクライアントID
AB_CLIENT_SECRET='xxxxxxxxxx' # 前提条件セクションのクライアントシークレット
AB_NAMESPACE='xxxxxxxxxx' # 前提条件セクションのネームスペースID
PLUGIN_GRPC_SERVER_AUTH_ENABLED=true # アクセストークン検証の有効化または無効化注記このアプリでは、
PLUGIN_GRPC_SERVER_AUTH_ENABLEDはデフォルトでtrueになっています。falseに設定すると、AccelByte Gaming ServicesのアクセストークンなしでgRPC serverを呼び出すことができます。このオプションは開発目的のみに提供されています。本番環境ではgRPC serverのアクセストークン検証を有効にすることを推奨します。
Extendアプリをビルドする
このアプリをビルドするには、以下のコマンドを実行します。
make build
Extendアプリをテストする
Extendアプリは、ローカル開発環境またはAGSでテストできます。
ローカル開発環境でテストする
テストする前に、PLUGIN_GRPC_SERVER_AUTH_ENABLEDがfalseに設定されていることを確認してください。設定されていない場合、gRPCリクエストはgRPC serverによって拒否されます。
このアプリのカスタム関数は、Postmanを使用してローカルでテストできます。Postmanを使用してExtendアプリをテストするには、以下の手順に従います。
-
以下のコマンドを使用してこのアプリを実行します。
docker compose up --build -
Postmanで新しいgRPCリクエストを作成し、サーバーURLとして
localhost:6565を入力します。詳細については、gRPCサポートに関するPostmanのガイドを参照してください。 -
続いて
ProfanityFilterService/Validateメソッドを選択し、以下のサンプルペイロードで呼び出します。{
"value": "bad"
}レスポンスには
isProfane: trueが含まれます。{
"isProfane": true,
"message": "this contains banned words"
}
AGSでテストする
AGSでローカルに実行されているアプリをテストするには、gRPC serverをインターネットに公開する必要があります。パブリックIPを用意せずにこれを行うには、ローカルトンネルサービスを使用できます。
-
以下のコマンドを使用してこのアプリを実行します。
docker compose up --build -
ローカル開発環境の
gRPC serverのTCPポート6565をインターネットに公開します。これを行う最も簡単な方法は、ローカルトンネルサービスプロバイダーを使用することです。-
ngrokにサインインし、ngrokダッシュボードから
authtokenを取得してローカル環境に設定します。 そして、gRPC serverを公開するには、以下のコマンドを使用します。ngrok tcp 6565 -
または、pinggyを使用して
sshコマンドラインのみで簡単なトンネルを設定することもできます。 その場合、gRPC serverを公開するには、以下のコマンドを使用します。ssh -p 443 -o StrictHostKeyChecking=no -o ServerAliveInterval=30 -R0:127.0.0.1:6565 tcp@a.pinggy.io
トンネルのフォワーディングURL(例:
http://0.tcp.ap.ngrok.io:xxxxxまたはtcp://xxxxx-xxx-xxx-xxx-xxx.a.free.pinggy.link:xxxxx)を控えておいてください。備考gRPCサーバーのポート(TCP)をインターネットに公開するために、他のローカルトンネルサービスや別の方法を使用することもできます。
-
-
Admin Portalで、この設定に対応する正しいネームスペースに移動し、以下を行います。
-
サイドバーメニューで、Tools & Utilities > Profanity Management > Customizationsに移動します。
-
まだ追加していない場合は、Add Custom Filterをクリックします。
-
Locally hosted for testing purposeオプションを選択します。前の手順のトンネルフォワーディングURLを入力し、Saveをクリックします。


-
-
confidentialクライアントタイプで、以下の権限を含むOAuthクライアントを作成します。- AGS Private Cloudのお客様の場合:
ADMIN:NAMESPACE:{namespace}:PROFANITY:FILTER [UPDATE,DELETE]ADMIN:NAMESPACE:{namespace}:PROFANITY [READ]
importantClient IDとClient Secretのコピーを保管しておいてください。- この手順で作成したOAuthクライアントは、前提条件セクションで説明したものとは異なります。これは、次の手順でPostmanコレクションが
gRPC ServerのURLを登録し、テストユーザーを作成・削除するために必要です。
- AGS Private Cloudのお客様の場合:
-
Postmanコレクション(
demo/profanity-filter-demo.postman_collection.json)の概要にある手順に従い、前の手順で取得したClient IDとClient Secretを使用して環境を設定します。Extendアプリのフローが実行されている間、このアプリのコンソールログに注意してください。コレクション内のすべてのリクエストを実行すると、少なくとも1つのgRPC Serverメソッドが呼び出されるはずです。
AGSにデプロイする
AGSにExtendアプリをデプロイするには、Admin Portalで以下の手順を行います。
Extendアプリを作成する
- AGS Admin Portalで、Extend Overrideアプリを作成したいネームスペースに移動します。
- サイドバーメニューのADD-ONSの下で、Extend > Overrideに移動します。
- Overridable Featuresページで、+ Create Newボタンをクリックします。
- Create Appフォームで、Extendアプリの名前と説明(任意)を入力します。
- Createをクリックします。新しいExtendアプリがOverridable Featuresアプリリストに追加されます。
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 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クライアントのクライアントID(手順1より)
export AB_CLIENT_ID='xxxxxxxxxx'
# extend-helper-cli用OAuthクライアントのクライアントシークレット(手順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クライアントのクライアントID(手順1より)
export AB_CLIENT_ID='xxxxxxxxxx'
# extend-helper-cli用OAuthクライアントのクライアントシークレット(手順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クライアントのクライアントID(手順1より)
export AB_CLIENT_ID='xxxxxxxxxx'
# extend-helper-cli用OAuthクライアントのクライアントシークレット(手順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_SECRET
Extend Overrideアプリがリリースv2024.02.13より前のテンプレートに基づいている場合は、PLUGIN_GRPC_SERVER_AUTH_ENABLED環境変数を必ずtrueに設定してください。設定しない場合、Extendアプリのアクセストークン検証が無効になり、有効なアクセストークンなしでExtendアプリにアクセスされる可能性があります。
リリースv2024.02.13以降、Extend OverrideアプリテンプレートのPLUGIN_GRPC_SERVER_AUTH_ENABLEDはデフォルトでtrueに設定されています。アクセストークン検証は、PLUGIN_GRPC_SERVER_AUTH_ENABLEDが明示的にfalseに設定されている場合のみ無効にできます。これに合わせて、Admin Portalを通じて作成される新しいExtendアプリには、デフォルトでPLUGIN_GRPC_SERVER_AUTH_ENABLED環境変数が設定されなくなりました。以前は、Admin Portalを通じて作成されるすべての新しいExtendアプリにPLUGIN_GRPC_SERVER_AUTH_ENABLED=falseが追加されていました。
Extendアプリをデプロイする
Extendアプリをデプロイするには、Deploy Latest Imageをクリックします。アプリのステータスがRUNNINGに更新されるまで待ちます。これは、Extendアプリが正常にデプロイされたことを示します。
AGSでExtendアプリを使用するように設定する
Admin Portalで、不適切表現フィルタのカスタマイズを更新します。
AccelByte hostedオプションを選択し、いずれかのExtendアプリを選択します。完了するにはSaveをクリックします。

詳細については、カスタム不適切表現フィルタの作成と管理のガイドを確認してください。
次の手順
Extend Overrideアプリテンプレートを変更して、独自のカスタムロジックを実装します。詳細については、こちらを参照してください。