【入門編】 Custom Hooksの設計原則と命名規則 – React実践ガイド

「Reactの魔法」を使いこなそう!Custom Hooksでコードを整理整頓する極意

こんにちは。Reactの世界へようこそ!
コンポーネントを書き始めて、「あれ、なんだかコードが長くなってきたな…」「同じような処理をあちこちで書いていて、メンテナンスが大変だぞ?」なんて感じたことはありませんか?

安心してください。それはあなたが「次のステップ」へ進む準備ができている証拠です。今日は、Reactマスターへの登竜門、「Custom Hooks(カスタムフックス)」についてお話しします。

—

Custom Hooksって、何者?

ひとことで言うと、Custom Hooksは「ロジックの持ち運び用バッグ」です。

例えば、お料理をするときに「野菜を切る」「調味料を測る」という手順を毎回ゼロから考えていたら大変ですよね。もし「下ごしらえセット」というバッグがあれば、それを取り出すだけで調理がスムーズになります。

Reactでも同じです。
「サーバーからデータを取ってくる」「入力フォームの状態を管理する」といった「よく使う一連の処理」をひとまとめにして、名前をつけて持ち運べるようにしたもの。それがCustom Hooksです。

—

1. 「use」から始める、魔法のルール

Custom Hooksを作る上で、たった一つだけ、絶対に守らなければならない「おまじない」があります。それは、名前を必ず `use` で始めることです。

なぜなら、Reactは `use` で始まる関数を見つけると、「あ、これは特別なHooksですね。状態管理や副作用(API通信など)を扱うんだな!」と自動的に判断して、裏側で一生懸命サポートしてくれるからです。

  • ✅ `useAuth`
  • ✅ `useWindowSize`
  • ❌ `fetchUserData` (これだと普通の関数だと思われてしまい、Reactの便利な機能が使えません)

—

2. ロジックを切り出してみよう

例えば、「ボタンを押すと、画面に『こんにちは!』と表示する」というシンプルな機能をCustom Hooksにしてみましょう。

Before: コンポーネントの中に全部詰め込む(ごちゃごちゃ!)

function Greeting() {
const [message, setMessage] = useState(”);

// 挨拶を作るというロジックがコンポーネントに直書きされている
const handleGreeting = () => {
setMessage(“こんにちは!Reactの世界へ!”);
};

return ;
}

After: Custom Hooksに切り出す(スッキリ!)

// useGreeting.js
import { useState } from ‘react’;

// ロジックだけを外に出す!
export function useGreeting() {
const [message, setMessage] = useState(”);

const sayHello = () => setMessage(“こんにちは!Reactの世界へ!”);

// 必要なものだけを「戻り値」として渡す
return { message, sayHello };
}

これで、他のコンポーネントでも `const { message, sayHello } = useGreeting();` と書くだけで、挨拶機能がすぐに使えるようになります。便利だと思いませんか?

—

3. 副作用との付き合い方(useEffectの隔離)

初学者が一番つまずくのが `useEffect` です。APIからデータを取ってきたり、画面のサイズを監視したりする処理ですね。これらはコンポーネントに直接書くと、どんどん複雑になって「スパゲッティコード」の原因になります。

Custom Hooksを使えば、この「副作用」という少し厄介な存在を、コンポーネントの視界から隠すことができます。

// 画面幅を監視するHooks
function useWindowWidth() {
const [width, setWidth] = useState(window.innerWidth);

useEffect(() => {
const handleResize = () => setWidth(window.innerWidth);
window.addEventListener(‘resize’, handleResize);

// 終わった後の片付けも忘れずに!
return () => window.removeEventListener(‘resize’, handleResize);
}, []);

return width;
}

コンポーネント側は「このHooksを使えば幅が取れる」ということさえ知っていれば、中の `useEffect` の複雑な処理を気にしなくて済むのです。これが「関心の分離」という、プロが大切にしている考え方です。

—

最後に:つまずいたって大丈夫

Custom Hooksの設計は、最初から完璧にできる人なんていません。「ここ、切り出せるかな?」と迷ったら、まずはコンポーネントに書いてみて、長くなってきたら少しずつ外に出す。その繰り返しでいいんです。

1. 名前は必ず `use` から始める。
2. コンポーネントの「見た目(JSX)」と「動き(ロジック)」を分ける。
3. 再利用したい処理を見つけたら、すぐに抽出する。

この3つを意識するだけで、あなたの書くコードは驚くほど読みやすく、そしてメンテナンスしやすくなります。

Reactという道具は、あなたの創造力を形にするための魔法の杖です。少しずつ、楽しみながら一緒にレベルアップしていきましょうね。応援しています!

コメント

タイトルとURLをコピーしました