初代Linux協会会長を務めるなど、オープンソースに造詣が深いWASPの生越昌己 代表取締役。これまでに習得した40以上の言語の中で、「COBOLは生産性と品質を高いレベルで保ちやすい」と評価する。「言語が持つ意思表示がはっきりしているから」が、その理由だ。COBOLの第4次規格(COBOL2002)をJIS化するための原案策定委員会に参画するのも、COBOLの“真髄”を守るためである。(聞き手は井上 英明=日経コンピュータ、写真は中島 正之)

(写真・中島 正之)

プログラマとしてCOBOLは好きか嫌いか。

 好きでも嫌いでもありません。20年ほど前にエンジニアとしての第一歩を踏み出して以来、40種類以上の開発言語を習得してきました。その中で、私がプログラミングしてきた量としては、COBOLはCに次いで2番目に多い言語ではありますが、数ある言語の一つとしてフラットにみています。

 もちろん、COBOLとのかかわりは長く多岐にわたります。初めてCOBOLを学んだのは、社会人として2社目となるテレビ局でのことです。放送システムを開発したり、メインフレームとオフコンのCOBOLを同じビジネスロジックで動かすためのミドルウエアを開発したりしました。

 日本医師会のレセプトシステムもCOBOLで開発しました。オープンソースソフトウエア(OSS)での開発が条件だったので、COBOLコンパイラやオンライントランザクションモニター(OLTP)も実装しました。この関係から、COBOLの第4次規格(COBOL2002)のJIS化委員も務めています。

 ただ、自分自身はCOBOLでゴリゴリとプログラムを書きたいとは思いません。COBOLでなければできない処理というものはないし、COBOLで書くと一つの処理の記述量が他の言語よりもずっと多くなるからです。

 しかし、誰かに業務システムの開発を委ねるときは、採用する言語としてCOBOLの優先度は高くなりますね。プログラムの生産性と品質を他言語より高いレベルで保ちやすいからです。これがCOBOLの良さです。

 COBOLは業務を記述するための言語です。コンピュータの専門家のためというよりも、むしろコンピュータの利用者に近い言語です。その文法は英文を読んでいるかのようで、はっきり言ってしまえば技術力を要求しません。

プログラマに対する意思表示がはっきりしている

 例えば、Aの値を加工することなくBに代入するといった処理の場合、COBOLではmove文を使います。「move A to B.」といった具合です。これが他の言語であれば、「=」でつないでしまう。「A = B」でオシマイです。

 move文でも「=」でも、処理の内容は変わりません。ですが、「何も加工せずにAをBに移すんだ」という意思が伝わってくる。COBOLのほうが冗長ではありますが、プログラマに対する意思表示がはっきりしているため、分かりやすさが違ってくる。move文こそに、COBOLの真髄が現れているといえるでしょう。

 COBOLの分かりやすさを示すこんな例があります。「BASICができる」と話していた新人に1日でCOBOLを教え現場に投入できたのです。もちろん、新人でも、そこそこのプログラミングができたのは、コーディング規約の順守を徹底させたことも大きいと思います。COBOLが本来持つ「冗長だが分かりやすい文法」にコーディング規約を組み合わせると、品質と生産性が上がるのです。

 コーディング規約を作ったのは20年も前ですので正確には思い出せませんが、使う命令文を限定して、プログラムを書き出すカラムやコメントの書き方などを決めました。使った命令文は10にも満たない数だったはずです。ifやperfome、move、call、compute、divide、addなどでしたでしょうか。そうそう、addはカウンタを増やすときだけに限定し、四則演算は基本的にcompute文で記述させました。

 生粋のCOBOLプログラマは、そのときに限定した命令以外もバリバリ使ってプログラムします。ですが、私の実体験上、業務システムを開発するに当たっては、この数で十分と判断しました。10個弱に絞った理由は、他言語には存在しないような命令文は使いたくなかったためです。例えばsort処理は、sort文を記述するのではなく、JCL内でsortのユーティリティを使わせました。