Azure の App Center でアプリの使用状況を分析する機能を製品に入れる場合の注意点

# はじめに

本稿は、Microsoft Azure の App Center Analytics を用いて、アプリの使用状況を分析する機能を製品に入れる場合の注意点を記します。

App Center というのは、Microsoftが提供している「モバイルやデスクトップアプリを作成、テスト、リリース、監視するための開発者向け統合サービス」です。
[App Cente についての詳細はこちら(公式)](https://azure.microsoft.com/ja-jp/services/app-center/)

今回は、App Center の機能のうち、「App Center Analytics」という分析情報の収集機能についての説明です。
この機能は、アプリの任意の操作をした時に、任意の情報をクラウドにイベントログとして登録して確認することができます。上記の公式ページには、以下のように説明されています。

> App Center Analytics を使用して、使用パターン、ユーザーによる導入、その他のエンゲージメント メトリックを追跡します。カスタム イベントを使用して、最も重要なユーザーの行動に関する詳細な分析情報を収集できます

# App Center Analytics の使い方

App Center には実装するための便利なSDKがあります。
利用できるプラットフォームは、Android、iOS、React Native、Xamarin、Unity、UWP、WPF/WinForms、macOSなど、多数あります。
[SDKが利用可能なプラットフォームの詳細はこちら](https://docs.microsoft.com/en-us/appcenter/sdk/#get-started)

本稿では、例として、WPFの場合で紹介します。

まず対象のプロジェクトに「Microsoft.AppCenter.Analytics」と「Microsoft.AppCenter.Crashes」をnugetからインストールしてから、以下のように、AppCenterの機能を有効化させれば、準備完了です。

```c#
public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);
        AppCenter.Start("{App CenterのWebページで取得する Secret キー}", 
            typeof(Analytics), typeof(Crashes));
    }
}
```
上記についての詳細は以下の公式ページを参照ください。
[Get Started with WPF/WinForms](https://docs.microsoft.com/en-us/appcenter/sdk/getting-started/wpf-winforms)

あとは、任意のタイミングで、任意の情報をイベントログとして登録する実装をします。
以下のように、Analytics.TrackEventメソッドで、イベントの名前を指定してイベントログが登録できます。必要があれば、Dictionaryを用いてプロパティごとの値も登録できます。

```c#
Analytics.TrackEvent("イベントの名前", new Dictionary<string, string> {
    { "プロパティ名1", "プロパティ値1" },
    { "プロパティ名2", "プロパティ値2"}
});
```
上記についての詳細は以下の公式ページを参照ください。
[App Center Analytics（Windows）](https://docs.microsoft.com/en-us/appcenter/sdk/analytics/windows#custom-events)

ここまでの実装ができていれば、下図のように、App CenterのWebサイトから、イベントの名前ごとに、実行回数や実行ユーザー数が確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/403606/8c46ee33-30ff-56f1-853d-4c841b0da31b.png)

また、実装方法については、Microsoftの [かずきさん](https://qiita.com/okazuki) の以下の記事が、とてもわかり易いと思います。
[Visual Studio App Center の WPF 対応機能を使ってみよう](https://techcommunity.microsoft.com/t5/windows-dev-appconsult/visual-studio-app-center-%E3%81%AE-wpf-%E5%AF%BE%E5%BF%9C%E6%A9%9F%E8%83%BD%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86/ba-p/822238)

# オフラインの場合の対応

App Center へのイベントログ登録時に、アプリがオフラインの場合、SDKが自動的にログを保存し、オンラインに戻ったらログを送信してくれると、以下のFAQに書いてありました。
ネットワーク接続がない場合、SDKが最大10 MB(デフォルト)のログをローカルストレージに保存しているとのことです。
[Analytics FAQ(公式)](https://docs.microsoft.com/en-us/appcenter/analytics/faq#if-the-app-is-offline-does-the-sdk-store-the-logs-and-then-send-them-once-it-is-back-online)


# 無償利用できる範囲

本稿で紹介している App Center Analytics は、Freeプラン(無料)で利用できます。特に利用制限もなく、イベントログを登録できます。
また、サポートに問い合わせて確認したところ、「Freeプランで、法人が商用利用する場合でも、制限はない」とのことでした。素晴らしいですね。
[App Center の価格(公式)](https://azure.microsoft.com/ja-jp/pricing/details/app-center/)

# 個人情報保護の観点

App Center Analytics は、イベントログを登録する際に、自動的にユーザーのOSバージョンなどの情報も収集しています。
ということで、GDPRの対応について、確認しました。

> EUでは、EU域内の個人データ保護を規定する法として、1995年から現在に至るまで適用されている「EUデータ保護指令（Data Protection Directive 95）」に代わり、2016年4月に制定された「GDPR（General Data Protection Regulation：一般データ保護規則）」が2018年5月25日に施行されました。
GDPRは個人データやプライバシーの保護に関して、EUデータ保護指令より厳格に規定します。

[GDPRの詳細はこちら](https://www.ppc.go.jp/enforcement/infoprovision/laws/GDPR/)

[こちらの記事](https://www.fenet.jp/infla/column/news/140/)を参考にすると、GDPRでは以下の情報が「個人情報」とみなされて、厳格な取り扱いが必要になります。

- 氏名
- 識別番号
- 所在地データ
- メールアドレス
- クレジットカード情報
- パスポート情報
- 身体的、生理学的、遺伝子的、精神的、経済的、文化的、社会的固有性に関する要因
- オンライン識別子（IPアドレス、クッキー）

ということで、GDPRでの「個人情報」に該当する情報を、App Center Analytics が収集しているのかどうか、Microsoftのサポートに確認したところ、GDPRでの「個人情報」に該当する情報は、デフォルトでは収集していないとのことでした。

ちなみに、イベントログとして登録した情報に、デフォルトでどんな情報が入っているのかは、以下のページに書いてあります。
[App Center Export(公式)](https://docs.microsoft.com/en-us/appcenter/analytics/export#azure-application-insights)

以下に App Center が GDPR に準拠するための取り組み方針が書いてあります。
[Visual Studio App Center and GDPR](https://devblogs.microsoft.com/appcenter/visual-studio-app-center-and-gdpr/)

なお、GDPRでの「個人情報」を収集する場合の、ユーザー同意画面の文章案については、以下のサイトで公開されています。各企業が真似しても良さそうなニュアンスで書かれていますので、必要な場合はこちらを参考にすると良いと思います。
[知らなかったでは済まされない世界各国の個人情報保護。従業員情報も対象に！ - KDDI](https://global.kddi.com/ja/detail/security-column03.html)

# まとめ
App Center Analytics を製品に入れる場合の注意点などを紹介しました。

ちなみに私は、普段はエンジニアリングマネージャーとして、チームの皆で楽しく開発する施策を色々実施しています。詳しくは以下を参照ください。
[1年以上かけて生産性倍増＋成長し続けるチームになった施策を全部公開](https://qiita.com/kojimadev/items/4b28f801863cf4e8f0da)

Twitterでも開発に役立つ情報を発信しています → [@kojimadev](https://twitter.com/kojimadev)