循環参照
参照がループしているよ
いつまでたってもゴールに辿りつかないよ
簡単に書くよ
循環参照(読:ジュンカンサンショウ 英:circular reference)とは
「その指示に従うと、ずっとたらい回しにされますよ!」な状態のこと。
もう少し具体的に書くと
Aには「Bを見ろ」と書いてあって、Bには「Aを見ろ」と書いてあるように、いつまでたってもゴールに辿りつけないような指示になっていること
です。
詳しく書くよ
「循環」+「参照」で「循環参照」です。
循環の意味は「行ったのが、ぐるっと戻ってきて、それが繰り返されること」ね。
ぐーるぐーるなループです。
参照は参照です。
少し意訳していますが、今回は「あっちを見ろ!」な指示と解釈してください。
以上を踏まえて
「あっちを見ろ!」な指示がずっとたらい回しされて、いつまでたっても何を見ればいいのか決まらない状態
が「循環参照」です。
Aには「Bを見ろ」と書いてあって、Bには「Aを見ろ」と書いてあるような状態です。
例えば、そうですね。
ピヨ太君がピヨ子さんに「今日の晩御飯は何?」と聞きました。
ピヨ子さんは「ピヨ太ママに聞いて」と答えました。
ピヨ太君はピヨ太ママに「今日の晩御飯は何?」と聞きました。
ピヨ太ママは「ピヨ子さんに聞いて」と答えました。
ピヨ太君は再びピヨ子さんに「今日の晩御飯は何?」と聞きました。
ピヨ子さんは再び「ピヨ太ママに聞いて」と答えました。
これでは、いつまでたっても今日の晩御飯が何か分かりませんよね。
ピヨ太君はピヨ子さんとピヨ太ママの間をずっとたらい回しにされます。
このような状況が循環参照です。
もう少しコンピュータっぽい例も書いておきましょう。
ピヨ太君は、ExcelのA1セルに
=B1+1
と書きました。
これは
B1セルの値に「1」を足したのがA1セルに入る値だよ
を意味します。
さらに、B1セルに
=A1+1
と書きました。
これは
A1セルの値に「1」を足したのがB1セルに入る値だよ
を意味します。
さて、それでは「A1」セルに入る値は何でしょう?
A1セルに入る値はB1セルの値によって決まります。
A1セルに入る値を知るには、B1セルを見に行く必要があります。
A1セルはB1セルを「参照」しているからです。
B1セルに入る値はA1セルの値によって決まります。
B1セルに入る値を知るには、A1セルを見に行く必要があります。
B1セルはA1セルを「参照」しているからです。
A1セルに入る値はB1セルの値によって決まります。
A1セルに入る値を知るには、B1セルを見に行く必要があります。
A1セルはB1セルを「参照」しているからです。
以下、ぐーるぐーると終わることなく続きます。
いつまでたってもA1セル(とB1セル)に入る値は決まりません。
このような
たらい回しされ続ける参照指定
が循環参照です。
今回の例では2つの場所をたらい回しされましたが、3つ以上のたらい回しで循環参照になることもあります。
例えば
A1セル→「=B1+1」
B1セル→「=C1+1」
C1セル→「=A1+1」
のように書けば、A1→B1→C1→A1……と、たらい回しされ続けます。
あるいは場所が1つしかなくても循環参照になる場合があります。
例えば、A1セルに
=A1+1
と書けば、A1→A1→A1……と、たらい回しされ続けます。
「循環参照になっているぞ!」なエラーが出たら、参照先を辿ってみてください。
きっと、どこかで輪っかになっている(前の場所に戻る)はずです。
一言でまとめるよ
まぁ「循環参照」って単語が出てきたら「終わりなき、たらい回し状態なんだな~」と お考えください。






