パフォーマンス

[ パフォーマンス ] タブには、アプリケーションのパフォーマンスに関連するさまざまなKPI指標やグラフの詳細な概要が表示されます。 [パフォーマンス ] タブでは、ユーザーエクスペリエンスやアプリケーションの安定性に影響を与える主要業績評価指標(KPI)を監視、分析、追跡することができます。 これらのKPIを活用することで、傾向を把握し、パフォーマンスを最適化し、アプリケーションの異なるバージョン間でもスムーズなユーザー体験を確保することができます。

サポート対象のテクノロジー

Instana のパフォーマンス指標収集機能は、ネイティブのAndroidおよび iOS アプリケーションに適用されます。 この機能は、以下のエージェントのバージョンで利用可能です:

  • Instana Androidエージェント 6.2.0 以降
  • Instana iOS agent 1.9.0 以降

Androidエージェントでのパフォーマンス指標の収集を有効にする

Instana のAndroidエージェントのプラグインとSDKが、Androidアプリケーションに確実に統合されていることを確認してください。 詳細については、 「Androidエージェントの手順」 を参照してください。

Androidエージェントでパフォーマンスメトリクスの収集を有効にするには、次の例に示すように、メソッド Instana.setup() が呼び出された際にプロパティ true を に設定します

class ExampleApp : Application() {
    override fun onCreate() {
        super.onCreate()
        val perf = PerformanceMonitorConfig(
                       enableAppStartTimeReport = true, // Enable App start time metrics
                       enableAnrReport = true, // Enable ANR metrics
                       anrThresholdMs = 5, // This is the wait time until agent report an ANR
                       enableLowMemoryReport = true) // Enable Low Memory metrics
        val instanaConfig = InstanaConfig(
            key = "YOUR_APP_KEY",
            reportingURL = "YOUR_REPORTING_URL",
            enableCrashReporting = true,
            performanceMonitorConfig = perf
        )
        Instana.setup(this, instanaConfig)
    }
}

iOS エージェントでのパフォーマンス指標の収集を有効にする

Instana iOS のエージェントがインストールされていることを確認してください。 詳細については、 iOS エージェントの操作手順を参照してください。

iOS エージェントのパフォーマンスメトリクスの収集を有効にするには、次の例に示すように、メソッド Instana.setup() が呼び出された際にプロパティ true を に設定します

import UIKit
import InstanaAgent

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication,
                   didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

        let options = InstanaSetupOptions(enableCrashReporting: true)
        options.perfConfig = InstanaPerformanceConfig(
                                enableAppStartTimeReport = true, // Enable App start time metrics
                                enableAnrReport: true, // Enable ANR metrics
                                anrThreshold: 5.0, // This is the wait time until agent report an ANR
                                enableLowMemoryReport = true) // Enable Low Memory metrics
        Instana.setup(
            key: "YOUR_APP_KEY",
            reportingURL: "YOUR_REPORTING_URL",
            options: options
        )
        return true
    }
}

Instana のUIで「パフォーマンス」タブを表示する

アプリケーションのパフォーマンスメトリクスの収集を有効にすると、パフォーマンス関連のデータが Instana に送信されます。 パフォーマンス指標を分析することで、アプリケーションの動作状況を把握し、パフォーマンスを最適化することができます。

パフォーマンスダッシュボードを表示するには、以下の手順に従ってください:

  1. Instana のUIのサイドバーで、 「Webサイトとモバイルアプリ」 を選択します。

  2. 「モバイルアプリ」 を選択してください。

  3. モバイルアプリのリストから項目をクリックしてください。

  4. [パフォーマンス] タブを選択します。

    図 1. モバイルアプリのパフォーマンスタブの表示
    モバイルアプリの「パフォーマンス」タブの画面を示すスクリーンショット

「アプリケーションが応答しない(ANR)」のパフォーマンス指標

ANRの監視は、AndroidおよびiOSアプリケーションのパフォーマンス上の問題を特定し、対処するために不可欠です。 アプリケーションのメインスレッドが長時間ブロックされると、ANRエラーが発生し、ユーザーエクスペリエンスが損なわれます。 この結果は、ユーザーの不満、低評価、そしてユーザーとのエンゲージメントの低下を招く可能性があります。 ANRを追跡することで、パフォーマンスのボトルネックを特定して改善したり、負荷の高いタスクをオフロードするためにコードを再構成したり、ユーザー操作に確実に応答する手法を採用したりすることができます。

[パフォーマンス] タブの「ANR KPI」セクションを表示する

[パフォーマンス ] タブには、ANR やアプリケーションのフリーズがユーザーセッションおよびユーザー全体に与える影響を監視・分析するための 2 つの KPI セクションが追加されています。 これらのKPIセクションでは、アプリケーションのパフォーマンスとユーザー体験に関する洞察を提供します。

「アプリが応答しない、またはフリーズする」の影響を受けたセッション

ANRの影響を受けたセッションに関するKPIセクションでは、選択した期間において、ユーザーがANRやアプリケーションのフリーズを経験したセッションの割合が表示されます。 ANRが発生したセッション数は、以下の式に示すように、ANRが発生したセッション数をユニークセッションの総数で割ることで算出できます。

ANR affected sessions = (Number of sessions with ANRs / Total number of unique sessions) * 100

この数式を使用すると、ANRが発生したセッションの割合を算出できます。 このようにして、セッション中にパフォーマンスの問題が発生したユーザーを特定することができます。

「アプリが応答しない、またはフリーズする」の影響を受けたユーザー

ANRの影響を受けたユーザーに関するKPIセクションでは、選択した期間において、セッション中にANRやアプリケーションのフリーズを経験したユニークユーザーの割合が表示されます。 ANRの影響を受けたユーザー数は、以下の計算式に示すように、ANRが発生したユーザー数をユニークユーザー総数で割ることで算出できます。

ANR affected users = (Number of users with ANRs / Total number of unique users) * 100

この数式を使用すると、ANRの影響を受けたユニークユーザーを特定できます。 この指標は、ユーザー体験に関する洞察を提供し、改善の余地がある分野を特定するのに役立ちます。

アプリが応答しない、またはチャートがフリーズする

このグラフは、指定された期間におけるANRの発生状況を、モバイルアプリプラットフォーム( iOS またはAndroid)別に分類したものです。 X軸はビーコンのタイムスタンプを表し、Y軸はビーコンの合計数を表しています。 チャートからプラットフォームごとのフィルターを選択でき、プラットフォームごとのビーコン数を視覚的に確認することができます。

アプリが応答しない、またはフリーズする

ANRビーコンにスタックトレースが含まれている場合、「アプリが応答しない、またはフリーズしている」テーブルで、そのビーコンに対して生成されたエラーメッセージを確認できます。 ANRはエラーメッセージごとに分類されています。

ANRの詳細を確認するには、エラーメッセージをクリックしてください。 詳細ページには、発生状況、影響を受けたユーザー数、スタックトレース、アプリのバージョン、ビュー、オペレーティングシステム、およびANRが発生したデバイスの名称が表示されます。 この情報は、開発者がANRビーコンの根本原因を理解するのに役立ちます。

注: OSの制限により、 iOS 搭載デバイスについてはANRの詳細情報は収集されません。

スレッド情報を確認するには:

  • 「すべてのスレッド」 をクリックすると、アクティブなすべてのスレッドの生のトレースが表示されます。

  • フォーカスされたスレッド 」をクリックすると、ANRの影響を受けたスレッドのスレッド名、スレッドの状態、およびスタックトレースが表示されます。

図 2. ANRの詳細表示
ANRの詳細を示すスクリーンショット

アプリの起動時間のパフォーマンス指標

アプリの起動時間とは、アプリケーションが完全に操作可能になるまでに要する時間を指します。 このパフォーマンス指標を監視することで、開発者は起動時間を最適化し、ユーザー体験全体を向上させることができます。

アプリの開始時間は、以下の3種類に分類されます:

  • コールドスタート:アプリケーションが終了状態から起動され、メモリ内に既存のプロセスが存在しない場合に発生します。 コールドスタートは通常、最も処理速度が遅く、起動に最も時間がかかる起動タイプです。

  • ウォームスタート:アプリケーションがバックグラウンド状態から再起動されたときに発生します。 メモリリソースのほとんどはキャッシュされておらず、メモリ内にも存在しないため、ウォームスタートはコールドスタートよりも起動時間が短くなります。

  • ホットスタート:アプリケーションがすでにバックグラウンドで実行されており、システムがそのアクティビティをフォアグラウンドに表示する場合に発生します。 アプリケーションはメモリ上でアクティブな状態にあるため、システムは初期化を繰り返し行う必要がなく、リソースを再度読み込む必要もありません。そのため、瞬時に再開でき、最速の起動時間を実現します。

コールドスタート時間のKPIカード

[ パフォーマンス] タブの「コールドスタート時間」KPIカードには、アプリケーションが完全に終了した状態から起動された期間における、コールドスタートの75パーセンタイル値が表示されます。 この指標は、特定の期間において、観測されたコールドスタート所要時間の75%がその値を下回っていることを示しています。

このコールドスタート指標の算出は、アプリケーションの一般的なコールドスタート性能を評価するのに役立ちます。 外れ値や極端な状況の影響を受ける可能性のある、開始時刻の上位25%を除外します。 75パーセンタイル(第3四分位数とも呼ばれる)による集計は、外れ値の影響を受けにくく、平均値の算出よりもアプリのパフォーマンスをより現実的に把握することができます。

コールドスタート時間のKPIカードは、傾向を把握し、大多数のユーザーの体験を可視化することで、開発者がアプリのパフォーマンスをより的確に把握するのに役立ちます。 これにより、アプリの起動時間を短縮するための最適化に注力し、ユーザー体験全体を向上させることが可能になります。

コールドスタート時間チャート

[ パフォーマンス] タブのコールドスタート時間グラフには、選択した期間における、Androidおよび iOS プラットフォーム別に分類されたコールドスタート時間の75パーセンタイルが表示されています。

  • X軸:ビーコンのタイムスタンプ(時系列データ)。

  • Y軸:選択した期間におけるコールドスタート時間の75パーセンタイル。

このコールドスタート時間チャートにより、開発者はプラットフォーム別( iOS およびAndroid)のコールドスタート時間の75パーセンタイルを分析し、各プラットフォーム固有のボトルネックや最適化の機会を特定することができます。

メモリ不足時のパフォーマンス指標

メモリ不足のイベントは、デバイスのリソースが不足し始めた際に発生し、応答速度の低下やクラッシュを引き起こします。 これはユーザー体験に悪影響を及ぼし、ビジネスに重大な影響を与える可能性があります。 メモリ不足の事象を Instana に報告することは、開発者が根本的な問題を迅速に特定し、適切な解決策を提供するために極めて重要です。

メモリ不足チャート

このグラフは、指定された期間における「メモリ不足」イベントの発生状況を示しており、モバイルアプリプラットフォーム( iOS またはAndroid)ごとに分類されています。 X軸はビーコンのタイムスタンプを表し、Y軸はビーコンの合計数を表しています。 チャートからプラットフォームごとのフィルターを選択でき、プラットフォームごとのビーコン数を視覚的に確認することができます。

「過剰なバックグラウンドネットワーク使用量(ENU)」のパフォーマンス指標

アプリケーションのパフォーマンスとデバイスの健全性を最適化するため、各プラットフォームには、バックグラウンドでの過剰なネットワーク使用を制限するためのガイドラインが設けられています。 アプリケーションがこれらの閾値を超えた場合、 Instana はユーザーに警告を表示し、開発者がコードを調整してバックグラウンドプロセスを最適化することで、これらの問題を軽減できるようにします。

ENUの発生状況を Instana で監視するには、および enableBackgroundEnuReport ( 「Androidモニタリング 」 APItrustDeviceTiming を参照)の両方をtrueに設定する必要があります。 ENUビーコンは、バックグラウンドでのデータ使用量が50MBを超えた場合にのみ送信され、24時間に1回のみ送信されます。 この機能は、 API バージョン21以降を搭載したAndroid端末でのみ利用可能であり、アプリケーションがウィジェットを使用している場合は適用されません。 iOS プラットフォームの制限により、この機能はサポートされていません。