Menu
Coddy logo textTech

イテレーション(反復処理)とは?

プログラミングにおけるイテレーション(反復処理)とは、条件が満たされるまで、あるいはコレクションのすべての要素を処理し終えるまで、一連の命令を繰り返すことで、普通はループを使います。繰り返される命令を1回通ることも、イテレーションと呼びます。

執筆: Kevin Spektor, 共同創業者、CTO

更新日: 2026年9月24日

10,000人のユーザーにリマインダーメールを送るプログラムに、送信のコードが10,000個書かれているわけではありません。コードは1つだけで、ループの中にあり、ループがユーザーごとに1回ずつそれを実行します。1回の実行が1回のイテレーションで、ループ全体が、プログラムがユーザーを順に処理する(イテレートする)方法です。

イテレーションのしくみを順番に

どのループも同じサイクルをたどります。

  1. チェック。 ループの条件を調べます。条件はブール値です。次の要素はあるか、カウンタはまだ上限より小さいか。
  2. 実行。 答えが真なら、ループ本体を1回実行します。
  3. 更新。 次の要素に進むか、カウンタを変えます。
  4. 繰り返し。 手順1に戻ります。チェックの結果が偽になると、プログラムはループの後のコードに進みます。

次の例では本体が5回実行され、各イテレーションで次の数を累計に足していきます。

iteration 1 total is now 1
iteration 2 total is now 3
iteration 3 total is now 6
iteration 4 total is now 10
iteration 5 total is now 15
Done: 15

変数 total はループの外にあるので、あるイテレーションから次のイテレーションへ値が引き継がれます。ループの前に設定し、ループの中で更新する変数というこのパターンはアキュムレータと呼ばれ、何かを計算するループのほとんどに登場します。

回数で決まるループと条件で決まるループ

イテレーションには2種類あります。確定反復は、決まった回数だけ実行されます。リストの要素ごとに1回、1から5までの数ごとに1回、といった具合です。Pythonの for ループはこのために作られていて、range()と一緒に使うことがよくあります。

不定反復は、何かが起こるまで繰り返し、何回繰り返すかは事前にわかりません。これには while ループが合っています。

8 years, balance 214.36

年10%で増えるお金は、2倍になるまで8年かかります。プログラムは方程式を解くのではなく、反復によってそれを見つけました。Pythonでの両方の書き方は、forループとwhileループのガイドで説明しています。

コレクションをイテレートする

ほとんどのループはコレクションをたどります。配列の要素、文字列の文字、ファイルの行などです。Pythonの for ループは各要素を直接渡してくれ、enumerate() を使うとその位置も加わります。

0 apple
1 banana
2 cherry

裏側では、for は iter() でコレクションにイテレータを求め、イテレーションごとに1回そのイテレータに対して next() を呼んでいます。同じ呼び出しを自分でしてみることもできます。

red
green
blue
no more items

既定値を渡さないと、4回目の next() は StopIteration を発生させます。この例外が、コレクションが終わったことを for ループが知るための合図です。

ほかの言語では、同じ考え方を別の書き方で表します。Cはインデックスで数え、JavaとJavaScriptには各要素を渡してくれるループもあります。

for (int i = 0; i < 3; i++) {
    printf("%s\n", colors[i]);
}
for (String color : colors) {
    System.out.println(color);
}
for (const color of colors) {
    console.log(color);
}

反復と再帰の違い

再帰は、処理を繰り返すもう1つの方法です。関数が、問題の小さな版に対して自分自身を呼び出し、直接答えられる場合に届くまで続けます。一方で書けるものは他方でも書けますが、振る舞いは違います。

反復再帰
繰り返し方ループが先頭に戻る関数が自分自身を呼ぶ
止まるときループの条件が偽になる基底ケースに届く
メモリ何回繰り返しても同じ量終わっていない呼び出しごとに1つのスタックフレーム
典型的な失敗無限ループスタックオーバーフロー(Pythonでは RecursionError)
向いているものリスト、カウンタ、条件を満たすまでの繰り返しツリー、入れ子のデータ、分割統治

実際に効いてくるのはメモリの行です。Pythonは既定で入れ子の呼び出しを約1,000回までしか許さないので、5,000個の数の再帰的な合計は、ループなら問題なく計算できるところで失敗します。

5050 5050
12502500
sum_recursive(5000) failed: RecursionError

再帰の可視化では、呼び出しのスタックが1ステップずつ伸び縮みする様子を見られます。

よくある間違い

無限ループ。 条件が決して偽にならない while ループは、プログラムを止めるまで動き続けます。よくある原因は更新の手順を忘れることで、たとえば count = count - 1 を書き忘れた場合です。

1つずれる。 range(1, 5) は1、2、3、4を返し、5は含みません。終わりの値は除外されるからです。1回多く、あるいは1回少なく実行されるループもエラーなしで動いてしまい、間違った答えを出します。これは論理エラーです。

ループ中のリストを変更する。 イテレートしているリストから要素を削除すると、ループが要素を飛ばしてしまいます。

[1, 2, 3]

2が1つ残りました。最初の2を削除したことで、2つ目の2が、ループがすでに通り過ぎた位置にずれたからです。代わりに新しいリストを作りましょう: numbers = [n for n in numbers if n != 2]。

次に読むもの

ループはコレクションをたどるので、配列とは何かが自然な関連ページです。ループがいつ止まるかを決める真か偽かのチェックについてはブール値とは何かで説明しています。ループがエラーメッセージなしで間違った結果を出すときは、論理エラーとは何かを読んでください。ループを書く練習をするなら、Pythonコースを始めるか、上の例をPythonプレイグラウンドで試してみましょう。

よくある質問

イテレーションの具体例を教えてください
100人分のユーザーのリストにある名前をすべて表示する for ループは、名前ごとに1回、合計100回のイテレーションを行います。正しいパスワードが入力されるまで尋ね続ける while ループもイテレーションです。こちらは何回繰り返すかが事前にはわかりません。
再帰と反復はどちらが優れていますか?
一般的にどちらが優れているということはありません。反復は使うメモリの量が一定で、リストの合計や数え上げのような単純な繰り返しでは普通こちらが速いです。再帰は、フォルダのツリーをたどるような本質的に再帰的な問題で、短くわかりやすいコードになります。ただし呼び出しごとにスタックのメモリを使うので、Pythonのような言語ではとても深い再帰は失敗します。
イテレーションとループは同じものですか?
ほぼ同じです。ループは for や while のような言語の構文で、イテレーションはそれが行う繰り返しのことです。ループ本体を1回通ることもイテレーションと呼ぶので、5回実行されるループは5回のイテレーションを行います。
スプリントとイテレーションの違いは何ですか?
ソフトウェア開発のプロジェクト管理では、イテレーションは決まった期間(普通は1週間から4週間)のことで、その間にチームが動くソフトウェアの一部を計画し、作り、レビューします。スクラムではこの期間をスプリントと呼ぶので、実際には2つの言葉は同じ意味です。コードにおけるイテレーションとは別の意味です。
イテラブルとはどういう意味ですか?
イテラブルとは、リスト、文字列、辞書、ファイル、range のように、for でループできるオブジェクトのことです。Pythonでは、iter() がイテレータを作れるオブジェクトがイテラブルです。整数はイテラブルではないので、for x in 5: は TypeError になります。
Coddy programming languages illustration

Coddyでコードを学ぼう

始める