カテゴリ: Next.js 更新日: 2026/03/05

Next.jsのhooksフォルダの作り方を完全ガイド!初心者でもわかるカスタムフック管理

Next.jsのhooksフォルダの作り方(カスタムフック管理)
Next.jsのhooksフォルダの作り方(カスタムフック管理)

先生と生徒の会話形式で理解しよう

生徒

「Next.jsって、同じ処理を何回も書かないといけないんですか?」

先生

「同じ処理はまとめて再利用できます。そのために使うのがカスタムフックです。」

生徒

「カスタムフックって、どこに置けばいいんですか?」

先生

「hooksフォルダを作って管理すると、とても分かりやすくなりますよ。」

1. Next.jsのhooksフォルダとは?

1. Next.jsのhooksフォルダとは?
1. Next.jsのhooksフォルダとは?

Next.jsのhooksフォルダとは、カスタムフックと呼ばれる特別な関数をまとめて保存するための場所です。 フックとは、ReactやNext.jsで使われる仕組みで、画面の状態を管理したり、便利な処理を部品のように使い回したりできます。

プログラミング未経験の方は、「よく使う作業を一つの箱にまとめておく引き出し」と考えると分かりやすいです。 hooksフォルダを作ることで、どこに何が書いてあるのか迷いにくくなります。

2. hooksフォルダを作る場所

2. hooksフォルダを作る場所
2. hooksフォルダを作る場所

Next.jsでは、hooksフォルダは自由に作れますが、一般的にはプロジェクトの直下、またはsrcフォルダの中に作ります。 例えば、pagesフォルダやappフォルダと同じ階層にhooksフォルダを作ると管理しやすくなります。

フォルダ構成を整理することは、本棚にジャンルごとに本を並べるのと同じです。 hooksフォルダがあるだけで、「ここを見れば便利な処理が全部ある」とすぐ分かります。

3. 最初のカスタムフックを作ってみよう

3. 最初のカスタムフックを作ってみよう
3. 最初のカスタムフックを作ってみよう

カスタムフックは、useから始まる名前の関数です。 ここでは、文字を表示するための簡単なカスタムフックを作ります。


import { useState } from "react";

export function useMessage() {
  const [message, setMessage] = useState("こんにちは");

  return { message, setMessage };
}
(最初は「こんにちは」という文字を管理し、あとから自由に変更できる仕組みです)

4. hooksフォルダのフックをページで使う

4. hooksフォルダのフックをページで使う
4. hooksフォルダのフックをページで使う

作ったカスタムフックは、Next.jsのページやコンポーネントから呼び出して使います。 これにより、同じ処理を何度も書かなくて済みます。


import { useMessage } from "../hooks/useMessage";

export default function Home() {
  const { message, setMessage } = useMessage();

  return (
    <div>
      <p>{message}</p>
      <button onClick={() => setMessage("変更されました")}>
        変更する
      </button>
    </div>
  );
}
(画面に文字が表示され、ボタンを押すと表示内容が切り替わります)

5. よく使う処理をhooksにまとめるメリット

5. よく使う処理をhooksにまとめるメリット
5. よく使う処理をhooksにまとめるメリット

hooksフォルダに処理をまとめる最大のメリットは、コードが読みやすくなることです。 ページの中には画面表示の内容だけを書き、裏側の処理はhooksに任せられます。

これは、料理で例えると、下ごしらえを別の場所で済ませてから盛り付けをするイメージです。 見た目と中身が整理され、ミスも減ります。

6. 複数の値を扱うカスタムフック例

6. 複数の値を扱うカスタムフック例
6. 複数の値を扱うカスタムフック例

カスタムフックでは、複数の状態をまとめて管理できます。 次は、数を増やすためのシンプルな例です。


import { useState } from "react";

export function useCounter() {
  const [count, setCount] = useState(0);

  const increment = () => {
    setCount(count + 1);
  };

  return { count, increment };
}
(ボタンを押すたびに数字が1ずつ増えていく仕組みです)

7. hooksフォルダの名前付けルール

7. hooksフォルダの名前付けルール
7. hooksフォルダの名前付けルール

hooksフォルダの中では、ファイル名も大切です。 ファイル名はuse〇〇という形にすると、「これはフックだ」と一目で分かります。

例えば、useMessage、useCounterのように、何をするフックなのかが名前から想像できると便利です。 名前は短く、役割が伝わるものを意識しましょう。

8. hooksフォルダ管理でよくある失敗

8. hooksフォルダ管理でよくある失敗
8. hooksフォルダ管理でよくある失敗

初心者の方がよくやってしまうのが、hooksフォルダに何でも入れてしまうことです。 hooksフォルダには「状態管理や共通処理」だけを入れるのがポイントです。

画面の見た目に関するコードはコンポーネントに、処理の共通部分はhooksに分けることで、 Next.jsのディレクトリ構成がスッキリします。

カテゴリの一覧へ
新着記事
New1
React
ReactのuseState更新関数に関数を渡す方法を解説!前回の値を利用して安全に状態更新
New2
React
create-react-appでReactプロジェクトを作成する手順を初心者向けに完全解説!
New3
Next.js
Next.jsのhooksフォルダの作り方を完全ガイド!初心者でもわかるカスタムフック管理
New4
Next.js
Next.jsのPages Routerフォルダ構成を完全ガイド!初心者でもわかるNext.jsのpagesディレクトリ
人気記事
No.1
Java&Spring記事人気No1
React
Reactの条件分岐の使い方を完全ガイド!初心者でもわかるReactの条件分岐
No.2
Java&Spring記事人気No2
React
Reactの条件分岐の使い方を完全ガイド!初心者でもわかるReactの条件分岐
No.3
Java&Spring記事人気No3
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.4
Java&Spring記事人気No4
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.5
Java&Spring記事人気No5
React
create-react-appでReactプロジェクトを作成する手順を初心者向けに完全解説!
No.6
Java&Spring記事人気No6
React
Reactのライフサイクルでよくあるバグとデバッグ方法を初心者向けに解説
No.7
Java&Spring記事人気No7
React
React共通コンポーネントの作り方完全ガイド!ボタンと入力フォームを再利用しよう
No.8
Java&Spring記事人気No8
React
ReactでonChangeイベントを使ってフォーム入力値を管理する方法を初心者向けに解説