Slide 1

Slide 1 text

小売DXプロダクトを2ヶ月で立ち 上げるデータエンジニアリング AI事業本部 DX本部 バックエンドエンジニア 中村親里 1

Slide 2

Slide 2 text

中村 親里 (なかむら ちさと) 2017年新卒入社 AI事業本部DX本部 バックエンドエンジニア #絢瀬絵里推しのラブライバー #リアル脱出ゲーム #ポケモン

Slide 3

Slide 3 text

アジェンダ 1. DX本部について 2. 2ヶ月でDMPを立ち上げるデータエンジニアリング a. DSとSEのコラボレーション b. DMP基盤の実装 3. DX本部が目指す未来

Slide 4

Slide 4 text

1. DX本部について 4

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

2. 2ヶ月でDMPを立ち上げる データエンジニアリング 9

Slide 10

Slide 10 text

2.1. DSとSEのコラボレーション 10

Slide 11

Slide 11 text

DMP (Data Management Platform)とは データを価値あるもの (使用できる状態) にする     https://boxil.jp/mag/a2798/

Slide 12

Slide 12 text

当時の状況 ● 人員 ○ ソフトウェアエンジニア(SE): 2人 (うち1人がPdM兼) ○ データサイエンティスト(DS): 2人 ● DMP完成までの期限: 2ヶ月 ● 肝心のデータは来ていないものもたくさん... 圧倒的に人と時間が足りない!!


Slide 13

Slide 13 text

SE2人で作るのは無理... データサイエンティストと一緒に作れないか? データサイエンティストとソフトウェア エンジニアが得意なことを生かして相乗 効果を生み出せないか

Slide 14

Slide 14 text

データ基盤の整備ですべきこと ● インフラの整備 ● 各所に散らばったデータの結合のための設計・実装 ● サービスログの設計・収集のための実装 ● データ生成過程への介入

Slide 15

Slide 15 text

データ基盤の整備ですべきこと ● インフラの整備 ● 各所に散らばったデータの結合のための設計・実装 ● サービスログの設計・収集のための実装 ● データ生成過程への介入 データサイエンティストを巻き込める部分

Slide 16

Slide 16 text

DSと一緒に設計しよう! ● 最終的にデータ基盤を一番使うのはDS ● 理想形を持っているはず ● 理想形とその実装コストのバランスを議論しながら設計する ○ 理想形はどう実装すれば実現可能なのか? ○ どういうポイントは妥協できる / できないのか?

Slide 17

Slide 17 text

データ基盤実装のDSとSEのコラボレーション DSとSEの実装における 相乗効果とは...? インフラ側の工夫次第で、 データエンジニアリングの実装ハードルを下げられる

Slide 18

Slide 18 text

実装のハードルを下げる為のインフラの工夫 例: ● ETLを足すときに実装箇所や命名規則が 明確なコード設計 ● Infrastructure as Code(IaC) ○ terraform, digdag ○ コードで管理することで真似しやすくレビューしやすくする ● すぐ壊せる ○ s3, glue data catalog, redshift spectrum 誰が実装しても負債にならないこと

Slide 19

Slide 19 text

2.2. DMP基盤の実装 19

Slide 20

Slide 20 text

クエリの自動生成機能 ビジネスの人が条件を入力、それを自動でクエリに https://plazma.red/user_engagement/howto/0005

Slide 21

Slide 21 text

クエリ自動生成機能の要件 ● 画面から条件を入力できる ● 入力情報からクエリが生成できる ● 条件が登録されたらクエリが即時走るように ● 指定した期間でクエリが定期実行されるように ● 実行が失敗したらメールで通知できるように 状態(ステータス)を持つworkerの作成

Slide 22

Slide 22 text

Workerの設計: ステータスフロー

Slide 23

Slide 23 text

Workerの設計: JOBフロー akka streamsで実装 ※実装はイメージです

Slide 24

Slide 24 text

クエリの自動生成 ● 複数の演算子 ○ 時間に関する演算子 (固定日時 / 変動日時) ○ 複数の値が入りうる演算子 ○ 数値?日時?文字列? ● 複数の結合条件 ○ AND/OR/NOT ● これらの条件をどうDBに保存する? どうオブジェクト指向として表現する? 演算子の例 equal (=) greater than (>) less than (<) greater than or equal to (>=) less than or equal to (<=) not equal to (!=) between is multiple is not multiple in the past of days in the past of months in between the past of days in between the past of manth

Slide 25

Slide 25 text

みんなで協力できた ● 時間が足りない ○ => いろんな人にに助けてもらった ● 誰も何も文句言わず、真摯に対応してくれた ● 設計変更等があれば、すぐに共有 => ZOOM 協力してくださった皆さんに感謝󰢛

Slide 26

Slide 26 text

実装を間に合わせるために ● DSやPMを巻き込こんで何をやらないかの議論 ○ 基本オーバースペックになりがち ○ 限られた時間の中で最低限必要な機能のみの開発に集中する ■ 全商品からの検索機能はサボった ■ DSチームにお願いして商品数を制限し、フロント側で検索できるように ■ backupプランも用意

Slide 27

Slide 27 text

それでも技術的チャレンジを ● 複雑めなakka stream ● React ● GraphQL ● クエリの自動生成 ● workerの作成

Slide 28

Slide 28 text

3. DX本部が目指す未来

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

採用強化中です! ● 技術的チャレンジをもっとしたい方 ● 社会をより良いものにしたい方 ● 社会貢献に繋がる仕事をしたい方 ● ユーザ体験をより良いものにしたい方

Slide 32

Slide 32 text

一緒に日本の小売を再発明し てくれる方! お待ちしております!!