Steam APIが面白い!使い方を徹底解説!
みなさんはSteamのゲームで遊んだことはありますか!?
昔はよくわからん英語のゲーム売ってる場所ってイメージでしたが、モンハンワールドやTerraria、Rim Worldなどの名作を生み出してる超有名プラットフォームです!
今やPCでゲームと言ったら、まず最初にSteamが出てくるレベルです。
そんなSteamですが、なんと無料でAPIを提供しています!
APIを使うとSteamの色々な情報がプログラム経由で取得できるので、オリジナルのツールを作ることができます。
そのためAPIは有料の方が多いんですが、Steamさんはホントに気前がいいですね〜
早速使ってみましょう!
事前準備
Steam APIは無料で使う事ができますが、全てのAPI機能を使うには登録してキーを発行する必要があります。
5分もかからないのでちゃちゃっと済ませましょう。
ユーザー登録
こちらのURLから登録画面に飛べます。サインインすると下の表示が出ます。
ドメイン名は好きな文字列を入れましょう。利用規約をチェックして登録ボタンを押します。
するとキーとドメイン名が表示されます。これは誰にも教えないようにしましょう
Steam APIについて
そもそもAPIとは?
Wikipediaには下記のように記載されています。
アプリケーションプログラミングインタフェース(API、英: Application Programming Interface)とは、ソフトウェアコンポーネントが互いにやりとりするのに使用するインタフェースの仕様である。
引用元:Wkipedia
難しいですが、WEBプログラミングでAPIといえば、URL形式で特定の情報が取得できるようにしたものを指す事が多いです。
大量のデータを取得できるものから、本当は複雑な実装が必要になるようなデータまで、取得できる情報は様々です。
さらにURLから取得できるので、ほとんどのプログラミング言語でシンプルに使う事ができるのも特徴です。
Steam APIで取得できる情報
Stesm APIで取得できる情報は公式リファレンスに載っていますが、全て英語です。なのでこちらに情報を全てまとめました。
実は全てのメソッドでAPIキーを必要とするわけではありません。APIキーが無いものは登録しなくても使えます!
(各メソッドでサンプルURLも載せています。)
GetNewsForApp (v0002)
指定したAppIDのゲームについて、アップデートやイベントなどのニュース情報を返します。
1 |
http://api.steampowered.com/ISteamNews/GetNewsForApp/v0002/?appid=440&count=3&maxlength=300&format=json |
必須 | オプション | 取得できる情報 |
---|---|---|
○ | appid | ゲームのappid |
count | 取得するニュースの数 | |
maxlength | 各ニュースエントリの最大長 | |
format | json,xml,vdfから選べる |
GetGlobalAchievementPercentagesForApp
あるゲームのグローバル実績の取得率を一覧で返します。
1 |
http://api.steampowered.com/ISteamUserStats/GetGlobalAchievementPercentagesForApp/v0002/?gameid=440&format=xml |
必須 | オプション | 取得できる情報 |
---|---|---|
○ | gameid | ゲームのID |
format | json,xml,vdfから選べる |
GetGlobalStatsForGame
指定したゲームのグローバル統計数を返します。
1 |
http://api.steampowered.com/ISteamUserStats/GetGlobalStatsForGame/v0001/?format=xml&appid=17740&count=1&name%5B0%5D=global.map.emp_isle |
必須 | オプション | 取得できる情報 |
---|---|---|
○ | appid | ゲームのappid |
count | グローバル統計名の配列長 | |
name | SteamWorksで定義されている実績名 | |
format | json,xml,vdfから選べる |
GetPlayerSummaries
ユーザーの基本的なプロフィール情報を返します。
1 |
http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=XXXXXXXXXXXXXXXXXXXXXXX&steamids=76561197960435530 |
必須 | オプション | 取得できる情報 |
---|---|---|
○ | key | APIキー |
○ | steamids | steamidのリスト(コンマ区切り) |
format | json,xml,vdfから選べる |
GetFriendList
ユーザーのフレンドリストを返します。
1 |
http://api.steampowered.com/ISteamUser/GetFriendList/v0001/?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&steamid=76561197960435530&relationship=friend |
必須 | オプション | 取得できる情報 |
---|---|---|
○ | key | APIキー |
○ | steamid | steamid |
relationship | (all,friend) | |
format | json,xml,vdfから選べる |
GetPlayerAchievements (v0002)
ユーザーの手に入れた実績一覧を返します。ゲーム名とユーザー名を指定します。
1 |
http://api.steampowered.com/ISteamUserStats/GetPlayerAchievements/v0001/?appid=440&key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&steamid=76561197972495328 |
必須 | オプション | 取得できる情報 |
---|---|---|
○ | key | APIキー |
○ | steamid | Steam ID |
○ | appid | ゲームのID |
l (任意) | 返却データの言語を指定できる |
GetUserStatsForGame (V0001)
あるゲームでそのユーザーが取得した実績を返します。ゲーム名とユーザー名を指定します。
1 |
http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=XXXXXXXXXXXXXXXXX&steamid=76561197960434622&format=json |
必須 | オプション | 取得できる情報 |
---|---|---|
○ | key | APIキー |
○ | steamid | Steam ID |
○ | appid | ゲームのID |
I(任意) | 返却データの言語を指定できる |
GetOwnedGames (v0001)
プロフィールが一般公開されている場合に、プレイヤーが所有するゲームのリストと、そのプレイ時間を取得できます。
1 |
http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=XXXXXXXXXXXXXXXXX&steamid=76561197960434622&format=json |
必須 | オプション | 取得できる情報 |
---|---|---|
○ | key | APIキー |
○ | steamid | Steam ID |
include_appinfo | 出力にゲーム名とロゴを含めるか(デフォルトではappidのみ) | |
include_played_free_games | 無料ゲームを除外しない(デフォルトでは除外されている) | |
format | json,xml,vdfから選べる | |
appids_filter | リストを一連のappidにフィルタする |
GetRecentlyPlayedGames (v0001)
プロフィールが一般公開されている場合に、そのプレイヤーが過去2週間にプレイしたゲームのリストを取得できます。
1 |
http://api.steampowered.com/IPlayerService/IsPlayingSharedGame/v0001/?key=XXXXXXXXXXXXXXXXX&steamid=76561197960434622&appid_playing=240&format=json |
必須 | オプション | 取得できる情報 |
---|---|---|
○ | key | APIキー |
○ | steamid | Steam ID |
count | ゲーム数を制限できる | |
format | json,xml,vdfから選べる |
借りているアカウントが現在そのゲームをプレイしている場合、元の所有者のSteamIDを返します。ゲームが借りられていない場合、また借り手が存在しない場合は0を返します。
1 |
http://api.steampowered.com/ISteamUserStats/GetSchemaForGame/v2/?key=XXXXXXXXXXXXXXXXX&appid=218620 |
必須 | オプション | 取得できる情報 |
---|---|---|
○ | key | APIキー |
○ | steamid | Steam ID |
appid_playing | ゲーム数を制限できる | |
format | json,xml,vdfから選べる(デフォルトではjson) |
GetSchemaForGame (v2)
ゲーム名、ゲームバージョン、実績および統計を返します。
1 |
http://api.steampowered.com/ISteamUserStats/GetSchemaForGame/v2/?key=XXXXXXXXXXXXXXXXX&appid=218620 |
必須 | オプション | 取得できる情報 |
---|---|---|
○ | key | APIキー |
○ | appid | ゲームのAppID |
format | json,xml,vdfから選べる(デフォルトではjson) | |
I(任意) | 返却データの言語を指定できる |
GetPlayerBans (v1)
特定のプレイヤーのコミュニティ、VAC、エコノミー禁止ステータスを返します。
1 |
http://api.steampowered.com/ISteamUser/GetPlayerBans/v1/?key=XXXXXXXXXXXXXXXXX&steamids=XXXXXXXX,YYYYY |
必須 | オプション | 取得できる情報 |
---|---|---|
○ | key | APIキー |
○ | steamids | Steam IDのリスト(コンマ区切り) |
使ってみよう!
早速使っていきましょう。今回は超有名ゲームTerrariaの直近5個のニュースタイトルと著者を並べて表示させてみます。
サンプルコードは下記になりました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# coding: utf-8 import requests BASE_URL = 'http://api.steampowered.com/ISteamNews/GetNewsForApp/v0002/' def main(): option='?appid=105600&count=5&maxlength=300&format=json' url = BASE_URL + option r = requests.get(url) news_list = r.json() for news in news_list['appnews']['newsitems']: print(news['title'] + ' by ' + news['authror']) if __name__ == '__main__': main() |
実行結果は下記のようになりました。ニュースは日々アップデートされていくので、皆さんの画面では違うニュースについて表示されるかも^^;
1 2 3 4 5 |
E3 2019 games every game confirmed by contact@rockpapershotgun.com (Dave Irwin) Re-Logic Announces Terraria: Journey's End by Loki ISP E3 2019 games every game confirmed by contact@rockpapershotgun.com (Dave Irwin) Terraria: Journey's End will be its final major update by contact@rockpapershotgun.com (Dominic Tarason) E3 2019 games every game confirmed by contact@rockpapershotgun.com (Dave Irwin) |
ソースコードについて解説しておきます。このコードの中では下記のことを行なっています。
- URLの設定(7~8行)
- 情報を取得して表示(9~12行)
まずURLの設定です。ベースとなるURLを4行目で作っておき、オプションと組み合わせています。
あとは情報を取得して表示するだけです。今回はJSON形式で受け取っています。
もちろんニュースの名前と著者以外にも、様々な情報が返ってくるデータに入っているので、ぜひ自身の目で確かめてください!
まとめ
Steam APIについてみてみましたがいかがでしたでしょうか?
色々な情報が取得できるので、アイデア次第では何か面白いアプリとか作れそうですね。
APIはビッグデータを提供するので、国や個人の趣味で運営してるもの以外は有料なことが多いんですが、無料で使えちゃうなんてさすがSteamですね!日本の企業とは格が違いすぎます。
このAPIを使って色んな人が開発を始めて、もっとSteamを発展させてほしいという願いを感じます。
ぜひ何か思いついた方は、実際に作ってみては!?
以上!