【第2回】プログラミング言語の特性を活かした DX

SCROLL DOWN

リストへ戻る

デジタル・トランスフォーメーション(DX)の実現において、既存システムのプログラムを異なる言語へリライトすることが企業の競争優位性を確立することになるのでしょうか。本記事では、プログラミング言語の特性を活かした適材適所利用によるリスクの少ない DX の実現方法と、リライトの一因となり得る技術者の不足について考えます。

1.DX の実現方法

現在、オープン環境やメインフレームでご利用の基幹系システムはいくつのプログラミング言語によって構成されているでしょうか。プレゼンテーション層では可視性や操作性に優れたユーザエクスペリエンスを構築できる言語 、アプリケーション層のビジネスロジックでは計算精度が高くパフォーマンスの劣化を防げる言語、メモリ操作はハードウェアに対して細やかな操作ができる言語など、実は用途に適した複数の言語が適材適所で使用されているはずです。

 

これら既存システムの DX 対応の中でプラットフォームの移行を検討する際、既にオープン環境にあるシステムはプログラムをそのまま再利用し、プログラミング言語の特性を継続して活かすことが一般的であることに対して、メインフレームにあるシステムは特性を無視した他言語へのリライトが計画されるのはなぜでしょうか。

 

主な原因として考えられるのは、メインフレームで使用されているプログラミング言語に対する「新しいテクノロジを適用できるのか」、「メンテナンスできる技術者がいないのでは」というネガティブな疑念です。これらの疑念を基にプログラムを他言語にリライトすることが、DX に求められるマーケットの動向に迅速で柔軟に対応できるシステムの構築につながるとは限りません。

 

メインフレームで言語の特性を活かしながら稼働している COBOL, PL/I プログラムを、オープン環境でも特性を維持しながら新しいテクノロジと連携でき、メンテナンスする技術者も確保できるとすれば、リライトを選択する必要があるでしょうか。
DX の実現には様々な選択肢があり、選択する方法や手段によってこれらの疑念は払拭できるのです。

 

2.メインフレームからの移行手法

メインフレームで稼働している基幹系システムをクラウドなどのオープン環境へ移行しようと考えたとき、まずは移行によってコストダウンなどの効果が見込まれるシステムを選別します。次にこのシステムに含まれるプログラムをリライトするのか、モダナイゼーションするのか、すべてを捨ててパッケージを利用するのかなどの移行手法を決定するわけですが、各手法にはメリットとデメリットがあります。この詳細については他の連載記事で詳しく説明しておりますので、こちらを併せてご覧ください。

 

手法の中で最もリスクの少ないモダナイゼーションは、ビジネスのノウハウが詰まったメインフレームのプログラムをオープン環境においてもその特性を活かしながら再利用でき、また、新しいテクノロジと連携しながら企業の競争優位性を確立することができる手法です。この手法を採用することにより、スクラッチでシステムを開発することと同等で大きなリスクを背負うリライトや業務フローの大幅な変更が必要になるパッケージ利用と比較して、移行プロジェクトの成功率が著しく上がり、移行コストの削減や品質劣化のリスクも回避できる、まさに低リスク、低コスト、短期間で DX が実現できます。

 

3.プログラミング言語の特性と適材適所利用

DX の対象となるプログラムをメインフレームから移行して適材適所利用するためには、プログラミング言語の特性や得意分野を知ることが必要になります。まずは代表的な言語の特性を確認し、次に具体的な例を挙げながらモダナイゼーションとリライトを比較します。

 

3.1.プログラミング言語の特性

プログラミング言語はメジャーなものからマイナーなものまでを合わせると 200 種類以上が存在しており、実際に使用されているのはその 10 %程度といわれています。日本語、英語、フランス語などと同じく、誕生した経緯やプラットフォームという背景を持ち、設計や実装方法という文化をそれぞれが持っています。

 

1)Java

1990 年代初期に家電製品向けの技術として開発されたオブジェクト指向のプログラミング言語で、JVM(Java Virtual Machine)という仮想マシン上で動作します。プラットフォームに依存せずに稼働させることができ、由来となった家電製品の組み込み系システムや Web 系システムが最も得意な分野といわれています。

 

【メリット】

・独立性、再利用性、拡張性を活かした質の高いプログラミングが可能
・API やライブラリが豊富
・メモリ領域は自動管理でガベージコレクションがある

 

2)C 言語

1972 年に開発された手続き型のプログラミング言語で、既に存在していた B 言語に影響を受ける形で開発されたことから C 言語と呼ばれるようになったとされています。C 言語に影響を受けて開発されたプログラミング言語は数多くあり、そのひとつに Java も含まれています。メモリなどのハードウェアを制御できるため、OS の開発や組み込み系システムを得意としています。

 

【メリット】

・汎用性が高く、ソフトウェアの開発からハードウェア製品の開発に利用可能
・JVM のような仮想マシンを使用せず、直接ネイティブへコンパイルするため実行速度が速い
・必要なプログラミングの基本要素を効率よく習得することができる

 

3)C#

Microsoft 社が 2002 年に正式リリースしたオブジェクト指向のプログラミング言語です。CやC++系統の言語として開発され、Delphi の影響も受けているといわれています。Windows アプリケーションを得意とすることはもちろん、ゲーム開発にも多く利用されており、.NET Frameworkを使用できる点から Web アプリケーションとも相性が良いとされています。

 

【メリット】

・開発ツールが豊富にあり、ストレスなく開発作業が可能で環境構築が容易
・様々な機能を簡単に実装できるライブラリが豊富にある
・不要となったメモリ領域を自動的に解放するガベージコレクションを備えている

 

4)JavaScript

1995 年に誕生したプログラミング言語の一種で、クライアントサイドの Web ブラウザー上で動作する HTML や CSS と組み合わせることにより動的な表現を可能にすることから、 Web アプリケーションのフロントエンドの構築を得意としています。また、サーバーサイドにおいても、JavaScript の実行環境である Node.js を利用することにより、大量の接続を処理し、要求を素早く実行させることができます。Java の一種と勘違いしてしまいそうですが、まったく異なる言語です。

 

【メリット】

・開発環境の構築が不要
・用途に応じたフレームワークやライブラリが豊富にある
・初心者でも比較的簡単に習得できる

 

5)COBOL

COBOL(Common Business Oriented Language)は 1959 年に事務処理用に開発され、国際的に標準化されたプログラミング言語です。現在でも標準規格の改定は続いており、多くの官公庁や大企業の基幹系システムで使用され続けています。その名の通り、事務処理や計算処理を得意としています。

 

【メリット】

・小数点などのデータ桁数を厳密に指定し、2進化10進数(10進数を2進数4ビットで表現)を使用することから、速く正確に10進数計算が可能
・「ADD 1 TO A」など、自然言語に近い構文により可読性が高く、習得が容易
・標準規格により人に依存しないコーディングが実現でき、保守性に優れている
・バッチ処理など、大量データを高速、高精度で処理できる

 

PL/I については他の連載記事で詳しく説明しておりますので、こちらをご覧ください。

 

3.2.適材適所利用

プログラミング言語の特性を踏まえ、IBM メインフレームで稼働しているシステムの移行を例に挙げて、すべてのプログラムを Java へリライトするケースとプログラミング言語の適材適所利用を考慮したモダナイゼーションケースを比較して、そのメリットやリスクを確認します。

 

1)AS IS:IBM メインフーム

オンラインのCICS、バッチの JCL をトリガーとして COBOL, PL/I プログラムを実行し、アセンブラーを利用したメモリ管理や簡易言語を利用した処理を実装している例です。データストアとして IMS データベースや RDB、SAM や VSAM といったメインフレームの標準ファイルを使用し、オーバーレイを利用した帳票を印刷している想定です。処理概要に分類した四角の中には、使用しているプログラミング言語を記述しています。

AS IS:IBM メインフーム

 

2)TO BE:Java へリライトするケース

プログラミング言語の特性を考慮せず、すべてのプログラムを Java へリライトした場合は次の図のようになります。変更が必要な箇所を赤字で示しましたが、ほぼすべての処理に手が入ることになります。時代を経たアプリケーションは仕様書がないことが多く、プログラムの内容把握に加えて、新システムの設計からテスト完了までには長い時間を要することになり、リスクやコストが大幅にアップします。

TO BE:Java へリライトするケース

 

ではコストを削減するために仕様を把握せず、ビジネスロジックを Java へ自動変換するサービスを利用した場合はどうでしょうか。一般的にはオブジェクト指向を活かせないクラス構成やプログラムは質が著しく低下するといわれており、このような問題を引き起こす可能性が非常に高くなります。

 

次に、正しくクラス設計された Java をスクラッチで開発する場合はどうでしょうか。上記の問題は解消されますが、ビジネスロジックにおける数値データ精度の違いから、コアとなる計算処理の結果に差異が生じる可能性や、JVM 上でバッチ処理を実行することによるパフォーマンスの低下を事前に考慮し、対策を打たねばなりません。
ビジネスロジックで発生する差異はシステム全体に大きな影響を及ぼし、移行プロジェクトの成功率に大きく影響することはご承知の通りです。

 

3)TO BE:適材適所利用のモダナイゼーションケース(Micro Focus COBOL 製品利用)

次の図のように、ビジネスロジック、メモリアクセス処理を得意とする言語に任せる場合はどうでしょうか。マイクロフォーカスの COBOL 製品を利用して各プログラミング言語の特性を活かしたシステム設計を行うことにより、ビジネスにおいて最も重要な要素であるパフォーマンスの低下を防ぎ、計算精度も維持することができます。

TO BE:適材適所利用のモダナイゼーションケース(Micro Focus COBOL 製品利用)

 

また、製品にはコンテナ型仮想化に対応する機能や COBOL モジュールを Web サービスとして提供可能な機能が含まれているため、IBM や国産メインフレーム、オープンレガシーで稼働している COBOL のビジネスロジックをコンテナ化し、マイクロサービスで展開するなど、新しいテクノロジとの連携を実現することができます。

 

COBOL 製品の詳細についてはこちらをご参照ください。

 

4)TO BE:適材適所利用のモダナイゼーションケース(Micro Focus エンタープライズ製品利用)

JCL, CICS, IMS をエミュレートし、COBOL に加えて PL/I をサポートする機能を持つマイクロフォーカスのエンタープライズ製品を使用すれば、言語の特性を活かしながらもさらにリスクを軽減した移行を実現することができます。

 

例えば、第1段階ではプラットフォームの移行に専念し、CICS や JCL を残した必要最低限の変更にとどめます。これにより削減されたコストを第2段階のモダナイズに利用し、リスクを回避した段階的な移行を実施することができます。COBOL 製品の全機能を含む上位製品のため、継続的なモダナイズを計画することもできます。

TO BE:適材適所利用のモダナイゼーションケース(Micro Focus エンタープライズ製品利用)

 

IBM メインフレームからの移行に有効なエンタープライズ製品の詳細についてはこちらをご参照ください。

 

各ケースを見ても明らかなように、モダナイゼーションはプログラミング言語の特性を活かしながらビジネスロジックの品質劣化を防ぎ、かつ新しいテクノロジを使用したプラットフォームや機能と連携しながら COBOL, PL/I プログラムを有効に再利用できる手法で、リスクやコスト高を回避した DX の実現に最適な方法です。

 

4.技術者は育成可能

COBOL や PL/I をオープン環境で再利用する場合、対応できる若い世代の技術者が確保できないといわれ、そのためにリライトが必要であるともいわれています。では、若い世代の技術者が COBOL や PL/I を習得しないのはなぜでしょうか。「新しいテクノロジとかけ離れているのでは」、「これからの仕事が心配」、「そもそも言語を知らない」、などが代表的な理由と考えられます。

 

技術者はニーズの多いプログラミング言語に流れていく傾向がありますが、様々なプラットフォームやサービスが提供されている現代では、1つのプログラミング言語を知っていれば安心ということはまずありません。COBOL だけ Java だけではなく多くの言語知識があれば、システム全体を設計するポジションに立ったときにそれぞれの特性を活かした設計が可能な技術者として自身のニーズが高まります。加えて、言語知識の幅が広がることで COBOL, PL/I と新しいテクノロジの連携方法など、興味の幅も広がります。
また、人気の言語は技術者の人数が多いことから、思い描いた収入が得られないこともあります。そのため、技術者数が少ないと言われている言語に若い世代の技術者が参入すれば、貴重な人材と捉えられ優位に仕事を得られる可能性が高いのです。

 

企業にとっては引き出しを多く持つ技術者がいることで、柔軟性、可用性、俊敏性に優れたシステム構築を実現でき、競争力の強化に迅速に対応できるようになります。「他言語の勉強」というと育成に時間やコストがかかると思われがちですが、Java に代表されるオブジェクト指向を理解している技術者が、数週間程度で COBOL を習得した実績もあります。また C 言語を理解している技術者は PL/Iの習得に多くの時間はかからないでしょう。

技術者は育成可能

 

マイクロフォーカスのモダナイゼーション支援製品は Eclipse, Visual Studio, Visual Studio Code を使用した COBOL, PL/I の統合開発環境をご提供しています。Java や .NET 開発者が慣れ親しんだ環境を利用することで、気軽に COBOL, PL/I のコーディング、ビルド、デバッグに取り組むことができ、自然と言語知識を習得できる環境を整えることができます。

 

既に複数のプログラミング言語を習得している技術者は「目的を実現するために最適な言語=ツールを選択するだけだ」と語っています。技術者の育成は、企業にとっても技術者にとってもメリットが多く、常に触れることができる環境を整えることで解決できる課題です。

 

5.おわりに

様々な国や文化を理解することでグローバルな人材が育つといわれているように、プログラミング言語においても多くを知ることで得られる知識を基に広い視野に立った適材適所のシステム構築が可能になり、これがリスクを回避した DX の実現につながることをご理解いただけたでしょうか。

 

これからも新しいプログラミング言語は誕生し、その中で衰退していく言語もあるでしょう。言語の「良し悪し」ではなく、どの言語を使用すれば企業のニーズに最適で、リスクを最小限にできるのかを正当に判断することが重要です。

 

技術者の不足についても、多くを知ることができる環境を作ることで、他から与えられた固定観念ではなく、自身の知識で判断できる技術者を育成することができます。これが企業のニーズに合ったシステムの構築につながり、同時に技術者自身のスキルアップにもつながることになります。

 

プログラム言語の特性を活かしたシステムのオープン化を検討する際に、既存のプログラムを有効利用でき、新しいテクノロジとも連携が可能なマイクロフォーカスのモダナイゼーション支援製品が一助になれば幸いです。

 

COBOL, PL/I のモダナイゼーションに関するご相談は下記 URL からお気軽にお問合せください。
【 ご相談受付 】
https://www.microfocus.co.jp/mfproducts/amc_inquiry/ 【 営業部へのお問い合わせ 】 https://www.microfocus.co.jp/about/contact/

関連情報

【Webセミナー】COBOL 言語超入門セミナー

これからCOBOL言語を知ろうとするエンジニア向けの入門セミナーです。プロジェクト管理者、システム管理者、マイグレーションエンジニア等の方々を対象に、COBOL言語を使用するシステム開発のための基礎知識を提供します。

Micro Focus Visual COBOL

Micro Focus Visual COBOLは、最新版のCOBOL統合開発環境製品です。価値ある既存COBOL資産の最新テクノロジー環境での活用を可能にします。単一のCOBOLソースを多数のプラットフォームに展開することができるため、開発期間の短縮やコスト削減にも貢献します。

Micro Focus Enterprise Developer

Micro Focus Enterprise Developer は、IBMメインフレームで稼働しているバッチ / オンラインアプリケーションをオープン環境で有効に活用できる製品です。

SNSでシェアする

  • URLをコピーしました