Slide 1

Slide 1 text

集計屋さんからの「前向き」な脱却 アナリストとしての立場でやったこと 第3回 データアーキテクト(データ整備人)を”前向きに”考える会 2020/5/14 SMN株式会社 長岡 彰平

Slide 2

Slide 2 text

所属会社紹介 SMN株式会社 ソニーグループのマーケティング・テクノロジー会社 広告配信DSP「Logicad」をはじめ マーケティングに関する様々なソリューションを展開 https://www.so-netmedia.jp/

Slide 3

Slide 3 text

自己紹介 名前 長岡 彰平 (twitter: @nyangao1212) 略歴 2012年 ソニー入社 民生用カメラレンズの光学設計部署に配属 主に歩留シミュレーションや工場のデータ解析を担当 2016年 社内募集でSMN株式会社に異動 ⇒ データマイニング課でアナリストとして働く 免責事項 本資料はあくまで個人の見解であり、所属組織の公式的な見解ではありません

Slide 4

Slide 4 text

メンバー アナリストで構成 自分も含めCS系エンジニア出身者はいない 主な業務内容 Logicadの改善・企画に関する分析 意思決定サポート 要望に応じたデータ集計・加工 データマイニング課(dm課) 紹介 アナリストとしての本業では無いが業務としては存在 ⇒本資料では「集計屋」と呼称 アナリストとしての役割 ??? 以降、データマイニング課の「集計屋」業務に 関する取り組みについてお話します

Slide 5

Slide 5 text

アジェンダ ●「集計屋」の役割 ●「集計屋」を続けた結果起きたこと ●「集計屋」から脱却するためにやったこと ● まとめ・反省

Slide 6

Slide 6 text

「集計屋」の役割

Slide 7

Slide 7 text

ネット広告ビジネスフロー上の「集計屋」の立ち位置 配信ログ 企画 技術 R&D 営業・運用 広告主 ad 商談 配信設定 戦略立案 要件定義 配信制御 機械学習 Hadoop基盤構築 「集計屋」はビジネスフローの 本流には登場しないが・・ 集計屋

Slide 8

Slide 8 text

ネット広告ビジネスフロー上の「集計屋」の立ち位置 配信ログ 企画 技術 R&D 営業・運用 広告主 ad 間接的な部分では需要がある 集計屋 SQL A広告主の〇月×日分の 配信ログ出して 新商材の売上を週次で 見たい 媒体側で〇〇の変更があっ たから影響度を見たい

Slide 9

Slide 9 text

まあ、他に対応できる部署も無いし、 大した手間じゃないからやるか dm課

Slide 10

Slide 10 text

気が付いたらこうなっていた 集計依頼増える 分析工数逼迫 アナリストの作業者化 他部署からの「彼らは集 計屋だ」という認識強化 アナリストに戻るために「集計屋」から脱却することを決意 ・・とはいえ、分析と集計は表裏一体 集計業務を全て廃止することは現実的ではない

Slide 11

Slide 11 text

アナリスト視点で集計業務を整理 分析が介在 する余地 スケール アナリストとして 注力すべき領域 他部署の サポート 無数の小タスク 大 小 大 小 時間かけても無駄 そもそも手を付けたら負け 小タスクの積み上げで業務負荷が上がっていた ⇒ この領域を効率化することに 目指すべきはここ! ここの対応で 疲弊・・

Slide 12

Slide 12 text

「無数の小タスク」への対応 ケース1: 報告系 ある程度形式が決まっていて、 依頼に対してデータさえ出力すれば対応が完了するケース ケース2: そういう業務フローだから・・系 依頼をトリガーにして、集計を含め複数の作業が発生するケース 結果を出力するだけでは業務が完了しない 大枠として下記2種類に分けられた

Slide 13

Slide 13 text

集計屋からの脱却 ケース1「報告系」

Slide 14

Slide 14 text

ケース1「報告系」 Hadoop 依頼者 dm課 GUI + SQL 市販統計解析ソフト SQL メール csv csv csv 特徴 ・都度依頼者から集計値を求められる ・ある程度型が決まっているが、WHERE句の条件等のパラメータは毎回異なる やろうとしたこと ・頻出パターンの定型化&自動化 A社のログ ほしい

Slide 15

Slide 15 text

ケース1「報告系」 課題 ・自動化以前に何をやっているかよくわからない処理が多数存在 やったこと 「集計を1回のSQLで済ませる」ように書き直した ・マスターデータをHadoop環境にもコピーしてもらった ⇒ ログデータとマスターデータをJOINできるように ・SQLを真面目に勉強した ・環境下で使える関数を一通り調べた ・WITH句を使うようにした ・JOIN の結合条件を工夫した ・簡単な行間比較が書けるようになった ・WINDOW関数 ・同じtable同士のJOIN イメージ図 市販統計解析ソフト

Slide 16

Slide 16 text

ケース1「報告系」 依頼者 市販統計解析ソフト 課題 ・依頼者~Hadoopをつなぐインターフェースの欠如 扱えない Hadoop 定型1 定型2 定型3 パラメータ SQL 出力 何とか定型化はできたが・・

Slide 17

Slide 17 text

ローカルPC ケース1「報告系」 課題 ・pythonからHadoopへの繋ぎ方がわからない ・ローカルPCの電源切れない ・その他わからないことが多すぎる Hadoop Google Sheets ? 依頼者 今流行りのpythonとやらを使ってGoogle Sheetsの中身を読み込めたぞ! これでインターフェースが作れる! あれ、でもどうやってHadoopにSQL投げれば良いの・・? dm課 ?

Slide 18

Slide 18 text

エンジニアに相談してみた やってもらったこと ・R&Dチームのpython環境を使わせてもらった 彼らが開発した便利ライブラリも使わせてもらった ・python勉強会を定期的に開催してくれた 我々がやったこと ・該当業務を自動すべくpythonでコードを書いた 奇特なR&Dチームの方が助けてくれた

Slide 19

Slide 19 text

分析用サーバー ケース1「報告系」 ・・ 解決!! Hadoop 依頼者 Google Sheets Google Forms SQL フォーム 入力 import hadoop_tools import gsuite_tools ・ ・ automate_task.py 最終的にこうなった 該当業務を完全に自動化することができた 意外なことに依頼の総量は自動化後増えた (今までは遠慮?していた依頼者がいたのかもしれない)

Slide 20

Slide 20 text

集計屋からの脱却 ケース2「そういう業務フローだから・・」

Slide 21

Slide 21 text

ケース2「そういう業務フローだから・・」 特徴 ・依頼をトリガーにして、集計を含め複数の作業が発生する ・もはや集計依頼ですらない Hadoop DB 例 設定画面 課題 多いので次ページ以降に a社の設定を Aに変えて 1:依頼 2:SQL 3:集計結果 4: 集計結果を登録 5: バッチ処理 6: DB に反映されたか見に行く 7: DB反映後 完了連絡 依頼者 dm課

Slide 22

Slide 22 text

ケース2「そういう業務フローだから・・」 課題1 DBへの反映状況を都度確認する煩雑さ Hadoop DB 設定画面 6: DB に反映されたか見に行く 依頼者 まだかな・・ dm課

Slide 23

Slide 23 text

ケース2「そういう業務フローだから・・」 課題2 集計クエリが重い SELECT hoge_id FROM 1日100億レコード超の巨大table WHERE それなりに長い期間 ・ ・ ・

Slide 24

Slide 24 text

ケース2「そういう業務フローだから・・」 課題3 パターンが多い 設定A 設定B 設定Y 設定Z ・ ・

Slide 25

Slide 25 text

ケース2「そういう業務フローだから・・」 課題4 フォーマットが悪い ⇔ 依頼が雑 の悪循環 ※誇張してます あくまでイメージです 依頼内容をスプレッドシートで管理していたが、 フォーマットとして上手く機能せず、依頼内容も日々亜種が生まれる状況

Slide 26

Slide 26 text

ケース2「そういう業務フローだから・・」 課題5 改善したいけどわからないことだらけ Hadoop DB アナリスト これ、中身どうなって いるんだろ・・ こっちはもっと わからん・・ SQL書き直せばもう少し 処理軽くなるかな・・ 何から手を付 けよう・・

Slide 27

Slide 27 text

エンジニアに相談してみた やってもらったこと ・該当業務向けのアプリを開発してもらった ・仕様決め ・インターフェースとなるWeb画面の開発 ・内部の処理に関連する開発 我々がやったこと ・今までの作業内容をドキュメント化 ・要望出し ・SQL見直し ・応援 奇特な 分析基盤チームの方が助けてくれた

Slide 28

Slide 28 text

ケース③「そういう業務フローだから・・」 解決! 依頼者 Hadoop DB App シンプルかつ イケてるUI 中間テーブル処理を挟んで クエリ負荷軽減 入力に応じて条件分岐 DB登録完了後自動通知 dm課 アドホックにSQLを書 く必要がある場合のみ 作業発生 最終的にこうなった 作業頻度が劇的に減った 依頼者にアンケートをとったところ 「フローがわかりやすくなった」と肯定的な意見多数

Slide 29

Slide 29 text

ケース③「そういう業務フローだから・・」 懺悔 局所的な効率化 自分で手を付けられそうな部分に関して は局所的な効率化を進めていた パターンEとGの一部の工程は python 使って効率化できそうだぞ! 結果的に処理が複雑化 アプリの仕様決めが難航・・ もっと早く相談するべきだった

Slide 30

Slide 30 text

まとめ

Slide 31

Slide 31 text

まとめ ■課題 アナリストに集計依頼が殺到し、 本来の分析業務に時間を割けない状況に陥った ■やったこと 自由度の小さい集計業務の効率化を進めた ■障壁 自身の技術的なスキル不足 ■突破口 エンジニア達の協力

Slide 32

Slide 32 text

まとめ 続き ■結果 膨大な時間を節約することができた ⇒少しずつ分析寄りの業務で成果を出せるようになってきた 集計依頼者から見ても、データへアクセスしやすくなり 活用頻度が向上した メンバーの技術スキルが向上した

Slide 33

Slide 33 text

とはいえ・・ 何故このような状況に陥ったのかは反省の余地がある 教訓①自分達だけで解決しようとしてはいけない 教訓②でも自身のスキルを伸ばすことも大事 教訓③早めに手を打つ そもそもアナリストとしての成果が認められていれば こんなことにはなっていないのでは? という思いもある ⇒ 引き続き頑張ります

Slide 34

Slide 34 text

ご清聴ありがとうございました