ITコラム

COBOLは「古い」のか?令和の時代にCOBOLの“いま”を語る

記事をシェアする:

レガシー・システムがデジタル・トランスフォーメーション(DX)の妨げになるという「2025年の崖」が、話題になることが多い。誕生から60年を迎えたプログラミング言語COBOLに対しても、その象徴の一つだと指摘する声も聞こえてくる。だが、金融機関などで新たに構築された最近のシステムでも、COBOLは採用されている。この状況を、どう理解すればいいのだろうか。そこで、最前線でCOBOLに触れているエンジニアに話を聞き、COBOLの実像に迫ってみる。

――まずは、お二人の自己紹介お願いします。

高橋:マイクロフォーカスのCOBOL事業部でプリセールスを担当しています。お客様のご要望に沿って、COBOLやPL/I アプリケーションの技術的なサポートや、活用方法の提案をしています。

竹村:私はIBMで、COBOLをはじめとするコンパイラーの技術スペシャリストとして、メインフレームのユーザー様に、コンパイラーおよび実行時環境のバージョンアップなど技術支援をしています。ポストセールス側で、プロジェクトをお客様と一緒に進めていく仕事がメインです。

――基本情報技術者試験では、2019年秋期からCOBOLの出題が廃止されます。「COBOLは古い」というイメージが増し、実際に触れる機会も減っているのですが、お二人はどのような経緯でCOBOLに関わることになったのですか?

マイクロフォーカス合同会社 COBOL事業部 技術部マネージャー 高橋桂子氏

マイクロフォーカス合同会社
COBOL事業部 技術部マネージャー
高橋桂子氏

高橋:私のキャリアは、COBOLプログラマーとして始まりました。ただ、当時すでにCOBOLに対するマイナスイメージが先行していた影響を受けて、みずからVisual Basic、C++、.NETといった技術を習得してシフトしていきました。ところが、実際の現場に出てみると、「COBOLは無くなる」と言われていたのに基幹システムの中で使われ続けていることを実感して、またCOBOL業界に帰ってきました。

竹村:私は学生時代にJavaやCなどを使った経験はありましたが、コンピューターを専門的に学んでいたわけではなく、COBOLに関しては名前も聞いたことがありませんでした。その後、IBMで初めてCOBOLを知り、触れることになりました。もともと知らなかったので、COBOLに対するイメージは何もなく、特に抵抗なく入っていけました。

COBOL はシンプルでわかりやすい言語

――ZDNetで『COBOL誕生から60年– これからも生き続ける理由』という記事を掲載したところ、非常に注目されました。古いと言われながらも、なぜ60年経っても生き続けているのでしょうか。お二人は、他の言語に比べて、どのような優位性があると感じていますか?

高橋:COBOLのプログラムは、上から下へ流れていきますので、シンプルで、処理の流れをつかみやすい言語です。一方、オブジェクト指向のプログラムはイベントごとに記述し様々なアクションから呼ばれるので、よく想定外の処理が実行されてしまい、他言語へシフトした当時は苦労しました。

日本IBMシステムズ・ラボサービス システムズ統合ソリューションアドバイザリーITスペシャリスト 竹村直氏

日本IBM システムズ・ラボサービス システムズ統合ソリューション アドバイザリーIT スペシャリスト 竹村 直

竹村:たくさんあると思いますが、1つは、事務処理に特化していることから、文法や命令が比較的シンプルです。英語の自然言語に近い思想で設計された背景もあり、ソースの可読性が高いということです。また、スキル習得が比較的容易なのも大きなメリットだと言えます。

高橋:古いプログラムは最新の仕様書がないことが多く、オブジェクト指向型言語では、まずクラス図を把握して、どのように継承されているかをチェックする必要があります。COBOLはどのようなデータ定義や処理がしてあるのかが直感的に理解できるので、仕様書がなくてもわかりやすいという点でも優位性があると思います。

また、COBOLではそれぞれのデータ項目に対して、小数点上・下の10進桁数を明示的に定義することができ、これらの間での四則演算、および、べき乗の計算を自由に記述できます。Javaや.NETのクラス・ライブラリーを使用して同じことをしようとすれば可能ですが、複雑な算術式だととても読みにくいものになってしまいます。

オープン系への対応など、今も進化し続ける

――竹村さんが考える、もう1つの優位性についても教えてください。

竹村:オープンやメインフレームなどのさまざまなプラットフォームに、さらに主要なミドルウェアにも対応しているのが、長きにわたって利用されてきた理由の1つではないでしょうか。COBOLの規格がANSIで定義されていて、それに基づいてさまざまなベンダーがコンパイラー製品を提供しています。COBOLの要素を維持しつつ、新しい技術の積極的な取り込みも進んでいるので、60年前のままではないと思います。

例えばIBMの場合、毎年新しい機能を取り入れるなど、コンパイラーへの投資を継続しています。メインフレーム「IBM Z」は新モデルが出るごとにCPUの命令が追加されますが、CPUの性能を最大限に発揮するようにCOBOLが生成するコードで最新の命令を使用するためのコンパイル・オプションが提供されています。それ以外にも、XMLやJSONをサポートするなど、オープン系とのやりとりも推進しています。

――「古いのに生き残っている理由はなぜなのか」、それが十分に理解されていない印象がありますね。

竹村:悪い意味で「レガシーなシステム」という言葉がよく使われます。私は、レガシーなシステムとは、「機能追加を繰り返して肥大化やブラックボックス化などの問題が生じてしまい、中身のロジックを誰も把握していなくて保守できなくなってしまったシステム」だと捉えています。新しい言語で書かれていてもレガシーになりうるし、組織や運用体制がレガシーを生むこともある。決して意味を取り違えてはいけないと思っています。

「COBOL=DXの足かせ」は誤解

――COBOLを誤解して「DX のために、COBOL以外に変えるべき」と議論している企業があったとしたら、どんな提言をしますか?

高橋:言語には得手不得手があるので、「COBOLだから」「Javaだから」というのではなく、適材適所でシステムを構築することが一番大切だと提言します。例えば、並列処理ができない時間を要する夜間バッチをJavaや他言語に書き換える場合は、性能面でのリスクを考慮しなければならないなど、メリット、デメリットを把握したうえで、公平な目で判断する必要があると思います。COBOLからツールで変換された、1クラスに1メソッドが定義されるようなJavaソースでは、本来のオブジェクト指向型言語の良さを享受できないと思いますし、手続き型言語をオブジェクト指向型言語に変換することは無理があります。

竹村:COBOLで書かれたソースや人材のスキル、過去何十年にもわたる実績・経験といった、お客様が蓄積してきた資産。それを単純にJavaなどで書き換えてしまうと、場合によっては資産が継承されないことになり、企業にとって大きな損失です。

――経産省の「2025年の崖」では、レガシーなシステムがDXの足かせになるとして、今からの対策を促しています。どのように感じていますか?

高橋:レガシー・システムの問題は、言語に依存する話ではないと思っています。DXでは、お客様のニーズをキャッチし、迅速にシステムに反映して利益を獲得することが大切なはずです。マイクロフォーカスのCOBOLは、アジャイル開発にも対応していますし、クラウド上でマイクロサービス化することもできます。クラウド上のサービスに、いろいろなデバイスからアクセスして望むとおりの情報が得られれば、「レガシー=COBOL=DXの足かせ」にはならないと思います。もっと広い視野でシステム構築を考えていただきたいですね。

――AWSのLambdaもCOBOLが使えるようになっていますね。

竹村:そうですね。また、言語に関係なく、脱レガシーを進めるためには、アプリケーションの見える化、棚卸しが重要です。アプリケーションを可視化するツールなどを活用して資産を見える化することや、加えて開発環境をよりオープンにすることも考えられます。IBMでは、Eclipseをベースにした開発環境を提供しています。オープンなテクノロジーを取り入れることによって、開発の効率化、品質向上を実現できると考えています。

それから、DXではデータ活用が重要ですが、これまではアプリケーションからのみアクセスが可能だったデータに、アプリケーションを介さずにアクセスできるAPIも提供されており、COBOLのアプリケーションだからDXの足かせになるとは考えていません。

DX向きの機能活用は、まだこれから

――COBOLは幅広い業種で使われていますが、特に金融業でよく使われているという印象があります。業界イメージと相まって、がっちりウォーターフォール型で開発しているイメージがあったのですが、高橋さんの話では、アジャイルでも使えるんですね。

高橋:マイクロフォーカスのCOBOLはDevOpsの観点から、CI(継続的インテグレーション)のプロセスを回す機能を強化しています。また、単体テスト・フレームワークを標準機能で使うことができ、EclipseのIDEからテストを自動化することができます。それから、JenkinsのようなCIツールをハブにしてビルドを自動化することもできます。

確立された既存の開発手法で業務が上手く回っていることもあり、あえてアジャイルで冒険しようというお客様はなかなかいらっしゃいませんが、将来を見据えた安心材料として受け止められています。Javaや.NETのエンジニアとCOBOLのエンジニアが一緒になって開発を進めるとき、こういう機能が役に立つだろうということで評価されています。

COBOLも含めた提案力がエンジニアの価値を高める


――全世界のトランザクションの7割がCOBOLでさばかれているという調査結果もあって、実は世の中のいろいろなところでCOBOLアプリケーションが動いています。一方で、若い人がCOBOLに触れる機会が少ないように思います。COBOLが使えると高給だという話も聞きますが(笑)、若い人にぜひ伝えておきたい魅力はありますか?

竹村:COBOLのアプリケーションは膨大に積み重ねてきたものが今も残っています。ただ、技術者の年齢が高くなっていて、同時に若手が減っています。高給かどうかはともかく(笑)、今後、若手技術者の存在価値が高まるのは間違いないでしょう。大きなチャンスとして、前向きに捉えてくれたら嬉しいですね。
COBOLは習得するのも難しくありません。IBMでは全世界の学生を対象に「Master the Mainframe コンテスト」というプログラミング・コンテストを毎年開催していて、2018年は全世界で約1万8,000名の応募がありました。そのコンテストでは、初めてCOBOLに触れたにもかかわらず、ここ数年、日本の学生が必ずトップ・グループの成績をおさめています。それまでCOBOLを知らなくても、チャレンジすると優秀な結果が残せるのです。

高橋:COBOLの利点も知って欲しいのですが、一つに固執するのではなく様々な言語も知って欲しいですね。いつの時代もニーズがあるのは、企業の利益になるエンジニアなので、COBOLを含めて、どこで何を使うのか根拠を持って提案できれば今後何十年も生きていけます。それが結局は自分の存在価値につながるので幅広く知ってしてほしいと思います。それと、竹村さんも話されたように、若手のCOBOL技術者は人数が少なくニッチなので、高給を狙う人が出てきてもいいのではないかと思います。Javaは、みんなできるから下がりましたよね。

竹村:金融業をはじめ、製造業など止められないシステムを動かすことに価値を見いだせれば面白いと思います。それから、80年代のタイムスタンプが入っているプログラムもあって、30年前に書いたものが社会を支えているって、すごいことですよね。作ったものが、資産になる。COBOLはこれまで使われながら進化し、今後も使われる非常に重要な役割を担っていく言語だと考えています。

――本日は、どうもありがとうございました。

※このページは2019年11月のZDNet Japanに掲載された記事の転載です。

 

IBM COBOL関連ページ

IBM Enterprise COBOL for z/OS
IBM COBOL for AIX

More ITコラム stories
2022年12月16日

女性技術者がしなやかに活躍できる社会を目指して 〜IBMフェロー浅川智恵子さんインタビュー

ジェンダー・インクルージョン施策と日本の現状 2022年(令和4年)4⽉から改正⼥性活躍推進法が全⾯施⾏され、一般事業主⾏動計画の策定や情報公表の義務が、常時雇用する労働者数が301人以上の事業主から101人以上の事業主 […]

さらに読む

2022年12月9日

Qiskit Runtimeで動的回路を最大限に活用する

私たちは、有用な量子コンピューティングのための重要なマイルストーンを達成しました: IBM Quantum System One上で動的回路を実行できるようになったのです。 動的回路は、近い将来、量子優位性を実現するため […]

さらに読む

2022年12月8日

Qiskit Runtimeの新機能を解説 — お客様は実際にどのように使用しているか

量子コンピューターが価値を提供するとはどういうことでしょうか? 私たちは、価値を3つの要素から成る方程式であると考えます。つまりシステムは、「パフォーマンス」、「機能」を備えていること、「摩擦が無く」ビジネス・ワークフロ […]

さらに読む