副作用とは、コンピュータプログラミングにおける意味合いとしては、ある機能がプログラム上のデータを変化させ、それ以降の演算の結果に影響を与えることを指します。噛み砕いて言えば、数学的関数は本来計算結果を返すことが目的ですが、その過程で周囲の状態を変化させてしまうことを指します。このような状態の変化はバグに繋がる可能性があるため、副作用という名で呼ばれています。 一般的な例では、プログラミングにおける関数の利用です。まず副作用の無い関数とは、「演算内容が引数にのみ依存し、演算結果は戻り値のみ影響する」というものです。そのため、関数の引数として変数を指定する時、その値のみを渡すこと(値渡し)が理想的です。ところが、引数の参照(アドレス)を渡した場合(参照渡し)、関数は引数の内容を変更することができてしまい、演算の過程で引数の値が変わってしまう可能性があります。この場合、関数の処理前後で引数となる