ユーザーとドメインスコープのユーザー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を使用します:データストア、オープンクラウドツール、体験間の参照。
©2026 Roblox Corporation。Roblox(ロブロックス)、RobloxロゴおよびPowering Imaginationは、米国並びにその他の国における登録商標および非登録商標です。