COBOL資産の価値はそのままにオープン化!?COBOLからPostgreSQLを操作可能にするには -富士通の技術者に聞く!PostgreSQLの技術-
PostgreSQLインサイド

二宮 大介

富士通株式会社
ミドルウェア事業本部 データマネジメント・ミドルウェア事業部

 

専門分野

  • データベース

入社以来、Symfoware Server(Native)の開発・保守に携わり、主にユーティリティーコマンド、データベース定義、GUIを担当してきました。Symfoware Server V12からPostgreSQLベースのSymfoware Server(Postgres)の開発を担当しています。Symfoware Server(Native)の開発では、他社データベースに追いつけるように様々な機能開発を行なってきましたが、Symfoware Server(Postgres)の開発では、PostgreSQLを活用しつつ、PostgreSQLとの差異化を出す必要があり、試行錯誤をしながら開発を行っています。今後もSymfoware Server(Postgres)ならではの機能を開発しつつ、コミュニティーとも協調してPostgreSQLの発展に貢献していきたいと思っています。

かつてのメインフレーム時代には、業務アプリケーション開発言語の主流だったCOBOL。時が経ち、多くのCOBOLアプリケーションがオープンプラットフォーム向けに再構築される中、それでもなお少なからぬ数のCOBOL資産がいまだに利用され続けている。中には、COBOLアプリケーションをオープンプラットフォーム上に移植し、他のデータベース製品と組み合わせて利用しているケースもある。さらに一歩進んで、新しい技術を使って新しいビジネスを立ち上げていく過程のひとつの選択肢としてデータベースにPostgreSQLの活用を検討、その際に既存のCOBOL資産も使えれば、ビジネスの幅を広げていける…そんな取り組みを強力に後押しするのが、富士通版PostgreSQLに新たに実装した「ECOBPG(埋め込みSQL用COBOLプリプロセッサー)」と呼ばれる機能だ。この機能を開発した背景や目的はどこにあるのか?その真相に迫る。

COBOLアプリケーションでもPostgreSQLを気軽に使えるようにするために

新たに「ECOBPG」という機能が実装されました。具体的にはどんな機能なのでしょうか?

二宮
ECOBPGの正式名称は「埋め込みSQL用COBOLプリプロセッサー」といいます。名前からも分かるとおり、埋め込みSQLの記述を含むCOBOLソースを、COBOLコンパイラーが解釈できるCOBOLソースに変換するためのプレコンパイラーです。

最近はあまり「COBOL」と聞かなくなった印象があるのですが……。

二宮
確かにCOBOLはいまやレガシーな技術だと言っていいでしょう。事実、新規のアプリケーション開発でCOBOLが採用されるケースは、少ないと思います。しかしその一方で金融業界や製造業では、多くの企業が何十年も前に開発されたCOBOLアプリケーションをいまもなお続けています。長く使い続けている資産があるので、それを活用することはビジネス的な価値があるのです。

だからCOBOLアプリケーションをPostgreSQLでも使えるようにしたのですね。

二宮
はい。メインフレームや商用データベースはCOBOLから使えるので、PostgreSQLも操作できれば、利用者の選択肢がより広がるといったメリットとなります。また、ECOBPGを使うことでCOBOLアプリケーションを別の言語で作り直すリスクも回避できます。COBOL言語でつくられたビジネスロジックはそのままに、他のデータベース向けだったSQL文を書き換えるだけですむ点も、利用者にとって大きなメリットとなります。

ECOBPGがCOBOLアプリケーションとPostgreSQLとを結びつける仕組み

ECOBPGの機能や、そこで活用されている技術について、もう少し詳しく教えてください。

二宮
COBOLコンパイラーのプリプロセッサー、つまりコンパイルの前処理を行う「プレコンパイル」の機能を提供します。COBOLコンパイラーは、COBOL言語の規約に則って記述されたCOBOLプログラムのソースコードを対象にコンパイル処理を行い、COBOLオブジェクトを生成します。しかし冒頭でも説明した通り、埋め込みSQLはCOBOLの言語仕様には含まれていないため、COBOLコンパイラーでは解釈できません。

そこで、ECOBPGの出番というわけですね。

二宮
そのとおりです。COBOLコンパイラーによるコンパイル処理の前に、ECOBPGによって埋め込みSQLを含むCOBOLソースコードを、COBOLの言語仕様に準拠した記述に変換します。より具体的には、COBOLプログラム内のEXEC SQL文を、実行時ライブラリーを呼び出すCOBOL標準のCALL文に変換します。

ECOBPGによる処理の流れ
図:ECOBPGによる処理の流れ

ではECOBPGは、COBOLプログラムの開発時に利用するものなのですね。

二宮
はい、そうです。ECOBPGによってプレコンパイルされ、さらにCOBOLコンパイラーによってコンパイルされて出来上がったCOBOLオブジェクトは、実行時に「ECPGライブラリー」と呼ばれるPostgreSQLのライブラリーを呼び出すことで、実際にデータベースにアクセスします。このライブラリーは、もともとはC言語で記述されたアプリケーションからの利用を前提としているのですが、今回私たちはこれにCOBOL用の処理を加えて、COBOLアプリケーションからも利用できるようにしました。

C言語で開発されたアプリケーションと、同じライブラリーを介してPostgreSQLを利用できるようにしたわけですね。

二宮
はい。アプリケーション開発時の手順やプリプロセッサーの使い勝手も、C言語を使った開発となるべく共通になるようにしました。埋め込みSQLを記述したC言語のソースコードは、まずECPGと呼ばれるプリプロセッサーによってプレコンパイルされ、そこでC言語の規約に準拠したソースコードが生成されます。これをさらにC言語のコンパイラーの処理にかけることによって、アプリケーションの実行ファイルが出来上がります。こうした一連のフローは、まさに先ほど紹介したECOBPGの開発フローとほぼ同等です。

C言語とECOBPGによるアプリケーション開発時の手順
図:C言語とECOBPGによるアプリケーション開発時の手順

なぜコミュニティー版のPostgreSQLには、COBOLアプリケーションの埋め込みSQL機能が備わっていないのでしょうか?

二宮
オープンソースのコミュニティーは新しい技術への取り組みを優先させますから、レガシーな技術であるCOBOLへの対応はどうしても優先順位が低くなってしまいます。またCOBOL言語はベンダーごとに独自仕様が多いため、ベンダー依存を避ける意味でもCOBOLへの取り組みは消極的になりがちです。しかし先ほども述べたように、企業での利用を考えた場合はどうしてもCOBOL対応は避けて通れませんし、実際に多くのお客様からご要望をいただいています。そこで富士通では、より多くの企業がPostgreSQLの導入メリットを享受していただけるよう、ECOBPGを実装することにしたのです。これは、利用者にとっての使いやすさを考慮したのと、オープンソース化していきたい、という思いもあったからです。

とはいえ、こうした仕組みを新たに開発されたのはさぞや大変だったのではないでしょうか?

二宮
当社の商用データベース「Symfoware Server」には、埋め込みSQLのCOBOL用プリプロセッサーの機能がもともと備わっていました。その開発において培われたノウハウが、今回のECOBPGの開発でも存分に生かされています。新機能とはいえ、高い実績のある技術がベースになっていますから、私たちも自信を持ってお客様にお勧めできるわけです。

オープン性を極力維持したままCOBOL対応機能を実装

ECOBPGを開発するに当たって、特にこだわったポイントなどがあれば教えてください。

二宮
富士通版PostgreSQLだけで、COBOL言語で埋め込みSQLアプリケーションの開発・実行をできるようにした点です。PostgreSQL向けの埋め込みSQL用COBOLプリプロセッサーはオープンソースでも存在します。これだと、別途COBOLコンパイラーと実行時に必要なライブラリーを利用者が用意しなければなりませんが、富士通版PostgreSQLはその必要がなく、すぐに開発が始められるのです。

開発環境の準備についても利用者の負荷を軽減しているわけですね。

二宮
はい。富士通版PostgreSQLだけで開発・実行できるようにするために、ECPGライブラリーにCOBOL用の処理を実装したのですが、この実装方法にもかなりこだわりました。オープンソース化していきたい、と前述したように、コミュニティー版に受け入れていただくことを目標としています。このため、既存のC言語用の処理とはまったく別にCOBOL用の処理を開発するのではなく、共通にできる部分は共通化し、どうしても新たに実装する必要がある部分だけを追加開発するようにしました。

他にもこだわった点はありますか?

二宮
幅広いOSプラットフォームをサポートしているのも大きな特長です。LinuxとWindows、Solaris、それぞれ32ビットと64ビットのプラットフォーム上で動作するアプリケーションをサポートしています。

より多くのプラットフォームに対応するために、どんな工夫を凝らされているのでしょうか?

二宮
LinuxとWindowsに加えて、Solarisにも対応させるために、さまざまな文字コードに対応する必要がありました。具体的にはUTF8 / UTF16 / UTF32、SJIS、EUCに対応しており、さらにそれぞれでビッグエンディアンとリトルエンディアンに対応しています。

お客様からの反応はいかがでしょうか?

二宮
「COBOL資産を継承していく中で、PostgreSQLの導入も視野に入れたい」というお客様からの相談は、もともと多く寄せられていたので、自ずとECOBPGに対する注目度も高いですね。実は既に、とある大手製造業のお客様の環境において、ECOBPGを使ったCOBOLアプリケーションのPostgreSQLへの移行プロジェクトが先行して進められています。レガシーシステムにおいてCOBOLアプリケーションはまだまだ主流ですから、ECOBPGの潜在的なニーズはさらに多くあるのではないかと考えています。

今後、ECOBPGの機能をさらに強化・拡充していく予定などがあれば教えてください。

二宮
現状では正式に動作保証しているCOBOLコンパイラーは富士通製のNetCOBOLだけなのですが、他のコンパイラーもサポート対象とすることで、特に海外のお客様により使いやすいものにしていきたいですね。また、現状では固定形式のCOBOLソースプログラムのみをサポートしているのですが、これも可変形式をサポートできるようにしたいと考えています。それによって、既存資産をより低コストでPostgreSQLに移行できるようになるはずです。

ECOBPGには今後、さらなる展開がありそうです。引き続き注目ですね。ありがとうございました。

2016年10月21日掲載

オンデマンド(動画)セミナー

    • PostgreSQLに関連するセミナー動画を公開中。いつでもセミナーをご覧いただけます。
      • 【事例解説】運送業務改革をもたらす次世代の運送業界向けDXプラットフォームの構築
      • ハイブリッドクラウドに最適なOSSベースのデータベースご紹介

本コンテンツに関するお問い合わせ

お電話でのお問い合わせ

Webでのお問い合わせ

当社はセキュリティ保護の観点からSSL技術を使用しております。

ページの先頭へ