プロとしてのコードを書く

私が好きな名言の1つです。お世話になったマネージャが、あるソフトウェアをコードレビューした際、異常系処理が極端に少ないことに気付きました。開発元にこんなソフトウェアはダメだと言及したところ、開発元は「既に運用しているし、普通に動いているから大丈夫だ、問題はない。」と回答してきたそうです。

そのマネージャは、このように一喝したそうです。

プロとしてのコードを書け!

正常系処理、言わば、マニュアルに記載されている機能が正常に動作するのは当たり前です。IT 業界に疎い方は「ん?」と思われるかもしれません。今日では、正常系処理が動作しないソフトウェアはあまり見かけません。私の経験では、5年前は、マニュアルに記載されている機能すら動作しないソフトウェアがよくありました。もしくは、少し環境要因が変わるとエラーになってしまうものです。

一般的にプログラムは、以下の構成を取ります。

  • 入力
  • 処理(プログラム)
  • 出力


プログラマは、入力と出力に細心の注意を払う必要があります。定められた入力に対して、定められた出力を返すのがプログラムです。しかしながら、何らかの要因(誤り操作、仕様変更、クラック)で、意図しない入力が与えられることが多々あります。そして、ここからが本当の、あえて業務系プログラマという呼び方をしますが、業務系プログラマの腕の見せ所です。業務系プログラマの能力の多寡の1つとして、予想もつかない意図しない入力に対して、適切なエラー処理を設計/実装できるかどうかがあります。大抵は経験に依存するので、一般的にはトラブルをたくさん経験している年配の業務系プログラマの方がその能力は高いです。

一般的にエラー処理は、以下があります。

  • ワーニングを出力して処理を継続する
  • エラーコードを返す
  • 即時終了する


プログラマにとって「知の高速道路」を走り抜けた後にある1つの渋滞はエラー処理だと、私は思います。インターネットでサンプルコードやチュートリアルは多々見つけられますが、エラー処理はそのアプリケーションの特性にあわせる必要があるので、自分で考えて、創意工夫する必要があります。

私も、お仕事においてもプログラムを書く人なので、今後は、エラー処理のノウハウを体系的に捉えていく必要があると考えています。先日、書いた python で SMTP 認証を行ってメールを送信するが良い例ですが、趣味のコードであって、業務ではこんなコードは書きません。予想もつかないエラーを全て例外で引っ掛けるというノリです。これはこれで個人的に好きです(^ ^;;