読み方 : じゅんかんさんしょう
循環参照【circular reference】
概要
表計算における循環参照
最も身近な例が表計算ソフトの数式である。A1セルに「B1の値に10を足す」という数式を、B1セルに「A1の値を2倍にする」という数式を入力すると、どちらの値も相手の計算結果が確定しなければ求められなくなる。
多くの表計算ソフトはこうした入力を検知するとエラーを表示し、計算処理を中断する。設定によっては「反復計算」という、一定回数または収束条件まで計算を繰り返して近似値を求める機能を用いて意図的に循環参照を利用する場合もある。
メモリ管理における循環参照
プログラミングの分野ではメモリ管理で循環参照が問題となることある。参照カウント方式でオブジェクトの管理を行う場合、あるオブジェクトを参照している別のオブジェクトの数を数え、その数がゼロになった時点で使われなくなったと判断してメモリを自動的に解放する。
このとき、オブジェクト間に循環参照が生じているとお互いに参照し合っているためカウントがゼロにならない。不要になったオブジェクトが解放されないままメモリ上に残り続ける「メモリリーク」(memory leak)という現象を引き起こすことがある。これに対応するため、マークアンドスイープ方式など循環参照にも対応できるガベージコレクションの仕組みが採用されることがある。
データベース設計における循環参照
データベース設計においても、社員テーブルが部署テーブルを参照し、その部署テーブルが責任者として特定の社員テーブルを参照するというように、テーブル同士が外部キーを介して互いを参照する構造が組まれる場合がある。この場合、テーブルの作成順序やデータの削除処理の順序に制約が生じ、設計や運用が複雑になりやすい。
(2026.7.3更新)
