SlideShare a Scribd company logo
App Center Analyticsを使い倒そう
JXUGC #24 春の App Center 祭り
Atsushi Nakamura
About Me
Copyright 2017 @nuits_jp
中村 充志 / Atsushi Nakamura
• リコージャパン株式会社 金融事業部所属
• Enterprise系のITアーキテクト
• JavaからC#へ渡り歩く
• 趣味はXamarin
• Blog http://www.nuits.jp
• Blog(英語) https://blog.nuits.jp
• Twitter @nuits_jp
App Center Analyticsを使い倒そう
Today’s Goal
1. App Center Analytics の概要
2. Custom Events を使い倒す
Today’s Goal
Xamarin.Forms NavigationOverview Slide 4
App Center Analyticsを使い倒そう
Analytics概要
App Center
Test
Copyright 2017 @nuits_jp
Build
Distribute
Craches
Analytics
Push Notifications
App Center Analytics 概要
App CenterのAnalyticsではユーザーの行動解析のために
つぎの4つの、機能群を提供しています。
Copyright 2017 @nuits_jp
No. 機能分類 説明
1 Overview アプリケーション利用者の利用状況の確認
2 Custom
Events
カスタムイベント情報の収集と確認
3 Log Flow Analytics SDKの登録情報のリアルタイム監視
デバッグなどに利用
4 Export to
Azure
Microsoft AzureのApplication Insightsへ、データをエ
クスポートして分析可能
Slide 8
App Center Analytics 概要
Copyright 2017 @nuits_jp
Slide 9
App Center Analytics:Overview①
Copyright 2017 @nuits_jp
App Center Analytics:Overview②
Copyright 2017 @nuits_jp
No. 機能 項目 説明
1 Active Users Monthly 月別のアクティブユーザー数
2 Weekly 週別のアクティブユーザー数
3 Daily 日別のアクティブユーザー数
4 Engagement Daily sessions per user 1ユーザーの1日の平均セッション数
5 Total sessions 期間内の総セッション数
6 Average sessions per day 一日の平均セッション数
7 Session duration セッション別接続時間
8 Average session length 平均セッション時間
9 Devices and OS Device model distribution 機器別の利用者数・比率
10 OS distribution OSバージョン別の利用者数・比率
11 Countries and Languages Countries 国別の利用者数・比率
12 Languages 言語別の利用者数・比率
13 Active Users per Version Active Users per Version アプリバージョン別利用者数
14 Latest Version アプリケーションの最終バージョン
15 Adoption 最終バージョンの移行率
https://docs.microsoft.com/en-us/appcenter/analytics/overview
Slide 11
App Center Analytics:Custom Events①
Copyright 2017 @nuits_jp
Slide 12
App Center Analytics:Custom Events②
Copyright 2017 @nuits_jp
App Center Analytics:Custom Events
Copyright 2017 @nuits_jp
No. 機能 項目 説明
1 Event Page Count イベント発生数
2 Trend 前回期間からのカウントの変更トレンド
3 Users イベントを発生させたユーザー数
4 User change 前回期間からのユーザー数変更トレンド
5 Per user ユーザーごとの平均発行数
6 Detail event
view
Users イベントを発行させたユーザー数の推移
7 Count イベント発行数の推移
8 Count per user ユーザーごとのイベント発行数の推移
9 Count per
session
セッションごとのイベント発行数の推移
10 Properties カスタムしたログプロパティhttps://docs.microsoft.com/en-us/appcenter/analytics/event-metrics
Slide 14
App Center Analytics:Log Flow
Copyright 2017 @nuits_jp
Slide 15
App Center Analytics:Export to Azure
App Center Analyticsで収集した情報をAzureのApplication Insightsにエクスポート
する機能
Copyright 2017 @nuits_jp
App Center Analyticsを使い倒そう
Analyticsを使い倒す4つのステップ
Copyright 2017 @nuits_jp
1. App CenterへApplicationの追加
2. ApplicationへNuGetからパッケージの適用
3. App Center SDKの初期化(キー登録)
4. EventTrackingコードの追記
Analyticsを使い倒す4つのステップ
Copyright 2017 @nuits_jp Slide 17
App Center Analyticsを使い倒そう
「どこで」「どう」トラッキングしますか?
Copyright 2017 @nuits_jp
「どこで」トラッキングするか? MVVM編
候補として、すぐ思い当たるのはつぎの2か所でしょう。
1. ViewからViewModelのプロパティの更新またはCommandの実行
2. ViewModelからModelのメソッド呼び出し
ユーザー操作の詳細な分析を行うにはView・ViewModel間が適切でしょう。
Copyright 2017 @nuits_jp
Binding &
Comman
d
Call
NotificationNotificatio
n
Slide 20
「どう」トラッキングする? Reactive Property 編
当然
• ViewModelのプロパティは全てReactiveProperty
• ViewModelのICommand実装は全て
ReactiveCommand or AsyncReactiveCommand
ですよね?
という訳で、それらをSubscribeしてEventTrackingすると一貫性を保って、簡潔
に実装できます。
Copyright 2017 @nuits_jp
Slide 21Copyright 2017 @nuits_jp
実際に見てみよう!
Slide 22
サンプルアプリ
Xamarin.Formsアーキテクチャサンプルアプリ
Blue Monkey
https://github.com/ProjectBlueMonkey/BlueMonkey
Copyright 2017 @nuits_jp
Slide 23
AOPとは
AOP:Aspect Oriented Programing
AOPとはOOPとは直行する概念で、OOPでは実現が面倒なケースをシンプルに
解決する概念です。
AOPではアプリケーションの中心的な関心事(Core Concern)と、横断的な関心
事(Cross Cutting Concern)を分けて実装して、組み合わせることで横断的な関
心事の実装課題の解決を図ろうというものです。
中心的な関心事:
• Expense一覧の閲覧
• Expenseの追加など
横断的な関心事:
• Custom Eventのトラッキングなど
Copyright 2017 @nuits_jp
Slide 24
AOPイメージ
Copyright 2017 @nuits_jp
View
Model
View
例外処理 ロギングトランザク
ション管理
認証処理
・・・
アスペクト
Expense検索
Expense登録
Slide 25
Xamarin で AOP するには問題が…
ただし、XamarinでAOPをやろうとするとiOSがネックになります。
AOPライブラリの多くは、System.Reflection.Emitなどを利用した動的コード生
成に依存しています。
しかし、iOSでは動的コード生成が許されていません。
ではだめなのか?
Copyright 2017 @nuits_jp
Slide 26
Xamarin で AOP するには問題が…
ただし、XamarinでAOPをやろうとするとiOSがネックになります。
AOPライブラリの多くは、System.Reflection.Emitなどを利用した動的コード生
成に依存しています。
しかし、iOSでは動的コード生成が許されていません。
ではだめなのか?
動的コード生成がだめなら
静的コード生成すればいいじゃない?
Atsushi Nakamura(1976~)
Copyright 2017 @nuits_jp
App Center Analyticsを使い倒そう
まとめ
Copyright 2017 @nuits_jp
Slide 28
App Center Analytics まとめ
App Center Analyticsではつぎの機能を提供しています。
1. Overview
2. Custom Events
3. Log Flow
4. Export to Azure
App Center Analyticsを利用する際は
1. イベントのトラッキング箇所を十分検討しましょう。候補はViewModelもし
くはModelの入り口のメソッド
2. ViewModel には ReactiveProperty の採用を検討しましょう
3. Custom EventsのトラッキングにはAOPの採用を検討しましょう
Copyright 2017 @nuits_jp
ThankYou!
Any Questions?

More Related Content

PDF
cyREST入門~RとCytoscapeのAPI連携~
PDF
Pythonはどうやってlen関数で長さを手にいれているの?
PPTX
SageMaker Neoの可能性について - 第3回 Amazon SageMaker 事例祭り+体験ハンズオン
PDF
Deep State Space Models for Time Series Forecasting の紹介
PDF
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
PPTX
[DL輪読会]YOLOv4: Optimal Speed and Accuracy of Object Detection
PDF
Amazon SageMaker で始める機械学習
PDF
クラウド環境下におけるAPIリトライ設計
cyREST入門~RとCytoscapeのAPI連携~
Pythonはどうやってlen関数で長さを手にいれているの?
SageMaker Neoの可能性について - 第3回 Amazon SageMaker 事例祭り+体験ハンズオン
Deep State Space Models for Time Series Forecasting の紹介
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
[DL輪読会]YOLOv4: Optimal Speed and Accuracy of Object Detection
Amazon SageMaker で始める機械学習
クラウド環境下におけるAPIリトライ設計

What's hot (20)

PPTX
ストレージ層で行うランサムウェア対策_20210401
PPT
文献調査をどのように行うべきか?
PDF
分散表現を用いたリアルタイム学習型セッションベース推薦システム
PPTX
Ansibleの最近の動向を追ってみた
PDF
Recap: Windows Server 2019 Failover Clustering
PDF
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
PDF
クラシックな機械学習の入門  8. クラスタリング
PDF
WindowsのCP932に苦闘している件
PPTX
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
PDF
セグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイント
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PPTX
音響メディア信号処理における独立成分分析の発展と応用, History of independent component analysis for sou...
PDF
Elasticsearchプラグインの作り方
PDF
ヤフーの検索基盤と機械学習検索ランキング #yjtc / YJTC21 B-7
PDF
Akkaとは。アクターモデル とは。
ODP
Format string Attack
PPTX
Product ManagerとProduct Ownerの役割の違いについて
PDF
徳丸本ができるまで
PDF
Kaggleのテクニック
ストレージ層で行うランサムウェア対策_20210401
文献調査をどのように行うべきか?
分散表現を用いたリアルタイム学習型セッションベース推薦システム
Ansibleの最近の動向を追ってみた
Recap: Windows Server 2019 Failover Clustering
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
クラシックな機械学習の入門  8. クラスタリング
WindowsのCP932に苦闘している件
SSRF対策としてAmazonから発表されたIMDSv2の効果と破り方
セグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイント
SPAセキュリティ入門~PHP Conference Japan 2021
音響メディア信号処理における独立成分分析の発展と応用, History of independent component analysis for sou...
Elasticsearchプラグインの作り方
ヤフーの検索基盤と機械学習検索ランキング #yjtc / YJTC21 B-7
Akkaとは。アクターモデル とは。
Format string Attack
Product ManagerとProduct Ownerの役割の違いについて
徳丸本ができるまで
Kaggleのテクニック
Ad

Similar to App center analyticsを使い倒そう (20)

PPTX
Old:App center analyticsを使い倒そう
PDF
App center analyticsを使い倒そう
PPTX
Visual Studio App CenterでAndroid開発にCI/CDを導入しよう
PPTX
Visual Studio App Centerで始めるCI/CD(Android)
PDF
データファースト開発
PDF
【KSKアナリティクス】 RapidMiner 紹介 (short)
PDF
Azure と Visual Studio で実践するモダナイゼーションとクラウド ネイティブ アプリケーション開発
PDF
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
PDF
Developers-Summit-2022_Improving-Digital-Customer-Experience-with-Enterprise_...
PDF
Einsteinvision - object detection を試してみよう
PDF
Realize tokyo2019 yrglm
PPTX
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
PDF
【Medix】解析サービスのご案内資料
PPTX
Visual Studio App Centerで始めるCI/CD(iOS)
PDF
JavaOne2017参加報告 Microservices topic & approach #jjug
PDF
Python twitter data_150709
PDF
Smart store servlerless-20191030-40min
PPTX
Visual Studio App CenterでGitHubのIssue発行を自動化しよう
PDF
Social GAME における AI 活用事例 [第 4 回 Google Cloud INSIDE Games & Apps]
PDF
Cloud Native and Agile Approach
Old:App center analyticsを使い倒そう
App center analyticsを使い倒そう
Visual Studio App CenterでAndroid開発にCI/CDを導入しよう
Visual Studio App Centerで始めるCI/CD(Android)
データファースト開発
【KSKアナリティクス】 RapidMiner 紹介 (short)
Azure と Visual Studio で実践するモダナイゼーションとクラウド ネイティブ アプリケーション開発
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
Developers-Summit-2022_Improving-Digital-Customer-Experience-with-Enterprise_...
Einsteinvision - object detection を試してみよう
Realize tokyo2019 yrglm
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
【Medix】解析サービスのご案内資料
Visual Studio App Centerで始めるCI/CD(iOS)
JavaOne2017参加報告 Microservices topic & approach #jjug
Python twitter data_150709
Smart store servlerless-20191030-40min
Visual Studio App CenterでGitHubのIssue発行を自動化しよう
Social GAME における AI 活用事例 [第 4 回 Google Cloud INSIDE Games & Apps]
Cloud Native and Agile Approach
Ad

More from Atsushi Nakamura (17)

PPSX
Settings SyncとCodespaceで体験する新世代へのパラダイムシフト
PPTX
C#メタプログラミング概略 in 2021
PPTX
Unicodeで半角全角を扱うAmbiguous(曖昧さ)とUncertainty(不確実性)の恐怖
PPTX
世界一わかりやすいClean Architecture - DroidKaigiバージョン
PPTX
世界一わかりやすいClean Architecture
PPTX
世界一わかりやすいClean Architecture release-preview
PPTX
世界一わかりやすいClean Architecture alpha-1
PPTX
Visual Studio 2019で始める「WPF on .NET Core 3.0」開発
PPTX
Desktop app dev strategy for .net core 3.0
PPTX
継続的にテスト可能な設計を考える
PPTX
継続的にテスト可能な設計を考える ベータ版
PPTX
α版 継続的にテスト可能な設計を考える
PPTX
Xamarin.forms navigation overview
PPTX
Blue monkey architecture overview
PPTX
Xamarin Dev days 2 xamarin.forms ja
PPTX
Why prism for xamarin.forms
PPTX
Enterpriseから見たXamarinの可能性
Settings SyncとCodespaceで体験する新世代へのパラダイムシフト
C#メタプログラミング概略 in 2021
Unicodeで半角全角を扱うAmbiguous(曖昧さ)とUncertainty(不確実性)の恐怖
世界一わかりやすいClean Architecture - DroidKaigiバージョン
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture release-preview
世界一わかりやすいClean Architecture alpha-1
Visual Studio 2019で始める「WPF on .NET Core 3.0」開発
Desktop app dev strategy for .net core 3.0
継続的にテスト可能な設計を考える
継続的にテスト可能な設計を考える ベータ版
α版 継続的にテスト可能な設計を考える
Xamarin.forms navigation overview
Blue monkey architecture overview
Xamarin Dev days 2 xamarin.forms ja
Why prism for xamarin.forms
Enterpriseから見たXamarinの可能性

App center analyticsを使い倒そう

  • 1. App Center Analyticsを使い倒そう JXUGC #24 春の App Center 祭り Atsushi Nakamura
  • 2. About Me Copyright 2017 @nuits_jp 中村 充志 / Atsushi Nakamura • リコージャパン株式会社 金融事業部所属 • Enterprise系のITアーキテクト • JavaからC#へ渡り歩く • 趣味はXamarin • Blog http://www.nuits.jp • Blog(英語) https://blog.nuits.jp • Twitter @nuits_jp
  • 4. 1. App Center Analytics の概要 2. Custom Events を使い倒す Today’s Goal Xamarin.Forms NavigationOverview Slide 4
  • 6. App Center Test Copyright 2017 @nuits_jp Build Distribute Craches Analytics Push Notifications
  • 7. App Center Analytics 概要 App CenterのAnalyticsではユーザーの行動解析のために つぎの4つの、機能群を提供しています。 Copyright 2017 @nuits_jp No. 機能分類 説明 1 Overview アプリケーション利用者の利用状況の確認 2 Custom Events カスタムイベント情報の収集と確認 3 Log Flow Analytics SDKの登録情報のリアルタイム監視 デバッグなどに利用 4 Export to Azure Microsoft AzureのApplication Insightsへ、データをエ クスポートして分析可能
  • 8. Slide 8 App Center Analytics 概要 Copyright 2017 @nuits_jp
  • 9. Slide 9 App Center Analytics:Overview① Copyright 2017 @nuits_jp
  • 10. App Center Analytics:Overview② Copyright 2017 @nuits_jp No. 機能 項目 説明 1 Active Users Monthly 月別のアクティブユーザー数 2 Weekly 週別のアクティブユーザー数 3 Daily 日別のアクティブユーザー数 4 Engagement Daily sessions per user 1ユーザーの1日の平均セッション数 5 Total sessions 期間内の総セッション数 6 Average sessions per day 一日の平均セッション数 7 Session duration セッション別接続時間 8 Average session length 平均セッション時間 9 Devices and OS Device model distribution 機器別の利用者数・比率 10 OS distribution OSバージョン別の利用者数・比率 11 Countries and Languages Countries 国別の利用者数・比率 12 Languages 言語別の利用者数・比率 13 Active Users per Version Active Users per Version アプリバージョン別利用者数 14 Latest Version アプリケーションの最終バージョン 15 Adoption 最終バージョンの移行率 https://docs.microsoft.com/en-us/appcenter/analytics/overview
  • 11. Slide 11 App Center Analytics:Custom Events① Copyright 2017 @nuits_jp
  • 12. Slide 12 App Center Analytics:Custom Events② Copyright 2017 @nuits_jp
  • 13. App Center Analytics:Custom Events Copyright 2017 @nuits_jp No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド 3 Users イベントを発生させたユーザー数 4 User change 前回期間からのユーザー数変更トレンド 5 Per user ユーザーごとの平均発行数 6 Detail event view Users イベントを発行させたユーザー数の推移 7 Count イベント発行数の推移 8 Count per user ユーザーごとのイベント発行数の推移 9 Count per session セッションごとのイベント発行数の推移 10 Properties カスタムしたログプロパティhttps://docs.microsoft.com/en-us/appcenter/analytics/event-metrics
  • 14. Slide 14 App Center Analytics:Log Flow Copyright 2017 @nuits_jp
  • 15. Slide 15 App Center Analytics:Export to Azure App Center Analyticsで収集した情報をAzureのApplication Insightsにエクスポート する機能 Copyright 2017 @nuits_jp
  • 17. 1. App CenterへApplicationの追加 2. ApplicationへNuGetからパッケージの適用 3. App Center SDKの初期化(キー登録) 4. EventTrackingコードの追記 Analyticsを使い倒す4つのステップ Copyright 2017 @nuits_jp Slide 17
  • 19. 「どこで」トラッキングするか? MVVM編 候補として、すぐ思い当たるのはつぎの2か所でしょう。 1. ViewからViewModelのプロパティの更新またはCommandの実行 2. ViewModelからModelのメソッド呼び出し ユーザー操作の詳細な分析を行うにはView・ViewModel間が適切でしょう。 Copyright 2017 @nuits_jp Binding & Comman d Call NotificationNotificatio n
  • 20. Slide 20 「どう」トラッキングする? Reactive Property 編 当然 • ViewModelのプロパティは全てReactiveProperty • ViewModelのICommand実装は全て ReactiveCommand or AsyncReactiveCommand ですよね? という訳で、それらをSubscribeしてEventTrackingすると一貫性を保って、簡潔 に実装できます。 Copyright 2017 @nuits_jp
  • 21. Slide 21Copyright 2017 @nuits_jp 実際に見てみよう!
  • 23. Slide 23 AOPとは AOP:Aspect Oriented Programing AOPとはOOPとは直行する概念で、OOPでは実現が面倒なケースをシンプルに 解決する概念です。 AOPではアプリケーションの中心的な関心事(Core Concern)と、横断的な関心 事(Cross Cutting Concern)を分けて実装して、組み合わせることで横断的な関 心事の実装課題の解決を図ろうというものです。 中心的な関心事: • Expense一覧の閲覧 • Expenseの追加など 横断的な関心事: • Custom Eventのトラッキングなど Copyright 2017 @nuits_jp
  • 24. Slide 24 AOPイメージ Copyright 2017 @nuits_jp View Model View 例外処理 ロギングトランザク ション管理 認証処理 ・・・ アスペクト Expense検索 Expense登録
  • 25. Slide 25 Xamarin で AOP するには問題が… ただし、XamarinでAOPをやろうとするとiOSがネックになります。 AOPライブラリの多くは、System.Reflection.Emitなどを利用した動的コード生 成に依存しています。 しかし、iOSでは動的コード生成が許されていません。 ではだめなのか? Copyright 2017 @nuits_jp
  • 26. Slide 26 Xamarin で AOP するには問題が… ただし、XamarinでAOPをやろうとするとiOSがネックになります。 AOPライブラリの多くは、System.Reflection.Emitなどを利用した動的コード生 成に依存しています。 しかし、iOSでは動的コード生成が許されていません。 ではだめなのか? 動的コード生成がだめなら 静的コード生成すればいいじゃない? Atsushi Nakamura(1976~) Copyright 2017 @nuits_jp
  • 28. Slide 28 App Center Analytics まとめ App Center Analyticsではつぎの機能を提供しています。 1. Overview 2. Custom Events 3. Log Flow 4. Export to Azure App Center Analyticsを利用する際は 1. イベントのトラッキング箇所を十分検討しましょう。候補はViewModelもし くはModelの入り口のメソッド 2. ViewModel には ReactiveProperty の採用を検討しましょう 3. Custom EventsのトラッキングにはAOPの採用を検討しましょう Copyright 2017 @nuits_jp

Editor's Notes

  • #2: みなさんこんにちは。 ご紹介いただきました。ニュイこと中村です。 今日は App Center Analyticsを使い倒そう というTitleでお話しさせていただこうと思います。 よろしくお願いいたします。
  • #3: まずは自己紹介から 中村充志と申します。 リコージャパン株式会社の金融ソリューション開発部 というところに所属しています。 Enterprise一直線な環境でITアーキテクトをやらせてもらっています。
  • #4: さて、今日お話ししたい内容ですが
  • #5: つぎの二つについて、お話ししたいと思います。 一つはApp CenterのAnalytics機能の概要について もう一つは、Analyticsの中でもCustom Events機能を使いこなすコツについて です。
  • #6: では早速、Analyticsの概要についてお話したいと思います。
  • #7: App Centerでは大きく6種類の機能が提供されています。 今回お話しする対象は、そのうちの一つAnalyticsについてです。 さて、Analyticsといっても何を分析するかといいますと 対象は基本的にユーザーの行動解析になります。
  • #8: 具体的には、提供する機能は次の4つに分類されます。 ・Overview ・Custom Events ・Log Flow そして、Export to Azureです。
  • #9: 「Export to Azure」以外はApp Centerのメニューにある通りです。 それでは、それぞれの機能について簡単に説明します。
  • #10: まずOverviewです。 Overviewでは、アプリケーションの利用状況をグラフィカルに確認することができます。 Overviewは、アプリケーションで1行 コードを挿入するだけで有効になります。
  • #11: Overviewで確認できる項目は、現時点ではこちらの通りです。 期間別のアクティブユーザー数や、ユーザーが1日に何度アプリケーションを使っているか 全体で1日あたりどの程度利用されているかといったEngagement情報や 利用者のデバイスやOSのバージョン比率 国や言語別の利用者数情報 そして、アプリケーションのバージョン別の利用者数や 最新バージョンへの移行率などが、Overviewでは見ることができます。
  • #12: つづいて二つ目の機能がCustom Events機能です。 これはアプリケーションのEventをトラッキングするために利用します。 ドキュメントによってCustom Eventsと書かれていたり、Event Metricsと書かれていたり ちょっと統一感ないので混乱に要注意です。 Custom Eventsには二つのViewがあり、こちらはEventページで 発生したイベントの一覧を見て取ることができます。
  • #13: もう一つはDetail Event Viewで個別の イベントの詳細情報を閲覧できます。
  • #14: ここのページで見ることができる項目の詳細はこちらの通りです。 細かいところはあとで資料を公開しますので 良かったら確認してみてください。 なお、Overviewの機能が、Analyticsを有効にするだけで収集されるのに対して Custom Eventsでは、ユーザーが明示的に収集したい箇所に トラッキングコードを埋め込んであげる必要があります。
  • #15: 三つ目の機能はLog Flowです。 これはOverviewやCustom Eventsとは違って、分析に使う機能ではありません。 では何に使うのかというと、Analyticsの機能をアプリに埋め込んでいるときに 正しくイベントが通知されているか確認するための機能です。 こちらのように、リアルタイムで通知されたイベントが表示されます。 あとで実際に見てみましょう。
  • #16: さいごに、Export to Azure機能です。 これはApp Center Analyticsで収集した情報をAzureのApplication Insightsにエクスポートする機能です。 Application Insights には、分析クエリーなどの機能があるらしいので、 App Centerで収集して、 Application Insights へエクスポートして分析するような使い方を想定しているようです。
  • #17: さて、ここまでAnalyticsの機能の概要を説明してきました。 ここからは、App Center Analyticsを利用手順について、簡単に説明します。
  • #18: Analyticsの利用は、非常に簡単です。 まずは、App Centerのポータルにログインして、アプリケーションを登録します。 続いて、アプリ側にNuGetからAnalyticsのパッケージを適用して アプリケーション起動コード周辺で、App Center SDKの初期化コードを書きます。 ここまでで、Overviewで取得できる情報収集は有効化されます。 あとはEvent Trackingが必要であればTrackingコードを必要箇所に記載すれば完了です。 コードも見てもらいますが、非常に簡単です。
  • #19: 簡単なんですが、Event Trackingを利用する場合、二つほど悩ましいポイントがあります。 それは、Eventを「どこ」で「どう」とTrackingするか?という事です。
  • #20: 仮にApplicationをMVVMで作るとした場合、まぁMVCでもその他のアーキテクチャでも名称が違うだけで役割は同様ですが Event Trackingを埋め込む場所は、次の二つのどちらかが有望でしょう。 一つは、ViewからViewModelのプロパティ更新やCommandを実行する個所 もう一つはViewModelからModelのメソッドを呼び出す箇所です 実際にはユーザーの詳細な操作ログを取得したいケースが多いでしょうから、前者つまりViewModelでトラッキングするのが適切なケースが多いと思います。 もちろんそこまで詳細な操作情報は必要なく、決定された情報のみトラッキングしたいといったような場合、Modelでトラッキングするというのも、ありでしょう。 ケースバイケースなのでアプリケーションごとに都度検討してください。 今回はViewModelでトラッキングするものとします。 さて「どこで」トラッキングするかは決まりました。あとは「どう」トラッキングするか決める必要があります。
  • #21: ところで皆さんReactivePropertyを利用しますよね?というのは冗談ですが いや知らんよ?という方は、大変便利なのでぜひ利用を検討してみてください。 ReactivePropertyを利用するとした場合 ViewModelのバインドするプロパティは全てReactivePropertyでしょうし ViewModelのICommand実装はReactiveCommandかAsyncReactiveCommandでしょう したがって、それらの変化を購読することで、一貫性のあるトラッキングが実現できます。 ViewModelでトラッキングする場合、ReactivePropertyを使わない場合でも、バインドするプロパティの変更と、コマンドの実行を監視してトラッキングするのが常道だと思います。
  • #22: さて、概略は理解していただけたと思いますので、実際にどういうコードを書いて、どう動くのか簡単に見ていただきたいと思います。
  • #23: 今回、サンプルアプリのベースにはXamarin.Formsのアーキテクチャリファレンスを目指して作成している BlueMonkeyプロジェクトを利用させてもらいました。 という訳で、さっそく見ていきたいと思います。 まずはApp Centerを開いてアプリを登録します。
  • #24: AOPとは、Aspect指向プログラミングのことです。 こういうと、オブジェクト指向は捨てるのか?と思われるかもしれませんが、AOPはOOPの苦手な部分を保管する関係にあります。 直行する概念なんてふうにも言われますね。 AOPでは、アプリケーションの中心的な関心事、Core Concernと、横断的な関心事、Cross Cutting Concernを分離して実装し、組み合わせて実現しようという考え方をします。 この時、Core ConcernはOOPで実装して、OOPで実装されたCore Concernに、AOPでCross Cutting Concernを織り込みます。 例えばBlueMonkeyの場合、Core Concernと言えば、請求書の一覧表示や登録をさし、Cross Cutting ConcernはCustom Eventトラッキングなどをさします。
  • #25: イメージ化するとこんな感じですね。 ViewModelではCore Concernを普通にメソッドとして実装します。 ViewからViewModelを呼び出すときは、一律同じルールでトラッキングなどを埋め込みたいので、メソッド呼び出しをインターセプトして処理、つまりアスペクトを埋め込んであげるということをします。
  • #28: 簡単なんですが、Event Trackingを利用する場合、二つほど悩ましいポイントがあります。 それは、Eventを「どこ」で「どう」とTrackingするか?という事です。