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
条件に応じた状態管理方法の選択
Search
North Ko-hi
December 11, 2019
Programming
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
条件に応じた状態管理方法の選択
North Ko-hi
December 11, 2019
Other Decks in Programming
See All in Programming
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
180
AWSに止められる覚悟してますか?
morizo_1984
2
540
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
140
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
0
510
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
280
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
980
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
140
[2026-10-14](C)Re:ゼロから始める異世界生活〜始まりの終わりと終わりの始まり〜
tosite
0
110
APNsからLive Activityを開始する話
yumnumm
0
170
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
270
npm との違いを手がかりにGo の依存管理を理解したい
optim
0
800
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
170
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
72
12k
GraphQLとの向き合い方2022年版
quramy
50
15k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
890
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
730
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
The Curse of the Amulet
leimatthew05
3
16k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
850
WCS-LA-2024
lcolladotor
0
890
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
520
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Transcript
条件に応じた 状態管理方法の選択 きたざー
自己紹介 - 名前:koheikitazawa (Twitter: きたざー) - 所属:SIer - 業務:PoC〜MVP開発とたまにAI開発 -
Vuejs初めて5ヶ月!開発4ヶ月!初心者! https://www.npmjs.com/package/firex-store 作ったNPM: LT初心者です。 お願いします。
※ あくまで数ある考えの中の1つであり、 この考えが唯一神、 という訳ではありません。
アジェンダ - 経緯 - 状態管理の方法 ~Vuex/Vue.observable/Simple Storeのメリット・デメリット~ - 状態管理の使い分け ~選定軸の一例~ -
結論 - 作ったNPMライブラリの紹介
Event Bus Vuex Simple Store Vue.observable
Event Bus Vuex Simple Store Vue.observable
アジェンダ - 経緯と目的 - 状態管理の方法 ~Vuex/Vue.observable/Simple Storeのメリット・デメリット~ - 状態管理の使い分け ~選定軸の一例~ -
結論 - 作ったNPMライブラリの紹介
言語定義 保守性 ・テスタビリティ 大規模(開発) ・開発人員が8人以上
アジェンダ - 経緯と目的 - 状態管理の方法 ~Vuex/Vue.observable/Simple Storeのメリット・デメリット~ - 状態管理の使い分け ~選定軸の一例~ -
結論 - 作ったNPMライブラリの紹介 開発向け視点:コスト 保守向け視点:保守性・規約・デバッグ(TTD)・ 型推論
Simple Store
Simple Store 保守性 規約レベル コスト デバッグ 型推論 低 低 低
不可 可能 設定 (コーディング規約)を 決める必要あり JavaScript(TypeScr ipt)の知識のみで実 装が可能 store.stateを直接上 書きしてしまい、参照 渡しのデータの同一 性が消える可能性 store.stateを直接上 書きしてしまい、参照 渡しのデータの同一 性が消える可能性
Vue.observable
Vue.observable 保守性 規約レベル コスト デバッグ 型推論 中 低 低 不可
可能 設定 (コーディング規約)を 決める必要あり JavaScript(TypeScr ipt)の知識のみで実 装が可能 store.stateを直接上 書きしてしまい、参照 渡しのデータの同一 性が消える可能性 実装次第でデータの 直接更新を不可能 にできるため
Vuex
Vuex 保守性 規約レベル コスト デバッグ 型推論 高 高 高 可能
不可 (※デフォルト) 関心(責任)の分離 初心者でも同じよう なコードがかける 学習・実装コスト
アジェンダ - 経緯と目的 - 状態管理の方法 ~Vuex/Vue.observable/Simple Storeのメリット・デメリット~ - 状態管理の使い分け ~選定軸の一例~ -
結論 - 作ったNPMライブラリの紹介
VuexとVue.observable/SimpleなStoreの使い分け Vue.observable/SimpleなStore 一度DBから取得後、参照のみで更新はしない?( Ex.システム定数) Vuex 更新した値により、複雑な分岐の発生無 & ( 更新元が単一 or
複数だがアーキテクチャから特定可能 ) タイムトラベルデバックできなくてもいい? 小規模?
VuexとVue.observable/SimpleなStoreの使い分け Vue.observable/SimpleなStore 一度DBから取得後、参照のみで更新はしない?( Ex.システム定数) Vuex 更新した値により、複雑な分岐の発生無 & ( 更新元が単一 or
複数だがアーキテクチャから特定可能 ) タイムトラベルデバックできなくてもいい? 小規模?
VuexとVue.observable/SimpleなStoreの使い分け Vue.observable/SimpleなStore 一度DBから取得後、参照のみで更新はしない?( Ex.システム定数) Vuex 更新した値により、複雑な分岐の発生無 & ( 更新元が単一 or
複数だがアーキテクチャから特定可能 ) タイムトラベルデバックできなくてもいい? 小規模? 1. 更新しない→タイムトラベルデバッグの必要性 が限りなく少ないため 2. Vuexの場合、state/getter/action/mutation全て を実装する必要があり、実装コストが高いため
VuexとVue.observable/SimpleなStoreの使い分け 一度DBから取得後、参照のみで更新はしない?( Ex.システム定数) Vue.observable/SimpleなStore Vuex 更新した値により、複雑な分岐の発生無 & ( 更新元が単一 or
複数だがアーキテクチャから特定可能 ) タイムトラベルデバックできなくてもいい? 小規模? そのまんま
VuexとVue.observable/SimpleなStoreの使い分け 一度DBから取得後、参照のみで更新はしない?( Ex.システム定数) Vue.observable/SimpleなStore Vuex 更新した値により、複雑な分岐の発生無 & ( 更新元が単一 or
複数だがアーキテクチャから特定可能 ) タイムトラベルデバックできなくてもいい? 小規模? Ex. DBError管理用Store 更新元:各Repositoryの ErrorHandlerからのみ 描画:エラー内容 など 通常のデバッグでも事足りる
VuexとVue.observable/SimpleなStoreの使い分け 一度DBから取得後、参照のみで更新はしない?( Ex.システム定数) 一度DBから取得後、参照のみで更新はしない?( Ex.システム定数) Vue.observable/SimpleなStore Vuex 更新した値により、複雑な分岐の発生無 & (
更新元が単一 or 複数だがアーキテクチャから特定可能 ) タイムトラベルデバックできなくてもいい )? 小規模? アーキテクチャの理解& コードの質の統一が 設定レベルで可能なため ※人の増加・人の入れ替わ りが想定される場合はVuex の方がいい可能性
※ もちろんこれだけではない
開発にアサインされる 人員のスキルセットは? 開発したサービスは 何年間使うのか? PoCか、製品か サービスを保守するのは 誰か? 外部委託か?
結論 要件/コーダの質などから適切な状態管理手法を選びましょう 保守性 規約レベル コスト デバッグ 型推論 Vuex 高 高
高 可能 不可 (※デフォルト) Vue .observable 中 中 低 不可 可能 Simple Store 低 低 低 不可 可能
終了前に... https://www.npmjs.com/package/firex-store https://github.com/nor-ko-hi-jp/firex-store 何故、車輪の再開発をしたか知りたければ説明しますので、 気軽にお話しかけください。 基本はVuexFireと同じ 機能と思ってください。
以上 ご静聴ありがとうございました!