Upload
Download free for 30 days
Login
Submit Search
ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnight
Download as PPTX, PDF
6 likes
1,915 views
Yahoo!デベロッパーネットワーク
ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜
Technology
Read more
1 of 48
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Most read
29
30
31
32
Most read
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
More Related Content
PDF
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017)
Yahoo!デベロッパーネットワーク
PDF
Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...
Yahoo!デベロッパーネットワーク
PDF
Design pattern in presto source code
Yahoo!デベロッパーネットワーク
PDF
僕とヤフーと時々Teradata #prestodb
Yahoo!デベロッパーネットワーク
PDF
プランニングツールにおけるインタラクティブな可視化を支えるバックエンド
Yahoo!デベロッパーネットワーク
PDF
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo!デベロッパーネットワーク
PDF
Hive on Tezのベストプラクティス
Yahoo!デベロッパーネットワーク
PDF
Spring Cloud Data Flow の紹介 #streamctjp
Yahoo!デベロッパーネットワーク
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017)
Yahoo!デベロッパーネットワーク
Dataworks Summit 2017 SanJose StreamProcessing - Hadoop Source Code Reading #...
Yahoo!デベロッパーネットワーク
Design pattern in presto source code
Yahoo!デベロッパーネットワーク
僕とヤフーと時々Teradata #prestodb
Yahoo!デベロッパーネットワーク
プランニングツールにおけるインタラクティブな可視化を支えるバックエンド
Yahoo!デベロッパーネットワーク
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo!デベロッパーネットワーク
Hive on Tezのベストプラクティス
Yahoo!デベロッパーネットワーク
Spring Cloud Data Flow の紹介 #streamctjp
Yahoo!デベロッパーネットワーク
What's hot
(20)
PDF
Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望
Yahoo!デベロッパーネットワーク
PDF
JavaOne2017参加報告 Microservices topic & approach #jjug
Yahoo!デベロッパーネットワーク
PDF
Dataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreading
Yahoo!デベロッパーネットワーク
PDF
Yahoo! JAPANのOracle構成-2017年版
Yahoo!デベロッパーネットワーク
PDF
広告における機械学習の適用例とシステムについて
Yahoo!デベロッパーネットワーク
PDF
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
PDF
Presto in Yahoo! JAPAN #yjdsnight
Yahoo!デベロッパーネットワーク
PDF
Apache Big Data Miami 2017 - Hadoop Source Code Reading #23 #hadoopreading
Yahoo!デベロッパーネットワーク
PDF
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
Yahoo!デベロッパーネットワーク
PDF
Storm の新機能について @HSCR #hadoopreading
Yahoo!デベロッパーネットワーク
PDF
AMPと広告とOpenRTBと #yjmu
Yahoo!デベロッパーネットワーク
PDF
データの見える化で進めるデータドリブンカンパニー #devsumiC
Yahoo!デベロッパーネットワーク
PDF
大規模運用で見えるWebプロトコルの理想と現実、そして今後 #html5j #html5j_b
Yahoo!デベロッパーネットワーク
PPTX
Spring Cloud Data Flow で構成される IIJ IoTサービス
Kenji Kondo
PDF
Yahoo! JAPANのOSS Cassandra貢献の今までとこれから
Yahoo!デベロッパーネットワーク
PDF
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
Yahoo!デベロッパーネットワーク
PDF
絶対にタダでは転ばない広告エンジニア #yjmu
Yahoo!デベロッパーネットワーク
PDF
リペア時間短縮にむけた取り組み@Yahoo! JAPAN #casstudy
Yahoo!デベロッパーネットワーク
PDF
20140120 presto meetup
Ogibayashi
PDF
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Yahoo!デベロッパーネットワーク
Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望
Yahoo!デベロッパーネットワーク
JavaOne2017参加報告 Microservices topic & approach #jjug
Yahoo!デベロッパーネットワーク
Dataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreading
Yahoo!デベロッパーネットワーク
Yahoo! JAPANのOracle構成-2017年版
Yahoo!デベロッパーネットワーク
広告における機械学習の適用例とシステムについて
Yahoo!デベロッパーネットワーク
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
Presto in Yahoo! JAPAN #yjdsnight
Yahoo!デベロッパーネットワーク
Apache Big Data Miami 2017 - Hadoop Source Code Reading #23 #hadoopreading
Yahoo!デベロッパーネットワーク
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
Yahoo!デベロッパーネットワーク
Storm の新機能について @HSCR #hadoopreading
Yahoo!デベロッパーネットワーク
AMPと広告とOpenRTBと #yjmu
Yahoo!デベロッパーネットワーク
データの見える化で進めるデータドリブンカンパニー #devsumiC
Yahoo!デベロッパーネットワーク
大規模運用で見えるWebプロトコルの理想と現実、そして今後 #html5j #html5j_b
Yahoo!デベロッパーネットワーク
Spring Cloud Data Flow で構成される IIJ IoTサービス
Kenji Kondo
Yahoo! JAPANのOSS Cassandra貢献の今までとこれから
Yahoo!デベロッパーネットワーク
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
Yahoo!デベロッパーネットワーク
絶対にタダでは転ばない広告エンジニア #yjmu
Yahoo!デベロッパーネットワーク
リペア時間短縮にむけた取り組み@Yahoo! JAPAN #casstudy
Yahoo!デベロッパーネットワーク
20140120 presto meetup
Ogibayashi
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Yahoo!デベロッパーネットワーク
Ad
Similar to ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnight
(20)
PDF
第二回IoT関連技術勉強会 ログ収集編
tzm_freedom
KEY
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
Makoto Setoh
PDF
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
Yahoo!デベロッパーネットワーク
PDF
趣味と仕事の違い、現場で求められるアプリケーションの可観測性
LIFULL Co., Ltd.
PPTX
行動認識用データ収集を通じたデータロガーの開発
Sozo Inoue
PDF
Flume cassandra real time log processing (日本語)
CLOUDIAN KK
PDF
Riaアーキテクチャー研究会 第3回 セッション3
Mami Shiino
KEY
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
NilOne Ltd.
PDF
Storm×couchbase serverで作るリアルタイム解析基盤
NTT Communications Technology Development
PDF
クラウドではじめるリアルタイムデータ分析 #seccamp
Masahiro NAKAYAMA
PDF
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
聡 中川
PDF
ログにまつわるエトセトラ
菊池 佑太
PDF
Logにまつわるエトセトラ
leverages_event
KEY
Cocoa勉強会関西2012年5月
Satoshi Oomori
PPTX
データ収集の基本と「JapanTaxi」アプリにおける実践例
Tetsutaro Watanabe
PPT
iPhoneコンシェルジェアプリの紹介
Kato Shingo
PPT
iPhoneコンシェルジュアプリ
Kato Shingo
PDF
フィードテイラー紹介(2014.11.15版)
feedtailor
PDF
Feedtailor portfolio 20141115
feedtailor
PDF
ios開発ビギナーな方への手引き
Naoki Numajiri
第二回IoT関連技術勉強会 ログ収集編
tzm_freedom
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
Makoto Setoh
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
Yahoo!デベロッパーネットワーク
趣味と仕事の違い、現場で求められるアプリケーションの可観測性
LIFULL Co., Ltd.
行動認識用データ収集を通じたデータロガーの開発
Sozo Inoue
Flume cassandra real time log processing (日本語)
CLOUDIAN KK
Riaアーキテクチャー研究会 第3回 セッション3
Mami Shiino
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
NilOne Ltd.
Storm×couchbase serverで作るリアルタイム解析基盤
NTT Communications Technology Development
クラウドではじめるリアルタイムデータ分析 #seccamp
Masahiro NAKAYAMA
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
聡 中川
ログにまつわるエトセトラ
菊池 佑太
Logにまつわるエトセトラ
leverages_event
Cocoa勉強会関西2012年5月
Satoshi Oomori
データ収集の基本と「JapanTaxi」アプリにおける実践例
Tetsutaro Watanabe
iPhoneコンシェルジェアプリの紹介
Kato Shingo
iPhoneコンシェルジュアプリ
Kato Shingo
フィードテイラー紹介(2014.11.15版)
feedtailor
Feedtailor portfolio 20141115
feedtailor
ios開発ビギナーな方への手引き
Naoki Numajiri
Ad
More from Yahoo!デベロッパーネットワーク
(20)
PDF
ゼロから始める転移学習
Yahoo!デベロッパーネットワーク
PDF
継続的なモデルモニタリングを実現するKubernetes Operator
Yahoo!デベロッパーネットワーク
PDF
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
Yahoo!デベロッパーネットワーク
PDF
オンプレML基盤on Kubernetes パネルディスカッション
Yahoo!デベロッパーネットワーク
PDF
LakeTahoe
Yahoo!デベロッパーネットワーク
PDF
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
Yahoo!デベロッパーネットワーク
PDF
Persistent-memory-native Database High-availability Feature
Yahoo!デベロッパーネットワーク
PDF
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
Yahoo!デベロッパーネットワーク
PDF
eコマースと実店舗の相互利益を目指したデザイン #yjtc
Yahoo!デベロッパーネットワーク
PDF
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
Yahoo!デベロッパーネットワーク
PDF
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo!デベロッパーネットワーク
PDF
ビッグデータから人々のムードを捉える #yjtc
Yahoo!デベロッパーネットワーク
PDF
サイエンス領域におけるMLOpsの取り組み #yjtc
Yahoo!デベロッパーネットワーク
PDF
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
Yahoo!デベロッパーネットワーク
PDF
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo!デベロッパーネットワーク
PDF
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
Yahoo!デベロッパーネットワーク
PDF
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
Yahoo!デベロッパーネットワーク
PDF
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
Yahoo!デベロッパーネットワーク
PDF
「新しいおうち探し」のためのAIアシスト検索 #yjtc
Yahoo!デベロッパーネットワーク
PDF
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
Yahoo!デベロッパーネットワーク
ゼロから始める転移学習
Yahoo!デベロッパーネットワーク
継続的なモデルモニタリングを実現するKubernetes Operator
Yahoo!デベロッパーネットワーク
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
Yahoo!デベロッパーネットワーク
オンプレML基盤on Kubernetes パネルディスカッション
Yahoo!デベロッパーネットワーク
LakeTahoe
Yahoo!デベロッパーネットワーク
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
Yahoo!デベロッパーネットワーク
Persistent-memory-native Database High-availability Feature
Yahoo!デベロッパーネットワーク
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
Yahoo!デベロッパーネットワーク
eコマースと実店舗の相互利益を目指したデザイン #yjtc
Yahoo!デベロッパーネットワーク
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
Yahoo!デベロッパーネットワーク
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo!デベロッパーネットワーク
ビッグデータから人々のムードを捉える #yjtc
Yahoo!デベロッパーネットワーク
サイエンス領域におけるMLOpsの取り組み #yjtc
Yahoo!デベロッパーネットワーク
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
Yahoo!デベロッパーネットワーク
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo!デベロッパーネットワーク
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
Yahoo!デベロッパーネットワーク
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
Yahoo!デベロッパーネットワーク
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
Yahoo!デベロッパーネットワーク
「新しいおうち探し」のためのAIアシスト検索 #yjtc
Yahoo!デベロッパーネットワーク
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
Yahoo!デベロッパーネットワーク
ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnight
1.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 2017年7月19日 1 松本 誠義 ヤフーのロギングSDKの挑戦 〜データドリブン企業を目指して〜
2.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. データ&サイエンスソリューション統括本部 データプラットフォーム本部 開発4部 データセンサー1 入社:2016年 新卒 担当:iOS 趣味:海釣り 松本 誠義 自己紹介 2
3.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. アジェンダ 背景:ロギングSDKのこれまで 課題:ロギングSDKの課題 展望:自動ロギングの実現に向けて 3 テーマ「データ収集」
4.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 背景 ロギングSDKのこれまで
5.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. トップメッセージより ヤフーは世界でもユニークな マルチビッグデータカンパニーです トップメッセージ https://about.yahoo.co.jp/info/message/
6.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. ユーザー規模 6 9,000万1日 ユニーク ブラウザ ※出所:Yahoo! JAPAN社内データ(2016年4月-6月の平均)
7.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 提供サービス 7 Media US Search Video Answer Mail JP US JP Membership C2C Payment C2C EC B2C EC Local
8.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 様々なデータセット 8 検索 EC 金融 メッセージングサービス 地図、カーナビ 興味のある言葉 買ったもの ユーザーの資産 自然言語 位置情報
9.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. データ利活用のサイクルを回したい 9 サービスや 機能を提供 データがたまる データから 気づきを得る インサイト ユーザー データ
10.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. ロギングSDK Key-ValueのシンプルI/F • ヘルスチェック • サービス改善 ほぼ全てのサービスに導入完了 iOS, Android, Webに対応
11.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 全社のデータ利活用 各サービス毎にデータを利活用できている 11 でも、まだまだ課題が…。
12.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 課題 ロギングSDKの課題
13.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. データ利活用のボトルネック SDKの課題 • サービスの実装が大変 • 集めたデータの整合性がとれない 13
14.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 14 サービスの実装が大変 SDKで提供している機能 その結果。。。 送りたいログは大量 セッション管理 Key-Valueのログ送信I/F ロギングのための実装が多い ラッパーライブラリが必須 SDK Wrapper • インスタンス管理 • ログ送信の最適化
15.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 集めたデータの整合性がとれない 15 Button1 Button1, 2 画面外含む ログ取得のタイミング 画面に入った時 例. 要素の表示 Button 1 Button 2 Button 1 サービスごとにログの意味合いが異なる サービスA サービスB
16.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 原因 • サービス側の実装が大変 • 集めたデータの整合性がとれない 16 ログ取得のI/Fだけを提供 共通のパラメータは自動化すべき
17.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 展望 自動ロギングの実現に向けて
18.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 自動化の対象 18 サービス独自のイベントロギング サービス共通のロギング項目 • 要素の表示 • 要素に対するClick
19.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 19 自動ロギングとロギング実装の工数 Before: After: サービスのロギングに割く工数が激減! 画面の表示 パラメータの指定 送信処理 要素の追加 パラメータの指定 送信処理 Clickイベント パラメータの指定 送信処理 パラメータの指定要素生成時
20.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 自動ロギングとデータの整合性 20 データの整合性が取れるようになる Button 1 Button 2 Button 1 サービスA サービスB SDK SDK Button1 Button1 自動ロギング 自動ロギング
21.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. データ利活用のボトルネック解消へ 21 SDKの課題 • 実装が大変 • 集めたデータの整合性がとれない 自動ロギング導入 • サービスのロギングに割く工数が激減 • データの整合性が取れるようになる
22.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. 要素の表示とClickの自動化処理 どのように実現したか
23.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 自動化後のサービス側のロギング実装 23 Button 1 Button 2 Button 1 Button 2 対象: YES 対象: YES 対象: YES ロギング対象の指定 要素が画面に表示された 要素が非表示になった ButtonがClickされた ロギング対象指定のI/F ロギング対象の監視・判定処理 自動ロギング
24.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. どのように実現したか(1/2) ロギング対象指定のI/F
25.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. ロギング対象指定のI/F 25 image1.isTarget = YES; button1.isTarget = YES; 目指す形:ロギング対象の各要素にフラグをセット 要素のsuperクラスを拡張してプロパティを追加する UIView UIButton UIImage UIView+Sample.h/m @property (nonatomic) BOOL isTarget;
26.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. iOS: カテゴリで値を保持する 26 @dynamicプロパティのアクセサでget/setする @dynamic isTarget; - (BOOL)isTarget { NSNumber *boolNumber = objc_getAssociatedObject(self, @selector(isTarget)); return [boolNumber boolValue]; } - (void)setIsTarget:(BOOL)isTarget { objc_setAssociatedObject(self, @selector(isTarget), [NSNumber numberWithBool:isTarget], OBJC_ASSOCIATION_RETAIN); } id objc_getAssociatedObject(id object, const void *key); void objc_setAssociatedObject(id object, const void *key, id value, policy); #import <objc/runtime.h> AssociatedObjectの利用
27.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. ロギング対象を指定できるようになった 27 Button 1 Button 2 対象: YES 対象: YES 対象: YES id: img1 id: btn1 id: btn2 同様に任意のパラメータの設定も可能
28.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. どのように実現したか(2/2) ロギング対象の監視・判定処理
29.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. ロギング対象の監視・判定 29 Button 1 Button 2 可視 可視 不可視 Button 1 Button 2 不可視 可視 可視 View-out View-in スクロール 判定結果 監視
30.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. ロギング対象の監視 ↓ ロギング実施の判定処理
31.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 監視に利用できそうな技術 ポーリング 一定時間ごとに処理を実行 イベントのフック イベント発生ごとに処理を実行 31
32.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. アプリの状態遷移に関わるイベント 32 イベント iOSの場合 画面の描画が完了 viewDidAppear 現在の画面が非表示になった viewDidDisappear スクロールされた scrollViewDidScroll アクションの送信(click等) sendAction
33.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. なぜフックするのか 33 イベント実装メソッド サービス側の実装 画面の遷移など ロギング処理 サービス側で ロギング実装の必要あり
34.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. イベントハンドラのフック 34 ロギング処理 サービス側の実装 画面の遷移など イベント実装メソッド ロギング処理を 差し込みたい
35.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. Method Swizzling(iOS) 35 ロギング処理 scrollViewDidScroll scrollWithLogging scrollWithLogging サービスの実装 メソッドの処理を入れ替える仕組み
36.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. Method Swizzling(iOS) 36 scrollViewDidScroll scrollWithLogging ロギング処理 scrollWithLogging サービスの実装 IMP class_replaceMethod( Class cls, SEL name, IMP imp, const char *types ); 元scrollWithLogging 元scrollViewDidScroll
37.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 状態変化の監視 37 可視状態を要素に保持し、判定の度に比較 Button 1 Button 2 Button 1 Button 2 Button 1 Button 1 Button 2 View-in View-out 例:スクロールの監視時
38.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. ロギング対象の監視 ↓ ロギング実施の判定処理
39.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 可視状態の判定 1. ロギング対象の探索 2. 座標の変換 3. 領域の判定 39 Button 1 Button 2
40.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. window&screen 1. ロギング対象の探索 40 Button 1 Button 2 YES YES YES root view scroll view for (UIView *subView in rootView.subviews) { if (subView.isTarget) { ... rootview起点にsubviewを走査 ※前提:windowとscreenが同サイズ
41.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 2. 座標の変換 41 window&screen Button 1 Button 2 root view scroll view YES YES YES CGRect rectInWindow = [subview convertRect:subview.bounds toView:nil]; 対象viewの座標をWindow座標系に変換
42.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 3. 領域の判定 42 window&screen Button 1 Button 2 root view scroll view YES YES YES 可視 可視 不可視 CGRectIntersectsRect(window.bounds, rectInWindow) 対象viewの座標がwindow内に含まれるか判定
43.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 実装完了 43 ロギング対象指定のI/F ロギング対象の監視・判定処理 自動ロギング実現に必要な実装
44.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. Button 1 Button 2 組込みテストの結果 44 Button 1 Button 2 Button 1 Button 2 View-out View-inButton 1 Button 2 この間、サービス側の実装はゼロ
45.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. 組込みテストの結果 45 Button 1 Button 2 View-out Click Button 1 Button 2 Text 1 この間、サービス側の実装はゼロ View-out View-in View-in
46.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. まとめ
47.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved. まとめ データドリブン実現に向けたSDKの課題 • 実装が大変 • データの整合性がとれない 自動ロギングでボトルネックの解消
48.
Copyrig ht ©
2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved. まだtrial&error。 挑戦は続きます。
Editor's Notes
#4:
本日のテーマ、データ収集 私の所属しているチームで提供しているロギングSDKのこれまでと課題、これからについてお話をさせて頂きたいと思います。
#8:
サービスが多い、かつ競合にも勝っているという説明 また、ヤフージャパンは100を超えるサービスを展開しております。 ニュースや動画、ショッピングなど様々な分野で多くのユーザの皆様にご利用いただいております。
#9:
データ利活用の視点に立ちますと、様々なサービスを提供しているということは、それだけ幅広いデータ・セットを持つことができうるということになります。例えば、ショッピングのレコメンドをする場合でも、ショッピングのサービス内で得られるデータだけでなく、日常の検索ワードや、位置情報などを利用することができます。特に、初めて訪れたお客様でも、他のサービスのデータがあれば、レコメンドしていけるようなことも可能です。
#10:
私たちはこれからユーザの皆様により高い価値を提供しつづけていくために、データをもっと集め、活用し、サービスの改善を行うサイクルを回していきたいと考えております。
#15:
サービス側の実装が大変 ログを落とすというI/Fだけを提供していたが、落としたいログは大量にあった パラメータを引き回すのが大変だった -> 各アプリでラッパーが作られていた ロガーに変更があるとラッパーへの反映が必要になる サービス側のスピード感が損なわれてしまう
#16:
ログを落とすタイミングがサービスにより異なる(許可しているため) うちでは、各Viewの表示・クリックを取っている ニュースの記事やショッピングの商品などが実際に表示されたことを取りたい。 でも、Viewのタイミングがサービスによりバラバラになっていました。 これだと、横断的に表示とクリックのログを使うことは難しいでしょう。
#24:
自動化のためにSDKが知らなければならないこと ・いつロギングするのか ・なにをロギングするのか ・どうロギングするのか
#26:
あるオブジェクトに任意のkey, valueを関連付けることができる
#27:
Viewにインスタンス変数を追加 Viewクラスを拡張(カテゴリ)し、インスタンス変数を追加 ストーリーボードからも付けられる。 @dynamic sampleItemId;- (NSString *)sampleItemId { return objc_getAssociatedObject(self, @selector(sampleItemId));}- (void)setUserActionLoggerItemId:(BOOL)itemId { objc_setAssociatedObject(self, @selector(sampleItemId), [NSNumber numberWithBool:itemId], OBJC_ASSOCIATION_RETAIN_NONATOMIC);}
#30:
subViewを走査し、パラメータを持つロギング対象のview一覧を取得します。 それらの座標をWindow座標に変換し、領域内にあることを判定します。
#34:
イベントにロギング処理を直接実装できれば サービス側にロギング処理を叩いてもらう必要あり フックして、サービスの処理の裏にロギング処理を追加
#35:
イベントにロギング処理を直接実装できれば サービス側にロギング処理を叩いてもらう必要あり フックして、サービスの処理の裏にロギング処理を追加
#36:
工夫すれば、logger.startだけで沢山の情報を自動取得できます。
#37:
工夫すれば、logger.startだけで沢山の情報を自動取得できます。
#38:
subViewを走査し、パラメータを持つロギング対象のview一覧を取得します。 それらの座標をWindow座標に変換し、領域内にあることを判定します。
#41:
subViewを走査し、パラメータを持つロギング対象のview一覧を取得します。 それらの座標をWindow座標に変換し、領域内にあることを判定します。
#42:
subViewを走査し、パラメータを持つロギング対象のview一覧を取得します。 それらの座標をWindow座標に変換し、領域内にあることを判定します。
#43:
subViewを走査し、パラメータを持つロギング対象のview一覧を取得します。 それらの座標をWindow座標に変換し、領域内にあることを判定します。
#45:
subViewを走査し、パラメータを持つロギング対象のview一覧を取得します。 それらの座標をWindow座標に変換し、領域内にあることを判定します。
#46:
subViewを走査し、パラメータを持つロギング対象のview一覧を取得します。 それらの座標をWindow座標に変換し、領域内にあることを判定します。
#48:
アプリのViewImpsは簡単に取れるので、是非取りましょう
Download