COBOLのリバースエンジニアリングの完全ガイド

COBOLのモダナイゼーションでは、リバースエンジニアリングで既存の仕様を復元してから移行計画を立てることが重要です。設計書や担当者が不足していても、JCL・DB2・VSAMを含めて解析すれば、移行や保守に必要な情報を整理できます。

詳しい手順や費用、外注先の選定は、次の関連記事で確認できます。

COBOLのリバースエンジニアリングの概要

リバースエンジニアリングとは、既存のプログラムやシステムから、その設計や仕様を逆方向にたどって復元するプロセスです。

通常の開発は「要件→設計→実装」の順に進みますが、リバースエンジニアリングはその逆に「実装→設計→仕様」の方向で情報を抽象化します。

設計書が失われたシステムを理解したいときや、他システムとの互換性を確保したいとき、セキュリティ上の脆弱性を見つけたいときに活用されます。

COBOLがリバースエンジニアリング最難関の言語である理由

COBOLは1959年に開発された、ビジネス処理に特化した言語です。現在も金融・保険・行政・製造業などの基幹システムで、数千億行規模のコードが稼働し続けています。

Java・Python・Reactなどのモダン言語と比べると、COBOLのリバースエンジニアリングが難しい最大の理由は、プログラム単体で解析が完結しない点にあります。JCL(Job Control Language)・DB2・VSAMといったIBMメインフレーム固有の仕様が、COBOLプログラムと密接に連携しているためです。

汎用のリバースエンジニアリングツール(Ghidra・IDA Proなど)はバイナリ解析に優れていますが、COBOL特有のホスト仕様には対応できないため、専門ツールが必要です。

「How(どう動くか)」と「Why(なぜそうなのか)」の読み取りの差

COBOLリバースエンジニアリングの本質的な難しさは、技術的な解析(What・How)と業務的な理解(Why)の間にずれがある点にあります。ソースコードを読めば、「このプログラムが何をしているか(What)」「どのような処理フローで動いているか(How)」は把握できます。

しかし、「なぜ特定の顧客コードの場合だけ処理が分岐するのか」「この計算式の業務的な根拠は何か」という「Why」は、コードを読むだけでは解明できません。

30年以上前に意思決定された業務ルールがハードコーディングされたCOBOLプログラムでは、業務部門のベテラン担当者へのヒアリングなしに「Why」を正確に復元することは不可能です。そのため、「業務部門の協力が不可欠」という点が、COBOLリバースエンジニアリングを他の言語と根本的に異なるプロジェクトにしています。

COBOLでリバースエンジニアリングを実施する目的とメリット

COBOLのリバースエンジニアリングの目的を、モダナイゼーション、技術継承・ドキュメント整備、セキュリティ脆弱性診断の3方向に分けた図。
目的が異なると、必要な成果物の範囲も変わります。

COBOLのリバースエンジニアリングが求められる主な目的は3つあります。目的によってアプローチも成果物の要件も変わるため、最初に目的を明確にしておくことが、全プロセスの前提となります。

目的1:DX推進によるモダナイゼーション(最多)

最も多い活用目的は、COBOLからJava・Python・マイクロサービスアーキテクチャへの移行(モダナイゼーション)を目的とした、仕様書の復元です。

経済産業省が提唱するDXレポートで「2025年の崖」として警告されたように、レガシーシステムの刷新が遅れると年間最大12兆円の経済損失につながると試算されています。そのため、多くの企業がCOBOL移行を急いでいます。

リバースエンジニアリングで業務仕様書を復元すると、新システムの要件定義・設計の精度が高まり、移行後のバグのリスクを大幅に低減できます。

目的2・3:技術継承・ドキュメント整備とセキュリティ診断

第二の目的は、ベテランSEが退職する前に技術を継承し、ドキュメントを整備することです。長年COBOLを担当してきた技術者が退職すると、業務ロジックがブラックボックス化し、後継者が保守すらできなくなります。

リバースエンジニアリングで業務仕様書を整備しておけば、若手エンジニアでも保守できる体制を作れます。第三の目的はセキュリティ脆弱性診断です。

長年改修を重ねてきたCOBOLプログラムには、古い認証ロジックや暗号化されていないデータ処理、不要になったバックドア的な処理が潜んでいることがあります。リバースエンジニアリングでこれらを洗い出し、セキュリティリスクを評価します。

ポイント

目的がモダナイゼーション、技術継承、脆弱性診断のどれかで、必要な成果物も進め方も変わります。迷ったときは、発注前に主な目的を一つに絞っておくと、後の手戻りを減らせます。

COBOLのリバースエンジニアリングの進め方

対象選定・目的明確化から解析環境・ツール準備、静的解析、動的解析、抽象化、成果物化へ進む6工程の図。
静的解析と動的解析を分けて、仕様の復元へ進みます。

COBOLのリバースエンジニアリングは、大きく6つの工程で進みます。各工程の目的と重要なポイントを、概要レベルで説明します。

6工程の概要(対象選定〜成果物化)

第1工程は「対象選定・目的明確化」です。解析するCOBOLプログラムの範囲(ファイル数・LOC)と目的(モダナイゼーション・継承・脆弱性診断)を確定させ、著作権法第30条の4の非享受目的立証のための記録体制を整えます。第2工程の「解析環境・ツール準備」では、COBOL専門ツール(IBM ADDI・MicroFocus解析ツール)の準備とクリーンルーム体制の構築を行います。

第3工程は「静的解析」で、ソースコードのDIVISION構造・JCL・DB2・VSAM依存関係のマッピングと制御フローグラフの作成を行います。続く第4工程の「動的解析」では、テスト環境での実行トレースと業務シナリオ別の動作確認を、業務部門と協働で進めます。

第5工程は「抽象化(Design Recovery)」で、実装レベルの情報を業務機能仕様レベルへ引き上げます。この工程で業務部門へのWhyヒアリングを集中的に実施します。最後の第6工程は「成果物化」で、合意した粒度(フローチャート・業務仕様書・詳細設計書)に従って文書を完成させ、モダナイゼーション実装フェーズに引き渡します。

プロセス全体で押さえるべき3つのポイント

1つ目は、業務部門を最初から巻き込むことです。技術解析が始まった時点から業務担当者に参加してもらい、「なぜその処理をするか」を並行して確認しながら進めれば、成果物の品質が格段に向上します。

2つ目は、JCL・DB2・VSAMを含む全体の依存関係を先に把握することです。COBOLプログラム単体を先に解析しても、ホスト固有仕様との連携を後から解析すると手戻りが発生します。そのため、全体の依存関係マップを工程1〜2で作成しておくことが、効率化の鍵です。

3つ目は、成果物のサンプルをレビューすることです。プロジェクト開始後の早い段階で数ファイル分のサンプル成果物を作成し、期待する品質水準に達しているかを確認することで、後からの大幅な方針転換を防げます。詳しい手順は、COBOLのリバースエンジニアリングの進め方・手順・工程を解説で確認できます。

ポイント

工程の順番どおりに進めるだけでなく、業務部門を最初から巻き込み、JCL・DB2・VSAMを含む依存関係を先に把握しておくと、手戻りを抑えられます。

COBOLリバースエンジニアリングの開発会社の選び方

ベンダー選定時の確認項目として、COBOL固有の解析実績、JCL・DB2・VSAM解析への対応能力、業務部門協働型の解析体制を並べた図。
技術対応と業務理解の両面がそろうかを確認できます。

COBOLのリバースエンジニアリングを外注する際のベンダー選定は、プロジェクトの成否を左右する、最も重要な意思決定の一つです。

一般的なSI実績が豊富なベンダーであっても、COBOL特有のホスト仕様(JCL・DB2・VSAM)への対応実績がなければ、プロジェクトが途中で行き詰まるリスクがあります。

ベンダー選定の3大確認ポイント

発注前に必ず確認すべき3つのポイントのうち、1つ目は「COBOL固有の解析実績」です。業種・システム規模・稼働環境(IBM z/OS・富士通・日立・オープン系COBOL)を明示した具体的な実績があるかを確認してください。「SI実績多数」より、「COBOL何万行を解析して、何を成果物として納品したか」を具体的に説明できるかどうかが、実力の判断基準になります。

2つ目は「JCL・DB2・VSAM解析への対応能力」です。COBOLソース単体の解析だけでなく、ホスト固有仕様との依存関係マッピングまで実施できるかを確認することが欠かせません。この能力がなければ、COBOLプログラムが全体のシステムの中でどう機能しているかを正確に把握できません。

3つ目は「業務部門協働型の解析体制」です。コードを読むだけでなく、業務部門へのヒアリングを組み合わせてWhyを解明する体制を持つベンダーを選ぶことが、成果物の品質を左右します。

クリーンルーム体制とプロジェクト管理力の評価

サードパーティソフトウェアのリバースエンジニアリングを伴う案件では、クリーンルーム手法を運用する体制があるかを見ておく必要があります。

解析チームと実装チームを分けているか、法務・仲介担当者を配置しているか、著作権保護対象の表現が仕様書に混入しないための検査プロセスを自社の標準として持っているかを、ベンダーに質問してください。

また、COBOLプロジェクトは業務部門・IT部門・ベンダーの三者が長期にわたって連携するため、WBS管理・進捗報告・課題管理の体制が整っているかも、ベンダー選定の重要な評価軸です。開発会社の選び方は、COBOLのリバースエンジニアリングでおすすめの開発会社6選と選び方で確認できます。

ポイント

ベンダーを選ぶ際は、COBOL固有の解析実績、JCL・DB2・VSAM解析への対応力、業務部門と協働する解析体制の3点を見ることが基本です。

COBOLのリバースエンジニアリング費用相場

COBOLリバースエンジニアリングの費用は、成果物の粒度・ホスト環境の複雑さ・業務部門ヒアリング工数によって、大きく変わります。

単純なLOC課金の相場だけで判断すると、後から大幅な追加費用が発生するリスクがあります。

規模別の費用目安

ソースコード解析・仕様書復元の費用は、基本料金30万円(4,000行まで)が相場の出発点です。実績値として、ECサイト商品登録機能(約10ファイル・4,000行)は約30万円、API連携システムの外部I/O項目リスト化は約50万円です。WordPressポータルサイトのCMS構造解析は約60万円、在庫予約システム(約30ファイル・セキュリティ確認含む)は約80万円という例もあります。

ただし、これらはオープン系システムのケースに近い数値です。一方、IBMメインフレーム(z/OS)上のCOBOLでJCL・DB2・VSAMを含む解析を行う場合は、同じファイル数・LOCでも2〜3倍以上の費用になることがあります。LOC単価は、オープン系COBOLで80〜120円/行、z/OS上のCOBOLで150〜250円/行程度が適正な目安です。

「1行50円」という一般相場をそのままCOBOLに当てはめると、後から追加費用が発生するリスクがあります。

費用を左右する主な要因

モダナイゼーション全体の費用は、手法ごとに大きな差があります。リホスト(単純移行)は数千万円〜1億円台・期間3〜6ヶ月、リプラットフォームは1億円〜3億円・期間6〜12ヶ月が目安です。リファクタリングは2億円〜5億円・期間12〜18ヶ月、リビルド(スクラッチ再構築)は5億円以上・期間18ヶ月以上が目安になります。

リバースエンジニアリングへの投資(上流フェーズ)は、後のモダナイゼーション実装フェーズでの手戻りを大幅に削減する効果があります。そのため、上流への適切な投資が、トータルコストの削減につながります。

また、特急対応が必要な場合は、通常の20〜30%増(超特急では40〜60%増)の割増料金が発生します。費用の考え方は、COBOLのリバースエンジニアリングの費用相場・見積もりの考え方で確認できます。

ポイント

費用は、LOCの単純な相場ではなく、成果物の粒度、ホスト環境の複雑さ、業務部門ヒアリング工数に左右されます。見積もりは、稼働環境をそろえて比べてください。

外注・発注方法の概要

COBOLのリバースエンジニアリングを外注する場合、発注前の準備から始まり、RFP作成、ベンダー選定、契約を経て、プロジェクト推進へと進みます。各ステップでCOBOL固有の対応が必要になります。

発注前に必ず整備すべき5項目

発注前に発注側が整えておく項目は5つあります。前半の3つは、①ソース資産の棚卸(ファイル一覧・LOC・JCL一覧・DB2テーブル・VSAM一覧・稼働環境)、②目的の明確化(モダナイゼーション・継承・脆弱性診断)、③成果物要件の定義(粒度・必須記載項目の明示)です。

残りの2つは、④業務部門の巻き込み体制の構築(キーパーソンの特定・ヒアリング工数の確保)、⑤情報セキュリティ体制の整備(NDA・アクセス制御・データ廃棄条項)です。

これらが整備された状態でベンダーに問い合わせることで、見積もりの精度が向上し、後からの追加費用リスクを大幅に低減できます。

RFPと契約で押さえるべきポイント

RFPには、COBOL固有の記載事項が欠かせません。具体的には、稼働環境の詳細(z/OSバージョン・COBOLコンパイラ)と、対象ソースの規模情報(総LOC・JCLファイル数・DB2テーブル数・VSAMファイル数)を記載します。

見積もりの前提として明示しておきたいのは、LOC課金にCOBOLの複雑さ補正があるかどうか、ホスト固有仕様解析の追加費用の扱い、業務部門ヒアリング工数の含み方の3点です。契約段階では、クリーンルーム手法の遵守条項、成果物の知的財産権帰属、プロジェクト終了後のデータ廃棄条項を盛り込んでください。

また、プロジェクト開始後早期にサンプル成果物(数ファイル分)をレビューし、期待する品質水準とのギャップを確認してから本格着手することを強く推奨します。外注の進め方は、COBOLのリバースエンジニアリングを外注する方法|発注前の準備と進め方で確認できます。

COBOLのリバースエンジニアリングを実施する際には、著作権・不正競争防止法・EULAへの対応という法的リスクを正しく理解したうえで、プロジェクトを進める必要があります。

適切に対処すればリスクを最小化できます。一方で、無頓着にプロジェクトを進めると、後から法的問題が発生する可能性があります。

平成30年の著作権法改正(第30条の4)により、「情報解析」「技術研究」などの非享受目的のリバースエンジニアリングは、原則として合法化されました。しかし、この条文の適用を受けるには、非享受目的であることを立証できる状態にしておく必要があります。

実務上の対処としては、解析専用に隔離したパソコンや環境を用意し、解析過程を詳細なレポートとして記録することが求められます。あわせて、解析の目的(モダナイゼーション向け仕様書復元など)を記録した文書を、事前に作成しておきます。

自社システムのCOBOLを解析する場合(自社が著作権者である場合)は、これらの手続きは不要です。一方で、パッケージソフトやベンダー納品システムのCOBOLを解析する場合は、慎重な法務確認が必要です。

クリーンルーム手法は、解析チームと実装チームを完全に分離して、著作権侵害(依拠性)を回避する手法です。1980年代にフェニックス・テクノロジーズがIBM BIOS互換品を開発した際に確立され、現在でも法的リスク管理の標準的な手法として使われています。

具体的には、解析チーム(Dirty Room)がソースコードを読み解いて仕様書を作成し、その仕様書だけを実装チーム(Clean Room)に渡します。そのうえで、実装チームは元のソースコードを一切参照せず、仕様書のみを基に新しいコードを開発します。

セガ対アッコレード事件の教訓から、両チームの間に法務担当者を置き、仕様書に著作権保護対象の表現が混ざっていないかを検査するのが、実務上のベストプラクティスです。また、EULAにリバースエンジニアリング禁止条項がある場合でも、互換性確保に不可欠なときや独占禁止法上の問題があるときは、当該条項が無効とされる可能性があります。法務専門家への確認を推奨します。

ポイント

著作権法第30条の4の適用には、非享受目的を記録で立証できる状態が前提です。パッケージやベンダー納品のCOBOLを扱うときは、解析前に法務専門家へ相談してください。

COBOL特化の解析ツール紹介

COBOLのリバースエンジニアリングには、汎用ツールでは対応できないホスト固有仕様の解析のため、COBOL専門ツールの活用が欠かせません。

主要ツールの特徴を把握しておくと、ベンダー選定の際にツール選択の妥当性を評価できます。

COBOLモダナイゼーション向け専門ツール

COBOLのモダナイゼーション解析に最も活用されている専門ツールは2つあります。1つはIBM Application Discovery and Delivery Intelligence(ADDI)、もう1つはOpenText(旧MicroFocus)の解析ツール群です。

IBM ADDIは、z/OS上のCOBOLプログラム・JCL・DB2・VSAMの依存関係を自動的にマッピングし、プログラム間のコール関係グラフ・データフロー図・データセット依存関係図を生成します。z/OSプラットフォームへの深い対応が強みです。

OpenText COBOL Analyzer(旧MicroFocus COBOL Analyzer)は、メインフレームおよびオープン系COBOLの両方に対応しています。ソースコードの品質分析・依存関係マッピング・デッドコード検出・移行影響分析など、幅広い機能を提供しています。これらの専門ツールを活用しているかどうかは、ベンダー選定の重要な評価ポイントの一つです。

汎用リバースエンジニアリングツールとの使い分け

Ghidra(NSA開発・無料OSSツール)やIDA Pro(業界標準の商用ツール)はバイナリ解析に優れており、コンパイル済みのCOBOLバイナリの逆コンパイルに用いられることがあります。API・スクリプティングの使いやすさではBinary Ninjが最も評価が高く、チーム協調作業にはGhidraのプロジェクト共有機能が適しています。

ただし、これらの汎用ツールは、JCL・VSAM・DB2といったCOBOLのホスト固有仕様の解析には対応していません。そのため、モダナイゼーションを目的とする場合は、前述の専門ツールとの組み合わせが必要です。一方で、脆弱性診断を目的としたCOBOLバイナリ解析であれば、汎用ツールの活用場面も広がります。

COBOLリバースエンジニアリングで失敗しないためのポイント

COBOLのリバースエンジニアリングプロジェクトは、準備不足や判断ミスが後のフェーズに大きな影響を与えます。

よくある失敗パターンとその対策を把握しておくことで、プロジェクトの成功確率を高められます。

よくある失敗パターンと対策

最も多い失敗パターンは、LOC課金で安く見積もられた後に追加費用が多発するケースです。COBOL 1万行とReact 1万行では、複雑さがまったく異なります。COBOLの1行は複雑な業務ロジックや外部システム連携の仕様を凝縮していることが多く、行数の単純比例で工数を算定するベンダーは、実態を把握していません。

対策としては、COBOL固有の複雑さを単価に反映した見積もりかどうか、JCL・DB2・VSAM解析の追加費用、業務部門ヒアリング工数の扱いを発注前に確認することが有効です。次に多い失敗は、「成果物は納品されたが、モダナイゼーション実装で使えなかった」というケースです。

変数名の意味や業務ロジックのWhy、例外処理の業務的な意味が含まれない成果物では、後の実装で業務ルールの誤解によるバグが多発します。こうした失敗を防ぐには、RFP段階で品質基準を詳細に定義し、プロジェクト初期にサンプル成果物をレビューすることが対策です。

COBOLシステムのリバースエンジニアリングでは、解析対象のソースコードに顧客データ・取引ロジック・認証処理など機密性の高い情報が含まれています。そのため、解析環境のアクセス制御と、作業完了後のデータ廃棄管理が必要です。

解析環境は本番環境から完全に隔離し、ベンダーへのアクセスは最小権限の原則で管理することを推奨します。法令対応では、著作権法第30条の4の非享受目的立証のための記録管理と、EULAのリバースエンジニアリング禁止条項の確認、法務専門家への確認が欠かせません。

解析に使用するテストデータは、個人情報保護法の観点から、実際の個人情報が含まれないよう匿名化しておくことも必要です。

よくある質問(FAQ)

COBOLのリバースエンジニアリングについて、よく寄せられる質問とその回答をまとめます。

Q:COBOLのリバースエンジニアリングにどのくらいの期間がかかりますか?

A:期間は、対象のCOBOLシステムの規模・複雑さ・成果物の粒度によって大きく異なります。

小規模な業務モジュール(数ファイル・数千行)の仕様書復元であれば1〜3ヶ月程度が目安です。一方で、大規模な基幹システム全体(数十万行規模)の詳細設計書復元では、12〜18ヶ月以上かかるケースもあります。

JCL・DB2・VSAMを含むホスト固有仕様の解析が必要な場合は、さらに期間が延長される傾向があります。また、業務部門のヒアリングがプロジェクトのクリティカルパスになることが多く、業務担当者のスケジュール調整が、プロジェクト期間に直接影響します。

Q:リバースエンジニアリングとスクラッチ開発、どちらを選ぶべきですか?

A:判断の目安として、「業務ロジック生存率」が参考になります。現行COBOLに含まれる機能のうち、新システムでも引き続き必要な機能の割合が70%以上であれば、リバースエンジニアリングの活用が費用対効果の面で優位です。

50%以下の場合は、不要な機能まで解析するコストが無駄になるため、スクラッチ開発との費用比較を慎重に行うことを推奨します。ただし、スクラッチを選ぶ場合でも、「現行業務の正確な把握」のための調査は必要です。リバースエンジニアリングへの投資がゼロになるわけではありません。

スクラッチ開発では、現行の業務ロジックに蓄積されたビジネスルールを正確に継承できるかどうかに注意が必要です。

まとめ

COBOLのリバースエンジニアリングは、DX推進において避けて通れない重要なプロセスです。

本ガイドでは、基本概念から失敗パターンへの対策まで、プロジェクト全体を見渡すために必要な知識を体系的に解説しました。

COBOLのリバースエンジニアリングが他の言語と根本的に異なるのは、3つの点です。JCL・DB2・VSAMというホスト固有仕様への対応、業務ロジックの「Why」を解明するための業務部門との協働、そしてLOC課金の罠です。

これらを正しく理解したうえでベンダー選定・発注準備・プロジェクト管理を行うことが、成功への最短経路です。各テーマの詳しい内容は、冒頭と各節にある関連記事で解説しています。

会社紹介

株式会社riplaでは、お客様の事業・ユーザー・業務に最適化したオーダーメイド型システムを、構想策定・要件定義から開発・改善まで一気通貫で支援。事業会社でIT・DXを経験したプロフェッショナルによる高い要件定義力・システム設計力を活かし、事業成果の最大化に伴走します。

また、当社独自の開発テンプレート「Boxシリーズ」による標準機能の高速開発と、AI駆動開発の独自フレームワーク「GoDD」による独自機能のAI実装を組み合わせることで、低コスト・短期間で開発を実現いたします。

もし、システム開発やプロダクト開発に関するご要望がございましたら、お気軽にお問い合わせください。

・サービス概要資料のURLはこちら >>>
・お問合せページのURLはこちら >>>
・お役立ち資料のURLはこちら >>>

執筆者プロフィール
張田谷凌央
張田谷凌央

株式会社ripla 代表取締役CEOとして、システムパッケージ活用、システム開発、データ分析、生成AI活用、SaaS開発、アプリ開発、EC構築など、幅広い領域で企業のDX推進と事業成長を支援している。事業会社でIT・DXを経験したプロフェッショナルが集う株式会社riplaにおいて、お客様の事業・ユーザー・業務に最適化したオーダーメイド型システムを構想策定・要件定義から開発・改善まで一気通貫で支援し、単なるシステム納品にとどまらず、クライアントと同じ目線で事業成果の最大化に向けた伴走支援を行う。早稲田大学卒業後、ラクスル株式会社、LINEヤフー株式会社にて事業開発やDX推進などに従事した後、株式会社riplaを創業。