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
Hayato Nakamura
May 22, 2024
90
0
Share
呼び出し順で、 売上金額を回収できなくした話
Hayato Nakamura
May 22, 2024
More Decks by Hayato Nakamura
See All by Hayato Nakamura
定時実行の設定が難しいから、 仕組みで解決をしている話
chikin14niwa
0
120
N+1はダメなのか? システムを落としたあの日より
chikin14niwa
0
63
重要だけど、 よく忘れる仕様との付き合い方
chikin14niwa
0
110
Sessionの衝突から学んだPHPのSession作成方法 @CakeJP 2023/12/13 エンジニア小話会 PHPを語り合おう
chikin14niwa
0
430
Featured
See All Featured
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
370
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
410
Producing Creativity
orderedlist
PRO
348
40k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
160
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
370
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Transcript
© Cake.jp Co.Ltd. All Right Reserved.|Confidential 呼び出し順で、 売上金額を回収できなくした話
中村 隼人
2 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 自己紹介 • 名前
◦ 中村 隼人 • 業務 ◦ バックエンドエンジニア(PHP/Kotlin/TypeScript) • おすすめ🍰 ◦ 子どもが野菜を食べてくれる ◦ 大人が食べてもおいしい
3 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 特注商品の発注システムの開発 リクエスト=即契約かつキャンセル不可のAPIの呼び出し後に、 お客様から注文キャンセルが可能な状態を作った。
発生事象
4 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 設計→デザイン修正時にAPI呼び出し結果の情報が必要になり、 不用意に呼び出し回数を追加した。 原因
5 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 元の設計 お客様 Cake.jp
外部API サーバ 注文 注文一覧ページ 仮予約 注文リスト 注文確定 注文確定 注文結果通知
6 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 失敗したときの実装 お客様 Cake.jp
外部API サーバ 注文 注文一覧ページ 仮予約 注文リスト 注文確定 注文確定 注文結果通知 注文確定 注文結果通知
7 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 失敗したときの実装 お客様 Cake.jp
外部API サーバ 注文 注文一覧ページ 仮予約 注文リスト 注文確定 注文確定 注文結果通知 注文確定 注文結果通知 ここまでは キャンセル可能 だった ここで 課金だった
8 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 修正したときの実装 お客様 Cake.jp
外部API サーバ 注文 注文一覧ページ 仮予約 注文リスト 注文確定 注文確定 注文結果通知 注文確定 注文結果通知 キャンセル不可 にした
9 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 気付けなかった理由 お客様 Cake.jp
外部API サーバ 注文 注文一覧ページ 仮予約 注文リスト 注文確定 注文確定 注文結果通知 注文確定 注文結果通知 ・LINEなどで共有されるとLINEからのア クセスがあることを失念していた。 ・注文一覧ページアクセス=注文確定と いうユーザ行動を疑ってなかった。 注文確定自体は下で行 われるため、課金タイミ ングのズレが実感とず れた。
10 © Cake.jp Co.Ltd. All Right Reserved.|Confidential • 課金タイミングの確認はまじで大事。 ◦
特に2種類以上のステータスを管理の場合は、見える形で管理するの が望ましい。 • LINEなどのOGP取得系はリンクの共有だけでアクセスが発生する。 ◦ アクセスに依存した処理が発生する場合は、そのアクセスがユーザの 意思かどうかを確認できることが望ましい。 - まとめ -