Javaのリバースエンジニアリングを外注するには、まず発注前の準備を行い、発注範囲と成果物の定義、発注先の選定とRFP作成へ進みます。そのうえで契約を結び、プロジェクト推進に入ります。
解析対象の状態は費用や期間、成果物の品質に直結するため、発注側の準備の水準が成否を大きく左右します。
▼全体ガイドの記事
・Javaのリバースエンジニアリングの完全ガイド
AI駆動開発の基本や工程ごとの活用方法、費用・期間への影響については、無料ホワイトペーパー「【2026年最新版】AI駆動開発の完全ガイドブック」で詳しく解説しています。
Javaリバースエンジニアリングを外注する前の準備

発注側の準備が足りないと、見積もりが大きく変わるうえ、プロジェクトの手戻りや成果物の品質低下にもつながります。見積もりの精度を上げるには、発注前に解析対象の状態を一通り押さえておくことが欠かせません。
- 解析対象の棚卸:JAR・WAR・EAR、LOC、Javaのバージョン
- 難読化の確認:ProGuardやR8、mapping.txtの有無
- フレームワークの特定:EJB・Struts・Springなどと、そのバージョン
対象JARファイル・クラスファイルの棚卸
最初に行うべきは、解析対象のJavaシステムのソース資産を洗い出すことです。具体的には、JAR・WAR・EARの総数とサイズ、LOC(行数)、Javaのバージョン(Java 1.4〜Java 17など)を把握します。概算のLOCは、JARを展開して.classファイルの数を数え、1クラスあたり平均100〜200行と見積もれば算出できます。
使用しているフレームワーク(EJB・Struts・Spring・Hibernateなど)とそのバージョン、既存のドキュメント(設計書・仕様書・テスト仕様書)の有無と品質も、同じ段階で押さえます。これらの情報が事前に整っているほど、ベンダーの見積もり精度が大きく上がります。
棚卸の際は、JARファイルをJD-GUIやCFRで開いてみるとよいでしょう。クラス名やメソッド名が「a.b.c」「m1」「x0」のような記号か、単語として読めるかを見るだけで、難読化の有無を大まかに判断できます。また、ビルド管理ファイル(pom.xml・build.gradle)が残っていれば、依存ライブラリを把握でき、OSSライセンスの整理にも役立ちます。
ProGuard難読化の有無確認
ProGuardやR8の適用有無は、発注前に必ず確認しておくべき項目です。難読化されたコードは、クラス名・メソッド名・フィールド名がすべて短い記号になっており、逆コンパイルしても業務ロジックをほぼ解読できません。そのため、ProGuardの難読化解除は、難読化なしの解析と比べて2〜4倍の工数がかかることが多く、見積もりに大きな影響を与えます。
難読化のマッピングファイル(mapping.txt)が保管されていれば、ベンダーに提供することで解析コストを大幅に削減できます。マッピングファイルがない場合でも、R8ではDEX形式の中間コードからある程度の情報を読み取れます。ただし、業務ロジックの意図を復元するには、業務部門へのヒアリングが不可欠です。
Androidアプリ(APK)を対象とする場合は、難読化に加えてDEXバイトコード構造の解析も必要になるため、Javaサーバーサイドシステムよりさらに工数が増えます。発注前にこれらの情報を整理してベンダーに開示することが、正確な見積もりの第一歩です。
フレームワーク(Spring・EJB・Struts)の特定
Javaシステムがどのフレームワーク上で構築されているかで、解析の難易度と必要な専門知識が大きく変わります。フレームワークごとに読み解きにくい点は異なるため、解析の前に、それぞれの特徴を押さえておく必要があります。
- Spring:Beanの呼び出し順や、トランザクションの境界を把握しにくいです。
- EJB:CMT(コンテナ管理トランザクション)の境界、RMI設定、MDB(メッセージ駆動Bean)の仕様が、設計書なしには読み解けないケースが多くあります。
- Struts:2000年代前半に構築されたものが多く、サポート切れのバージョンも多いため、MVCパターンやAction・FormBeanの理解が求められます。
Springは@Autowiredや@Transactionalで依存性注入やトランザクション管理を行います。その動的な振る舞いはAOP(アスペクト指向プログラミング)で実現されているため、コードと設定ファイル(application.yml・XML)を併せて解析する必要があります。
旧式のEJB案件では、フレームワーク固有の知識を持つベンダーへの発注が必須です。フレームワーク情報は、RFP作成前に特定し、それを前提とした対応実績をベンダーに確認しておくとよいでしょう。
発注範囲と成果物要件の定義

解析対象と難読化の状況を把握したら、次は「どこまでを発注するか(スコープ)」と「何を成果物として受け取るか(成果物要件)」を決めます。この定義が曖昧なまま発注すると、ベンダー間で見積もりを比べられないうえ、受け取った成果物が想定とまったく異なることがあります。
仕様書復元レベルの定義
成果物の粒度は、3段階に分けて定義するとよいでしょう。第1段階の「フローチャートレベル」は、システム全体の処理フローとデータの流れを図示したものです。費用の目安は、基本料金30万円(4,000行まで)程度が相場です。
第2段階の「業務仕様書レベル」は、画面遷移図、DB設計概要、主要な業務ロジックの説明文を含みます。API連携システムであれば、外部I/Oの項目リスト化を含めて50万円前後が目安です。第3段階の「詳細設計書レベル」は、新システム開発に直接使えるシーケンス図・クラス図・DB詳細設計を含み、在庫予約システム規模で80万円前後が目安です。
JD-GUIやProcyonで逆コンパイルしても、@Autowiredや@Transactionalで組まれた業務ロジックの「意図(Why)」は復元できません。たとえば、「在庫引当の優先順位計算が複雑な条件分岐で、なぜその順序なのか」は、コードを読むだけでは判断できません。そのため、成果物要件に「業務ロジックの背景説明(Why)を含むこと」と明記し、ベンダーに業務部門へのヒアリングを義務付けます。
モダナイゼーション(Spring Boot移行)との組み合わせ
EJB・Struts製のシステムをSpring Bootへ移行する案件は、リバースエンジニアリングとリファクタリングが組み合わさった複合案件になりやすく、発注範囲の定義を特に丁寧に行う必要があります。リバースエンジニアリング(現行システムの解析と仕様書復元)と移行(Spring Bootへの設計・実装)を一体で発注するか、フェーズを分けて発注するかで、費用構造とリスク管理の方法が大きく変わります。
一体発注は、解析チームとモダナイゼーションチームが連携しやすく、仕様書の中間成果物を省略できるぶん、コストを抑えられる場合があります。一方、フェーズ分割発注では、リバースエンジニアリングの成果物(仕様書)を発注側でレビュー・承認してからモダナイゼーションに着手できます。そのため、「復元した仕様が間違ったまま移行してしまう」リスクを避けられます。
モダナイゼーション全体の相場は、リファクタリングで2億〜5億円、期間は12〜18ヶ月です。そのため、この規模の案件では、フェーズ分割によるリスク管理が推奨されます。Spring Bootへの移行を念頭に置く場合は、リバースエンジニアリングの成果物に「移行先アーキテクチャへのマッピング提案」を含めるよう、成果物要件に加えるとよいでしょう。
発注先の選定とRFP作成

準備が整ったら、発注先の選定とRFP(提案依頼書)の作成に進みます。Javaのリバースエンジニアリングは専門性の高い業務で、発注先の選び方を誤ると、見積もりが大きくずれたり、成果物の品質が下がったりします。
RFPの内容は、ベンダーからの提案品質を直接左右します。そのため、Java固有の記載事項を漏れなく盛り込むことが欠かせません。
Java系SIerとセキュリティ専門企業の使い分け
Javaのリバースエンジニアリングの発注先は、「Java系SIer」と「セキュリティ専門企業」に大別され、それぞれ得意分野が異なります。
- Java系SIer:業務システムの開発・保守実績が豊富で、EJBやStrutsに詳しいエンジニアが多く在籍しています。業務部門との連携が得意です。
- セキュリティ専門企業:静的解析・動的解析・脆弱性発見に特化し、マルウェア解析、OSSライセンス確認、クリーンルーム手法の法務運用に強みがあります。
使い分けの基準は、仕様書復元やモダナイゼーション支援、Spring Bootへの移行を見据えた複合案件ならJava系SIer、脆弱性診断やOSSライセンス整理、法的リスク管理ならセキュリティ専門企業が基本です。
ただし、難読化の解除など深いコード解析が必要な場合は、静的解析スキルを持つセキュリティ専門企業のほうが有利なことがあります。ProGuardの難読化解除を伴うAndroid APK解析は、モバイルセキュリティ専門企業に発注するのが適切で、手動診断(標準)の費用は50〜150万円が相場です。
複雑な案件では、セキュリティ専門企業に解析フェーズを、Java系SIerにモダナイゼーションフェーズを任せる分業も有効です。
RFPのJava固有記載事項
RFPには、解析の前提と成果物の条件を具体的に書き込みます。Java向けの記載事項として、次の5項目は必ず含めてください。
- 解析対象の詳細:Javaバージョン、フレームワーク、LOC推定値、難読化有無、マッピングファイルの保有状況、既存ドキュメントの状況を記載します。
- 解析の目的と成果物:期待する成果物の構成(フローチャート、業務仕様書、詳細設計書の区別)を明記します。
- 成果物の品質基準:変数名の意味付け、主要ロジックへのコメント付与方法、業務ルールの背景(Why)のドキュメント化方法を規定します。
- 費用の要因:LOC課金以外に費用が発生する要因(難読化解除、フレームワーク固有解析、業務部門ヒアリング設計)を一覧にし、見積もりの根拠を求めます。
- 機密性とセキュリティ要件:JARファイルの受け渡し方法、解析端末の管理、プロジェクト終了後のデータ消去手順を盛り込むと、情報管理体制を事前に評価できます。
特に重要なのは、LOCの計算方法をRFPで明示することです。逆コンパイル後と推定オリジナルでは行数が異なるため、どのツールで計測したLOCを基準とするかを明記すると、見積もりを公平に比べられます。たとえば、Springの案件では、設定ファイル(application.yml・XML)の解析を含めるか、AOPの動的な振る舞いを含む仕様書を作るかを示します。
契約・法的リスク管理
Javaのリバースエンジニアリングを外注する際は、技術面の準備と並行して、法的リスクの観点から契約を組み立てる必要があります。そのため、著作権法・不正競争防止法・EULAの3つの法的リスクに対応した契約条項を整えておけば、プロジェクト後の法的紛争を防げます。
NDA・クリーンルーム手法の条項
NDA(秘密保持契約)は、JARや.classファイルを外部ベンダーに渡す前に必ず締結します。契約では、解析コードの二次利用の禁止、解析端末の管理(専用端末の用意、インターネット接続の制限)、終了後のデータ消去手順を具体的に定めます。特に、AndroidアプリのAPK解析は、ソースコードに準ずる情報が復元されるため、情報漏洩リスクを踏まえた厳格なNDA設計が必要です。
クリーンルーム手法を採用する場合は、契約書に、解析チーム(Dirty Room)と開発チーム(Clean Room)の完全分離、仲介担当者(法務)の配置、仕様書のみによる情報伝達を明記します。この手法は、1980年代のフェニックス・テクノロジーズによるIBM BIOS互換開発で実証されており、日本の著作権法第30条の4(非享受目的での合法的な解析)の趣旨にも合致します。
「非享受目的」を立証するため、解析専用パソコンの用意と解析過程のレポート記録を契約上の義務として明記すると、後日の紛争で合法性を示す証跡が残ります。EULAのリバースエンジニアリング禁止条項は、互換性確保のためにリバースが不可欠な場合、独占禁止法上の拘束条件付取引として無効化される可能性があります。法務担当者と事前に確認しておくとよいでしょう。
OSSライセンスコンプライアンスの確認
Javaシステムには、Apache CommonsやLog4j、Hibernate、Spring FrameworkなどのOSSが混在しています。そのライセンス(Apache License 2.0・LGPL・MIT・EPLなど)は解析や成果物の扱いに影響するため、解析に入る前に、どのOSSを使っているかを把握しておく必要があります。
- 事前の確認:解析の前に、pom.xmlやbuild.gradleから依存ライブラリを抽出し、OSSライセンス台帳にまとめておくことをお勧めします。
- 結合時の頒布条件:LGPL(GNU Lesser General Public License)を含む場合は、結合したコードの頒布条件に注意が必要です。
- 移行先での利用:旧バージョンのLGPLライブラリを移行先でも使う場合は、ライセンス条件に従い、ソース開示や告知義務への対応が求められることがあります。
- 移行計画への反映:解析で見つけたOSSにCVE(脆弱性)があれば、その情報を成果物に含めてもらうと、移行計画に対応を組み込めます。
こうした確認は、解析の成果物をモダナイゼーション(Spring Boot移行)に活用する際にも欠かせません。法的リスク管理と品質管理の両面で役立つため、成果物要件に台帳の納品を含めることを検討してください。
プロジェクト推進の役割分担とよくあるトラブル
Javaのリバースエンジニアリングのプロジェクトは、ベンダーだけでなく発注側も動く案件です。発注側の業務部門・IT部門と外注ベンダーの3者が適切に役割分担して連携すると、品質と効率が大きく向上します。また、よくあるトラブルのパターンを事前に把握しておくことで、リスクを未然に防げます。
業務ロジックのWhy復元のための業務部門協力
コードが何をしているか(How)は分かっても、なぜその仕様なのか(Why)は分からないことが、リバースエンジニアリングの最大の限界です。そのため、Javaのコードから業務ロジックの意図を読み解くには、業務部門のドメインエキスパートの協力が欠かせません。たとえば、在庫引当の優先順位計算や顧客ランク別の割引ルールは、コードを見ただけでは業務上の意味を判断できません。
こうしたケースで業務部門のヒアリングなしに仕様書を確定すると、移行後のシステムでバグが多発するリスクが生じます。発注前に、業務部門の担当者(できれば運用に関わるキーパーソン)をプロジェクトメンバーに加え、ベンダーのヒアリングに応じる体制を整えてください。
ヒアリングは週1〜2時間程度が目安で、方法(対面・Web会議)や議事録、回答期限を事前に合意すると、後工程の追加ヒアリング費用を防げます。また、業務部門が解析に関わると、不要な機能(過去の遺物)の棚卸や、業務プロセスの改善機会の発見という副次効果も期待できます。WBSに業務部門のヒアリング工程を明示し、解析と並行してコミットメントを確保することが成功の鍵です。
ProGuard難読化解除の工数読み誤り対策
難読化解除の工数の読み誤りは、Javaリバースエンジニアリングで最も多い見積もりトラブルの一つです。難読化が入ったJARは業務ロジックをほぼ解読できないため、工数の見立てが外れやすくなります。ベンダーが難読化の程度を見誤ると、当初見積もりの2〜4倍の工数がかかることも珍しくなく、途中の追加費用要求につながります。
匿名クラス、ラムダ式、ジェネリクスが多いJavaは、逆コンパイル後にコードが膨らみ、発注時に「5,000行程度」とされた案件が10,000行以上になることもあります。このリスクを避けるため、次の3つの対策が欠かせません。
- パイロット解析:発注前にベンダーと協力し、対象の10〜20%を試験的に解析して、解析の難易度と工数見積もりの精度を確かめます。
- マッピングファイルの提供:保管しているmapping.txtは必ずベンダーに渡します。難読化されたシンボル名の復元に使えば、解析工数を大幅に削減できます。
- 契約での取り決め:LOC上限・超過時の追加費用の取り決めを、契約に明文化することが欠かせません。
特急対応(短納期化)は総額の20〜30%増、超特急(休日・深夜対応)は40〜60%増の割増が発生することも、念頭に置いておくとよいでしょう。
まとめ
Javaのリバースエンジニアリングを外注する際の成功の鍵は、発注側の事前準備の質にあります。対象JARの棚卸(難読化有無、フレームワーク種別、LOC推定)を丁寧に行い、仕様書復元レベルとモダナイゼーションとの組み合わせを決めてからRFPを作成すると、提案の品質と見積もり精度が高まります。
発注先は目的に応じてJava系SIerとセキュリティ専門企業を使い分け、RFPにはJava固有の記載事項(フレームワーク、難読化、成果物粒度、LOCの計算方法基準)を漏れなく盛り込みます。そのうえで、NDA・クリーンルーム手法の契約条項とOSSライセンスの確認を契約前に済ませれば、法的リスクを大幅に軽減できます。
プロジェクト推進中は、JD-GUIやProcyonで逆コンパイルしても業務ロジックの意図(Why)は復元できない前提で、業務部門のドメインエキスパートをWBSに組み込んでください。ProGuard難読化解除の工数読み誤りを防ぐため、パイロット解析の実施と契約上の追加費用の取り決めを事前に行うことで、途中のトラブルを最小化できます。
発注側の準備と体制設計が、Javaリバースエンジニアリングプロジェクトの成功を支えます。
▼全体ガイドの記事
・Javaのリバースエンジニアリングの完全ガイド
開発を相談する前に、次の無料ホワイトペーパーもご活用ください。
【2026年最新版】AI駆動開発の完全ガイドブックをご覧いただけます。
会社紹介
株式会社riplaでは、お客様の事業・ユーザー・業務に最適化したオーダーメイド型システムを、構想策定・要件定義から開発・改善まで一気通貫で支援。事業会社でIT・DXを経験したプロフェッショナルによる高い要件定義力・システム設計力を活かし、事業成果の最大化に伴走します。

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

もし、システム開発やプロダクト開発に関するご要望がございましたら、お気軽にお問い合わせください。
・サービス概要資料のURLはこちら >>>
・お問合せページのURLはこちら >>>
・お役立ち資料のURLはこちら >>>


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