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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
50k
ChatworkとBPaaS 異なる特性で学んだAI機能開発の ベストプラクティス
kubell_hr
2
2.9k
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.8k
AI と創る新たな世界 / A New World Created with AI
ks91
PRO
0
120
チームで実践する AI-DLC 思考の軌跡を残すチェックポイント設計
belongadmin
0
2.7k
EventBridge Connection
_kensh
4
590
先取りMaven4 ~16年ぶりのメジャーアップデート、その進化とは?~
ogiwarat
0
140
価格.comをAI駆動で全面刷新する ー 30年分の技術的負債を返し、次の30年の土台をつくる ー / AI Engineering Summit Tokyo 2026
tkyowa
49
54k
2026.06.13_AI時代に事業会社が「SIer出身エンジニア」を求める理由 / Why Businesses Seek Engineers with a System Integrator Background in the AI Era
jumtech
0
550
Cloud Run のアップデート 触ってみる&紹介
gre212
0
320
Unlocking the Apps
pimterry
0
240
トークン数だけでは測れない — Claude Code 組織展開の効果検証から学んだこと
makikub
0
130
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
160
From π to Pie charts
rasagy
0
200
Exploring anti-patterns in Rails
aemeredith
3
390
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
190
Designing for Timeless Needs
cassininazir
1
250
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
300
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
210
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
280
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ͷ࣮༻ྫΛֶͼ͍ͨ