OrderedDataStore は Roblox の DataStore の中でも “ランキング専用” の特別な仕組みで、普通の DataStore と性質がかなり違います。検索結果の情報を踏まえて、要点を整理して説明しますね。


📘 OrderedDataStoreとは何か

OrderedDataStore は 値が必ず「正の整数」でなければならない特別な DataStore です Roblox roblox.fandom.com

その代わりに、
値でソートされたデータを取得できる
という強力な特徴があります。

つまり:

  • スコアランキング
  • プレイ時間ランキング
  • 所持金ランキング

など、「順位付け」が必要な場面で使うための DataStore です。


🔍 OrderedDataStore の特徴(普通の DataStore との違い)

機能 DataStore OrderedDataStore
保存できる値 何でも(テーブル含む) 正の整数のみ Roblox roblox.fandom.com
ソート取得 できない できる(GetSortedAsync) Roblox Roblox
バージョン管理 あり なし Roblox
メタデータ あり なし Roblox
SetAsync の userIds パラメータ 使える 使えない Roblox

🧭 主なメソッド

✔️ GetSortedAsync(ascending, pageSize, minValue, maxValue)

値でソートされたデータをページ形式で取得するメソッド Roblox

  • ascending = true → 小さい順
  • ascending = false → 大きい順(ランキングでよく使う)
  • pageSize は最大 100
  • minValue / maxValue で範囲フィルタも可能

🧩 使い方の典型パターン

🎮 例:スコアランキング

local DataStoreService = game:GetService("DataStoreService")
local scoreStore = DataStoreService:GetOrderedDataStore("Score")

-- スコア保存
scoreStore:SetAsync(player.UserId, score)

-- ランキング取得
local pages = scoreStore:GetSortedAsync(false, 10)
local top10 = pages:GetCurrentPage()

🧠 よくある設計パターン

検索結果にもあるように Zenn

  • ランキングに使う整数値だけ OrderedDataStore に保存
  • その他のデータは普通の DataStore に保存

という「二段構え」が一般的です。

例:

  • UserData(レベル、所持品、コメントなど) → DataStore
  • Score(整数) → OrderedDataStore

⚠️ 注意点

OrderedDataStore は便利ですが制約も多いです。

❗ 値は整数のみ

テーブルや文字列は保存できません Roblox roblox.fandom.com

❗ バージョン管理なし

過去の値に戻すことはできません Roblox

❗ userIds パラメータが使えない

SetAsync のオプションが制限されています Roblox


🧭 まとめ

OrderedDataStore は:

  • 整数値を保存
  • 値でソートして取得できる
  • ランキング用途に最適
  • 普通の DataStoreとは別物

という、非常に用途が明確なデータストアです。

ブログの DataStore 設計シリーズにも、OrderedDataStore の章を追加すると、読者にとって「ランキングの作り方」が一気に理解しやすくなると思います。

必要なら、

  • ランキングの完全実装例
  • DataStore と OrderedDataStore の併用設計
  • ページング処理の実例

なども作れますよ。