はじめに
ちょっと、衝撃的な考え方かもしれませんが、いま、自分でプログラムを作成していて、そんな予感をもっています。もしかしたら、自分だけかもしれませんが、どのような予感なのかを述べてみたいと思います。
その予感とは
今まで、いろいろなコードを作成してきました。それまでは、何とか不具合を起こすことなく、動作してきたと思っています。それはたまたまだったのかもしれません。
世の中を見ると、至るところで、プログラムの不具合が発生していて、基幹システムでも発生しています。エラーが全くないシステムはないのかもしれません。おそらく、ある程度のエラーはあらかじめ想定内のことなのかもしれません。エラーのないシステムはありえないということかもしれません。
ソフトに限らず、ハードである車や水道管なども経年変化による不具合が発生しています。そのため、システム維持のための保守が必要になります。残念ながら、きちんと保守をしているから大丈夫ということは100%言えないと思います。保守をしていても不具合は起こります。
航空機でさえ、そうです。人命を預かっていますが、やはり不具合による事故は起こっています。こう考えると、不具合によるトラブルは想定内のこととして、認めていることだと思います。
100%安全なシステムはありえないということだと思います。
若い頃、あるシステム装置の電子回路基板を設計・開発していました。
それは、油圧装置の力を利用して制御バーをコントロールするための基板でしたが、電子回路上は、制御してオーバーコントロールしないようにしていましたが、万が一のことを考えて、暴走を止めるための機械的なストッパーを設けていました。油圧の力で、人を押しつぶさないようにするためです。
話がそれてしまいましたが、今の時代は、どんなシステムにもプログラムを組み込んでいます。プログラムは人が作っています。最近AI(人口知能)が作っているとはいいますが、ベースは人が作ったものです。
そのプログラムですが、増々、複雑化してきて、今作成しているプラグインのプログラムは自分でもわからないくらいです。原因のもとは、動的処理のためのイベント処理が複雑に入り乱れてきたためです。様々なケースがあるため、デシジョンテーブルを作って、組み込んでいますがうまく動作しません。
不具合のもとは、おそらく、複雑な条件表の実装で起こっているのかと思います。複数の条件があり、それらの条件を満たしたときにある処理を行うというのものですが、この組み合わせが膨大になるともうお手上げです。
整理すれば、もっとシンプルになるのかもしれませんが、いま、取り組んでいるところです。
冒頭のタイトルにある、プログラム爆発ですが、これは、火山の爆発と同じで、どうにもこうにも耐えきれなくなり、爆発するというものです。今、世の中のシステムは過去から作ってきた膨大なプログラムで運用されてきています。多くの人手により作成してきたものです。
プログラムのもとは、0か1のビット単位のデジタルをもとに作られています。だからと言って、スキッキリと割り切れたものかというとそうではありません。中にはかなり危険スレスレのところで動作しているかもしれません。そのうち、耐えきれなくなり、ダムが決壊するように、火山が爆発するようになることが心配です。
あとがき
これは、杞憂かもしれません。今後は、整合性のとれたきちんとしたプログラムシステムで社会が動いてゆくのかもしれません。AIが助けてくれるのかもしれません。
プログラム爆発が起こらないことを願うのみです。