リバースエンジニアリングのPoC・プロトタイプ・モックアップ開発について

リバースエンジニアリングは、いきなり全面解析に入らず、PoCやモックアップで技術と成果物を先に確かめてから本格着手するのが基本です。

  • リバースエンジニアリングの定義
  • PoC・プロトタイプの進め方
  • 仕様書モックアップ試作という手法

仕様書のないレガシーシステムでは、いきなり全面解析に着手すると大きなリスクを伴います。「まずは小さく試してから決めたい」という方に向けて、全体像は次の記事で解説しています。

▼全体ガイドの記事
・リバースエンジニアリングの完全ガイド

リバースエンジニアリングの定義と、PoCから始める理由

PoCで技術検証、合意形成、技術的なリスクを確認する3つのパネル図
解析前に確かめる論点を役割とリスクに分けています。

リバースエンジニアリングは、ソースコードや実行バイナリから設計情報や業務ロジックを逆方向に復元する技術です。刷新・移行プロジェクトに着手する前段の、現状分析・調査工程として位置づけられます。

ただし、この調査工程そのものが、対象システムの規模や難読化の有無によっては数ヶ月から1年以上の期間、数百万円規模の費用を要することもあります。そこで、いきなり本格的な全面解析に踏み切る前に、対象システムの一部を使った小規模なPoC(Proof of Concept:概念実証)を行い、本格着手の前にリスクを見極めます。

いきなり全面解析に踏み切るリスク

対象システム全体を一度に解析すると、想定していなかった難読化やホスト固有の仕様が途中で発覚し、当初の見積もりを大きく超えるおそれがあります。また、解析ツールの精度が対象システムの技術構成にどこまで通用するかは、実際に一部を解析してみなければ分からない部分も多くあります。

さらに、発注側と受注側では「仕様書」という言葉のイメージが食い違うことも多くあります。フローチャートレベルを期待していたのに詳細設計書レベルの成果物が納品された(あるいはその逆)という形のミスマッチも、典型的な失敗パターンです。

PoCは、こうした技術的なリスクと認識のズレを、小さな投資で事前に洗い出すための工程です。

PoCが果たす2つの役割(技術検証と合意形成)

リバースエンジニアリングのPoCには、大きく分けて2つの役割があります。1つ目は「技術検証」で、選んだ解析ツールが対象の言語やプラットフォームでどの程度の精度で動くか、難読化や特殊な仕様にどこまで対応できるかを、実際のコードの一部を使って確かめます。

2つ目は「合意形成」です。成果物のサンプルを実際に見ることで、発注側と受注側が「どこまで復元できれば十分か」というゴールのイメージを合わせられます。

この2つの役割を意識してPoCを設計すると、本格解析の段階での手戻りやトラブルを大幅に減らせます。

ポイント

対象の全体を解析する前に、一部でPoCを行うべきかどうかが判断の目安です。全面解析で見積もりを大きく超えるおそれがあるなら、PoCから始める理由は十分にあります。

PoC・プロトタイプの進め方

パイロットモジュールの選定基準である代表性、独立性、業務的な重要性を並べたチェックリスト図
3つの観点をそろえて対象モジュールを見定めます。

PoCを効果的に進めるには、対象範囲の選び方と、ツールの検証方法を事前に決めておくことが欠かせません。

パイロットモジュールの選定基準

PoCの対象とするパイロットモジュールは、明確な基準を持って選ぶことが重要です。1つ目は「代表性」で、言語やフレームワーク、難読化の有無といった対象システム全体の技術的な特徴を表す、典型的なモジュールを選びます。

2つ目は「独立性」で、他の機能への依存が少なく、単体で解析結果を評価しやすいモジュールを選ぶと、検証結果を解釈しやすくなります。3つ目は「業務的な重要性」で、今後のモダナイゼーション計画で優先度が高いと想定される機能を選んでおくと、PoCの成果物をそのまま本格解析の一部として活用できる場合もあります。

パイロットとして選ばれるのは、多くの場合、数ファイルから十数ファイル程度、数百行から数千行規模のモジュールです。

解析ツールの精度検証

PoCの中核となるのが、解析ツールの精度検証です。無料で利用できるGhidra(NSA開発のオープンソースツール)はチーム協調解析に適しており、まずはここから検証を始めるケースが多く見られます。

逆コンパイラの品質を重視する場合はIDA ProやBinary Ninja、大規模なコードベースの可視化やアーキテクチャ分析まで評価したい場合はCAST Imagingといった専門ツールを使います。いずれも体験版・トライアル環境で検証します。

動的解析まで含める場合は、x64dbgなどのデバッガで実際の実行トレースをどこまで追跡できるかも確かめます。そのうえで、パイロットモジュールに対して解析ツールを実際に適用し、逆コンパイル結果の可読性や制御フローの復元精度、変数名の消失度合いを評価することで、本格解析の期間・費用の見積もり精度を高められます。

ポイント

パイロットは、代表性と独立性を基準に選ぶと迷いにくくなります。ツールの精度は、逆コンパイル結果の可読性や制御フローの復元精度を見て判断します。

仕様書モックアップ試作という手法

フローチャートレベル、業務仕様書レベル、詳細設計書レベルの成果物粒度を積み重ねて示す図
目的に合わせて確認する成果物の細かさが変わります。

技術検証と並行して、成果物のイメージを合わせるための「仕様書モックアップ」を試作することが大切です。

成果物イメージを事前にすり合わせる目的

「仕様書を復元します」という言葉だけでは、発注側と受注側でイメージが一致しないことがよくあります。そこで、パイロットモジュールの仕様書モックアップ(試作版)を実際に作ってもらい、粒度・記法・図表の使い方といった成果物の実物を発注前に確かめます。

この確認を怠ると、本格解析が完了した後に「想定していた詳細度と違った」というトラブルに発展し、追加の解析工数と費用が発生するリスクがあります。モックアップの段階で、「変数名をどの程度まで意味のある名称に復元できるか」「業務ロジックの背景(Why)をどう文書化するか」まで具体的にすり合わせておくと、後工程のトラブルを防げます。

フローチャート/業務仕様書/詳細設計書のサンプル比較

成果物の粒度は大きく3段階に分けられます。フローチャートレベルは処理の大まかな流れとシステム間の連携を図示したもので、保守担当者の引き継ぎや現状把握が目的の場合に十分です。

業務仕様書レベルは、各機能の処理内容・入出力項目・業務ルール・エラー処理まで文書化したもので、モダナイゼーション計画の策定やRFP作成に必要な情報を含みます。一方で、詳細設計書レベルは画面遷移図・DB設計・インターフェース仕様まで含む最も詳細な成果物で、新システムの開発会社にそのまま渡せる情報量です。

PoCの段階でこの3段階のサンプルを実際に見比べ、自社の目的にはどの粒度が適切かを判断しておくと、本格発注時のスコープのズレを防げます。

ポイント

成果物の粒度は、保守の引き継ぎ、RFP作成、開発会社への受け渡しのどれを目的にするかで決まります。迷うときは、パイロットのモックアップを3段階で見比べて選びます。

PoCの期間・費用感

PoCは本格解析に比べて小規模に設計されるため、期間も費用も抑えられます。ただし、目的を達成できる最小限の規模を見極めることが重要です。

期間の目安

パイロットモジュールの規模にもよりますが、PoCの期間はおおむね1〜2週間程度が目安です。これは、本格解析の第1フェーズにあたる「準備・スコープ確定」とほぼ同じ期間感です。そのため、PoCをこの準備フェーズと一体で設計すると、無駄なく本格着手へ移れるケースもあります。

対象言語がCOBOLやPL/Iのようなレガシー言語で、ホスト固有仕様への対応検証も含める場合は、2〜3週間程度を見込んでおくとよいでしょう。難読化の有無を確認する検証まで含める場合は、さらに数日〜1週間程度の余裕を持たせることをお勧めします。

費用の目安と本格解析費用への充当

PoCの費用は、パイロットモジュールの規模がLOC課金の基本料金レンジ(4,000行程度まで)に収まる場合、数万円〜数十万円程度で実施できることが多くなります。また、ベンダーによっては、PoCで実施した解析結果を本格解析の一部として引き継ぎ、本格発注時の費用から充当してもらえるケースもあります。

発注前の提案段階で、PoC費用が本格解析の見積もりに充当できるかどうかを確認しておくと、本格着手までの費用を見通しやすくなります。

なお、PoCをあまりに小規模に絞りすぎると、レガシー言語特有の複雑さやホスト固有仕様が検証範囲に含まれず、本格解析での見積もり精度が上がらないこともあります。代表性のあるモジュールの選定と、PoCの規模とのバランスを取る必要があります。

ポイント

PoCの期間は1〜2週間が目安で、レガシー言語やホスト固有仕様、難読化の検証を含めるなら、その分の余裕を見込みます。費用は、LOC課金の基本料金レンジに収まる規模かを目安にします。

PoC後の意思決定(Go/No-Go判断)

PoCの結果は、本格着手の可否を判断する材料になります。

本格着手の判断基準

本格着手の判断では、まず、解析ツールがパイロットモジュールに対して実用的な精度で動いたかを確認します。具体的には、逆コンパイル結果が業務ロジックの理解に耐えうる可読性を持っていたかを見ます。次に、モックアップとして示された成果物の粒度と品質が、自社の目的に合っていたかを評価します。

さらに、PoCで判明した工数実績をもとに、対象システム全体に換算した期間・費用が予算感から離れていないかを確かめます。これらの検証項目をチェックリストにしておくと、PoC完了後の意思決定を円滑に進められます。

フルスクラッチ切替を検討すべきケース

PoCの結果、解析ツールの復元精度が著しく低く、手作業でも業務ロジックの意図をほとんど読み解けないと分かった場合は、無理に続けず、要件定義からやり直すフルスクラッチ開発への切り替えを検討すべきサインです。パイロットモジュールの業務ロジックの大半がすでに使われなくなった古い仕様だと分かった場合も、同じサインになります。

また、PoCは、リバースを続ける価値があるかどうかを早期に見極めるセーフティネットとしても機能します。判断に迷う場合は、パイロットモジュールで確認できた業務ロジックのうち、新システムでも必要と判断できる機能の割合を試算し、次の意思決定の材料とすることをお勧めします。

ポイント

PoCの結果で、解析精度・成果物の粒度・期間と費用の3点が見通せるかが目安です。見通せない場合は、フルスクラッチ開発への切り替えも候補になります。

まとめ

PoCでは、技術検証と合意形成という2つの役割を意識することが大切です。そのうえで、パイロットモジュールの選定、解析ツールの精度検証、仕様書モックアップによるすり合わせ、期間と費用の目安、本格着手の判断を押さえておきます。

レガシーシステムでは、まず1〜2週間程度の小規模なPoCで、技術的な実現可能性と成果物のイメージを確かめます。そうすることで、後工程の手戻りやトラブルを大幅に減らせます。

PoCで得られた工数実績と成果物サンプルは、本格解析の見積もり精度を高めます。さらに、リバースエンジニアリングを続けるか、フルスクラッチ開発に切り替えるかを判断する材料にもなります。

対象言語の解析実績があるパートナーと一緒に、まずは小さく試すところから始めることをお勧めします。

▼全体ガイドの記事
・リバースエンジニアリングの完全ガイド

会社紹介

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

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

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

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

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

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