COBOLは悪くない

COBOL排除の動きが進んでいるそうで……

itpro.nikkeibp.co.jp

私はCOBOL触ったことないですし、COBOLerの実態もよく知らないし、そもそもSEではないので、以降完全に推測で書きます。


私は別にCOBOL言語自体は悪くないと思っている。確かに古いので、新しい言語にあるような近代的な機能はないかも知れません。しかし、だからといって使えないわけではない。実際今まで使えてきたわけだ。COBOLにやらせていることは単に給与とか税金の計算とかの事務処理だと思うのですが、それだったらCOBOLでも十分戦えるのでは?

問題なのは

  • とにかくコードの量が膨大であって誰も全容が分からないこと
  • 保守作業が極めて非効率であること

だと思います。ここがすでに間違っているかもしれないが、正しいこととして以降推論します。

これらは別にCOBOL言語の問題ではないですよね?

Javaにしたら、コードが綺麗になるから保守がしやすくなるということだろうか?DBや業務プロセスとか全て含めて見なおして、本当にフルスクラッチでシステムを作り直すなら、効果あるかなとは思いますが、そこまで大変なことをするのだろうか?同じ機能を実現するなら、わざわざ別の言語で作り直す意義が外からは見えない。

新しく作りなおすからドキュメントが残るし、作った人が中身を覚えるから保守しやすくなるということだろうか?これも推測だけれど、作った人は保守しないのでは?COBOL資産も書いた人以外は保守しているわけで同じことのような。

まさかCOBOLの保守をしている人が、Javaで設計して作りなおすなんてことはしないでしょう。そんなことしたらJavaで書かれたCOBOLになるに決まっている。COBOLの中身が分かる人に仕様を聞きながら、Javaを分かっている人が設計するということだろうか。でも、その仕様が分からないって話では?

また、極めて非効率な体制で非常に膨大な量のコードを書き直そうとしているのでしょう?無理だと思う。

問題を直接的に解決するなら、

  • コードを解きほぐしていって全容を明らかにする
  • 現代的な手法で保守体制を効率化する

をすればいい。まともにJavaに移行しようと思ったらこれらが満足されなければならないが、これらが満足されるならそもそもの問題は解決しているわけで……あれ?

なぜ中身が分からないようなCOBOLのコードが膨大にあるかというのを想像すると、おそらく次のような事情ではないかと思う:法改正とか商品の追加とかで新しくコードを追加しました;ある日付から古いルートではなくて、新しいルートを通るようになります;古いルートは永久に通らないがコードには残ったままとなっています;古いルートはもはやそれが何なのかすらわからなくなりました。

絶対に通らないルートを消していったら、かなりスリムになるのではないか?そうしたら通るルートもどうにか解読できるようになる気がする。

通らないルートを調べることなんて、人間がやらなくても機械でできそうです。こういうのを本来ならばベンダーが用意するべきだと思います。

COBOLのコードは冗長かもしれないが、すごく素直に書かれていると思うのですよ。実物は見たことないが、文法を調べる限りは難読化しずらいように思います。日付のついたファイル名とかルーチンとかはありそうだけど、直せないことはない。そんなに難しいことかな?

開発体制の効率化もコンサルタントが入ったらいいと思うのだ。開発者に自ら作業を効率化しろって言ってもそれは無理です。そもそも開発をする体制が悪いのだから、権限を持った人がやらないとできない。

勉強会とかで先進的な取り組みとしてテスト駆動開発だとか継続的インテグレーションだとかのノウハウを惜しみなく話してくれる方がいます。インターネットにもスライドが転がっているので、私も参考にさせてもらっています。善意で公開してくれているので有り難いです。しかし、この内容は余裕で金を取れるのではといつも思う。

コンサルタントが、バージョン管理システム(多分そこからです)とか、ビルドツールとか、テストツールとか、統合開発環境とかをセットアップして、使い方を教育すればよい。もちろん、もっとドキュメントの規則だとか、承認ルートとかも手を入れなければならないだろう。

まあ、ユーザーはどうせそういうところには金を掛けたがらないのだろうな。もしそうだとしたら馬鹿だなあと思う。ITでITを効率化できるのに……

そういうコンサルティングして稼げるならやりたいけど、いかんせん実績がないからなあ。

ベンダーもCOBOLで戦い続けられる環境を整えてやれば、顧客もそこから離れていかないのに……怠慢だよ。まあ、ベンダーの開発体制も怪しいものですけど。

結構な金脈が埋まっていそうなのに勿体無いなと思う。

ベンダーもユーザーもCOBOLは古いものだから昔のままでいいと決めつけてこれまでほったらかしてきて、今になって捨てなければならないと思いこんでいるだけだと思うのです。

古いことが悪ではない。非効率が悪なのだ。


分からないのに適当なこと書きました。多分間違っています。私の知らない事情があるに違いありません。

開発現場で役立つCOBOLプログラミング入門第2版

開発現場で役立つCOBOLプログラミング入門第2版