画像ツール一覧

無限ループ

Infinite Loop

バグ・障害

無限ループは、終了へ到達せず繰り返し続ける処理です。終了条件の誤りで起きる不具合のほか、要求を待つ常駐処理などに意図して使う場合もあります。待たずに処理を回し続けると、画面の応答を妨げることがあります。

意図的な設計

Webサーバーのアクセス待機や、ゲームの画面描画ループなど、システムを正常に稼働させ続けるために意図的に組み込まれた「コントロールされた終わらない処理」のこと。

🐾 猫で例えると?

無限ループを体現するように、茶トラとアメショが頭とおしり逆に寝転がって円になっている様子
始まりも終わりも分からない「にゃんこサークル」の形成

茶トラがお尻を貸し、アメショが頭を預ける…。互いが互いを枕にし合うことで、見事な円(サークル)が完成しています。どちらかが立ち上がらない限り抜け出せないこの姿は、まさに「出口のない無限ループ」を思い出すたとえです。

🐾 PR

💻 プログラミングにおける無限ループとは?

IT現場で「無限ループ」という言葉が使われる場合、大きく分けて「意図せず発生してしまったバグ(障害)」と、「システムを動かし続けるための意図的な設計」の2つの意味合いがあります。

1. バグとしての無限ループ(意図しない暴走)

意図しない無限ループは、処理が終わらない原因の一つです。while文やfor文などの繰り返し処理において、「ループから抜け出すための終了条件」をプログラマーが設定し忘れたり、間違えたりすることで発生します。

待ちを入れず同じ処理を回すとCPUを占有し、ブラウザーの入力や描画を妨げることがあります。ただしメモリが増えるかは処理内容次第です。常駐サービスのように入力を待って休むループと、忙しく回り続けるループは区別します。

2. 設計としての無限ループ(意図的な待機)

一方で、終わりのない処理が常に悪いわけではありません。私たちの生活を支えるシステムの多くは、制御された無限ループによって動いています。

⚠️ 無限ループが発生する原因と具体例

プログラミングで意図しない無限ループが発生してしまう、代表的な原因を見てみましょう。

// JavaScript:終了条件の変化を確かめる有限ループ
let remaining = 3;
while (remaining > 0) {
  console.log("残り", remaining);
  remaining -= 1; // 条件を終了へ近づける
}
console.log("終了");
// 更新を忘れると条件が変わらない。無限ループは実行しないこと。

主な原因は以下の3つに分類されます。

🛠️ 無限ループに陥った時の抜け出し方(対処法)

もし自分が書いたプログラムを実行して無限ループに入ってしまった(画面がフリーズしてしまった)場合は、慌てずに以下の対処を行いましょう。

参考資料