トップへ

COBOLをご存じですか?~社会基盤のアトラスのいまとこれから~

2023年04月04日 17:31  Techable

Techable

写真
こんにちは。東京システムハウス株式会社の比毛寛之(ひもうひろゆき)と申します。

私の仕事は、レガシーマイグレーション屋さんです。本日ご紹介する「COBOL」で構築されたITシステムを、レガシーな環境からモダンな環境にマイグレーション(引越し)をし、最新技術で刷新する仕事をしています。日々、COBOLと向き合う方々のお悩みを聞いています。

COBOLは60年以上前に誕生しましたが、今でも行政や金融、企業の事務処理を支えています。

一方で「古い、時代遅れ、いつか消える、不人気」など世間から言われ放題ですが、COBOLは人知れず黙々とたくさんの処理を日々こなし、世界の社会基盤を支えている言語です。その姿はまるで、ギリシア神話で世界の西の果てで天空を背負うアトラスです。

もし、COBOLが手を離してしまうと、天空が落ちてきて社会は大混乱となります。

この記事では、社会基盤を支えるアトラスである「COBOL」はどのような言語で、何を背負っているのかについて考察します。DXに関する話題も混ぜたくなりますが、焦点がぼやけるので、あえてCOBOLのことだけに集中することにします。
COBOLとは?まずは、バレバレの質問かもしれませんが、次の統計データの正体はどのプログラミング言語でしょうか。

・銀行システムの43%を構築しています
・個人取引の80%で使われています
・95%のATMが依存しています
・世界で2200億行のコードが稼働しています

正解は、プログラミング言語 COBOL です。REUTERS Graphic「COBOL blues」に掲載されているデータを引用しました。

アトラス「COBOL」は、私たちの日常生活を支える巨大な社会基盤のデータを処理しており、そして、大量のコードが稼働していることからアトラス自身も巨人であることが分かります。

COBOLは、「Common Business Oriented Language」の略で、1959年に事務処理計算用に誕生したプログラミング言語です。平易な英語の単語や語句を使ってファイル操作や計算などのビジネスロジックが記述でき、プログラマでなくても理解しやすい言語です。

他の言語であればAPIやライブラリを利用するような処理を言語仕様として持っていることが多く、例えば、ファイルの読み書き用にREADやWRITEなどの予約語を用意しています。

その言語仕様は国際規格で標準化されており、ISOが2023年1月に新しい規格である ISO/IEC 1989:2023 を公開しています。
コード例を見てましょうシンプルなコード例を示します。下記はCOBOLによる"HELLO WORLD"のサンプルコードです。
IDENTIFICATION              DIVISION.
PROGRAM-ID.                 HELLO.
DATA                        DIVISION.
WORKING-STORAGE             SECTION.
01  MY-TEXT                 PIC X(40).
PROCEDURE                   DIVISION.
MAIN-RTN.
  MOVE "HELLO WORLD!" TO MY-TEXT.
  DISPLAY MY-TEXT.
  STOP RUN.
英語のような自然言語で記載されているため、コードは長くなりがちですが、可読性が高いと言われています。サンプルコードの最後3行は手続き文となりますが、翻訳ツールで日本語に翻訳すると意味がある程度理解できます。

"HELLO WORLD!" を MY-TEXT に移動します。
MY-TEXT を表示します。
実行を停止します。
COBOLはどこでどのように使われている?COBOLは誕生から60年以上が経ち、現役のIT技術でCOBOLより古いものはありません。

C、C++、Java、C#、Python、JavaScriptなど様々なプログラミング言語がありますが、COBOLはこれらの汎用言語よりもずっと先に誕生しており、それらの影響を受けていません。

誕生当初より事務処理計算が得意な言語であり、多くの行政機関や金融、企業はメインフレームと呼ばれるコンピュータ上に膨大な量のCOBOLプログラムを作成してきました。

COBOLは、トランザクション処理などデータを扱う処理で利用されています。例えば、給与計算、年金基金、銀行や保険会社のシステム、ホテルや航空券の予約、工場の生産管理などです。

COBOLは、ファイルやデータベースなどの入力データを取得し、それらを計算し、加工してから、目的の形式で出力します。複数のCOBOLが逐次実行される「バッチ処理」として結合され、スケジュールまたは任意のタイミングでのオンデマンドの「ジョブ」として実行されます。これが、昔から変わらないCOBOLの主要なユースケースです。

1980年代以降、各メーカーからオープンシステムで動くオープン系COBOL製品が登場しました。

例えば、国産メインフレームメーカーのオープン系製品(NEC、富士通、日立)の他、IBM、Micro Focus、オープンソースのGnuCOBOL(国内では opensource COBOL)などがあります。

これらの製品はWindowsやLinuxで動作し、EclipseやVisual Studio CodeでCOBOL の開発をすることができます。

※Visual Studio Codeで opensource COBOL 4J による開発をしているイメージ

それに伴い、メインフレーム上のCOBOLシステムのダウンサイジングやマイグレーション、モダナイゼーションなどの刷新ブームが起き、現在もオープンシステムやクラウドで稼働するCOBOLシステムが多くあります。

独立行政法人 情報処理推進機構(IPA)の「ソフトウェア開発データ白書2018-2019」によると、システム開発の現場(IT企業4,564プロジェクト)で使われている言語として、COBOLは1位のJava(42.7%)に次ぐ2位(13.3%)でした。COBOLは、主要な開発言語として依然として多くの現場で使われています。
脱COBOLブーム近年では、DX推進として既存のITシステムのブラックボックス解消やデータの利活用が進められることに加えて、メーカーのメインフレーム製造終了やCOBOL技術者の減少などの理由から、COBOLシステムをパッケージやJavaに置き換える動きが加速しています。

企業の脱COBOLの事例や計画がニュース記事となることも増えており、一層それが加速している印象があります。

例えばこのような記事があります。

・au PAY、ポイント基盤を刷新 “脱COBOL”実現(2023/3/1)
・次期全銀システムは富士通メインフレームとCOBOLから脱却へ、何が変わるのか(2023/2/8)
・ベイシアが挑んだ「脱COBOL」の全容(2022/10/27)

しかし、実際に脱COBOLを推進するためには、数十年に一度の大規模刷新として、多額の予算や人材の確保、IT資産の整理などが必要です。

それだけの予算や人手に見合うメリットがあるのかどうかが議論され、先延ばしや断念をするケースも多くあります。

そのため現在もCOBOLをメインフレームで使い続ける企業、オープン系COBOLを利用する企業、脱COBOLを断念した企業など、今日においても冒頭の統計データの通り、世界にはまだまだCOBOLが残っており、多くの企業が事務処理計算の中心として利用しています。
COBOLをやりたくないと言う背景少し前の記事ではありますが、学びたくない言語ランキングでCOBOLは1位でした。

・技術者440人が「学びたくない」言語ランキング、不名誉な首位はあの言語(2019/11/20)

この記事の中に理由は出てきませんが、他のCOBOLが登場するニュースやIT雑誌の論調、色々な方々と話してきた経験から、「難しい」や「新しいことができない」という理由が多いように感じています。
COBOLは難しい?まず、COBOLが「難しい」というのはどういうことでしょうか。COBOLで構築したシステムは、歴史が長く大規模であることから、増改築で複雑化しているということが多いです。例えば、以下のようなプログラムが見受けられ、保守がし辛くなっています。

・コピペで複製して少し変更しただけのプログラムがたくさんある
・万が一に備えて念のため残したコードが残存している
・引継ぎ不十分でその場しのぎで作ったコードで動いている
・ベンダー独自機能や特殊な機器向けの制御コードが多用されている

本来、COBOLは平易な英語の単語や語句を使う理解しやすい言語です。COBOL自身が難しいというよりは、システムの維持管理の問題であることが多いです。同じことはCOBOL以外の言語でも起こります。
COBOLは新しいことができない?次に「新しいことができない」ですが、COBOLは止まってはいけない基幹システムで使われていることから当然ではないかと考えます。安全、安心が求められるシステムでは、新しい技術や実績の少ない技術の適用は困難です。

一方で、COBOL自身は、各ベンダーが最新技術を取り込んでおり、XMLやJSONが扱え、REST APIを呼んだり、Javaや.NETと相互連携したりすることもできます。

COBOL自身の機能不足が理由で新しいことができないのではなく、利用されるシステムの性質によるものであり、同じことはCOBOL以外の言語でも起こります。

やりたくない、学びたくないという理由は、COBOL言語ではなく、COBOLシステムの資産の状態や適用場面という背景があります。
これからのCOBOLとの関わり方21世紀のこれから、COBOLとはどのように関わることになるのでしょうか。
新しいシステムをCOBOLで構築するか?ここまで、COBOLの肯定を多めに書いてきました。では、これからもCOBOLで新しいシステムを作成するべきでしょうか。

これは、どちらかと言えば「いいえ」です。そのシステムの処理内容やワークロード、対応する技術者のスキルセットがCOBOL向きだというのであれば、COBOLが良いのかもしれません。

しかし、現在多くの企業が直面している課題を考えると、新しくCOBOLで大規模なシステムを構築することは現実的ではありません。かつてCOBOLが最適と言われた処理にも、他の言語やツール(ローコードやETLなど)で対応できますし、最新の言語のライブラリやフレームワークの方が開発や保守がしやすい場合もあります。

また、ベンダーのCOBOL製品を新しく準備する場合、他の言語やツールよりも高額になることが多いです。
COBOLは使われ続け、新規格や新技術にも対応していくしかしながら、今後もCOBOLは使われ続けます。理由は、元々COBOLで構築されていたためです。今後も脱COBOLや作り直しの検討が進みますが、コストにメリットが見合わず経済的合理性がないと、引き続きCOBOLの既存システムを保守していくことになります。

COBOL言語自身は、 ISO/IEC 1989:2023のように規格が更新され続けています。COBOL製品を提供するベンダー各社およびオープンソースのコミュニティは、今後も新しい規格や最新技術の取り込みを続けます。COBOLの既存システムを、塩漬けにするにしても、業務に合わせて最新化を続けるにしても、最新環境は今後も提供され続けます。

最新環境のCOBOLは、コンテナ化したり、CI/CDを構築したり、クラウドネイティブなアプリを作ったりすることができます。

私の顧客には、Visual Studio CodeでCOBOL開発をし、Githubにコミットをして、Github ActionsでCOBOLコンテナを動かしてCIを回している企業もあります。新しく作ることはないものの、既存のCOBOLを最新技術に適応したり、最新環境に乗せることができます。

データの利活用やAPI基盤による各システムとの相互連携が重要である現在、COBOLとそれ以外のシステムが同じ基盤で利用できることには多くのメリットがあります。
COBOL技術者問題はどうなる?多くの企業の悩みである「COBOL技術者不足」はどうなるのでしょうか。

COBOLが存在する限り、その業務処理の修正や、別言語に置き換えるために読んで理解するスキルのニーズは続きます。しかしながら、COBOL専任(極めた"仙人"とも言えます)の技術者は減りつつあります。

近年では、GnuCOBOLやopensource COBOLのようなオープンソースのCOBOLで容易に学習環境が作れ、オンラインの学習教材も多くあり、習得の敷居はだいぶ下がりました。

最近、複数の言語スキルの1つとしてCOBOLができ、COBOLと別言語の相互連携や、COBOLから別言語への置き換えを経験している技術者を見かけることが増えています。COBOLのスキルセットは専任から兼任に変わりつつあり、十分ではありませんが、市場のニーズに応じた新しい技術者が供給されていくと考えます。

今後、COBOLが新規構築に使われることは減りますが、既存のCOBOLシステムの保守は続きます。最新技術や最新環境ともうまく組み合わせ、複数の言語スキルがある兼任のCOBOL技術者が対応し、適材適所で利用していくことになるのだと考えます。
最後にCOBOLの過去、現在、未来について考察しました。COBOLは、多くの行政機関、金融、企業などの基幹システムで広く使われています。すべての人が日常生活で何らかの接点があります。今後も完全にはなくならず、適材適所で形を変えて利用されていきます。

天を支える苦痛に耐えかねたアトラスは、やがてメデューサの力で石となってその生涯を終え、アトラス山脈として現在も天空を支え続けていると言われてます(諸説あり)。現代の社会基盤のアトラス「COBOL」は今後どのようになるのか。

・利用継続 ・・・ COBOLシステムを頻繁に改訂する企業は、アトラスに引き続き支える役割を与える
・塩漬け ・・・ COBOLシステムを改訂せずに使い続ける企業は、アトラスを石化させる
・脱COBOL ・・・ 別言語に移ることで、アトラスの体は少しだけ小さくなる

アトラス「COBOL」は、一部が生身のままで、もう一部が石化し、本人の巨体も少しずつ小さくなっていきますが、今後も社会基盤を支え続けていきます。
<著者プロフィール>

東京システムハウス株式会社
マイグレーションソリューション部
部長

比毛 寛之
1999年、東京システムハウスに入社。COBOLシステムをはじめとしたデータ資産を別の環境に移行するITモダナイゼーションに長年携わり、2016年より現職。2021年よりOSSコンソーシアム理事を務め、基幹系でのオープンソースソフトウェアの活用も併せて推進中。

会社URL:https://www.tsh-world.co.jp/