なんかここ最近、にわかにCOBOL言語が話題になってるなと不思議に思いました。
こんにちは! 松田軽太です。
普通に考えたら「令和の時代にCOBOL言語の話題なんかないでしょ?だってCOBOL言語って絶滅寸前の化石言語でしょ?」と思いますよね。
しかし、COBOL言語が今になって話題になっている理由はAWSでCOBOLを動かす「AWS Lambda」というサービスがキッカケでした。
というワケで「COBOL」ググってみたら、面白い記事がわんさか見つかりました。
そもそもCOBOL言語ってなんなん?
COBOL言語は大昔から使われている歴史の長い言語です。
まずは「COBOL」でググってみました。
ちなみに「COBOL」とは「Common Business Oriented Language」の略だそうです。
(初めて知りました・・・)
Wikiから引用してみます。
■誕生経緯
1950年代、事務処理言語は開発メーカーごとに異なっていた。
その統一の必要性を認識していたアメリカ国防総省によって、事務処理用の共通言語の開発が提案され、CODASYL(Conference on Data Systems Languages、データシステムズ言語協議会)が設立された。
そうした背景の下、1959年にCODASYLによって開発された共通事務処理用言語がCOBOLである。
その後、1960年1月にCODASYL執行委員会によって最初の仕様書が承認され、合衆国政府印刷局に送られた。
この最初の仕様書は1960年4月に発行され、通称COBOL-60と呼ばれている。
COBOLの開発により、アメリカ政府の事務処理システムは全てCOBOLのみで納品されることとなった。
これに伴い、COBOLは事務処理用言語として世界中に普及することになる。
要約すると「アメリカ国防総省の提案で事務処理用言語として1959年から使われ始めたプログラム言語」ということですね。
今年が2019年なのでなんと生誕60年なので還暦ですよ、還暦。
人間だったら定年退職している頃です。
そんなに昔から使われているプログラム言語なので世間から化石言語と揶揄されているのですね。
なぜCOBOL言語を使い続けとダメなのか?
コンピューター専門誌では、ずっと前から「COBOL言語なんかもうすぐ絶滅する」と言われ続けていますね。
ずっと昔から言われているいうことは逆に言えば、ずっと生き残っているということでもあるのです。
まずよく言われるのは「COBOL言語なんて今から若者がわざわざ習得すべきプログラム言語ではない」ということです。
何故ならこれからCOBOLプログラムで新規開発されるようなシステム案件はないし、現在のCOBOL言語を扱う仕事内容は、大昔から動き続けている老朽化システムの延命処置ばかりだからですね。
いずれは無くなるような老朽化システムの介護という、後ろ向きな仕事に若者が大事な時間を割いているのはモッタイナイのでもっと将来性のあるプログラム言語を習得して技術を高めた方が良い、という内容です。
確かにCOBOLが稼働しているようなシステムの多くはメインフレームで稼動しているでしょうから、クラウド全盛の現状を考えるとこれから数十年先もメインフレームが使われ続けるとは思えないですよね。
COBOL技術者の中にも20代とか30代のCOBOL技術者もいるのでしょうが、現実問題として50代以上が多いでしょうから、あと10年もするとCOBOL言語を扱える技術者は激減するでしょう。
となると保守フェーズのシステムとはいえCOBOL技術者は不足するでしょうから、そのようなCOBOLシステムを維持していくのもリスクがあると言えますよね。
実際に2019年の1月に大問題となった勤労統計問題でも、COBOLのプログラムミスが原因だと話題になったのは記憶に新しいところです。
システム改修を行った担当係によると「外部業者等に委託することなく自前でシステム改修を行うが、毎月勤労統計調査に係るシステムのプログラム言語はCOBOLであり、一般的にシステム担当係で COBOL を扱える者は1人又は2人に過ぎなかった」。
このため、ダブルチェックができなかった。
職員のヒアリングの中でも「単純なプログラムミスだと思う」、「システム更改のタイミングでオペレーションが漏れたのではないかと思う」
といった供述が出ている。
事務処理の誤りを生じやすく、そのチェックが適正に行われにくい体制上の問題点は職員の間でも認識されていた。
こういう大事故が露呈すると「ほーら!いつまでもCOBOLなんか使ってるからこういうことになるんだ!」と罵られるので、どんどんCOBOL言語に対する印象が悪くなっていくのです。
COBOL言語には昭和100年問題も内在している
日経 xTECHで木村 岳史氏が『そろそろCOBOL絶滅のシナリオを考えようか』という記事を書かれています。
この記事の中で目をひいたのは「昭和100年問題」というものです。
そこだけ引用してみます。
COBOLプログラムがこんなに残存するなら、例の「昭和100年問題」も本当に起こるかもしれない。
日付を和暦の2ケタで扱う、昭和期に作られたプログラムを改元などのタイミングで改修していないならば、昭和100年に当たる2025年にシステム障害が起こる。それが昭和100年問題だ。
これを読んで「なるほど、ありえるなぁ」と思ってしまいました。
和暦の2桁で定義していたら、昭和100年になったら 昭和00年 になってしまうので、何かが起こるんじゃないかということですよね。
しかも「昭和100年」も2025年だから、SAPの保守切れといい経産省の警告する「DX-2025年の崖」って良いところを突いていますよね。
なぜCOBOL言語はなくならないのか?
世間では何年も前から「COBOLを使い続けるのは無謀だ」みたいに言われてますが、実際には今でも沢山のCOBOLシステムが稼働しています。
こんなにデメリットがあるならさっさと止めればいいのに、なんで今でも現役で稼働しているのでしょうか?
60年も前の考案された言語だから、古くさいのは当たり前です。
その答えはCOBOLで構築したシステムは「ずーーっと動くから」でしょう。
枯れた言語なので、メインフレームを入れ替えてしまえば動くんですよね。
メインフレームは機器そのものの値段が高いとはいえ、これを別のERPとか新規に作り直すと言ったら、とんでもない手間と費用が掛かります。
例えばJALの基幹システム刷新には800億円も掛かっているし、みずほ銀行のシステム刷新は4000億円も掛かっています。
そして業務システムを作り直すということは業務フローの見直しを行う必要もあるし、全社あげての大仕事です。
しかも何かトラブルが発生したらそれこそ大問題です。
何十年も同じような製品を製造している工場の生産管理システムがCOBOLで動いているのであれば、特にシステムを換える必要もないでしょうしね。
現在動いているCOBOLシステムで運用管理が出来ないというのであれば、まだしも、特に何も問題ないのであれば経営層にしても、システムを利用している現場作業者にしても、そのまま使い続けたいと考えるのは自然です。
だからいつまで経っても、COBOL言語はなくならないのです。
COBOL言語はこの世から抹殺しなければならないのか?
COBOLの今後を調べていたら『COBOL「私を殺すと言ってた言語は、みんな死んだよ』という衝撃的な見出しの記事を見つけました。
『これからはCOBOL言語は○○言語に置き換わる』とか言われ続けているけど、そんな風に言われてから数年経ってみると先に○○言語が先に廃れてしまっているというのです。
つまりなんだかんだ言っても、COBOL言語を使い続けることの方に経済的なメリットがあるのであれば、これからも使い続けるのが自然だということなのです。
まぁ、そりゃそうですよね。
このままいくと還暦どころ100歳まで長生きしそうな気がしてきました。
他にもマイクロソフトの澤さんの記事も興味深いので紹介しておきます。
『元COBOLプログラマから見た、最近の「COBOL狂騒曲」に関する考察』
COBOL問題の根底にあるものとは?
さて、最近COBOLはずいぶんとやり玉に挙がっていたり、まるで言語そのものが悪者であるかのような扱いを受けていたりします。
「高齢者しか分からない特殊な言語」というような発言がありましたが、これはなかなかパワーワードであるなと思いました。
動いているシステムを移行させることに、たいていの顧客は難色を示します。
ITの分からない経営層は「動いてるんだからいいじゃん」といって予算化をしたがりません。
実際の運用や開発をする側からすれば「今と同じことを処理させるためだけに、別の環境に移行するのは面倒くさい」と考えます。
ましてや、今の時点で動いているものが動かなくなったりしたら、それこそユーザー部門から袋叩きにあうのが明白だからです。
ということで、レガシーシステムはひっそりと動き続け、内包されているバグは実際に何かのきっかけで表出するまでは放置されるわけです。
その間に、実際に開発したプログラマも、デバッグができる運用担当者も、その職を離れてしまい、野良システム化がどんどん進んでいきます。
これは、COBOLに限らず発生するリスクがあるのは言うまでもありませんよね。
今はバリバリ現役のJavaやC#でコーディングされたプログラムも、10年後はどうなるか分かりません。
そうなんですよね。今のところ、老害扱いされているCOBOLですが、Javaなどの言語も流行廃りの中で、数年後には老害言語扱いされる可能性があるんですよね。
とはいえ「だからCOBOLを使い続けるべきだ」というワケでもないんですけどね。
若手がCOBOLを使っているという事例もあった
ここまでCOBOLが老害言語になっていったいきさつを書いてきましたが、驚いたことに、若手がCOBOLを使って新規開発しているという記事を日経 xTECHでみつけました。
『若手がCOBOL、中国大連の開発現場に潜入』
同社は2018年4月から、COBOLシステムの開発・保守の高速化を目指し、アクセンチュアと共同で同拠点での新たな開発手法や開発環境の導入に取り組んでいる。
「保険商品の開発はスピードが命。新商品を素早く開発できれば、競合他社よりも有利にビジネスを進められる」。
アクサ生命でCOBOLシステムを担当する菊池祐介氏(ITギルド&プラットフォーム本部 アーキテクチャ&データギルド シニアトライブアーキテクト)はこう説明する。
そもそもアクサ生命には、メインフレーム上で稼働するCOBOLプログラムが約3万5000本もある。
総ステップ数は約3000万行。膨大なCOBOL資産について菊池氏は「他の言語への変更も考えたが、費用対効果が見合わなかった」と打ち明ける。
COBOLシステムのまま使い続けるほうがメリットは大きいと判断したのだ。
この事例のように敢えてCOBOLシステムを使い続けるという選択する企業もあるのです。要するに使い方次第ということですね。
結局、COBOLを使い続けても大丈夫なのか?
COBOL言語がやり玉にあがっているのは、大昔に作られた古くさい言語ということと、COBOL技術者の高齢化に伴う人材不足が原因です。
では、COBOLシステムから最新のERPに移行した方が良いのかというと、自社にとってメリットがあれば移行した方が良いでしょうし、何もメリットが無ければ「無駄な情報化投資だ」と揶揄されるでしょう。
それでなくてもただでさえコストセンターだの金食い虫だのと文句ばかり言われているのですから。
結局のところ「COBOLシステムを使い続けることができる環境を維持できるか?」がポイントになるのでしょう。
アクサ生命ではこれからもCOBOLシステムを使い続ける決めるにあたり人材や環境を維持できるだけの準備を整えています。
でもCOBOLシステムを使い続けている中小企業ではどうでしょうか?
果たしてこれから何十年も先までCOBOLシステムを維持できるような技術者を確保できるのでしょうか?
それが可能であって、使い続けることにデメリットがないのであれば、使い続けるという選択肢もありでしょう。
しかし現在、日本は空前の人手不足であり、このような状況でCOBOLシステムを維持できるような人材を確保できないというのであれば今のうちからERPなどへの移行を計画すべきです。
結局のところ、COBOL言語が悪者なのではなく、どんなプログラム言語であろうと「将来、誰も面倒をみることができないシステムが残り続けること」が問題なのです。
ちなみに僕の職場ではCOBOLシステムを一掃してERPパッケージに移行しています。
え?大変だったんじゃないかって?そりゃ、ムチャクチャ大変でしたよ!
それでもCOBOLシステムを棄てたのは、これから先もCOBOLシステムを維持していくのは不可能だと判断したからです。
なので、情報システム部門の責任者の方々は、まずは次の10年先に目を向けて「本当にこのシステムを運用し続けることが可能なのか?」を考えて、現実的な方向性を選択すべきだと思います。
- 作者: 日経BP社コンピュータ・ネットワーク局コンテンツ開発
- 出版社/メーカー: 日経BP
- 発売日: 2003/10/01
- メディア: 雑誌
- 購入: 1人 クリック: 7回
- この商品を含むブログ (1件) を見る
なぜ日本企業の情報システムは遅れているのか―レガシーマイグレーションのすすめ
- 作者: 玉生弘昌
- 出版社/メーカー: 日本能率協会マネジメントセンター
- 発売日: 2003/01
- メディア: 単行本
- クリック: 4回
- この商品を含むブログ (1件) を見る