カレンダー

2018/11
    
 
       

広告

Twitter

記事検索

ランダムボタン

時々動く

by 唐草 [2018/11/05]



 プログラムを書いていて一番まずいのは「なぜ動いているのか分からない」状態だと言われている。プログラムの経験がないと何を言っているのかさっぱりわからないかもしれないが、現実に起こり得る現象なのである。
 これはマイナス同士の掛け算の結果が、プラスに転じるようなものである。良くないものと良くないものが混じり合った結果、意図せず動いてしまっている状態でしかない。ちょっとでも前提条件が崩れてしまえば、途端に動かなくなってしまう。それどころか最悪の場合、データを破壊してしまったり、機密が漏洩してしまう恐れだってある。だから「なぜ動いているのか分からない」状態はとても危険なのである。
 「なぜ動いているのか分からない」プログラムが出来上がってしまうと、心の中に住まう悪魔が「動いているからいいじゃないか」と囁いてくる。この甘言に乗せられると大抵大惨事が待っている。
 今日は、コードを書いている際に厄介な状態に巻き込まれた。「なぜ動いているのか分からない」状態よりも厄介な状態である。
 3回に1度ぐらい確率でうまく動くという謎の状態に陥ってしまっている。
 毎回入力データが変わるのであれば、一定の確率でエラーが発生したり発生しなかったりするという現象にも納得ができる。それは、不出来なコードの化けの皮をはがす尖ったデータが時々やってきているという意味である。
 だが、今日は違う。
 テストデータなので入力は常に同じ。毎回完全に同じ文字列を入力しているのに結果が安定しないのである。学習中のAIを利用しているとか、ネットワークの状況に左右されているというわけでもない。完全にスタンドアローンなプログラムが、AIの学習結果を利用しているだけである。それなのにプログラムを実行するたびに結果が変わる。3回中2回はエラーが起きて途中で止まるが、残りの1回はうまくいく。更に不思議な事にうまく動いたとしても結果が微妙に異なっている。
 安定しない結果というのは、コンピュータの振る舞いとしてかなり珍しい現象である。「なぜ動いているのか分からない」ものなら条件が変わるまで動き続けるし、動かないものは絶対に動かないままというのが普通である。
 今日の現象を日常生活に例えると次のようなイメージだ。
 部屋にひとつのドアがある。同じ手順で開けても3回に1度しか開かない。しかも開けるたびにつながる場所が違う。あるときはトイレで別のときは玄関。これぐらいに不思議なことが、ぼくのコンピュータの中では起きている。