nuits.jp blog

C#, Xamarin, WPFを中心に書いています。Microsoft MVP for Visual Studio and Development Technologies。なお掲載内容は個人の見解であり、所属する企業を代表するものではありません。

App Center Analyticsを使い倒す - JXUGC #24 春の App Center 祭り

2018/01/20に開催された、「JXUGC #24 春の App Center 祭り」で登壇してきました。 App Centerの機能の中でも特にAnalyticsの機能について、概要と実際に使う際のちょっとしたコツについてお話しさせていただきました。

jxug.connpass.com

資料はこちらに公開していますが、これだけではよく分からない点もありますので、フォローエントリーを上げておきたいと思います。

www.slideshare.net

さて、今回の主題は次の二つになります。

f:id:nuitsjp:20180120142532p:plain

一つはApp CenterのAnalytics機能の概要について。  もう一つは、Analyticsの中でもCustom Events機能を使いこなすコツについてです。

では早速、Analyticsの概要について解説したいと思います。

f:id:nuitsjp:20180120142801p:plain

App Centerでは大きく6種類の機能が提供されています。 今回題材は、そのうちの一つAnalyticsについてです。 さて、Analyticsといっても何を分析するかといいますと対象は基本的にユーザーの行動解析になります。

具体的には大きく次の4つの機能群が提供されています。

f:id:nuitsjp:20180120142747p:plain

「Export to Azure」以外はApp Centerのメニューにある通りです。

f:id:nuitsjp:20180120142737p:plain

それでは、それぞれの機能について簡単に説明します。 まずOverviewです。

f:id:nuitsjp:20180120142725p:plain

Overviewでは、アプリケーションの利用状況をグラフィカルに確認することができます。 Overviewは、アプリケーションで1行コードを挿入するだけで有効になります。 Overviewで確認できる項目は、現時点ではこちらの通りです。

f:id:nuitsjp:20180120142712p:plain

期間別のアクティブユーザー数や、ユーザーが1日に何度アプリケーションを使っているか全体で1日あたりどの程度利用されているかといったEngagement情報や、利用者のデバイスやOSのバージョン比率、国や言語別の利用者数情報。  そして、アプリケーションのバージョン別の利用者数や、最新バージョンへの移行率などが、Overviewでは見ることができます。

つづいて二つ目の機能がCustom Events機能です。 これはアプリケーションのEventをトラッキングするために利用します。 ドキュメントによってCustom Eventsと書かれていたり、Event Metricsと書かれていたり ちょっと統一感ないので混乱に要注意です。

Custom Eventsには二つのViewがあり、こちらはEventページで 発生したイベントの一覧を見て取ることができます。

f:id:nuitsjp:20180120142938p:plain

もう一つはDetail Event Viewで個別のイベントの詳細情報を閲覧できます。

f:id:nuitsjp:20180120142928p:plain

ここのページで見ることができる項目の詳細はこちらの通りです。

f:id:nuitsjp:20180120142914p:plain

なお、Overviewの機能が、Analyticsを有効にするだけで収集されるのに対して、Custom Eventsでは、ユーザーが明示的に収集したい箇所に、トラッキングコードを埋め込んであげる必要があります。

三つ目の機能はLog Flowです。
これはOverviewやCustom Eventsとは違って、分析に使う機能ではありません。

では何に使うのかというと、Analyticsの機能をアプリに埋め込んでいるときに、正しくイベントが通知されているか確認するための機能です。
こちらのように、リアルタイムで通知されたイベントが表示されます。

f:id:nuitsjp:20180120142903p:plain

さいごに、Export to Azure機能です。

f:id:nuitsjp:20180120142846p:plain

これはApp Center Analyticsで収集した情報をAzureのApplication Insights(もしくはBlob Storage)にエクスポートする機能です。
Application Insights には、分析クエリーなどの機能があるらしいので、 App Centerで収集して、 Application Insights へエクスポートして分析するような使い方を想定しているようです。

さて、ここまでAnalyticsの機能の概要を説明してきました。 ここからは、App Center Analyticsを利用手順について、簡単に説明します。

f:id:nuitsjp:20180120143117p:plain

詳細な手順解説はまた別途エントリーを上げたいと思います。  さて、利用自体は非常に簡単なんですが、それでも検討の課題はあります。 

Event Trackingを利用する場合、二つほど悩ましいポイントがあります。 それは、Eventを「どこ」で「どう」とTrackingするか?という事です。

f:id:nuitsjp:20180120143102p:plain

仮にApplicationをMVVMで作るとした場合、まぁMVCでもその他のアーキテクチャでも名称が違うだけで役割は同様ですが、Event Trackingを埋め込む場所は、次の二つのどちらかが有望でしょう。

一つは、ViewからViewModelのプロパティ更新やCommandを実行する個所。
もう一つはViewModelからModelのメソッドを呼び出す箇所です。

実際にはユーザーの詳細な操作ログを取得したいケースが多いでしょうから、前者つまりViewModelでトラッキングするのが適切なケースが多いと思います。
もちろんそこまで詳細な操作情報は必要なく、決定された情報のみトラッキングしたいといったような場合、Modelでトラッキングするというのも、ありでしょう。
ケースバイケースなのでアプリケーションごとに都度検討してください。

今回はViewModelでトラッキングするものとします。
さて「どこで」トラッキングするかは決まりました。あとは「どう」トラッキングするか決める必要があります。

f:id:nuitsjp:20180120143045p:plain

ところで皆さんReactivePropertyを利用しますよね?というのは冗談ですが、いや知らんよ?という方は、大変便利なのでぜひ利用を検討してみてください。

ReactivePropertyを利用するとした場合、ViewModelのバインドするプロパティは全てReactivePropertyでしょうし、ViewModelのICommand実装はReactiveCommandかAsyncReactiveCommandでしょう。  したがって、それらの変化を購読することで、一貫性のあるトラッキングが実現できます。

ViewModelでトラッキングする場合、ReactivePropertyを使わない場合でも、バインドするプロパティの変更と、コマンドの実行を監視してトラッキングするのが常道だと思います。

というわけで、ここからは実際のコードを見ていただきました。詳細は今度エントリーにするかもしれませんが、今回は割愛します。

と言うわけでまとめです。

f:id:nuitsjp:20180120150502p:plain

と言うわけで、今日はここまでです。それではまた!