みんなのお気に入りゲームは何ですか?backloggdから紐解くお気に入りゲームの傾向

みんなのお気に入りゲームは何ですか?backloggdから紐解くお気に入りゲームの傾向

Clock Icon2024.07.07

こんにちは。
アライアンス事業部改め業務効率化ソリューション部兼ゲームソリューション部の兼本です。

本日7月7日はクラスメソッドの創立記念日です。今月から当社の会計年度が21期目となり、私の所属もアップデートされました。
ゲームソリューション部所属ということで、ゲームにも詳しくなっておきたいなということで、今回はみんなのお気に入りゲームについて少し調べてみることにします。

ゲームに関しては様々なデータが公開されていますが、今回は Kaggle に公開されている Popular Video Games 1980 - 2023 🎮 を使用しています。
内容としては、backloggd というビデオゲームのレビューサイトで公開されている1980年から2023年までにリリースされたビデオゲームに関するデータです。

どうやって分析するのか

データ分析にはPythonやRなどのプログラミング言語を使用する方法やデータ分析ツールを使用する方法がありますが、ここでは私が担当しているAlteryxを利用します。
Alteryxについて詳しく知りたい方はぜひ以下のリンクをご覧になってください。

Alteryx(アルテリックス)- プログラミング不要のデータ分析ツール

データの内容を確認する

データの内容を確認するため、game.csv ファイルを読み込みます。双眼鏡アイコンの閲覧ツールを使えば、実際のデータやプロファイル情報を確認することができます。

trends-of-favorite-games-unraveled-from-backloggd-002

ざっと確認したところ、以下のようなデータが含まれていました。

カラム名 説明 データの形式
Title ゲームタイトル テキスト
Release Date リリース日 「Jul 07, 2024」という形式の日付
Team パブリッシャーおよびデベロッパー 企業名またはチーム名(複数ある)
Rating Backloggdでのレーティング 1から5までの数値
Times Listed このゲームをリストしたユーザ数 なぜか1,000以上のデータはKで示されている(例)4,000の場合は「4k」
Number of Reviews ユーザから受けとったレビュー数 なぜか1,000以上のデータはKで示されている(例)4,000の場合は「4k」
Genres ゲームのジャンル ゲームのジャンル、複数設定されている場合あり
Summary ゲームの概要文 テキスト
Reviews ユーザが記述したレビュー テキスト、複数の場合あり
Plays プレイしたユーザ数 なぜか1,000以上のデータはKで示されている(例)4,000の場合は「4k」
Playing いまプレイしているユーザ数 なぜか1,000以上のデータはKで示されている(例)4,000の場合は「4k」
Backlogs Backlogに登録したユーザ数 なぜか1,000以上のデータはKで示されている(例)4,000の場合は「4k」
Wishlist 欲しいものリストに登録したユーザ数 なぜか1,000以上のデータはKで示されている(例)4,000の場合は「4k」

まずは人気のゲームを調べてみる

データ的にはPlays、Playing、Backlogs、Wishlistがそれぞれゲームを所有しているか所有したいと考えている数に関連しているので、これらの値を合算したものがゲームの人気度といえそうです。
ただし、これらのデータはなぜか1,000以上のデータは単位がKで示されているので、計算できるように数値データに戻してあげる必要があります。
こういった場合、Alteryxではフォーミュラツールを使って、数式を作成するのですが、このケースでは複数のカラムに対して同時に同じ数式を適用するために複数フィールドフォーミュラというツールを利用します。

trends-of-favorite-games-unraveled-from-backloggd-003

複数フィールドフォーミュラでは以下のような数式を記述します。

If Contains([_CurrentField_], "K") then
  toNumber(replace([_CurrentField_], "K", "")) * 1000
else
  toNumber([_CurrentField_])
Endif

データにKが含まれている場合はKという文字列を削除して、残った数字を数値として扱い、1000倍します。
作成したデータを数値データ(Int32)として扱うためにデータ型を変更しておきます。

Total Point という新しいカラムを作成して、

[Plays]+[Playing]+[Backlogs]+[Wishlist]

の結果を格納し、データを降順に並べ替えます。

trends-of-favorite-games-unraveled-from-backloggd-004

The Legend of Zelda: Breath of the Wild(ゼルダの伝説 ブレス オブ ザ ワイルド) がトップになりましたが、それよりも同じデータが複数行表示されていることが気になりますので、ユニークツールを使用して重複データを排除します。
ユニークツールでは複数のカラムを指定して、複数条件でユニークなデータを探すことができます。

trends-of-favorite-games-unraveled-from-backloggd-005

実行結果は以下の通り。重複データを削除してすっきりしました。

trends-of-favorite-games-unraveled-from-backloggd-006

さて「ゼルダの伝説 ブレス オブ ザ ワイルド」は全期間での1位でしたが、年代ごとだとどうなるでしょうか?
データとしてリリース日があるので、これをもとに年代を作成して、再集計してみます。

リリース日のデータは「Jul 07, 2024」という形式の文字列データなので日付として扱えるようにデータを変換します。日時ツールという専用のツールを使えば簡単に文字列から日付型のデータを作成できます。

trends-of-favorite-games-unraveled-from-backloggd-007

実行結果を見ると3件のデータがエラーになりました。どうやら日付データの代わりに「releases on TBD(発売日未定)」と入力されているようです。
フィルタツールを使用して、このデータを除外します。
エラーデータを除外したら、フォーミュラツールを使って年代を求め、結果を新しいカラム「Generations」に保存します。
数式は以下のように記述しました。

if datetimeYear([Release Date New]) >=1980 and datetimeYear([Release Date New]) < 1990 then
"1980s"
elseif  datetimeYear([Release Date New]) >=1990 and datetimeYear([Release Date New]) < 2000 then
"1990s"
elseif  datetimeYear([Release Date New]) >=2000 and datetimeYear([Release Date New]) < 2010 then
"2000s"
elseif  datetimeYear([Release Date New]) >=2010 and datetimeYear([Release Date New]) < 2020 then
"2010s"
else
"2020s"
endif

作成したワークフローは以下の通りです。そろそろ説明が大変になってきたのでポイントだけ記載して詳しい説明は端折りますが、気になる方は個別に聞いていただければご説明します。

trends-of-favorite-games-unraveled-from-backloggd-008

得られた結果は以下の通りです。

trends-of-favorite-games-unraveled-from-backloggd-009

1980年代、1990年代はスーパーマリオやゼルダといった任天堂のコンテンツが強いですね。ファミコン世代の私も昔を思い出して懐かしい気持ちになりました。
2000年代にはいると、PortalやMinecraft、Undertaleといったインディーズゲームが登場し始めます。
最近ではエルデンリングやAnimal Crossing: New Horizons(どうぶつの森)といったゲームをプレイしている方が多いようですね。

ユーザレビューの内容から感情分析する

さて、このデータにはユーザレビューのテキストが含まれていますので、Alteryx Intelligence Suiteアドオンに含まれる感情分析ツールを使用してみましょう。
レビューのコメントはゲームごとに複数あり、以下のような形式で保存されています。

["The first playthrough of elden ring is one of the best eperiences gaming can offer you but after youve explored everything in the open world and you've experienced all of the surprises you lose motivation to go exploring on repeat playthroughs which takes a lot away from the replayability which is a very important thing for from games imo.", 'a replay solidified my love for elden ring. so easily my favorite game of all time. actually beating malenia this time was also an amazing feeling. i just love being in this world man its the greatest of all time', 'The game is absolutely beautiful, with so much to do. The replayability is crazy. And it never gets old with it too.', 'Took everything great about the Soulsborne games and make it 100% better.', 'I play with my overlevelled friend every time and we still fail sometimes (he’s on NG6), insanely difficult game lol\n                     \n                     gorgeous graphics, animations, everything about this game is so beautiful. deserves all the hype it gets. If you have a powerful enough pc I definitely recommend you play it on there, if you use keyboard, you’ll want to change the keybinds because the defaults are ass.', "Tied as my favorite souls game with Bloodborne, truly one I'll keep coming back too."]

基本はカンマ区切りなのですが、少し面倒な 複雑な形式になっており、ゲームによって一重引用符で囲まれているものと二重引用符で囲まれているものがあります。
さらに一重引用符の場合、文中にアポストロフィーが含まれていることがあり、そのままではテキストの分解が正常に行えませんでした。
そのため、このワークフローでは前処理の段階で正規表現を使い、区切りとして使用している「,(カンマ)」のみを「|(パイプ)」に置き換え、「|(パイプ)」を区切り文字としてデータの分割を行っています。
それを実現しているワークフローは以下です。

trends-of-favorite-games-unraveled-from-backloggd-010

正規表現ツールでは以下のような設定を行っています。

trends-of-favorite-games-unraveled-from-backloggd-011

作成したデータを感情分析ツールに渡します。感情分析ツールは現時点では英語のみに対応しているため、日本語データに単する感情分析を行うことはできません。
この点については今後のアップデートに期待したいところです。

trends-of-favorite-games-unraveled-from-backloggd-012

実行結果を確認します。

trends-of-favorite-games-unraveled-from-backloggd-013

感情分析ツールでは指定された文字列に対して、以下の判定を行います。

アウトプット 説明
否定的感情(Negative Sentiment) この列には、0 から 1 までの範囲で、テキストの一部がどの程度否定的であるかのスコアが表示されます。0 に近いほど否定的でなくなり、1 に近いほど否定的となります。スコアは、このカテゴリに含まれる単語の割合を表します。否定的な感情、中立的な感情、肯定的な感情のスコアを合計すると、約 1 になるはずです。
中性的感情(Neutral Sentiment) この列には、0 から 1 までの範囲で、テキストの一部がどの程度中立的であるかのスコアが表示されます。0 に近いほど中性的でなくなり (つまり、肯定的または否定的のどちらか)、1 に近いほど、中立的となります。スコアは、このカテゴリに含まれる単語の割合を表します。否定的な感情、中立的な感情、肯定的な感情のスコアを合計すると、約 1 になるはずです。
肯定的感情(Positive Sentiment) この列には、0 から 1 までの範囲で、テキストの一部がどの程度肯定的であるかのスコアが表示されます。0 に近いほど肯定的でなくなり、1 に近いほど肯定的となります。スコアは、このカテゴリに含まれる単語の割合を表します。否定的な感情、中立的な感情、肯定的な感情のスコアを合計すると、約 1 になるはずです。
複合感情スコア(Compound Sentiment Score) この列には、-1 から 1 までの範囲のスコアが表示されます。負の数は否定的な感情を示し、正の数は肯定的な感情を示します。-1 は最も否定的なスコア、0 は最も中立的なスコア、1 は最も肯定的なスコアです。

引用)Alteryx Help>2024.1>Designerツール>Alteryx Intelligence Suite>テキストマイニング>感情分析

作成したデータをゲームのIDごとに集計し、元のデータと結合して年代ごとに感情分析のスコアがよいゲームを確認します。

trends-of-favorite-games-unraveled-from-backloggd-014

最初に作成したTotal PointのTop3とは異なる結果になりましたね。80年代1位の「Mega Man」は日本ではロックマンでした。
ロックマンはアクションゲームですが、ストーリー展開も熱いので評価高いのもうなずけますね。

他にも調査したい切り口はたくさんありますが、まずはどんなゲームが人気なのかを知ることができました。
また、このような探索的データ分析(EDA)において、Alteryxの有用性も感じていただけたのではないかと思います。

最後までお読みいただきありがとうございました。

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.