Slide 1

Slide 1 text

データパイプラインを作って改良する はじめてのデータ/アナリティクスエンジニアリング 2023-01-25 DS集会@VRChat 越境(@contraidiction29)

Slide 2

Slide 2 text

疑問:データってどこから来るの?

Slide 3

Slide 3 text

答え(1) : ⼈⼒データエンジニアリング ⼈⼒でもデータを提供することは可能だが、問題点が多い ● メールでエクセルファイルをやりとりし、最終的に統計結果として出す⼿法 ○ 官公庁のデータの⼀部は(多分)このやり⽅ ● 労⼒がかかりすぎ、エラーを招きやすいことなど、問題点は多い

Slide 4

Slide 4 text

⼈⼒はいやだ!もっとスマートにやりたい

Slide 5

Slide 5 text

こういう感じの図を⾒たことありますか?

Slide 6

Slide 6 text

答え(2):データパイプラインを構築する データパイプラインを構築できれば、⾃動的にデータを提供する仕組みができる ● データパイプライン ○ ざっくりいうと、データを⾃動で出す仕組み ○ ⼈⼒が排除され、⾃動で毎⽇データが最新のものに更新される ○ 前の図みたいなやつ ● データエンジニア‧アナリティクスエンジニアと呼ばれる⼈の仕事 ○ データパイプラインを作ったり ○ ユーザーの要望を聞きながら、変更を加えて⾼度化したりすること ● 今から話すのはそんな⼈たちの仕事の話

Slide 7

Slide 7 text

伝えたいこと ● 細かいことには踏み込まない ● 「こういう職業もあるんだよ」ということ ● データを利⽤していく中で、「あれ、この問題ってデータエンジニア/アナリ ティクスエンジニアの仕事じゃね?」となれればいいかも

Slide 8

Slide 8 text

⾃⼰紹介 ● 普段のお仕事 ○ アドテク系の企業に所属 ○ データプラットフォーム統括チームのマネジャー ○ データエンジニア‧アナリティクスエンジニア ● Snowflake‧dbt‧dagsterあたりが好き ● 東京在住 ● 「健常者エミュレータ事例集」の管理⼈ ○ ↑ググると出てくるので調べてみてね 越境 @contradiction29

Slide 9

Slide 9 text

話すこと概要 データエンジニア‧アナリティクスエンジニアのお仕事紹介みたいな感じ ● データエンジニアリングとは? ○ データエンジニアリングができていると何が嬉しいのか ○ データエンジニアリングの定義 ○ どんなお仕事 ● アナリティクスエンジニアリングとは? ○ アナリティクスエンジニアリングの定義 ○ アナリティクスエンジニアリングができていると何が嬉しいのか ○ どんなお仕事

Slide 10

Slide 10 text

注意事項 ● データエンジニアリングやアナリティクスエンジニアリングは⼈や企業に よって役割の認識がぶれやすい領域 ● ここで⽰されるのは個⼈の認識が多め

Slide 11

Slide 11 text

データエンジニアリングとは?:前提条件 データウェアハウスなどを使わなくてもデータの分析はできるが、ユースケースは限定的 ● 本番稼働中のデータベースに直接接続し、クエリを発⾏すればいい ○ サービス提供直後の段階など、データの価値があるかよくわからない段階ではよくやる ○ イメージ:RDSのインスタンスに対してEC2を経由してSSH接続→Sequel ACEでクエリ ● ⾊々⾟い部分はある ○ 分析の環境としてとっつきづらい ○ 本番稼働⽤アプリケーション向けデータベース(OLTP)は分析に向かない ■ ⼀般的に、OLTPはスキャン量の多いクエリに向いてない ■ 下⼿すると本番稼働中のサービスが落ちて機会損失に繋がる ○ アナリティクスエンジニアリングのプラクティス(後述)は適⽤できない

Slide 12

Slide 12 text

データエンジニアリングとは?:定義 とっつきづらさが出てきたらデータエンジニアリングの出番となる ● 定義 ○ Data engineering is the development, implementation, and maintenance of systems and processes that take in raw data and produce high-quality, consistent information that supports downstream use cases, such as analysis and machine learning. (※1) ● ものすごくざっくりまとめると: ○ データパイプライン=⽣データをインプット、high-qualityでconsistentなデータをアウト プットとするシステム ○ データパイプラインを開発し、維持していくのがデータエンジニアリング ○ そのデータパイプラインは下流での利⽤を前提とし、分析や機械学習に利⽤される ※1: Reis, Joe; Housley, Matt. Fundamentals of Data Engineering (English Edition) (p.23). O'Reilly Media. Kindle 版.

Slide 13

Slide 13 text

データエンジニアリングとは?:やること データエンジニアとしての仕事は幅広く、何をやるかは時と場合に依存する ● アーキテクト的な仕事 ○ データパイプラインの設計、要求‧要件定義〜技術選定 ○ アナリティクスエンジニア(後述)やデータアナリストに対する技術トレーニングの提供 ● DevOps、SRE的な仕事 ○ 権限管理 ○ 故障した場合の復旧 ○ GitHub Actions, CI/CD周り ● (狭義の)データエンジニア ○ データパイプラインを⽀える個々のパーツをコーディングして実装する

Slide 14

Slide 14 text

データエンジニアリングとは?:参考 こういうものを作ったりする

Slide 15

Slide 15 text

アナリティクスエンジニアリングとは?:定義 ⾃分以外のユーザーがデータを分析できるように、エンジニアリングの⼿段を使って意思決定をサポートする ● 定義 ○ Analytics engineers provide clean data sets to end users, modeling data in a way that empowers end users to answer their own questions. While a data analyst spends their time analyzing data, an analytics engineer spends their time transforming, testing, deploying, and documenting data. Analytics engineers apply software engineering best practices like version control and continuous integration to the analytics code base(※2) ● 分解すると... ○ ⽬的 ■ エンドユーザーの意思決定⽀援 ○ やること ■ データの変換(transform) ■ 品質テスト(testing) ■ デプロイ ■ ドキュメンテーションの作成 ※2: Carrol Claire, What is analytics engineering, https://www.getdbt.com/what-is-analytics-engineering

Slide 16

Slide 16 text

アナリティクスエンジニアリングとは?:ないことの⾟さ 思い当たることはないですか?アナリティクスエンジニアリングが不⾜しているかも... ● データの意味がわかんない ○ ドキュメンテーションがないため、何のデータかわからない。いつ誰が何のために作ったのか?このTreasure Dataの中 に⼊っているデータは何者? ○ リネージュが把握できず、データの由来が不明。このデータはどこから来た? ○ 同じようなデータが複数箇所に点在していて、どれが正しいのかわからない ○ 結果的にデータの利活⽤が進まない ● データが汚く、使えない ○ なぜかduplicateする主キー ○ ありえない値が⼊っている ● クエリが汚い ○ 読めない→意味わかんない このような状態を防ぐのがアナリティクスエンジニアリングの役⽬

Slide 17

Slide 17 text

アナリティクスエンジニアリングとは?:やること (※⼀例です) ● BIの構築 ○ ダッシュボードの要求‧要件定義、実装 ● テーブル作成‧変更 ○ VSCodeで.sqlファイルを開いて変更、コミットしてデプロイ(⼀例) ● データに関するドキュメントの作成、普及 ● dbtのテスト機能を利⽤したテスト作成 ● サーバーレス関数+Pythonによる⾃動化処理

Slide 18

Slide 18 text

補⾜:データエンジニアリングとアナリティクスエンジニアリングの境⽬ データエンジニアリングとアナリティクスエンジニアリングの境⽬は曖昧なもので、兼ねる場合もよくあり、解釈も⼈に よって異なるが、私的な⾒解を⽰す ● 共通点 ○ どちらも⽬的は「データを利⽤して、意思決定を⽀援するためのパイプラインを整える」こと ○ データの利活⽤を念頭に置く(べき)こと ● データエンジニアリング ○ インフラ寄り ○ 個々のテーブルやダッシュボードに依存しない共通要素に責任がある ○ プラットフォーマーとしてふるまう(楽天市場) ● アナリティクスエンジニアリング ○ 利活⽤より ○ 個々のテーブルやダッシュボードに責任を持つ ○ プラットフォームの利⽤者としてふるまう(楽天市場に出品している個々の店舗)

Slide 19

Slide 19 text

おわりに 個⼈的所感: ● データエンジニアリングは割と⼈⼝に膾炙してそう ● アナリティクスエンジニアリングをやる⼈は少なさそう ○ ⽇本での「アナリティクスエンジニア」の初求⼈は2019年だとか(⼀説) ○ ⼈⼝が少ない割に重要性は⾼い ○ この出来がデータ利活⽤の成否を決めうる こういう職業があるよ!ということが伝われば何よりです