【アプリケーション性能監視（APM)】モバイルゲームのパフォーマンスを監視する方法

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/9954d719-3c93-fe91-9f29-29e6671e0282.png)

#はじめに

モバイルゲームの開発者には、監視が必要なゲームのコンポーネントがたくさんあります。ゲームをホストしているサーバーから、最高のプレイヤー、そして最高のコンバージョンアクションまで、様々です。これらは大量のデータとなり、そのデータを最大限に活用する方法を知る術は多くはありません。

この記事では、監視する必要がある[KPI](https://www.metricfire.com/blog/monitoring-kubernetes-tutorial-using-grafana-and-prometheus/#Important-metrics-to-watch-in-production)（主要業績評価指標）、これらのメトリックを監視するための最適なツール、およびこのデータを最も効果的な方法で処理する方法について説明します。

MetricFireは、モバイルゲームのパフォーマンスを監視するのに最適なツールの1つです。 MetricFireは、時系列のメトリクス監視ツールであり、低コストで柔軟に使用できる機会を提供して[時系列をスケーリング](https://qiita.com/MetricFire/items/14fe941066774f62a266?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=How%20To%20Monitor%20Mobile%20Game%20Application%20Performance)できます。何百ものツールが利用可能ですが、[MetricFire](https://try.metricfire.com/japan/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=How%20To%20Monitor%20Mobile%20Game%20Application%20Performance)は、費用を多くかけることなく、監視の複数の領域をカバーする[柔軟性を持つ唯一のツール](https://qiita.com/MetricFire/items/0431570afb4fb007f9df)です。

MetricFireは、[HypGames](HypGames)や[EA](https://www.metricfire.com/customers/)などのゲーム開発者と協力して、一貫して優れたゲーム体験をユーザーに提供できるようにしています。

- 低レイテンシの期間の特定と警告
- 稼働時間の問題の特定と警告
- エラー報告
- インフラ監視
- 収益の追跡
- その他

[MetricFire](https://try.metricfire.com/japan/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=How%20To%20Monitor%20Mobile%20Game%20Application%20Performance)は、オープンソースのGraphite、Prometheus、およびGraphiteに基づいて構築された時系列の監視ツールです。MetricFireユーザーに、すぐに使用できるSaaSにバンドルされた最高のオープンソースを提供します。

この記事では、モニタリングを使用して、ユーザーに可能な限り最高のエクスペリエンスを提供する方法について説明します。 MetricFireで[デモを予約](https://calendly.com/metricfire-chatwithus/chat?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=How%20To%20Monitor%20Mobile%20Game%20Application%20Performance)して、[無料トライアル](https://www.hostedgraphite.com/accounts/signup-metricfire/?signup=japan&utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=How%20To%20Monitor%20Mobile%20Game%20Application%20Performance)に参加してください！

#監視する必要があるもの
モバイルゲームアプリケーションを監視する場合、次のカテゴリのメトリックを監視する必要があります。

**ゲーム内のメトリクス**

- ユーザー数
- 各ユーザーのレベル
- ユーザーの在庫アイテム
- ゲーム内での、通貨

ゲーム内メトリクスは、使用しているゲームに固有のメトリクスタイプです。 ゲームのさまざまな部分を移動するユーザーの数を追跡する必要があります。 誰がどのレベルに到達するか、各レベルの人数は何であるかを知り、ゲームのレベルを移動することがどれほど難しいかを推測する必要があります。 コンバージョンポイントの周辺を確認することは特に重要です。ユーザーが何かを購入するのが難しい/簡単な場合は、知っておく必要があります。

**ビジネスメトリクス**

- アプリ内購入で得られた収益
- マイクロトランザクション
- 商品とサービスのコスト
- 顧客の生涯価値

これらのメトリクスの多くは通常、財務チームによって処理されますが、開発者は依然としてモバイルゲームから直接財務データを抽出する必要があります。 モバイルゲームコードは、トランザクションに関連する主な情報源です。

多くの場合、開発者によって監視されているデータは、GoogleやApple Payなどのトランザクションツールによって収集されているデータと比較されます。 これにより、比較するデータソースが2つになるため、図の信頼性が高まります。 また、コードに表示されるきめ細かいマイクロトランザクションと、GoogleおよびAppleプラットフォームによって提供される合計が表示されるため、ビジネスメトリクスについて2つの異なる視点が得られます。

**アプリケーションパフォーマンスメトリック**

- メモリー膨張
- メモリ増加
- リクエスト速度
- 待ち時間
- クエリ速度
- エラー率

このタイプのメトリクスは、アプリの機構が実際にどの程度良好に機能しているかに関する情報を提供します。 この領域では、いくつかの種類の監視を行う必要があり、 Application Discoveryを実行する必要があります。ここでは、コードのフルスキャンを実行して、設計の非効率性を見つけます。 さらに、ユーザーエクスペリエンスレベルでのアプリのパフォーマンスを監視するために、時系列メトリックの大きなセットを計画する必要があります。 マイクロサービスがどのように動作しているか、つまり、どのようなレイテンシと稼働時間で動作しているかを知る必要があります。 ページの読み込み速度を知る必要があります。 さらに、何が機能していないか、いつどこで問題が発生したかを知る必要があります。

時系列のメトリック監視戦略を計画した後、エラーをマップしてできるだけ早く修正するのに役立つロギングツールとトレースツールも必要になります。

**インフラストラクチャメトリック**

- 稼働時間
- CPU
- RAM

インフラストラクチャメトリックもメトリック、ロギング、トレースの技術スタックに基づいて構築されていますが、アプリケーションではなくインフラストラクチャの監視に重点を置いています。 インフラストラクチャの監視には、サーバーメトリックだけでなく、アプリケーションが構築されている主要なシステムやプラットフォームも含まれます。 たとえば、Kubernetesセットアップ、またはCircleCi、Zuul、Chef、Spinnakerなどのその他のCI / CDプラットフォームを監視する必要がある場合があります。 GitHubを監視して、コードの変更とゲームパフォーマンスの変更を常に関連付けていることもよくあります。

監視する必要があるものを認識したので、必要なツールの数が非常に膨大になる可能性があることが明らかになります。 この監視をすべて行うために使用するのに最適なツールのスタックは何になるでしょうか？ 次のセクションでは、利用可能な最良のツールとそれらを組み合わせる方法について説明します。

#モバイルゲームのパフォーマンスを監視するための最適なツール

###MetricFire

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/12573a6e-678c-888f-966a-b1fc961a901a.png)

[MetricFire](https://try.metricfire.com/japan/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=How%20To%20Monitor%20Mobile%20Game%20Application%20Performance)はコアが非常にシンプルで非常に興味深いツールです。時系列のメトリックモニタリングを行い、時系列のメトリックモニタリングに基づく視覚化とアラートも行います。

MetricFireのすばらしいところは、オープンソースの[Graphite](https://www.metricfire.com/graphite-as-a-service/)、[Prometheus](https://www.metricfire.com/hosted-prometheus/)、[Grafana](https://www.metricfire.com/hosted-grafana/)をベースに構築されていることです。 これらの[オープンソースプロジェクトに基づいて構築](https://qiita.com/MetricFire/items/64d1c019eb67d281508b)されているため、何千人もの開発者がこのテクノロジーを必要なユースケースに適応させ、拡張するために毎日働いています。これにより、MetricFireは、時系列のメトリックモニタリングの世界の何百ものユースケースに適用できます。

MetricFireユーザーは、MetricFireを使用して、インフラストラクチャ、アプリケーションメトリック、ビジネスメトリック、およびユーザーエクスペリエンスメトリックを監視しています。

インフラストラクチャの世界では、EC2、EKS、CloudWatchなどの[30を超えるAWSマイクロサービスにプラグイン](https://www.metricfire.com/integrations/)するようにMetricFireを構成できます。また、MetricFireのHosted Prometheusは、Kubernetes、Docker、その他のコンテナ化/スケジューリングプラットフォームと直接互換性があります。

ビジネス、アプリケーション、およびユーザーエクスペリエンスの世界では、MetricFireを構成して、コード化された環境に存在するデータを長期にわたって収集できます。利用可能なHosted Prometheus、Graphite、StatsD、およびcollectdソリューション間で、表現されたデータポイントをMetricFireダッシュボードにプッシュまたはプルできます。 MetricFireのサポートチームは、300以上のGrafanaプラグイン、その他のコレクター、またはカスタムスクリプトを使用して、データの構成を支援できます。[デモを予約](https://calendly.com/metricfire-chatwithus/chat?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=How%20To%20Monitor%20Mobile%20Game%20Application%20Performance)して、チームに相談してください。

###Scout APM

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/9be6e426-b149-ccaa-a543-17d25285b0fa.png)

MetricFireの最大の欠点の1つは、アプリケーションの検出とメモリの膨張ソースの識別に関することです。 アプリケーションとモバイルゲームの監視のこの領域で、最も強力なツールは[ScoutAPM](https://scoutapm.com/)です。

ScoutAPMはインフラストラクチャの監視や一般的な時系列監視に使用できませんが、ScoutAPMはN + 1データベースクエリの継続的な追跡、メモリの膨張、パフォーマンスの異常の特定などに関して必要なすべてを実行できます。

同様に、ScoutAPMはMetricFireのパートナーです！ これは、MetricFireチームとScoutAPMチーム内で多くの製品間経験があることを意味します。 両方の製品を使用している場合は、その状況に精通しているエンジニアから優れたサポートを受けることができます。

#GameAnalysis

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/a69fa642-ae56-1428-d6e9-602b01bce45e.png)

GameAnalyticsは無料のユーザー統計監視ツールです。 インフラストラクチャを監視したり、高度な時系列監視を行ったりすることはできませんが、ユーザーとユーザーがゲームで何をしているかを追跡できます。

GameAnalyticsは、次のメトリクスを監視できることを宣伝しています。

- ユーザー獲得
- プレーヤーの関与
- 初回購入のドライバーを含む収益化
- ゲームコンテンツのプレイヤーの進行
- ゲーム内エコノミーと仮想リソース（金、生活、XPなど）

ダッシュボードも素晴らしく、さまざまな種類のパネルとグラフがあります。 GameAnalyticsはアラートや通知を行わないため、SRE / DevOpsツールよりもビジネスおよびアクティビティの監視ツールです。

##Mixpanel

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/b2fc71e1-c80d-edf1-fdfb-8992bf4ea8a5.png)

Mixpanelは、モバイルゲーム開発者の間で、フロントエンドのメトリックを監視する人気ツールです。 Mixpanelは、iOSやAndroidから、Ruby、JavaScript、Node.Js、Unityなど、最も人気のあるすべてのSDKと直接統合します。 また、パイプラインの取り込み、クエリ、エクスポート、ビルド、さらにはスキーマとのやり取りのためのAPIも多数あります。

Mixpanelは、アプリケーションの検出やインフラストラクチャの監視を行うための優れたツールではありませんが、フロントエンドのメトリクスを視覚化してユーザーエクスペリエンスを確認するための優れたツールです。 ダッシュボードは使いやすく、業界に応じて特別な機能と統合を備えています。

###Firebase

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/c598e52c-0bd2-89bf-a0ec-b56bcec9b61f.png)

Firebaseは、ビジネスメトリクスとユーザーアクティビティのための素晴らしいツールです。彼らのウェブサイトはあなたのアプリとあなたのビジネスを監視することに焦点を合わせた多くの機能があります。ビジネスの可視性を向上させるビジネスメトリクス、パフォーマンスモニタリング、データベースモニタリング、Googleアナリティクスプラグインなどを取得できます。

Firebaseは、アプリ内メッセージング、A / Bテスト、クラウドメッセージング、ダイナミックリンクなどのビジネス成長のためのツールもサポートしています。ビジネスの監視、新しい成長ツールの適用、アプリケーションのフロントエンドの最適化に最適です。

ただし、Firebaseは時系列モニタリングやカスタムメトリクスを実行しません。したがって、アプリを監視するためには、エージェントが収集できるものと社内構成に依存します。アプリに固有の何かを監視するための創造的な設定を行うことはできません。また、インフラストラクチャのメトリクスまたはプラットフォームのメトリクス（KubernetesやDockerなど）を取得して、インフラストラクチャがアプリに与える影響を完全に把握することもできません。

監視対象の全体像を把握するには、Grafanaなどのダッシュボードプラットフォームを使用するのが最善の方法です。 MetricFireがホストするGrafanaは大量の情報を1か所に取り込むことができるため、1つのインターフェースを使用するだけで済みます。

#単一のダッシュボードの作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614998/687e4ebc-7d20-c0de-0450-11361d54a32c.png)

今日の監視における最大の問題は、情報を1か所に集めることです。多くのソースからの情報を監視する必要があり、すべての情報は異なる構造またはスタイルを持っています。時系列、ログファイル、単一の統計、速度、合計、予測、リソース不足、アラートがあります。

赤旗を発しないものを見逃すという人間の自然な傾向をどのように回避しますか？

それには、一目で最も重要な情報を表示する単一のダッシュボードを作成する必要があります。ツールを表示し、その日に何をするかについてのオリエンテーションを提供するマスターダッシュボードに情報を取り込む必要があります。

これを作成する最良の方法は、Grafanaを使用することです。 Grafanaには、テクノロジースタック全体と統合できる300以上のプラグインがあります。 ElasticsearchとGrafanaの統合により、ログを取り込むことができます。 PrometheusとGrafanaの統合により、時系列の横にあるログを視覚化できます。 GitHubまたはCircleCiを介して新しいデプロイがいつ行われたかを正確に示すアノテーションを収益グラフに自動的に公開することができます。主要なしきい値のアラートを取得し、緊急事態の通知を取得して、真夜中でも対応できるようにします。

MetricFireの提供する[Hosted Grafana](https://www.metricfire.com/hosted-grafana/)は、このプロセスをさらに簡単にします。 Grafanaはオープンソースであるため、セットアップは難しい場合があります。 オープンソースツールの管理は困難であり、膨大な時間とリソースを必要とします。 言うまでもなく、あなたはおそらくデータソース、アプリケーション、顧客も管理しています。 MetricFireを使用すると監視が容易になるため、本当に必要な開発などに集中できます。

MetricFireはGraphite、Prometheus、Grafanaをホストしているため、使いやすいSaaSとして優れた時系列メトリックを取得できます。 Grafanaは非常に簡単に統合できるため、ロギングツールやその他のデータソースを簡単に取り込むことができます。 また、MetricFireのサポートチームが統合をセットアップするため、開発作業を行う必要もありません。 こちらで[モバイルゲームのお客様](https://www.metricfire.com/customers/hypgames/)をチェックし、MetricFireの使用例をご覧ください。

#まとめ
モバイルゲームを監視する際に考慮すべきことがたくさんあり、バックアップが必要で重要な種類のデータがたくさんありますので、間違いなく複数のツールが必要になります。

ビジネスの成長に合わせて新しいデータタイプとニーズを組み込むことができるように、統合が非常に簡単で柔軟性の高いツールを使用していることを確認してください。 また、スケーリングに伴って費用がかからないツールを選択してください。 多くのツールは小規模な開発者には無料ですが、主要なビジネスには大きなコストがかかります。

[MetricFire](https://try.metricfire.com/japan/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=How%20To%20Monitor%20Mobile%20Game%20Application%20Performance)は非常に柔軟で統合しやすいツールです。 MetricFireはオープンソースプロジェクトに基づいて構築されており、コアにオープンソースの考え方があります。 MetricFireはスタックの一部としてGrafanaも備えているため、Grafanaで動作する幅広いプラグインを利用できると同時に、ホストされたサービスとして優れたPrometheusとGraphiteを利用できます。

MetricFireを使い始めるには、[デモを予約](https://calendly.com/metricfire-chatwithus/chat?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=How%20To%20Monitor%20Mobile%20Game%20Application%20Performance)する必要があります。 電話でお問い合わせください。数分で開始できます。