ユーザーアイコン

mizuko

約2か月前

0
0

MSW モックデータの状態管理パターン

TypeScript
MSW

MSW (Mock Service Worker) でモックAPIを実装する際、データの永続性と一貫性を保つためのシングルトンパターンによる状態管理手法。

メリット

データの永続性と一貫性

  • API間でのデータ共有が可能(作成したデータが一覧取得APIでも返される)
  • リレーションの管理(ユーザーとメモ、ノートとメモなど関連データの整合性)
  • セッション中の状態維持(いいね、ブックマークなどの状態が保持される)

リアルなAPIの挙動を再現

  • 実際のバックエンドと同じように、CRUD操作が他のAPIに反映される
  • 開発時に本番環境に近い動作確認が可能

実装パターン

// シングルトンクラスで状態管理 class MockDataStore { private memos: Memo[] = []; private users: User[] = []; getMemos() { return this.memos; } addMemo(memo: Memo) { this.memos.push(memo); } updateMemo(id: number, updates: Partial<Memo>) { /* 更新ロジック */ } deleteMemo(id: number) { /* 削除ロジック */ } } export const mockDataStore = new MockDataStore(); // ハンドラーでの使用例 http.get('/api/v1/memos', () => { return HttpResponse.json({ memos: mockDataStore.getMemos() }); });

使い分けの指針

mockDataStore が適している場合

  • CRUD操作があるデータ
  • ユーザーセッション中の状態管理が必要
  • データ間の関連性が重要

factory 直接呼び出しが適している場合

  • 静的なマスターデータ(都道府県リストなど)
  • 独立したデータで関連性がない
  • 読み取り専用のAPI
  • プロトタイプや開発初期段階