2015年2月17日火曜日

うまく行かない人用の Application Insights ガイド

※2016年4月追記 StoreApp / UWP App用のApplication Insights 新規受け付けは2016年4月15日で終了しています。既存ユーザーはHockeyAppへ移行するようにというアナウンスが出ています。

Transitioning Mobile Apps from Application Insights to HockeyApp
https://azure.microsoft.com/ja-jp/blog/transitioning-mobile-apps-from-application-insights-to-hockeyapp/


この記事の要約

  • Application Insights (以下「AI」)とは何か?をこの記事で説明する気は全く無い
  • AIのインストールは上手くいけば簡単だがハマると泥沼
  • そんな沼仲間とインストール方法を共有したい

※ この記事で紹介するのは、Windows / Windows Phone用の C#/XAML ストアアプリのみです。JSもの・サーバものには触れていません。


プロジェクトへのAIの追加はとても簡単(なはず)です


ソリューション エクスプローラーのプロジェクト上で右クリックすると、「Application Insights を追加」というメニューが表示されているはずです。メニューをクリックすると、この記事で延々説明する面倒な作業は全てWizardがやってくれます。おめでとう!一番下の「完了!」へどうぞ。


☆☆☆


しかし、不幸にも…

  • メニューが表示されない
  • 表示されるが何故かVisual Studio Online に飛ばされてしまう
  • ApplicationInsights.configをクリックするとVSごとクラッシュしちゃって笑いが止まらない

…等、うまくいかない場合、Visual Studio の修復インストールで改善される場合があります。

でも…それでもうまくいかない…もうどうしようもない……そんな僕と貴方のための備忘録がこの記事です。
ここからは貴方自身がWizardになるのです。


必要条件の確認

作業に入る前に、環境がAI にマッチしているかどうか確認しましょう。


  • Visual Studio 2013 Update 3 以降 (以下「VS」と略)
  • Windows ストアアプリ 又はWindows Phone ストアアプリ のプロジェクト
  • Microsoft Azure のアカウント


※現状、Universal App の場合はWin・Phone それぞれ別個にAIを追加する事になります。Azure上の集計は別アプリ扱いです。今後どうなるのかは不明(統合するっぽい記述もありますが)。


以前のバージョンのAI の削除


StoreApp用のAIは、去年から今年1月までは「Visual Studio Online(以下VSOと略)上でテレメトリーデータを管理・閲覧」するものでした。
このVSO版は今後無くなることがアナウンスされており、現在使われているのは「Azure版」、AzureのPortal上でテレメトリーデータを管理・閲覧するものです。

そして、2015年2月現在まだPreview版のAIは…Web上のドキュメント、NuGetやVS拡張の説明等がVSO版とAzure版ごちゃごちゃに入り乱れているという大変スリリングな状態です。

以前のVSO版が入っている場合、まずそれを削除する必要があります。

NuGet パッケージの削除

ツール→NuGet パッケージマネージャー → ソリューションのNuGet パッケージの管理
でソリューションにInstallされているAIを確認します。
AIっぽいのが何も無ければOK。
何かAIっぽいのがあった場合は取り敢えず削除します。
何故かというと、説明文の記述が不足しており、コンソール上からVSO版とAI版を識別できないからです。Oh…

AI 拡張の「確認」

VSのAI拡張 (ツール→拡張機能と更新プログラム)を確認します。
VS2013 Update 3 以降をお使いの場合、何もせずともここにV2以降のAIが入っているはずです。
ここに無い場合・古いバージョンが入っている場合(0.7.0とか)…おそらく、修復インストールをするしかないはずです(探したのですが、どうもこの拡張機能のAIは単体では提供されていないようです)。

ApplicationInsights.config の削除

プロジェクト内にAIの設定ファイル ApplicationInsights.config が存在する場合、削除します。

ここまでの旧バージョンの削除でAIの右クリックメニューが表示され、Azure版だった場合…ここからWizardを使う事ができます。おめでとう!一番下の「完了!」へどうぞ。


AI NuGet パッケージのインストール


それでもダメだった場合、手動でNuGet パッケージをインストールします。
AI に必要なNuGet パッケージは全部で4つです。

AIの動作に必要な4つのPackage

依存関係にあるものは自動的に引きずられてインストールされるので、NuGet コンソールから手動でインストールする必要があるのは、2015年2月現在は以下二つです。

Win8.1 → Application Insights API と Application Insights for Windows 8.1 applications

WP → Application Insights API と Application Insights for Windows Phone 8.0 and 8.1 Applications

なお、AIはまだまだPreview版であり、また適用範囲が広い…Web用、DeviceApp用、JS用等、StoreApp用…ため、よく似た名前の別パッケージがごろごろしています。
パッケージを間違えないよう注意して下さい。以下、注意書きが多すぎて見づらくなってしまいました。すみません。

Windows / Phone 共通


Application Insights API
https://www.nuget.org/packages/Microsoft.ApplicationInsights/0.13.1-build00186
注意 2015年2月17日現在、このVersionが最新であるためここにリンクをはっていますが、必ずページ一番下のVersion History を確認し、最新のものを使うようにして下さい。

Windows 用


Application Insights for Windows 8.1 applications
https://www.nuget.org/packages/Microsoft.ApplicationInsights.WindowsStore/0.13.1-build00186

注意 2015年2月17日現在、このVersionが最新であるためここにリンクをはっていますが、必ずページ一番下のVersion History を確認し、最新のものを使うようにして下さい。

注意2
NuGet上には大変良く似た名前の別Packageが存在します。
Application Insights API for Windows 8.1 applications
https://www.nuget.org/packages/Microsoft.ApplicationInsights.Telemetry.WindowsStore/0.8.0-build10578
これはVSO用のPackageで、Azureでは動作しません。入れてはいけません。


Windows Phone 用


Application Insights for Windows Phone 8.0 and 8.1
https://www.nuget.org/packages/Microsoft.ApplicationInsights.WindowsPhone/0.13.1-build00186

注意 2015年2月17日現在、このVersionが最新であるためここにリンクをはっていますが、必ずページ一番下のVersion History を確認し、最新のものを使うようにして下さい。

注意2
NuGet上には大変良く似た名前の別Packageが存在します。
Application Insights for Windows Phone 8.0 and 8.1
これはVSO用のPackageで、Azureでは動作しません。入れてはいけません。

パッケージをインストールすると、プロジェクトに自動的にApplicationInsights.configが追加されます。

注意 この過程で、App.xaml にAIのリソース定義が自動的に追記されるのですが…このとき、App.xamlに自前で入れている空行やインデントは全て吹っ飛ばされるので覚悟してください。

ここまでは単にローカルにパッケージを追加しただけで、Azureとは紐づいていません。


Azure 上でのAI エントリ作成


Azure上にアプリ毎のAIエントリを作成し、インストルメンテーションキーを取得し、ApplicationInsights.config に埋め込んでAzureとアプリを紐づけます。

portal.azure.comにログインし、AIのエントリを作成します。
※ 旧管理画面…manage.windowsazure.comからは作成できません。

画面左下の「+追加」→Application Insights 、と辿ります。


  • 名前 名前です。「PICT8」、「WWC.Phone」など自分で分かる名前で。特にアプリ名等と一致させる必要は無いです。
  • アプリケーションの種類 Windows Phoneアプリケーション 又は Windows ストア アプリケーションを選択します。
  • リソースグループ AIで使用するリソースを選択します。無い場合は適当に作ります。
  • サブスクリプション お使いのサブスクリプションを設定します。
  • 場所 2015年2月現在、米国中部のみ選択可能です。

画面下の「作成」をクリックすると作成されます。

ここの「プロパティ」をクリックすると、インストルメンテーション キー、GUIDが表示されます。

Azure のAI→プロパティ ボタンで
インストルメンテーションキーを表示


これをコピーし、
プロジェクトのApplicationInsights.config の 「InstrumentationKey」に貼り付けます。
ApplicationInsights.config に
インストルメンテーション キーを貼り付ける


完了!

これで基本部分は終わりです。
アプリをDebug Buildして動かすと、数秒でAzureのPortal 上にテレメトリーデータが反映されます。Debugビルドではデータ送信頻度が高くなっているためです。
Release Build では確か1日1回?それくらいの常識的な頻度です。

また、この状態でAIの基本的なテレメトリーは既に動作しています。
セッションの開始・終了、ページ遷移のイベント、送信元のデバイス情報等です。

アプリ独自のカスタムイベント、カスタムテレメトリー(数値や文字列の送信)を追加する事もできます。
詳しくはMSさんのドキュメントを参照して下さい。

なお上でも触れましたが、MSDNのドキュメントはVSO版とAzure版、サーバ用とStoreApp用が入り乱れてカオスな感じになっています。
この↓カバーページから辿ると、比較的よくメンテされたAzure版のドキュメントを読むことができるのでお勧めです。

Application Insights documentation
http://azure.microsoft.com/en-us/documentation/services/application-insights/



又、VSO版と比べて…Azure版は随分細かいデータまで送信されるなという印象です。データの扱いやプライバシーポリシー、アプリの説明云々についてはこの記事では触れませんが、今まで以上に注意して扱う必要があるように感じられます。

最後に


先日、AIのNuGet Packageを最新版に更新すると、ローカルで動作はするもののWACKに通らなくなりストアに上げられなくなるという事故がありました(2月17日現在は修正版が上がっているので大丈夫)。
Preview と言ってもその完成度は様々ですが、AIのPreviewは結構ドキドキ感の強いPreviewです。気合です。
そして判らない事があったらMSDNのAI Forumでばんばん質問しましょう!

MSDN Forum - Application Insights
https://social.msdn.microsoft.com/Forums/vstudio/en-US/home?forum=ApplicationInsights



1 件のコメント: