読み方 : ばんぺい

番兵【sentinel】

概要

番兵とはプログラムデータ列を処理する際、終端や境界を示すために配置する特殊な値のこと。あらかじめ長さが定まらない可変長データを扱う場合に、特定の値の出現をもって終端と判断できるようにする。
番兵のイメージ画像

データ列を先頭から順に読み込んで処理するプログラムでは、あらかじめ決めた特定の値が出現した時点でループを終了するという制御が行われることがある。この値が番兵である。配列の長さを別途管理しなくても終端を検知できるため、可変長データの処理を簡潔に記述できる。

代表的な例がC言語の文字列処理である。C言語では文字列データchar型配列として表現され、末尾にヌル文字(\0)を置いて終端の合図とする。処理する側は文字を1文字ずつ読み進め、ヌル文字が現れた時点で処理を終える。番兵として選ぶ値は、データ本体に含まれ得ない値でなければならず、ヌル文字はその条件を満たす。

番兵法

探索アルゴリズムの「番兵法」では、探索対象のデータ列の末尾に、探したい値そのものをあらかじめ付け加えておく。線形探索を例にとると、番兵なしでは、ループの各反復で「目的の値と一致したか」と「データ列の末尾に達したか」という二種類の条件を毎回判定しなければならない。

末尾に番兵を置いたデータ列では、目的の値は必ずデータ列のどこかに存在することになるため、末尾チェックが不要になり、判定は「一致したか」だけになる。探索終了後に、一致した位置が本来のデータ領域内か、付け加えた末尾の番兵の位置かを調べることで、実際にデータが見つかったかどうかを判別する。

番兵の考え方はC言語の文字列や線形探索に留まらず、データストリームや待ち行列など、終端の明示が難しい様々なデータ構造にも応用される。現代の言語やライブラリでは、長さ情報やイテレータによる範囲管理が一般的になっているが、低レベルの処理や一部のアルゴリズムでは依然として同種の手法が用いられている。

(2026.6.22更新)
 

他の辞典等による「番兵」の解説 (外部サイト)

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