RPG言語からJavaへの移行を成功させる方法とは|RPG資産のモダナイゼーション

 Report Program Generator(以下、RPG)はAS/400など、IBMのオフィスコンピューター(以下、オフコン)用開発言語として根強い人気を持っています。比較的習得しやすく、オフコンの充実した環境を容易に利用できる点が、技術者に人気の背景にあります。現在でも多くの企業の基幹システムにてRPG言語で開発された業務アプリケーションが稼働しているようです。


 しかしその一方で企業システムは、AS/400等のオフコンよりもコストパフォーマンスに優れたPCサーバへの移行が進んでいます。RPGで新規にシステム開発するケースは減少傾向にあり、技術者がRPGを使いこなす機会は限られるようになりました。それでもRPGで作ったシステムの保守のために技術力の維持や新人教育は続けなくてはならず、そのための投資がベンダには重荷になります。

 スマホやタブレットの活用など企業システムの新たなトレンドにも、旧来のオフコンのシステムは拡張しにくく、機能的な発展が見込めません。そこでRPGで作ったシステムを、新しいPCベースのシステムに置き換える「モダナイゼーション」が注目されるようになりました。

AS/400 RPG


 モダナイゼーション(Modernization)とは「ビジネスの競争力あるいは、グローバル対応力の強化を目的に、従来から稼働しているソフトウェアやハードウェア等の資産を、最新の製品や設計で置き換える。 」という意味として使われています。


 本記事では、企業の業務を支えてきた RPG 資産を、どの様にして現在における在るべき姿へと進化させるべきなのか・・・、RPG資産のモダナイゼーションを推し進める注目の技術をご紹介します。

1. 手動によるRPGの変換はコストと期間がかさむ

 モダナイゼーションを進めるうえでは、注意すべき点があります。一つは、手作業による置き換えは、開発のコストや期間がかさむという点です。


 RPGで開発した現行のシステムの設計書を読み込み、必要な処理を別の言語でプログラミングしていく作業は実質的に新規開発と等しく、相当なコストや期間がかかることが予想されます。大幅な機能拡張が行われるならともかく、現行のシステムの単なる置き換えは、エンドユーザに直接的なメリットを与えることができません。RPGの運用や保守の継続が困難というのはベンダ側の事情に過ぎず、そのためにユーザに大きなコスト負担を求めても理解は得にくいでしょう。


 開発の元となる現行のシステムの設計書が、現行システムを適切に反映しているかという点にも不安があります。RPGを理解できる技術者が少ないため、情報共有を目的にドキュメントを残すことが徹底されていない場合もあるからです。古いシステムの中にはそもそも設計書自体が既に紛失しており、特定の技術者の頭の中にしか設計情報がないこともあります。その場合は設計情報を明らかにするところから始めなくてはならず、コストや期間がさらに膨れ上がってしまいます。


 もう一つの注意すべき点は、置き換えるシステムをどの言語で開発するかという点です。PCサーバで動くシステムの開発言語の選択肢は豊富ですが、特定のベンダに依存した言語ではそのベンダの戦略に左右されかねません。モダナイゼーションの目的の一つが技術者不足への対応にあることを考えると、特に若手技術者を中心に習得が進んでいる言語が望ましいと言えます。


 また今の企業システムは、クライアント側にWebブラウザを使うものが主流になっています。その傾向を反映させるならば、言語もWebブラウザ上で動くシステムを開発できるものでなくてはなりません。


 それらの情報を客観的に考慮すると、置き換えるシステムの開発言語は、「標準的な言語であり、若手技術者も多いJava」が理想的と言えるでしょう。

AS/400 RPG

図 1. 長年利用されてきた RPG 資産には多くの課題がある





2. RPGをJavaに自動変換するツールの実像に迫る

 これらの注意点を踏まえた具体的なソリューションとして、RPGで開発したプログラムをJavaに変換するツールが登場しています。RPGからJavaへの変換ツールの有効性を探るため、代表的なツールである「RPG Transformer to JAVA(提供元:コベルコシステム株式会社」を例にその実態を解き明かしていきます。

AS/400 RPG


図 2. RPG Transformer to JAVA による RPG 資産の WEB 化

(Code Generator とは RPG Transformer to JAVA サービスで使用するツールです。)



 RPG Transformer to JAVAには単に変換するだけでなく、変換後のプログラムの品質を高めるための機能も数多く施されています。その一つは、自動的な変換にこだわり、手動による変換を極力避けていることです。


 元のRPGのコードに変換ツールがまだサポートしていないコマンドなどが含まれていた場合、変換時には変換後のJavaのコードと同時にエラーが表示されます。エラーの箇所だけ手作業で修正することも可能ですが、その場合修正した技術者の「クセ」がコーディングに現れてしまい、他の技術者が読みにくいコードになる恐れがあります。


 RPG Transformer to JAVAによるソリューションでは、エラーを手作業で修正するのではなく、変換方法を新たに定義し、エラー原因の除去と再変換を繰り返しながらJavaのコードを作り上げます。変換を自動作業だけで完結させるようにすることで、技術者の属人的な修正を排除し、プログラムの可読性を高めます。それにより後のメンテナンス作業も効率化できるわけです。

AS/400 RPG

図 3. RPG Transformer to JAVAの画面


 またRPGでは関数名や変数名が固定長のため、それぞれの意味が開発担当者以外からは分かりにくいことがあります。RPG Transformer to JAVAでは、Javaへの変換時に関数名や変数名もJavaらしいものに置き換えることで、RPGの経験がない技術者でも読みやすいコードにします。これもRPG Transformer to JAVAによる変換が高い品質を提供できる理由の一つと言えます。


 RPG言語のJavaマイグレーションは、まずPoC(Proof of Concept)から始めるのがお勧めです。RPGの一部モジュールを先行して変換。変換がどの程度可能か、変換後のJavaプログラムはどのぐらいの性能を出せるかなどを検証し、変換が現実的かどうかを顧客が判断することができます。


 モダナイゼーションを成功に導くためには、少ない投資から始め、効果を確認しながら順次進めていくことができることが重要なポイントと言えるでしょう。






さいごに

 本記事でご紹介した「RPG Transformer to JAVA」の紹介資料を下記よりご覧いただけます。RPG 言語で開発した業務システムの移行にお悩みを抱えられている方、是非、資料をご確認ください。


RPG資料