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は最大 100minValue/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(レベル、所持品、コメントなど) → DataStoreScore(整数) → OrderedDataStore
⚠️ 注意点
OrderedDataStore は便利ですが制約も多いです。
❗ 値は整数のみ
テーブルや文字列は保存できません Roblox roblox.fandom.com。
❗ バージョン管理なし
過去の値に戻すことはできません Roblox。
❗ userIds パラメータが使えない
SetAsync のオプションが制限されています Roblox。
🧭 まとめ
OrderedDataStore は:
- 整数値を保存
- 値でソートして取得できる
- ランキング用途に最適
- 普通の DataStoreとは別物
という、非常に用途が明確なデータストアです。
ブログの DataStore 設計シリーズにも、OrderedDataStore の章を追加すると、読者にとって「ランキングの作り方」が一気に理解しやすくなると思います。
必要なら、
- ランキングの完全実装例
- DataStore と OrderedDataStore の併用設計
- ページング処理の実例
なども作れますよ。