Steam データ活用

Steam Web APIキーの取得方法【登録→保管→テスト】Python最小サンプル

この記事でできること:
SteamのWeb APIキーの取得 → 安全な保管 → Pythonでの動作確認までを、入口ページの流れに合わせて最短で解説します。
本記事は Steamガイド(入口ページ)Step1補足 で、Step2「公式Web APIの使い方」の前提になります。
既存の関連:APIキーを安全に管理する方法:config.iniを用いたPythonでの設定ガイド

前提と注意(まず確認)

  • ユーザーAPIキーはSteamアカウント+ドメイン名の登録で発行できます(利用規約への同意が必要)。
  • APIによってはキー必須です(例:ISteamUserStats.GetSchemaForGame)。一方、同時接続やニュース等はキー不要のものもあります。
  • キーは秘匿情報です。公開リポジトリや記事本文に貼らないでください(漏えい時は Revoke → 再発行)。

取得手順(最短ルート)

  1. ブラウザで https://steamcommunity.com/dev/apikey を開き、Steamアカウントでサインイン。
  2. Domain Name自サイトの正引きドメインを入力(例:anon-dsc.com)。
    スキーム(https://)やパスは不要。将来サブドメインを切るならその都度 Revoke → 再登録でOK。
  3. Steam Web API Terms of Use に同意して Register。画面に表示されたキーを控える(後で保管)。
  4. 誤って公開した/不要になった場合は、同ページからRevokeして失効できます。

安全な保管(サイト既存方針に合わせる)

本サイトでは既存記事「APIキーを安全に管理する方法:config.ini」の方針に合わせ、以下のいずれかで管理します。

  • 方法A:環境変数(最も安全・サーバー運用向け)
    ローカル設定例 # macOS / Linux export STEAM_WEB_API_KEY="あなたのキー" python script.py # Windows PowerShell setx STEAM_WEB_API_KEY "あなたのキー" # 新しいターミナルを開き直してから python を実行
  • 方法B:config.ini(既存記事と整合)
    既存記事の体裁に合わせるなら [DEFAULT] セクションでOK。サービスごとに分けたい場合は [steam] などの専用セクションを用意します。
    config.ini の例(どちらでも可) ; 既存記事と同じ最小形(DEFAULT) [DEFAULT] API_KEY = あなたのAPIキー ; セクション分離したい場合(任意)

[steam]

API_KEY = あなたのAPIキー

詳しい作り方は:APIキー管理(config.ini)

動作確認(Python最小サンプル)

GetSchemaForGame(キー必須)で、実績スキーマがJSONで取得できるかを確認します。
既存記事との整合のため、環境変数 → config.iniの順で読み込み、[steam]/API_KEY[DEFAULT]/API_KEY の両方に対応します。 コピペ用サンプル(requestsのみ)

import os, requests, configparser

def load_steam_api_key(config_path=None):
    # 1) 環境変数
    key = os.getenv("STEAM_WEB_API_KEY")
    if key and key.strip():
        return key.strip()
    # 2) config.ini(既存記事との整合:DEFAULT/steam 両対応)
    paths = [config_path] if config_path else [
        r"D:\Python\config\config.ini",  # 任意の既定パス(必要に応じて変更)
        "config.ini"
    ]
    cfg = configparser.ConfigParser()
    for p in paths:
        try:
            if not p: continue
            if cfg.read(p, encoding="utf-8"):
                # 優先順: [steam]/API_KEY → [DEFAULT]/API_KEY → [DEFAULT]/STEAM_WEB_API_KEY
                for sect, opt in [("steam","API_KEY"), ("DEFAULT","API_KEY"), ("DEFAULT","STEAM_WEB_API_KEY")]:
                    if cfg.has_option(sect, opt):
                        val = cfg.get(sect, opt).strip()
                        if val:
                            return val
        except Exception:
            pass
    raise SystemExit("APIキーが見つかりません。環境変数またはconfig.iniを設定してください。")

API_KEY = load_steam_api_key()

def get_schema_for_game(appid: int, lang="japanese"):
    url = "https://api.steampowered.com/ISteamUserStats/GetSchemaForGame/v2/"
    r = requests.get(url, params={"key": API_KEY, "appid": appid, "l": lang}, timeout=30)
    r.raise_for_status()
    return r.json().get("game", {})

appid = 2246340  # モンスターハンター ワイルズ(例)
schema = get_schema_for_game(appid)
achvs = (schema.get("availableGameStats") or {}).get("achievements") or []
print("OK - achievements:", len(achvs))

期待される出力: OK - achievements: <整数> が表示されれば、キー設定も通信も正常です。0 の場合は「実績なし」のタイトルというだけで異常ではありません。

キー不要APIの例:GetNumberOfCurrentPlayers(現在の同時接続)、GetNewsForApp(ニュース)。混在利用時は、呼び出し関数側で自動的に key を付与/省略する実装にすると便利です。詳細は 公式Web APIの使い方 を参照。

つまずきやすいポイント(Q&A)

  • JSONDecodeError / Non-JSONレスポンス:キーが付いておらずHTMLが返っている可能性。まず本記事のサンプルで OK - achievements: が出るか確認。
  • Access is denied / Forbidden:キーのタイプミス・無効化・対象外エンドポイントなど。GetSchemaForGame で鍵の有効性を切り分け。
  • Domain Name は何を入れる?:自サイトの正引きドメイン(例:anon-dsc.com)。スキーム(https://)やパスは不要。サブドメインは都度再登録でOK。

次のステップ

  1. 【How-to】公式Web APIの使い方(GetAppList/同時接続/実績/ニュース)
  2. APIキーを安全に管理する方法:config.iniを用いたPythonでの設定ガイド
  3. 【How-to】ストア情報(appdetails)
  4. 【How-to】レビュー本文(appreviews)

入口に戻る:Steamガイド

免責:本記事は公開情報の整理が目的です。仕様やメッセージは予告なく変わる可能性があります。最新の公式ドキュメントと利用規約をご確認ください。

-Steam, データ活用
-, , , , ,