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
状態管理ライブラリZustandの導入から運用まで
Search
daiki
September 06, 2024
Programming
3
570
状態管理ライブラリZustandの導入から運用まで
daiki
September 06, 2024
Tweet
Share
More Decks by daiki
See All by daiki
JavaScriptツール群「UnJS」を5分で一気に駆け巡る!
k1tikurisu
0
39
Other Decks in Programming
See All in Programming
CloudNativePGがCNCF Sandboxプロジェクトになったぞ! 〜CloudNativePGの仕組みの紹介〜
nnaka2992
0
170
AHC041解説
terryu16
0
520
DevinとCursorから学ぶAIエージェントメモリーの設計とMoatの考え方
itarutomy
1
470
PHPで学ぶプログラミングの教訓 / Lessons in Programming Learned through PHP
nrslib
4
1.1k
Terraform で作る Amazon ECS の CI/CD パイプライン
hiyanger
0
110
React 19でお手軽にCSS-in-JSを自作する
yukukotani
5
590
富山発の個人開発サービスで日本中の学校の業務を改善した話
krpk1900
2
120
はてなにおけるfujiwara-wareの活用やecspressoのCI/CD構成 / Fujiwara Tech Conference 2025
cohalz
3
3.1k
PHPとAPI Platformで作る本格的なWeb APIアプリケーション(入門編) / phpcon 2024 Intro to API Platform
ttskch
0
410
定理証明プラットフォーム lapisla.net
abap34
1
610
2025.01.17_Sansan × DMM.swift
riofujimon
2
630
PicoRubyと暮らす、シェアハウスハック
ryosk7
0
250
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
74
5.4k
How STYLIGHT went responsive
nonsquared
96
5.3k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
6
210
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
980
The Invisible Side of Design
smashingmag
299
50k
Practical Orchestrator
shlominoach
186
10k
Thoughts on Productivity
jonyablonski
68
4.4k
Building Your Own Lightsaber
phodgson
104
6.2k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
52k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Transcript
ঢ়ଶཧϥΠϒϥϦ;VTUBOEͷಋೖ͔Βӡ༻·Ͱ EBJLJ!LUJLVSJTV$ZCP[V*OD
EBJLJ • αΠϘζגࣜձࣾ৽ଔ • 8FCϑϩϯτΤϯυΤϯδχΞ • 𝕏 ɿ!LUJLVSJTV
αΠϘζͷओྗLJOUPOF αΠϘζΤϯδχΞ࠾༻ϐον<> <>IUUQTTQFBLFSEFDLDPNDZCP[VJOTJEFPVUDZCP[VFOHJOFFSSFDSVJU TMJEF
LJOUPOFͷϑΥʔϜͷঢ়ଶཧʹ;VTUBOEΛ͍ͬͯΔ LJOUPOFͰ࡞ͨ͠ΞϓϦʹσʔλΛՃ͢Δը໘ ίίʹ;VTUBOE͕ʂ
ΞδΣϯμ • ঢ়ଶཧʹ;VTUBOEΛ࠾༻ͨ͠എܠ • ͬ͘͟Γ;VTUBOE • ;VTUBOEΛಋೖͯ͠Έ࣮ͯࡍͲ͏͔ • ;VTUBOEWͷظ
ঢ়ଶཧʹ;VTUBOEΛ࠾༻ͨ͠എܠ
࠶ϨϯμϦϯά࠷దԽͷ՝ײ
࠶ϨϯμϦϯά࠷దԽͷ՝ײ • ͱͱ3FBDUͷVTF4UBUFVTF3FEVDFSͰঢ়ଶཧΛ͍ͯͨ͠ • ϑΥʔϜͷঢ়ଶΛͭͷΦϒδΣΫτͱͯ͠ཧ͓ͯ͠Γɺಛผ੍ޚ ͠ͳ͚ΕͭͷJOQVUͷΛߋ৽͢Δ͚ͩͰϑΥʔϜશମ͕࠶Ϩϯ μϦϯά͞ΕΔ ◦ ϑΥʔϜશମͷ༨ͳϨϯμϦϯάΛආ͚ΔͨΊʹ࣮͕ෳࡶԽ ͢Δ
ˠൺֱత༰қʹ࠶ϨϯμϦϯάͷ੍ޚ͕Մೳͳঢ়ଶཧϥΠϒϥϦͷಋೖ ʹࢸͬͨ
ϥΠϒϥϦબఆͷ۩ମతͳཁ݅ • ঢ়ଶཧʹಛԽ͍ͯ͠Δ ◦ طଘίʔυͱาௐΛ߹ΘͤΔඞཁ͕͋Δ • όϯυϧαΠζ͕খ͘͞ґଘύοέʔδ͕গͳ͍ ◦ LJOUPOFେنͳϓϩμΫτͷͨΊɺྦྷੵతʹେ͖ͳӨڹΛ༩ ͑Δ
• ͋ΔఔͷγΣΞͷߴ͞ͱܧଓతͳ։ൃ͕ೝΊΒΕΔ
ঢ়ଶཧϥΠϒϥϦͷҟͳΔΞϓϩʔν
τοϓμϯతͳΞϓϩʔνɿ;VTUBOEɺ3FEVY SPPU DPNQPOFOU DPNQPOFOU DPNQPOFOU DPNQPOFOU • 4JOHMF4UPSF •
தԝूݖతʹཧ͞Εͨ4UPSFΛ֤ DPNQPOFOUͰݺͼग़ͯ͠༻͢Δ 4UPSF
ϘτϜΞοϓతͳΞϓϩʔνɿ+PUBJɺ3FDPJM SPPU DPNQPOFOU DPNQPOFOU DPNQPOFOU DPNQPOFOU "UPN • "UPNͱݺΕΔখ͞ͳঢ়ଶ୯ҐΛج
ຊͱ͢Δ • ֤"UPNಠཱ͓ͯ͠ΓɺඞཁʹԠ͡ ͯΈ߹ΘͤΔ͜ͱ͕Ͱ͖Δ ◦ ࠷খ୯Ґ͔Β࢝Ίͯঃʑʹେ͖ͳ ߏΛ࡞Γ্͛ΔϘτϜΞοϓత ͳߟ͑ํ "UPN
ϥΠϒϥϦൺֱͷҰ෦ • ;VTUBOEˠ࠾༻ ◦ ଞͷJOQVUͷʹԠͯ͡ผͷJOQVUͷ͕࠶ܭࢉ͞ΕΔ͜ͱ͕͋ Γɺ·ͱΊͯঢ়ଶཧͰ͖ΔτοϓμϯͷΞϓϩʔν͕ద͢Δ • +PUBJ ◦ ࠓճͷཁ݅Ͱ͏·͘4UBUFΛϘτϜΞοϓʹׂ͢Δͷ͕͍͠
• 3FEVYUPPMLJU ◦ SFBDUSFEVYͱ!SFEVYKTUPPMLJUͷґଘ͕૿͑Δ ◦ 1SPWJEFSΛՃ͢ΔͷͰɺطଘͷςετίʔυΛมߋ͢Δඞཁ͕ ͋Δ
ͬ͘͟Γ;VTUBOE
;VTUBOEͱʁ • ʮγϯϓϧͰܰྔͳγϯάϧετΞͷঢ়ଶཧϥΠϒϥϦʯ • ϝΠϯͷ+4ίʔυेߦ΄Ͳ • όϯυϧαΠζLCఔʢNJOJGJFEʣ *OUSPEVDUJPO;VTUBOEɿIUUQT[VTUBOEEPDTQNOEST
;VTUBOEͰͷ4UPSFఆٛ DSFBUFͱ͍͏͔ؔΒશͯ࢝·Δ
;VTUBOEͰͷ4UPSFఆٛ • DSFBUFؔͷҾʹɺTFU HFU TUPSF ΛҾʹऔΔίʔϧόοΫΛ͢ • Γ͕4UPSFΛѻ͏ͨΊͷ)PPLʹͳ
Δ
ίʔϧόοΫঢ়ଶมʢ4UBUFʣͱͦͷ ߋ৽ؔʢ"DUJPOʣΛఆٛͨ͠ΦϒδΣ ΫτΛฦ͢ ;VTUBOEͰͷ4UPSFఆٛ
ίϯϙʔωϯτͰ4UPSFΛࢀর )PPLΛݺͼग़͠ɺཉ͍͠ 4UBUF·ͨ"DUJPOΛબ͢ Δʢ4FMFDUPSʣ ड͚औͬͨ4UBUF"DUJPOΛ ར༻͢Δ
5ZQF4DSJQUͰͷར༻ํ๏ 4UBUFͱ"DUJPOͷܕΛ༻ҙ͢ Δ DSFBUFؔͷܕҾʹ͢
࣮ࡍͷӡ༻ํ๏ɾͳͲ
• ঢ়ଶߋ৽͕ෳࡶ • ϑΥʔϜશମΛͭͷΦϒδΣΫτͱͯ͠ ѻ͍ͬͯΔͨΊɺ·͞ʹ͜Μͳײ͡ʹͳ Δ ී௨ʹॻ͘ͱωετͨ͠ΦϒδΣΫτͷঢ়ଶૢ࡞େม ωετͨ͠ΦϒδΣΫτ
ɿ*NNFSΛ༻ͨ͠Πϛϡʔλϒϧͳঢ়ଶૢ࡞ ˔ DSFBUFؔʹ*NNFSϛυϧΣΞΛڬΈࠐ Ή͚ͩͰ͑Δ ˔ ࣗ࡞ͨ͠ϛυϧΣΞࠩ͠ࠐΉ͜ͱ͕Ͱ͖ ΔͨΊɺଞͷϥΠϒϥϦʹม͕͑ޮ͘ ˔ ؆ܿʹॻ͚Δ
˔ ࣮ࡍʹΠϛϡʔλϒϧͳߋ৽͕ߦΘΕΔ
ɿ4UPSFఆٛϑΝΠϧʹ4FMFDUPSΛूੵ • 4FMFDUPS4UPSFఆٛϑΝΠϧ ʹूੵ͠ɺίϯϙʔωϯτଆͰ ͦΕΛݺͿ͚ͩʹ͢Δ • Ծʹ4UPSFͷ࣮ঢ়ଶཧϥΠ ϒϥϦΛมߋ͢Δ͜ͱʹͳͬͨͱ ͯ͠ɺݺͼग़͠αΠυͰͷ٧Ί
ସ͑ϩδοΫ͕࠷ݶͰࡁΉ
ɿঢ়ଶͷఆٛͱߋ৽Ҏ֎ͷॲཧͳΔ͘ॻ͔ͳ͍ ݱࡏͷ4UBUFΛऔಘͯ͠ܭࢉ Λߦ͏"DUJPO
ɿঢ়ଶͷఆٛͱऔಘɾߋ৽Ҏ֎ͷॲཧͳΔ͘ॻ͔ͳ͍ • ϏδωεϩδοΫؔʹΓग़ ͢ • ूੵ͢ΔؔͰϑΝΠϧ͕ංେԽ ͍ͨ͢͠Ίɺ4UPSFϑΝΠϧͷ Λ੍ݶ
༨ஊɿ4MJDFT1BUUFSO • ؔ৺͝ͱʹ4UBUFͱ"DUJPOͷΈ Λ4MJDFͱׂͯ͢͠Δ • 4MJDFಠཱͨؔ͠ͱͯ͠ఆٛ • 4MJDFΛΈ߹ΘͤͯετΞΛ࡞ ͢Δ
༨ஊɿ3FEVYMJLFQBUUFSOT • ΠϕϯτʹΑͬͯঢ়ଶͷߋ৽ॲ ཧΛग़͚͠ΔSFEVDFSΛ࡞ • EJTQBUDIͱ͍͏"DUJPOΛఆٛ • ݺͼग़͠ଆͰEJTQBUDIʹΠ ϕϯτͷใΛ͢
ಋೖͯ͠Έͯخ͍͠ͱ͜Ζɺඍົͳͱ͜Ζ
خ͍͠ͱ͜Ζ • 1SPWJEFSແ͠ͰطଘͷίʔυʹಋೖͰ͖ΔͨΊɺطଘίʔυςε τͷมߋ͕࠷খݶͰɺ)PPLͷςετ༰қʹͰ͖Δ • ঢ়ଶཧʹඞཁͳॲཧΛҰׅͰએݴͰ͖Δ ◦ Γͦ͏ͱࢥͬͨ࣌ʹΓͤΔ ◦
FTMJOUQMVHJOTUSJDUEFQFOEFODJFTͱΈ߹Θͤͯɺ JNQPSUͰ͖ΔϞδϡʔϧͷ੍ݶͳͲ؆୯ • ϛυϧΣΞͰػೳΛ֦ுͰ͖Δ ◦ ґଘϥΠϒϥϦΛ͑ΔɾίϯτϩʔϧͰ͖Δ
ඍົͳͱ͜Ζɿܕਪ • ͦͷ··ར༻͢Δͱ5ZQF4DSJQUͷܕఆٛΛશͯॻ͘ඞཁ͕͋Δ
༨ஊɿܕਪΛޮ͔ͤΔํ๏͋Γ·͢ • DPNCJOFϛυϧΣΞΛ༻͢Δ ◦ ଞͷϛυϧΣΞͱͷซ༻͕͍͠ ◦ ಛఆͷ߹ʹܕ҆શͰͳ͍<> • [VTUBOETMJDFT
[VTUBOEWBMUJP [VTUBOEYTͳͲͷϥΠϒϥϦΛ ซ༻͢Δ ◦ ॻ͖৺͕มΘΔ͜ͱͱɺґଘΛۃྗݮΒ͍ͨ͜͠ͱ͔Β༻͠ ͍ͯͳ͍ ◦ ؤுͬͯॻ͍ͨΒྑ͍Ͱ͋ΔͷͰɺɺ <>IUUQT[VTUBOEEPDTQNOESTHVJEFTUZQFTDSJQUUZQFTDSJQUHVJEF
• 4UBUFͱ"DUJPOΛͭͷΦϒδΣΫτͱͯ͠એݴ͢ΔͨΊɺܕΤϥʔ ͕4UPSFશମʹٴͿ͜ͱ͕͋Δ • 4UPSFϑΝΠϧ͕େ͖͘ͳΔͱݪҼͷಛఆ͕ࠔʹͳΓ͍͢ ◦ ࠓճͷཁ݅Ͱ4UPSFͷׂ͕͘͠ڐ༰͢Δ͔͠ͳ͍ ඍົͳͱ͜ΖɿܕΤϥʔ
;VTUBOEWͷظ
Wͷظ • ಛʹػೳ͕૿͑ΔΘ͚Ͱͳ͍ʢ#SFBLJOH͕͋Δʣ ◦ FTɺ3FBDUҎલͷαϙʔτΛΊΔͳͲ • όϯυϧαΠζ͕খ͘͞ͳΔ ◦ ݹ͍ػೳΛͬͯεϦϜԽ ◦
LCˠLC΄ͲʢNJOJGJFEʣ ◦ *NNFSΛซ༻͢ΔؔͰαΠζ͕ Ћ͞ΕΔͨΊຊମ͕খ͍͞ͱ خ͍͠ IUUQTHJUIVCDPNQNOEST[VTUBOESFMFBTFTUBHWSD
·ͱΊ
·ͱΊ • 4UPSFͷׂ͕͘͠τοϓμϯͷΞϓϩʔν͕దͨ͠ͷͰ ;VTUBOEΛબΜͩ • ঢ়ଶཧʹඞཁͳॲཧΛҰׅͰએݴͰ͖Δ • جຊDSFBUF͚ؔͩͳͷͰɺ͍ΖΜͳύλʔϯͰཁ݅ʹ߹Θ ͍ͤͨํ͕Ͱ͖Δ
• 5ZQF4DSJQUͰ͏߹͕ඞཁ͔ • དྷΔWͰ͞Βʹܰྔʹͳͬͯخ͍͠