XG

- ゲーム内通貨管理API基盤 -

XG とは

EXNOA が開発・運用するゲーム内通貨の管理API基盤です。

資金決済関連の主管部署と連携し、適法かつ安全にゲーム内通貨の発行や消費・消滅を管理します。

XG を利用することでゲーム内通貨処理の複雑な実装や管理業務が軽減され、本来の創造的なゲーム開発に専念していただくことを目的としています。

XG の主要な機能・設計・利点

💰
ゲーム内通貨管理

有償および無償通貨の発行、消費、残高確認などの機能を提供します。資金決済関連にて重要な有効期限による消滅も適切に制御します。

⚙️
ゲーム内通貨設定

ゲーム内通貨の有償⇔無償の消費順序や、プラットフォーム間での共有設定、有効期限の日単位・時間単位指定の設定が可能です。

🔄
リカバリー設計

決済中断や異常終了時を想定したリカバリーシーケンス設計を提供します。ユーザーのゲーム内通貨の整合性向上と、安心で快適なゲーム体験に寄与します。

🔒
API認証・不正防止

公開鍵方式を用いた JWS (JSON Web Signature) による API認証を採用しています。また、ゲーム内通貨の発行数改ざんや未承認の商品購入によるゲーム内通貨発行を防止する仕組みを備えています。

📊
残高報告運用

資金決済に関わるゲーム内通貨の毎月の残高報告が不要になります。日々のデータを保管している XG が報告業務を受け持つため、残高報告システムの追加開発や運用業務が軽減されます。

🤹
エラーシミュレーション

XG API のエラーレスポンスを任意に指定する機能を提供します。これにより XG API のエラーハンドリング実装やデバッグが正確かつ簡単に行えます。

⭐ 開発をスムーズに

こう思ったことはないでしょうか。

「外部API はテストやデバッグが面倒だ」

我々は品質に影響するこの課題をクリアするために、XG API に対してレスポンスステータスを指定できる機能をご用意しました。

この機能によって XG API のエラーハンドリング実装やデバッグが簡単になり、開発効率の向上とエラー耐性の高いゲーム品質の実現をサポートいたします。

シンプルな利用方法

2つの方法があります。
『1. XG Developer Site でデバッグパターンを指定する方法』と、
『2. APIリクエスト時に所定のヘッダーをつける方法』です。
操作が簡単な 1 がオススメです。

デバッグ設定とユーザー指定

XG Developer Site では複数人が参加する開発・テストシーンを想定しています。デバッグ対象の XGユーザーID を指定し、デバッグ設定に名前を付けて保存することで影響を分離したり、チーム内共有や再利用が容易になります。

サンドボックス環境限定

本機能は本番環境の挙動に影響しません。事故防止のため、サンドボックス環境のみ利用できるように制御しています。

デバッグ設定

デバッグパターン

※ サンドボックス環境でのみ利用可能です

⭐ API の動きを追う

XG Developer Site で XG API のログを検索できます。

XG API で『何が起こったか』『エラーが発生した際、その前後はどんな API をリクエストしていたか』といった調査を、XG運営に問い合わせることなく利用者の皆様で完結できることを目指した機能です。

また、XG運営に問い合わせが必要になった場合でも、事前にログを確認することで問題の詳細を正確に伝えられ、より迅速な解決が可能になります。

APIログ
XGユーザーID: XG.1-サーバーID トランザクションID: XGトランザクションIDで検索 XG-Trace-ID: XG-Trace-IDで検索
200 OK GET GooglePlay /currency/v1/.../.../expiry 2025/06/26 19:35:02
- POST - /user/v1/users 2025/06/27 20:35:02
200 OK GET DMM /currency/v1/.../.../expiry 2025-06-27 01:52:23
200 OK GET DMM /currency/v1/.../.../balance 2025-06-27 01:52:23
200 OK PUT DMM /currency/v1/.../.../issue/free 2025-06-27 01:52:23
200 OK GET App Store /currency/v1/.../.../expiry 2025-06-27 01:51:24
200 OK GET DMM /currency/v1/.../.../expiry 2025-06-27 01:51:05
201 OK POST - /user/v1/users 2025-06-27 01:51:04

リクエスト詳細

ステータス
200 OK
トランザクションID
1a0f1b25-38f1-446b-930e-44ee7c8f8575
リクエスト日時
2025-06-27 01:52:23.206891252 (+09:00)
リクエスト先パス
/currency/v1/users/9356f771-7799-47e3-a85a-9457865a21dd/stores/dmmgames/issue/free
XGユーザーID
9356f771-7799-47e3-a85a-9457865a21dd 🔗
XG-Trace-ID
cdb355af085f6efcbc362a87ad5db4c4

リクエストボディ

{
  "transactionId": [
    {
      "currency": [
        "coin": {
          "quantity": 3000
        }
      ],
      "description": "プレゼントボックス",
      "transactionId": "1a571b25-38f1-446b-930e-44ee7c8f8575"
    }
  ]
}

レスポンスボディ

{
  "balance": {
    "coin": {
      "free": 3000,
      "paid": 0
    }
  },
  "status": "completed",
  "transactionId": {
    {
      "currency": {
        "coin": {
          "expiryAt": null,
          "quantity": 3000
        }
      },
      "description": "プレゼントボックス",
      "status": "completed",
      "transactionId": "2025-06-26-26f1d-52:232",
      "transactionId": "1a571b25-38f1-446b-930e-44ee7c8f8575"
    }
  }
}

XG の環境構成

XG は以下のような環境で構成されています。

本番環境 api.xg2.dmm.com サンドボックス環境 sbx-api.xg2.dmm.com XG Developer Site developers.xg2.dmm.com ドキュメントサイト docs.xg2.dmm.com その他環境 開発環境 ステージング環境 負荷試験環境 ※XG開発・運用チーム向け

利用環境の説明

XG のパフォーマンスと信頼性

XG は高いパフォーマンスと安定性を実現するために設計されています。 実際の負荷試験において、以下のような優れた性能指標を達成しています。

(負荷試験時の実績値)

スパイク耐性 1~2分間で 150 RPS (ノードスケール時)
1~2分間で 500 RPS (ノード非スケール時)
レイテンシ 50パーセンタイル 50 ms 以下
95パーセンタイル 110 ms 以下
99パーセンタイル 130 ms 以下
可用性 99.95 %

これらの数値は、ゲーム内通貨の増減を伴うアクションを多数のプレイヤーが同時に行う高負荷状況でも、XG が安定して動作することを示しています。

XG の関連サイト