SlideShare uma empresa Scribd logo
1 de 48
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
2017年7月19日
1
松本 誠義
ヤフーのロギングSDKの挑戦
〜データドリブン企業を目指して〜
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
データ&サイエンスソリューション統括本部
データプラットフォーム本部
開発4部 データセンサー1
入社:2016年 新卒
担当:iOS
趣味:海釣り
松本 誠義
自己紹介
2
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
アジェンダ
背景:ロギングSDKのこれまで
課題:ロギングSDKの課題
展望:自動ロギングの実現に向けて
3
テーマ「データ収集」
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
背景
ロギングSDKのこれまで
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
トップメッセージより
ヤフーは世界でもユニークな
マルチビッグデータカンパニーです
トップメッセージ
https://about.yahoo.co.jp/info/message/
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
ユーザー規模
6
9,000万1日
ユニーク
ブラウザ
※出所:Yahoo! JAPAN社内データ(2016年4月-6月の平均)
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
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
様々なデータセット
8
検索
EC
金融
メッセージングサービス
地図、カーナビ
興味のある言葉
買ったもの
ユーザーの資産
自然言語
位置情報
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
データ利活用のサイクルを回したい
9
サービスや
機能を提供
データがたまる
データから
気づきを得る インサイト ユーザー
データ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
ロギングSDK
Key-ValueのシンプルI/F
• ヘルスチェック
• サービス改善
ほぼ全てのサービスに導入完了
iOS, Android, Webに対応
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
全社のデータ利活用
各サービス毎にデータを利活用できている
11
でも、まだまだ課題が…。
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
課題
ロギングSDKの課題
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
データ利活用のボトルネック
SDKの課題
• サービスの実装が大変
• 集めたデータの整合性がとれない
13
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
• インスタンス管理
• ログ送信の最適化
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
集めたデータの整合性がとれない
15
Button1
Button1, 2
画面外含む
ログ取得のタイミング
画面に入った時
例. 要素の表示
Button 1
Button 2
Button 1
サービスごとにログの意味合いが異なる
サービスA
サービスB
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
原因
• サービス側の実装が大変
• 集めたデータの整合性がとれない
16
ログ取得のI/Fだけを提供
共通のパラメータは自動化すべき
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
展望
自動ロギングの実現に向けて
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
自動化の対象
18
サービス独自のイベントロギング
サービス共通のロギング項目
• 要素の表示
• 要素に対するClick
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
19
自動ロギングとロギング実装の工数
Before: After:
サービスのロギングに割く工数が激減!
画面の表示 パラメータの指定
送信処理
要素の追加 パラメータの指定
送信処理
Clickイベント パラメータの指定
送信処理
パラメータの指定要素生成時
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
自動ロギングとデータの整合性
20
データの整合性が取れるようになる
Button 1
Button 2
Button 1
サービスA
サービスB
SDK
SDK
Button1
Button1
自動ロギング
自動ロギング
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
データ利活用のボトルネック解消へ
21
SDKの課題
• 実装が大変
• 集めたデータの整合性がとれない
自動ロギング導入
• サービスのロギングに割く工数が激減
• データの整合性が取れるようになる
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
要素の表示とClickの自動化処理
どのように実現したか
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 ロギング対象の監視・判定処理
自動ロギング
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
どのように実現したか(1/2)
ロギング対象指定のI/F
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;
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の利用
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
ロギング対象を指定できるようになった
27
Button 1
Button 2
対象: YES
対象: YES
対象: YES
id: img1
id: btn1
id: btn2
同様に任意のパラメータの設定も可能
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
どのように実現したか(2/2)
ロギング対象の監視・判定処理
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
ロギング対象の監視・判定
29
Button 1
Button 2
可視
可視
不可視
Button 1
Button 2
不可視
可視
可視
View-out
View-in
スクロール
判定結果
監視
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.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.
アプリの状態遷移に関わるイベント
32
イベント iOSの場合
画面の描画が完了 viewDidAppear
現在の画面が非表示になった viewDidDisappear
スクロールされた scrollViewDidScroll
アクションの送信(click等) sendAction
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
なぜフックするのか
33
イベント実装メソッド
サービス側の実装
画面の遷移など
ロギング処理
サービス側で
ロギング実装の必要あり
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
イベントハンドラのフック
34
ロギング処理
サービス側の実装
画面の遷移など
イベント実装メソッド
ロギング処理を
差し込みたい
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
Method Swizzling(iOS)
35
ロギング処理
scrollViewDidScroll scrollWithLogging
scrollWithLogging
サービスの実装
メソッドの処理を入れ替える仕組み
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
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
例:スクロールの監視時
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
ロギング対象の監視
↓
ロギング実施の判定処理
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
可視状態の判定
1. ロギング対象の探索
2. 座標の変換
3. 領域の判定
39
Button 1
Button 2
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が同サイズ
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座標系に変換
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内に含まれるか判定
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
実装完了
43
ロギング対象指定のI/F
ロギング対象の監視・判定処理
自動ロギング実現に必要な実装
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
この間、サービス側の実装はゼロ
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
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
まとめ
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
まとめ
データドリブン実現に向けたSDKの課題
• 実装が大変
• データの整合性がとれない
自動ロギングでボトルネックの解消
Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.Copyrig ht © 2017 Yahoo Japan Corporation. All Rig hts Reserved.
まだtrial&error。
挑戦は続きます。

Mais conteúdo relacionado

Mais procurados

Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望
Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望
Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望Yahoo!デベロッパーネットワーク
 
Dataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreading
Dataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreadingDataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreading
Dataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreadingYahoo!デベロッパーネットワーク
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjugYahoo!デベロッパーネットワーク
 
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試みデータテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試みYahoo!デベロッパーネットワーク
 
データの見える化で進めるデータドリブンカンパニー #devsumiC
データの見える化で進めるデータドリブンカンパニー #devsumiCデータの見える化で進めるデータドリブンカンパニー #devsumiC
データの見える化で進めるデータドリブンカンパニー #devsumiCYahoo!デベロッパーネットワーク
 
大規模運用で見えるWebプロトコルの理想と現実、そして今後 #html5j #html5j_b
大規模運用で見えるWebプロトコルの理想と現実、そして今後  #html5j #html5j_b大規模運用で見えるWebプロトコルの理想と現実、そして今後  #html5j #html5j_b
大規模運用で見えるWebプロトコルの理想と現実、そして今後 #html5j #html5j_bYahoo!デベロッパーネットワーク
 
Spring Cloud Data Flow で構成される IIJ IoTサービス
Spring Cloud Data Flow で構成される IIJ IoTサービスSpring Cloud Data Flow で構成される IIJ IoTサービス
Spring Cloud Data Flow で構成される IIJ IoTサービスKenji Kondo
 
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話Yahoo!デベロッパーネットワーク
 
20140120 presto meetup
20140120 presto meetup20140120 presto meetup
20140120 presto meetupOgibayashi
 

Mais procurados (20)

Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望
Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望
Yahoo!プロモーション広告のビックデータ基盤を支える技術と今後の展望
 
JavaOne2017参加報告 Microservices topic & approach #jjug
JavaOne2017参加報告 Microservices topic & approach #jjugJavaOne2017参加報告 Microservices topic & approach #jjug
JavaOne2017参加報告 Microservices topic & approach #jjug
 
Dataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreading
Dataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreadingDataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreading
Dataworks Summit SJ QueryEngine - Hadoop Source Code Reading #23 #hadoopreading
 
Yahoo! JAPANのOracle構成-2017年版
Yahoo! JAPANのOracle構成-2017年版Yahoo! JAPANのOracle構成-2017年版
Yahoo! JAPANのOracle構成-2017年版
 
広告における機械学習の適用例とシステムについて
広告における機械学習の適用例とシステムについて広告における機械学習の適用例とシステムについて
広告における機械学習の適用例とシステムについて
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
Presto in Yahoo! JAPAN #yjdsnight
Presto in Yahoo! JAPAN #yjdsnightPresto in Yahoo! JAPAN #yjdsnight
Presto in Yahoo! JAPAN #yjdsnight
 
Apache Big Data Miami 2017 - Hadoop Source Code Reading #23 #hadoopreading
Apache Big Data Miami 2017 - Hadoop Source Code Reading #23 #hadoopreadingApache Big Data Miami 2017 - Hadoop Source Code Reading #23 #hadoopreading
Apache Big Data Miami 2017 - Hadoop Source Code Reading #23 #hadoopreading
 
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試みデータテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
 
Storm の新機能について @HSCR #hadoopreading
Storm の新機能について @HSCR #hadoopreadingStorm の新機能について @HSCR #hadoopreading
Storm の新機能について @HSCR #hadoopreading
 
AMPと広告とOpenRTBと #yjmu
AMPと広告とOpenRTBと #yjmuAMPと広告とOpenRTBと #yjmu
AMPと広告とOpenRTBと #yjmu
 
データの見える化で進めるデータドリブンカンパニー #devsumiC
データの見える化で進めるデータドリブンカンパニー #devsumiCデータの見える化で進めるデータドリブンカンパニー #devsumiC
データの見える化で進めるデータドリブンカンパニー #devsumiC
 
大規模運用で見えるWebプロトコルの理想と現実、そして今後 #html5j #html5j_b
大規模運用で見えるWebプロトコルの理想と現実、そして今後  #html5j #html5j_b大規模運用で見えるWebプロトコルの理想と現実、そして今後  #html5j #html5j_b
大規模運用で見えるWebプロトコルの理想と現実、そして今後 #html5j #html5j_b
 
Spring Cloud Data Flow で構成される IIJ IoTサービス
Spring Cloud Data Flow で構成される IIJ IoTサービスSpring Cloud Data Flow で構成される IIJ IoTサービス
Spring Cloud Data Flow で構成される IIJ IoTサービス
 
Yahoo! JAPANのOSS Cassandra貢献の今までとこれから
Yahoo! JAPANのOSS Cassandra貢献の今までとこれからYahoo! JAPANのOSS Cassandra貢献の今までとこれから
Yahoo! JAPANのOSS Cassandra貢献の今までとこれから
 
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
 
絶対にタダでは転ばない広告エンジニア #yjmu
絶対にタダでは転ばない広告エンジニア #yjmu絶対にタダでは転ばない広告エンジニア #yjmu
絶対にタダでは転ばない広告エンジニア #yjmu
 
リペア時間短縮にむけた取り組み@Yahoo! JAPAN #casstudy
リペア時間短縮にむけた取り組み@Yahoo! JAPAN #casstudyリペア時間短縮にむけた取り組み@Yahoo! JAPAN #casstudy
リペア時間短縮にむけた取り組み@Yahoo! JAPAN #casstudy
 
20140120 presto meetup
20140120 presto meetup20140120 presto meetup
20140120 presto meetup
 
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
 

Semelhante a ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnight

ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術Yahoo!デベロッパーネットワーク
 
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニーTokuhiro Eto
 
Current status and future trends in Node-RED
Current status and future trends in Node-REDCurrent status and future trends in Node-RED
Current status and future trends in Node-REDnodered_ug_jp
 
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4Yahoo!デベロッパーネットワーク
 
JapanTaxi R&Dの取り組み事例
JapanTaxi R&Dの取り組み事例JapanTaxi R&Dの取り組み事例
JapanTaxi R&Dの取り組み事例Fumihiko Takahashi
 
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋Yahoo!デベロッパーネットワーク
 
ビットバンクにおける少人数で支えるインフラチームの戦略
ビットバンクにおける少人数で支えるインフラチームの戦略ビットバンクにおける少人数で支えるインフラチームの戦略
ビットバンクにおける少人数で支えるインフラチームの戦略bitbank, Inc. Tokyo, Japan
 
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo!デベロッパーネットワーク
 
Datadog monitoring with HashiCorp
Datadog monitoring with HashiCorpDatadog monitoring with HashiCorp
Datadog monitoring with HashiCorpMasatomo Ito
 
Datadog monitoring with HashiCorp stack
Datadog monitoring with HashiCorp stackDatadog monitoring with HashiCorp stack
Datadog monitoring with HashiCorp stackMasatomo Ito
 
LoRaWANとAzure IoT Hub接続ハンズオン
LoRaWANとAzure IoT Hub接続ハンズオンLoRaWANとAzure IoT Hub接続ハンズオン
LoRaWANとAzure IoT Hub接続ハンズオンTomokazu Kizawa
 
QGISセミナー初級・実践編(V2.4)
QGISセミナー初級・実践編(V2.4)QGISセミナー初級・実践編(V2.4)
QGISセミナー初級・実践編(V2.4)IWASAKI NOBUSUKE
 
QGISセミナー初級編 ~QGISの使い方・実践編~ Ver. 2.4版
QGISセミナー初級編 ~QGISの使い方・実践編~ Ver. 2.4版QGISセミナー初級編 ~QGISの使い方・実践編~ Ver. 2.4版
QGISセミナー初級編 ~QGISの使い方・実践編~ Ver. 2.4版FOSS4G_MEXT
 

Semelhante a ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnight (20)

ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
 
決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu決済金融から始めるデータドリブンカンパニー #yjmu
決済金融から始めるデータドリブンカンパニー #yjmu
 
Prestoクエリログの保存/分析機能の構築 #yjdsnight
Prestoクエリログの保存/分析機能の構築 #yjdsnightPrestoクエリログの保存/分析機能の構築 #yjdsnight
Prestoクエリログの保存/分析機能の構築 #yjdsnight
 
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー
 
市場で勝ち続けるための品質とテストの技術①
市場で勝ち続けるための品質とテストの技術①市場で勝ち続けるための品質とテストの技術①
市場で勝ち続けるための品質とテストの技術①
 
Yahoo!ブラウザーにおける市場環境の分析と戦略化
Yahoo!ブラウザーにおける市場環境の分析と戦略化Yahoo!ブラウザーにおける市場環境の分析と戦略化
Yahoo!ブラウザーにおける市場環境の分析と戦略化
 
Current status and future trends in Node-RED
Current status and future trends in Node-REDCurrent status and future trends in Node-RED
Current status and future trends in Node-RED
 
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
 
タブブラウザSDKを作った話 #yjcamp
タブブラウザSDKを作った話 #yjcampタブブラウザSDKを作った話 #yjcamp
タブブラウザSDKを作った話 #yjcamp
 
ニュースアプリで起きた不具合から学んだ 最適への一歩
ニュースアプリで起きた不具合から学んだ 最適への一歩ニュースアプリで起きた不具合から学んだ 最適への一歩
ニュースアプリで起きた不具合から学んだ 最適への一歩
 
Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~
Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~ Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~
Yahoo! JAPAN MEETUP #21~Gitを使ったチーム開発体験@名古屋~
 
JapanTaxi R&Dの取り組み事例
JapanTaxi R&Dの取り組み事例JapanTaxi R&Dの取り組み事例
JapanTaxi R&Dの取り組み事例
 
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
 
ビットバンクにおける少人数で支えるインフラチームの戦略
ビットバンクにおける少人数で支えるインフラチームの戦略ビットバンクにおける少人数で支えるインフラチームの戦略
ビットバンクにおける少人数で支えるインフラチームの戦略
 
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
 
Datadog monitoring with HashiCorp
Datadog monitoring with HashiCorpDatadog monitoring with HashiCorp
Datadog monitoring with HashiCorp
 
Datadog monitoring with HashiCorp stack
Datadog monitoring with HashiCorp stackDatadog monitoring with HashiCorp stack
Datadog monitoring with HashiCorp stack
 
LoRaWANとAzure IoT Hub接続ハンズオン
LoRaWANとAzure IoT Hub接続ハンズオンLoRaWANとAzure IoT Hub接続ハンズオン
LoRaWANとAzure IoT Hub接続ハンズオン
 
QGISセミナー初級・実践編(V2.4)
QGISセミナー初級・実践編(V2.4)QGISセミナー初級・実践編(V2.4)
QGISセミナー初級・実践編(V2.4)
 
QGISセミナー初級編 ~QGISの使い方・実践編~ Ver. 2.4版
QGISセミナー初級編 ~QGISの使い方・実践編~ Ver. 2.4版QGISセミナー初級編 ~QGISの使い方・実践編~ Ver. 2.4版
QGISセミナー初級編 ~QGISの使い方・実践編~ Ver. 2.4版
 

Mais de Yahoo!デベロッパーネットワーク

ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかYahoo!デベロッパーネットワーク
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2Yahoo!デベロッパーネットワーク
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcYahoo!デベロッパーネットワーク
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo!デベロッパーネットワーク
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcYahoo!デベロッパーネットワーク
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtcYahoo!デベロッパーネットワーク
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcYahoo!デベロッパーネットワーク
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcYahoo!デベロッパーネットワーク
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcYahoo!デベロッパーネットワーク
 

Mais de Yahoo!デベロッパーネットワーク (20)

ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
 
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
 
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
 
オンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッションオンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッション
 
LakeTahoe
LakeTahoeLakeTahoe
LakeTahoe
 
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
 
Persistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability FeaturePersistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability Feature
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
 
eコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtceコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtc
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
 
ビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtcビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtc
 
サイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtcサイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtc
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
 
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtcYahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
 
「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
 

Último

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 

Último (9)

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 

ヤフーのロギング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。 挑戦は続きます。

Notas do Editor

  1. 本日のテーマ、データ収集 私の所属しているチームで提供しているロギングSDKのこれまでと課題、これからについてお話をさせて頂きたいと思います。
  2. サービスが多い、かつ競合にも勝っているという説明 また、ヤフージャパンは100を超えるサービスを展開しております。 ニュースや動画、ショッピングなど様々な分野で多くのユーザの皆様にご利用いただいております。
  3. データ利活用の視点に立ちますと、様々なサービスを提供しているということは、それだけ幅広いデータ・セットを持つことができうるということになります。例えば、ショッピングのレコメンドをする場合でも、ショッピングのサービス内で得られるデータだけでなく、日常の検索ワードや、位置情報などを利用することができます。特に、初めて訪れたお客様でも、他のサービスのデータがあれば、レコメンドしていけるようなことも可能です。
  4. 私たちはこれからユーザの皆様により高い価値を提供しつづけていくために、データをもっと集め、活用し、サービスの改善を行うサイクルを回していきたいと考えております。
  5. サービス側の実装が大変 ログを落とすというI/Fだけを提供していたが、落としたいログは大量にあった パラメータを引き回すのが大変だった -> 各アプリでラッパーが作られていた ロガーに変更があるとラッパーへの反映が必要になる サービス側のスピード感が損なわれてしまう
  6. ログを落とすタイミングがサービスにより異なる(許可しているため) うちでは、各Viewの表示・クリックを取っている ニュースの記事やショッピングの商品などが実際に表示されたことを取りたい。 でも、Viewのタイミングがサービスによりバラバラになっていました。 これだと、横断的に表示とクリックのログを使うことは難しいでしょう。
  7. 自動化のためにSDKが知らなければならないこと ・いつロギングするのか ・なにをロギングするのか ・どうロギングするのか
  8. あるオブジェクトに任意のkey, valueを関連付けることができる
  9. 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);}
  10. subViewを走査し、パラメータを持つロギング対象のview一覧を取得します。 それらの座標をWindow座標に変換し、領域内にあることを判定します。
  11. イベントにロギング処理を直接実装できれば サービス側にロギング処理を叩いてもらう必要あり フックして、サービスの処理の裏にロギング処理を追加
  12. イベントにロギング処理を直接実装できれば サービス側にロギング処理を叩いてもらう必要あり フックして、サービスの処理の裏にロギング処理を追加
  13. 工夫すれば、logger.startだけで沢山の情報を自動取得できます。
  14. 工夫すれば、logger.startだけで沢山の情報を自動取得できます。
  15. subViewを走査し、パラメータを持つロギング対象のview一覧を取得します。 それらの座標をWindow座標に変換し、領域内にあることを判定します。
  16. subViewを走査し、パラメータを持つロギング対象のview一覧を取得します。 それらの座標をWindow座標に変換し、領域内にあることを判定します。
  17. subViewを走査し、パラメータを持つロギング対象のview一覧を取得します。 それらの座標をWindow座標に変換し、領域内にあることを判定します。
  18. subViewを走査し、パラメータを持つロギング対象のview一覧を取得します。 それらの座標をWindow座標に変換し、領域内にあることを判定します。
  19. subViewを走査し、パラメータを持つロギング対象のview一覧を取得します。 それらの座標をWindow座標に変換し、領域内にあることを判定します。
  20. subViewを走査し、パラメータを持つロギング対象のview一覧を取得します。 それらの座標をWindow座標に変換し、領域内にあることを判定します。
  21. アプリのViewImpsは簡単に取れるので、是非取りましょう