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
2023年末時点のReduxをざっくり知る
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
nmemoto
December 09, 2023
Technology
580
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
2023年末時点のReduxをざっくり知る
ゆるWeb勉強会@札幌 #25 のLT資料です
https://mild-web-sap.connpass.com/event/298899/
nmemoto
December 09, 2023
More Decks by nmemoto
See All by nmemoto
React.lazyを他コンポーネントに定義した札を下げています
nmemoto
0
67
ChatGPT APIを使ったLINEボットでCloudflare Workersを使う
nmemoto
0
760
Other Decks in Technology
See All in Technology
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
210
こんなアーキテクチャ図は嫌だ BEYOND THE TIME: 半年後の自分へ贈る15のメッセージ / 15 of Anti-pattern in AWS Architecture Diagrams
naospon
3
270
GoCon2026 - Open Source, Open World
sanposhiho
2
550
少人数データチームのDevin活用実践事例
runandy16
3
460
作り直せるコードは迅速に 作り直せないDBは慎重に - AI時代のプロダクトエンジニアが「判断の不可逆性」で開発速度を変える話
kinosuke01
0
280
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
3
150
Tab5をRubyで動くパソコンにする
kishima
2
270
AI活用の現在地、 ちゃんと見えてますか?/XPfest-2026
visional_engineering_and_design
0
170
Benchmarking Vector Databases: pgvector vs. LanceDB
tsho
0
150
Deploying a Full-Stack Bun-Native Framework on Cloudflare Workers
7nohe
0
110
Jetpack Compose で挑む新聞紙面UI ─ 複合ジェスチャー・ポリゴン記事領域・適応的ページ構成という3つの壁/droidkaigi2026
nikkei_engineer_recruiting
0
240
Microsoft 365 Copilot chat -tekoälypalvelun tietosuojaongelmat
hponka
0
560
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
310
Accessibility Awareness
sabderemane
1
200
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
260
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.7k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
320
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
510
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Believing is Seeing
oripsolob
1
210
Transcript
2023年末時点の Reduxをざっくり知る ゆるWeb@札幌 #25 nmemoto
自己紹介 • パッケージベンダー所属(2023/11~) • フロントエンド業務1年生(36歳) • 登壇 ◦ Cloudflare Meetup
Sapporo Vol.1(2023-07-18) ▪ ChatGPT APIを使ったLINEボットでCloudflare Workers を使う - Speaker Deck • ゆるWeb札幌初参加 nmemoto (umemotoのuをひっくり返してnにして、んめもと) • https://twitter.com/nmemoto • https://bsky.app/profile/nmemoto.bsky.social • https://zenn.dev/nmemoto • https://github.com/nmemoto
Connpassより
なんで(いまさら)Redux?ちゃんと語れる? • なんでRedux? ◦ 業務で使うことになった ◦ 調べてみると最近の Redux良いのではと思った • ちゃんと語れる?
◦ React を前提とした話をしてしまうのでわからない人いるかも ◦ 私の理解度で”ちゃんと”は難しいかも ◦ 自分なりの解釈で公式ドキュメントと違う言葉を使ってしまうかもしれないです ◦ 興味を持ったら公式ドキュメントを見て!
おしながき • 自己紹介(5分) • Reduxの基本概念(20分) • 2023年末時点のRedux(20分) • まとめ(5分)
おしながき • 自己紹介(5分) • Reduxの基本概念(20分) • 2023年末時点のRedux(20分) • まとめ(5分) これ全部足したら50分なのでは?
おしながき • 自己紹介(30秒) • Reduxの基本概念(2分) • 2023年末時点のRedux(2分) • まとめ(30秒) 10倍界王拳で頑張ります!(多分無理)
https://www.irasutoya.com/2018/07/blog-post_876.html
Redux • JavaScriptアプリケーションのための予測可能な状態コンテナ ◦ アプリケーション内のグローバルな状態を整理するためのパターンおよびライブラリ • リリース ◦ 2015-08-15 v1.0
◦ 2023-12-04 v5.0 • 主な関係者 ◦ Dan Abramov ▪ 作者 ▪ Reactコアチーム ▪ https://twitter.com/dan_abramov ◦ Mark Erikson ▪ 現在の主メンテナー ▪ https://twitter.com/acemarke • その他 ◦ Next.js で利用可とのこと ▪ https://redux.js.org/usage/nextjs ◦ React以外でも利用可 ▪ Reactと使用されることがほとんど https://redux.js.org/ の上部
Reduxの基本概念
状態管理をいい感じにするためのReduxの概念 • 一方向のデータフローの制御 • 状態管理に関する概念分離 ◦ 概念(用語) ▪ Actions ▪
Action Creators ▪ Reducers ▪ Store ▪ Dispatch ▪ Selectors ◦ ViewとStateの独立性を維持するルール • 状態を一元管理 • イミュータビリティ https://redux.js.org/tutorials/essentials/part-1-overview-concepts#state-management
状態管理をいい感じにするためのReduxの概念 https://redux.js.org/tutorials/essentials/part-1-overview-concepts#state-management • 一方向のデータフローの制御 • 状態管理に関する概念分離 ◦ 概念(用語) ▪ Actions
▪ Action Creators ▪ Reducers ▪ Store ▪ Dispatch ▪ Selectors ◦ ViewとStateの独立性を維持するルール • 状態を一元管理 • イミュータビリティ ユーザー入力に基づいてアプリで発生するイ ベント、および状態の更新をトリガー アプリを動かす信頼で きる情報源 現在の状態に基づくUI の宣言的な記述
状態管理をいい感じにするためのReduxの概念 https://redux.js.org/tutorials/essentials/part-1-overview-concepts#state-management • 一方向のデータフローの制御 • 状態管理に関する概念分離 ◦ 概念(用語) ▪ Actions
▪ Action Creators ▪ Reducers ▪ Store ▪ Dispatch ▪ Selectors ◦ ViewとStateの独立性を維持するルール • 状態を一元管理 • イミュータビリティ
状態管理をいい感じにするためのReduxの概念 https://redux.js.org/tutorials/essentials/part-1-overview-concepts#state-management • 一方向のデータフローの制御 • 状態管理に関する概念分離 ◦ 概念(用語) ▪ Actions
▪ Action Creators ▪ Reducers ▪ Store ▪ Dispatch ▪ Selectors ◦ ViewとStateの独立性を維持するルール • 状態を一元管理 • イミュータビリティ 状態を分けて管理しない →状態管理の複雑度を上げない • 予測可能な状態変更 • 機能追加・変更容易性 • デバッグしやすさ
状態管理をいい感じにするためのReduxの概念 https://redux.js.org/tutorials/essentials/part-1-overview-concepts#state-management • 一方向のデータフローの制御 • 状態管理に関する概念分離 ◦ 概念(用語) ▪ Actions
▪ Action Creators ▪ Reducers ▪ Store ▪ Dispatch ▪ Selectors ◦ ViewとStateの独立性を維持するルール • 状態を一元管理 • イミュータビリティ 既存の状態は変更せず、 新しい状態を作成
2023年末時点のRedux
Reduxの公式ドキュメントが充実している • https://redux.js.org/ • チュートリアルで開発に必要な基本概念の把握ができる • 学習コンテンツの紹介も含まれている ◦ Mark Erikson本人がRedux
Toolkit(後述)を使ったReduxでの開発を説明している YouTube動画 ▪ Let’s Learn Modern Redux! (with Mark Erikson) — Learn With Jason - YouTube
React-Redux
React-Redux • Redux公式のReactバインディング ◦ ReactコンポーネントにReduxで管理している状 態を渡す • よく使うAPI ◦ Provider
▪ コンポーネントツリー全体で Redux Storeを 使えるようにする ◦ useSelector() ▪ Redux Storeから状態をとりだす ◦ useDispatch() ▪ アクションをRedux Storeに送信する • リリース ◦ 2015-08-25 v1.0.0 ◦ 2019-06-19 v7.1.0 ◦ 2023-12-04 v9.0.0
React-Redux • Redux公式のReactバインディング ◦ ReactコンポーネントにReduxで管理している状 態を渡す • よく使うAPI ◦ Provider
▪ コンポーネントツリー全体で Redux Storeを 使えるようにする ◦ useSelector() ▪ Redux Storeから状態をとりだす ◦ useDispatch() ▪ アクションをRedux Storeに送信する • リリース ◦ 2015-08-25 v1.0.0 ◦ 2019-06-19 v7.1.0 ◦ 2023-12-04 v9.0.0
React-Redux • Redux公式のReactバインディング ◦ ReactコンポーネントにReduxで管理している状 態を渡す • よく使うAPI ◦ Provider
▪ コンポーネントツリー全体で Redux Storeを 使えるようにする ◦ useSelector() ▪ Redux Storeから状態をとりだす ◦ useDispatch() ▪ アクションをRedux Storeに送信する • リリース ◦ 2015-08-25 v1.0.0 ◦ 2019-06-19 v7.1.0 ◦ 2023-12-04 v9.0.0
React-Redux • Redux公式のReactバインディング ◦ ReactコンポーネントにReduxで管理している状 態を渡す • よく使うAPI ◦ Provider
▪ コンポーネントツリー全体で Redux Storeを 使えるようにする ◦ useSelector() ▪ Redux Storeから状態をとりだす ◦ useDispatch() ▪ アクションをRedux Storeに送信する • リリース ◦ 2015-08-25 v1.0.0 ◦ 2019-06-19 v7.1.0 ◦ 2023-12-04 v9.0.0
React-Redux • Redux公式のReactバインディング ◦ ReactコンポーネントにReduxで管理している状 態を渡す • よく使うAPI ◦ Provider
▪ コンポーネントツリー全体で Redux Storeを 使えるようにする ◦ useSelector() ▪ Redux Storeから状態をとりだす ◦ useDispatch() ▪ アクションをRedux Storeに送信する • リリース ◦ 2015-08-25 v1.0.0 ◦ 2019-06-19 v7.1.0 ← React hooks対応 ◦ 2023-12-04 v9.0.0
React hooksですっきり https://chat.openai.com/share/14818405-a0e3-499f-beeb-b6a7898dc6b9
Redux Toolkit
Redux Toolkit • 公式のツールセット ◦ Redux開発を適切かつ強力に推進できる • よく使うAPI ◦ configureStore()
◦ createSlice() • リリース ◦ 2019-10-23 v1.0.0 ◦ 2023-12-04 v2.0.0 • その他 ◦ RTK Query ▪ データ取得、キャッシュツール
Slice https://redux-toolkit.js.org/tutorials/quick-start Slice Store • Slice ◦ Redux Storeで管理する状態の一部分 ◦
state, reducer, actions がっちゃんこ • 効果 ◦ Action CreatorとAction Type削減 ▪ ボイラーテンプレート管理不要 ▪ 見通しがよくなる
Slice (大事なところ抜粋) • Slice ◦ Redux Storeで管理する状態の一部分 ◦ state, reducer,
actions がっちゃんこ • 効果 ◦ Action CreatorとAction Type削減 ▪ ボイラーテンプレート管理不要 ▪ 見通しがよくなる https://redux-toolkit.js.org/tutorials/quick-start Store Slice Sliceが増えたらここに Reducerを追加 SliceからReducerや actionsを取り出して export SliceからReducerや actionsを取り出して export
Slice導入前後比較 Action Type Action Creator Reducer https://chat.openai.com/share/a3f9dedd-9323-450f-852c-46df34629ae3 Slice 処理部分は赤枠部分
Sliceのreducersに違和感 • イミュ―タビリティどこ いった? https://redux-toolkit.js.org/tutorials/quick-start
Immer • Immerによって不変担保 ◦ イミュータブルな更新ロジックを肩代わ りしてくれるライブラリ ◦ https://github.com/immerjs/immer • 最初は違和感はあった
• アプリケーションで実現したいことに 注力 https://redux-toolkit.js.org/usage/immer-reducers
Redux 5.0, React-Redux 9.0 & RTK 2.0 is released 🎉
• 2023-12-04 リリース • 主な変更 ◦ Redux の内部的な変更 ◦ RTKの主な機能追加 ▪ createSliceにselectorを定義できるように なった ▪ 非同期処理(thunk)を createSlice.reducersに書けるように • 移行ガイドを公式提供 ◦ https://redux.js.org/usage/migrations/migratin g-rtk-2 ◦ 上で書いたこと全部書いてある • https://twitter.com/acemarke/status/1731681389202870640 • https://twitter.com/acemarke/status/1731681398967128137 • https://twitter.com/acemarke/status/1731681395875979723
Reduxのダウンロード数の推移
2023年末時点、Reduxのダウンロード数は多い https://npmtrends.com/jotai-vs-mobx-vs-react-query-vs-recoil-vs-redux-vs-swr-vs-xstate
2023年末時点、Reduxのダウンロード数は多い https://npmtrends.com/jotai-vs-mobx-vs-react-query-vs-recoil-vs-redux-vs-swr-vs-xstate 他の状態管理、データフェッ チライブラリよりも利用されて いそう
2023年末時点、ReduxはNext.jsよりもダウンロードされている https://npmtrends.com/jotai-vs-mobx-vs-next-vs-react-query-vs-recoil-vs-redux-vs-swr-vs-xstate
https://npmtrends.com/jotai-vs-mobx-vs-next-vs-react-query-vs-recoil-vs-redux-vs-swr-vs-xstate 2023年末時点、ReduxはNext.jsよりもダウンロードされている ReduxはNext.jsよりも利用さ れていそう? (マサカリとんできそう)
2023年でReduxダウンロード数は頭打ち https://npmtrends.com/jotai-vs-mobx-vs-next-vs-react-query-vs-recoil-vs-redux-vs-swr-vs-xstate 採用されなくなっている?
ところで、Reactの公式では https://ja.react.dev/learn/start-a-new-react-project
ところで、Reactの公式では https://ja.react.dev/learn/start-a-new-react-project
ところで、Reactの公式では https://ja.react.dev/learn/start-a-new-react-project
ところで、Reactの公式では https://ja.react.dev/learn/start-a-new-react-project
ところで、Reactの公式では https://ja.react.dev/learn/start-a-new-react-project
ところで、Reactの公式では https://ja.react.dev/learn/start-a-new-react-project
ところで、Reactの公式では https://ja.react.dev/learn/start-a-new-react-project
ところで、Reactの公式では https://ja.react.dev/learn/start-a-new-react-project
ところで、Reactの公式では https://ja.react.dev/learn/start-a-new-react-project 😇 フレームワークわからん \(^o^)/オワタ
Reduxのダウンロードが伸びていないことへの考察 • Next.js / Remix等の登場でSPA以外の構成をとりやすくなった ◦ ユースケースにあった適切な選択ができるようになった ◦ Reduxは何でもそつなくできるやつ •
フレームワーク使うのが普通になった ◦ 公式がプロジェクト開始時フレームワークを推奨している ◦ とりあえずRedux使うということがなくなった • フレームワークの中でのRedux活用方法を(私が)知らない ◦ もしかしてみんなも知らない?
まとめ 2023年末時点のRedux • 公式ドキュメント充実 ◦ https://redux.js.org/ ◦ https://react-redux.js.org/ ◦ https://redux-toolkit.js.org/
• React-ReduxはReact Hooksの登場で使いやすくなった • Reduxは、Redux Toolkit(RTK)と一緒に使う ◦ いい感じにReduxを使える ◦ 自分たちの実現したい処理に集中できる ▪ 基本的にSlice周辺を気にすればよい • Redux 5.0 & React-Redux 9.0 & RTK 2.0 が2023-12-04にリリースされた • Reduxは他の状態管理ライブラリよりダウンロード数が多い ◦ ただし、2023年のダウンロード数は伸びていない。 ◦ ユースケースに合う他の選択肢が定着してきた