開発の現場では「なぜかシステムが動かなくなった」や「思った通りの結果が返ってこなくなって不思議だ」などの声を耳にすることがあります。しかしこうした類の会話は全て不毛としか言いようがありません。

なぜならプログラムなんてものは結局書かれた通りにしか動かないから。これは真理です。そしてソースコードを書いているのは自分自身なのですから。

システムには感情も例外もない

当たり前のことではありますが、システムに感情なんてものは存在しません。よってシステム自ら「ここは不具合を返しておいてやろう」なんて思うわけもないのです。不具合が起きるということは、ソースコードの中にそういう結果を返す処理が入っているのです。返すべくして返してきた結果であり、プログラマーとしてのミスでしかありません。

ただ最近は人工知能(AI)の発達も目覚ましいもので、いつかはシステムが自ら判断して、最適化された処理結果を返してくる日が来るかもしれません。ですがそれももう少し未来の話ですし、根本を突き詰めれば、人工知能が学習を繰り返すプログラムも結局は人がつくっているのです。人工知能の学習スピードが遅かったり、判断基準がおかしいようであれば、プログラムそのものを疑うべきなのです。

またプログラムはミスを犯すことがありません。人間であれば単純な足し算だとしても千回、1万回と繰り返せばどこかで不正解を出すかもしれませんが、プログラムは100万回、1億回と繰り返しても常に正解を出し続けます。つまり例外はないということ。システムにおいては、たまたまおかしな結果が返ってくるということもありえないのです。

思った通りではなく書いた通りに動く

「プログラムはプログラマーの思った通りに動くものではなく、書いた通りに動くもの」こうしたことはプログラマーの格言のように言われることもありますが、決してギャグなどではなく、これがプログラミングの心理です。

プログラマーはシステムエンジニアが設計した仕様書の通りにプログラムを組んでいきます。そのため処理結果はプログラムを書いている最中から見えているものです。しかし実際に動かしてみると、思った通りの結果が返ってこないことはよくあります。

「あんなに作りこんだのに、なんで???」と思うかもしれませんが、誰のせいにするわけにもいきません。結局は自分自身が書いた通りにしか動かないのですから。しっかりとソースコードを見直して、不具合を生み出している箇所を特定していくしかありません。

何もしてないのに動作が変わったという言う人がいる問題

よく「何もしてないのに動作が変わってしまった」と騒ぐエンジニアがいます。特に新人エンジニアからよく聞く言葉かもしれません。

ただし何もしていないのに動作が変わるなんてことは考えられません。もしそんなことが起きれば、それは超常現象か何かでしょう。こうしたケースでは、プログラマー本人が気付かないうちにどこかのソースを触ってしまっていることがほとんどです。なにかしらソースコードに改変が行われない限り、動作が変わるなんてことは起きないからです。

ただ「何も触っていないのに・・」という場合、本人が無意識のうちにソースを触ってしまっているのが厄介なのです。自分が意識していない分、特定個所を見つけにくいからです。こうした場合は過去のソースと現行ソースでコンペアチェックをして、差分を見つけ出しましょう。

プログラマー本人にソースを改変した自覚がなく動作が変わってしまっている場合、以下のタイミングでおかしくなっていることが多いです。

  • バグ対応やカスタマイズ対応にて、該当箇所以外の部分を触ってしまっている
  • 修正モジュールを適用する際に、バージョンの違うモジュールを適用してしまう

もし勝手に動作が変わったと主張するのであれば、直近の作業で上記のようなことはしていないかを疑うようにしましょう。

 

おわりに

プログラムが勝手に改変を起こすなんてことはありえません。何か動作が変わったということは、意図的か無意識かに関わらず、絶対に誰かがプログラムを触っています。結局のところプログラムは書かれた通りにしか動かないのですから。

 



【X(旧twitter)でも情報発信中】

Xを最近始めたので、フォローしてもらえると嬉しいです(エンジニア界隈の方はフォローバックさせていただきます)! システム開発に関することや、最新テクノロジーのことなど、世のエンジニアにとって有用な情報を発信してます!

"X" @TECH_KEYSYS