参照透過性とは?さんしょうとうかせい
参照透過性とは、同じ引数で呼べば常に同じ結果を返し、外部の状態を書き換えないという性質。式をその評価結果で置き換えても意味が変わらないため、実行順序を入れ替えても安全で、並列化・メモ化・自動テストのいずれもやりやすくなる。関数型プログラミングの土台になる概念。
最終更新:2026-10-06
この語が出る過去問を解く →背景
共有された可変状態に依存する処理は、単体では動くのにマルチスレッドや再実行で結果が変わり、原因の再現に時間を取られる。入出力を引数と戻り値だけに閉じ込めれば、その関数の正しさをまわりの文脈から切り離して確かめられる。並列度を上げてよいかどうかを判断する根拠になる性質であり、副作用をどの層へ寄せるかという設計判断にも直結する。
具体例
消費税額を求める処理を、税率も金額も引数で受け取る関数にしておけば、設定ファイルや現在日時を読む版と違い、いつどのスレッドから呼んでも同じ値を返し、計算結果を再利用しても安全になる。
試験での引っ掛け
副作用の有無で判断する。乱数の取得、現在時刻の参照、大域変数やファイル・DBの更新を含む関数は、引数が同じでも結果や外部状態が変わるため参照透過ではない。逆に内部で局所変数を書き換えていても、外から観測できなければ参照透過性は保たれる。
関連用語
出た過去問
出典:令和6年度 春期 システムアーキテクト試験 午前Ⅱ 問8(IPA)
純粋関数型言語がもつ特性の一つである参照透過性の説明はどれか。
正解:同じ引数を渡せば、関数は常に同じ結果を返す。
要点:同じ引数なら常に同じ結果を返す性質が参照透過性
参照透過性とは、式をその評価結果で置き換えてもプログラム全体の意味が変わらない性質のことである。関数が外部の状態を読み書きしないため、同じ引数に対しては常に同じ結果が返り、実行順序や実行回数に依存しないので推論やテスト、最適化が容易になる。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。