【時事】JavaScriptのfor文とは?【無限ループって怖くね?】

無限ループってこわくね?

2019年3月4日に話題になった『不正プログラム書き込み疑いで補導』ってJavaScriptのfor文無限ループの話で、本当に危険なの?ってことでいろいろ考えてました。

タイーホされたくないので、スクショで我慢してください。

あと、先に言っておきますが今回の件自体に関しては迷惑行為になるのであまり褒められたものではないということをユーザー(今回で言えば兵庫県警)側の視点で前置きとして断っておきます。身内で遊ぶレベルで公開しないものとして遊ぶレベルならまぁ多少はね?


問題のプログラムとは?

これがソースコードですね。JavaScriptのfor文で作られているだけの簡単なものです。

これだけで『不正指令電磁的記録供用未遂』が適用されるみたいです。無限ループって怖くね?

これは不正指令電磁的記録に関する罪に定義されており、Wikipediaから引用すると

  1. 人が電子計算機を使用するに際してその意図に沿うべき動作をさせず、又はその意図に反する動作をさせるべき不正な指令を与える電磁的記録
  2. 前号に掲げるもののほか、同号の不正な指令を記述した電磁的記録その他の記録

閉じようとしても、閉じれないという点で1が該当しているというのが妥当な線でしょう。

でもこれって見方を少し変えると、クリック誤認させるものはすべてアウトになりますよね?

仮にPCが重くなる(後述しますが、結論重くなりません)というなら、どこぞの通販サイトなんてすぐに別タブを開くのでメモリの話をするならtarget=”_blank”には基本的に別タブで開きますという文言をすべて入れないといけないという理論になります。

だって表記がなければ意図せずメモリを無駄に食っていくわけですからユーザーの意図と異なる場合が出てきかねませんよね?(勝手にどんどんメモリを無駄に使っていくという理論が成立するはずです)

あとは無限だからアウトなのか、有限ならいくつまでダイアログなどは出てきていいのって話にもなりますし、『スマホ操作でネット広告に間違って触れてしまった』がUXが悪いでは済まされず犯罪行為だという拡大解釈にもつながりかねないので、正直ここらへんは捜査に踏み切った判断基準が明確になるべきです。


JavaScriptのfor文について

脱線しました。そもそもJavaScriptってなんだよって話ですが、簡単に言ってしまえばブラウザ(ネットを見る時に使うGoogle ChromeやInternet Explorerとかユーザー側に表示するツール)に指示をするプログラム言語の一種です。今回はJavaScriptのfor文という繰り返しの動作をするプログラムが書かれていました。

通常のfor文では、開始点から終了まで処理を繰り返すという形で使われます。

しかし今回は終了が設定されていない関係で処理が延々と繰り返されるというプログラムの内容になってます。無限ループって怖くね?

なお、window.alertはブラウザ(の開いているタブ)の実行中動作を止めてダイアログボックスを表示させるので、

alertの実行タイミング

ダイアログ開く(読み込み停止)

閉じる押す(<head読み込み>)

ダイアログ開く(読み込み停止)

閉じる押す(<head読み込み>)

alertが表示されている間は読み込み停止中なので1つのタブがダイアログボックスを表示しているというだけの話で、PCの処理的にメモリを食われるといった事にはなりえません。


サンドボックスとは?

サンドボックスに関しては、mariko kosakaさんが非常にわかりやすく解説をしてくれています。

タブ内でしかJavaScriptは影響しないサンドボックス(子供の砂場的な考え)という仕組みがあるので、PC本体に何か影響することや、ユーザーの個人情報などが抜かれるという事には今回はなりません。


まとめ

今回の争点になるのは『迷惑行為である』『どれほどの損害(影響)を与えるか』という部分です。

冒頭でも話はしたように、迷惑行為である以上良し悪しという二元論的に言えばよくないことです。しかし嘘をつくのはよくないことと言うものの、嘘をついたことがない人を少なくとも私は見たことがないです。

規制やらなんやらするというよりかは、プログラミング学習義務化になるのと同様に『大人でもしっかりとネットやPCの使い方について学んでいく必要があるんじゃないの?』と思わされる出来事でした。

むしろ他に摘発するものいっぱいあるでしょ笑

プログラミングが嫌いにならないでほしいこと、子供だけでなく大人もリテラシー学ぶ機会にする事、何でもかんでも規制と縛りすぎてこれ以上IT後進国にならない事を切に願っています

※あくまで個人の見解であり、犯罪や悪質行為などを助長する意図は一切ありません。ご意見あればお問い合わせまたはTwitterでDMなどでご連絡いただいて、建設的議論が出来ればうれしいです。