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

Modular Extend SDK を始める

Last updated on July 14, 2026

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

概要

この記事では、複数のサポート対象プログラミング言語で Modular Extend SDK(モノリシックな Extend SDK の後継)を使用してプロジェクトを作成する基本を説明します。

Modular Extend SDK では、プロジェクトが実際に必要とする AGS サービスパッケージのみを含めることができ、依存関係の肥大化を軽減できます。モノリシック SDK から段階的に移行できるように、互換レイヤーも用意されています。

目的

このガイドでは、以下を行います。

  • アプリケーションプロジェクトを作成する。
  • Modular Extend SDK パッケージをプロジェクトの依存関係として追加する。
  • Modular Extend SDK を使用して AGS エンドポイントを呼び出す。
  • アプリケーションを実行する。

前提条件

このガイドを開始するには、以下が必要です。

  • AccelByte Gaming Services (AGS)(デモ環境)へのアクセス。
    • AB_BASE_URL 環境変数には <環境のドメイン URL> を使用します。
      • AGS Public Cloud のお客様の例: https://spaceshooter.prod.gamingservices.accelbyte.io
      • AGS Private Cloud のお客様の例: https://dev.customer.accelbyte.io
    • クライアントタイプ Confidential で OAuth Client を作成します。
      • Client ID の値を AB_CLIENT_ID 環境変数に使用します。
      • Client Secret の値を AB_CLIENT_SECRET 環境変数に使用します。
  • AccelByte Python Modular Extend SDK
  • 以下のツールへのアクセス。
    • Git
    • Python 3.9 以降
    • Python IDE

プロジェクトを作成する

dotnet CLI を使用して、新しいソリューションとソリューション内の新しいコンソールプロジェクトを作成します。

$ mkdir -p /path/to/mysolution
$ cd /path/to/mysolution
$ dotnet new sln --name mysolution # 新しいソリューションを作成: mysolution
$ dotnet new console -o myproject # 新しいコンソールプロジェクトを作成: myproject
$ dotnet sln add myproject/myproject.csproj # myproject を mysolution に追加

プロジェクトの依存関係に追加する

Modular Python Extend SDK は個別の pip パッケージとして配布されます。コアパッケージをインストールし、その後プロジェクトが必要とする AGS サービスパッケージのみを追加します。

# 常に必要
$ pip install accelbyte-py-sdk-core

# AGS サービスパッケージ — 必要なものだけをインストール
$ pip install accelbyte-py-sdk-service-iam
$ pip install accelbyte-py-sdk-service-basic
# pip install accelbyte-py-sdk-service-<name> # 必要に応じて追加

# オプションの機能パッケージ
$ pip install accelbyte-py-sdk-feat-auth
$ pip install accelbyte-py-sdk-feat-token-validation

# または、すべてを一度にインストール
# $ pip install accelbyte-py-sdk-all
ヒント

使用している AGS のバージョンに一致する Modular Python Extend SDK のバージョンを使用することを推奨します。

コードで使用する

  1. Program.cs で SDK インスタンスを作成し、クライアントクレデンシャルでログインして AGS API を呼び出します。
  2. DefaultConfigRepository は、環境変数から AB_BASE_URLAB_CLIENT_IDAB_CLIENT_SECRET を読み取ります。
// Program.cs

using AccelByte.Sdk.Core;
using AccelByte.Sdk.Core.Net.Http;
using AccelByte.Sdk.Core.Repository;
using AccelByte.Sdk.Api;
using AccelByte.Sdk.Api.Basic.Model;

// SDK インスタンスを構築
IAccelByteSdk sdk = AccelByteSdk.Builder
.UseDefaultHttpClient()
.UseDefaultConfigRepository() // 環境変数から AB_BASE_URL、AB_CLIENT_ID、AB_CLIENT_SECRET を読み取る
.UseDefaultTokenRepository()
.Build();

// クライアントクレデンシャルでログイン
bool login = sdk.LoginClient();
if (!login)
{
Console.WriteLine("Login failed");
return 1;
}

// AGS エンドポイントを呼び出す — 例: Basic サービスの getMyProfileInfo
var response = sdk.GetBasicApi().UserProfile.GetMyProfileInfoOp.Execute(sdk.Namespace);
if (response.IsSuccess && response.Data != null)
{
UserProfilePrivateInfo profileData = response.Data;
Console.WriteLine($"User ID: {profileData.UserId}");
}
else
{
Console.WriteLine($"Error: {response.Error?.Message}");
return 2;
}

// ログアウト
bool logout = sdk.Logout();
if (!logout)
{
Console.WriteLine("Logout failed");
return 1;
}

return 0;

コードを実行する

必要な環境変数を設定し、Python インタープリタを使用してコードを実行します。

$ export AB_BASE_URL="<環境のドメイン URL>"          # AGS Base URL
$ export AB_CLIENT_ID="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # AGS OAuth Client ID
$ export AB_CLIENT_SECRET="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # AGS OAuth Client Secret
$ export AB_NAMESPACE="<自分のネームスペース>" # AGS Namespace
$ python app.py

モノリシック SDK から移行する

このセクションでは、モノリシックな Extend SDK を使用している既存のプロジェクトを Modular Extend SDK へ移行する方法を説明します。

ヒント

Modular Extend SDK には 互換レイヤー が用意されており、段階的な移行が可能です。サービスごとに更新していく間も、既存のコードはコンパイルされ続けます。

ステップ 1: 廃止されたコンポーネントを整理する

移行する前に、最新のモノリシック SDK バージョンにアップグレードし、非推奨または廃止されたクラス、メソッド、プロパティの使用箇所をすべて削除します。Modular SDK にはこれらは含まれていません。

ステップ 2: プロジェクトの依存関係を置き換える

モノリシック SDK のプロジェクト参照を削除し、代わりに Modular SDK の NuGet パッケージをインストールします。

# コアパッケージ(常に必要)
$ dotnet add package AccelByte.Sdk.Abstractions
$ dotnet add package AccelByte.Sdk.Core
$ dotnet add package AccelByte.Sdk.Authentication

# 使用する AGS サービスパッケージのみを追加
$ dotnet add package AccelByte.Sdk.Api.Iam
$ dotnet add package AccelByte.Sdk.Api.Basic
# dotnet add package AccelByte.Sdk.Api.<ApiName>

# 既存コードのコンパイルを維持するために互換レイヤーを追加
$ dotnet add package AccelByte.Sdk.Api.Compat

ステップ 3: 名前空間とクラス名の変更に対応する

モノリシック SDK と Modular SDK の間の主な破壊的変更を以下に示します。

SDK クラスとビルダー:

モノリシックModular
SDK クラスAccelByteSDKAccelByteSdkIAccelByteSdk を実装)
SDK ビルダーAccelByteSdkBuilderAccelByteSdkBuilder<T>IAccelByteSdkBuilder<T> を実装)

名前空間:

コンポーネントモノリシックModular
HTTP クライアントAccelByte.Sdk.Core.ClientAccelByte.Sdk.Core.Net.Http
HTTP ロガーAccelByte.Sdk.Core.LoggingAccelByte.Sdk.Core.Net.Logging
ユーティリティAccelByte.Sdk.Core.Util削除 — AccelByte.Sdk.Core の拡張メソッドに移動
セキュリティ(クラスファイル内)AccelByte.Sdk.Core.Security

フルーエント API アクセス:

// モノリシック
sdk.Legal.Agreement.RetrieveAgreementsPublicOp.Execute();

// Modular
sdk.GetLegalApi().Agreement.RetrieveAgreementsPublicOp.Execute();

SDK の初期化 — 各デフォルト実装は、それぞれ独自の名前空間が必要になりました。

// モノリシック — 単一の名前空間がすべてをカバー
using AccelByte.Sdk.Core;

// Modular — コンポーネントごとに名前空間をインクルード
using AccelByte.Sdk.Core;
using AccelByte.Sdk.Core.Repository; // デフォルトリポジトリ用
using AccelByte.Sdk.Core.Net.Http; // HTTP クライアント用

ステップ 4: 呼び出しレスポンスの処理を更新する

各操作呼び出しは、データを直接返す代わりにレスポンスオブジェクトを返すようになりました。古い動作と同等の簡易表記として EnsureSuccess() を使用できます。

// モノリシック
List<RetrieveAcceptedAgreementResponse>? response = sdk.GetLegalApi().Agreement
.RetrieveAgreementsPublicOp.Execute();

// Modular — レスポンスオブジェクトパターン
var response = sdk.GetLegalApi().Agreement.RetrieveAgreementsPublicOp.Execute();
if (response.IsSuccess)
{
List<RetrieveAcceptedAgreementResponse> data = response.Data;
}

// Modular — モノリシックと同等の簡易表記(失敗時に ApiResponseException をスロー)
List<RetrieveAcceptedAgreementResponse> data = sdk.GetLegalApi().Agreement
.RetrieveAgreementsPublicOp.Execute().EnsureSuccess();

注: 例外の型が HttpResponseException から ApiResponseException に変更されました。

ステップ 5: 互換レイヤーを使用する(オプション)

段階的に移行している間、Modular SDK をモノリシック SDK のように動作させたい場合は、AccelByte.Sdk.Api.Compat パッケージが以下を行うアダプタークラスを提供します。

  • 元の AccelByteSDK クラス名とフルーエントインターフェース(sdk.Legalsdk.Basic など)を公開する。
  • 既存のエラーハンドリングを維持するため、HttpResponseExceptionApiResponseException から変換)を再スローする。
  • AccelByte.Sdk.Core.UtilHelper クラスを拡張メソッドにマッピングして提供する。

互換パッケージを追加すると、既存のコードは変更なしでコンパイルできるはずです。その後、互換依存関係を取り除きながらサービスごとに移行できます。

注記

互換ライブラリは、オンデマンドトークンリフレッシュのデフォルトの動作を変更しません。

追加リソース