Go Non-modular SDK から Go Modular Extend SDK への移行ガイド
注釈:本資料はAI技術を用いて翻訳されています。
概要
AccelByte Go Modular SDK は、AccelByte Gaming Services (AGS) が提供する各サービスを個別のモジュールに分割した最新の開発 SDK です。これにより、使用したいサービスを選択できます。
目的
このガイドでは、すでに Go Extend SDK を使用している既存の Go プロジェクトを最新の Go Modular Extend SDK に移行する方法を説明します。
既存のプロジェクトを Go Modular Extend SDK に移行する
-
Go のインポートをリネームする。
プロジェクト内のすべての
.goファイルのインポートパッケージ名のプレフィックスを、以下のようにリネームします。IDE の検索・置換機能を利用できます。変更前
github.com/AccelByte/accelbyte-go-sdk変更後
github.com/AccelByte/accelbyte-go-modular-sdkimportantGo Modular SDK と Non-modular SDK は別のリポジトリでホストされているため、この手順が必要です。
-
互換性モジュールを使用する。
互換性モジュールには後方互換性レイヤーが用意されており、既存の Non-modular SDK から Modular SDK へスムーズに移行できます。これらのモジュールを適用した後は、特に何もする必要はありません。
以下のコマンドを実行して、必要な Go Module の依存関係を自動的に解決します。
go mod tidyこのコマンドを実行すると、Go Modular SDK にすでに移行済みの状態になりますが、後方互換性レイヤーのモジュールをまだ使用しているため、Go build tags を使用する必要があります。Go build tags は、ビルドに含める Go 互換性モジュールを指定するために使用します。
以下の例では、AccelByte の achievement モジュールと iam モジュールを使用しているため、compat_achievement タグと compat_iam タグを含めています。
go build -tags compat_achievement,compat_iam .
利用可能なタグの一覧は以下のとおりです。
| Tag | Description |
|---|---|
compat | すべての AccelByte サービスモジュールを含める(Non-modular に類似) |
compat_achievement | achievement サービスの互換性モジュールを含める |
compat_ams | ams サービスの互換性モジュールを含める |
compat_basic | basic サービスの互換性モジュールを含める |
compat_cloudsave | cloudsave サービスの互換性モジュールを含める |
compat_dslogmanager | dslogmanager サービスの互換性モジュールを含める |
compat_dsmc | dsmc サービスの互換性モジュールを含める |
compat_eventlog | eventlog サービスの互換性モジュールを含める |
compat_gametelemetry | gametelemetry サービスの互換性モジュールを含める |
compat_gdpr | gdpr サービスの互換性モジュールを含める |
compat_group | group サービスの互換性モジュールを含める |
compat_iam | iam サービスの互換性モジュールを含める |
compat_leaderboard | leaderboard サービスの互換性モジュールを含める |
compat_legal | legal サービスの互換性モジュールを含める |
compat_lobby | lobby サービスの互換性モジュールを含める |
compat_match2 | match2 サービスの互換性モジュールを含める |
compat_matchmaking | matchmaking サービスの互換性モジュールを含める |
compat_platform | platform サービスの互換性モジュールを含める |
compat_qosm | qosm サービスの互換性モジュールを含める |
compat_reporting | reporting サービスの互換性モジュールを含める |
compat_seasonpass | seasonpass サービスの互換性モジュールを含める |
compat_session | session サービスの互換性モジュールを含める |
compat_sessionbrowser | sessionbrowser サービスの互換性モジュールを含める |
compat_social | social サービスの互換性モジュールを含める |
compat_ugc | ugc サービスの互換性モジュールを含める |
すべてのモジュールをビルドに含める場合は、compat タグのみを使用すると便利です。
go build -tags compat .
-
破壊的変更を移行する。
Go Modular SDK への本格的な移行の準備が整ったら、破壊的変更の移行を開始できます。
- サービスラッパー
すべてのサービスクライアントラッパーを
github.com/AccelByte/accelbyte-go-sdk/services-api/pkg/service/*から各サービスパッケージに移動します。以下の例では、
achievementサービスとiamサービスを移動しています。このパターンは他のサービスにも適用されます。// 1. before (achievement package)
import "github.com/AccelByte/accelbyte-go-sdk/services-api/pkg/service/achievement"
var achievementSvc = achievement.AchievementsService{}
// 1. after (achievement package)
import "github.com/AccelByte/accelbyte-go-modular-sdk/achievement-sdk/pkg"
var achievementSvc = achievement.AchievementsService{}
// 2. before (iam package)
import "github.com/AccelByte/accelbyte-go-sdk/services-api/pkg/service/iam"
var iamSvc = iam.OAuth20Service{}
// 2. after (iam package)
import "github.com/AccelByte/accelbyte-go-modular-sdk/iam-sdk/pkg"
var iamSvc = iam.OAuth20Service{}- サービスファクトリー
パッケージ内のすべてのクライアントファクトリーを
github.com/AccelByte/accelbyte-go-sdk/services-api/pkg/factory/*から、それぞれ対応する各サービス SDK パッケージに移動します。以下の例では、
achievementサービスとiamサービスを移動しています。このパターンは他のサービスにも適用されます。// Before: factory package containing all client factory
import "github.com/AccelByte/accelbyte-go-sdk/services-api/pkg/factory"
var achievementCli = factory.NewAchievementClient(config)
var iamCli = factory.NewIamClient(config)
// After: client factory reside in each service module
import "github.com/AccelByte/accelbyte-go-modular-sdk/iam-sdk/pkg"
import "github.com/AccelByte/accelbyte-go-modular-sdk/achievement-sdk/pkg"
var achievementCli = achievement.NewAchievementClient(config)
var iamCli = iam.NewIamClient(config)- ローカルトークンバリデーター
認証用のローカルトークンバリデーターを使用している場合、これはすでに
github.com/AccelByte/accelbyte-go-sdkservices-api/pkg/utils/auth/validatorからgithub.com/AccelByte/accelbyte-go-sdk/iam-sdk/pkgに移動されています。コード例:
// Before
import "github.com/AccelByte/accelbyte-go-sdk/services-api/pkg/utils/auth/validator"
var tokenValidator = validator.NewTokenValidator(...)
// After
import "github.com/AccelByte/accelbyte-go-modular-sdk/iam-sdk/pkg"
var tokenValidator = iam.NewTokenValidator(...)- リフレッシュトークンスケジューラー
ファイルを
github.com/AccelByte/accelbyte-go-sdk/services-api/pkg/utils/authからgithub.com/AccelByte/accelbyte-go-sdk/iam-sdk/pkgに移動します。これはiam.OAuth20Serviceの内部でのみ使用される場合がある点に注意してください。コード例:
// Before
import "github.com/AccelByte/accelbyte-go-sdk/services-api/pkg/utils/auth"
auth.RefreshTokenScheduler(session, loginType)
// After
import "github.com/AccelByte/accelbyte-go-modular-sdk/iam-sdk/pkg"
iam.NewRefreshTokenSchedulerImpl().Start(session, loginType)最後に、以下のコマンドを実行して整理し、必要な依存関係を解決します。
go mod tidy