【44】人類に残された、バグを出さない唯一の方法

南治 一徳

 ノイマン型コンピュータが発明されて以来、人類はずっとバグとの戦いを強いられてきた。当初、意気揚々としてコンピュータを制作した人類だったけれど、コンピュータを動かすためのソフトウェアである「プログラム」を作成していくにつけ、人間のミスが、本来ミスをしないはずのコンピュータを動かすための大きな障害になるとわかってきたからだ。それが「バグ」である。その後、いかにバグが出ないプログラムを作るか、発生したバグと戦うのかに多くの時間を費やすことになっていった。

 もともと完全な存在からはほど遠い人間がプログラムを書いている以上、プログラムには必ずミスが入る。ケアレスミス、ロジックミス、etc、さまざまな人的なミスが簡単にプログラムには潜り込んでいく。これは人間が人間である以上、どうしても避けがたいことだ。かくしてバグは生まれて続けてしまうことになった。

 プログラムを書く人間であるプログラマーはプログラムを書くからこそプログラマーたりえる。しかし、プログラムを書けば書くほど、その行為はプログラムの障害であるバグを生み出すことになる。それでもプログラマーはプログラムを書かずにはいられない。プログラムを書くからこそプログラマーなのだから。この大きな矛盾を背負っている存在がプログラマーなのだ。

 だが、この矛盾点を突きつめていくと、ひとつの解が見えてくる。書けば書くほどバグが生まれるのであれば、プログラムを書かなければいい! プログラムを書かなければバグは生まれないのだ。もちろん、まったくプログラムを書かないとプログラマーではいられないのだから書かないわけにはいかない。だから、可能な限りプログラムを減らすことになる。

 かくして、プログラム技術の進化の過程でいかにプログラムを書かずに済むか、最低限、書かなければいけない範囲にしても、どうすればよりわかりやすく直感的にミスなく書けるのか研究されていった。アセンブラを直接書いていた時代から、高級言語が生まれ、そしてサブルーチンや、その集まりであるライブラリ、より汎用的な構造化プログラミング、モダンなオブジェクト指向プログラミング、もっと広義で言うならば昨今のゲームエンジンなどなど、名前や形は違えど、どの技術をとってもいかに同じような処理を効率良くまとめるか、言い換えればいかにプログラムを書かずに済むか、という点で志向している方向はまったく同じなのだ。

 これから先の未来、もっとプログラムの技術は進むだろう。そしてプログラマーたちは、その新しい技術も吸収しその先の未来に進んで行くことになる。しかし、どれほど新しい技術が進んでも、どんなに便利になっても、それを人間が行う以上、必ずバグは入り込む。発生してしまう。そのバグとの戦いに望むときプログラムを書かなければバグは生まれないのだということを思い出してほしい。

 いささか抽象的になりすぎてしまったかもしれない。より具体的に言い換えるなら、同じ処理をまとめ、息を吸って吐くように、ソースコードの最適化・効率化を考え続けるということが、良いプログラムを書くための近道で必要なことなのだと覚えておいてほしい。プログラムが少ないということは変化にも強いということであり、日々、仕様が変わってしまうゲームのプログラムにおいて非常に大切な要素でもある。だからプログラムを書く時は常に、どういうふうに記述すればよりプログラムの量を減らせるのか、もしくは書かずに済むのかというシンプルな問いを忘れずに考え続けることが大切になる。

 すなわちそれが人類に残された、バグを出さない唯一の方法なのだから。