PCアプリの利用状況・例外発生状況を遠隔計測する #1 Application Insights

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/GB20%
200 GB/日¥46,161.92/日¥230.81/GB25%
300 GB/日¥67,737.60/日¥225.80/GB27%
400 GB/日¥88,309.76/日¥220.78/GB29%
500 GB/日¥108,505.60/日¥217.02/GB30%
1,000 GB/日¥213,248/日¥213.25/GB31%
2,000 GB/日¥416,460.80/日¥208.24/GB33%
5,000 GB/日¥1,009,792/日¥201.96/GB35%
ログ データのインジェストの価格表 (マイクロソフトのサイトから転記、2021年09月時点)

この料金体系では、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という名称でした。

その後、名称は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リソースのポータル画面

Application Insightsリソースのポータル画面は、左側のペインに何を表示するかを選択する領域があり、右側が現在選択した項目の内容が表示されます。

この例のポータル画面では、既定の選択項目である「概要」セクションの内容が表示されています。「概要」画面では、グラフも表示されますが、WEBサービス向けに適切なグラフとなっており、PCアプリのテレメトリー情報としては適切なグラフとなっていません。そのため、このポータル画面のグラフには何も表示されていません(カウントが0)。

PCアプリのテレメトリー情報として有用なのは、調査グループの「失敗」、使用量グループの「ユーザー、セクション、イベント、ファネル、User Flows、コーポート」などです。

調査グループの「失敗」の画面においても、すべてが有効な情報ではなく、その中の「例外」タブだけが有用な情報となります。

使用量グループに関しては、すべての項目が有用な情報となります。

PCアプリにAzure Application Insightsへのテレメトリー情報の送信機能を実装すると、このようなポータル画面でアプリの稼働状況の可視化ができるようになります。


今回の投稿では、PCアプリの遠隔計測をするために利用できるAzure Application Insightsの概要を説明しました。

“PCアプリの利用状況・例外発生状況を遠隔計測する #1 Application Insights” への1件の返信

コメントを残す