SlideShare ist ein Scribd-Unternehmen logo
1 von 29
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?

Weitere ähnliche Inhalte

Was ist angesagt?

Re: ゼロから始める監視設計
Re: ゼロから始める監視設計Re: ゼロから始める監視設計
Re: ゼロから始める監視設計Masahito Zembutsu
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル貴志 上坂
 
診断ツールの使い方(Owasp zapの場合)
診断ツールの使い方(Owasp zapの場合)診断ツールの使い方(Owasp zapの場合)
診断ツールの使い方(Owasp zapの場合)shingo inafuku
 
Azure Functions 2.0 Deep Dive - デベロッパーのための最新開発ガイド
Azure Functions 2.0 Deep Dive - デベロッパーのための最新開発ガイドAzure Functions 2.0 Deep Dive - デベロッパーのための最新開発ガイド
Azure Functions 2.0 Deep Dive - デベロッパーのための最新開発ガイドYoichi Kawasaki
 
Azure Log Analytics 概要
Azure Log Analytics 概要Azure Log Analytics 概要
Azure Log Analytics 概要喜智 大井
 
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版Masahiro Nagano
 
ガチ(?)対決!OSSのジョブ管理ツール
ガチ(?)対決!OSSのジョブ管理ツールガチ(?)対決!OSSのジョブ管理ツール
ガチ(?)対決!OSSのジョブ管理ツール賢 秋穂
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAkihiro Kuwano
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(基礎編)配布用
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(基礎編)配布用Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(基礎編)配布用
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(基礎編)配布用シスコシステムズ合同会社
 
フリーでできるセキュリティチェック OpenVAS CLI編
フリーでできるセキュリティチェック OpenVAS CLI編フリーでできるセキュリティチェック OpenVAS CLI編
フリーでできるセキュリティチェック OpenVAS CLI編abend_cve_9999_0001
 
A5 SQL Mk-2の便利な機能をお教えします
A5 SQL Mk-2の便利な機能をお教えしますA5 SQL Mk-2の便利な機能をお教えします
A5 SQL Mk-2の便利な機能をお教えしますester41
 
20200630 AWS Black Belt Online Seminar Amazon Cognito
20200630 AWS Black Belt Online Seminar Amazon Cognito20200630 AWS Black Belt Online Seminar Amazon Cognito
20200630 AWS Black Belt Online Seminar Amazon CognitoAmazon Web Services Japan
 
[Cloud OnAir] 安心して GCP を使うための処方箋 ~ 実際のインシデントをもとに ~ 2019年11月14日 放送
[Cloud OnAir] 安心して GCP を使うための処方箋 ~ 実際のインシデントをもとに ~ 2019年11月14日 放送[Cloud OnAir] 安心して GCP を使うための処方箋 ~ 実際のインシデントをもとに ~ 2019年11月14日 放送
[Cloud OnAir] 安心して GCP を使うための処方箋 ~ 実際のインシデントをもとに ~ 2019年11月14日 放送Google Cloud Platform - Japan
 
Azure DevOps と開発管理
Azure DevOps と開発管理Azure DevOps と開発管理
Azure DevOps と開発管理Tsukasa Kato
 
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法についてAzure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法についてShinya Yamaguchi
 

Was ist angesagt? (20)

Re: ゼロから始める監視設計
Re: ゼロから始める監視設計Re: ゼロから始める監視設計
Re: ゼロから始める監視設計
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 
診断ツールの使い方(Owasp zapの場合)
診断ツールの使い方(Owasp zapの場合)診断ツールの使い方(Owasp zapの場合)
診断ツールの使い方(Owasp zapの場合)
 
Azure Functions 2.0 Deep Dive - デベロッパーのための最新開発ガイド
Azure Functions 2.0 Deep Dive - デベロッパーのための最新開発ガイドAzure Functions 2.0 Deep Dive - デベロッパーのための最新開発ガイド
Azure Functions 2.0 Deep Dive - デベロッパーのための最新開発ガイド
 
全自動Zabbix
全自動Zabbix全自動Zabbix
全自動Zabbix
 
Azure Log Analytics 概要
Azure Log Analytics 概要Azure Log Analytics 概要
Azure Log Analytics 概要
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版
 
ガチ(?)対決!OSSのジョブ管理ツール
ガチ(?)対決!OSSのジョブ管理ツールガチ(?)対決!OSSのジョブ管理ツール
ガチ(?)対決!OSSのジョブ管理ツール
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(基礎編)配布用
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(基礎編)配布用Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(基礎編)配布用
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(基礎編)配布用
 
フリーでできるセキュリティチェック OpenVAS CLI編
フリーでできるセキュリティチェック OpenVAS CLI編フリーでできるセキュリティチェック OpenVAS CLI編
フリーでできるセキュリティチェック OpenVAS CLI編
 
A5 SQL Mk-2の便利な機能をお教えします
A5 SQL Mk-2の便利な機能をお教えしますA5 SQL Mk-2の便利な機能をお教えします
A5 SQL Mk-2の便利な機能をお教えします
 
20200630 AWS Black Belt Online Seminar Amazon Cognito
20200630 AWS Black Belt Online Seminar Amazon Cognito20200630 AWS Black Belt Online Seminar Amazon Cognito
20200630 AWS Black Belt Online Seminar Amazon Cognito
 
[Cloud OnAir] 安心して GCP を使うための処方箋 ~ 実際のインシデントをもとに ~ 2019年11月14日 放送
[Cloud OnAir] 安心して GCP を使うための処方箋 ~ 実際のインシデントをもとに ~ 2019年11月14日 放送[Cloud OnAir] 安心して GCP を使うための処方箋 ~ 実際のインシデントをもとに ~ 2019年11月14日 放送
[Cloud OnAir] 安心して GCP を使うための処方箋 ~ 実際のインシデントをもとに ~ 2019年11月14日 放送
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
AWS Black Belt Online Seminar Amazon Aurora
AWS Black Belt Online Seminar Amazon AuroraAWS Black Belt Online Seminar Amazon Aurora
AWS Black Belt Online Seminar Amazon Aurora
 
Azure DevOps と開発管理
Azure DevOps と開発管理Azure DevOps と開発管理
Azure DevOps と開発管理
 
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法についてAzure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
 
AWS運用自動化への第一歩 
AWS運用自動化への第一歩 AWS運用自動化への第一歩 
AWS運用自動化への第一歩 
 

Ähnlich wie App center analyticsを使い倒そう

Old:App center analyticsを使い倒そう
Old:App center analyticsを使い倒そうOld:App center analyticsを使い倒そう
Old:App center analyticsを使い倒そうAtsushi Nakamura
 
Visual Studio App CenterでAndroid開発にCI/CDを導入しよう
Visual Studio App CenterでAndroid開発にCI/CDを導入しようVisual Studio App CenterでAndroid開発にCI/CDを導入しよう
Visual Studio App CenterでAndroid開発にCI/CDを導入しようShinya Nakajima
 
Visual Studio App Centerで始めるCI/CD(Android)
Visual Studio App Centerで始めるCI/CD(Android)Visual Studio App Centerで始めるCI/CD(Android)
Visual Studio App Centerで始めるCI/CD(Android)Shinya Nakajima
 
データファースト開発
データファースト開発データファースト開発
データファースト開発Katsunori Kanda
 
【KSKアナリティクス】 RapidMiner 紹介 (short)
【KSKアナリティクス】 RapidMiner 紹介 (short)【KSKアナリティクス】 RapidMiner 紹介 (short)
【KSKアナリティクス】 RapidMiner 紹介 (short)KSK Analytics Inc.
 
Azure と Visual Studio で実践するモダナイゼーションとクラウド ネイティブ アプリケーション開発
Azure と Visual Studio で実践するモダナイゼーションとクラウド ネイティブ アプリケーション開発Azure と Visual Studio で実践するモダナイゼーションとクラウド ネイティブ アプリケーション開発
Azure と Visual Studio で実践するモダナイゼーションとクラウド ネイティブ アプリケーション開発Akira Inoue
 
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善Works Applications
 
Developers-Summit-2022_Improving-Digital-Customer-Experience-with-Enterprise_...
Developers-Summit-2022_Improving-Digital-Customer-Experience-with-Enterprise_...Developers-Summit-2022_Improving-Digital-Customer-Experience-with-Enterprise_...
Developers-Summit-2022_Improving-Digital-Customer-Experience-with-Enterprise_...Shotaro Suzuki
 
Einsteinvision - object detection を試してみよう
Einsteinvision - object detection を試してみようEinsteinvision - object detection を試してみよう
Einsteinvision - object detection を試してみようSalesforce Developers Japan
 
Realize tokyo2019 yrglm
Realize tokyo2019 yrglmRealize tokyo2019 yrglm
Realize tokyo2019 yrglmKatsuya Uehara
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけらAtsushi Nakamura
 
【Medix】解析サービスのご案内資料
【Medix】解析サービスのご案内資料【Medix】解析サービスのご案内資料
【Medix】解析サービスのご案内資料Shinichiro Oho
 
Visual Studio App Centerで始めるCI/CD(iOS)
Visual Studio App Centerで始めるCI/CD(iOS)Visual Studio App Centerで始めるCI/CD(iOS)
Visual Studio App Centerで始めるCI/CD(iOS)Shinya Nakajima
 
Python twitter data_150709
Python twitter data_150709Python twitter data_150709
Python twitter data_150709BrainPad Inc.
 
Smart store servlerless-20191030-40min
Smart store servlerless-20191030-40minSmart store servlerless-20191030-40min
Smart store servlerless-20191030-40minMicrosoft Azure Japan
 
Visual Studio App CenterでGitHubのIssue発行を自動化しよう
Visual Studio App CenterでGitHubのIssue発行を自動化しようVisual Studio App CenterでGitHubのIssue発行を自動化しよう
Visual Studio App CenterでGitHubのIssue発行を自動化しようShinya Nakajima
 
Social GAME における AI 活用事例 [第 4 回 Google Cloud INSIDE Games & Apps]
Social GAME における AI 活用事例 [第 4 回 Google Cloud INSIDE Games & Apps] Social GAME における AI 活用事例 [第 4 回 Google Cloud INSIDE Games & Apps]
Social GAME における AI 活用事例 [第 4 回 Google Cloud INSIDE Games & Apps] Google Cloud Platform - Japan
 
Cloud Native and Agile Approach
Cloud Native and Agile ApproachCloud Native and Agile Approach
Cloud Native and Agile ApproachShinya Yanagihara
 
PowerApps アプリ開発入門
PowerApps アプリ開発入門PowerApps アプリ開発入門
PowerApps アプリ開発入門Yoshitaka Seo
 

Ähnlich wie App center analyticsを使い倒そう (20)

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

Mehr von Atsushi Nakamura

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

Mehr von Atsushi Nakamura (17)

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

Kürzlich hochgeladen

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 

Kürzlich hochgeladen (12)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 

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

Hinweis der Redaktion

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