Ingestly / リアルタイムウェブ解析

## Ingestlyとは

* * *

## ざっくりIngestlyとは

1. 大手企業が取り組むようなウェブ解析を「民主化」
2. リアルタイムデータを最短でクエリー可能に
3. インフラコスト最小、メンテナンス工数がゼロ
4. コーディング無し、極力自動計測
5. UXに影響しないモダンなタグ、最速の応答時間

* * *

### 追記1：まずは試してみたい方へ

実装についても書きました。

- [Ingestly の計測エンドポイントを構成する (Fastly + BigQuery)](https://qiita.com/hsano/items/7764583899e8112782fc)
- [Ingestly の計測タグをウェブサイトに設置する](https://qiita.com/hsano/items/9e1684a2119cd87313f6)

* * *

### 追記2：HTTPS化のハードルが下がりました

- Fastlyが5ドメインまで無償のTLSサービスを開始し、Let's Encryptが発行する証明書が入手・利用できるようになりました。

* * *

## こんな課題ありませんか？

* * *

### 課題：リソースの制約

大手企業が発表していた事例を参考にしたいが…
- インフラ構築や保守に人を貼り付けるなんて無理
- ツール買うにも予算は無い、one size fits all の違和感
- リアルタイムってハードル高い
- SQLは書けるけど分析ノウハウがない…

* * *

### 課題：タグやツールの仕様

ツールを買ったが、開発者にタグの導入を渋られる。
- document.writeは○ね! DOMいじりすぎ!
- そんな重いタグUXに悪影響
- ツールの障害でうちのサイト真っ白なんですけど
- いったい何個タグ入れるんですか？？？

* * *

### 課題：扱えるデータ量とリアルタイム性

全ての訪問者のエンゲージメントを分析したいのに…
- サンプリングがかかり全量扱えない
- データベースに取り込むのは有償版のみ
- リアルタイムといいつつ情報が限定されている
- 色々計測するにはコーディングが必要

* * *

## そこで、Ingestly

* * *

### Ingestlyは簡単

**最短10分で使えるようになる**
- 計測タグを設置して、数行設定すればOK
- スクロール、読了、クリック、動画… 自動計測
- FastlyとBigQueryの設定したら準備完了
- ITP対応はAレコードまたはCNAMEでファーストパーティドメイン、HTTPS化は無料または持ち込みの証明書も利用可

* * *

### Ingestlyは手間無し

**マネージドサービスを活用、クラウドネイティブ**
- アナリティクスツールの難題は計測エンドポイントの可用性・堅牢性の確保と、データベースの負荷対策
- FastlyとBigQueryを活用するから、インフラの構築も保守も一切無しですぐ使える

* * *

### Ingestlyは安い

**サーバー不要、小規模サイトならゼロ円**
- Fastlyは50ドルまで無料、以降50ドル/月がミニマム
- データ量次第で多少課金
- BigQueryはGCPお試し中は完全無料
- ストリーム挿入とクエリー課金はアクセス数次第

* * *

### Ingestlyはモダン

**ほとんどのブラウザに対応しつつ軽量なタグ**
- sendBeaconを優先、FetchとXHRでフォールバック
- requestAnimationFrameを活用して要素監視
- サーバーサイドCookie、ITP2.2対応
- HTTP204 No Content

* * *

### Ingestlyは「自社で保有」する

**オーナーシップとアカウンタビリティ**
- サードパーティではなく、インハウスツールである
- 中正公平。計測も集計も仕組みの透明性が高い
- オープンソースなので開発に誰でも参加できる
- 既にFastlyユーザーならサイトの一部に組み込める

* * *

## アーキテクチャ

* * *

### アーキテクチャ概略

<img alt="Ingestly Architecture" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107873/329f3f3d-edcd-1f2c-2bda-4df930035889.png">


* * *

### Ingestly Client JavaScript SDK

- https://github.com/ingestly/ingestly-client-javascript/releases
- `ingestly.js` → コアライブラリ（15KB @ v0.6.0）
- `page_code.js` → 設定や発火の制御
- エンタープライズ向けのツールと同じ、ライブラリ + ページコードの組み合わせなので、ファイルの中身を入れ替えて乗り換えることも容易

* * *

### Ingestly Endpoint

- https://github.com/ingestly/ingestly-endpoint
- `ingestly.vcl` → Fastlyでリクエストを処理するためのスクリプト
- `log_format` → Fastlyのログストリーミングのフォーマット
- `table_schema` → BigQueryでテーブルを作成するときにコピペするスキーマ

* * *

### Ingestly Debugger

- https://github.com/ingestly/ingestly-chrome-debugger
- Chrome機能拡張
- Ingestlyが送信するビーコンをパースして、コンソールに表形式で出力
- どのタイミングでどんな値が送信できているかを手元で検証できる

* * *

### Ingestly Documents

- https://github.com/ingestly/ingestly-docs
- カラムの説明
- 実践的な用途に則したサンプルクエリー集
- ユーザー同士で加筆して充実させたい！


* * *

## 考慮が必要なこと

* * *

### ITP対応

- サブドメイン設定をして自サイトのドメインに合わせる
    - AレコードでIP Anycast設定がオススメ（名前解決が早いがIP変更に追従する必要あり）
    - CNAMEも可能（名前解決が二重になる）
- SSL証明書を手配してFastlyを構成する（Fastly TLSは5ドメインまで無料、他に有償オプションあり）
- 指定ドメインのサーバーサイドCookie
- ID生成はSDK側（SDKはIDをローカルストレージにも保管する）

* * *

### GDPR対応

- SDKには特別な機能は用意していない
- サイトに訪問し、計測に同意した後にSDKをイニシャライズすること
- 必要に応じてIPアドレスやユーザーIDが残らないよう、ログフォーマットを変更する

* * *

### 個人情報保護

- 個人を特定可能な情報を計測しない
- プライバシーポリシーに明記する
- オプトアウトの選択肢を用意する
- データ活用は同意を得ている用途や範囲の中で

* * *

## まとめ

* * *

### まとめ

- 誰でも今すぐ無料で試せるので、Ingestly試してみましょう
- データの民主化は、データに関わるツール群を保有するところから
- インフラ開発競争はもういらない。ツールを買う必要もない。コストと工数は分析とその先の最適化に投資しましょう

* * *

## Thank you !