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 は別のリポジトリでホストされているため、この手順が必要です。
-
互換性モジュールの使用
互換性モジュールには、以前の非モジュラー SDK からモジュラー SDK へのスムーズな移行を可能にする後方互換性レイヤーがあるため、これらのモジュールを適用した後は何もする必要がありません。
次のコマンドを実行して、必要な Go Module の依存関係を自動的に解決します。
go mod tidyコマンドを実行すると、Go Modular SDK を使用するようになりますが、まだ後方互換性レイヤーモジュールを使用しているため、Go ビルドタグを使用する必要があります。Go ビルドタグは、ビルドに含める Go 互換性モジュールを指定するために使用されます。
次の例では、AccelByte の achievement と iam モジュールを使用しているため、compat_achievement と compat_iam タグを含めます。
go build -tags compat_achievement,compat_iam .
利用可能なタグの一覧は次のとおりです。
| タグ | 説明 |
|---|---|
compat | すべての AccelByte サービスモジュールを含める(非モジュラーと同様) |
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. 変更前(achievement パッケージ)
import "github.com/AccelByte/accelbyte-go-sdk/services-api/pkg/service/achievement"
var achievementSvc = achievement.AchievementsService{}
// 1. 変更後(achievement パッケージ)
import "github.com/AccelByte/accelbyte-go-modular-sdk/achievement-sdk/pkg"
var achievementSvc = achievement.AchievementsService{}
// 2. 変更前(iam パッケージ)
import "github.com/AccelByte/accelbyte-go-sdk/services-api/pkg/service/iam"
var iamSvc = iam.OAuth20Service{}
// 2. 変更後(iam パッケージ)
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サービスを移動しています。このパターンは他のサービスにも適用されます。// 変更前:すべてのクライアントファクトリーを含む factory パッケージ
import "github.com/AccelByte/accelbyte-go-sdk/services-api/pkg/factory"
var achievementCli = factory.NewAchievementClient(config)
var iamCli = factory.NewIamClient(config)
// 変更後:クライアントファクトリーは各サービスモジュールに存在
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に移動されています。コード例:
// 変更前
import "github.com/AccelByte/accelbyte-go-sdk/services-api/pkg/utils/auth/validator"
var tokenValidator = validator.NewTokenValidator(...)
// 変更後
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内部でのみ使用される可能性があることに注意してください。コード例:
// 変更前
import "github.com/AccelByte/accelbyte-go-sdk/services-api/pkg/utils/auth"
auth.RefreshTokenScheduler(session, loginType)
// 変更後
import "github.com/AccelByte/accelbyte-go-modular-sdk/iam-sdk/pkg"
iam.NewRefreshTokenSchedulerImpl().Start(session, loginType)最後に、次のコマンドを実行して、必要な依存関係を整理して解決します。
go mod tidy