読み方 : ふくさよう

副作用【side effect】

副作用とは?

薬などで生じる作用のうち、本来目的とする作用とは別に生じる意図しない作用のこと。プログラミングでは、関数や処理が「戻り値を返す」以外に、外部の状態を変化させる現象をこのように呼ぶ。
副作用のイメージ画像

コンピュータプログラムで定義された関数などについて、「計算・処理を行って結果を返す」という本来の目的の外側で起きる変化を指す。例えば、関数を呼び出したとき、戻り値とは別にグローバル変数が書き換わったり、ログファイルが更新されたりする処理がこれにあたる。

副作用がある処理は、呼び出すたびに同じ入力でも異なる結果をもたらすことがある。外部の状態に依存したり、外部の状態を変えたりするため、プログラムの動作を追いかけにくくなる。特に複数の処理が同じ変数を読み書きするような場面では、どこで値が変わったかを把握しづらくなり、バグの原因にもなりやすい。

一方、副作用のない関数は「純粋関数」(pure function)と呼ばれる。同じ入力に対して常に同じ出力を返し、外部への影響を一切持たない。テストや検証がしやすく、処理の独立性が高いため、特に関数型プログラミングの考え方では副作用を極力排除する設計が好まれる。

とはいえ、実用的なプログラムでは外部入出力などを扱う必要があり、副作用を完全に避けることは難しい。データベースへの書き込みやAPIの呼び出し、操作画面の状態更新など、ソフトウェアが現実世界と接する箇所には必然的に副作用が伴うためである。重要なのは副作用をなくすことではなく、どこで副作用が発生するかを意識し、管理しやすい設計にすることである。

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。