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
The state patternの実践 個人開発で培ったpractice集
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
miyanokomiya
August 20, 2025
Programming
240
0
Share
The state patternの実践 個人開発で培ったpractice集
For: すごくすごい。フロントエンドミートアップ 〜複雑GUI・アーキテクチャ設計を語ろう〜
https://formx.connpass.com/event/364158/
miyanokomiya
August 20, 2025
More Decks by miyanokomiya
See All by miyanokomiya
RealtimeDBルールでの頑張り
miyanokomiya
1
380
Other Decks in Programming
See All in Programming
Spec-Driven Development with AI Agents (Workshop, May 2026)
antonarhipov
3
400
ローカルLLMでどこまでコードが書けるか / How much code can be written on a local LLM
kishida
2
370
決定論 vs 確率論:Gemini 3 FlashとTF-IDFを組み合わせた「法規判定エンジン」の構築
shukob
0
170
iOS26時代の新規アプリ開発
yuukiw00w
0
160
AIエージェントの隔離技術の徹底比較
kawayu
0
270
書き換えて学ぶTemporal #fukts
pirosikick
2
380
Agentic Elixir
whatyouhide
0
450
実践ハーネスエンジニアリング:ステアリングループを実例から読み解く / Practical Harness Engineering: Understanding Steering Loops Through Real-World Examples
nrslib
5
5.7k
Cloudflare で始める Data Platform
ta93abe
0
190
ふにゃっとしない名前の付け方 〜哲学で茹で上げる、コシのあるソフトウェア設計〜
shimomura
0
120
Firefoxにコントリビューションして得られた学び
ken7253
2
170
AIを導入する前にやるべきこと
negima
2
370
Featured
See All Featured
The browser strikes back
jonoalderson
0
1.1k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
120
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
520
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.6k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
We Are The Robots
honzajavorek
0
230
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
560
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
220
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.1k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.1k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
340
Transcript
The state patternの実践 個人開発で培ったpractice集
Intro 1. The state patternとは? 2. Practice 1: State分割中心設計 3.
Practice 2: 共通化 < 並行化 4. Practice 3: 同期的なstate遷移 @robokomy 右みたいなのが年々増えてます Agenda
The state patternとは?
The state patternとは? Refs: https://gameprogrammingpatterns.com/state.html https://refactoring.guru/ja/design-patterns/state The state patternとは? •
デザインパターンの1つ(≠フロントエンド文脈の一般的なstate) • ゲーム開発における定番手法 State · Design Patterns Revisited このLTを届けたい人たち • ユーザー操作が複雑なGUIを実装したことがある人 • 最初は順調だったそのコードが複雑になりすぎて何も分からなくなった人 • 作図・お絵かき的なツールを育てていきたい人
Practice 1: State分割中心設計
Practice 1: State分割中心設計 • 例: ラインを描画する一連の操作 • 制御用の状態は増え続ける • 操作の数だけ状態は積み上がる
• 状態の遷移に基づく分割統治 • 各stateは独立した存在 効果: 処理と状態のスコープが小さくなり見通しが良くなる 複雑GUIを破綻させずにスケールアップするための強力なデザイン
Practice 2: 共通化 < 並行化
Practice 2: 共通化 < 並行化 • 似たstateをコピペ量産することを恐れない ◦ 各stateは独立しているのでシステムの複雑度は高々その state分増えるだけ
◦ そのstateを更新しない限り新たな複雑さはもたらさず、更新したとしても高々その state分 の複雑さに留まる ◦ バグ対応などで修正箇所が多い分の手間は増えるが手間は安い。型補助もあるし AIもあ る • コピペ量産の果てに共通化あり ◦ 早すぎた不適切な共通化はシステムの複雑度を一気に増やす(関連 state数で乗算) ◦ 共通化された部分に手を加える度に新たな複雑さは関連 state数で乗算される ◦ コピペコードの共通化は手間だが AIの得意分野 • Class断固拒否(諸説あり) ◦ Classあるところに継承あり ◦ 継承してちょちょいとフラグと分岐を追加しての最小コードで済ませる誘惑に人類は打ち勝 てない 効果: システムの複雑度が眼前のコード量以上に増えない State更新時の複雑度イメージ
Practice 3: 同期的なstate遷移
Practice 3: 同期的なstate遷移 • ユーザーイベントをハンドリングした結果と して次のstateをreturnする設計 • 同期的な遷移に作り変え ◦ 同期な世界で完結するシンプルコード
◦ 隙間が発生しないスムーズな state遷移とライフサイクル • 非同期なstate遷移は脱出ハッチ的な後付実現可能 • 柔軟さ考慮で最初は非同期を採用したが様々な問題に遭遇 ◦ コードが冗長(影響小) ◦ ユーザーイベントがPromise解決の隙間に落ちて stateのライフサ イクルを逸脱した動作を引き起こす(影響大) • 非同期なstate遷移が必要な場面に全く遭遇せず無活躍 効果: 全体の98%を占める同期的state遷移が非常にシンプルになる
Thanks!