BLOG · 2026-06-10 08:04

SlimeCOBOL-ESQL:COBOLの埋め込みSQLを「答えを変えずに」Java/Rustへ変換する本気ツール(開発中)

レガシー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日時点の情報

レガシーを尊重しつつ、現代の技術で丁寧に橋渡ししようとする姿勢に好感が持てました。

投稿日時: 2026-06-10 08:04

← ブログ一覧へ戻る