Application Insights による利用状況分析

最も人気のある Web アプリまたはモバイル アプリの機能は何か。 そのアプリによりユーザーは目標を達成したか。 特定の時点でアプリを離れたか。その後、利用を再開したか。 Application Insights は、ユーザーのアプリの使用方法に関する強力な洞察を得るのに役立ちます。 アプリを更新するたびに、アプリがユーザーにどの程度役立っているかを確認できます。 この情報により、次の開発サイクルに関してデータに基づく意思決定を行うことができます。

アプリからテレメトリを送信する

Application Insights をアプリのサーバー コードと Web ページの両方にインストールすることにより、最適な操作環境が得られます。 アプリのクライアントおよびサーバー コンポーネントから Azure Portal に分析用のテレメトリが送信されます。

  1. サーバー コード:ASP.NETAzureJavaNode.js、またはその他のアプリ向けの適切なモジュールをインストールします。

  2. Web ページ コード: JavaScript SDK を使用して、Web ページからデータを収集します。 詳しくは、JavaScript SDK の開始をご覧ください。

    Note

    インストルメンテーション キーのインジェストのサポートは、2025 年 3 月 31 日に終了します。 インストルメンテーション キーのインジェストは引き続き機能しますが、この機能の更新プログラムやサポートは提供されなくなります。 接続文字列に移行することで、新機能をご利用いただけます。

    Web サイトを監視するためのより高度な構成については、JavaScript SDK の参照記事を参照してください。

  3. モバイル アプリ コード: App Center SDK を使用して、アプリからイベントを収集します。 次に、このガイドに従い、これらのイベントのコピーを分析のために Application Insights に送信します。

  4. テレメトリの取得: プロジェクトをデバッグ モードで数分間実行します。 次に、Application Insights の [概要] ウィンドウで結果を確認します。

    アプリを発行し、アプリのパフォーマンスを監視してユーザーがアプリを使って何をしているか確認します。

使用状況の人口統計データや統計を調査する

ユーザーがアプリを使用するタイミングと、最も関心のあるページを確認します。 また、ユーザーがどこにいて、どのブラウザーやオペレーティング システムを使用しているかを確認することもできます。

[ユーザー] および [セッション] レポート では、ページまたはカスタム イベントごとにデータをフィルター処理できます。 レポートでは、場所、環境、ページなどのプロパティでデータをセグメント化できます。 独自のフィルターを追加することもできます。

棒グラフが表示されている [ユーザー] タブのスクリーンショット。

右側の洞察では、データのセットで興味深いパターンが示されています。

  • [ユーザー] レポートは、選択した期間内にページにアクセスした一意のユーザー数をカウントします。 Web アプリの場合、ユーザーは Cookie を使用してカウントされます。 ユーザーが異なるブラウザーまたはクライアント マシンを使用してサイトにアクセスした場合、または Cookie を消去した場合は、複数回カウントされます。
  • [セッション] レポートには、サイトにアクセスしたユーザー セッションの数が一覧表示されます。 セッションは、ユーザーによって開始されたアクティビティの期間を表し、非アクティブな期間が 30 分を超えると終了します。

ユーザー、セッション、およびイベント ツールの詳細については、「Application Insights でのユーザー、セッション、およびイベントの分析」を参照してください。

リテンション期間: サービスの利用を再開したユーザーの数

リテンション期間では、一定のタイム バケットでビジネス アクションを実行したユーザーのコーホートに基づいて、ユーザーがアプリの利用を再開した頻度を把握できます。 次の操作を行います。

  • どのような特定の機能により、どのような特定のユーザーが使用を再開したかを把握します。
  • 実際のユーザー データに基づいて仮説を立てます。
  • 製品でリテンション期間が問題になるかどうかを確認します。

ユーザーがアプリの使用を再開する頻度に関する情報が表示されているリテンション期間ブックのスクリーンショット。

上部のリテンション期間コントロールでは、特定のイベントと時間範囲を定義して、リテンション期間を計算できます。 中央のグラフは、指定した時間範囲別のリテンション期間全体のパーセンテージを視覚的に表しています。 下部のグラフは、特定の期間における個々のリテンション期間を表しています。 この詳細レベルでは、ユーザーが何を実行し、どのような理由でユーザーが使用を再開するかをさらに詳しく把握できます。

リテンション期間ブックの詳細については、「Azure Application Insights による Web アプリケーションのユーザー リテンション期間分析」を参照してください。

カスタム ビジネス イベント

アプリでのユーザー操作を理解するには、カスタム イベントをログに記録するコード行を挿入します。 これらのイベントは、ボタンの選択などのさまざまなユーザー アクションや、購入やゲームの勝利などの重要なビジネス イベントを追跡します。

Click Analytics Autocollection プラグインを使用してカスタム イベントを収集することもできます。

ページ ビューでは、役立つイベントを表すことができる場合もありますが、通常そうではないことがほとんどです。 ユーザーは、製品を購入しなくても製品ページを開くことができます。

特定のビジネス イベントを使用して、サイトからユーザーの進行状況をグラフ化できます。 さまざまなオプションについて、ユーザーの嗜好や、どの段階で使用を止め、どのような問題が発生しているかを確認できます。 この知識があれば、開発バックログでの優先順位について情報に基づいた意思決定を行うことができます。

イベントは、アプリのクライアント側からログに記録することができます。

      appInsights.trackEvent({name: "incrementCount"});

または、イベントはサーバー側から記録できます:

    var tc = new Microsoft.ApplicationInsights.TelemetryClient();
    tc.TrackEvent("CreatedAccount", new Dictionary<string,string> {"AccountType":account.Type}, null);
    ...
    tc.TrackEvent("AddedItemToCart", new Dictionary<string,string> {"Item":item.Name}, null);
    ...
    tc.TrackEvent("CompletedPurchase");

これらのイベントにプロパティ値をアタッチできます。これにより、ポータルでイベントを確認するときに、イベントをフィルター処理または分割できます。 匿名ユーザー ID などのプロパティの標準セットも各イベントにアタッチされます。これにより、個人ユーザーのアクティビティのシーケンスを追跡できます。

カスタム イベントプロパティの詳細については、こちらを参照してください。

イベントの詳細な分析

[ユーザー]、[セッション]、および [イベント] ツールでは、ユーザー、イベント名、プロパティごとにカスタム イベントを詳細に分析することができます。

AnalyticsItemsOperation によってフィルター処理され、AppID で分割された [イベント] タブのスクリーンショット。

状況に応じて、[Open the last run query](最後の実行クエリを開く) アイコンを選択すると、基になったクエリに戻ります。

Azure portal の [Application Insights セッション] 画面のスクリーンショット。[最後の実行クエリを開く] アイコンの強調表示。

その後、基になるクエリを変更して、求めている情報を取得できます。

ページ ビューの基になるクエリの例を次に示します。 そのままクエリ エディターに直接貼り付けてテストします。

// average pageView duration by name
let timeGrain=5m;
let dataset=pageViews
// additional filters can be applied here
| where timestamp > ago(1d)
| where client_Type == "Browser" ;
// calculate average pageView duration for all pageViews
dataset
| summarize avg(duration) by bin(timestamp, timeGrain)
| extend pageView='Overall'
// render result in a chart
| render timechart

アプリでのテレメトリの設計

アプリの各機能を設計するときに、ユーザーの満足度をどのように測定するかを検討します。 記録する必要のあるビジネス イベントを決定し、これらのイベントの追跡呼び出しを一からアプリにコーディングします。

A/B テスト

どちらの機能バリエーションが成功するかわからない場合は、その両方をリリースして、異なるユーザーが各バリエーションにアクセスできるようにします。 各バージョンの成功の度合いを測定してから、統合したバージョンに切り替えます。

この手法では、アプリの各バージョンから送信されるすべてのテレメトリに一意のプロパティ値をアタッチします。 これは、アクティブな TelemetryContext のプロパティを定義することで実行できます。 これらの既定のプロパティは、アプリケーションによって送信されるすべてのテレメトリ メッセージに含まれます。 これには、カスタム メッセージと標準テレメトリの両方が含まれます。

Application Insights ポータルでは、プロパティ値に基づいてデータをフィルター選択および分割して、異なるバージョンを比較します。

このステップを行うには、テレメトリ初期化子を設定します:

    // Telemetry initializer class
    public class MyTelemetryInitializer : ITelemetryInitializer
    {
        // In this example, to differentiate versions, we use the value specified in the AssemblyInfo.cs
        // for ASP.NET apps, or in your project file (.csproj) for the ASP.NET Core apps. Make sure that
        // you set a different assembly version when you deploy your application for A/B testing.
        static readonly string _version = 
            System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
            
        public void Initialize(ITelemetry item)
        {
            item.Context.Component.Version = _version;
        }
    }

ASP.NET Core アプリケーションの場合は、Program.cs クラスの Dependency Injection サービス コレクションに新しいテレメトリ初期化子を追加します。

using Microsoft.ApplicationInsights.Extensibility;

builder.Services.AddSingleton<ITelemetryInitializer, MyTelemetryInitializer>();

次のステップ