

中嶋悟
名前:中嶋 悟(なかじま さとる) ニックネーム:サトルン 年齢:28歳 性別:男性 職業:会社員(IT系メーカー・マーケティング部門) 通勤場所:東京都千代田区・本社オフィス 通勤時間:片道約45分(電車+徒歩) 居住地:東京都杉並区・阿佐ヶ谷の1LDKマンション 出身地:神奈川県横浜市 身長:175cm 血液型:A型 誕生日:1997年5月12日 趣味:比較記事を書くこと、カメラ散歩、ガジェット収集、カフェ巡り、映画鑑賞(特に洋画)、料理(最近はスパイスカレー作りにハマり中) 性格:分析好き・好奇心旺盛・マイペース・几帳面だけど時々おおざっぱ・物事をとことん調べたくなるタイプ 1日(平日)のタイムスケジュール 6:30 起床。まずはコーヒーを淹れながらニュースとSNSチェック 7:00 朝食(自作のオートミールorトースト)、ブログの下書きや記事ネタ整理 8:00 出勤準備 8:30 電車で通勤(この間にポッドキャストやオーディオブックでインプット) 9:15 出社。午前は資料作成やメール返信 12:00 ランチはオフィス近くの定食屋かカフェ 13:00 午後は会議やマーケティング企画立案、データ分析 18:00 退社 19:00 帰宅途中にスーパー寄って買い物 19:30 夕食&YouTubeやNetflixでリラックスタイム 21:00 ブログ執筆や写真編集、次の記事の構成作成 23:00 読書(比較記事のネタ探しも兼ねる) 23:45 就寝準備 24:00 就寝
reduxとuseReducerの基本を知ろう
Reduxとは何かをまず押さえましょう。Reduxはウェブアプリの状態を外部の「ストア」という場所に集約して管理する仕組みです。ストアは一つの大きなオブジェクトで状態を保持します。アクションと呼ばれるメッセージを発行し、それを受け取って状態をどう変えるかを決めるのが reducer です。これにより、どの時点でどんなデータが変わったのかを追いやすくなり、デバッグやテストがしやすくなります。さらにミドルウェアを挟むことで、非同期処理やロギング、サーバーとの通信を組み込みやすくします。
一方、useReducerはReactの組み込みフックで、表示している部品(コンポーネント)内の状態を reducer の考え方で管理します。グローバルなストアを持つのではなく、局所的な状態管理に適している点が特徴です。useReducerは reducer 関数と初期状態を渡してスタートします。dispatchを呼ぶと reducer が現在の状態と action を受け取り、新しい状態を返します。
この二つの仕組みは“減らしていく関数”という共通の考え方をもっていますが、使いどころと規模感が大きく異なります。 Reduxは大きなアプリ全体の流れを統制するのに向き、useReducerは小さな部品単位の状態変化をシンプルに扱うのに向いています。
- スコープと適用範囲: Redux はグローバル寄り、useReducer は局所的
- データの流れ: アクション → Reducer → 新しいストア
- ミドルウェア: Redux は豊富(redux-thunk、redux-saga など)
- デバッグ: Redux は強力なツールとタイムトラベル
- 用途: Redux は大規模アプリのグローバル状態、useReducer は局所的または軽量な状態
以下は表形式の比較と使い分けのポイントです。
まとめとして、グローバルなデータの整合性が必要な場合は Redux、個別の部品の状態管理をシンプルに済ませたい場合は useReducer を選ぶのが基本的な考え方です。
実務ではこの二つを組み合わせて使うケースも多く、全体を Redux、個々の部品を useReducer で処理するハイブリッドが現実的な解として広がっています。
実は redux と useReducer の違いは、器の大きさと使う場所の考え方にあります。友だちとカフェでこの話をしていた時、私は『Reduxは大きな教室の黒板、useReducerは机の上のノート』と言い換えました。教室全体の情報を一元管理する Redux は、複数の先生と生徒が関わる授業設計に似ていて、全員が同じ授業方針に従えます。一方、useReducer は個々の机の上の授業に最適化され、隣の席と情報を共有する必要がなければシンプルで速い。最近のプロジェクトで、私たちはこの二つを組み合わせて使い、局所の状態は useReducer、全体のデータは Redux で管理しています。こうすることで、動きが安定し、ミスも減りました。もしあなたが初めてこの二つを触るなら、まず「このデータは全体に影響を及ぼすか、それともこの画面だけに関係するか」を考えると良いです。グローバル性が低いデータには useReducer、広く共有されるデータには Redux を使ってみましょう。さらに、学習コストの面でも、最初は useReducer で感覚を掴み、その後徐々に Redux の考え方やミドルウェアの使い方を覚えるのが現実的です。最後に、チーム内で共通の用語や命名規則を決めると、他のメンバーが理解しやすくなり、長期的な保守性が高まります。
\n