.NET環境へのレガシー・マイグレーション

―― メインフレームから.NETへ低コストで移行するには? ――


マイクロフォーカス株式会社 技術部 シニアマネジャー
小林 純一氏

聞き手、文責:デジタルアドバンテージ
2004/07/24
Page1 Page2 Page3

COBOL言語による新規開発

―― 既存システムからのマイグレーションではなく、COBOL言語での新規開発の案件というのもあるのでしょうか?

 

小林:あります。WindowsではなくUNIXプラットフォームの案件ですが、野村総合研究所様(NRI。以降、野村総研)は、全800万ステップにものぼる大規模な新証券業務システムの開発にあたり、業務ロジックの7割をCOBOLで新規開発しました(資料)。

 野村総研では、開発コストの安価な中国でのオフショア開発を採用したのですが、中国にはCOBOLプログラマが少なかったため、Javaを使おうという声も多かったそうです。しかし以後のメンテナンスと、COBOLベースで確立された開発方法論を応用するために、結局はCOBOLを使うことに決めました。このため中国人プログラマにCOBOL言語を習得してもらう必要がありましたが、彼らの習得スピードは非常に早く、開発スケジュールもコストも当初の予定どおり進んだというお話を聞いています。

 Javaのような新しいオブジェクト指向開発言語では、これまで培ってきたCOBOLベースの開発方法論がどうしても適用できません。大規模な開発案件プロジェクトでは、絶対に失敗は許されません。失敗のリスクを低減する方法の1つは、何十年もかけてきめ細かく確立されてきたCOBOLベースの開発方法論を用いることだったのです。

 強調したいのは、この野村総研様の事例にあるように、たまたまCOBOLの資産があったからとか、COBOLが分かるプログラマがいたからなどといった消極的な理由ではなく、数多くの実績に支えられた優れた開発方法論を採用するために、積極的にCOBOLを選択したということです。

―― レガシー・マイグレーションと新規開発をミックスさせるということもあるのですか?

 

小林:COBOLを使った完全な新規開発の例をご紹介しましたが、このようなまったくの新規開発案件というのはそれほど多くありません。やはり主流は、COBOLで構築した既存のビジネス・ロジック資産を再利用するケースです。

 しかしただ既存資産をそのままマイグレーションするだけかといえば、そうではありません。マイグレーションを機会に業務改善を行い、それに伴ってシステムにも何らかの新しい要素が追加されるのが一般的です。

 メインフレームを利用した既存の業務処理は、夜間のバッチ処理と昼間のオンライン処理に分けられます。このうち夜間のバッチ処理部分では、COBOLの既存のビジネス・ロジック資産をそのまま流用するが、昼間のオンライン処理では業務改善とともにWeb技術などの最新プラットフォームで設計し直すというのが新旧混合開発の典型的なケースでしょう。

COBOL開発者の現在と未来

―― 最近、ちまたでは「2007年問題」が取り上げられていますが、どう思われますか?

 

小林:COBOLプログラマ層を支えている団塊世代のプログラマが定年退職を迎える時期が2007年だといわれています(編集部注:団塊世代の中心は1947年生まれといわれる。2007年には、この人たちが60歳を迎える)。2007年を過ぎると、メインフレームのことが分かる技術者が激減するといわれているのです。いま、レガシー・マイグレーションが注目される理由の1つがこの2007年問題です。けれども私は2007年問題をあまり深刻にとらえていません。COBOL技術者が不足するなら、新人を育てればよいだけのことですから。実際、大手SIerやユーザー企業でCOBOL教育を行っているところがまた増えてきているそうです。

―― 確かに、ミッション・クリティカルの領域では、実績のない新しい技術にむやみに手を出すべきではない、という意見があるのはよく分かります。しかし例えばXML Webサービスのように、情報システム全体を巻き込む可能性が高い新技術も生まれ、成長してきています。COBOLプログラマといえども、こうした新しいテクノロジを積極的に吸収していく必要があるのではないですか?

 

小林:そのとおりです。COBOLプログラマは頭が固くて新技術を吸収できないというのは偏見です。COBOL資産を最新のテクノロジ環境で活用するために、当社ユーザーのプログラマの方々はかなり勉強されていますし、事実それを開発に生かされています。例えば外資系生命保険会社のアリコジャパン様は、Windowsプラットフォーム上でJavaテクノロジ・ベースのWebアプリケーションを構築しました(資料)。従来はメインフレーム上で行っていた保険金額通算システムを、頻繁に保険商品やオプションが追加・変更されるため、より柔軟に対応できるWebアプリケーションに移行したそうです。ただしこのケースでも、Javaで新規開発されたのはWebアプリケーションのフロントエンド部分であり、保険料計算などのビジネス・ロジック部分には、これまでメインフレームで動いていたCOBOL資産が流用されています。

 アリコジャパン様は、かなり以前からIBMのJavaアプリケーション・サーバ「WebSphere」を導入しており、Javaベースのエンジニア育成と開発ノウハウを蓄積していました(詳細は「WebSphere MAGAZINE」を参照)。しかし前出の移行作業では、Javaの開発サイドの人員が不足していましたが、JavaプログラマとCOBOLプログラマの混成プロジェクト・チームで乗り切ったということです。COBOLプログラマが新しい技術を生かした開発もできるということを実証されています。

―― 具体的に、旧来のCOBOLとJavaはどのようにして組み合わせるのですか?

 

小林:既存のCOBOLベースのビジネス・ロジック部分をコンポーネント化して、それをJava側から呼び出せるようにします。Javaから見れば、これらもただのJavaのクラスでしかありません。逆にCOBOLベースのコンポーネント側にすれば、それを呼び出しているのがJavaプログラムかどうかは分かりません。このようなコンポーネント技術を応用すれば、Javaだけでなく、COBOLベースのビジネス・ロジックと.NETテクノロジを組み合わせることも可能です。

 COBOLプログラマのスキル・トランスファーについて前述しましたが、コンポーネント技術を使えば、Javaプログラマ、.NETプログラマ、COBOLプログラマのそれぞれが、お互いの言語の違いを意識することなく作業しながら、コンポーネントを組み合わせることで、システム全体としてはそれらを協調させることができるのです。

 特に.NETテクノロジを使ってコンポーネント化した場合には、COBOLやC#など、どんな言語で書いても、そのコンポーネントは言語やOSに依存しない中間ファイルのIL(Intermediate Language:中間言語)コードとなるので、よりシームレスな連携ができます。これに対しJavaの場合は、JCA(Java Connector Architecture)というコンポーネント間の接続仕様が決まっていて、その仕様にのっとって連携することになります。開発効率やコンポーネント連携の柔軟性の高さという点では、.NETコンポーネントに分があるかもしれません。

 

 INDEX
  [Trend Interview] .NET環境へのレガシー・マイグレーション
    1..NETへのレガシー・マイグレーションの現状
  2.COBOL開発の現在と未来
    3..NET対応のCOBOL開発ツール「Micro Focus Net Express」
 
インデックス・ページヘ  「Trend Interview」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間