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
React NativeアプリにRecoilを導入した話
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
46kuro
October 02, 2021
Technology
36
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
React NativeアプリにRecoilを導入した話
46kuro
October 02, 2021
More Decks by 46kuro
See All by 46kuro
出前館におけるApple Pay運用Tips
46kuro
0
550
Other Decks in Technology
See All in Technology
サイバーセキュリティ概論 / Introduction to Cybersecurity
ks91
PRO
0
170
2026.06.13_AI時代に事業会社が「SIer出身エンジニア」を求める理由 / Why Businesses Seek Engineers with a System Integrator Background in the AI Era
jumtech
0
540
Rubyで音を視る
ydah
1
100
Claude Codeを組織で使いこなす— サーバサイドAIエージェント運用の実践知
techtekt
PRO
0
210
サプライチェーンセキュリティの空白地帯 - 信頼できる”依存性”の未来を考える
rung
PRO
2
710
探して_入れて_作って_使う_Agent_Skills___LT.pdf
peintangos
2
160
AI Adaptable なテストを整える工夫 / Ways to Make Your Tests AI-Adaptable
bitkey
PRO
3
220
ChatworkとBPaaS 異なる特性で学んだAI機能開発の ベストプラクティス
kubell_hr
2
2.9k
protovalidate-es を導入してみた
bengo4com
0
120
[モダンアプリ勉強会]今更聞けないGit/GitHub入門
tsukuboshi
0
280
ポケモンの型をTypeScriptの型システムで表現してみた
subroh0508
0
330
Rancherの紹介&Update情報(RancherJP Online Meetup #09)
yoshiyuki_kono
0
120
Featured
See All Featured
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
200
WCS-LA-2024
lcolladotor
0
620
Unsuck your backbone
ammeep
672
58k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
Technical Leadership for Architectural Decision Making
baasie
3
400
The Curious Case for Waylosing
cassininazir
1
380
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
220
Designing for Performance
lara
611
70k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
460
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.3k
Transcript
3FBDU/BUJWF 4UBUF.BOBHFNFOU-JCSBSZ d3FBDU/BUJWFΞϓϦʹ3FDPJMΛಋೖͨ͠d 4IJOKJ,VSPTBXB 3FBDU/BUJWF.BUTVSJ
ൃද༰ʹ͍ͭͯ w ༰ w 3FDPJMʹ͍ͭͯͬ͘͟Γઆ໌ w 4UBUF.BOBHFNFOUʹ͍ͭͯͷৄࡉͳઆ໌ൺֱݕ౼ߦ͍·ͤΜ w 3FBDU/BUJWF։ൃΛ࢝Ίͯ͘Β͍ͳͷͰɺؒҧ͍͋Ε͝ࢦఠ͓ئ͍͠·͢ w
ରऀ w 4UBUF.BOBHFNFOU-JCSBSZΛͬͨ͜ͱ͕ͳ͍ํ w 3FDPJMʹ͍ͭͯؾʹͳ͍ͬͯΔํ w 3FBDU/BUJWFͰͳ͑͘Δ͔ؾʹͳ͍ͬͯΔํ
͓͍͑ͨ͜͠ͱ ಋೖͷഎܠ 3FDPJMʹ͍ͭͯ 3FBDU/BUJWFڥԼͰى͜Δ*TTVFTʹ͍ͭͯ
3FDPJMಋೖͷഎܠ w ৽نػೳ͓Αͼ৽نը໘ͷ։ൃத w ༷ʑͳσʔλͷऔಘฤूૹ৴ͳͲ͕ߦΘΕΔػೳ w ෳը໘Ͱڞ௨ͱͯ͠༻͢Δଘࡏ w ը໘Ͱѻ͏ػೳσʔλ͕ଟ͍ͨΊɺѻ͏4UBUFଟ͍
4UBUF.BOBHFNFOU-JCSBSZ 4UBSLҎ্ͷ4UBUF.BOBHFNFOU-JCSBSZ w 4UBSɿL w ࠷ଟ͘ΘΕ͍ͯΔ 3FEVY .PC9 w 4UBSɿL
w 4JNQMF 94UBUF w 4UBSɿL w ঢ়ଶભҠɺՄࢹԽπʔϧଘࡏ w 4UBSɿL w (SBQI2-Ͱ༻ BQPMMPDMJFOU 3FDPJM w 4UBSɿL w 4JNQMFɺ'$Ͱ༻ ;VTUBOE w 4UBSɿL w 'MVYϕʔε IUUQTHJUIVCDPNPMFHSKVNJOBXFTPNFSFBDUTUBUFNBOBHFNFOU
͓͍͑ͨ͜͠ͱ ಋೖͷഎܠ 3FDPJMʹ͍ͭͯ 3FBDU/BUJWFڥԼͰى͜Δ*TTVFTʹ͍ͭͯ
3FDPJM w 4UBUF.BOBHFNFOU-JCSBSZ w 'BDFCPPL͕։ൃ w &YQFSJNFOUBMͱ͍͏Ґஔ͚ͮ w 3FBDUͷ)PPLʹͱ͍ͮͨ*OUFSGBDF w
IUUQTSFDPJMKTPSHEPDTJOUSPEVDUJPONPUJWBUJPO w +PUBJͳͲͷɺ3FDPJMʹӨڹΛड͚ͨ-JCSBSZଘࡏ
3FDPJM const TextState = atom({key: 'Text', default: ‘'}); const Content:
React.FC = () => { const [text, setText] = useRecoilState<string>(TextState); return ( <TextInput value={text} onChange={(event) => { setText(event.nativeEvent.text) }} /> ) } w "UPNΛఆٛ w $PNQPOFOU෦Ͱ3FDPJM4UBUFΛఆٛ ˠVTF4UBUFͱಉ͡Α͏ͳ͍ํͰ༻Մೳ w ͦͷଞʹ4FMFDUPS"UPN4FMFDUPSΛα ϙʔτ͢ΔͨΊͷ"1*͕͋Δ
3FDPJM֓ཁ·ͱΊ w '$ʹͱ͍ͮͨ*OUFSGBDFͰ༻Ͱ͖Δ4UBUF.BOBHFNFOU-JCSBSZ w +PUBJͳͲͷӨڹΛड͚ͨ-JCSBSZଘࡏ w "UPN4FMFDUPSΛఆٛͯ͠ɺ)PPLͷΑ͏ʹݺͼग़͢͜ͱͰ༻Ͱ͖Δ w γϯϓϧ w
ߋ৽͞Εͨ$PNQPOFOUͷΈ࠶ඳը͞ΕΔ w ۩ମతͳ༻ํ๏%PDVNFOUΛ͝ࢀরԼ͍͞
͓͍͑ͨ͜͠ͱ ಋೖͷഎܠ 3FDPJMʹ͍ͭͯ 3FBDU/BUJWFڥԼͰى͜Δ*TTVFTʹ͍ͭͯ
$POUSPMMFE$PNQPOFOUT w ࣗͰঢ়ଶΛอ࣋͢Δ$PNQPOFOUT w 3FBDUJOQVU UFYUBSFB TFMFDUͳͲ w 3FBDU/BUJWF5FYU*OQVU 4XJUDIͳͲ
w 3FBDU/BUJWFͷ$POUSPMMFE$PNQPOFOUͷ4UBUFͱͯ͠3FDPJMͷ4UBUFΛ༻ ͢Δͱɺෆ߹͕ൃੜ͢Δ IUUQTSFBDUKTPSHEPDTGPSNTIUNMDPOUSPMMFEDPNQPOFOUT
ྫ5FYU*OQVU VTF4UBUFΛ༻͢Δ const Content: React.FC = () => { const
[text, setText] = useState<string>(''); return ( <TextInput value={text} onChange={(event) => { setText(event.nativeEvent.text) }} /> ) }
ྫ5FYU*OQVU 3FDPJM4UBUFΛ༻͢Δ const TextState = atom({key: 'Text', default: ‘'}); const
Content: React.FC = () => { const [text, setText] = useRecoilState<string>(TextState); return ( <TextInput value={text} onChange={(event) => { setText(event.nativeEvent.text) }} /> ) }
VTF4UBUF VTF3FDPJM4UBUF
ݪҼ w ͓ͦΒ͘ TFU3FDPJM4UBUF෦Ͱඇಉظॲ ཧ͕͍ͬͯΔ w ͓ͦΒ͘ 5FYU*OQVUಉظతʹ͕ߋ৽ ͞ΕΔ͜ͱΛલఏʹ$PNQPOFOU͕࡞ΒΕ ͍ͯΔ
w Ұॠ͚ͩWBMVF͕ݩͷʹΔͨΊɺ͜ ͷΑ͏ͳࣄ͕ى͖Δ w 3FDPJMΛ༻͠ͳͯ͘ɺӈͷΑ͏ͳίʔ υͩͱTFU3FDPJM4UBUFͱಉ݁͡ՌʹͳΔ const Content: React.FC = () => { const [text, setText] = useState<string>(''); return ( <TextInput value={text} onChange={(event) => { const text = event.nativeEvent.text; setTimeout(() => { setText(text) }, 0) }} style={styles.sectionContainer} /> ) }
ରࡦ w جຊతʹɺը໘ͷΈͰߋ৽͞Ε ͨΛ༻͢Δ߹ʹɺ3FDPJMͷ 4UBUFΛ༻ͤͣɺTFU4UBUFΛ༻͍ Δ w Ͳ͏ͯ͠3FDPJMΛ͍͍ͨ߹ ɺVTF4UBUFͰҰ࣌తʹΛߋ৽͢ Δ͜ͱͰճආͰ͖Δ
const TextState = atom({key: 'Text', default: ''}); const Content: React.FC = () => { const [text, setText] = useState<string>(''); const setGlobalText = useSetRecoilState(TextState); useEffect(() => { setGlobalText(text); }, [text]) return ( <TextInput value={text} onChange={(event) => { const text = event.nativeEvent.text; setText(text) }} style={styles.sectionContainer} /> ) }
ͦͷଞ(JUIVCʹڍ͕͍ͬͯΔ*TTVFT
3FMFBTF#VJMEͰ4UBUFߋ৽͕Ͱ͖ͳ͍ w IUUQTHJUIVCDPNGBDFCPPLFYQFSJNFOUBM3FDPJMJTTVFT w 3FBDU/BUJWFͷΈͰى͜ΔΑ͏ w ࠶ݱ͢ΔͷͰ͋Εக໋తͳෆ۩߹ͱͳΓಘΔ w ݱঢ়ɺಛʹى͖ͨ͜ͱͳ͍
.FNPSZ-FBL w ͍͔ͭ͘*TTVFT͕͕͍͋ͬͯΔ w IUUQTHJUIVCDPNGBDFCPPLFYQFSJNFOUBM3FDPJMJTTVFT w IUUQTHJUIVCDPNGBDFCPPLFYQFSJNFOUBM3FDPJMJTTVFT w IUUQTHJUIVCDPNGBDFCPPLFYQFSJNFOUBM3FDPJMJTTVFT w
IUUQTHJUIVCDPNGBDFCPPLFYQFSJNFOUBM3FDPJMJTTVFT w BUPN'BNJMZTFMFDUPS'BNJMZͳͲͷ"1*Λ༻͢Δͱى͖Δʁ w ͜ͷෆ۩߹Λཧ༝ʹ+PUBJΛ༻͍ͯ͠Δͱ͍͏ίϝϯτݟ͔ͭͬͨ
·ͱΊ
·ͱΊ w 3FDPJMͱ͍͍ͯ͢ w "UPN4FMFDUPSΛ༻͢Δ͜ͱͰɺ(MPCBMͳ4UBUFΛVTF4UBUFͱಉ͡ײ֮Ͱ༻Ͱ͖Δ w ॊೈ͗͢ΔͷͰɺνʔϜ։ൃͰ࣮ࡍʹར༻͢Δࡍʹ༻ํ๏Λݕ౼ͨ͠΄͏͕ྑͦ͞͏ w 3FBDU/BUJWFڥԼͰͳ͘༻Ͱ͖͍ͯΔ w
-JCSBSZͱͯ͠&YQFSJNFOUBMͳҐஔ͚ w ͍͔ͭ͘ͷ՝ w 3FBDU/BUJWFͷ$PNQPOFOUͱซ༻͢Δ͜ͱͰى͖Δ*TTVF w ಛఆڥ༻ํ๏Ͱى͖Δ*TTVF
ॴײ w 3FBDUͷΤίγεςϜૉΒ͍͠ w 4UBUF.BOBHFNFOU-JCSBSZͷબࢶ͕ଟ͍ w બࢶ͕ଟ͗ͯ͢ɺ໎͏͜ͱଟ͍ w 3FDPJMҎ֎ͷ4UBUF.BOBHFNFOU-JCSBSZʹֶ͍ͭͯͼ͍ͨ w
ঢ়گʹԠͯ͡બఆͰ͖ΔΑ͏ɺ༷ʑͳ-JCSBSZͷ࣮༻ྫΛֶͼ͍ͨ