bunty's blog

ググったこととか勉強したことのメモ

関数の結果を後で再利用するために保持する手法をメモ化という

タイトルは正確な表現ではないかもしれない。
最近 React の勉強を始めて、React.memo とか hooks の中にも useMemo というものが出てきた。
例えば同じ引数の場合には同じ結果を返すことになるので、引数とともに返す結果をキャッシュしておくことで、毎回同じ計算をしなくて済むようになる。
再描画される際にどうしても実行しないといけない処理なんかは、メモ化することで余計な処理が実行されなくて済む。

reactjs.org

一度メモしたものを毎回返すようなイメージは持てるので、特に理解には困らなかったけど、そもそもちゃんと メモ化 という言葉があることを知らなかった。 wikipedia には下記の定義が記載されていた。

メモ化(英: Memoization)とは、プログラムの高速化のための最適化技法の一種であり、サブルーチン呼び出しの結果を後で再利用するために保持し、そのサブルーチン(関数)の呼び出し毎の再計算を防ぐ手法である。メモ化は構文解析などでも使われる(必ずしも高速化のためだけとは限らない)。キャッシュはより広範な用語であり、メモ化はキャッシュの限定的な形態を指す用語である。

ja.wikipedia.org

ここら辺をうまく使うには純粋関数にすることを意識する必要があるなと。
メモ化って言葉を知らなくても特に React を書く上で困ることはないかもしれない。
でも知らない単語はなるべく減らしていきたいし、使っている技術のベースとなる概念は知っておきたいと思った。