RPGからJavaへのマイグレーション方法をChatGPTに聞いてみました。
回答は以下の通りです。なかなか良くできてますね。
— 自分で考えるよりまずAIに聞けwww–
いいテーマですね。RPG(IBM i / AS400系)→ Java へのリライト/マイグレーションは、技術だけでなく業務理解が成否を分ける世界です。
代表的な方法を「王道 → 現実解 → AI活用」の順で整理します。
① マイグレーションの基本アプローチ(全体像)
大きく分けると 4パターン あります。
1️⃣ フルリライト(スクラッチ再構築)
RPGの業務ロジックを理解し、Javaで新規実装
特徴
- RPG → 業務仕様 → Java
- DB設計・画面・バッチも刷新
メリット
- 技術的負債を一掃できる
- Java標準設計・クラウド対応しやすい
デメリット
- 業務仕様の属人化が最大のリスク
- コスト・期間が最も大きい
向いているケース
- システムが老朽化しきっている
- 今後10年以上使う前提
2️⃣ 段階的リライト(ストラングラーパターン)
RPGとJavaを共存させ、機能単位で置き換え
流れ
- DBはそのまま(DB2 for i)
- 新規・変更機能をJavaで実装
- 既存RPGを徐々に廃止
メリット
- リスクが低い
- 業務を止めずに移行可能
デメリット
- 一時的に構成が複雑
- RPGとJavaの二重保守
向いているケース
- 業務が止められない基幹系
- 人手・予算が限られている
3️⃣ 自動変換ツールを使ったリライト
RPGコードを機械的にJavaへ変換
代表例
- Fresche
- Heirloom Computing
- ARCAD Transformer
特徴
- RPG → Java(かなりRPG寄りなJava)
メリット
- 変換スピードが速い
- 業務ロジックの欠落が少ない
デメリット
- 生成Javaが読みにくい
- 「Java風RPG」になりがち
- 長期的な保守性は低い
向いているケース
- とにかくAS400から脱却したい
- 短期間で移行必須
4️⃣ ランタイム互換方式(変換+互換レイヤ)
RPGの構造を保ったままJava上で動かす
- RPGのI/O、サブルーチン、DSをJavaで再現
- 実質「移植」
メリット
- 動作互換性が高い
- 既存業務への影響が小さい
デメリット
- Javaのメリットを活かしにくい
- 将来また作り直しが必要になることも
② RPG → Java で必ず整理すべき技術要素
RPG特有の考え方 → Java変換ポイント
| RPG要素 | Javaでの考え方 |
|---|---|
| サブルーチン | メソッド |
| プログラム単位 | クラス |
| DS(データ構造) | POJO / DTO |
| 画面DSPF | Web画面 / バッチ入力 |
| CHAIN / READ | DAO / Repository |
| グローバル変数 | DI・状態分離 |
ここを整理しないと「動くけど地獄」になります。
③ AI開発ツールを使う方法(実践的)
ここが今いちばん現実的に効きます。
🔹 1. AIを「RPG理解エンジン」として使う
使い方
- RPGソースをAIに読み込ませる
- 以下を自動生成
例
- 処理概要(業務日本語)
- 入出力仕様
- DBアクセス一覧
- 分岐条件の整理
👉 人間が読む設計書をAIに作らせる
効果
- RPG読める人が少なくても進められる
- 属人化を壊せる
🔹 2. AIによる段階的Java変換
ステップ例
- RPG → 疑似コード(AI)
- 疑似コード → Java(AI)
- 人間が設計レビュー
- テストケース生成(AI)
ポイント
- いきなり「RPG→Java」はやらない
- 一度“意味”に変換する
🔹 3. AIでテストを量産する(超重要)
RPG移行で一番怖いのは
👉 「仕様が合ってるか誰も分からない」
AIに以下をやらせます:
- 既存RPGの入力パターン抽出
- 正常系・異常系の洗い出し
- JUnitテスト生成
👉 「動作が同じか」をテストで担保
🔹 4. AI × 静的解析ツール併用
- RPG解析ツール(ARCAD等)
- Java静的解析(SonarQube)
- AIで差分説明
例
「このJava処理は元RPGのどの処理に対応?」
→ AIが説明
④ おすすめ現実解(多くの現場で成功しやすい)
個人的に一番事故が少ないのは👇
✅ 段階的リライト + AI活用
構成
- DBは当面DB2 for i
- 新規・改修はJava
- 既存RPGはAIで仕様化
- テストはAIで自動生成
理由
- 業務停止リスクが低い
- 人材不足をAIで補える
- 将来フルJavaへ自然移行
⑤ 失敗しがちなポイント(重要)
❌ RPGを「古い言語」と軽視
❌ 設計書を作らずコード変換
❌ テスト軽視
❌ ベテランRPG担当を初期から外す
👉 AIは「代替」ではなく「翻訳者」


