APIでゲーム情報を取得してみよう。東京のWeb制作会社LIGLIGならできるおもしろいこと。APIでゲーム情報を取得してみよう。APIでゲーム情報を取得してみよう。フロントエンドシェアゲーム大好きハルです。Botでいろんな情報を教えてくれるBotを作りたいなーと考えています。APIを使って自分のSteamの情報を取得して遊んでみたいと思います。フロントエンドのお仕事をしているので、JavaScriptで書いてNode.jsで実行してみます。APIについてSteamとはSteamとはゲーム販売とSNSの機能を持つサービスで、PCゲームをやる方はご存知の方も多いでしょう。APIが公開されており、プロフィール情報を取得してみます。APIキーを取得します。APIキー登録」ページにアクセスブラウザでSteamにログインした状態にしてください。APIキー登録」ページにアクセスします。「ドメイン名」の入力欄があるのでドメインを入力。Use(利用規約)」を読みチェックを入れます。「登録」をクリックします。APIキー」と出たら、「キー」とある項目があります。APIキーになります。これを後で使いますのでメモしておきます。APIドキュメントからWikiが紹介されていて、Wikiに詳細がまとまっています。指定された形式で情報が取得できます。ID情報を取得します。API_KEYは先ほどメモしたAPIキーを使います。VANITY_URLはSteamコミュニティーページのプロフィールページのURLが下記のようになっていると思います。http://steamcommunity.com/id/XXXXX/XXXXXの部分をVANITY_URLに差し替えます。GetPlayerSummarieshttp://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=API_KEY&steamids=プレイヤー情報が取得できます。プロフィール画像が取得できるので使ってみます。IDを指定することができます。GetOwnedGameshttp://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=API_KEY&steamid=STEAM_ID&format=json&include_appinfo=1ユーザーが持っているゲーム情報が取得できます。今度は、1つだけしか指定できないことに注意してください。Node.jsで実行確認ぱぱっと遊びで書いていくので、簡単に同期処理コードが書けるnpmモジュールの「sync-request」を使っていきたいと思います。簡単にですがソースコードの説明をしていきます。require('sync-request');「sync-request」モジュールを読み込んでおきます。APIキーを代入しておきました。user_name変数にはSteamの個人のプロフィールページのURLのhttp://steamcommunity.com/id/XXXXX/「XXXXX」の部分を代入します。1}}アクセスするとこのようにこのように返ってきます。requestで取得後getBody('utf8')で本文のみを取得し、JSON.parse()でJSON形式に変換しています。IDが必要なのでsteam_id変数に入れていたものをsteamidsにセットしてリクエストしています。"https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/XX/XXXXXXXXXX_full.jpg",(省略)}]}}このような感じでprofileurlにプロフィールページURLとavatar、avatarmedium、avatarfullにプロフィール画像があります。これらは使えそうなので抽出しています。IDが必要なので再利用しています。量が多いので、一部だけですが下記のように返ってきます。(省略)]}}nameにゲーム名、playtime_foreverにプレイ時間があり、これらが使えそうなので使いたいと思います。playtime_foreverは60で割ってあげると時間が計算できます。Node.jsで実行Node.jsで実行していきます。今回わたしは下記のバージョンで実行しました。-vv8.0.0ファイル名(app.jsで作ったとします)を指定して実行します。./app.jsすると下記のように黒い画面で実行できるかと思います。console.logで取得確認のみしてみました。この取得できた情報を、DiscordのBotで出力する遊びをやっていきたいと思います。意気込みNode.jsを少しずつ学ぶためにNode.jsで実行するコードを書いてみました。フロントエンドの仕事をしていてjavascriptが使えるので、遊びがてらNode.jsで動かして開発するのが楽しいです。今後も、さらにNode.jsを使って開発していきいろいろなものを遊びながら勉強していきたいと思います。POSTLIGへの自由なメッセージお待ちしています頂いたご意見への回答は行っておりません。