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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
miyanokomiya
August 20, 2025
Programming
0
210
The state patternの実践 個人開発で培ったpractice集
For: すごくすごい。フロントエンドミートアップ 〜複雑GUI・アーキテクチャ設計を語ろう〜
https://formx.connpass.com/event/364158/
miyanokomiya
August 20, 2025
Tweet
Share
More Decks by miyanokomiya
See All by miyanokomiya
RealtimeDBルールでの頑張り
miyanokomiya
1
370
Other Decks in Programming
See All in Programming
Vibe Coding - AI 驅動的軟體開發
mickyp100
0
180
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
620
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
1
990
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
280
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
690
AI時代の認知負荷との向き合い方
optfit
0
170
dchart: charts from deck markup
ajstarks
3
1k
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
440
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
180
そのAIレビュー、レビューしてますか? / Are you reviewing those AI reviews?
rkaga
6
4.6k
カスタマーサクセス業務を変革したヘルススコアの実現と学び
_hummer0724
0
740
humanlayerのブログから学ぶ、良いCLAUDE.mdの書き方
tsukamoto1783
0
200
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.8k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
430
Exploring anti-patterns in Rails
aemeredith
2
250
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
Why Our Code Smells
bkeepers
PRO
340
58k
Being A Developer After 40
akosma
91
590k
Deep Space Network (abreviated)
tonyrice
0
65
Paper Plane (Part 1)
katiecoart
PRO
0
4.3k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
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!