PCアプリの利用状況や例外発生状況(安定性)を知ることは、アプリを改善するうえで重要です。
まずはじめに、ここ以降では、利用状況や例外発生状況などPCアプリの稼働状態の情報のことを、「テレメトリー情報」という言葉で統一します。
PCアプリのテレメトリー情報を遠隔計測し、その内容を確認できるようにするためには、以下のように、PCアプリとサーバーが構成要素となり、それぞれの役割を実装する必要があります。
- PCアプリ
- テレメトリー情報の作成
- テレメトリー情報を送信
- サーバー
- テレメトリー情報を受信
- テレメトリー情報を保存
- テレメトリー情報を統計処理
- テレメトリー情報をグラフ表示
PCアプリの役割である「テレメトリー情報の作成と送信」の機能は、PCアプリの開発元であれば、実現の障壁は高くはありません。
しかし、サーバー側の役割である機能については、小さな組織が独自に実現するには、障壁が高いです。なぜなら、サーバーを用意したり、サーバーのシステムを設計・構築する必要があるからです。
私も古くは、試行錯誤して、サーバー機能を用意したり、他社のサービスの機能を利用してきたりしました。しかし、PCアプリが規模の小さいものであれば、その為に独自にシステムを準備することは、あまりにもコストがかかりすぎます。
サーバーの部分のサービス
サーバー部分の役割は、独自に用意する方法だけでなく、SaaSとしての有料サービスを使うこともできす。SaaSとしてテレメトリー情報を扱うサービスを提供する会社はGoogleやAdobeなど多くあると思います。しかしながら、これらのサービスはWEB専用であったり、独自のアプリプラットフォーム専用であったり、また、サービスが高価であったりします。
このような理由から、PCアプリ用として気軽に利用することはできませんでした。
ところが、私にとっては、マイクロソフト ビルド2015 (Microsoft Build 2015)でアナウンスされたVisual Studio Application Insightsで状況が変わりました。
Application Insights
状況が変わったのは、2015年に、マイクロソフト ビルド2015 (Microsoft Build 2015)で、マイクロソフトの Visual Studio Application Insights (当時の名称。現在はAzure Application Insightsという名称)のパブリックプレビューがアナウンスされたことです。このVisual Studio Application Insightsでは、サーバーの役割に相当する部分が、SaaSとして公開されました。
このサービスでは、テレメトリー情報を送信する側は、WEBサービスだけでなく、モバイルアプリやPCアプリ、WEBアプリなどほとんどのソフトウェア形態をサポートしていました。また、送信する側のライブラリーもC#などのマネージドライブラリ、Javaライブラリ ー 、nodeライブラリーなど、多くの開発言語をサポートしていました。
これにより、開発者ならだれでも容易にテレメトリー情報の遠隔計測が利用できるようになったのです。
Azureサービスの無料枠
マイクロソフトが提供するクラウドサービスは、ほぼAzure上で提供されます。そのAzureの料金体系では、多くで無料枠があります。無料枠の定義は、Azure上で提供するサービスによって異なりますが、下記のパターンがあります。
- 月間のデータの受信量
- 月間のデータの送信量
- ストレージの保存サイズ
- ハードウェア(CPUリソースなど)の稼働時間
- ハードウェア(CPUリソースなど)の実使用時間
- サービスへのクエリー回数
どのパターンでも、基準の値以下の場合は無料になるという無料枠の設定があります。
Azure Application Insightsの無料枠
Azure Application Insightsの無料枠の定義は、2015年のパブリックプレビューから、その都度変更されてきました。料金体系の詳細は、マイクロソフトのサイトの「Azure Monitor の価格」にあります。
上記のサイトからAzure Application Insightsについて抜粋すると、2021年9月時点での料金体系は以下の通りです。
価格レベル | 料金 | GB あたりの有効価格1 | 従量課金制の割引率 |
---|---|---|---|
従量課金制 | ¥309.12/GB (1 か月あたり課金アカウントごとに 5 GB が無料) | ¥309.12/GB | 該当なし |
100 GB/日 | ¥24,586.24/日 | ¥245.87/GB | 20% |
200 GB/日 | ¥46,161.92/日 | ¥230.81/GB | 25% |
300 GB/日 | ¥67,737.60/日 | ¥225.80/GB | 27% |
400 GB/日 | ¥88,309.76/日 | ¥220.78/GB | 29% |
500 GB/日 | ¥108,505.60/日 | ¥217.02/GB | 30% |
1,000 GB/日 | ¥213,248/日 | ¥213.25/GB | 31% |
2,000 GB/日 | ¥416,460.80/日 | ¥208.24/GB | 33% |
5,000 GB/日 | ¥1,009,792/日 | ¥201.96/GB | 35% |
この料金体系では、Application Insights で取り込んだデータに対して料金が請求されます。小規模のPCアプリでは、この表の一番上の「 従量課金制 」を利用することになります。
ここに無料枠が設定されています。1か月あたり5GB以下は無料となっています。この転送量以下であれば、Azure Application Insightsは無料で利用できることになります。
また、Azureポータル上で、月間の転送量に制限を設定することもでき、その制限を超えないようにすることができます。制限に達した場合は、それ以降のテレメトリー情報は捨てられますが、意図しない課金を避けることもできます。制限の設定はAzureポータルのみで可能で、アプリの再リリースは必要ありません。
開発時や規模の小さいアプリでの利用
Azure Application Insightsには無料枠があるため、開発向けや規模の小さいサービス向けに、Azure Application Insightsを利用することに対するコスト面の障壁が小さくなります。
なぜなら、アプリの開発時、および、アプリの正式リリース後であっても採算が取れない初期の段階などでも、無料で利用できることにつながるからです。
そのため、私も、2015年のマイクロソフトビルド2015 (Microsoft Build 2015)のタイミングで、Application Insightsのパブリックプレビューが始まってからは、サーバー部分は、Application Insightsのみを使うようになりました。
Application Insightsの歴史
Application Insightsは、当初はVisual Studio Application Insightsという名称でした。
- 2015年4月 Visual Studio Application Insights パブリックプレビュー (Announcing Application Insights Public Preview 英語)
その後、名称はAzure Application Insightsに変わりました。モバイルアプリ向けの機能はHockeyAppへ移管されたり、HockeyAppもAzure Mobile Centerになり、さらにVisual Studio App Centerなったりと、いろんな経緯があります。
そのためApplication Insightsに関連するサービスは以下の通り、いろいろあります。
- Visual Studio Application Insights
- Azure Application Insights
- HockeyApp
- Azure Mobile Center
- Visual Studio App Center
- Azure Monitor
- Developer Dashboard
この中には、同等の内容が別サービスへ移行済みで、その名称としてはすでに終了したサービスもあります。
現在(2021年9月)では、Application Insightsは、Azure MonitorサービスのひとつとしてのAzure Application Insightsとなります。
Azure Application InsightsとPCアプリの遠隔計測
Azure Application Insightsのモバイルアプリ向けやPCアプリ向けなどは、Visual Studio App Centerに統合されたりと、いろいろありました。しかし、PCアプリの遠隔計測であるテレメトリー情報を扱うだけなら、引き続きAzure Application Insights上での利用は可能です。
実際、私もAzure Application Insightsでアプリの稼働状況を確認しています。
ただ、Azure Application Insightsのポータル画面は、WEBサービスをターゲットした構成となっており、どこで状況が表示できるかがわかりにくいかもしれません。
Application Insightsリソースのポータル画面
下記がAzure Application Insightsのリソースのポータル画面です。
Application Insightsリソースのポータル画面は、左側のペインに何を表示するかを選択する領域があり、右側が現在選択した項目の内容が表示されます。
この例のポータル画面では、既定の選択項目である「概要」セクションの内容が表示されています。「概要」画面では、グラフも表示されますが、WEBサービス向けに適切なグラフとなっており、PCアプリのテレメトリー情報としては適切なグラフとなっていません。そのため、このポータル画面のグラフには何も表示されていません(カウントが0)。
PCアプリのテレメトリー情報として有用なのは、調査グループの「失敗」、使用量グループの「ユーザー、セクション、イベント、ファネル、User Flows、コーポート」などです。
調査グループの「失敗」の画面においても、すべてが有効な情報ではなく、その中の「例外」タブだけが有用な情報となります。
使用量グループに関しては、すべての項目が有用な情報となります。
PCアプリにAzure Application Insightsへのテレメトリー情報の送信機能を実装すると、このようなポータル画面でアプリの稼働状況の可視化ができるようになります。
今回の投稿では、PCアプリの遠隔計測をするために利用できるAzure Application Insightsの概要を説明しました。
“PCアプリの利用状況・例外発生状況を遠隔計測する #1 Application Insights” への1件の返信