← inaro.devAI駆動開発 学習ツール
応用

useMemo / useCallback

なぜ学ぶか: AIは「最適化」と称してuseMemoをあちこちに振りかけることがあります。でも多くは不要で、むしろ読みにくくします。「何を節約しているか」が分かると、「このuseMemoは要る?」というレビューができます。

まずはこの例を見てみましょう

// useMemo = 「計算結果の使い回し」
const filtered = useMemo(
  () => products.filter((p) => p.includes(keyword)), // 重い計算(のつもり)
  [products, keyword], // ← この2つが変わらない限り、前回の結果を使い回す
);

「依存(末尾の配列)が変わらない限り、再計算しない」仕組み。ただし軽い計算に付けても意味がありません。

useMemo=計算結果の使い回し

例のとおり「重い計算のキャッシュ」です。依存が変わったときだけ再計算します。

ほとんどの計算には不要

数十件のfilter程度なら毎回計算しても一瞬です。useMemo自体にもコストがあるので、「測って遅かったら使う」が原則です。

「とりあえず全部」はノイズ

AIが機械的に全部包んでいたら「重い計算だけに絞って」と指示します。読みやすさも性能のうちです。

ステップ 1 / 3

※ カリキュラムの内容はAIが生成しており、誤りが含まれる場合があります。正確な情報は公式ドキュメント等でご確認ください。