この記事の要点
RPGからJava・Pythonへの移行は、単なる言語の書き換えではありません。IBM iを残すのか移すのかという基盤の判断と、RPGサイクル・標識・DDS・パック10進・EBCDICといったIBM i特有の仕組みへの対策が成否を分けます。本記事では、3つの移行パターン、JavaとPythonの選び方、RPG移行で直面する6つの壁、5ステップの進め方とAI活用のポイントを解説します。
RPGからJava・Pythonへの移行とは、IBM i(旧AS/400)上で動くRPGプログラムを、JavaやPythonで動くシステムへ置き換えることです。成功の鍵は、コードを変換する前に「IBM iを残すか移すか」を決め、RPG特有の仕組みをどう引き継ぐかを設計することにあります。
RPGのプログラムは、IBM iのデータベース、画面(5250)、ジョブ管理と密接に結びついています。そのため、言語だけを置き換えようとすると、画面・帳票・バッチ・データの扱いでつまずきます。RPG移行では、プログラムの外にある資産まで含めて全体を評価することが欠かせません。
本記事は、COBOL / RPGモダナイゼーションのクラスター記事です。COBOLの業務ロジック継承については、COBOL Java・Python移行で業務ロジックを守る方法もあわせてご覧ください。

1. RPGからJavaへの移行が増えている理由
まずは、RPGとIBM iの特徴と、いまRPG移行を検討する企業が増えている背景を整理しましょう。
1-1. RPGとIBM iの特徴
RPGは、IBM iで長く使われてきた業務アプリケーション用の言語です。販売・在庫・会計などの基幹システムで、数十年にわたり安定稼働しているケースが多くあります。
IBM iは、OS・データベース(Db2 for i)・ジョブ管理が一体化した基盤で、安定性と後方互換性の高さが大きな強みです。一方で、その一体性ゆえに、RPGのプログラムは基盤の機能に強く依存しています。IBM iの最新情報は、IBM公式サイト「IBM i」で確認できます。
1-2. RPG技術者不足とブラックボックス化
RPGを移行する最大の理由は、技術者の不足です。古い形式(RPG III や固定形式のRPG IV)を読める人が退職し、仕様を知る人がいない「ブラックボックス」状態になっているシステムは少なくありません。
さらに、データ活用やAI連携、Web化・クラウド化の要求が高まり、IBM iの中に閉じたシステムでは対応しにくくなっています。経済産業省も、レガシーシステムの複雑化がDXの足かせになっていると指摘しています(経済産業省「レガシーシステムモダン化委員会総括レポート」)。ブラックボックス化の解き方は、システムのブラックボックス化を解く5ステップで解説しています。
2. 移行前に決めること:IBM iを残すか、移すか
RPG移行で最初に決めるべきなのは、移行先の言語よりも「基盤をどうするか」です。大きく分けて、次の3つのパターンがあります。
| パターン | 概要 | 向いているケース | 注意点 |
|---|---|---|---|
| A. IBM i上でモダナイズ | RPGをフリー形式化し、API化・Web画面化する | IBM iの安定性を活かしたい、移行リスクを最小にしたい | RPG技術者への依存は残る |
| B. IBM i上でJava化 | IBM i上でJavaを動かし、RPGを段階的に置き換える | データやジョブはIBM iに残し、言語だけ移したい | 基盤のコストと保守体制は残る |
| C. IBM iから脱却 | Linux・クラウド上のJava/Pythonへ全面移行する | ハード更新を機に基盤を見直したい、クラウドに集約したい | 画面・ジョブ・DBまで再設計が必要で、範囲が最も広い |
どのパターンが正解かは、システムの規模、業務上の重要度、ハードウェア更新のタイミング、社内の体制によって変わります。パターンCを選ぶ場合ほど、プログラムの外にある資産の評価が重要になります。移行範囲と優先順位の決め方は、モダナイゼーションの優先順位と範囲も参考になります。
3. 移行先はJavaかPythonか
基盤の方針が決まったら、移行先の言語を選びます。RPGの移行先としてはJavaが一般的ですが、用途によってはPythonも有力な選択肢です。

| 比較項目 | Java | Python |
|---|---|---|
| 得意な処理 | 大量トランザクション、オンライン処理、基幹業務 | データ処理、集計・分析、AI・機械学習との連携 |
| 数値計算 | BigDecimalで10進演算を厳密に扱える | Decimalモジュールで対応可能(設計で統一が必要) |
| 技術者の確保 | 大規模開発の経験者が多い | データ・AI系の技術者が多い |
| 向いている用途 | 販売・在庫・会計などの基幹処理 | 帳票データの加工、データ連携、分析バッチ |
実際には、オンラインの基幹処理はJava、データ加工や分析系のバッチはPythonというように、処理の性質で使い分ける構成も増えています。
4. RPG移行で直面する6つの壁
ここからが本題です。RPGからJava・Pythonへ移行する際には、IBM iとRPG特有の仕組みが「壁」になります。HBLABでは、次の6つを重点的に評価しています。

① RPGサイクルと標識(インディケーター)
RPGには、ファイルの読み込みから出力までを自動で繰り返す「RPGサイクル」や、*IN01〜*IN99などの「標識」で処理を制御する独特の仕組みがあります。Javaにはこれらに相当する仕組みがないため、処理の流れを明示的なループと条件分岐に書き直す必要があります。標識の意味はコードから読み取りにくく、仕様化の手間が大きい部分です。
② DDSで定義されたファイル・画面・帳票
IBM iでは、データベースのファイル、5250の表示装置ファイル(画面)、プリンター・ファイル(帳票)をDDSで定義します。移行先では、テーブル定義、Web画面、帳票ツールにそれぞれ置き換える必要があり、プログラム以上に工数がかかることもあります。
③ レコードレベルアクセスからSQLへの置き換え
RPGでは、CHAIN・READ・SETLLなどの命令で、キーを指定して1件ずつレコードを読み書きします。これをSQLに置き換える際、読み込み順序やロックの扱い、件数が多い場合の性能が変わる点に注意が必要です。
④ パック10進・ゾーン10進と端数処理
RPGは、パック10進・ゾーン10進で金額や数量を厳密に扱います。移行先でfloatやdoubleを使うと、計算結果がずれる原因になります。JavaではBigDecimal、PythonではDecimalに統一し、端数処理のルールを明文化しておくことが重要です。
⑤ EBCDIC(CCSID)と日本語・外字
IBM iのデータは、EBCDIC系の文字コード(CCSID)で保存されています。Unicodeへの変換では、外字、半角カナ、並び順の違いが問題になりやすく、データ移行の段階で十分な検証が必要です。データの検証方法は、データ移行テストの進め方で解説しています。
⑥ CL・ジョブ・データエリアなどの周辺資産
RPGは単独では動きません。CL(制御言語)プログラム、ジョブスケジュール、データエリア、データ待ち行列、照会(クエリー)など、RPGを取り巻く周辺資産も移行対象です。これらの依存関係は、現行システムの依存関係調査と同じ考え方で洗い出します。
| 壁 | RPG側の仕組み | 移行先での主な対応 |
|---|---|---|
| ① サイクル・標識 | RPGサイクル、*IN01〜*IN99 | 明示的なループ・フラグ・状態管理に置き換え |
| ② DDS | 物理・論理ファイル、5250画面、帳票 | テーブル定義、Web画面、帳票ツール |
| ③ レコードアクセス | CHAIN・READ・SETLL | SQL・ORM、性能とロックの再設計 |
| ④ 10進数 | パック10進・ゾーン10進 | BigDecimal/Decimal、端数処理の明文化 |
| ⑤ 文字コード | EBCDIC(CCSID) | Unicode変換表、外字・並び順の検証 |
| ⑥ 周辺資産 | CL、ジョブ、データエリア | ジョブ管理ツール、設定・キュー基盤 |
5. RPGからJava・Pythonへの移行の進め方:5ステップ
6つの壁を踏まえ、HBLABでは次の5ステップでRPG移行を進めています。

Step1. 資産を棚卸しする:RPG・CL・DDS・クエリー
RPGプログラムだけでなく、CL、DDS、照会、ジョブ定義まで含めて、本数・行数・利用状況を把握します。使われていないプログラムを特定して対象から外すだけでも、工数は大きく減ります。棚卸しの観点は、マイグレーション前のソースコード解析が参考になります。
Step2. 業務ロジックを抽出し、仕様として確定する
標識やサイクルに埋もれた業務ルールを取り出し、「何を、どの条件で、どう計算するか」を仕様として確定します。業務担当者と「残す・変える・捨てる」を合意するのもこの段階です。
Step3. 移行方式とアーキテクチャを設計する
パターンA〜Cのどれを選ぶか、画面はWeb化するか、バッチとジョブ管理をどうするか、データベースをどこへ移すかを決めます。一括で切り替えるか、業務単位で段階的に移すかも、この段階で判断します。
Step4. AI支援でコードを変換し、人がレビューする
AIを活用してRPGをJava・Pythonへ変換し、エンジニアがレビュー・補正します。変換ルール(10進数、文字コード、ファイルアクセス)を先に標準化しておくことで、品質のばらつきを抑えられます。
Step5. 現新比較テストで等価性を確かめ、段階的に切り替える
同じ入力データで旧システムと新システムを動かし、帳票・画面・データの結果が一致するかを確認します。テストの考え方は、移行のリグレッションテストをご覧ください。
自社のRPG資産に、6つの壁がどれだけ潜んでいるか把握できていますか?
HBLABの無償AI診断では、RPGを含むソースコードを解析し、移行時に注意すべき箇所や依存関係を可視化します。IBM iを残すか移すかを判断する材料としてご活用ください。
6. AIはRPG移行をどこまで支援できるか
生成AIは、RPG移行のスピードを大きく変えつつあります。ただし、任せてよい部分と、人が判断すべき部分を分けることが前提です。
| 工程 | AIが得意なこと | 人が判断すべきこと |
|---|---|---|
| 資産の理解 | プログラムの要約、標識の意味の推定 | 推定内容の正しさの確認 |
| 仕様化 | 業務ルールの候補の列挙、設計書の下書き | ルールの妥当性、残すかどうかの判断 |
| コード変換 | RPGからJava・Pythonへの変換、テストコードの生成 | 設計方針、端数処理・文字コードのルール |
| テスト | テストケース・テストデータの作成 | 業務上の重要度、合否の最終判断 |
AIは古いRPGの読解に強い一方、もっともらしい誤りを含むこともあります。AI活用の工程別の考え方はマイグレーションのAI活用、誤りの防ぎ方は生成AIマイグレーションのハルシネーション対策で解説しています。
7. RPG移行のチェックリスト
RPGからJava・Pythonへの移行を始める前に、次の10項目を確認しましょう。
- IBM iを残すか移すか(パターンA〜C)の方針が決まっている
- RPG・CL・DDS・照会・ジョブ定義の一覧がある
- 使われていないプログラムを特定し、対象から外した
- 標識・RPGサイクルに依存する処理を洗い出した
- 5250画面・帳票の移行方法が決まっている
- レコードレベルアクセスのSQL化で性能を検証した
- 10進数の扱いと端数処理のルールを明文化した
- EBCDICからUnicodeへの変換表と外字の扱いを決めた
- ジョブスケジュール・データエリアなど周辺資産の移行先が決まっている
- 現新比較テストの範囲と合否基準が合意されている
8. HBLABのRPG・COBOLモダナイゼーション支援
HBLABは、RPG・COBOLなどのレガシー資産のモダナイゼーションを、アセスメントから移行・テストまで一貫して支援しています。
HBLABのAI Assessment Toolは、技術調査、評価、移行戦略、業務仕様の整理、コード変換、単体テスト、結合テストの7工程を支援します。AIで解析と変換を高速化し、移行方式の判断や業務ルールの確認は、SA・BAの専門家が担う体制です。
移行方式の比較やサービスの全体像は、HBLABのモダナイゼーションサービスとマイグレーションサービスをご覧ください。
RPG技術者がいなくなる前に、移行の道筋をつくりませんか?
「IBM iを残すべきか分からない」「RPGの仕様を知る人がいない」といったお悩みに、HBLABがアセスメントと移行計画づくりからお応えします。
9. RPG移行に関するよくある質問
RPGを自動変換ツールだけでJavaにできますか?
構文の変換はツールで大きく効率化できますが、RPGサイクルや標識をそのまま再現したJavaは、保守しにくいコードになりがちです。業務ロジックの仕様化と、変換後のレビュー・テストを組み合わせることが前提です。
IBM iを残したままJava化することはできますか?
はい。IBM i上でJavaを動かし、RPGを段階的に置き換える方法もあります。データやジョブ管理はIBM iに残しつつ、技術者を確保しやすい言語へ移したい場合に有効です。
RPGの移行にはどのくらいの期間がかかりますか?
プログラム本数、画面・帳票の数、周辺資産の量、選ぶ移行パターンによって大きく変わります。まずはアセスメントで資産の規模と難易度を把握し、業務単位で段階的に進める計画を立てるのが現実的です。
まとめ
RPGからJava・Pythonへの移行では、IBM iを残すか移すかを決めたうえで、RPGサイクルと標識、DDS、レコードレベルアクセス、10進数、EBCDIC、周辺資産という6つの壁に計画的に対処することが重要です。資産の棚卸しから現新比較テストまでの5ステップで、RPG移行を確実に進めましょう。HBLABは、AIと専門家の組み合わせで、RPGからJava・Pythonへの移行を支援します。




