何故その変数名は「 i 」なのか

ループについて学ぶ時、最初に見るコードは以下のようなものが多いでしょう。1から10までの数を合計せよ、といったものです。

total = 0
for i in range(10):
    total = total + (i + 1)
    print(i)

ループと共に変化する変数の名前を「 i 」としていることに注目してください。教科書 p.75 の for 文で登場した変数も、その名前は「 i 」でした。なぜ i がよく使われるのでしょう。

i にまつわる歴史的経緯

ループ制御の変数に i, j などが多用されるのは(諸説ありますが)歴史的経緯と思われます。非常に初期のプログラミング言語 FORTRAN(あるいは更に先行していたAlgol)などでは I, J, K, L, M, N で始まる変数名は宣言が不要で、暗黙に整数型と決まっていました。するとFORTRANでループを書く時、ループ制御(カウント)のための変数を宣言する必要がなくて便利なのですね。だからもう一つループ制御変数が欲しくなった時に J, K などが使われるのは自然なことでした。なお FORTRANでは変数名を含めてプログラムコードは大文字で書いたため英大文字の「 I 」になっていますが、後発のC, Pythonなど小文字ベースの言語では i, j, k になりました。

また、j, kではなく「 i 」が使われる理由としては配列の添字(Pythonであればリストの要素番号)の表現である「 index 」を連想させる、また数学でも Σ の添字などで i がよく使われていた、といったことがありそうです。

慣習に沿う

ともかく「プログラマの慣習」として「特に意味なく i と書いたら整数型で(添字に使うことが多い)ループカウンタ」といった思考があることは頭においておくと良いでしょう。

しかしそんな変数でも無い限り、変数名は、できるだけその変数の意味(目的)がわかる変数名をつけるようにしましょう。合計を収める変数なら「sum」や「total」などです。変数が 5 つも 6 つも登場しているのに、変数名が(意味を推定できない)a, b, c, s, t などではプログラムの意図が汲みにくく混乱します。

参考「なぜループカウンタ変数のほとんどに “i”が使用されるのか?」 , @yaju(やじゅ) , Qiita, 2015/8