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
ミカイ
November 07, 2024
0
7
本当にあった怖い体験談 本番環境で画面が真っ白になりました
【エンジニア限定】本当にあった怖い体験談【オフライン開催】
2024/10/24
https://connpass.com/event/332893/
ミカイ
November 07, 2024
Tweet
Share
More Decks by ミカイ
See All by ミカイ
目標は「めいそう」が大事。漢字はどう書く?
junmikai
2
11
技術選定で迷ったら『日常』を思い出そう! 〜考え方の新発見〜
junmikai
0
51
今年最も「覚醒」したコーディングテストの舞台裏
junmikai
0
8
フリーランスから正社員に戻ったお話し
junmikai
0
9
面接で価値観が変わった件
junmikai
0
12
SQLを克服する1冊
junmikai
0
4
美と機能のバランス ~フロントエンジニアに必要なUI・UXセンス~
junmikai
0
3
React.jsの キャッチアップは 「取捨選択」が9割
junmikai
0
9
スルメとガムで考えるキャリア論.pdf
junmikai
0
5
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Fireside Chat
paigeccino
34
3.1k
Side Projects
sachag
452
42k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
Rails Girls Zürich Keynote
gr2m
94
13k
Embracing the Ebb and Flow
colly
84
4.5k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
We Have a Design System, Now What?
morganepeng
51
7.3k
The Pragmatic Product Professional
lauravandoore
32
6.3k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
Transcript
本当にあった怖い体験談 本番環境で画面が真っ白になりました 三海 純(ミカイジュン)
ミカイ ジュン • フリーランスエンジニア • 趣味: もくもく会、アニメ、ネット麻雀(雀魂)
• 好きな有名人 ◦ 後藤 ひとり ◦ 陸八魔アル ◦ 千早 愛音 ◦ 八木 唯
キャリア • 2020年 ~ 2022年 ◦ 正社員: フロントエンドエンジニア
• 2022年 ~ 2023年 ◦ 正社員: フロントエンド&バックエンドエンジニア • 現在(2024年) ◦ フリーランス: Next.js など設計&開発 • 来年(2025年 ~) ◦ Y社 入社予定
今回の教訓 • 不本意なuseEffect連打は控えた方がいいかも • フロントエンドもテストコード書こう • リリース直後はPCの前にいようね!
今回は以下に関するストーリを紹介 • 不本意なuseEffect連打は控えた方がいいかも • フロントエンドもテストコード書こう • リリース直後はPCの前にいようね!
新機能リリース日のこと 今日は待ちに待ったリリース日。 私たちは、数週間にわたって頑張ってき た新機能をついにリリースする。
勝利?のポテトチップス 本番環境での動作確認も問題なし ポテトチップスを 2袋食べていた時に事件は発生した
通知が・・・凄い数 ポテトチップスの袋に手を伸ばしながら、 ちらっとメッセージを確認 すると、そこには大量のメッセージが溢れ ていた
プロダクトが 真っ白になっていると、 複数のお客様から連絡が…
そんなバカな・・・ ポテトチップスを口に詰め込んだまま、私 は慌てて本番環境を確認する しかし、私のアカウントでチェックしても、 問題はどこにもない
その時、ふと思った
俺のブラウザ、 特殊能力でも持ってる のか…?
そんなわけはなく・・・ APIログを確認してみても、エラー通知は 届いていない。ネットワークも正常。完全 にフロントエンドの問題に見える。
その時、最後の一枚をつまもうとした ポテトチップスが指先から 滑り落ちた瞬間
俺に電流走る!
特定のプラン…! まるでポテトチップスの袋の底から最後 の一枚を引き当てたように、私は気づい た。 「そうか、ユーザーが使っているプランに よって処理が違うんだ!」
急いでコードを掘り返し … 該当の処理をチェックすると、案の定、 useEffectの依存配列がうまく設定されて いない箇所を発見した。 すぐに修正を行い、修正をした
修正した後、思った
ポテトチップスを 一袋奢ろう
茶番?に付き合って頂き ありがとうございます
今回の教訓(再掲載) • 不本意なuseEffect連打は控えた方がいいかも • フロントエンドもテストコード書こう • リリース直後はPCの前にいようね!
function Component({ plan }) { const [data, setData] = useState();
useEffect(() => { const fetchData = async () => { const response = await fetch(`/xxxxx?plan=${plan}`); const result = await response.json(); setData(result); }; fetchData(); }, [data]); // 依存配列に`data`が入っているため無限ループが発生
function Component({ plan }) { const [data, setData] = useState();
useEffect(() => { const fetchData = async () => { const response = await fetch(`/xxxxx?plan=${plan}`); const result = await response.json(); setData(result); }; fetchData(); }, [plan]); // `plan`が変わる時だけ実行。無限ループしない
import useSWR from 'swr'; const fetcher = (url) => fetch(url).then((res)
=> res.json()); function Component({ plan }) { // こういうライブラリを使えば1行で実装できる! const { data, error } = useSWR(`xxxxx?plan=${plan}`, fetcher);
結論 React.jsで開発する時は useEffectである必要ある? を考える
別の案として・・・ 今回の場合、プランごとのユースケースがあ るのでE2Eテスト(Playwight)で トップページの テストコードは書いてもいいかも
ご清聴ありがとうござ います!