2018の23日目の記事です。Steamには、2週間前から現在までの間に遊んだゲームのプレイ時間を、プロフィールページに表示する機能があります。プレイヤーはこの表記を見て、2週間の間に何時間ゲームを遊んだのか把握できます。Steamプロフィールページよりしかし、実際には「●月●日に何時間ぐらいPCゲームで遊んでいたのか」知りたかったり、「平日のプレイ状況を俯瞰したい」と調べたくなったりします。Steamが提供するWebAPIでは、2週間に何時間遊んだかを取得するAPIしか公開されていないため、知ることができません。いったことを知りたくなったら、どうにかしてシステムを自作する必要があります。自作の場合、アプリケーションサーバやデータベースを用意する必要があり、技術の選定から開発まで時間が掛かって、面倒です。Scriptを用いて、アプリケーションサーバやデータベースなどを用意せずに、1日に何時間ゲームを遊んだか記録できるシステムを構築しました(大げさ)。この記事では、どうやって構築したか紹介します。Script」で作成した関数を1分毎に実行するSteamの1日あたりのプレイ時間をグラフで可視化するまとめSteamでの活動状況をスクレイピングで取得するまず、プレイヤーがゲームを遊んでいるかどうか、活動状況を取得しなければなりません。活動状況を取得する「GetPlayerSummaries/v2/」というAPIが公開されていますが(参考)、今回はWebスクレイピング技術を利用しました。具体的には、自身のSteamプロフィールページに着目します。Steamには「オンライン」「ゲーム中」という2つの大きなステータスが存在します。オンラインは「Steamを起動している状態」。ゲーム中は、「Steamでゲームを遊んでいる状態」です。オンラインでは「プロフィールページ」や「フレンド&チャットリスト」の名前は青色の線で囲まれて表示され、ゲーム中は緑色で囲まれます。この振る舞いをどう実装しているのか、ソースコードで確認します。オンラインのとき、プロフィールページのソースコードの一部はこうなります。class="profile_in_game_header">現在オンラインです。</div></div></div></div>ゲーム中のとき、プロフィールページのソースコードの一部はこうなります。persona」の後ろが「online」か「in-game」かで、プロフィールページのアイコンを囲う色が変わっています。1分毎にこの値をチェックして「online」であればゲームを遊んでいない、「in-game」であれば、ゲームを遊んでおり、「profile_in_game_name」の要素からゲーム名を取得できます。Gmailなど)と連携できるJavaScriptベースのスクリプト言語です。誰でも無料で利用できます。今回は、外部ライブラリ「Parser」を用いて「online」か「in-Game」の値を取得し、その値を基にスプレッドシートに記録するコードを書きました。公開されている「Parser」という外部ライブラリは、スクレイピングで取得したい値の前後を指定すれば取得できる便利なライブラリです(参考)。外部ライブラリをGASで利用するには、左上のメニューから「リソース」「ライブラリ」を選び、ライブラリ固有のIDを入力します。ちなみにParserのIDは「M1lugvAXKKtUxn_vdAG9JZleS6DrsjUUV」です。Script」で作成した関数を1分毎に実行する作成したコードを定期的に実行するにはトリガー機能を利用します。左上の吹き出し時計マークを選択すると、トリガー一覧ページが表示されるので、作成した関数を自動で実行するための新規トリガーを追加します。これで、作成した関数が1分おきに自動で実行されるようになり、スプレッドシートへの記録が始まります。Steamの1日あたりのプレイ時間をグラフで可視化するというわけで、2018年12月22日のプレイ時間を実際に集計したので、グラフにして見てみます。ゲームで遊んだ時間を可視化するため、起動していないタイミングを「0」、起動しているタイミングを「1」とする列と、何時の記録か、hour関数で抽出した列を用意しました。全データを選択し「データ」メニューにある「ピボットテーブル...」でピボットテーブルを作成します。行を抽出した時間に、値を「0」と「1」の列に設定して、生成された表を選び、グラフを作成します。いうわけで2018年12月22日のゲームを遊んだ時間をグラフ化したものがこちらになります。3時から6時まで、15時から18時まで、20時から0時すぎまでゲームをやっているということが簡単に分かりました。Scriptを用いて、ゲームのプレイ時間を記録してみました。実は「1日に何回ゲームを遊んだか記録したい」という気持ちがあるので、システムは完成していません。グラフを見れば「3回」となんとなく分かるのですが、機械的にどう抽出できるのか、考えています。「こうすればできるよー」というアイデアを待っています。改善できる点としては、Webスクレイピングで取得しているので、SteamのWebサイトに繋がらないとデータを取得できません。12月22日のスクレイピングは、3回失敗していたので、分岐処理を追加し、取得できなかった旨を記録する必要がありますね。今回は自分のアカウントで試しましたが、Steamでの活動状況を公開しているユーザーのゲームプレイ時間を監視することが簡単にできてしまいます。いうのがされたくない方は、公開設定を見直しておいたほうが良いのかもしれません。Steamでプレイ中のゲームや所持本数を非公開にする方法Steamのプライバシー設定が変更され、細かく個人の情報の公開・非公開が選択できるようになりました。本記事では、Steamのプライバシー設定へのアクセス方法と、細かく設定できるようになった項目について紹介します。date*日本語が含まれない投稿は無視されますのでご注意ください(スパム対策)。Box」から、PCゲームにハマっています。PCゲームを遊びながらSteamやPCゲーム界隈に関する記事などを書いています。Box」から、PCゲームにハマっています。PCゲームを遊びながらSteamやPCゲーム界隈に関する記事などを書いています。Store」が批判される理由/またはRedditで反Epicコミュニティができた背景2019.06.22Steamの通知設定やボイス設定を変更する2018.08.132019.08.06エースコンバット7のフリーカメラMODを紹介2019.08.142019.08.24タイトルとURLをコピーしました。