レガシーCOBOLシステムのモダナイゼーションに取り組むエンジニアにとって、埋め込みSQL(EXEC SQL) の扱いは永遠の難題です。
JAVATELが開発中の SlimeCOBOL-ESQL は、まさにその核心に真正面から挑むプロジェクトです。
公式ページ: https://www.javatel.co.jp/ja/resource/slimecobol-esql/
何をやろうとしているのか
古いCOBOLプログラム内に直接書かれた EXEC SQL を、挙動(答え)を1ビットも変えずに 現代の形へ変換するツール。
- 出力先:Java(JDBC) / Rust(sqlx + typed bind)
- 方針:bit-exact路線(徹底的に挙動を一致させる)
- 現状:開発・検証段階(実IBM DB2での最終確認は次段階)
印象に残る「正直さ」と検証の深さ
このページを読んで一番印象的だったのは、ベンダーらしい過剰宣伝が一切ない点です。
冒頭から「開発中 / 検証段階」と明記し、「いま証明できていること」 と 「まだ確認していないこと」 を明確に分けています。
証明できている主な成果(2026年6月時点)
- 独立参照実装 Open-COBOL-ESQL(ocesql) に対し、47ケースで完全一致(出力・テーブル状態ともに)
- JavaとRustの両emitterで同一の中間表現(Slot IR) が機能することを確認
- カバー範囲:SELECT/INSERT/UPDATE/DELETE、カーソル、動的SQL、NULL indicator、固定長PIC Xの空白詰め、packed decimalなどレガシー特有の挙動
- 実公開コーパス146プログラム に対する抽出率 97.1%、型認識 95.1%(ただしこれはbit-exact変換完了率ではないと丁寧に注記)
さらに、end-to-end検証も実施済み:
- 実際のサンプルプログラム(INSERTTBL.cbl、FETCHTBL.cbl、PGMOD2/3など)をPostgreSQL上で実行し、参照実装とbyte単位で一致することを確認
- 日付・タイムスタンプのマイクロ秒レベル、CURRENT_TIMESTAMP以外の決定的列も一致
- 検証中に見つかった忠実性バグを2件潰して回帰テストを緑に維持
検証のしくみ
抽出器(S1.5) → Slot IR → Java/Rust emit → PostgreSQL実行 → ocesql参照実装との差分比較という多層検証を実施。
徹底的に「数で潰す」エンジニアらしいアプローチです。
まだこれから(現実的な限界認識)
- 実IBM DB2でのSQLCODE・方言・ロック挙動は未検証
- 大規模本番コードの完全網羅は主張せず、個別PoCで確かめる方針
- 提供形態も未確定
総評
正直に言って、「本物の技術者が作っている」 という印象が強いページです。
派手なセールスコピーではなく、技術者同士が「ここまで検証したぞ。一緒にPoCやりませんか?」と語りかけるような控えめで真摯なトーン。
SlimeCOBOL本体のCOBOL→Java/Rust transpilerと組み合わせれば、レガシーメインフレーム近代化プロジェクトにおいてかなり強力な武器になりそうです。
COBOLモダナイゼーションに携わっている方、またはレガシーシステムのDBアクセス部分に頭を悩ませている方は、ぜひ一度目を通してみることをおすすめします。
参考
- SlimeCOBOLメイン: javatel.co.jp
- 検証日:2026年6月10日時点の情報
レガシーを尊重しつつ、現代の技術で丁寧に橋渡ししようとする姿勢に好感が持てました。
