無限ループ

登録日:2011/10/27 Thu 00:10:11
更新日:2025/03/30 Sun 20:48:47
所要時間:約 ∞ 分で読めます




こちらを参照してください。









無限ループとは、つまりそういうことである。
無限ループって怖くね?」という言い回しは有名。発祥は2chらしい。


プログラム用語としての無限ループは同じ処理を無限に繰り返し実行することを指す。
よくある原因はプログラムミスであり、例えば「カウントが10になるまで繰り返す」という処理を行うとき、
カウントアップを忘れたために繰り返しがいつまでも終わらなくなってしまう。
while(1)を使えば簡単に無限ループの完成。
これをリリース版の製品で意図せずやらかすのは、プログラマーとして恥とされる。
ただし、中には組み込み系開発のメインループのように意図的に使用する場合もある。

非常に簡単に作れるため、PCの敷居がまだ高かった頃は簡単なブラクラ(ジョークプログラム)として、だいたいHello Worldの次くらいに作って友達をハメる悪ガキもいた。
パソコンの教育を行う「情報」の授業がカリキュラムに取り込まれるようになると、このジョークプログラムを友達に送り付け、騙されて開いた側が叱られる、なんてこともあったほど。
さらにかつてのエロサイトは「ウィンドウを閉じるとポップアップするウィンドウ」が間違いなく仕込まれていたが、その中でも特に悪質なものは「ウィンドウを閉じた場合、その閉じたサイト自体を開くようにする」「複数のページでループするようになっている」ことでポップアップを理論上無限に繰り返すというものもあった*1

音楽では、楽譜内でダル・セーニョ*2によって遡る方向にジャンプさせているにもかかわらず曲の終わりを示すフィーネがないと、いつまでたっても終わらない曲が出来上がってしまう。
ショパンやサティなど、特殊な効果を狙ってわざと曲を無限ループにしてしまう作曲家というのはしばしば見受けられる。
また、ゲームミュージックは音ゲーの楽曲や一部のSTGでステージの演出や長さに合わせる場合*3を除き無限ループが基本である*4


また、所定の手順を踏まない限り無限ループが引き起こされるという意図的なパターンもある。

ゲームでは、横スクロールゲーやRPGでよく発生する。
特定のフロアの出口に行くとそのフロアの入口に出るといったものや、上っても上っても終わらない階段等。
20世紀のゲーム、特にFC時代にはよくある演出であり、「限られた容量の中で謎解きをさせる」「簡単にクリアをさせない(攻略本を売る)」という目論見があった。
特にスーパーマリオシリーズやドラゴンクエストシリーズが有名で、正しいルートを通らない限り延々と無限ループを味わう羽目になる。
この場合、デジャヴにいち早く気付き対応することが求められるのだが、中には「完全にノーヒントで2~4択を3~4回選ばされる」という極めて不親切なゲームも存在していた。
難易度が高いというより「知らなきゃ解けないだけ」というタイプであり、現代のゲームへのスタンスからは否定されるものだが、裏を返せば「知っていればとても簡単」というものでもあり、
攻略情報をどこかで仕入れた子供が友人に「クリアしてくれ」と頼まれてクラスの人気者になったり、友達を作るきっかけになったりもした。

さらにこの無限ループを逆手に取った演出として、
「実際には同じ形の部屋が並んでいるだけなので、謎を解かずに愚直に進めばクリアできる」
「一見無限ループに見えるが、部屋の形が微妙に変わっていることが攻略の鍵になっている」
という「偽ループ」も存在する。
ただしいずれにせよあまり親切な仕様ではなく詰みポイントにもなりやすいため、21世紀頃には「シリーズの伝統」として残すことを選んだゲームを除いてはあまり見かけることはなくなった。


さて、ひとこと「無限ループ」というのはたやすいし、その制作もしやすければイメージも分かりやすい。
ドラクエのローラ姫との押し問答や、ループものの漫画・アニメ、そもそも自分の尾を噛む蛇ウロボロスなどのコミカルなイメージがつくため、現代ではなじみの深い言葉だろう。
しかしコミカルなイメージとは裏腹に「無限ループの検出・停止」は数学的に極めて難解な問題であり、最悪な場合だと製作者も使用者も無限ループと知らないまま数年が経過することさえ存在する。


たとえば有名なものに「停止性問題」というものがある。
「『あるプログラムが有限時間内に停止するか』を判定できるアルゴリズム」は可能だろうか?というものである。
1936年、アラン・チューリングの手で「そのような条件を満たすマシンは存在しない。自身が停止するならば無限ループに陥って停止せず、停止しないならば停止するためパラドックスを起こすからだ」と数学的に証明されている。
多分何を言ってるか分からないと思うので、自己言及のパラドックスの一種と考えてもらえばいい*5
つまり現状の計算機科学においては、無限ループを検出する方法は存在しないのである。これは「見つかっていない」のではなく「できないと証明されている」。


さらに定理自身が定理の無矛盾性を証明することはできないとする「ゲーテルの不完全性定理」や、無限ループの検出問題にも関わってくる数学上の未解決問題「コラッツ予想*6」など、
ちょっと手を出すだけで優秀な数学者数千人の人生が吹っ飛ぶレベルのすさまじい深淵が気軽に顔を出してくる。
無限ループとはその分かりやすくコミカルなイメージに反して、多くの有望な人間の未来を丸のみにしてきた大蛇なのだ。
「無限ループって怖くね?」という言い回しがあるが、アニヲタwikiの知識を総動員しても太刀打ちできないような秀才俊英の人生さえもゴミのように切り捨てる悪鬼羅刹がこの無限ループである、ということは覚えておいた方がいいだろう。

しかし無限ループは意図せずとも起きてしまうものであり、特に停止するための選択ができない無限ループを放置しておくことはできない。
数学的な解決ができなくても、何とか実用レベルの解決をしなければならないため、数学者以外の人間はこの現実的な解決に腐心してきた。
有名なのが「併走させた別のプログラムに審判をさせる」というもの。処理を一定回数または一定時間繰り返してなお解決ができていない場合、プログラムに別の処理を食いこませてループを遮断するというものである。
これはプログラムだのオペレーションシステムだのという問題というより、「解決しなくなった問題に審判が外野から出てきて仕切り直しをする」というイメージが近い。
かなり素朴な域ではあるが、たとえば将棋の千日手や、カードゲームでの停止不可能ループが出たときに審判を呼んで判断を仰ぐのは無限ループの現実的な解決方法である。

その逆に、意図的に「無限後退」という無限ループを起こして理屈をこねくり回す哲学という学問もある。
「どうしてそうなるの?」「それってこういうことになるよね?」を繰り返すことで問を延々と続けるという、口喧嘩に勝ちたがるクソガキみたいなことを大の大人が真顔でやっているという実にシュールな学問だが、
これは上述の「外野から出てきて仕切り直しをする審判」のような解決方法の模索のために行われる行為。つまり相手が信奉する定義に対して解決不可能な問題を出して、「俺の定義の方が正しくないか?」と問いかけるのである。
有名なのが「アキレスと亀のパラドックス*7」「ホムンクルスの誤謬*8」あたり。単なるレスバトルに勝ちたがるオッサンというわけではない。多分。


ちなみに「日本のある団体が停止性問題(無限ループの検出問題)を肯定的に解決した」というジョークが、プログラマーの間で一時期流行したことがある。
その団体とは兵庫県警。成田空港の爆破事故を調べたり、兵庫県警ってのはずいぶん手広いことをやってるんだなぁ……。

2019年に「非常に単純な無限ループを起こすブラクラへのリンクを貼った」というだけで数名を逮捕・補導し家宅捜索まで行ったこと(無限アラート事件)が、当時識者の間で世界的に批判され、
ブレンダン・アイク(JavaScriptの生みの親)からも「この事件の公判で専門家証人になるつもりでいる」と言われるなど、本邦のサイバー犯罪への認識が悪い意味で世界的に有名になった事件である。
この事件への抗議として「どこかの掲示板にアルゴリズムへのリンクを貼り、さらに兵庫県警に対してそのアルゴリズム自体とリンクを貼った掲示板のアドレスを送り付けて自宅で待つ。もし家に兵庫県警が来たら、それは無限ループに陥っている。公訴時効が切れるまで待っても来なければ、そのプログラムは停止する」とするジョークが登場した。

当然だが、
「この程度のことで逮捕するのも大問題だが、そもそも逮捕に踏み切るということは『無限ループかどうかの判定を常に正しくできる』ということだよね?すげぇなぁ、アラン・チューリングが否定的に解決したことを覆すなんて!」
という皮肉である。


「無限ループ」。文字に起こせばたった5文字の事柄には、文字通り深淵が待ち受けている。
たいていは「深淵に付き合わず、打破するための別のアプローチを探すべきだ」という難問として君臨している。
この打破の手法を見るだけでもなかなか楽しいものである。
詳しい説明はこちらを参照してください。






登録日:2011/10/27 Thu 00:10:11
更新日:2025/03/30 Sun 20:48:47
所要時間:約 5 分で読めます




こちらを参照してください。





無限ループだと思ったろ。


またRPGでは、例えばどうしても「はい」を言わせたい場合「いいえ」を選ぶと延々と台詞が繰り返され、
はい」が選ばれるまで終わらないといったパターンも。



私も連れていってくれますか?

 はい
いいえ

そんな、ひどい……
私も連れていってくれますか?

 はい
いいえ

そんな、ひどい……
私も連れていってくれますか?

 はい
いいえ

そんな、ひd(ry

■カンダタ(DQ3)

許してくれよ!

 はい
いいえ

そんなこと言わずに許してくれよ!

 はい
いいえ

そんなこと言わずに許してくれよ!

 はい
いいえ

そんなk(ry

しかし最近は無限ループと見せかけて普通の二択だったりすることもあるので注意。


DQ5ではトロッコが無限ループという悪質なパターンも。
ゲーム内ではNPCの某おっさんが引っかかっていたが、万が一主人公達がこれに引っかかっていたら……と思うとゾッとする。


また無限ループを利用したレベル上げもある。
有名なのは、ポケモンの自動床の移動圏内で十字キーを固定し、歩数を稼いで育て屋さんで育てる等。


漫画では、遊戯王オシリスの効果を逆手に取られた無限ループによってマリクが敗北しているのが印象深い。
また遊戯王に限らずカードゲームでは能動的に無限ループを発生させることも可能だったりする。「悪用」と言われるが。
「俺たちの満足はこれからだ!」
「クリーチャーでアタックしてるのが少し残念だねー」




追記・修正してくれますか?

 はい
いいえ

そんな、ひどい……
追記・修正してくれますか?

 はい
いいえ

そんな、ひどい……
追記・修正してくれますか?

 はい
いいえ

そんな、ひどい……
追記・修正してくれますか?

 はい
いいえ

そんな、ひどい……
追記・修正してくれますか?

 はい
いいえ

そんな、ひどい……
追記・修正してくれますか?

 はい
いいえ

そんな、ひどい……
追記・修正してくれますか?

 はい
いいえ

そんな、ひどい……
追記・修正してくれますか?

 はい
いいえ

そんな、ひどい……
追記・修正してくれますか?

 はい
いいえ

そんな、ひどい……
追記・修正してくれますか?

 はい
いいえ

そんな、ひどい……
追記・修正してくれますか?

 はい
いいえ

そんな、ひどい……
追記・修正してくれますか?

 はい
いいえ

そんな、ひどい……
追記・修正してくれますか?

そんな、ひどい……
追記・修正してくれますか?

 はい
いいえ

そんな、ひどい……
追記・修正してくれますか?

 はい
→はい

うれしゅうございます!

この項目が面白かったなら……\ポチッと/

+ タグ編集
  • タグ:
  • 無限ループ
  • ゴールド・エクスペリエンス・レクイエム
  • エンドレス
  • 無限ループって怖くね?
  • DQ
  • 涼宮ハルヒの憂鬱
  • ローラ姫
  • エンドレスエイト
  • ノンストップママ
  • リートルード
  • 魔法陣グルグル
  • ある意味ホラー
  • エアーマンが倒せない
  • while(1)
  • SIREN
  • トラウマ
  • そんな、ひどい……
  • ゼーガペイン
  • バグ
  • イザナミだ
  • 終わりがないのが終わり
  • ダル・セーニョ
  • 満足
  • ソリティア
  • 火の鳥
  • SIREN ReBIRTH
  • 悪夢
最終更新:2025年03月30日 20:48

*1 現在インターネットブラウザで高いシェアを誇るGoogle Chromeが躍進したきっかけのひとつは、これらの悪質なポップアップウィンドウを撃退できるブラウザとして人気を博したことによる。今でこそ広告への監査が甘いことで問題視されている企業だが、昔はそんな正義の企業だったのだ。

*2 「セーニョ(印)をつけているところにジャンプせよ」の意。プログラミング言語でいうところのgoto文に相当。

*3 例えば「東方妖々夢」4面道中曲の「天空の花の都」はミュージックルームではループするものの1ループの時間が長く、ループの終端に休符が置かれている。4面自体も1ループが終わる頃合いでボスの待つ地点に到着するように作られている。

*4 サントラでは、1~2ループを流した後にフェードアウトするという形を取っている場合が多い他、サントラでのみ聴けるアウトロが用意されている場合もある。

*5 有名な自己言及のパラドックスに「嘘つきのパラドックス」がある。必ず嘘をつく人が「私は嘘をついています」と言った時、その言葉自体が無限ループに陥るのでその人は嘘つきか否かを数学的に解決することができない。これの嘘の部分を「プログラムの停止」に置き換えても同じことが成り立つ。

*6 予想自体は小学生でも理解できるほど単純なものだが、現代数学に非常に大きな影響を与えた天才数学者ポール・エルデシュをして「数学はまだこの種の問題に対する用意ができていない」とまで言わしめた。

*7 ゼノンはこれをもって「そんなおかしなことはありえないので、無限なんて概念は存在しない」と証明しようとした。

*8 心身二元論に対する反論。比較的新しい比喩である。