Amazon Web Services ブログ

Amazon Lookout for Metrics とゲーム分析パイプラインを使用してゲームの異常を検出する

この記事は、Detect anomalies in games with Amazon Lookout for Metrics and the Game Analytics Pipeline Solution を翻訳したものです。

ゲーム分析は、開発サイクル全体を通じてゲーム開発者を支援する強力なツールになります。ゲームデータから得られるインサイトは、プレーヤーにとってより魅力的でパーソナライズされたエクスペリエンスを作成し、ゲームの収益化をより効率的なものにするのに役立ちます。また、不正調査、パフォーマンスの監視、エラー報告にも役立ちます。

異常検出は一般的にデータアナリストがデータの外れ値や偏差を特定するために使用されます。ゲームにおいて異常とはテレメトリ、トランザクションデータの予期しない変更です。これらの異常はゲームやインフラストラクチャの技術的な不具合からアプリ内購入やプレーヤーのエンゲージメントを増やすための未開拓のマーケティング機会まで、あらゆる種類の問題を示している可能性があります。ゲーム開発者はこれまで以上に多くのゲームデータを収集していますが、それをうまく利用するには予期しない変更を検出し、検出結果に即座に対応することが不可欠です。対応が遅れると機会を逃し、顧客の信頼を失い、最終的には収益に影響する可能性があります。

異常検出はゲーム開発におけるあらゆる種類のビジネス機能をサポートします。 運用チームは、プレーヤーの解約率、アクティブユーザー、勝率などのゲームの状態に関する指標を追跡して全体的なプレーヤーのエンゲージメントと満足度を評価できます。SRE チームはレイテンシー、CPU 使用率、エラー率などのインフラストラクチャ運用の指標を追跡し、スムーズかつシームレスなユーザーエクスペリエンスを保証できます。マーケティングチームは、キャンペーンに応じたユーザー獲得やアプリ内購入によって生み出された収益などの指標を追跡することもできます。

異常を検出するために使用される従来の方法には、いくつかの課題があります。異常検出に関するテクノロジースタックは、管理と拡張が複雑であり、それらを運用するための知識、リソース、および工数を備えた専任のチームが必要です。通常のルールベースの検出方法は季節性と大幅な変動を適切に処理しないため、アラート疲れや異常の見逃しが発生します。また、通常の異常検出はリアルタイムではありません。つまり、バグや不正使用のレポートが増加するなどダウンストリームの結果によってのみ異常検出が行われます。これによりデータエンジニアは、単一の根本原因を追跡するために複数のソースから逆方向に探索することにも時間を取られます。また、すぐに実行可能な結果がなければ、開発者は検出した異常に基づいた変更を行うことができず、最終的にはプレーヤーの定着率とエンゲージメントの低下に繋がります。

チームがこれらの従来の課題にうまく対処できるようにすべく、AWS は Amazon Lookout for Metrics を導入しました。これは、機械学習(ML)を使用してメトリクスの予期しない変更を検出し、ゲームの状態をプロアクティブに監視し、問題を分析し、迅速に改善のチャンスを見つけ出すのに役立ちます。これを扱うのに機械学習の経験は必要ありません。以下に Lookout for Metrics で得られるインサイトの例を示します。

このインサイトでは、Lookout for Metrics が application_id, app_version, currency_type を通して購入に関するメトリクスの異常を検出しました。application_id: 01dd45f4-646d-418f-A6db-C70114575cda, app_version: 1.1.0 にて 4/07 の 19:05 GMT に USD および EUR での支払いが大幅に減少したことがわかりました。Lookout for Metrics は、これが Severity Score(重大度スコア): 93 を持つ異常であると判断しました。これは履歴データやその他のデータとの比較に基づいて、異常が存在することを強く示しています。厳格なビジネスルールを作成して収益の大幅な低下を判断する代わりに、Lookout for Metrics では履歴データを使用して異常を特定するためのモデルを生成しました。

Lookout for Metrics 概要

Lookout for Metrics は機械学習を使用して、ビジネスに最も関連するメトリクスをより高速かつ正確に自動的に監視します。また、プレーヤーログインの予期しない落ち込み、アプリ内購入トランザクションの失敗の増加、新規ユーザーの登録の増加など、異常の根本原因を診断する手順を簡単なものにします。

Lookout for Metrics は、単純な異常検出よりもはるかに進んだものになっています。また、開発者は重要なメトリクスの自律監視を設定して、異常を検出し、その根本原因をわずか数ステップで特定できます。これは Amazon が内部でメトリクスの異常を検出するために使用しているのと同じテクノロジーを使用して実現されます。この全てにおいて機械学習の経験は必要ありません。

Lookout for Metrics は、Detector と呼ばれるリソースを介してデータの異常を監視および識別します。Detector は機械学習を利用してデータパターンを検出し、データの予想される変動と正当な異常を区別します。Lookout for Metrics は、分析用の時系列データを提供するサービスまたはリソースであるデータソースからのデータを確認します。Detector は、指定された間隔(5分から1日までの範囲)でデータソースからメトリクスのコピーを生成し、それらをデータセットに保存します。Detector にデータソースを提供した後、データセットの Measure (基準)となるフィールドを選択します。これは、Detector が監視する主要なフィールドです。最大5つの追加フィールドを Dimension として構成することもできます。Dimension は、値に基づいて Measure のサブグループを作成するセカンダリフィールドです。各 Measure と Dimension の組み合わせは、Metric と呼ばれます。たとえば、Measure として「availability」(可用性)という名前のフィールドを選択できます。Dimension を選択しない場合、Detector はすべてのレコードの可用性を監視します。Dimension に「country」という名前のフィールドを選択すると、Detector は、「availability in Canada」「availability in Italy」など、各国の availability を個別の Metric として監視します。最後に、Detector が異常を識別したときに通知を送信したり、処理ワークフローを開始したりするために、アラートを作成できます。アラートは、Amazon SNS トピックをターゲットにして異常検出の通知を配信したり、AWS Lambda 関数をターゲットにして自動処理ジョブを起動したりできます。

ソリューションのウォークスルー

ゲーム分析パイプライン によって取り込まれ、処理されたデータを使用して、Lookout for Metrics の Detector を設定する手順を見ていきましょう。 ゲーム分析パイプラインは、ゲーム開発者がスケーラブルなサーバーレスデータパイプラインを起動して、ゲームやサービスから生成されたテレメトリデータを取り込み、保存、分析するのに役立ちます。ここでは、Kinesis Data Analytics アプリケーションによって生成され、カスタム CloudWatch メトリクスのネームスペースに保存されているメトリクスを利用します。 Lookout for Metrics の Detector を作成し、異常が検出されているデータセットとしてカスタムネームスペースを利用します。最後にライブデータが Detector によって評価された後、インタラクティブなダッシュボードの Detector によってさまざまな異常を識別できます。

このチュートリアルで展開されるインフラストラクチャのアーキテクチャ図は次の通りです。

必要なもの

このチュートリアルを開始する前に、以下にアクセスできることを確認してください。

  1. AWS アカウント
  2. AWS アカウントにデプロイされた ゲーム分析パイプライン
    詳細については 実装ガイド の自動デプロイのステップ1と2に従ってください。

このチュートリアルでは、サンプルのゲームイベントから生成された異常の例について説明します。イベントの流れは次の通りです。

  • ゲーム分析パイプラインによって提供される Python スクリプトからのランダムなイベント生成。
  • イベントは Amazon Kinesis Data Streams に送信され、次に Amazon Kinesis Data Analytics , AWS Lambda , AWS CloudWatch で構成されるゲーム分析パイプラインのリアルタイムコンポーネントに送信されます。
  • ゲーム分析パイプラインの CloudWatch Dimension は、ソリューションによって生成された CloudWatch ダッシュボードから表示できますが、データセットを監視して異常を識別するリソースである Amazon Lookout for Metrics Detector にもデータを送信します。
  • CloudWatch Dimension は、Detector のデータセットソースとして設定され、Detector は異常なアクティビティについて設定された間隔で受信データをポーリングできます。
  • オプションでゲーム分析パイプラインの Amazon S3 データレイクコンポーネントのデータをデータセットソースとして設定し、履歴データから異常を検出することもできます。

まず、Amazon Lookout for Metrics でサポートされているリージョンであることを確認してください。詳細はこの FAQページ にあります。リージョンを変更する場合は、右上のナビゲーションバーで別のリージョンを選択します。

選択したリージョンがゲーム分析パイプラインをデプロイしたリージョンと同じであることを確認します。この確認を行うには CloudFormation コンソールに移動し、ゲーム分析パイプラインの CloudFormation スタックが表示されることを確認します。

Amazon Lookout for Metrics コンソールに移動します。これを行うには、AWS コンソールの検索バーに「Lookout for Metrics」と入力します。

開始するには、右側にある「Create detector」を選択します。

Detector の名前を入力し、間隔として5分を選択し、残りの設定をデフォルトのままにして(暗号化またはタグなし)、下部にある「Create」を選択します。

Detector の詳細ページに移動します。このページには、セットアップ手順、高レベルの構成情報、データ検証の Metric、および Detector のログが表示されます。下の「Add a dataset」を選択します。

「Basic information」で、データセットの名前を入力します。「Timezone」で、データを表示するタイムゾーン(ローカルタイムゾーンなど)を選択します。以下のデータソースの詳細で、データソースとして「Amazon CloudWatch」を選択します。「Service role」でドロップダウンから「Create a role」を選択し、確認画面で作成します。それ以外はすべてデフォルトのままにして、下の「Next」を選択します。

次にゲーム分析パイプラインによって生成された「CloudWatch Namespace」を選択します。同じ CloudFormation スタック名で始まり、セパレータの後に「AWSGameAnalytics」が続くものになります。次に「Dimensions」で「APPLICATION_ID, APP_VERSION, CURRENCY_TYPE」を選択します。このウォークスルーを実行した後は他の項目を自由に選択してください。

「Metric」および「Aggregation Function」と呼ばれる新しいオプションがポップアップ表示されます。 「Metric」で「Purchases」を選択し、「Aggregation Function」で「AVG」を選択します。このウォークスルーを実行した後は「SUM」も選択してみてください。下部にある「Next」を選択します。

設定を確認し、下部にある「Save dataset」を選択します。

データセットセクションのステータスが更新されたら、Detector の詳細ページに戻ります。右上の「Activate」を選択して Detector をアクティブ化し、異常を探索します。プロビジョニングには数分から数時間かかる場合があり、構成とデータによっては稀に最大1〜2日かかる場合があります。

Detector がアクティブになったら、左側のナビゲーションバーで「Anomalies」を選択して検出された異常を参照します。

以下に異常のリストが表示されます。異常データの詳細を表示するには、1つを選択してください。

影響の概要、Dimension、および指標のグラフを表示します。

以下のように複数の Dimension の値がある場合は、各 Dimension の値を示すグラフが複数個積み重ねられて表示されます。

オプションのアラートを追加することもできます。これを行うには、左側のナビゲーションバーで、Detector の下の「Details」を選択して詳細ページに戻り、「Add alerts」を選択します。

任意のアラート名を入力、チャネルには Amazon SNS を入力し、「Create a Topic」を選択して Amazon SNS コンソールに移動します。

以下のドキュメントの手順に従ってサンプルのトピックとサブスクリプションを作成してから、戻って作成したトピックを選択し、Lookout for Metrics アラートを表示します。

次に「Add alert」を選択します。

さらに深く掘り下げるには ゲーム分析パイプライン実装ガイド開発者ガイド にアクセスして、ゲーム分析パイプラインによって取り込まれたデータをクエリして視覚化する方法の詳細な手順を確認してください。また、コード例を使用してカスタムゲームデータを取り込むためのガイドについては、ブログ「Generate Custom Game Events from Unity Integrated With the Game Analytics Pipeline」を確認してください。 他にも Lookout for Metrics に関する ブログ を読んだり、Lookout for Metrics のドキュメントを詳しく調べたり、お客様の次のプロジェクトのために私たちに お問い合わせ いただくことも可能です。

翻訳は Gaming Solutions Architect の Shintaro Watanabe が担当し、 Gaming Solutions Architect の Yoshihiro Nagata と Gaming Solutions Architect の Reou Ando が監訳しました。