お問い合わせ

ホーム > COBOLのはなし > COBOLシステムの変遷(4) Web経由でCOBOLのロジックを連携する

COBOLシステムの変遷(4) Web経由でCOBOLのロジックを連携する

福島 秀明(富士通株式会社 アプリケーションマネジメント・ミドルウェア事業部)

インターネットの普及から生まれたWebシステムは、C/Sシステムの様々な課題を解決することができることから、現在のシステム構築の主流になってきました。C/Sシステムの課題の一つは、その規模が拡大するにつれ、各クライアントにアプリケーションを配布するための運用管理コストが増大することです。ActiveXやJavaアプレットを利用するC/Sシステム(構成⑧)であれば、この課題は解決できます。しかし、この形態にはクライアント資源へのアクセス規制や実行速度といった別の課題があります。そこで再び、アプリケーションをサーバーに集中的に配置して、クライアントは表示機能のみを受け持つという、Webシステムの優位性が認識されるようになってきました。
サーバー集中という観点では、Webシステムはホストシステムと同様の構成に見えます。Webシステムがホストシステムと決定的に異なるのは、プレゼンテーション層です。プレゼンテーション層の開発にはホストシステムではCOBOLを用いますが、Webシステムでは、CGI、Java、.NETといったWebのサーバーサイド技術を用います。以下では、それぞれの技術を使ったシステム構成を解説します。

構成⑨ CGIを利用したWebシステム

CGI(Common Gateway Interface)は、Webブラウザからのリクエストに応じて外部プログラム(CGIアプリケーション)を呼び出し、処理結果をHTMLに変換してWebブラウザに送り返すためのインタフェースです。ほとんどのHTTPサーバーが標準で備えています。ビジネスロジック層のCOBOLアプリケーションを、このCGIアプリケーションとして指定することにより、Webアプリケーションに移行することができます。

CGIは、インタフェースが複雑でパラメータ解析の負担が大きい、セッション間でデータを引き継げない、などの制約が存在します。多くのCOBOL製品では、セッション管理機能やCOBOLプログラムをCGIの外部プログラムへ変換する機能などを拡張機能として備えています。

構成⑩ J2EEを利用したWebシステム

Javaは、Web環境に適した機能や特性を持つことから、1990年代初頭に開発されて以来、多くのWebシステムで採用が進んでいます。Javaはオブジェクト指向のプログラミング言語という側面と、その開発実行環境を規定する言語プラットフォームの側面を持ちます。Javaはコンパイルすると「バイトコード」と呼ばれる中間言語に変換され、OS上の「JavaVM」と呼ばれる実行環境がバイトコードを機械語に変換して実行します。これが、「Write Once, Run Anywhere」と表されるJavaの特徴で、開発者が記述したJavaプログラムはOSに依存することなく、どの環境でも動作します。
J2EE(Java2 Platform, Enterprise Edition)は、サーバーサイドでJavaを使ったアプリケーションを構築するためのAPIやサービスの仕様です。代表的なAPIとしては、プレゼンテーション層の構築に利用される①Javaサーブレット、②JSP(Java Server Pages)、ビジネスロジック層の実装に利用される③EJB(Enterprise Java Beans)の3つが挙げられます。①および②で実装したアプリケーションはサーブレットコンテナ上で、③で実装したアプリケーションはEJBコンテナ上で稼働させます。
JSPはCGI同様、Webブラウザからの要求を受けて起動されます。処理結果をHTMLとして生成してWebブラウザに返すまでの処理を実行します。このとき、セッション間でのデータの引継ぎなどはJSPの機構(Http Session)の中で制御されるため、JSPにおける手続き(Java)ではそれらを意識する必要がありません。
プレゼンテーション層にJSPを、ビジネスロジック層にCOBOLアプリケーションを活用する場合には、Javaがオブジェクト指向言語であるのに対し、COBOLアプリケーションはオブジェクト(オブジェクト指向開発におけるクラス)ではないので、以下のような連携手段が必要になります。

1つ目は、Java-COBOLの連携機構を使用する方法です。
これは、COBOLアプリケーションをJavaのクラスとして扱えるようにする方法で、ラッピングと呼ばれます。プレゼンテーション層のJavaプログラムからは、COBOLアプリケーション全体が一つのクラスに見えます。具体的には、JavaからCOBOLを呼び出すための中継機構を一つのJavaクラス(Bean)として生成します。このJavaクラスは、COBOLアプリケーションをラッピングするものという意味でCOBOLラッパーと呼ばれます。COBOLラッパーは、JavaとCOBOLの間で受け渡すパラメータのデータ型を変換する機能や呼出し機能などを備えています。COBOLラッパーの生成は、ミドルウェアが提供するウイザードを利用して自動化するのが一般的です。
2つ目は、TPモニターを介して連携する方法です。
このシステム構成では、通常、プレゼンテーション層とビジネスロジック層とをそれぞれ独立したサーバー(WebサーバーとWebアプリケーションサーバー)で構成し、両者間の効率的な通信の制御およびデータの保全を行うために、TPモニターを導入します。ただし、J2EEに準拠したアプリケーションサーバーは、TPモニターの機能を備えている製品も多くあります。COBOLランタイムが稼働するアプリケーションサーバーであれば、この機能を使ってプレゼンテーション層のJavaプログラムとビジネスロジック層のCOBOLを連携できます。

構成⑪ .NETを利用したWebシステム

.NET(ドットネット)とは、米国Microsoft社が提供している、Web上でアプリケーションを利用、提供するための考え方と技術の総称です。.NETの中核を成すフレームワーク「.NET Framework」は、クラスライブラリ、ならびにJavaVMに相当する実行エンジン「CLR(Common Language Runtime:共通言語ランタイム)」を含んでいます。
CLRの特徴は、Visual Basic .NETやC#、COBOLなど数多くのプログラミング言語に共通の実行環境であることです。それぞれの言語は、コンパイラによって、いったんJavaのバイトコードに相当するIL(Intermediate Language:中間言語)に変換されます。CLRはILをさらにコンパイルして実行します。Javaは一つの言語が多数の環境で動きますが、.NETは多数の言語が一つの環境に共存できるという違いがあります。
.NET Frameworkが多言語を共通して利用できる環境を整えたため、プレゼンテーション層とビジネスロジック層を別の言語で記述してもプログラムレベルで連携できるようになりました。前述のとおり、COBOLも.NET上で利用できます。そのため、ビジネスロジック層のみならず、プレゼンテーション層のアプリケーションをCOBOLで記述することもできます。

.NET Frameworkは、「ASP.NET」と呼ぶWebアプリケーションのプレゼンテーション層を開発/実行する環境を備えます。JSP同様に、セッション管理やセッション間でのデータの引継ぎなどはASP.NETが制御しています。サーバーへプレゼンテーション層を配置する場合は、Webフォームと呼ぶアプリケーションを開発します。一方、構成⑧と同様に、動的にダウンロードしてPCで動作するアプリケーション(Windowsフォーム)を構築し、リッチクライアントのシステム構成を採ることもできます。
また、.NET Frameworkは複数サーバーにまたがってプログラムを呼び出せるなど、アプリケーションサーバーとしての機能を備えています。ただし、高負荷のトランザクションが発生するオンラインシステムなど大規模な構成においては、高信頼性/安定性を確保するために別途ミドルウェアを導入することもあります。
.NET Frameworkに対応したコンポーネントは「マネージドコード」と呼ばれ、言語間共通性やクラスライブラリのほか、様々な.NET Frameworkの機能を利用できます。その際、マネージドコードは、.NET Frameworkのオブジェクト指向体系に沿って開発されたものでなければなりません。したがって、COBOLアプリケーションをマネージドコードとして開発するためには、COBOL開発でオブジェクト指向機能を使用する必要があります。ただし、処理部分のコーディングについては、特にオブジェクト指向を意識する必要はなく、従来のCOBOL文法で手続きを記述できます。例えば、READ/WRITE文を使ったファイルの入出力/印刷なども可能です。クラスライブラリなど外部と連携する部分のみ記述方法が異なります。
また、COBOLアプリケーションを.NET上でWebサービスとして開発する場合も、.NET Frameworkが提供するクラスライブラリを利用します。WebサービスではSOAPプロトコルが使われ、そのコンテンツはXMLで表現されます。.NET FrameworkのクラスライブラリによってXMLが処理されるため、COBOLプログラムからはXMLの処理を意識することなくWebサービスが利用できます。
なお、ビジネスロジック層として、.NET Frameworkに対応していないアプリケーションを利用することも可能です。.NET Frameworkに非対応のコンポーネントは「アンマネージドコード」と呼ばれ、.NET Frameworkの中継機構を経由して連携します。ただし、.NET Frameworkが提供する機能の利用に制約があります。