猫の手貸し

無限ループ

Infinite Loop

バグ・障害

プログラムにおいて「終わるための条件」が設定されていない、または間違っているために、同じ処理を永遠に繰り返し続けてしまい、パソコンやブラウザのフリーズを引き起こす状態のこと。

意図的な設計

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

🐾 猫で例えると?

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

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

その他の猫的たとえ(あるある現象)

  • 自分の尻尾を追いかけて、永遠にその場でグルグル回り続けるバグ。
  • 「ご飯を食べる → 寝る → 遊ぶ → ご飯を食べる…」の終わらないサイクル。
  • 夜中に部屋の右から左へ、左から右へダッシュし続ける現象(深夜の運動会)。

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

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

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

プログラミング学習中や開発現場で最も恐れられるのが、このバグとしての無限ループです。while文やfor文などの繰り返し処理において、「ループから抜け出すための終了条件」をプログラマーが設定し忘れたり、間違えたりすることで発生します。

コンピューターは非常に律儀で高速なため、ストップの指示がない限り、1秒間に何万回・何億回と同じ処理を実行し続けます。結果としてCPUやメモリを限界まで使い果たし、ブラウザのクラッシュやサーバーのダウンを引き起こします。

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

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

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

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

// JavaScriptでの危険な無限ループの例
let catHungry = true;

// 条件(猫が空腹である)がtrueの間、永遠に繰り返す
while (catHungry) {
    console.log("ニャー!(ご飯ちょうだい)");
    
    // 【原因】ここで脱出条件を設定し忘れている!
    // 例:catHungry = false; がないと、永遠にループから抜け出せない。
}

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

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

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