ユーザーとドメインスコープ付きユーザーID

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

Robloxは、ユーザーが対話する各ゲームまたはアプリに対してユニークなドメインスコープ付きユーザーIDを割り当てます。このページでは、ドメインスコープによる識別がどのように機能するか、またゲームコード内でUser型をどのように使用するかを説明します。

ユーザー識別の中心となる概念は以下の通りです。

概念説明
ユーザーRobloxの永続的なアカウント。
プレイヤー実行中のゲームのデータモデル内でのユーザーの表現(プレイヤーを参照)。
Userデータ型特定のドメイン内でのユーザーのアイデンティティを表すデータ型。これは、ゲームコード内でユーザーを参照するための標準識別子です。
ドメインスコープ付きユーザーID特定のドメイン内でユーザーを一意に識別する数値の識別子。この識別子は、すべてのゲームおよびアプリで異なります。

ドメインスコープ付きユーザーID

ドメインスコープ付きユーザーIDは、特定のゲームまたはアプリ内でユーザーに割り当てられるユニークな識別子です。グローバルユーザーIDとは異なり、ドメインスコープ付きユーザーIDはそれを発行したドメイン内でのみ意味を持つため、同じユーザーは対話する各ゲームまたはアプリで異なるドメインスコープ付きユーザーIDを持ちます。スコープ付きIDの展開前にゲームに参加したプレイヤーは、そのゲーム内で元のグローバルユーザーIDを保持します(戻ってきたプレイヤーを参照)。

ドメインタイプはEnum.DomainTypeで表されます:

ドメインタイプスコープされた先
Enum.DomainType.EXPERIENCE特定のゲーム(ユニバース)あなたのゲーム内でのプレイヤーのID
Enum.DomainType.OAUTH特定のOAuthアプリケーションあなたの外部ツール内でのユーザーのID

ドメインスコープ付きIDの仕組み

プレイヤーがあなたのゲームに参加すると、そのゲームにユニークなドメインスコープ付きユーザーIDが割り当てられます。同じプレイヤーが別のゲームに参加すると、異なるドメインスコープ付きユーザーIDが与えられます。これにより:

  • ドメインスコープ付きユーザーIDは整数であり、既存のグローバルユーザーIDに似ています。
  • ドメインスコープ付きユーザーIDは、既存のグローバルユーザーIDと衝突しません。
  • 同じ数値が異なるドメインで異なるユーザーに現れることがあります。一意のキーは、ドメインタイプ、ドメインID、およびドメインスコープ付きユーザーIDの組み合わせです。

例のシナリオ

以下の例では、異なるゲームが同じユーザーをどのように参照するかを示しています:

シナリオユーザーの状況ゲームで見えるユーザーID
ユーザーがゲームAに接続戻ってきたプレイヤー(スコープ付きID以前に訪れた)123(グローバルID、変更なし)
ユーザーがゲームBに接続スコープ付きIDの展開後の初回訪問500789(ゲームBのドメインスコープ付きユーザーID)
ユーザーがゲームCに接続スコープ付きIDの展開後の初回訪問302441(ゲームCのドメインスコープ付きユーザーID)

戻ってきたプレイヤー

プレイヤーがスコープ付きユーザーIDの展開前にすでにあなたのゲームに参加していた場合、そのゲームにおける元のグローバルユーザーIDを保持します。これにより、既存のデータストアキー、リーダーボード、インベントリが変更なしで引き続き機能します。

ユーザー型の扱い方

Userは、ゲームコード内のユーザーを識別する標準的な方法です。Userの値は、ドメインスコープ付きユーザーIDとともにドメインタイプおよびドメインIDを保持するため、アイデンティティのコンテキストは常に識別子と共に送信されます。APIの詳細については、Userのリファレンスを参照してください。

プレイヤーからユーザーを取得する

Userを取得する主な方法は、接続されたPlayerからPlayer.Userを介して行います:


local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local user = player.User
print("ドメインユーザーID:", user.Id)
print("ドメインタイプ:", user.DomainType)
print("ドメインID:", user.DomainId)
end)

IDからユーザーを構築する

現在のゲーム内で既知のユーザーIDからUserを作成するには、User.fromId()を使用します:


local user = User.fromId(knownUserId)

エンジンAPIでのユーザーの使用

ユーザーIDパラメーターを受け入れるエンジンAPIは、Userの値を直接受け入れます。Userの使用を推奨します:


-- 両方の形式が動作します:
BadgeService:AwardBadge(player.User, badgeId) -- 推奨
BadgeService:AwardBadge(player.UserId, badgeId)

-- 両方の形式が動作します:
local target = Players:GetPlayerByUserId(player.User) -- 推奨
local target = Players:GetPlayerByUserId(someUserId)

数値のユーザーIDがユーザーIDを受け取るエンジンAPIに渡されると、自動的にUserにラップされます。

ユーザーIDを返すエンジンAPI

数値のユーザーIDを返すエンジンAPIは、同じフィールド名と型を使用し続けます。返される各IDは、プレイヤーがスコープ付きIDの展開前または後にゲームに参加したかに応じて、グローバルIDまたはドメインスコープ付きユーザーIDのいずれかです:

  • 戻ってきたプレイヤー(最初にスコープ付きIDの展開前に参加)— APIはユーザーのグローバルユーザーIDを返します。
  • 新しいプレイヤー(最初にスコープ付きIDの展開後に参加)— APIはユーザーのドメインスコープ付きユーザーIDを返します。

グローバルおよびドメインスコープ付きユーザーIDは、衝突しない標準の整数ですので、これらの数値フィールドを読み取る既存のコードは引き続き機能します。

ユーザーアイデンティティの保存

単一のゲーム内のデータストアキーには、直接user.Idを使用します:


local key = ("player_%d"):format(player.User.Id)
PlayerDataStore:SetAsync(key, data)

他のシステムによって読み取られる可能性のある値や完全なドメインコンテキストが必要な値については、UserToString()でシリアライズします:


local encoded = player.User:ToString()
SomeDataStore:SetAsync("support_ticket_user", encoded)
-- 後で、文字列から復元
local user = User.fromString(encoded)

シリアリゼーションの保証についての詳細は、Userのリファレンスを参照してください。

ベストプラクティス

  • 新しいコードでは、標準識別子としてPlayer.Userを使用してください。
  • ToString()fromString()を使用して、User値を永続化または送信する際に使用してください。
  • あるドメインからの数値のユーザーIDを使用して、別のドメイン内のユーザーを特定しないでください。

ユーザーまたはプレイヤーを使用する場合

  • サーバー内のアクションにはPlayerを使用します:キャラクターの移動、GUI、テレポート、チャット、インベントリ。
  • セッションを超えて持続するアイデンティティにはUserを使用します:データストア、Open Cloudツール、ゲームを超えた参照。
©2026 Roblox Corporation。Roblox(ロブロックス)、RobloxロゴおよびPowering Imaginationは、米国並びにその他の国における登録商標および非登録商標です。