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
XStateを用いた堅牢なReact Components設計~複雑なClient State...
Search
k-furusho
February 14, 2025
Programming
2.4k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
XStateを用いた堅牢なReact Components設計~複雑なClient Stateをシンプルに~ @React Tokyo ミートアップ #2
k-furusho
February 14, 2025
More Decks by k-furusho
See All by k-furusho
AI時代のLiterate Programming再解釈
kfurusho
0
240
グローバルBtoB SaaSにおける React開発の課題と実践
kfurusho
2
1.7k
Other Decks in Programming
See All in Programming
phperだってパンチカードでコーディングしたい
o0h
PRO
0
410
[2026-10-14](C)Re:ゼロから始める異世界生活〜始まりの終わりと終わりの始まり〜
tosite
0
150
Event is what happens
moro
2
1.5k
最近”作らせてる” ローカルAIアプリの話
akit37
0
500
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
1.8k
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
470
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
600
APNsからLive Activityを開始する話
yumnumm
0
170
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
1.1k
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
200
Vue Fes Japan の “作る側”に関わってみて
naokihaba
1
180
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5.6k
Featured
See All Featured
Thoughts on Productivity
jonyablonski
76
5.4k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
420
Mobile First: as difficult as doing things right
swwweet
225
10k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
280
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
580
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
530
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
380
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
490
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
740
Transcript
© DressCode Inc . XStateを用いた堅牢な React Components設計 ~複雑なClient Stateをシンプルに~ React
Tokyo Meetup #2 Dress Code株式会社 古庄 和也
• React歴 ◦ 約3年 • 業務 ◦ BtoB SaaS「DRESS CODE」のプロダクト開発
• 経歴 ◦ 2020年 レバレジーズ新卒入社 ◦ 2024年 - Dress Code株式会社 • 趣味 ◦ React / ゴルフ / 競馬 / ポーカー 自己紹介 ふるしょう(@k_furusho_)
© DressCode Inc . 1. XStateとは 2. 複雑なReactComponentsの事例 3. 状態遷移の流れ
4. UIと状態の連携 5. まとめ Agenda
© DressCode Inc . XStateとは
XStateとは • TypeScript/Vanilla JSで使えるState Machine/Chartライブラリ ◦ 有限状態とイベントを用いて状態遷移を厳密に管理 ◦ Backendでも活用可能 ◦
@xstate/reactでは、専用のフックuseMachineを使用 • 推しポイント ◦ DMMF本で提唱されている「Make Illegal States Unrepresetable」の実現容易性 が高く、「有り得る状態の型定義」に加えて状態遷移が明確に定義可能。ガード条 件で不正な状態遷移を防げる • XStateに関するおすすめ資料 ◦ Xstate Stately ◦ Xstate Catalogue ◦ susiyakiさんのJS/TSで堅牢な状態管理を可能にするXStateの解説
実装例:SimpleCounterMachine • 状態の定義 ◦ active状態のみ ◦ INCREMENTとDECREMENTの2つ イベントで状態を管理 • ガード条件
◦ DECREMENTイベントにはガード条 件を設定し、valueが0よりも大きい 場合のみ減算を許可 ◦ valueが負の値になる状態を防ぐ
© DressCode Inc . 複雑な React Componentsの事例
「企業における汎用的なルール策定に必要なフィルタリングの実現」 • 条件設定 ◦ 検索対象(Subject), 演算子(Operator), 値(Object)から構成 ◦ 条件の組み合わせはAND/OR条件で個別に指定可能 ◦
条件毎のグルーピング可能 • 状態のUIへの反映 ◦ ユーザーの入力に応じて、動的にフィルタリング結果を更新 ◦ フィルタリング条件の変更が即時反映されるインタラクションの実現 • 不正な状態の防止 ◦ ex: 検索対象の選択前に演算子を選択, 同一リソースに対する複数操作の同時実行 複雑な機能要件例
© DressCode Inc .
© DressCode Inc . 状態遷移の流れ
© DressCode Inc . Xstateとは
© DressCode Inc . Xstateとは MainStates
© DressCode Inc . Xstateとは MainStates SubStates
© DressCode Inc . UIとClient Stateの連携
具体的なディレクトリ構成例と依存関係
UIと状態の連携フロー Server State Client State
© DressCode Inc . まとめ
• 堅牢なClient Stateの管理が実現できる ◦ 状態遷移が明確に定義され、予期しない状態遷移を防止 • 開発効率の改善 ◦ 状態遷移ロジックをコンポーネントから分離できるため、 テストしやすく際利用
可能なロジックの構築が可能 ◦ StateMachine × LLM テスト生成の相性が良い ◦ 仕様の認識齟齬防止にも繋がる ▪ 可視化したStateMachineをベースにPdMや関係者と仕様を擦り合わせやすい • 拡張性と保守性 ◦ 状態遷移が一元化できるため、追加要求が生じた場合にも品質保証しやすい ◦ ドメインモデリングとの相性も良いため、featruesベースの開発にも相性が良い まとめ
© DressCode Inc . End