Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ネットスーパーにおける商品在庫データのアプリケーション構築事例
Search
10xinc
November 11, 2022
Programming
7
10k
ネットスーパーにおける商品在庫データのアプリケーション構築事例
10xinc
November 11, 2022
Tweet
Share
More Decks by 10xinc
See All by 10xinc
プロダクト本部カジュアル面談資料
10xinc
0
64
dbtとAIエージェントを組み合わせて見えたデータ調査の新しい形
10xinc
7
2k
データエンジニアがこの先生きのこるには...?
10xinc
0
560
株式会社10X - Company Deck
10xinc
89
1.6M
dbt開発 with Claude Codeのためのガードレール設計
10xinc
2
4.2k
会社にデータエンジニアがいることでできるようになること
10xinc
10
4.9k
アセスメントで紐解く、10Xのデータマネジメントの軌跡
10xinc
2
870
スーパーマーケットのこれまでとこれから
10xinc
6
12k
データプロダクト開発の歩み
10xinc
5
5k
Other Decks in Programming
See All in Programming
Java_プロセスのメモリ監視の落とし穴_NMT_で見抜けない_glibc_キャッシュ問題_.pdf
ntt_dsol_java
0
150
オフライン対応!Flutterアプリに全文検索エンジンを実装する @FlutterKaigi2025
itsmedreamwalker
2
190
Phronetic Team with AI - Agile Japan 2025 closing
hiranabe
2
550
Private APIの呼び出し方
kishikawakatsumi
3
860
チーム開発の “地ならし"
konifar
7
4k
2026年向け会社紹介資料
misu
0
160
Kotlin + Power-Assert 言語組み込みならではのAssertion Library採用と運用ベストプラクティス by Kazuki Matsuda/Gen-AX
kazukima
0
110
高単価案件で働くための心構え
nullnull
0
130
複数チーム並行開発下でのコード移行アプローチ ~手動 Codemod から「生成AI 活用」への進化
andpad
0
150
問題の見方を変える「システム思考」超入門
panda_program
0
200
AI駆動開発ライフサイクル(AI-DLC)のホワイトペーパーを解説
swxhariu5
0
690
TVerのWeb内製化 - 開発スピードと品質を両立させるまでの道のり
techtver
PRO
1
380
Featured
See All Featured
Building Applications with DynamoDB
mza
96
6.7k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.3k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
2.9k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
118
20k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Speed Design
sergeychernyshev
32
1.2k
Why Our Code Smells
bkeepers
PRO
340
57k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Transcript
©10X, Inc. All Rights Reserved. ネットスーパーにおける商品在庫データのア プリケーション構築事例 データビジネスにおける dbtの活用事例 〜Ubie、LayerX、10X〜 株式会社10X 瀧本晋也
1
©10X, Inc. All Rights Reserved. 2 今日話すこと ドメイン駆動設計を参考に レイヤードアーキテクチャを設計し テストやCI等の工夫をしている話
©10X, Inc. All Rights Reserved. 自己紹介 3 所属: 株式会社10X 氏名: 瀧本 晋也
職種: データプロダクトエンジニア 居住: 山梨 Twitter: @takimo 最近はTokyo dbt Meetupのオーガナイザーを やってます
None
None
©10X, Inc. All Rights Reserved. 6 DWH構築以外にもdbtを使って 商品在庫データを作ってます
©10X, Inc. All Rights Reserved. なぜ商品在庫データを作る必要があるのか? 7 通常EC 店舗型ネットスーパー
品揃え 数十〜数百 数万点 在庫数の 管理 倉庫の入庫数と販売数で管理が可 能 基本的に日次での残在庫数等は数値管 理していない場合が多い(生鮮系や賞味 期限が短いものは売り切りが基本) 金額 あまり変わることはない チラシ価格や特売等、日単位で同一商品 で変化する • 日々変化する「金額」と取り扱う「商品数の多さ」から厳密な在庫数確認が困難で、人的な対応も限界 がある • Stailerでは店頭在庫数を自動で推定し、ネットスーパーの在庫データとして提供している
©10X, Inc. All Rights Reserved. 商品在庫データの作成プロセス 8
©10X, Inc. All Rights Reserved. 9 ここで 商品在庫データの 歴史を振り返ってみる
©10X, Inc. All Rights Reserved. 2021年前半 爆誕期 • 社内ではDWHの構築のためにdbtの導入が進んでおり、 dbtを使える人が増加 •
外部パートナーから提供されるデータから商品在庫データを生成する必要性が出る • データ内容の理解の難しさや変換処理の設計難易度 、プロダクトエンジニアのリソース的な観 点もあり、「データ変換処理」をdbtで実装するためのチーム が組成された • ファーストリリースがされる🎉 10 商品在庫データの歴史
©10X, Inc. All Rights Reserved. 2021年後半 拡大期 • 嬉しいことに様々なパートナーにお声をかけて頂き、 dbtを使った商品在庫データの生成 パイプ
ラインは増えた • パートナーごとに保有しているデータ仕様が異なりがあったが、開発ガイドライン(初期)を策定 し、一定の変換対応ができればサービスを提供できるようになっていた • dbtを採用した事により開発に携われる人の採用職種の幅を出すことができ、機動的に開発 チームを増員していくことが出来た 11 商品在庫データの歴史
©10X, Inc. All Rights Reserved. 2022年前半 戦乱期 • 個社毎に作ったパイプラインにも問題がで始める 🔥 •
複雑に入り組むリネージ • 同じような処理ロジックが様々なところに&下流に様々なロジックが混在しやすくなってしまって いた • また属人的に開発をする必要が高く、キャッチアップコストも高い状態に • 修正をしたりする開発難易度や品質確認のためのQA工数も高くなってしまった ◦ リネージが複雑でデータの流れを追うのが大変だったり、抽象度が荒いので様々なテーブルの確認が必要等 12 商品在庫データの歴史
©10X, Inc. All Rights Reserved. 13 何を改善すべきか 整理を始めた
©10X, Inc. All Rights Reserved. 課題の整理と理想へのギャップからのアクション 14 何を改善すべきか整理を始めた
©10X, Inc. All Rights Reserved. 15 ※知ろうとしてなかったわけではないですよ もっと業務を理解しないと 最適なモデリングの 抽象度、粒度を
より良い設計が出来ない!
©10X, Inc. All Rights Reserved. 16 パートナーのエキスパートな人の話しも聞きつつ 「そうだ現場に行こう」
©10X, Inc. All Rights Reserved. 実際にパートナーの店舗に伺って業務してみたり 17 アーキテクチャの共通化
©10X, Inc. All Rights Reserved. 配送やピッキング等すべての工程を知識をアップデート 18 アーキテクチャの共通化
©10X, Inc. All Rights Reserved. どういうモデリング、アーキテクチャにすべきか検討 • DRY(SSOT)を実現し、計算ロジックをテスト出来る状態にすることが必要命題 •
様々な開発手法のアプローチやモデリングを検討した ◦ dbtのベスプラ(staging, mart) ◦ ディメンジョンモデリング(fact, dimension) ◦ 他の開発手法であるMVCやDDD(ドメイン駆動設計)等 • 最終的にドメイン駆動設計の思考に近いアプローチが良さそうだと判断 19 アーキテクチャの共通化
©10X, Inc. All Rights Reserved. ドメイン駆動設計とは? • このスライドだけではぱっと説明するのは自分には無理だなと感じつつ。。 •
以下のようなアプローチで解決をしようとするものです ◦ 解決したい関心事(ビジネスや業務)を「ドメイン」という粒度で捉える ◦ ただし「ドメイン」を整理するためにはドメインの深い知識と理解が必要 ◦ 「ドメイン」同士の複雑性をオブジェクト指向や制約でコントロールする • 詳しく勉強したい人は書籍を! 20 アーキテクチャの共通化
©10X, Inc. All Rights Reserved. 21 ドメイン駆動設計の思想を取り込み レイヤードアーキテクチャ化する
©10X, Inc. All Rights Reserved. リファインしたアーキテクチャ 22 アーキテクチャの共通化
©10X, Inc. All Rights Reserved. なぜドメイン駆動設計が良いと思ったのか • 大まかな設計方針として「データを一定の粒度に一度まとめる(SSOT)」、その後利用する といった考えは持っていた •
DDDの中でドメイン(モデル)をまたぐ複雑な処理(今回の実装でいうと計算処理)はドメイ ンサービスとして切り出すような思想になっている • 実際のパイプラインでもこの計算処理の部分が複雑になりやすく、この処理を切り出し、テ ストできるようにしたかったのでやりたいことと思想がマッチした 23 アーキテクチャの共通化
©10X, Inc. All Rights Reserved. 5つのレイヤリングに役割を区分しテストで品質を保証 24 アーキテクチャの共通化 ソースデータ
・このデータを様々な ところから利用しない ゲートウェイ ・ソースデータをクレン ジングする処理層 ・データレイクとの入り 口を意識した名前 ドメインモデル ・ビジネスドメインを一 定の粒度で集約する ・ドメインモデル同士 は依存させない ドメインサービス ・ドメインモデル同士 を利用して複雑な処 理をするための処理 層 ・必ず実装する必要 はない アプリケーション ・最終的なユースケー スに沿った結合処理 等を行う
©10X, Inc. All Rights Reserved. 25 各レイヤーの責務を担保するため テストやCI等の工夫をしている
©10X, Inc. All Rights Reserved. not_emptyテスト • ソースデータが日付シャーディングで保存されているようなデータに対して •
実行日に所定のシャーディングがあるのか簡単にチェックできるカスタムジェネリックテスト 26 テストによる責務や品質の保証をする
©10X, Inc. All Rights Reserved. スキーマテスト(ジェネリックテスト) • dbt標準で提供されているnot_nullや uniqueを利用 •
追加で内包されているデータ型をチェック するための型チェック用のカスタムテスト も実装 27 テストによる責務や品質の保証をする
©10X, Inc. All Rights Reserved. ロジックテスト(スタブテスト) 28 テストによる責務や品質の保証をする
©10X, Inc. All Rights Reserved. datamocktoolの設定方法 29
©10X, Inc. All Rights Reserved. スプレッドシートのデータをもとにスタブテスト用の データ(SQL)に変換するツールを実装 30 テストによる責務や品質の保証をする
©10X, Inc. All Rights Reserved. リグレッションテスト用のチェッククエリマクロ • 本番の特定のテーブルの日次毎のデータ量推移と開発で作ったものを比較可能
• 自動的に標準偏差等も計算してくれる 31 テストによる責務や品質の保証をする
©10X, Inc. All Rights Reserved. まだまだ道半ばです • ネットスーパーを運営するためにはまだまだ様々なことが必要です •
今日はその難しさの中の一部分を紹介させてもらいました • 本日は技術方面の話が中心でしたが、実際は先方と仕様を調整したり、データプロダクトの企 画や仕様策定といった業務をリードする データプロダクトマネージャーと一緒に仕事をしていま す • 是非ご興味ある方はカジュアル面談等お気軽にお尋ねください 32 まとめ
None