Application Insights による利用状況分析Usage analysis with Application Insights

最も人気のある Web アプリまたはモバイル アプリの機能は何か。Which features of your web or mobile app are most popular? そのアプリによりユーザーは目標を達成したか。Do your users achieve their goals with your app? 特定の時点でアプリを離れたか。その後、利用を再開したか。Do they drop out at particular points, and do they return later? Azure Application Insights は、ユーザーのアプリの使用方法に関する強力な洞察を得るのに役立ちます。Azure Application Insights helps you gain powerful insights into how people use your app. アプリを更新するたびに、アプリがユーザーにどの程度役立っているかを確認できます。Every time you update your app, you can assess how well it works for users. この知識により、次の開発サイクルに関してデータ駆動型の意思決定を行うことができます。With this knowledge, you can make data driven decisions about your next development cycles.

アプリからテレメトリを送信するSend telemetry from your app

Application Insights をアプリのサーバー コードと Web ページの両方にインストールすることにより、最適な操作環境が得られます。The best experience is obtained by installing Application Insights both in your app server code, and in your web pages. アプリのクライアントおよびサーバー コンポーネントから Azure Portal に分析用のテレメトリが送信されます。The client and server components of your app send telemetry back to the Azure portal for analysis.

  1. サーバー コード: ASP.NETAzureJavaNode.js、またはその他のアプリ向けの適切なモジュールをインストールします。Server code: Install the appropriate module for your ASP.NET, Azure, Java, Node.js, or other app.

  2. Web ページ コード: Web ページの閉じる </head> タグの前に、次のスクリプトを追加します。Web page code: Add the following script to your web page before the closing </head>. インストルメンテーション キーを Application Insights リソースの適切な値に置き換えます。Replace instrumentation key with the appropriate value for your Application Insights resource:

    <script type="text/javascript">
    var sdkInstance="appInsightsSDK";window[sdkInstance]="appInsights";var aiName=window[sdkInstance],aisdk=window[aiName]||function(e){function n(e){t[e]=function(){var n=arguments;t.queue.push(function(){t[e].apply(t,n)})}}var t={config:e};t.initialize=!0;var i=document,a=window;setTimeout(function(){var n=i.createElement("script");n.src=e.url||"https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",i.getElementsByTagName("script")[0].parentNode.appendChild(n)});try{t.cookie=i.cookie}catch(e){}t.queue=[],t.version=2;for(var r=["Event","PageView","Exception","Trace","DependencyData","Metric","PageViewPerformance"];r.length;)n("track"+r.pop());n("startTrackPage"),n("stopTrackPage");var s="Track"+r[0];if(n("start"+s),n("stop"+s),n("setAuthenticatedUserContext"),n("clearAuthenticatedUserContext"),n("flush"),!(!0===e.disableExceptionTracking||e.extensionConfig&&e.extensionConfig.ApplicationInsightsAnalytics&&!0===e.extensionConfig.ApplicationInsightsAnalytics.disableExceptionTracking)){n("_"+(r="onerror"));var o=a[r];a[r]=function(e,n,i,a,s){var c=o&&o(e,n,i,a,s);return!0!==c&&t["_"+r]({message:e,url:n,lineNumber:i,columnNumber:a,error:s}),c},e.autoExceptionInstrumented=!0}return t}(
    {
      instrumentationKey:"INSTRUMENTATION_KEY"
    }
    );window[aiName]=aisdk,aisdk.queue&&0===aisdk.queue.length&&aisdk.trackPageView({});
    </script>
    

    Web サイトを監視するためのより高度な構成については、JavaScript SDK の参照記事を参照してください。To learn more advanced configurations for monitoring websites, check out the JavaScript SDK reference article.

  3. モバイル アプリ コード: このガイドに従い、App Center SDK を使ってアプリからイベントを収集し、これらのイベントのコピーを分析のために Application Insights に送信します。Mobile app code: Use the App Center SDK to collect events from your app, then send copies of these events to Application Insights for analysis by following this guide.

  4. テレメトリの取得: プロジェクトをデバッグ モードで数分間実行し、Application Insights の [概要] ブレードで結果を確認します。Get telemetry: Run your project in debug mode for a few minutes, and then look for results in the Overview blade in Application Insights.

    アプリを発行し、アプリのパフォーマンスを監視してユーザーがアプリを使って何をしているか確認します。Publish your app to monitor your app's performance and find out what your users are doing with your app.

ユーザー ID とセッション ID をテレメトリに含めるInclude user and session ID in your telemetry

Application Insights で一定期間にわたってユーザーを追跡するためには、それらのユーザーを識別する手段が必要となります。To track users over time, Application Insights requires a way to identify them. ユーザー ID やセッション ID を必要としない使用状況ツールはイベント ツールだけです。The Events tool is the only Usage tool that does not require a user ID or a session ID.

このプロセスを使用してユーザー ID とセッション ID の送信を開始します。Start sending user and session IDs using this process.

使用状況の人口統計データや統計を調査するExplore usage demographics and statistics

ユーザーがアプリをいつ使い、どのページに最も興味があり、ユーザーがどこにいて、どのようなブラウザーやオペレーティング システムを使っているかを確認しましょう。Find out when people use your app, what pages they're most interested in, where your users are located, what browsers and operating systems they use.

[ユーザー] および [セッション] レポートでは、ページごとまたはカスタム イベントごとにデータをフィルター処理し、場所、環境、ページなどのプロパティでデータをセグメント化できます。The Users and Sessions reports filter your data by pages or custom events, and segment them by properties such as location, environment, and page. 独自のフィルターを追加することもできます。You can also add your own filters.

ユーザー

右側の洞察では、データのセットで興味深いパターンが示されています。Insights on the right point out interesting patterns in the set of data.

  • [ユーザー] レポートは、選択した期間内にページにアクセスした一意のユーザー数をカウントします。The Users report counts the numbers of unique users that access your pages within your chosen time periods. Web アプリの場合、ユーザーは Cookie を使用してカウントされます。For web apps, users are counted by using cookies. ユーザーが異なるブラウザーまたはクライアント マシンを使用してサイトにアクセスした場合、または Cookie を消去した場合は、複数回カウントされます。If someone accesses your site with different browsers or client machines, or clears their cookies, then they will be counted more than once.
  • [セッション] レポートは、サイトにアクセスしたユーザー セッションの数をカウントします。The Sessions report counts the number of user sessions that access your site. セッションとは、ユーザーによるアクティビティの期間で、30 分以上の非アクティブ状態で終了します。A session is a period of activity by a user, terminated by a period of inactivity of more than half an hour.

ユーザー、セッション、およびイベント ツールに関する詳細More about the Users, Sessions, and Events tools

リテンション期間 - サービスの利用を再開したユーザーの数Retention - how many users come back?

リテンション期間では、一定のタイム バケットでビジネス アクションを実行したユーザーのコーホートに基づいて、ユーザーがアプリの利用を再開した頻度を把握できます。Retention helps you understand how often your users return to use their app, based on cohorts of users that performed some business action during a certain time bucket. 

  • どのような特定の機能により、どのような特定のユーザーが使用を再開したかを把握しますUnderstand what specific features cause users to come back more than others
  • 実際のユーザー データに基づいて仮説を立てますForm hypotheses based on real user data
  • 製品でリテンション期間が問題になるかどうかを確認します。Determine whether retention is a problem in your product

保持

上部のリテンション期間コントロールでは、特定のイベントと時間範囲を定義して、リテンション期間を計算できます。The retention controls on top allow you to define specific events and time range to calculate retention. 中央のグラフは、指定した時間範囲別のリテンション期間全体のパーセンテージを視覚的に表しています。The graph in the middle gives a visual representation of the overall retention percentage by the time range specified. 下部のグラフは、特定の期間における個々のリテンション期間を表しています。The graph on the bottom represents individual retention in a given time period. この詳細レベルでは、ユーザーが何を実行し、どのような理由でユーザーが使用を再開するかをさらに詳しく把握できます。This level of detail allows you to understand what your users are doing and what might affect returning users on a more detailed granularity.

リテンション期間について詳細More about the Retention tool

カスタム ビジネス イベントCustom business events

アプリでユーザーが何を行っているかを明確に把握するには、カスタム イベントをログに記録するコード行を挿入すると便利です。To get a clear understanding of what users do with your app, it's useful to insert lines of code to log custom events. これらのイベントにより、特定のボタンのクリックなどの詳細なユーザー アクションから、購入、ゲームに勝つなどのより重要なビジネス イベントまで追跡できます。These events can track anything from detailed user actions such as clicking specific buttons, to more significant business events such as making a purchase or winning a game.

ページ ビューでは、役立つイベントを表すことができる場合もありますが、通常そうではないことがほとんどです。Although in some cases, page views can represent useful events, it isn't true in general. ユーザーは、製品を購入しなくても製品ページを開くことができます。A user can open a product page without buying the product.

特定のビジネス イベントを使用して、サイトからユーザーの進行状況をグラフ化できます。With specific business events, you can chart your users' progress through your site. さまざまなオプションについて、ユーザーの嗜好や、どの段階で使用を止め、どのような問題が発生しているかを確認できます。You can find out their preferences for different options, and where they drop out or have difficulties. この知識があれば、開発バックログでの優先順位について情報に基づいた意思決定を行うことができます。With this knowledge, you can make informed decisions about the priorities in your development backlog.

イベントは、アプリのクライアント側からログに記録することができます。Events can be logged from the client side of the app:


    appInsights.trackEvent("ExpandDetailTab", {DetailTab: tabName});

または、サーバー側から記録することもできます。Or from the server side:

    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");

これらのイベントにプロパティ値をアタッチできます。これにより、ポータルでイベントを確認するときに、イベントをフィルター処理または分割できます。You can attach property values to these events, so that you can filter or split the events when you inspect them in the portal. また、匿名ユーザー ID などのプロパティの標準セットが各イベントにアタッチされます。これにより、個人ユーザーのアクティビティのシーケンスを追跡できます。In addition, a standard set of properties is attached to each event, such as anonymous user ID, which allows you to trace the sequence of activities of an individual user.

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

イベントの詳細な分析Slice and dice events

[ユーザー]、[セッション]、および [イベント] ツールでは、ユーザー、イベント名、プロパティごとにカスタム イベントを詳細に分析することができます。In the Users, Sessions, and Events tools, you can slice and dice custom events by user, event name, and properties. ユーザーUsers

アプリでのテレメトリの設計Design the telemetry with the app

アプリの各機能を設計するときに、ユーザーの満足度をどのように測定するかを検討します。When you are designing each feature of your app, consider how you are going to measure its success with your users. 記録する必要のあるビジネス イベントを決定し、これらのイベントの追跡呼び出しを一からアプリにコーディングします。Decide what business events you need to record, and code the tracking calls for those events into your app from the start.

A | B テストA | B Testing

ある機能のどちらのバージョンが成功するかわからない場合は、その両方をリリースして、それぞれを異なるユーザーが利用できるようにします。If you don't know which variant of a feature will be more successful, release both of them, making each accessible to different users. 各バージョンの成功の度合いを測定してから、統合したバージョンに移行します。Measure the success of each, and then move to a unified version.

この手法では、アプリの各バージョンから送信されるすべてのテレメトリに異なるプロパティ値をアタッチします。For this technique, you attach distinct property values to all the telemetry that is sent by each version of your app. これは、アクティブな TelemetryContext のプロパティを定義することで実行できます。You can do that by defining properties in the active TelemetryContext. このような既定のプロパティは、カスタム メッセージだけでなく、標準のテレメトリも同様に、アプリケーションから送信されるすべてのテレメトリ メッセージに追加されます。These default properties are added to every telemetry message that the application sends - not just your custom messages, but the standard telemetry as well.

Application Insights ポータルでは、プロパティ値に基づいてデータをフィルター選択および分割して、異なるバージョンを比較します。In the Application Insights portal, filter and split your data on the property values, so as to compare the different versions.

これを行うには、テレメトリ初期化子を設定します。To do this, set up a telemetry initializer:

ASP.NET アプリASP.NET apps

    // Telemetry initializer class
    public class MyTelemetryInitializer : ITelemetryInitializer
    {
        public void Initialize(ITelemetry item)
            {
                var itemProperties = item as ISupportProperties;
                if (itemProperties != null && !itemProperties.Properties.ContainsKey("AppVersion"))
                {
                    itemProperties.Properties["AppVersion"] = "v2.1";
                }
            }
    }

Web アプリ初期化子 (Global.asax.cs など) 内:In the web app initializer such as Global.asax.cs:


    protected void Application_Start()
    {
        // ...
        TelemetryConfiguration.Active.TelemetryInitializers
         .Add(new MyTelemetryInitializer());
    }

ASP.NET Core アプリASP.NET Core apps

注意

ApplicationInsights.config または TelemetryConfiguration.Active を使用して初期化子を追加することは、ASP.NET Core アプリケーションでは無効です。Adding initializer using ApplicationInsights.config or using TelemetryConfiguration.Active is not valid for ASP.NET Core applications.

ASP.NET Core アプリケーションの場合、新しい TelemetryInitializer を追加するには、次に示すように Dependency Injection コンテナーに追加します。For ASP.NET Core applications, adding a new TelemetryInitializer is done by adding it to the Dependency Injection container, as shown below. これは Startup.cs クラスの ConfigureServices メソッドで行われます。This is done in ConfigureServices method of your Startup.cs class.

 using Microsoft.ApplicationInsights.Extensibility;
 using CustomInitializer.Telemetry;
 public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<ITelemetryInitializer, MyTelemetryInitializer>();
}

すべての新しい TelemetryClients により、指定したプロパティ値が自動的に追加されます。All new TelemetryClients automatically add the property value you specify. 個々のテレメトリ イベントは、既定値をオーバーライドすることができます。Individual telemetry events can override the default values.

次のステップNext steps