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
pistaman
November 02, 2022
Programming
0
1.1k
ポイント管理システムの改善について
2022/10/13に行われたSTORESとMGReの共同勉強会で登壇した際の資料
https://hey.connpass.com/event/261576/
pistaman
November 02, 2022
Tweet
Share
Other Decks in Programming
See All in Programming
エンジニア向け採用ピッチ資料
inusan
0
180
プロダクト志向ってなんなんだろうね
righttouch
PRO
0
180
『自分のデータだけ見せたい!』を叶える──Laravel × Casbin で複雑権限をスッキリ解きほぐす 25 分
akitotsukahara
2
620
LT 2025-06-30: プロダクトエンジニアの役割
yamamotok
0
700
datadog dash 2025 LLM observability for reliability and stability
ivry_presentationmaterials
0
450
初学者でも今すぐできる、Claude Codeの生産性を10倍上げるTips
s4yuba
14
9.6k
設計やレビューに悩んでいるPHPerに贈る、クリーンなオブジェクト設計の指針たち
panda_program
6
1.9k
技術同人誌をMCP Serverにしてみた
74th
1
610
GitHub Copilot and GitHub Codespaces Hands-on
ymd65536
2
140
Modern Angular with Signals and Signal Store:New Rules for Your Architecture @enterJS Advanced Angular Day 2025
manfredsteyer
PRO
0
190
Flutterで備える!Accessibility Nutrition Labels完全ガイド
yuukiw00w
0
150
XP, Testing and ninja testing
m_seki
3
230
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Documentation Writing (for coders)
carmenintech
72
4.9k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Being A Developer After 40
akosma
90
590k
Embracing the Ebb and Flow
colly
86
4.7k
Into the Great Unknown - MozCon
thekraken
39
1.9k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
730
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
Transcript
テクノロジー部門CRM本部 バックエンドエンジニア 西川輝 ポイント管理システムの改善について
自己紹介 2 • 西川輝 • バックエンドエンジニア • STORES 株式会社 ◦
EC(2019/04 ~ 2019/11) ◦ レジ(2019/11 ~ 2022/05) ◦ ブランドアプリ(2022/05 ~) • STORES チョットワカル
目次 3 1. STORES ブランドアプリ の概要 2. 機能追加による負債の蓄積 3. ポイント管理の仕組みの改善について
4. まとめ
STORES ブランドアプリ について
STORES ブランドアプリ の概要 5 2021年12月、ショップフォース株式会社がヘイ株式会社にジョイン。 2022年7月7日、既存サービスを「STORES ブランドアプリ」としてリブランディングしリリース。
STORES ブランドアプリ の概要 6 STORES ブランドアプリ でできること - 顧客管理・利用分析 -
会員属性 - 性別、年齢、誕生日など - ポイント数 - 来店状況 - POSレジ、ECサイト連携 - マーケティングオートメーション - Push通知配信 - クーポン機能
アプリ画面 7 購入時にスタンプやポイントを貯めることが可能
管理画面 8 アプリ登録を起点に会員情報を生成
管理画面 9 POSレジ連携により、購買データと の紐付けも可能
管理画面 10 曜日別・時間帯別の利用状況が店舗 ごとに把握可能
度重なる改修による負債化
STORES ブランドアプリ の機能 12 STORES ブランドアプリ でできること - 顧客管理・利用分析 -
会員属性 - 性別、年齢、誕生日など - ポイント数 - 来店状況 - POSレジ、ECサイト連携 - マーケティングオートメーション - Push通知配信 - クーポン機能
STORES ブランドアプリ の機能 13 STORES ブランドアプリ でできること - 顧客管理・利用分析 -
会員属性 - 性別、年齢、誕生日など - ポイント数-> チェックイン - 来店状況-> チェックイン - POSレジ、ECサイト連携-> チェックイン - マーケティングオートメーション - Push通知配信 - クーポン機能-> チェックイン
チェックイン = ユーザー起因のイベント情報の全て チェックインとは 14
チェックインとは 元々は... - 来店情報 - 来店日 - 利用店舗 - 獲得スタンプ数
- 諸説あり 15
チェックインとは 機能追加後... - 来店情報 - 来店日 - 利用店舗 - 獲得スタンプ数
- ポイントシステムの導入 new - ポイントの取得、利用、失効などの管理が必要に - イベントログの保存 new - アプリダウンロード - SNS共有 - POSレジ、ECサイト連携 new - 購入金額 - 購入商品ID 16
チェックインとは チェックインの課題点 - イベントログや外部連携情報などが追加されたことにより、分析クエリが複雑化 - パフォーマンス悪化 - データ量も増大 - 各カラムの状態によってデータの意味が変わる
- キャッチアップコストが高い - 知らずに改修すると分析結果が変わってしまう - ポイントの履歴が追えない - チェックインテーブルにはポイント取得履歴しか残っていない 17
チェックインとは チェックインの課題点 - イベントログや外部連携情報などが追加されたことにより、検索条件が複雑化 - パフォーマンス悪化 - データ量も増大 - 各カラムの状態によってデータの意味が変わる
- キャッチアップコストが高い - 知らずに改修すると分析結果が変わってしまう - ポイントの履歴が追えない - チェックインテーブルにはポイント取得履歴しか残っていない 18
ポイントの履歴が追えない
ポイントの履歴が追えない 20 - ポイントの履歴とは - 取得 -> 購入、来店時のポイント付与 - 利用
-> クーポン利用時に1ポイント1円等で会計から割引 - 失効 -> 退会、期限切れ - チェックインテーブルにはポイント取得情報しか残っていない - アプリケーション上で複数テーブルの情報を組み合わせて履歴を算出 - 退会の場合は物理削除しているため履歴が残らない
ポイントの履歴が追えない 21 日付 ポイント 2022-10-01 14:00 5pt 2022-10-02 16:00 10pt
checkins(取得) 日付 ポイント 2022-10-09 18:00 10pt .. .. coupons(利用) 有効期間 7 .. shop_settings(失効)
ポイントの履歴が追えない 22 日付 ポイント 失効期限 2022-10-01 14:00 +5pt(取得) 2022-10-09 00:00
2022-10-02 16:00 +10pt(取得) 2022-10-10 00:00 2022-10-09 00:00 -5pt(失効) - 2022-10-09 18:00 -10pt(利用) - 日付 ポイント 2022-10-01 14:00 5pt 2022-10-02 16:00 10pt checkins(取得) 日付 ポイント 2022-10-09 18:00 10pt .. .. coupons(利用) 有効期間 7 .. shop_settings(失効) アプリケーション側で全データをソートして計算
ポイント管理の仕組みを改善
ポイント管理の仕組みを改善 24 - ポイント履歴用のテーブルを作成 - アプリケーションで作っていたデータをそのままDBへ - 取得、利用、失効イベントごとにレコードを追加 日付 ポイント
失効期限 2022-10-01 14:00 +5pt(取得) 2022-10-09 00:00 2022-10-02 16:00 +10pt(取得) 2022-10-10 00:00 2022-10-09 00:00 -5pt(失効) - 2022-10-09 18:00 -10pt(利用) - point_transactions
ポイント管理の仕組みを改善 25 改善の結果 - ポイントの履歴が残るように - パフォーマンスが向上 - DB側で有効ポイントの計算が可能に -
チェックインからポイントに関するユースケースを剥がせた - 責務が明確に - 可読性が向上
まとめ 26 - 目的の違うものを一つにまとめない - 機能追加をする際は立ち止まって考えてみる - アプリケーションの設計でもDB設計でも同じ - データ量を意識する
- 今後どのようなペースで増加するのか - マスターデータなのかトランザクションデータなのか - update より insert - 履歴が残らなくて問題ないか - 競合が発生しないか
27