EVENT×NEWSイベント・ニュース

opensource COBOL 4J でできる COBOL to Java 変換とは?【前編】

コラム

近年、DX推進として既存のITシステムのブラックボックス解消やデータの利活用が進められることに加えて、メーカーのメインフレーム製造終了やCOBOL技術者の減少などの理由から、COBOL資産をJavaに移行したいという相談をいただきます。

本記事では、COBOLの歴史に触れるとともに、opensource COBOL 4Jを活用したCOBOL to Javaの変換を試す手順について前編・後編に分けて紹介します。

 

 

1. COBOLとは

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

C、C++、Java、C#、Python、JavaScriptなど様々なプログラミング言語がありますが、COBOLは60年以上前に誕生しており、現役のIT技術でCOBOLより古いものはありません。

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

 

 

2. COBOLを取り巻く現状

様々な企業の基幹システムにおいて重要な役割を担っているCOBOLですが、なぜ脱COBOL の動きが加速しているのでしょうか。理由として、以下のような現状があります。

 

(1)メーカーのメインフレーム製造終了

2022年、メインフレームの主要ベンダーである富士通が2030年度にメインフレームの製造・販売を撤退することを発表したのは、まだ記憶に新しいのではないでしょうか。一般に富士通メインフレームで稼働するアプリケーションはCOBOLでつくられていることが多く、最近では、様々な企業の脱COBOLの事例や計画がメディアで紹介されています(これは富士通のメインフレームだけの話ではありません)。

保守サポートについては5年後の2035年度末に終了するとしており、利用企業は何らかの形でモダナイゼーション・マイグレーションを推進しなくてはならないわけですが、現在残っているメインフレームは、開発工数がかさむ、巨大なものばかり。こうした状況をどのように対応するのかがポイントになっています。

 

(2)COBOL技術者の減少

先ほども少し触れましたが、COBOLが誕生したのは約60年前。その後、様々な開発言語が誕生したわけですが、案件によって使われる言語が異なることから、スキル向上のために使える言語の幅を広げるエンジニアも少なくありません。

少し前の記事ではありますが、COBOLは学びたくない言語ランキングで1位になったことがあります。

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

この記事の中に理由は出てきませんが、他のCOBOLが登場するニュースやIT雑誌の論調、色々な方々と話してきた経験から、「難しい」や「新しいことができない」という理由が多いように感じています。

COBOLで構築されたシステムは、長年の増改築で複雑化しているケースが多く、保守がし辛いため、「難しい」と思われがちです。しかし、これはCOBOL自身の問題ではなく、システムの維持管理の問題です。同じことは、COBOL以外の言語でも起こりえます。

次に「新しいことができない」という理由ですが、COBOLは止まってはいけない基幹システムで使われていることから当然ではないかと考えます。安全、安心が求められるシステムでは、新しい技術や実績の少ない技術の適用は困難です。

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

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

COBOL技術者の減少は、COBOL自体が原因ではなく、COBOLシステムの資産状態や適用場面という背景があると考えられます。

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

今後、COBOLが新規構築に使われることは減りますが、既存のCOBOLシステムの保守は続きます。最新技術や最新環境ともうまく組み合わせ、複数の言語スキルがある兼任のCOBOL技術者が対応し、適材適所で利用していく動きになると考えられます。

COBOLを他言語へ移行したいというニーズに加え、メーカー製のCOBOL製品の保守・販売終了に伴い、基幹システムにオープンソースを活用したいといったニーズも高まっています。

 

 

3. opensource COBOL 4Jとは

これまでCOBOLについて触れてきましたが、COBOLを維持するという選択だけではなく、多言語へ移行したいといったニーズや、メーカー製のCOBOL製品の保守・販売終了に伴い基幹システムにオープンソースを活用したいといったニーズも高まっています。

ここからは、COBOLをJavaに変換できるオープンソースのCOBOLコンパイラについて紹介していきます。

opensource COBOL 4J は、OSSコンソーシアムが開発して GitHub で公開しているOSSのCOBOLコンパイラです。COBOLコンパイルの過程で、COBOLを中間Javaソースに変換し、Javaコンパイラでバイトコードを生成する仕組みです。処理の流れは下図のとおりです。

兄貴分の opensource COBOL やその親の OpenCOBOL (GnuCOBOL)は、COBOLをC言語に変換する仕組みですが、これをJavaに変換するように移植したものが opensource COBOL 4J です(4J = for Java)。NISTのCOBOL85テストを通過しており、COBOL85の構文をJavaで再現しています。

opensource COBOL 4Jは、OSSライセンス(コンパイラがGPL3、ランタイムライブラリがLGPL3)で公開されており、誰でもダウンロードして利用可能です。中間Javaソースが残るため、COBOL to Java変換を実現する方式の1つとして注目を集めています。

でも、評価をするためには、Linuxサーバーを準備したり、前提ソフトウェアを導入したり、makeでエラーが起きたら解決策を探したり、少しだけ手間がかかります。

後編では、OSSコンソーシアムが Docker Hubで公開しているコンテナ を使い、お手元のWindows PCで COBOL to Java 変換を試す手順を紹介します。