🎮 はじめに
大乱闘スマッシュブラザーズ(スマブラ)は、世界中で人気の高い対戦型アクションゲームです。
プレイヤー同士の駆け引きやテクニックが勝敗を分けますが、実はそこに「データ的な傾向」が存在するのでは?という興味から、今回のプロジェクトを立ち上げました。
本シリーズでは、スマブラの対戦結果データと気象情報を組み合わせて、以下の疑問をデータで解明していきます!
- キャラクターごとに勝率に違いはあるのか?
- 特定のキャラ同士に有利・不利な相性はあるのか?
- 気温・時間帯が勝敗に影響することはあるのか?
🧰 使用技術スタック
分類 | 使用技術 |
---|---|
ローカル環境 | Docker / Django / Python / BeautifulSoup / GitHub / bash |
データ処理 | AWS S3 / Glue / PySpark / Step Functions / Lambda |
可視化 | Tableau Desktop |
📊 プロジェクト概要とアーキテクチャ
今回の分析基盤は、以下のような3つの環境に分かれています。
- ローカル環境:対戦データ入力アプリ(Django)と気象データ収集(スクレイピング)
- AWS環境:S3によるデータレイクと、Glue × PySparkによるETL基盤
- 分析環境:Tableau Desktopによるデータ可視化・インサイト抽出
以下が全体のシステム構成図になります
🗃 分析対象となるデータ構造
データは以下の3層に整理しています。
- データレイク:試合ごとの対戦結果、気象データ(生データ)
- データウェアハウス:試合データと気象データを整形した中間データ
- データマート:キャラクター別勝率、キャラ間の相性、天候別勝率などを集計済みデータ
以下がテーブル設計図になります
🛠 処理の簡単な流れ
今回のスマブラ対戦分析プロジェクトは、以下の流れでデータを収集・加工・分析しています。
① ローカル環境でデータ収集
- Djangoアプリで対戦結果(使用キャラ、勝敗、試合時間など)を入力
- Python(BeautifulSoup)で気象データをスクレイピングして収集
② AWSにデータをアップロード
- ローカルからS3(データレイク)へCSVファイルをアップロード
- bashコマンドやAWS CLIを活用して自動化
③ AWS Glue × PySparkでデータ加工
- S3に格納された試合データと天候データを整形
- キャラクターごとの勝率、キャラ間の相性、天候別勝率を算出
- データウェアハウス、データマートを作成して整理
④ Step Functions + Lambdaで処理を自動化
- S3アップロードをトリガーにGlue ETL処理を自動実行
- サーバレスでデータ加工のワークフローを構築
⑤ Tableauで可視化・分析
- キャラクター別勝率傾向をグラフ化
- キャラクター組み合わせ別勝率傾向をグラフ化
- 時間帯・天候別に勝率の違いを可視化してインサイトを抽出
各ステージのテーブル設計はこちら
🔁 今後の連載予定
回 | タイトル |
---|---|
第2回 | Djangoでスマブラ対戦結果アプリを作成(データ収集①) |
第3回 | BeautifulSoupで気象データをスクレイピング(データ収集②) |
第4回 | bashを使って、S3にデータアップロード(自動化) |
第5回 | Glue × PySparkでETLパイプラインを構築(データ加工) |
第6回 | Step Functions + Lambdaで自動処理化(ワークフロー設計) |
第7回 | スマブラ勝率・キャラ相性・気温影響を可視化(分析編) |
🚀 次回
次回は、ローカル環境で作成した「スマブラ対戦結果入力アプリ」について紹介していきます!
https://qiita.com/shota1212/items/38c381a42faad5413a4d