遅延評価とは?
ちえんひょうか
遅延評価とは、式や計算の実行を必要になる時点まで先送りするプログラミングの評価戦略です。
遅延評価(ちえんひょうか、Lazy Evaluation)とは、プログラム中の式や値の計算を、その結果が実際に必要になる瞬間まで遅らせる評価戦略です。対義語は「正格評価(Eager Evaluation)」で、こちらは式を定義した時点で即座に計算します。
遅延評価の主なメリットは次のとおりです。
- 不要な計算の回避:最終的に使われない値を計算しないため、処理コストを削減できる
- 無限データ構造の扱い:無限リストや無限シーケンスを定義し、必要な分だけ取り出すことが可能になる
- 短絡評価:論理演算でfalseが確定した時点でそれ以降の評価を打ち切る
代表的な実装例としては、Haskellがデフォルトで遅延評価を採用していることが有名です。PythonのジェネレータやJavaのStreamも遅延評価の考え方を取り入れており、大量データを扱う際のメモリ効率を高めます。JavaScriptでは短絡評価(&&や||)が遅延評価の具体例として日常的に登場します。
一方で、遅延評価にはデバッグの難しさや、評価タイミングが予測しにくいことによる副作用の扱いの複雑さというデメリットもあります。また、クロージャを積み重ねることによるメモリ消費(サンク蓄積)が問題になる場合もあります。プログラミング言語・フレームワーク設計において、パフォーマンスと扱いやすさのトレードオフを考慮しながら使い所が選ばれる概念です。
使い方・例文
Pythonで range(1, 1000000) を使うとき、すべての数値を一度にメモリに展開せず必要な値だけ順に生成するのが遅延評価の典型例であり、データパイプラインやストリーム処理でも広く活用されます。
この用語をシェア
最終更新: