最近メディアを賑わせている毎月勤労統計調査の問題ですが、意外なものがその一因とされているようです。それが何かというと…、COBOL。この報告書(pdf)によると、「毎月勤労統計調査に係るシステムのプログラム言語はCOBOLであり、一般的にシステム担当係でCOBOLを扱える者は1人又は2人に過ぎなかった。このため、一般的にシステム改修を行う場合はダブルチェックを行うが、ダブルチェックができない場合も多かった」ことが問題の一因とされています。
ITを生業とする者とすれば、おいおい、という感じですが、これに評論家の方が「これはCOBOLで書かれた特殊なプログラムなので高齢者しか読めず」という解説を加えたことが、話題になっています。ますます、おいおい、という感じです。
確かに、プログラミング言語としてCOBOLがもはや主流でないのは事実かと思います。もともとはメインフレーム上で事務処理を行うための言語として生まれ、広く利用されていました。しかし、時代と共にオープン系のシステムが増えてC(C++/C#)が、さらにウェブ系のシステムではJavaやJavaScriptが利用されるようになり、今では新規の開発でCOBOLが利用されることは滅多にありません。とはいえ、これまでに開発されたコード資産が膨大にありますから、「特殊なプログラム」と言うのはさすがに妥当ではないかと思います。また、COBOLはもともと可読性の高い言語ですから(そのために冗長になりがちなのも事実ですが)、他の言語の習得者であれば、読むこと自体はそれほど難しくありません。
私事ですが、私が野村総合研究所に新卒で入社したのが1991年。この年、新入社員研修はCOBOLで行われました。ちなみに、翌年からはCになったので、私は最後のCOBOL世代と言えるかと思います(苦笑)。それだけに、「高齢者しか読めず」に反応してしまったわけです(笑)。
ところで、あまりにタイミングが絶妙なので驚きますが、実は先週、情報処理技術者試験で選択できる言語としてCOBOLを廃止することが発表されました。その代わりに新たに採用されるのは、私も使うようになったPythonです。実際に使うようになって実感しますが、開発生産性としてPythonの方が圧倒的に高いですし、まあ、これも時代の流れだと思います(ちなみに私が当時情報処理技術者試験を受けた際は、CASLでした。懐かしい)。
こういった状況ですから、今どきCOBOLは、という意見を否定するつもりもありません。ただ、「特殊」ですとか、「高齢者しか」という意見にはさすがに首を傾げます。件の報告書をもう少しちゃんと読めばわかりますが、「抽出替え等によりシステム改修の必要性が生じた場合には、……その際にはすべての仕様をペーパーで依頼する訳ではなく、口頭ベースで依頼することもあった」というのは、開発プロセスの問題であり、どんな言語を利用しようが同じ話です。
また、「一般的にシステム担当係でCOBOLを扱える者は1人又は2人に過ぎなかった。このため、一般的にシステム改修を行う場合はダブルチェックを行うが、ダブルチェックができない場合も多かった」というのは、一見COBOLのせいにも見えますが、この文のCOBOLをJavaやPythonに置き換えても成立しうる話です。つまり開発体制の問題。そもそもやるべき仕事に対して、システムを内製するという判断が正しかったのか。内製にするのであれば、それに必要な体制が整備されていたのかどうか。
COBOL世代だからといって、COBOLを擁護するつもりはありません。ただ、今回の報告書についていえば、明らかになっているのは、COBOLの問題ではなく、システム開発体制の問題、もっといえばITガバナンスの問題ではないでしょうか。