Slide 1

Slide 1 text

テクノロジー部門CRM本部 バックエンドエンジニア 西川輝 ポイント管理システムの改善について

Slide 2

Slide 2 text

自己紹介 2 ● 西川輝 ● バックエンドエンジニア ● STORES 株式会社 ○ EC(2019/04 ~ 2019/11) ○ レジ(2019/11 ~ 2022/05) ○ ブランドアプリ(2022/05 ~) ● STORES チョットワカル

Slide 3

Slide 3 text

目次 3 1. STORES ブランドアプリ の概要 2. 機能追加による負債の蓄積 3. ポイント管理の仕組みの改善について 4. まとめ

Slide 4

Slide 4 text

STORES ブランドアプリ について

Slide 5

Slide 5 text

STORES ブランドアプリ の概要 5 2021年12月、ショップフォース株式会社がヘイ株式会社にジョイン。 2022年7月7日、既存サービスを「STORES ブランドアプリ」としてリブランディングしリリース。

Slide 6

Slide 6 text

STORES ブランドアプリ の概要 6 STORES ブランドアプリ でできること - 顧客管理・利用分析 - 会員属性 - 性別、年齢、誕生日など - ポイント数 - 来店状況 - POSレジ、ECサイト連携 - マーケティングオートメーション - Push通知配信 - クーポン機能

Slide 7

Slide 7 text

アプリ画面 7 購入時にスタンプやポイントを貯めることが可能

Slide 8

Slide 8 text

管理画面 8 アプリ登録を起点に会員情報を生成

Slide 9

Slide 9 text

管理画面 9 POSレジ連携により、購買データと の紐付けも可能

Slide 10

Slide 10 text

管理画面 10 曜日別・時間帯別の利用状況が店舗 ごとに把握可能

Slide 11

Slide 11 text

度重なる改修による負債化

Slide 12

Slide 12 text

STORES ブランドアプリ の機能 12 STORES ブランドアプリ でできること - 顧客管理・利用分析 - 会員属性 - 性別、年齢、誕生日など - ポイント数 - 来店状況 - POSレジ、ECサイト連携 - マーケティングオートメーション - Push通知配信 - クーポン機能

Slide 13

Slide 13 text

STORES ブランドアプリ の機能 13 STORES ブランドアプリ でできること - 顧客管理・利用分析 - 会員属性 - 性別、年齢、誕生日など - ポイント数-> チェックイン - 来店状況-> チェックイン - POSレジ、ECサイト連携-> チェックイン - マーケティングオートメーション - Push通知配信 - クーポン機能-> チェックイン

Slide 14

Slide 14 text

チェックイン = ユーザー起因のイベント情報の全て チェックインとは 14

Slide 15

Slide 15 text

チェックインとは 元々は... - 来店情報 - 来店日 - 利用店舗 - 獲得スタンプ数 - 諸説あり 15

Slide 16

Slide 16 text

チェックインとは 機能追加後... - 来店情報 - 来店日 - 利用店舗 - 獲得スタンプ数 - ポイントシステムの導入 new - ポイントの取得、利用、失効などの管理が必要に - イベントログの保存 new - アプリダウンロード - SNS共有 - POSレジ、ECサイト連携 new - 購入金額 - 購入商品ID 16

Slide 17

Slide 17 text

チェックインとは チェックインの課題点 - イベントログや外部連携情報などが追加されたことにより、分析クエリが複雑化 - パフォーマンス悪化 - データ量も増大 - 各カラムの状態によってデータの意味が変わる - キャッチアップコストが高い - 知らずに改修すると分析結果が変わってしまう - ポイントの履歴が追えない - チェックインテーブルにはポイント取得履歴しか残っていない 17

Slide 18

Slide 18 text

チェックインとは チェックインの課題点 - イベントログや外部連携情報などが追加されたことにより、検索条件が複雑化 - パフォーマンス悪化 - データ量も増大 - 各カラムの状態によってデータの意味が変わる - キャッチアップコストが高い - 知らずに改修すると分析結果が変わってしまう - ポイントの履歴が追えない - チェックインテーブルにはポイント取得履歴しか残っていない 18

Slide 19

Slide 19 text

ポイントの履歴が追えない

Slide 20

Slide 20 text

ポイントの履歴が追えない 20 - ポイントの履歴とは - 取得 -> 購入、来店時のポイント付与 - 利用 -> クーポン利用時に1ポイント1円等で会計から割引 - 失効 -> 退会、期限切れ - チェックインテーブルにはポイント取得情報しか残っていない - アプリケーション上で複数テーブルの情報を組み合わせて履歴を算出 - 退会の場合は物理削除しているため履歴が残らない

Slide 21

Slide 21 text

ポイントの履歴が追えない 21 日付 ポイント 2022-10-01 14:00 5pt 2022-10-02 16:00 10pt checkins(取得) 日付 ポイント 2022-10-09 18:00 10pt .. .. coupons(利用) 有効期間 7 .. shop_settings(失効)

Slide 22

Slide 22 text

ポイントの履歴が追えない 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(失効) アプリケーション側で全データをソートして計算

Slide 23

Slide 23 text

ポイント管理の仕組みを改善

Slide 24

Slide 24 text

ポイント管理の仕組みを改善 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

Slide 25

Slide 25 text

ポイント管理の仕組みを改善 25 改善の結果 - ポイントの履歴が残るように - パフォーマンスが向上 - DB側で有効ポイントの計算が可能に - チェックインからポイントに関するユースケースを剥がせた - 責務が明確に - 可読性が向上

Slide 26

Slide 26 text

まとめ 26 - 目的の違うものを一つにまとめない - 機能追加をする際は立ち止まって考えてみる - アプリケーションの設計でもDB設計でも同じ - データ量を意識する - 今後どのようなペースで増加するのか - マスターデータなのかトランザクションデータなのか - update より insert - 履歴が残らなくて問題ないか - 競合が発生しないか

Slide 27

Slide 27 text

27