Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Fastly Meetup 3 / More about Ingestly
Search
Hajime Sano
October 31, 2019
Technology
0
720
Fastly Meetup 3 / More about Ingestly
Fastly YAMAGOYA 2019の翌週ということで、YAMAGOYAの続きのような感じでIngestlyについてお話ししました。今回は具体的なクエリー例と、少し苦労話をご紹介しました。
Hajime Sano
October 31, 2019
Tweet
Share
More Decks by Hajime Sano
See All by Hajime Sano
メディア企業のデータエンジニアリング ~ 内製化と文化醸成 ~ NIKKEI TECH TALK #2
hsano
0
1.3k
Compute@Edge で機械学習モデルを動かす
hsano
1
380
顧客理解のための挑戦とは? (1st PartyData SHIFT〜Treasure Dataが提供するWebアナリティクスの高度化〜)
hsano
0
460
Measuring the performance. Let’s own your analytics tool.
hsano
2
2.8k
Other Decks in Technology
See All in Technology
ソフトウェアエンジニアとAIエンジニアの役割分担についてのある事例
kworkdev
PRO
0
210
[2025-12-12]あの日僕が見た胡蝶の夢 〜人の夢は終わらねェ AIによるパフォーマンスチューニングのすゝめ〜
tosite
0
170
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
re:Invent2025 3つの Frontier Agents を紹介 / introducing-3-frontier-agents
tomoki10
0
400
通勤手当申請チェックエージェント開発のリアル
whisaiyo
3
440
Connection-based OAuthから学ぶOAuth for AI Agents
flatt_security
0
350
「もしもデータ基盤開発で『強くてニューゲーム』ができたなら今の僕はどんなデータ基盤を作っただろう」
aeonpeople
0
230
SREが取り組むデプロイ高速化 ─ Docker Buildを最適化した話
capytan
0
140
株式会社ビザスク_AI__Engineering_Summit_Tokyo_2025_登壇資料.pdf
eikohashiba
1
110
Agent Skillsがハーネスの垣根を超える日
gotalab555
6
4k
Microsoft Agent Frameworkの可観測性
tomokusaba
1
110
ActiveJobUpdates
igaiga
1
310
Featured
See All Featured
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
80
The SEO identity crisis: Don't let AI make you average
varn
0
36
Technical Leadership for Architectural Decision Making
baasie
0
180
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.7k
Highjacked: Video Game Concept Design
rkendrick25
PRO
0
250
AI: The stuff that nobody shows you
jnunemaker
PRO
1
12
A designer walks into a library…
pauljervisheath
210
24k
What's in a price? How to price your products and services
michaelherold
246
13k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
120
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
260
Heart Work Chapter 1 - Part 1
lfama
PRO
3
35k
Transcript
Fastly User Meetup #3 More about Ingestly Hajime Sano, Project
Lead at Ingestly A maintanance free open-source real-time web analytics tool.
2 YAMAGOYA お疲れ様でした!
3 自己紹介 • Digital Analytics & Data Marketing advocate •
Ingestlyプロジェクトを仕切ってます • リアルタイムなマーケティングデータ分析とデータ活用を 組織的に取り組む文化を広めたい • エンジニアリングとビジネスのバランス • アナリティクス原理主義 ◦ SiteTracker ◦ Omniture SiteCatalyst / Adobe Analytics ◦ Atlas ◦ Ingestly / Polytrek Hajime Sano @hjmsano hsano.jp hajime.dev
4 お話しすること 1. Webパフォーマンスに関するクエリー例 2. sendBeaconの落とし穴 3. Fastly Log Streaming
に対する要望
5 その前に、少し振り返り
Ingestly → Realtime Web Analytics 6 JS SDK Custom VCL
Logging Schema Mapping • sendBeaconでデータ送信 • Server-Side 1st Party Cookieをセット • HTTP 204 / No Contentを即答 • ログをJSON化 • BQまたはESにフィード • 適切な型で保存 • イベントから1秒程度で クエリー可能
計測できること 7 • 通常のページビュー • クリック • スクロール深度 • 読了
• Video/Audio のハートビート • Real User Monitoring • 任意のイベント ページ ◀ ▶ https://www. ページ ◀ ▶ https://www. 40% 100% ページ ページ 本文 ◀ ▶ https://www. 25% 100% 本文 ◀ ▶ https://www. スクロール深度 読了
8 インフラや環境 ユーザー行動 ビジネス上の成果 RUMとその先の効果測定 コスト効率のような視点 従来のウェブアナリティクス Webパフォーマンス測定と改善の意義
Google Analytics っぽい? • YAMAGOYAの後、「GAっぽいもんか」というツイートを見てしまった… • 既製品との違い ◦ 全てのシステムは「自社で持つ」、あくまでファーストパーティ ◦
任意の変数も含め、サンプリング無しに全データがリアルタイムに扱える ◦ DBの選択肢が豊富で、DBの良いとこどりできる ◦ 可視化を持たないので普段使ってるBIで直接扱える ◦ 生データを扱うが低コストかつメンテナンスフリー 9
10 Webパフォーマンスに関するクエリー例
前提としてID体系を… 11 Ingestly ID = ブラウザ識別 Root ID = ナビゲーション毎のID
Request ID = レコードのユニークID Action = 動詞 Category = 目的語 Request ID = レコードのユニークID Action = 動詞 Category = 目的語 • 1PVごとに複数レコー ドが記録される • Action と Category の組 み合わせがイベントの 意味を持つ • セッションの概念は無 い(ユーザーの行動と 関係無いという考え)
単純な時間別PVとUUはこんんな感じ 12
サイト全体のDCLまでの平均ミリ秒 13
トップページのDCLまでの時間を時系列で 14
DOM Completeまでの時間とスクロール深度 15
DOM Completeまでの時間とクリック率 16
• ページが意味を成す状態までロードされたタイミングで、 Ingestly.trackAction(‘track’, ‘meaningful_paint’, {}) を呼ぶ • クエリー時に timing_elapsed_ms を用いることで、first
meaningful paint まで の時間を使った分析が可能 さらに… 17
18 sendBeaconの落とし穴
sendBeaconって? • https://www.w3.org/TR/beacon/#sec-sendBeacon-method • 宛先に対してPOSTでデータを送る、計測目的の通信に使うAPI • Documentがhiddenになる場合でも全てのビーコンリクエストを即時送信する ようにUser Agentはスケジュールしなければならない •
レスポンスコールバック無し 19
サポートしているブラウザ 20
Webkitのバグ • アクセスしたことの無いドメイン に、sendBeaconでHTTPS通信しよ うとすると、見えないところでエ ラーして何も送信されない • iOS13で直った模様 21 https://bugs.webkit.org/show_bug.cgi?id=193508
IngestlyのSDKは、ローカルにIDがあればsendBeaconを使うが、無ければFetchを使いエンドポイントに ID有無を確認するので、初めて通信するドメインに対してはFetchが先行するのでOK。
64KB制限 • sendBeaconで送れるデータは64KBまで ◦ ブラウザによって実装が異なり、1リクエスト64KBだったり、ナビゲーション中の合計が 64KBだったり ◦ ボディだけでなくヘッダーも含めなので、リクエストURLの長さも影響する • 上限に達すると
navigator.sendBeaconはfalseを返す ◦ IngestlyのSDKの場合、falseが戻ったらFetchまたはXHRで送り直す 22
Fetchもなかなかくせ者で… • タイムアウト処理が無かったような? ◦ Fetchが使えるようになりはじめた2016年〜2017年ごろ、タイムアウトはPromiseとsetTimeout で実装するのが主流だったような…? • FetchとAbortControllerは対応ブラウザが違う… ◦ 最近はAbortControllerを使ったタイムアウト処理が広まっている
23 Fetch Abort Controller
24 Fastly Log Streaming に対する要望
書き出した履歴を確認したい • Fastlyから各ストリーミング先に描き出したログを見たい • 「ログのログ」 • スロットリングを受けたとか、接続できなかったとか、何件中何件失敗した とか… 25
S3とKafkaの Log Format枠を大きくして欲しい • Log Formatは、BigQueryと Elasticsearchの場合、TEXTAREAにな っていてJSONを扱いやすい • S3とKafkaもJSONで書き出して使え
るが、INPUT-textになっていて難し さがある… • TEXTAREAにして頂いて、ログ記録 時に改行を除くようなオプション があると便利だと思う 26 つい最近、S3経由Athenaにも対応しました https://github.com/ingestly/ingestly-endpoint/tree/master/S3 Thanks @mrtec_y
ストリーミング先を追加して欲しい • ストリームデータ ◦ Google Cloud PubSub ◦ Amazon Kinesis
Stream • メッセージキュー ◦ Amazon SQS ◦ MQTTとか? 27 BigQueryやS3に入れる前にデータの加工をしたり、 API参照してPre-Joinしたりするのに使いたい SQSのようにキャパを気にせず投入できるとログ の受取と後処理を分離できて良さそう
28 Questions?