状態管理の設計をClaudeに相談する
Reactアプリを開発していると、「状態管理どのライブラリにすればいいんだろう」と悩む場面は多いですよね。Redux、Zustand、Jotai——それぞれ特徴が異なり、プロジェクトの規模や要件によって最適解が変わります。そんな設計判断こそ、Claude Codeに相談してみましょう。
まずプロジェクトの状況を伝えて選定する
Section titled “まずプロジェクトの状況を伝えて選定する”Claude Codeへの相談は「曖昧な質問」より「状況を具体的に伝える」ほうが精度の高い回答が得られます。たとえば次のように入力してみてください。
現在Reactで中規模のECサイトを開発しています。- チームメンバーは5人(Reduxの経験者が2人)- サーバー状態はTanStack Queryで管理予定- クライアント状態はカート情報・モーダル開閉・ユーザー設定など
Redux、Zustand、Jotaiのどれが適していますか?トレードオフも含めて比較してください。このように「規模・チームスキル・既存ライブラリ」を伝えると、Claudeは単なる机上の比較ではなく、あなたのプロジェクトに即したアドバイスを返してくれます。
選定後にそのまま実装コードを生成させる
Section titled “選定後にそのまま実装コードを生成させる”ライブラリを決めたら、続けて実装の相談ができます。たとえばZustandを選んだ場合、次のように会話を続けましょう。
Zustandで決めました。カート機能のストアを実装してください。商品の追加・削除・数量変更・合計金額の計算が必要です。TypeScriptで書いてください。するとClaudeは型定義付きのストアを生成してくれます。
import { create } from 'zustand'
type CartItem = { id: string name: string price: number quantity: number}
type CartStore = { items: CartItem[] addItem: (item: Omit<CartItem, 'quantity'>) => void removeItem: (id: string) => void updateQuantity: (id: string, quantity: number) => void total: () => number}
export const useCartStore = create<CartStore>((set, get) => ({ items: [], addItem: (item) => set((state) => ({ items: [...state.items, { ...item, quantity: 1 }], })), removeItem: (id) => set((state) => ({ items: state.items.filter((i) => i.id !== id) })), updateQuantity: (id, quantity) => set((state) => ({ items: state.items.map((i) => (i.id === id ? { ...i, quantity } : i)), })), total: () => get().items.reduce((sum, i) => sum + i.price * i.quantity, 0),}))生成されたコードをそのままプロジェクトに貼り付けて、動作確認しながら調整できます。
※TypeScript: JavaScriptに型定義を追加した言語。型チェックによりバグを事前に発見しやすくなる。
既存コードをリファクタリングする
Section titled “既存コードをリファクタリングする”すでにuseStateで管理しているコードをグローバル状態に移行したい場合も、Claudeに任せましょう。
以下のコンポーネントでuseStateを使っていますが、複数コンポーネントで状態を共有したいのでZustandに移行してください。
[既存コードをここに貼り付ける]このようにコードを直接渡して指示するだけで、既存の実装を壊さずにリファクタリング案を提示してくれます。設計の相談から実装・改善まで、Claude Codeをフルに活用してみてください。
※リファクタリング: 外部から見た動作を変えずに、コードの内部構造を整理・改善すること。