学ぶ
エンジンクラス
DataStoreService
作成できません
サービス
複製されていません

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


概要
継承されたメンバー
コードサンプル
データストア予算
local DataStoreService = game:GetService("DataStoreService")
for _, enumItem in pairs(Enum.DataStoreRequestType:GetEnumItems()) do
print(enumItem.Name, DataStoreService:GetRequestBudgetForRequestType(enumItem))
end

APIリファレンス
方法
GetDataStore
機能: DataStore
DataStoreService:GetDataStore(
name:string, scope:string, options:Instance
パラメータ
name:string
scope:string
既定値: "global"
options:Instance
既定値: "nil"
戻り値

GetGlobalDataStore
機能: DataStore
DataStoreService:GetGlobalDataStore():DataStore
戻り値
コードサンプル
グローバルデータストアインスタンスを取得
local DataStoreService = game:GetService("DataStoreService")
local GlobalDataStore = DataStoreService:GetGlobalDataStore()
print(GlobalDataStore.Name)

GetOrderedDataStore
機能: DataStore
DataStoreService:GetOrderedDataStore(
name:string, scope:string
パラメータ
name:string
scope:string
既定値: "global"
コードサンプル
OrderedDataStore の基本
local DataStoreService = game:GetService("DataStoreService")
local pointsStore = DataStoreService:GetOrderedDataStore("Points")
local function printTopTenPlayers()
local isAscending = false
local pageSize = 10
local pages = pointsStore:GetSortedAsync(isAscending, pageSize)
local topTen = pages:GetCurrentPage()
-- 'topTen' のデータはページ上のインデックスがインデックスとして保存されています
-- 各アイテムについて、 'data.key' は OrderedDataStore のキーで、 'data.value' は値です
for rank, data in ipairs(topTen) do
local name = data.key
local points = data.value
print(name .. " のランクは #" .. rank .. " で、 " .. points .. "ポイントです")
end
-- 次のページを読み込む可能性があります...
--pages:AdvanceToNextPageAsync()
end
-- データを作成します
pointsStore:SetAsync("Alex", 55)
pointsStore:SetAsync("Charley", 32)
pointsStore:SetAsync("Sydney", 68)
-- 上位10人のプレイヤーを表示します
printTopTenPlayers()

GetRequestBudgetForRequestType
機能: DataStore
DataStoreService:GetRequestBudgetForRequestType(requestType:Enum.DataStoreRequestType):number
パラメータ
戻り値
コードサンプル
印刷リクエスト予算
local DataStoreService = game:GetService("DataStoreService")
local globalStore = DataStoreService:GetGlobalDataStore()
local function printBudget()
local budget = DataStoreService:GetRequestBudgetForRequestType(Enum.DataStoreRequestType.SetIncrementAsync)
print("現在のセット/インクリメント予算:", budget)
end
for i = 1, 5 do
local key = "key" .. i
local success, err = pcall(function()
globalStore:SetAsync(key, true)
end)
if success then
printBudget()
else
print(err)
end
end

ListDataStoresAsync
イールド
機能: DataStore
DataStoreService:ListDataStoresAsync(
prefix:string, pageSize:number, cursor:string
パラメータ
prefix:string
pageSize:number
既定値: 0
cursor:string

SetRateLimitForRequestType
機能: DataStore
DataStoreService:SetRateLimitForRequestType(
requestType:Enum.DataStoreRequestType, baseLimit:number, perPlayerLimit:number
):()
パラメータ
baseLimit:number
perPlayerLimit:number
戻り値
()
コードサンプル
レート制限の設定
local MigrateScript = require(script.Parent.MigrateScript)
local DataStoreService = game:GetService("DataStoreService")
DataStoreService:SetRateLimitForRequestType(Enum.DataStoreRequestType.StandardRead, 1000, 0)
DataStoreService:SetRateLimitForRequestType(Enum.DataStoreRequestType.StandardWrite, 2000, 0) -- 書き込みが2回あるため、取得の制限の2倍が必要です
DataStoreService:SetRateLimitForRequestType(Enum.DataStoreRequestType.StandardList, 100, 0)
DataStoreService:SetRateLimitForRequestType(Enum.DataStoreRequestType.StandardRemove, 1000, 0)
local sourceStore = DataStoreService:GetDataStore("ds_to_migrate")
local destinationStore1 = DataStoreService:GetDataStore("ds_destination_1")
local destinationStore2 = DataStoreService:GetDataStore("ds_destination_2")
-- 予算を待つためのヘルパー
local function waitForBudget(requestType)
while (DataStoreService:GetRequestBudgetForRequestType(requestType) <= 0) do
task.wait(1)
end
end
waitForBudget(Enum.DataStoreRequestType.StandardList)
local success, pages = pcall(function()
return sourceStore:ListKeysAsync()
end)
if success then
while true do
local items = pages:GetCurrentPage()
for _, item in ipairs(items) do
-- 1. ソースからデータを取得
waitForBudget(Enum.DataStoreRequestType.StandardRead)
local getSuccess, value = pcall(function()
return sourceStore:GetAsync(item.KeyName)
end)
if getSuccess and value ~= nil then
-- 2. データを宛先に移行
waitForBudget(Enum.DataStoreRequestType.StandardWrite)
local setSuccess, err = pcall(function()
destinationStore1:SetAsync(item.KeyName, MigrateScript.Migrate1(value))
end)
if setSuccess then
print("キーを宛先1に正常に移行しました: " .. item.KeyName)
else
warn("キーを宛先1に移行するのに失敗しました: " .. item.KeyName .. " - " .. tostring(err))
end
waitForBudget(Enum.DataStoreRequestType.StandardWrite)
local setSuccess, err = pcall(function()
destinationStore2:SetAsync(item.KeyName, MigrateScript.Migrate2(value))
end)
if setSuccess then
print("キーを宛先2に正常に移行しました: " .. item.KeyName)
else
warn("キーを宛先2に移行するのに失敗しました: " .. item.KeyName .. " - " .. tostring(err))
end
-- 3. ソースからデータを削除
waitForBudget(Enum.DataStoreRequestType.StandardRemove)
local deleteSuccess, err = pcall(function()
sourceStore:RemoveAsync(item.KeyName)
end)
if deleteSuccess then
print("ソースからキーを正常に削除しました: " .. item.KeyName)
else
warn("ソースからキーを削除するのに失敗しました: " .. item.KeyName .. " - " .. tostring(err))
end
else
warn("ソースからキーを取得するのに失敗しました: " .. item.KeyName)
end
end
if pages.IsFinished then break end
-- 3. ページを進める
waitForBudget(Enum.DataStoreRequestType.StandardList)
local nextSuccess = pcall(function()
pages:AdvanceToNextPageAsync()
end)
if not nextSuccess then
warn("次のページに進むのに失敗しました。")
break
end
end
print("移行プロセスが完了しました。")
else
warn("キーのリスト取得に失敗しました。")
end

©2026 Roblox Corporation。Roblox(ロブロックス)、RobloxロゴおよびPowering Imaginationは、米国並びにその他の国における登録商標および非登録商標です。