COBOL「私を殺すと言ってた言語は、みんな死んだよ」

ITPro方面に火種があったので。

COBOLやVB6との決別、初手は不良資産の一掃

中を読めばいつもに日経コンピュータなんだが…

例によって、日経コンピュータがCOBOLを悪者にしている。まぁ、いつものことなんで、それ自体は割とどうでもいいんだが、見出し詐欺はいけない。何がそうかと言えば、後半の「かんぽ生命」の話。

1200億円の巨費を投じて基幹系システムをNEC製メインフレームから米IBM機に移行し、2017年1月に稼働させたかんぽ生命保険も、ツールで全体の1割に相当する不要資産を廃棄した。NECの独自言語「IDLII」からCOBOLにツールでリライトした。

見出しに「COBOLやVB6との決別」とか言いながら、よく見れば

COBOLにした

という話だ。見出しと違う話なんで「あれれ?」と思ってTwitterで聞いたりもしたんだが、

かんぽ生命副社長・井戸潔が語る基幹系システム刷新、成功の鍵とは?

システムの仕様情報がない中で、開発言語をIDL2からCOBOLに変え、700万にのぼるプログラムのステップを、自動変換率95%という高い精度でコンバージョンしてくれたIBMの技術力に尽きます。ピーク時には約2000人を動員して、基幹系システム更改にかかる変換、テスト、検証という膨大な作業を一切の間違いなく行ってくれました。もし、この自動変換率が80%だったら、プロジェクトは成功しなかったでしょう。

とあるので、記事が間違いなんじゃなくて、見出し詐欺なだけだ。

業界にいる人達はご存知のように、昔のメーカ製「独自言語」はロクなもんじゃないんで、それよりマシなCOBOLにするのは、脱レガシーの第一歩だから、まぁ当然な話。

というのはさておき、いまだに日経コンピュータは

COBOLはレガシー

と言い続ければCOBOLが消えてなくなると勘違いしているようだ。もうかれこれ30年くらいそう言い続けてるような気がする。そういったことへの批判は飽きる程書いたので、

だから、「COBOL」の問題じゃないってば

のあたりから私の書いたものを辿ってみてくれればいいし、まぁ無理に見なくても良い。

日経コンピュータは、もう何年も「COBOLはオワコン」を繰り返している。いわく、「COBOLはレガシー」「COBOLは技術者を育てない」みたいな事を言う。あげくの果てに

COBOLは滅びる

的なことを言う。お前はCOBOLに親でも殺されたのかって勢いだ。これは何も「日経コンピュータ」に限らず、そういった系統の世界ではしばしば言われていることでもある。

私はこれに「あと○年で石油が枯渇する」に似たものを感じる。いつまでたっても石油は枯渇しないし、COBOLも滅びない。よく似てる。

さて、「石油が枯渇する」というのはどういったことかと言えば、油田が空になってしまうこと… ではない。「石油が枯渇する」とは、

原油価格と生産費用が逆転する

ことである。つまり、石油が採れなくなるからではなくて、採っても金にならなくなるので石油が生産されなくなって、その結果石油がなくなってしまうのである。もちろん市場原理というものがあるから、なくなって困る人がいれば原油価格が上がって来て、掘る意味も出て来る。他方、代替エネルギー等が進歩すれば困りもしなくなって、「なくなって」しまう。

実は「COBOLが滅びる」というのも同じようなことである。「COBOLが滅びる」のは、レガシーだとか技術的にどうこうとかという批判に耐えられなくなるからではなくて、

COBOLで書かれたものが不要になる

からに過ぎない。COBOLで書かれたものを維持したり、新規にCOBOLで書いたりすることのコストが、「COBOLで書く」ということで得られるメリットを超えてしまった時、COBOLは滅びる。

ITエンジニアやIT系ジャーナリストの一番の勘違いは、

普通のITユーザはシステム開発それ自体に興味を持っていない

ことを忘れてしまうことだ。今はいろんなものがIT化されているから、どんどんそれに追従して行かなければならないのであるが、それはあくまでも

必要悪としてのシステム開発

をしているだけで、しないで済むならしたくはない。動いてしまったシステムは特に不都合がなければ永遠に使いたい。業務が変化しないのであれば、システムを変更したくもない。だから、むしろレガシー(遺産)が活かされることは大歓迎なのだ。「先進の技術」なんてのは、

IT屋の寝言

でしかないし、それを採り入れないことが悪いことでもない。それが一般的なユーザーの姿だ。それが本来のシステム開発の出発点だ。

そうなると、IT屋どもが「COBOLのデメリット」として挙げることは、全て一般的なユーザにとっては関係がないか、むしろ歓迎なのだ。COBOLを捨てる理由はそこにはない。

さらに言えば、COBOLには何10年にも渡っての後方互換性の維持という、素晴しい実績がある。つまり、1970年代に書かれたコードも、現代のコンピュータの上でコンパイル可能なのだ。1970年代に「COBOLはいずれ滅びる。俺がそれをやる」と言って現れた言語は多数あるが、その中で今生きているものは何があるだろう。ほぼ全てがCOBOLが滅びる以前に自分が滅んでしまっている。

他方、業態変化の激しい企業だと、COBOLでいろいろ追従するのは辛いなーってことは起きるだろう。あるいは、本業そのものでない、そんなに長持ちさせる必要のないシステムであれば、速く作りたいという要求もあるだろう。あるいは、そういったレガシー(遺産)を維持するコストが厳しくて作り直した方がお得だとかってこともあるだろう。そういった

経済的に合理的な理由

があれば、COBOLでなくてもいいし、COBOLを捨てる方向になっても良い。逆に言えば、そういったことでもない限り、ユーザはCOBOLを捨てないし、滅びたりしない。レガシーだなんだという批判は雑音でしかない。