この記事について問い合わせる

なぜ今あらためて COBOL なのか?Java と比べて見える COBOL の強み

「COBOL=古い言語」「Java や他言語に置き換えるべき」という印象を持たれがちですが、本当にそうでしょうか。ここでは、長年 COBOL を業務システムで使ってきた立場から、主に Java と比較したときの COBOL の「優位な点」を整理してみます。レガシー刷新やマイグレーションを検討している方の参考になれば幸いです。

高速バッチの COBOL、移植性の Java――設計思想の違い

もともとコンピュータは「読み・書き・そろばん」を高速にこなすための道具として使われてきました。業務システムの世界では、「どれだけ早くバッチを終わらせられるか」が重要視されており、各メーカーが同じ業務プログラム(COBOL)を動かして実行時間を競うような時代もありました。

その結果、各メーカーは COBOL コンパイラの最適化に心血を注ぎ「同じ COBOL ソースを、いかに高速に実行させるか」が長年のテーマだったという歴史があります。この積み重ねにより、現在の COBOL 実行環境は「バッチ処理の実行速度」が極めて高いレベルに達しています。

一方で Java は、「バッチ処理重視」の言語/実行環境として設計されたわけではありません。重要視されたのは、さまざまな環境で同じコードを動かせる「移植性」、GUI アプリケーションや Web アプリケーションなどの汎用性といった面であり、COBOL のように「特定の業務バッチを限界まで高速化する」方向への最適化は、中心ではありませんでした。

そのため、現行の COBOL バッチを Java にそのまま移行すると、「実行時間が 2~3 倍になる」ケースが珍しくなく、夜間バッチなど、処理時間に厳しい制約があるジョブは、そのままでは Java 移行が難しいといった問題が発生します。「バッチが夜間に終わらなくなる」ようでは本末転倒です。

処理時間がビジネスに直結する業務バッチでは、今なお COBOL が非常に強力な選択肢である、という点は押さえておく必要があります。

国際標準としての COBOL と計算精度

COBOL が誕生した背景には、「メーカーごとにバラバラだった業務用言語を統一したい」という強いニーズがありました。そのために各社が集まり、CODASYL という組織を作って、言語仕様を共同で策定したのが COBOL の始まりです。この COBOL 言語仕様は非常に厳密で、たとえば次のような点まで細かく規定されています。

  • 計算精度(結果:最大 18 桁、中間結果:最大 31 桁)
  • JIS や ASA などの規定事項

こうした標準化の恩恵として、「COBOL で書かれたプログラムは、どの国のどの計算機で動かしても、同じ計算結果が得られる」ことが原則として保証されています。一方 Java は、特定ベンダーによる言語仕様・実装が出発点であり、浮動小数点などの扱いも含め、COBOL と比べると厳密さ・一貫性の面で差があります。

事務計算など「桁・端数」の扱いに厳密さが要求される分野では、そのまま単純に Java に移行すると、計算誤差が問題になることがあり、そうした世界では、COBOL の厳密な計算仕様は、今なお非常に大きな安心材料です。

COBOL の「将来性」は本当にないのか?

「COBOL は古いから、いずれなくなる」という声を耳にすることがあります。
しかし、COBOL は誕生から 70 年以上経った今でも現役で使われ続けています。それは単に「古い資産が残っているから」というだけではなく、言語として進化し続けてきたからでもあります。

COBOL には、時代の要請に応じてさまざまな機能が追加されてきました。

  • 当初は存在しなかった計算式(COMPUTE 命令)
  • ビット処理命令
  • 構造化プログラミングのための構文
  • オブジェクト指向の要素(クラス、継承的な考え方)
  • 関数を定義して再利用できる機能 など

そして現在も、CODASYL の流れをくむ標準化団体によって、「これからの COBOL に必要な仕様」を検討し続けています。「新しい=将来性がある」「古い=将来性がない」と単純に決めつけるのではなく、「標準が維持・進化し続けているか」「実運用で使われ続けているか」という観点で見ると、COBOL は今も十分に“現役の言語”だと考えられます。

COBOLの読みやすさが支える、長く使えるシステムの保守性

業務システムのプログラムは、一度作って終わりではありません。

機能追加、実行環境の変化への対応、バグ修正(Bug 対応)、法改正・制度変更への追従といった理由で、何年にもわたって改修・拡張が行われます。そして、改修する人は往々にして「最初の作成者とは別の人」です。そのときに重要になるのが、プログラムの「可読性」や「可視性」です。

COBOL は、もともと「英語に近い形で処理内容を記述する」という思想で設計されており、記述としてはやや冗長に見える部分もあります。ただし、この冗長さこそが、長期運用時の読みやすさ、仕様を追いかけやすさ、人が変わっても理解しやすいことにつながっており、大規模な業務システムのライフサイクル全体を考えると、非常に重要な性質です。

一方、Java は「開発効率」や「柔軟性」に重きを置いて発展してきた言語であり、書き方次第では極めてコンパクトかつ抽象度の高いコードを書くことができます。

その反面、言語仕様として「業務処理を自然言語のように記述する」ことは主目的ではない、フレームワークやライブラリ層で抽象化が重なり、全体像が見えにくくなることも多いといった側面があり、「後から読む人にとってのわかりやすさ」は、チームの設計・コーディング規約・ドキュメント整備に大きく依存します。

長期間にわたって運用される基幹業務システムでは、COBOL の持つ「ドキュメント性の高さ」が、結果的に大きな武器となっているケースが少なくありません。

COBOL を「正しく評価」したうえで選択する

ここまで、主に Java と比較しながら COBOL の強みを、バッチ性能、国際標準・計算精度、将来性(標準の継続的な進化)、ドキュメント性・メンテナンス性という観点から整理しました。

もちろん、Java をはじめとするモダンな言語・プラットフォームにも、豊富なライブラリ・フレームワーク、Web やモバイルとの親和性、開発者人口の多さなど、多くの利点があります。大事なのは、「COBOL は古いからダメ」「Java は新しいから良い」といったイメージだけで判断せず、それぞれの技術の特性を理解したうえで、

  • どの業務には何が向いているのか
  • どこまでを置き換え、どこを残すのか
  • 共存・連携のアーキテクチャをどう設計するか

を検討することだと考えています。レガシー刷新やマイグレーションを検討されている方は、ぜひ一度、COBOL の本来の強みを踏まえて、最適な構成を考えてみてください。

もっとも、ここまで述べてきたように COBOL 自体の強みや将来性を正しく評価したとしても、現実問題として「COBOL エンジニアをどう確保するか」という課題は残ります。人財をどう確保するかは、避けて通れない重要なテーマです。

この点についての考え方やアプローチは、こちらの記事に詳しく記載していますので、あわせてご参照ください。
→ 「レガシーから“主役”へ COBOLの現状と未来に求められる人財像」

お問い合わせ

タイトル 必須
お名前 必須
お名前(フリガナ) 必須
メールアドレス 必須
会社名 必須
部署
役職
電話番号 必須
お問い合わせ内容

個人情報保護方針

株式会社システムズは、コンピュータ関連システムの構築、コンサルテーション、ソフトウェアの 開発・設計・販売・保守等を提供するに当たり、個人情報はお客様、お取引先様、株主様および 従業者等からお預かりした重要な資産であるという認識のもと、情報社会の一端を担う企業とし ての社会的責務を全うするため、個人情報に関する法令、国が定める指針、規範に基づき以下 に個人情報保護方針を定め、個人情報の厳正な取り扱いに努めます。

1.目的

個人情報の重要性を全社員・役員に認識させ、個人情報に関する法令、国が定める指針、規範を遵守するとともに、管理規程を制定し着実に実施いたします。またこれらの取り組みを継続的に維持および改善いたします。

2.個人情報の取得

個人情報はお客様ご本人に利用目的を明示し同意を得た上で、サービス提供上必要な範囲内で取得します。

3.個人情報の利用

取得した個人情報は利用目的にのみ使用します。お客様の同意がある場合または法令・指針・規範等に基づく場合を除き、目的外利用および第三者への提供・開示はいたしません。またそのための措置を講じます。

4.Googleアナリティクスの利用

  1. 当サイトは、利用状況を把握し、サイトの改善を図るため、Googleアナリティクスを利用しています。Google社が訪問履歴を収集・記録・分析しますが、個人を識別する情報は含まれておりません。
  2. 当サイトではGoogleアナリティクスデータとお問い合わせフォームから送信された個人情報を紐付けることが可能ですが、これを第三者に無断で提供・販売することはありません。
  3. Googleアナリティクスの利用規約とプライバシーポリシーにつきましては、Google社のサイトでご確認ください。
    Google Analyticsの利用規約
    Googleのプライバシーポリシー

また、Googleアナリティクスによる情報収集を停止することも可能です。「Google アナリティクス オプトアウトアドオン」をインストールし、ブラウザのアドオン設定を変更してください。

5.クッキーについて

当サイトでは、ウェブサイトの利便性向上を目的にクッキーを利用しています。クッキーはサーバーから利用者に送信されブラウザに保存される情報です。クッキーは無効にすることもできますが、その結果サイト機能の一部またはすべてが利用できなくなる可能性があります。

6.個人情報の管理

取得した個人情報について、充分な安全対策を実施し管理することで、不正アクセス・漏えい・滅失・毀損等の防止・是正をいたします。

7.苦情・お問い合わせへの対応

個人情報への扱いに対するお客様からの苦情およびお問い合わせには、誠意ある対応をいたします。

8.個人情報の開示等

取得した個人情報に関して、お客様ご本人からの訂正・削除および開示等のご要望には迅速かつ適切な対応をいたします。

制定日 2005年4月1日
改定日 2011年10月1日
株式会社 システムズ
代表取締役社長 小河原 隆史

当社の個人情報の取扱いにつきまして、ご意見・ご質問等ございましたら、下記までご連絡くださいますようお願い申し上げます。

株式会社 システムズ 個人情報保護に関するお問い合わせ先
個人情報お問い合わせ窓口
株式会社 システムズ 個人情報窓口

TEL:03-3493-0033
FAX:03-3493-2033
メールアドレス:kojin_jyouhou@systems-inc.co.jp

この記事を書いた人

筆者 BIチーム

関連記事