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
11k
ネットスーパーにおける商品在庫データのアプリケーション構築事例
10xinc
November 11, 2022
Tweet
Share
More Decks by 10xinc
See All by 10xinc
ディメンショナルモデリングを支えるData Vaultについて
10xinc
1
130
プロダクト本部カジュアル面談資料
10xinc
0
240
dbtとAIエージェントを組み合わせて見えたデータ調査の新しい形
10xinc
7
2.5k
データエンジニアがこの先生きのこるには...?
10xinc
0
630
株式会社10X - Company Deck
10xinc
89
1.6M
dbt開発 with Claude Codeのためのガードレール設計
10xinc
2
6.2k
会社にデータエンジニアがいることでできるようになること
10xinc
11
6.7k
アセスメントで紐解く、10Xのデータマネジメントの軌跡
10xinc
2
2.1k
スーパーマーケットのこれまでとこれから
10xinc
6
12k
Other Decks in Programming
See All in Programming
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
180
PC-6001でPSG曲を鳴らすまでを全部NetBSD上の Makefile に押し込んでみた / osc2025hiroshima
tsutsui
0
200
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
440
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
670
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
4
1.1k
大規模Cloud Native環境におけるFalcoの運用
owlinux1000
0
240
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
10
1.5k
Vibe codingでおすすめの言語と開発手法
uyuki234
0
160
Patterns of Patterns
denyspoltorak
0
420
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
0
390
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
39
26k
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
610
Featured
See All Featured
End of SEO as We Know It (SMX Advanced Version)
ipullrank
2
3.9k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
130
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
0
410
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.1k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
44
Into the Great Unknown - MozCon
thekraken
40
2.2k
Amusing Abliteration
ianozsvald
0
84
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.5k
Heart Work Chapter 1 - Part 1
lfama
PRO
4
35k
Building an army of robots
kneath
306
46k
Navigating Weather and Climate Data
rabernat
0
66
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
115
100k
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