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
AIに安心して任せるためにTypeScriptで一意な型を作ろう
arfes0e2b3c
0
300
変化を楽しむエンジニアリング ~ いままでとこれから ~
murajun1978
0
610
JetBrainsのAI機能の紹介 #jjug
yusuke
0
160
Reactの歴史を振り返る
tutinoko
1
150
AI Agent 時代のソフトウェア開発を支える AWS Cloud Development Kit (CDK)
konokenj
6
1k
CLI ツールを Go ライブラリ として再実装する理由 / Why reimplement a CLI tool as a Go library
ktr_0731
3
830
AIのメモリー
watany
11
1.1k
オホーツクでコミュニティを立ち上げた理由―地方出身プログラマの挑戦 / TechRAMEN 2025 Conference
lemonade_37
1
390
Claude Code派?Gemini CLI派? みんなで比較LT会!_20250716
junholee
1
760
プロダクトという一杯を作る - プロダクトチームが味の責任を持つまでの煮込み奮闘記
hiliteeternal
0
320
Workers を定期実行する方法は一つじゃない
rokuosan
0
130
Git Sync を超える!OSS で実現する CDK Pull 型デプロイ / Deploying CDK with PipeCD in Pull-style
tkikuc
4
490
Featured
See All Featured
Unsuck your backbone
ammeep
671
58k
Being A Developer After 40
akosma
90
590k
Building Adaptive Systems
keathley
43
2.7k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
How to Think Like a Performance Engineer
csswizardry
25
1.8k
Rails Girls Zürich Keynote
gr2m
95
14k
The Invisible Side of Design
smashingmag
301
51k
Scaling GitHub
holman
461
140k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
720
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
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