Firebase Analyticsのイベントとユーザプロパティを使ってみた

元ネタはこちら。
https://www.youtube.com/watch?v=V9VwqFqIu_k

### インストール

AnalyticsはFirebaseのCore SDKに含まれてます。

```bash:Podfile
  pod 'Firebase/Core'
```

### 設定

Firebaseのクラウド側の設定をしてください。

### 初期化

```swift:AppDelegate.swift
import UIKit
import Firebase

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        
        FIRApp.configure()

        return true
    }
```
`Targets > Capabilities > Keychain Sharing`を`ON`にします。

### 実装

まずはAnalyticsを仕込むサンプルプログラムを作ります。
セグメントコントロールとボタンを２つ配置します。

![Glass_and_iPhone_7_–_iOS_10_1__14B72_.jpg](https://qiita-image-store.s3.amazonaws.com/0/75231/ff555f4d-b6d5-9f97-850f-b7c3f6747b6c.jpeg)

アウトレットとアクションを実装します。

```swift:ViewController.swift
class ViewController: UIViewController {
    
    @IBOutlet weak var segmentedControl: UISegmentedControl!

    @IBAction func segment1(_ sender: Any) {

        if(segmentedControl.selectedSegmentIndex == 0)
        {
            print("I like Sushi")
        }
        else if(segmentedControl.selectedSegmentIndex == 1)
        {
            print("I like Beef")
        }
    }
    
    @IBAction func right(_ sender: Any) {
        print("Right button is pressed.")
    }
    
    @IBAction func left(_ sender: Any) {
        print("Left button is pressed.")
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()

    }
}
```

レストラン予約アプリをイメージしてください。ユーザ設定画面で寿司と肉のどちらが好きかあらかじめ選択させておきます。
それを踏まえ、食べ物の好みによるアプリ内での行動パターンの違いをイベントを仕込み調べます。
例えば寿司が好きな人は右側のボタンをたくさんクリックする傾向があるとか、肉が好きの人はボタンに全く興味がないとか。

実際のアプリでは、３０代男性で寿司が好きな人は客単価が高いとか、２０代女性は多人数で予約するとか、そういったマーケティングデータを収集します。



### Firebase Analyticsのコードを仕込む

先ほどのコードを下記のように修正します。

```swift:ViewController.swift
    @IBAction func segment1(_ sender: Any) {

        var foods = ["Sushi", "Beef"]
        // ユーザプロパティ(favorite_food)を設定
        FIRAnalytics.setUserPropertyString(foods[segmentedControl.selectedSegmentIndex], forName: "favorite_food")

    }
    
    @IBAction func right(_ sender: Any) {
        // 右のボタンを押したというイベント
        FIRAnalytics.logEvent(withName: kFIREventSelectContent, parameters: [
            kFIRParameterContentType: "Right" as NSObject,
            kFIRParameterItemID: "1" as NSObject
            ])
    }
    
    @IBAction func left(_ sender: Any) {
        // 左のボタンを押したというイベント
        FIRAnalytics.logEvent(withName: kFIREventSelectContent, parameters: [
            kFIRParameterContentType: "Left" as NSObject,
            kFIRParameterItemID: "1" as NSObject
            ])
    }

```

Firebaseのコンソールから、`Analytics > USER PROPERTIES`を開き、新規にユーザプロパティを作成します。`favorite_food`
![Firebase_Console.jpg](https://qiita-image-store.s3.amazonaws.com/0/75231/ba88ec4c-447a-a373-aee3-bd6c953867c9.jpeg "Firebase_Console.jpg")

Xcodeから`Product > Scheme > Edit Scheme...`を開きます。

デバッグオプションを追加します。
`-FIRAnalyticsDebugEnabled`
リセットするには、
`-noFIRAnalyticsDebugEnabled`
を指定します。

![9Screenshot_2016_11_04_16_59.jpg](https://qiita-image-store.s3.amazonaws.com/0/75231/49773322-f7f9-903c-50c2-87276e3f1347.jpeg "9Screenshot_2016_11_04_16_59.jpg")


### 実行する

肉か寿司をどちらか選択し、適当に左右のボタンを何度かクリックします。あまりイベントが少ないとデータが集計されないので、何十回か押します。
ホームボタン`Shift+Command+H` でバックグランドにします。データがFirebaseにアップされます。

Xcodeのログを見ると、イベントデータとユーザプロパティが紐づいてることがわかります。

![8ViewController_swift.jpg](https://qiita-image-store.s3.amazonaws.com/0/75231/01cf7c12-9e1d-1900-6aed-466bad80313e.jpeg "8ViewController_swift.jpg")

### Firebaseコンソールから収集データを見る

データが反映されるまで数時間かかります。
しばらくたってから、Firebaseのコンソールから確認してみましょう。

`Analytics > Events` を選択します。右端のカレンダーから、`Today`を選択します。
円グラフで右ボタンと左ボタンの押されたパーセンテージが表示されます。
右ボタンが押された回数が65.2%で、左ボタンよりも多く押されたのがわかります。

![1Firebase_Console_🔊.jpg](https://qiita-image-store.s3.amazonaws.com/0/75231/fd3bf7ef-2b9c-d12d-4fad-07387d744a41.jpeg)




次に、`Add Filter` をクリックします。
`User Property > favorite_food > Beef` を選択します。

![2Firebase_Console_🔊.jpg](https://qiita-image-store.s3.amazonaws.com/0/75231/b4d12467-a868-d48d-58b2-fd945e787953.jpeg "2Firebase_Console_🔊.jpg")

肉が好きな人は、左のボタン(58.1%)を多く押してるのがわかります。

![3Firebase_Console_🔊.jpg](https://qiita-image-store.s3.amazonaws.com/0/75231/9457ff7c-fcdf-c6a3-049d-6f6bbe6efb81.jpeg "3Firebase_Console_🔊.jpg")


次はフィルターに寿司を選択してみます。
なんと、右ボタンしか押されてないのが分かります！
(恣意的にそうなるように押しただけですが。。。)

![4Firebase_Console_🔊.jpg](https://qiita-image-store.s3.amazonaws.com/0/75231/9a385d6c-1e3d-598f-e6bd-336035d2d8a1.jpeg "4Firebase_Console_🔊.jpg")


このように、全体データではわからなかった傾向が、Analyticsのユーザプロパティでイベントデータをセグメンテーションすることで、マーケティングデータが収集できます。