COBOLプログラムは工業製品としてはとても優れている
COBOLプログラムは工業製品としてはとても優れている
こういうタイトルを書くと一部の界隈の住民からバカにされそうである。
しかし、少なくとも、「実務でCOBOLで構築されたシステムの保守や大規模開発を経験したことがない」のにも関わらず、「新人にCOBOLの案件をやらせるのはいけないことだ」と言い切ったりしている人の言うことは、あまり信用していない。
COBOLは本当に不思議で不遇な言語で、企業システムにおいて大量に使い続けられてきて、いまでも使われている言語であるのに、私が知る限りでも「30年も以前から"COBOLは使われなくなるから学習する意味はない"と言われ続けてきた」言語である。
私がコンピュータ関連を専門に学んだ学生時代(1990年代前半くらい)の、25年前においても、学校の先生が真面目な顔で「COBOLを学習しても得るものはない。これからはC言語を学習しろ」と言っていた。(そして、それを信じて、C言語を学習するコースを専攻した訳であるが)
繰り返そう。少なくとも25年前からだ。たぶん30年前にもだ。
私の実体験だけで言っても、25年前から、現代と同じような事が言われていた。
だが現実はどうだろうか。COBOLは消えただろうか。
25年間、同じ事が言われ続けているという事実は、25年間、そう言われながらも使われ続けているという事である。
現に…。
私はこの平成29年度(2017年度)において、自分の仕事で、COBOLソースコードを数万行新たに生み出した。
C言語(系)との比較で言うなら、COBOLソースの方が圧倒的に追いやすい
大規模システムの保守の経験をしたことがあるなら、「如何に他人が過去に作った設計書やプログラムソースコードを追うことが困難か」を痛感する。
どのような処理の流れになっているかが追いにくい
処理がわかっても「意図」がわからない
仕様を知っている(べき)顧客は、実際には仕様などまるで知らず、平気で「この画面はどんな意味の画面か」「この帳票の項目に出ている数字の意味は何か」などと問い合わせしてくる。しかも「至急」などと言って。
新たにシステムを開発する場合にも、現行システムとのデータ連携は必ず発生する。現行システムを増築するケースも多い。
そして現行システムを組んだ人員は、たいてい離散してしまっている。
とても少数の人員で、限られた時間の中で、過去に見ず知らずの人が作った設計書やソースコードを読み解かないといけない。
「ソースを追えないのは、スキルが足りないだけ」
何とでも言うが良い。別に良いよ。スキルがないと思ってくれても。
そのシステムの仕様を追いかけるのは、基本的にものすごく困難な作業なのである。
前提知識として、ユーザー側の業務知識も必要だし、現行システムに対する広範囲な知識も必要となる。
そういう知識があったとしても、なお困難である。
C言語は、記述が自由で、人によるクセが出やすい。かなり不自由なルールを事前に作って運用しないと、無法地帯的なソースコードが量産される
COBOLは、もともと記述の自由度が低く、ルール化しやすい。そのため、人によるクセが比較的、出にくい。(あくまでも比較的だが)
私の職場で扱う言語はたくさんあり、大別すると、「C言語か、もしくは、C言語に近い言語」と、「COBOL」に分類できる。(近年はかなりJavaも増加してきた)
保守がやりやすいのは、圧倒的にCOBOLであると言える。
これは、「COBOLが非常に不自由な言語」であるという理由がある。
不自由で、かつ、できることが限られている言語である。
(ただし、10進数(特に小数点以下を多用する)の演算に限っては、実は非常に得意である)
「人によって差が出にくい」
この特性が、どれだけ業務システムの開発/保守現場で重要なことか。
こんな特性は「ちっともクリエイティブじゃない」と思うかもしれない。「技術を追究する姿勢とは程遠い」とも思うかもしれない。
そういうことは、クリエイティブな方面や、技術的な方面の、プログラミングでやれば良い。そういう方面の世界の話をしている訳じゃない。
(COBOLでゲームは作れない。そんなことは当たり前である。そんな事を問題視している時点で話の土台がズレている)
(ちなみに、Visual Basic と COBOL を同じような言語だとする意見があるようだが、全く違うと思う。VBは保守性から見ても、悪いが最悪と言って良い)
たぶん20年後も同じことが言われているだろう
「新人にCOBOLの案件をやらせるのはいけないことだ」
たぶん、20年後も同じことが言われているんじゃなかろうか。
何せ、これまで20年以上も同じことが言われ続けて来たのだから。
世の中の社会インフラや、金融業界などの業務基盤を支えている、裏側のシステムにおいて、COBOLは根強く使われ続けている。
仕事をやるもやらないも自由だが、自分が縁あってアサインされた仕事で、たまたまCOBOLを扱う案件であるという理由だけで、経験もせずに辞めるというのも、もったいないとは思う。
年度末ということで、こんな事を敢えて書いてみた。