app center analytics を使い倒そうapp center analytics 概要 no. 機能 項目 説明 1 event...

39
App Center Analytics を使い倒そう ~静的コード生成を活用した Xamarin における AOP 活用~ AD62

Upload: others

Post on 27-May-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

App Center Analytics を使い倒そう~静的コード生成を活用した Xamarin における AOP 活用~

AD62

Page 2: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

About Me

http://www.nuits.jp

https://blog.nuits.jp

@nuits_jp

Page 3: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

Today’s Goal

Page 4: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

Today’s Goal

Page 5: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

App Center Analytics概要

Page 6: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

App Center

Test

Build

Distribute

Craches

Analytics

Push Notifications

Page 7: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

App Center Analytics 概要

No. 機能分類 説明

1 Overview アプリケーション利用者の利用状況の確認

2 Custom Events カスタムイベント情報の収集と確認

3 Log Flow Analytics SDKの登録情報のリアルタイム監視

デバッグなどに利用

4 Export to Azure Microsoft AzureのApplication Insightsへ、データをエク

スポートして分析可能

Page 8: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

App Center Analytics 概要

Page 9: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

App Center Analytics 概要

Page 10: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

App Center Analytics 概要

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 最終バージョンの移行率

Page 11: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

App Center Analytics 概要

Page 12: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

App Center Analytics 概要

Page 13: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

App Center Analytics 概要

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 カスタムしたログプロパティ

Page 14: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

App Center Analytics 概要

Page 15: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

App Center Analytics 概要

No. 機能分類 説明

1 Overview アプリケーション利用者の利用状況の確認

2 Custom Events カスタムイベント情報の収集と確認

3 Log Flow Analytics SDKの登録情報のリアルタイム監視

デバッグなどに利用

4 Export to Azure Microsoft AzureのApplication Insightsへ、データをエク

スポートして分析可能

Page 16: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

Analyticsを使う3つのステップ

Page 17: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

Analyticsを使う3つのステップ

AppCenter.Start("{Your App Secret}", typeof(Analytics));

Analytics.TrackEvent("Video clicked", new Dictionary<string, string> {{ "Category", "Music" },{ "FileName", "favorite.avi"}

});

Page 18: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

「どこで」「どう」トラッキングしますか?

Page 19: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

「どこで」トラッキングするか? MVVM編

Binding &

Command

Call

Notification

Page 20: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

「どう」トラッキングするか?

Analytics.TrackEvent("Video clicked", new Dictionary<string, string> {{ "Category", "Music" },{ "FileName", "favorite.avi"}

});

Page 21: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

汚染された結果

Page 22: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

「どう」トラッキングするか?

AOPが最適!

Page 23: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

AOPとは

Page 24: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

AOPイメージ

Page 25: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

つまり

Page 26: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

Xamarin で AOP するには問題が…

静的コード生成を活用することで可能

Page 27: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

静的コード生成とは

コンパイルJIT

or

AOT

Page 28: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

⇒ トラッキングコードを埋め込まなくてよい

⇒機械的に埋め込む為、個別テストは不要

⇒影響箇所が集約され変更が容易に

AOPにより多くの問題が解消される

Page 29: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

静的コード生成前とコード生成後

public string Message {set {

_message = value;}

public string Message {set {

Analytics.TrackEvent("Sample.MainPageViewModel#Message", new Dictionary<string, string> {{ "Value", value }});

_message = value;}

Page 30: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

コード生成前のC#コードとバイトコード

public string Message {set {

_message = value;}

IL_0000: ldarg.0IL_0001: ldarg.1IL_0002: stfld string Sample.MainPageViewModel::_messageIL_0007: ret

Page 31: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

バイトコード&それを生成するC#コード

IL_0000: ldarg.0IL_0001: ldarg.1IL_0002: stfld string Sample.MainPageViewModel::_messageIL_0007: ret

var body = getMethodDefinition.Body;body.Instructions.Add(Instruction.Create(OpCodes.Ldarg_0));body.Instructions.Add(Instruction.Create(OpCodes.Ldarg_1));var fieldDefinition = typeDefinition.Fields.Single(x => x.Name == "_message");body.Instructions.Add(Instruction.Create(OpCodes.Stfld, fieldDefinition));body.Instructions.Add(Instruction.Create(OpCodes.Ret));

Page 32: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

生成するC#コードとバイトコード

Analytics.TrackEvent("Sample.MainPageViewModel#Message", new Dictionary<string, string> {{ "Value", value }});

IL_0000: ldstr "Sample.MainPageViewModel#Message"IL_0005: newobj instance void class

[mscorlib]System.Collections.Generic.Dictionary`2<string, string>::.ctor()IL_000a: dupIL_000b: ldstr "Value"IL_0010: ldarg.1IL_0011: callvirt instance void class

[mscorlib]System.Collections.Generic.Dictionary`2<string, string>::Add(!0, !1)IL_0016: call void

[Microsoft.AppCenter.Analytics]Microsoft.AppCenter.Analytics.Analytics::TrackEvent(string, class [mscorlib]System.Collections.Generic.IDictionary`2<string, string>)

Page 33: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

コード生成の課題

適切な用法用量をまもる事が肝心

Page 34: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

静的コード生成に利用するライブラリ

No. ライブラリ 説明

1 Mono.Cecil バイトコードを編集する機能を提供するライブラリ

2 Fody Mono.Cecilを利用し、コード生成プラグインを作成し、ビルド

時にコード生成を実行するフレームワーク

Page 35: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

サンプルコード

https://github.com/nuitsjp/ReactiveTracker.Fody

https://github.com/nuitsjp/BlueMonkey-and-AppCenter

https://qiita.com/Nuits/items/3bd43f41a19d61510ef0

Page 36: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

まとめ

Page 37: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

まとめ

Page 38: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

Any Questions?

Page 39: App Center Analytics を使い倒そうApp Center Analytics 概要 No. 機能 項目 説明 1 Event Page Count イベント発生数 2 Trend 前回期間からのカウントの変更トレンド

© 2018 Atsushi Nakamura All rights reserved.

本コンテンツの著作権、および本コンテンツ中に出てくる商標権、団体名、ロゴ、製品、サービスなどはそれぞれ、各権利保有者に帰属します。

本情報の内容 (添付文書、リンク先などを含む) は、de:code 2018 開催日 (2018年5月22~23日) 時点のものであり、予告なく変更される場合があります