【ふくさよう】
副作用 とは?
💡 関数の「本業以外のお仕事」
📌 このページのポイント
副作用ってなんで問題になるの?
たとえば計算するだけのはずの関数がこっそりデータベースを書き換えていたら怖いでしょ?副作用が「どこで何をしているか」不明だとバグの原因になる。だから副作用を明確に管理して、予想外の動きを防ぐのが大事。
useEffectってどう使うの?
副作用をゼロにすることはできないの?
できない。ユーザーの入力を受け取ること、画面を描画すること、データを保存すること、これらはすべて副作用。目指すべきは「副作用ゼロ」ではなく「副作用の発生場所を限定して管理する」こと。
純粋関数って何がうれしいの?
同じ入力に対して必ず同じ出力を返し、副作用がない関数のことだよ。テストが簡単(入力と出力を確認するだけ)、並列実行しても安全、結果をキャッシュできる、リファクタリングしやすい。関数型プログラミングはこの「純粋関数をできるだけ増やす」という方針で設計するんだ。
まとめ:ざっくりこれだけ覚えればOK!
副作用って出てきたら「関数が値を返す以外に外部に影響を与える処理」と思えばだいたいOK!
📖 おまけ:英語の意味
「side effect」 = 副次的な作用
💬 医薬品の「副作用」と同じ言葉で、本来の目的(値を返す)以外に起こる効果を指す