栖王ヴァルハラ3丁目 ヘッダーイラスト
Illustration by ruder

明日になったら今日じゃない

栖王ヴァルハラ3丁目

すばら3 / Subara3

自分のお気に入りのゲームを集めたSteamのダッシュボードを作ろう!

カテゴリ: tech

タグ: 技術,Steam

自分のSteamライブラリから好きなゲームを集めた紹介サイトを作成しました。

ソースコードも公開したので、似たようなものを作りたい方の参考になればと思います。

GitHub - Subara3/steam-game-shelf: すばらしきSteamゲームの本棚 — Steamゲームのセール情報ダッシュボード
すばらしきSteamゲームの本棚 — Steamゲームのセール情報ダッシュボード. Contribute to Subara3/steam-game-shelf development by creating an account on GitHub.
GitHub

Steamで遊んだゲームの中から、おすすめを並べたダッシュボードです。

すばらしきSteamゲームの本棚|Balatro・Stardew Valleyなどおすすめインディーゲーム
Balatro、Stardew Valley、RimWorld、Undertale、Disco Elysiumなど厳選インディーゲームのセール・価格情報。
すばらしきSteamゲームの本棚

全体のしくみ

アーキテクチャ図

このサイトは、SteamのAPIを利用することで、自動的にセール情報を取得しています。

  1. Steam APIからゲーム情報を取得(Python)
  2. 取得したデータから静的サイトを生成(Python)
  3. GitHub Actionsで自動実行し、FTPでサーバーにデプロイ

という流れです。

Steam Web APIでデータを取る

Steamには公式のWeb APIがあり、ゲームの情報をJSON形式で取得できます。

https://store.steampowered.com/api/appdetails?appids=2379780&l=japanese

APIキー不要です。このURLにアクセスするだけで、価格、説明文、スクリーンショット、ジャンル、対応プラットフォームなどが返ってきます。

どのゲームを追跡するかは games.json というファイルにAppIDを列挙して管理しています。AppIDはSteamストアのURLに含まれている番号です。たとえばBalatroなら store.steampowered.com/app/2379780 の部分。

レビュー統計も別エンドポイントで取れます。

https://store.steampowered.com/appreviews/2379780?json=1&language=all

取得したデータは日次スナップショットとしてJSONファイルに保存します。日付ごとにファイルを分けることで、過去の価格履歴を追えるようになっています。

静的サイトとして生成する

ビルドスクリプト(build_site.py)がやるのは主に3つ。

  1. ダッシュボード用JSONの生成 ― フロントエンドの Alpine.js が読み込む
  2. Markdown記事のHTML変換 ― 対話形式の独自記法もここで処理する
  3. SEO関連ファイルの生成 ― sitemap.xml、robots.txt

GitHub Actionsで毎日自動更新

GitHub Actions ワークフロー図

GitHub Actionsを使い、毎朝7時(JST)に自動でデータ更新からデプロイまでを行っています。

  1. リポジトリをチェックアウト
  2. fetch_steam.py でSteam APIからデータ取得
  3. build_site.py で静的サイト生成
  4. 変更があれば git commit & push
  5. FTPでロリポップにデプロイ

パブリックリポジトリならGitHub Actionsは無料で使えます。プライベートでも月2,000分まで無料。このワークフローは数分で完了するので十分です。

フロントエンド

フロントエンドは Alpine.js + Pico CSS です。

Alpine.jsは軽量なJSフレームワークで、ReactやVueと違ってビルドステップが不要です。

CSSはPico CSSをベースに、Steamの配色( #1b2838#66c0f4 等)でダークテーマを組んでいます。

技術スタック

領域技術
データ取得Python 3.12(stdlib のみ)
サイト生成Python 3.12(stdlib のみ)
フロントエンドAlpine.js + Pico CSS
CI/CDGitHub Actions(毎日定期実行)
ホスティングロリポップ(FTPデプロイ)
バージョン管理GitHub(パブリック)

おわりに

「もしかして、ダッシュボードみたいな静的なサイトだったら、AWSのEC2とか、GCPとかの課金が発生する可能性があるものを使わないで作れるんじゃないか?」という技術検証目的で作成しました。

(私はロリポップ+独自ドメインを使用しているので、厳密には無料ではないんですが……。)

自動ビルド&デプロイをいつかやってみたいと思っていたんですが、自分でやってみて、ようやく良さが分かった気がします。CI/CDというのは素晴らしいですね。

Pulseのほうも、特にみられて困る情報はない(はず)なので、GitHubに移そうかな~。

PULSE - AIの鼓動|ライフゲーム・マンデルブロ集合・ローレンツアトラクタなどビジュアライゼーション
ライフゲーム、マンデルブロ集合、ジュリア集合、ローレンツアトラクタ、フーリエ変換、ボイド、振り子など数学・物理シミュレーションを眺めて遊べるサイト。AIが毎日更新。
PULSE

また、SteamにはAPIがあったので、GitHub Actionsと組み合わせればデータがとり放題です。

私はロリポップにファイルを置いていますが、GitHub PagesやCloudflare Pagesとかだと、まあまあ、まあまあ、いけそうです。

いまどきのあんまり動きのない同人サイトだったら、GitHub PagesとかCloudflare Pagesで作れたりもしそうです。静的サイトジェネレーター+無料ホスティングの組み合わせで、思った以上にいろいろできそうです。

みなさんもぜひやってみてください。

記事

プライバシーポリシー Last Update: 2025/10/14

個人情報の取り扱いについて

当サイトでは、お問い合わせフォームからご連絡いただいた際に、お名前やメールアドレスなどの個人情報をお預かりすることがあります。

これらの情報は、お問い合わせへの返信や必要なご連絡のためにのみ使用し、それ以外の目的で使用することはありません。また、法令に基づく場合を除き、第三者に開示・提供することはありません。

Cookieの使用について

当サイトでは、サイトの利便性向上やアクセス解析のためにCookieを使用しています。

Cookieはブラウザの設定により無効にすることができますが、一部の機能が正しく動作しなくなる場合があります。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Google Analytics」を使用しています。

Google Analyticsはトラフィックデータの収集のためにCookieを使用しており、このトラフィックデータは匿名で収集されています。個人を特定するものではありません。

この機能はCookieを無効にすることで収集を拒否することができますので、お使いのブラウザの設定をご確認ください。

詳細については、Google アナリティクス利用規約をご参照ください。

広告の配信について

当サイトでは、第三者配信の広告サービス「Google AdSense」を使用しています。

広告配信事業者は、ユーザーの興味に応じた広告を表示するためにCookieを使用することがあります。

Google AdSenseの詳細については、Google 広告に関するポリシーをご参照ください。

アフィリエイトについて

当サイトは、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイトプログラムである、Amazonアソシエイト・プログラムの参加者です。

その他、各種アフィリエイトプログラムに参加している場合があります。

著作権について

当サイトに掲載されている文章、画像、その他のコンテンツの著作権は、当サイト管理者または正当な権利を有する第三者に帰属します。

無断転載・複製はご遠慮ください。引用の際は、出典を明記のうえ、リンクを貼っていただけますようお願いいたします。

免責事項

当サイトの情報は、可能な限り正確な情報を掲載するよう努めていますが、その正確性や安全性を保証するものではありません。

当サイトに掲載された内容によって生じた損害等について、一切の責任を負いかねますのでご了承ください。

また、当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直し、その改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。

01

ここについて

栖王ヴァルハラ3丁目は、個人(頻子)が運営しているサイトです。小説、ゲーム、アプリケーションなどがあります。サイトのコンテンツは、予告なく改稿したり、削除されることがあります。

(2022/5/29)二次創作置き場を増設しました。


もし何かご用があれば、お問い合わせフォームからお声をおかけください(記名不要)。

応援・ご感想・誤字脱字報告などお気軽にどうぞ

お問い合わせ
02

自己紹介

頻子(ひんこ)です。
ゲームと文章を書くことが好きです。

info★subara3.com (★→@)

活動場所

投げ銭

03

このサイトへのリンク

2017/09/06 有料サーバーに移行 2025/10/10 独自ドメイン化
04

既刊情報

すばら3ロゴ

すばら3の既刊はBOOTH、DLsite、kindle、あるいは各種イベントで入手することができます。

一部の本は、国会図書館に預けてきました
寄稿したものは、それぞれの頒布先をご確認ください。

サークルロゴは高瀬川さんがつくってくださいました。ありがとう!

05

寄稿・お手伝い

06

お仕事

気まぐれに軽めの単発案件を受け付けています。
簡単なスクリプトなど、ご入用のものがありましたらぜひどうぞ!

info★subara3.com (★→@)

07

プライバシーポリシー

最終更新: 2025/10/14

個人情報の取り扱い

お問い合わせフォームからご連絡いただいたメッセージは、必要なご連絡のためにのみ使用します。許可なく第三者に開示・提供することはありません。

Cookieの使用

サイトの利便性向上やアクセス解析のためにCookieを使用しています。ブラウザ設定で無効にできますが、一部機能が正しく動作しなくなる場合があります。

アクセス解析

Google Analyticsを使用しています。トラフィックデータは匿名で収集され、個人を特定するものではありません。

広告配信

第三者配信の広告サービス「Google AdSense」を使用しています。ユーザーの興味に応じた広告表示のためにCookieを使用することがあります。

アフィリエイト

Amazonアソシエイト・プログラム等に参加しています。

著作権

掲載コンテンツの著作権は当サイト管理者または正当な権利者に帰属します。無断転載・複製はご遠慮ください。

免責事項

情報の正確性・安全性を保証するものではありません。当サイトの内容によって生じた損害等について責任を負いかねます。