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
230
グローバルBtoB SaaSにおける React開発の課題と実践
kfurusho
2
1.7k
Other Decks in Programming
See All in Programming
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
980
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
160
iOSDC2026登壇資料.pdf
riofujimon
0
200
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
370
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
270
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
180
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
220
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
110
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
990
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
720
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
440
Featured
See All Featured
Darren the Foodie - Storyboard
khoart
PRO
4
4k
A designer walks into a library…
pauljervisheath
211
25k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Agile that works and the tools we love
rasmusluckow
331
22k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
A Soul's Torment
seathinner
8
3.7k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
290
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
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