Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
グローバル変数は危ないって聞いたけど なんでReduxはいいの??
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
nayuta24
September 30, 2024
470
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
グローバル変数は危ないって聞いたけど なんでReduxはいいの??
2024/9/19に開催された「kaonavi Tech Talk 〜若手エンジニア Face to Face LT会」で発表した内容です。
nayuta24
September 30, 2024
More Decks by nayuta24
See All by nayuta24
コードレビュアー「見習い」 になったぞ!!
nayuta24
0
250
Featured
See All Featured
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
460
Rails Girls Zürich Keynote
gr2m
96
14k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
The Invisible Side of Design
smashingmag
301
52k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.4k
The Cult of Friendly URLs
andyhume
79
7k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
How STYLIGHT went responsive
nonsquared
100
6.3k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
From π to Pie charts
rasagy
1
400
Thoughts on Productivity
jonyablonski
76
5.4k
Transcript
株式会社カオナビ 中村優太 グローバル変数は危ないって聞いたけど なんでReduxはいいの??
自己紹介 中村優太 名前: 株式会社カオナビ(23卒) 所属: フロントエンドエンジニア 職能: 音楽、あんこをつくること 好きなこと: @tanasokoo
X:
株式会社カオナビ 中村優太 グローバル変数は危ないって聞いたけど なんでReduxはいいの??
グローバル変数
• 関数の外で宣言した変数 → グローバル変数 • 関数の中で宣言した変数 → ローカル変数 ざっくりいうと
グローバル変数のメリット • どこからでもアクセスできる • 変数を何度も宣言する必要がない
なんかよく危ないって 言われている
特に規模の大きなアプリケーション で危なさが増す
規模が大きくなったときに起こる問題 • いつ、どこで変わるかが分からない • 変わったときに何が起こるのか分からない • 命名が衝突する • デバッグがやりづらくなる •
単体テストが書きづらくなる etc
「グローバル」って危ない💣
弊社の開発では 「Redux」を使用している
https://redux.js.org/introduction/getting-started
https://redux.js.org/introduction/getting-started
https://redux.js.org/introduction/getting-started 「global state」!? なんか危なそうなことやっとる💣
None
結論 1. 「行儀の悪い」グローバル変数 2. 「行儀の良い」グローバル変数 この世には2種類のグローバル変数がある
結論 1. 「行儀の悪い」グローバル変数 2. 「行儀の良い」グローバル変数 この世には2種類のグローバル変数がある ↑ Reduxは正しく使えば、こちらなのでOK!
「行儀が良い」とは
グローバル変数で起こりがちな問題 の対策をしている
規模が大きくなったときに起こる問題 • いつ、どこで変わるかが分からない • 変わったときに何が起こるのか分からない • 命名が衝突する • デバッグがやりづらくなる •
単体テストが書きづらくなる etc
規模が大きくなったときに起こる問題 • いつ、どこで変わるかが分からない • 変わったときに何が起こるのか分からない • 命名が衝突する • デバッグがやりづらくなる •
単体テストが書きづらくなる etc
グローバルスコープ ローカルスコープ
グローバルスコープ いつ、どこで 何が起こるか分かりやすい ローカルスコープ
グローバルスコープ ローカルスコープ
グローバルスコープ ローカルスコープ
グローバルスコープ ローカルスコープ
グローバルスコープ ローカルスコープ いつ、どこで何が 起きるか分かりにくい
⭕ いつ、何が起こるのかわかりづらいこと 本質的に悪いのは ❌ スコープが広いこと
いつ、何が起こるかが分かりやすければ グローバルでもOK
• 変数(State)が変わる場所を一箇所に集まっている • 変数(State)が変わったときに起こることが明確 Reduxはどうなっているか
https://redux.js.org/tutorials/essentials/part-1-overview-concepts グローバルに Stateを扱える
https://redux.js.org/tutorials/essentials/part-1-overview-concepts 変数の管理が一箇所なので わかりやすい!
https://redux.js.org/tutorials/essentials/part-1-overview-concepts 何が起こるかが一箇所 にまとまっているので わかりやすい!
https://redux.js.org/style-guide/
https://redux.js.org/style-guide/ Model Action as Events, Not Setters (ActionをSetterではなくEventとしてモデル化) 例:ユーザー名を入力するフォーム ❌「ユーザー名をセットする」みたいなSetter単位
→ userNameだけ値を更新する(状態の変化が追跡しにくい) ⭕「ユーザー名を更新する」みたいなEvent単位 → userNameだけでなく、touched(フォーム入力されたフラグ)も同時に更新され るはず(状態の変化が追跡しやすい)
https://redux.js.org/tutorials/essentials/part-1-overview-concepts 変数の定義が一箇所なので わかりやすい! 何が起こるかが一箇所 にまとまっているので わかりやすい!
✅ いつ、どこで変わるかが分かりやすい ✅ 変わったときに何が起こるのか分かりやすい ✅ 命名が衝突しない ✅ デバッグがやりやすい ✅ 単体テストが書きやすい
etc 「規模が大きくなったときに起こる問題」をクリア
None
この考え方自体は 実はいろんなところにある
その一例が「DB」
DB State less State less State less State less ←
グローバルState 状態管理の責務をDBに集めている
None
まとめ
株式会社カオナビ 中村優太 グローバル変数は危ないって聞いたけど なんでReduxはいいの??
結論 1. 「行儀の悪い」グローバル変数 2. 「行儀の良い」グローバル変数 この世には2種類のグローバル変数がある ↑ Reduxは正しく使えば、こちらなのでOK!
結論 1. 「行儀の悪い」グローバル変数 2. 「行儀の良い」グローバル変数 この世には2種類のグローバル変数がある ↑ Reduxは正しく使えば、こちらなのでOK!
株式会社カオナビ 中村優太 グローバル変数は危ないって聞いたけど なんでReduxはいいの??