イテレータ【iterator】反復子

概要

イテレータとは、プログラミング言語の機能の一つで、配列やリスト、ハッシュテーブルといったコレクション(データの集まり)の要素を順に走査する処理を、簡潔に記述できる構文やオブジェクトのこと。繰り返し処理をデータ構造の種類や内部実装に依存しない抽象的な記法で記述できる。
イテレータのイメージ画像

通常、コレクションを走査する場合は繰り返し文と添字(インデックス)を組み合わせ、「0番目から要素数-1番目まで順に処理する」といったコードを記述する。この方法はデータ構造の内部実装に依存するため、対象が配列か連結リストか木構造かによってコードの書き方が変わってしまう。

イテレータを利用すると、「最初の要素を指し示す」「次の要素へ進む」「まだ要素が残っているか確認する」といった共通の操作だけで要素の走査を記述できる。データ構造ごとの違いを意識しなくても同じコードで処理できるため、プログラムの汎用性、可読性、保守性が向上する。

イテレータは現在どの要素を指しているかという状態を保持しながら順に移動し、末尾に達すると走査終了を示す。利用側は要素数や内部構造を知らなくても全要素を処理できる。コレクションの実装が変更されても、イテレータが同じ操作を提供していれば利用側のコードを変更せずに済む場合が多い。

多くのプログラミング言語では、イテレータの機能を提供するクラスやインターフェースが標準で用意されている。例えば、JavaではIteratorインターフェースとIterableインターフェース、C++言語ではSTLのイテレータ、Pythonでは__iter__と__next__メソッドによるイテレータプロトコルが定義されている。また、コレクションを生成できるオブジェクトを「イテラブル」(iterable)と呼び、イテレータはそこから実際に要素を一つずつ取り出す役割を持つ。この両者を分けることで、一つのコレクションに対して複数の独立した走査を同時に行えるようにもなる。

foreach文やfor-in文、for-of文といった繰り返し制御構文は、内部でイテレータを利用する仕組みになっているものが多く、利用者がイテレータの存在を意識しなくても自然にその恩恵を受けられる。C#やPythonのyieldキーワードを用いたジェネレータ構文では、大量のデータを一度にメモリに展開せず必要に応じて1要素ずつ生成できるため、メモリ消費を抑えた効率的な処理が可能となっている。

(2026.7.10更新)
 

他の辞典等による「イテレータ」の解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。