11月から Xbox Cloud Gaming が「時間制」になります。Game Pass Ultimate でもクラウドで遊べるのは月15時間まで、それを超えたら1時間あたり約24〜40セントの時間パックを買う、という仕組みです。
「月15時間で足りるの?」という疑問に、感想ではなくデータで答えたくなったので、Xbox 公式のクラウド対応タイトル一覧(562本)を取得し、各タイトルのクリア時間と突き合わせてみました。この記事はその手順(Python)と結果のまとめです。カタログ API の叩き方、表記ゆれのあるゲーム名の照合、時間パックの最安組み合わせ(ナップサック的な DP)など、ほかの価格比較にもそのまま使える部分が多いと思います。

Xbox Cloud Gaming カタログ(562本、2026年10月22日 8:30 AM ET 取得)× HowLongToBeat のメインストーリー中央値。464本を計測。
結論(先に)
- クリア時間のデータが取れた 464本のうち196本(42%)は、メインストーリーだけで15時間を超えます。つまり最上位プランの Ultimate でも、1か月分のクラウド枠ではエンディングまで届きません。
- Premium(月10時間)を超えるのは 62%、Essential(月5時間)を超えるのは 88%。
- サブ要素込みだと 64% が15時間超。
- メインストーリーの中央値は 12.6時間、サブ要素込みの中央値は 22.2時間。
- 有料タイトル425本のうち 27本は「ストリーミングでクリアするパック代」が「今日のストア価格で買う値段」を上回ります(例:Fallout 4 は購入 $4.99、メインストーリーをストリーミングすると $11.97)。
| 項目 | 数値 | 出典(2026年10月22日確認) |
|---|---|---|
| 月あたりのクラウド時間(Ultimate / Premium / Essential) | 15 / 10 / 5 時間 | Xbox Wire 9月3日 |
| 時間パック(導入価格・米国) | 10時間 $3.99、25時間 $7.99、50時間 $11.99 | Xbox Wire 10月21日 |
| 1時間あたり | パック $0.24〜$0.40、Ultimate は $1.53(クラウド部分だけで見た場合) | 筆者計算 |
| メインストーリー15時間超 | 196 / 464(42%) | 筆者データ |
価格はすべて米国のものです。Xbox は「市場、デバイス、アカウントによって提供内容が異なる」としていて、日本での時間パックの価格や提供時期はまだ発表されていません。日本のユーザーにとっては「米国で先に始まった変更が、どの程度の影響を持つか」を見積もる材料として読んでください。
何が変わるのか
9月3日の Xbox Wire で、11月から Game Pass の各プランに「月ごとのクラウドゲーミング時間」が設定されると発表されました。Ultimate 15時間、Premium 10時間、Essential 5時間です。理由として Xbox は「クラウドゲーミングの提供コストは、利用者が増えて長く遊ぶほど増える」と説明し、影響を受けるのは「Game Pass 加入者の4%」と見込んでいます。
10月21日には、Game Pass に加入していない Xbox Insider 向けに、時間パックのテスト販売が始まりました。10時間 $3.99、25時間 $7.99、50時間 $11.99 の「導入価格」で、買った時間は使い切るまで残ります。ただし注記にある通り、遊べるのは「クラウド対応ゲームを購入済み」の場合(一部の基本無料タイトルを除く)です。つまり、自分で買ったゲームを、時間単位でもう一度お金を払ってストリーミングする形になります。
「4%」は人数の話です。ゲームの側から見るとどうなるのかを確かめるのが、今回の目的です。
手順1:クラウド対応タイトルの一覧を取る
Game Pass のカタログ表示には、catalog.gamepass.com の「sigl」という公開リスト API が使われていて、認証なしでタイトル ID の一覧を取れます。クラウド対応の「All games」リストはこの ID です。
import json, urllib.request
SIGL = "29a81209-df6f-41fd-a528-2ae6b91f719c" # Xbox Cloud Gaming: All games
url = f"https://catalog.gamepass.com/sigls/v2?id={SIGL}&language=en-us&market=US"
items = json.load(urllib.request.urlopen(url))
# 先頭要素はリスト自体のメタ情報、2件目以降が {"id": "9NPDN9R45JX4"} の形
ids = [x["id"] for x in items[1:]]
print(len(ids)) # 562(2026-10-22 時点)
認証は不要で、market=JP にすれば日本のリストも取れます(今回は価格を米国にそろえるため US を使いました)。
手順2:タイトル名と価格を Microsoft Store から引く
ID だけでは名前が分からないので、Microsoft Store の display catalog API に20件ずつ投げます。
import time
def fetch_products(ids, market="US", lang="en-us"):
out = {}
for i in range(0, len(ids), 20):
batch = ",".join(ids[i:i+20])
u = (f"https://displaycatalog.mp.microsoft.com/v7.0/products"
f"?bigIds={batch}&market={market}&languages={lang}")
d = json.load(urllib.request.urlopen(u))
for p in d.get("Products", []):
lp = p["LocalizedProperties"][0]
price = None
for sku in p.get("DisplaySkuAvailabilities", []):
for a in sku.get("Availabilities", []):
if "Purchase" in a.get("Actions", []):
price = a["OrderManagementData"]["Price"]["ListPrice"]
break
if price is not None:
break
out[p["ProductId"]] = {"title": lp["ProductTitle"], "price": price}
time.sleep(0.3)
return out
ListPrice は「その時点のストア表示価格」なので、セール中のタイトルはセール価格になります。今回の「買うより高い」比較も、取得時点(10月22日朝)の価格です。
手順3:クリア時間のデータと照合する
クリア時間には、プレイヤーが自分のプレイ時間を投稿する HowLongToBeat の中央値を使いました(メインストーリー / サブ要素込み / やり込み)。サイト内検索で1件ずつ引き、1.2秒以上の間隔を空けています(562件で十数分)。相手のサーバーに負荷をかけないことを優先してください。
難しいのは名前の照合です。Xbox 側は「Standard Edition」「Xbox Series X|S」「Console Edition」などが付き、商標記号も混ざります。そこで、エディション表記を落としてから英数字だけに正規化し、完全一致、だめなら近い前方一致だけを採用しました。
import re
def clean(t):
t = re.sub(r"[®™©]", "", t) # ® ™ ©
t = re.sub(r"\s*\((Xbox|Game Preview|PC|Windows|Cloud)[^)]*\)", "", t, flags=re.I)
t = re.sub(r"\s*[-:]\s*(Xbox Series X\|S|Standard Edition|Console Edition|"
r"Xbox One Edition|Windows Edition)\s*$", "", t, flags=re.I)
return t.strip()
def norm(s):
return re.sub(r"[^a-z0-9]", "", s.lower().replace("&", "and"))
def pick(query, candidates):
q = norm(query)
for c in candidates: # 1) 完全一致
if norm(c["game_name"]) == q:
return c
for c in candidates: # 2) 近い前方一致のみ
n = norm(c["game_name"])
if (n.startswith(q) and len(n) - len(q) <= 18) or \
(q.startswith(n) and len(q) - len(n) <= 22 and len(n) >= 6):
return c
return None
結果は 562本中520本がマッチ、そのうちメインストーリーの投稿が3件以上ある 464本 を集計対象にしました。前方一致のせいで「Broken Age」が「Broken Age: Act 2」に当たるような誤マッチが少しあるので、CSV には HowLongToBeat 側の名前も残しています。
手順4:時間パックの「最安の買い方」を DP で求める
「30時間遊ぶにはいくら必要か」は、単純な掛け算ではありません。10時間 $3.99、25時間 $7.99、50時間 $11.99 の組み合わせで、必要時間以上を最安で満たす問題です。上限付きでない(同じパックを何個でも買える)ので、小さな DP で解けます。
import math
PACKS = [(10, 3.99), (25, 7.99), (50, 11.99)]
def pack_cost(hours):
h = math.ceil(hours)
best = [0.0] + [float("inf")] * (h + 60)
for x in range(1, h + 60):
for ph, pc in PACKS:
best[x] = min(best[x], best[max(0, x - ph)] + pc)
return round(min(best[h:]), 2) # h 時間「以上」を満たす最安値
print(pack_cost(32.1)) # GTA V のメインストーリー → 11.98(25時間+10時間。50時間パック1つだと 11.99)
print(pack_cost(12.6)) # 中央値のゲーム → 7.98(10時間パック×2)
min(best[h:]) にしているのがポイントで、「ちょうど h 時間」ではなく「h 時間以上」の最安を取ります。たとえば 12時間なら、10時間×2($7.98)と25時間×1($7.99)がほぼ同額で、余った時間は次のゲームに回せます。
結果

出典:Xbox Wire(10月21日、9月3日)、Game Pass Ultimate $22.99(Xbox Wire 4月21日)。米国価格。
分布を見ると、5〜10時間と10〜15時間の山が大きい一方で、15時間を超えるタイトルが196本あります。30時間超も72本です。
人気タイトル(HowLongToBeat の完了報告300件以上)に絞ると、長いものは名作 RPG が並びます。

HowLongToBeat のメインストーリー中央値(完了報告300件以上)。パック代は 10/25/50 時間パックの最安組み合わせ。
- Persona 5 Royal:101時間。Ultimate のクラウド枠で7か月、パックなら $27.97
- Mass Effect Legendary Edition:61時間。5か月、$19.97(ストア価格 $14.99 より高い)
- Kingdom Come: Deliverance II:56時間。4か月、$15.98
- Halo: The Master Chief Collection:43時間。3か月、$11.99
面白いのは1時間あたりの単価です。パックは $0.24〜$0.40 なのに、Ultimate(月 $22.99 で15時間)をクラウド目的だけで見ると 1時間 $1.53 になり、サブスク加入者がいちばん高い単価を払う構図になります。もちろん Ultimate にはライブラリや PC Game Pass、オンライン対戦も含まれるので、これは「クラウドだけで使っている人」にとっての数字です。
注意点
- HowLongToBeat は投稿ベースの中央値です。マルチプレイ中心やライブサービス型のゲーム(War Thunder など)は「メインストーリー」の時間が実態とずれるので、エンディングまでの時間ではなく「典型的なプレイ時間」として読んでください。
- 価格は米国の導入価格で、Xbox 自身が「導入価格」と書いています。今後変わる可能性があります。
- ストア価格は取得時点の表示価格です。セールの影響を受けます。
- 名前の照合は自動なので、少数の誤マッチがあります(CSV で確認できます)。
考察(ここからは意見です)
GTA VI は11月19日発売で、クラウドの時間制が始まるのと同じ月です。GTA VI のクラウド配信の有無はまだはっきりしていませんが、前作 GTA V のメインストーリーは HowLongToBeat で 32.1時間(3,381件)なので、同じくらいの長さなら Ultimate のひと月分で約47%しか進みません。
さらに Fortune は10月20日、次世代 Xbox(Project Helix)の価格が社内で $1,200〜$1,800 と見積もられていると報じています。「本体がなくてもクラウドで遊べる」が安い入り口だったはずが、本体は高く、クラウドにはメーターが付く。私の見立てでは、クラウドはこれまで「顧客獲得のための赤字部門」で、Microsoft はもう十分に獲得したと判断したのだと思います。
データと元記事
- 集計データ(CSV、1行1タイトル:Xbox の価格、HowLongToBeat の時間、Ultimate で必要な月数、最安パック代):https://tensorust.com/articles/xbox-cloud-gaming-hours-cap/data.csv
- 英語版の元記事(グラフと出典つき):https://tensorust.com/articles/xbox-cloud-gaming-hours-cap/?utm_source=qiita&utm_campaign=xbox-cloud-meter
皆さんに聞きたいこと
- 日本で時間パックが始まったら、Game Pass をやめてパックだけにしますか?
- 「時間課金」は月に数回しか遊ばない人には公平だと思いますか、それとも買ったゲームへの追加課金だと感じますか?
- 同じ方法で GeForce NOW や PlayStation のクラウドと比べるなら、どの指標を見るべきだと思いますか?
コメントで教えてもらえるとうれしいです。