1つ前の記事
ということで、速報的な記事と感想記事を書いたので、せっかくなんで技術的なことを少し書きたいと思います。
もっと Analytics
Visual Studio Mobile Center では Test 機能が見栄えがいいので印象に残りがちですしセッション構成もそういう感じになってます。
ただ、サーバーに繋いだ状態でテストするとなると、Assertとかまできちんとかけようとするとちょっと大変なんですよね。 サーバーのデータ可変だったりするし…。
ということで、一番とっつきやすい Anaytics あたりをもう少しご紹介したいと思います!
Export
Analytics は、いい感じっぽいレポートを出してくれるので満足感は高いです。
でも、そこにある以外のレポートを作りたかったら…?というか自分で TrackEvent に仕込んだカスタムなプロパティ情報をもとに、検索したかったら?とか出来ません。 ということで餅は餅屋という感じで Analytics のログは Application Insights に Export 出来たりします。
Mobile Center のアプリの Settings → Export → New Export → Application Insights で紐づけすれば完成です。
ちょっとどれくらいのリアルタイムで反映されるのかは知らないですが、結構いい感じにログが溜まります。 Azure のポータルを開くとリソースグループに、どうみてもMobile Centerから来ましたみたいなやつが作られてます。
Application Insights のポータルをぽちぽちしてるだけでも、そこそこ色々見れます。例えばセッションのところをいじってると、特定のユーザーの一連の操作の流れとか見れるし
あとは特定バージョン使ってる人の分布とか
特定のイベントがどれくらい発生してたとか
ユーザーがどんな風に操作してるのかを俯瞰したり
ぽちぽちしてるだけでもいろいろ見れるのですが、Application Insights の概要タブのところで上の方に分析という選択肢があります。
これを押すと、自分で好きなクエリを書いて分析することが出来ます。 Visual Studio Mobile Center からは、customEvents というものが飛んでるみたいです。
なのでクエリのところに customEvents と書いて実行するとログがざざざ~っと表示されます。
あとは | で区切って where とかでフィルタリングしたりします。例えば過去3日間の select image のイベントのみに絞るのはこうやります。
customEvents | where timestamp >= ago(3d) | where name == "select image"
こういう風になります。
クエリは書いてると補間も効くし、そこまで難しくないです。ただ、自分が埋め込んだカスタムイベントのプロパティの中身を見るのがちょっと難しいです。 クエリの結果を展開していくと、こういう風に見えるので…
customEvents | project customDimensions.Properties.url
みたいにいけるかと思いますよね?(project は SQL でいうところの SELECT) 実はこれではだめで…なんと JSON 文字列が来てるみたいなので、こういう風に書きます。
customEvents | extend p = parsejson(tostring(customDimensions.Properties)) | mvexpand p | where p.url != "" | project p.url
extend で文字列化した Properties を parsejson して変数につっこんで mvexpand すると使えるようになります。 これがわかるまで凄く時間かかりました。どうも dynamic な型だったりすると tostring しないといけないとかいろいろあるみたいです。
集計もできます。例えば、過去3日で一番見られた画像ってどれ?っていうのを見つけたかったらこういう感じです。
customEvents | where timestamp >= ago(3d) | where name == "select image" | extend p = parsejson(tostring(customDimensions.Properties)) | mvexpand p | summarize count() by tostring(p.url) | order by count_ desc nulls last
この画像っぽいですね。
弊社澤 円が「IDを守ることが、クラウド時代のトッププライオリティーである」 と熱く語ります。#mstsjp17 pic.twitter.com/eoCf7f5cbe
— TechNet Japan (@TechNetJ) 2017年11月8日
ちなみに表形式の出力じゃなくてグラフもできます。render ってやるだけ。
customEvents | where timestamp >= ago(3d) | where name == "select image" | extend p = parsejson(tostring(customDimensions.Properties)) | mvexpand p | summarize count() by tostring(p.url) | order by count_ desc | render piechart
あとは、怪しいログをみつけたら、その session_id でフィルタリングすればユーザーがどんな操作をしてたのかとかもクエリでさくっと書けるし、使い方は無限大。
Application Insights のクエリのリファレンスはこちらを参照してください。
その他に…
Mobile Center のビルドは凄く簡単なんだけどちゃんとカスタムも入れるポイントがあります。 こちらが詳しいです。
公式ドキュメント
Build Scripts | Microsoft Docs
実際にやってみた人の記事
ここで触れられている環境変数ないのつらたんっていうのは思ってたのですが、先日対応されたみたいです。(多分セッション当日朝起きたらふってきたアップデートだと思われる…)
Mobile Center のビルド設定のところに環境変数設定が追加されています! pic.twitter.com/1Mnn60SJqx
— くぅ@あああああ (@Fumiya_Kume) 2017年11月10日
まとめ
Visual Studio Mobile Center はいいぞ。