Androidのリバースエンジニアリングの発注/外注/依頼/委託方法について

Androidのリバースエンジニアリングの外注は、発注前の準備、RFP(提案依頼書)の作成と契約、プロジェクト推進の順に進みます。

APK解析や難読化の解除は専門知識を要します。何も準備せずにベンダーへ任せると、スコープの齟齬や成果物の品質不足、法的リスクの見落としにつながりかねません。

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

発注前に発注側が準備すべき5項目

発注前の準備項目を中央から5方向に示す図。APKとソース資産、目的と成果物、業務部門、法的リスク、予算と納期を並べています。
5項目をそろえると、見積もり時の認識を合わせやすくなります。

Androidのリバースエンジニアリングの外注で成功するかどうかは、発注前の準備で7割が決まると言っても過言ではありません。準備が足りないまま発注すると、ベンダーとの認識がずれやすく、あとから追加費用や品質の問題が生じかねません。

発注前に、次のとおり準備を整えておくと、プロジェクトの成功確率を大きく高められます。

  1. 準備1:対象APKとソース資産の洗い出し
  2. 準備2:目的と成果物要件の明確化
  3. 準備3:業務部門を巻き込む体制の整備
  4. 準備4:著作権やEULAなどの法的リスクの整理
  5. 準備5:予算と納期の基準値の設定

準備1:対象APKとソース資産の棚卸

まず、解析対象のAPKファイルと、残っている場合はソースコードや設計書などの資産を洗い出します。洗い出す際は、APKのバージョンとビルド種別(デバッグかリリースか)、ProGuardなどの難読化ツールの適用有無を確認します。

さらに、対応するAndroid APIレベルの範囲とNDK(ネイティブコード)の使用有無を確認します。あわせて、ソースコードの量と、過去の設計書や仕様書が部分的にでも残っているかを押さえておきます。

ベンダーへの見積もり依頼の前に、NDAを結んだうえでAPKファイルを共有しておくと、ベンダーは難読化のレベルと解析の難しさを実際に確かめてから見積もりを出せます。一方で、APKを見ないままLOC単価で見積もると、実態と大きくずれるおそれがあります。そのため、可能な限りベンダーがAPKを事前に確認できる機会を設けることが大切です。

準備2:目的と成果物要件の明確化

解析の目的は、セキュリティ診断、仕様書の復元、モダナイゼーションの前段のどれに当たるかで整理します。たとえば、競合調査(自社開発アプリの品質基準として)やカスタムROM解析も、目的のカテゴリに含まれます。

目的が決まると、求める成果物の粒度も自然に定まります。そこで、発注側がフローチャート、業務仕様書、詳細設計書のどのレベルを求めるかを明示すると、ベンダーは適切な見積もりを出せます。

成果物の要件で特に大切なのは、「保守性」の基準です。ProGuardで難読化されたクラス名や変数名を業務上の意味が分かる名称に置き換えるリネーミングの有無と、業務ロジックの背景(Why:なぜこの仕様なのか)を文書化するかどうかを、明示してください。これらを契約書の成果物要件に盛り込んでおけば、「コードは読めたが意味が分からないまま」という最悪のケースを防げます。

準備3:業務部門の巻き込み体制の構築

Androidのリバースエンジニアリングで見落とされがちな準備は、業務部門の巻き込みです。APK解析で解明できるのは「コードがどう動くか(How)」までで、「なぜその業務ルールになっているか(Why)」は、元の担当者や業務ユーザーへのヒアリングなしには分かりません。

特に仕様書復元を目的とする場合は、解析で立てた仮説を業務部門に確かめてもらう場が欠かせません。そこで、プロジェクト開始前に業務部門の窓口担当者を決め、ヒアリングの頻度や形式、対応できる時間帯を確認しておきます。こうしておけば、ベンダーとのスケジュール調整も円滑に進みます。

プロジェクトマネジャーは、業務部門・IT部門・ベンダーの三者を調整する役割を担います。そのため、発注側の社内PMを任命しておくと、プロジェクトの推進力を確保しやすくなります。

発注前に、解析の法的な扱いについて法務担当者と確認しておきます。確かめるのは、解析対象のAPKが自社の著作物かどうかと、解析目的が著作権法第30条の4に定める「非享受目的」に当たるかどうかです。さらに、EULAに「リバースエンジニアリング禁止」条項が含まれているか、Google Play Storeのポリシーに抵触しないかも確かめます。

ただし、他社アプリを解析対象とする場合は、法的根拠の整理が欠かせません。Play Storeポリシーは「他のアプリの解析・改変」を明示的に制限しており、競合アプリを対象とした解析は法的リスクが高くなります。

一方で、「自社アプリのセキュリティ診断」は合法的な範囲として明確に認められています。平成30年の著作権法改正後は、セキュリティ調査目的の解析が原則として合法化されています。加えて、解析目的を文書にまとめ、解析専用の端末や環境を用意しておけば、「非享受目的」を立証する準備になります。

準備5:予算と納期の実績ベースラインの設定

発注前に、予算の上限と納期の制約を現実的な数値で決めておきます。前章で触れたとおり、費用はセキュリティ診断で10〜250万円、仕様書復元で30〜300万円以上と幅があります。そのため、目的や成果物の粒度、難読化のレベルを踏まえて、概算予算を事前に算出しておく必要があります。

予算の上限を示したうえでベンダーに見積もりを依頼すると、予算内で実現できるスコープを提案してもらえます。また、納期は通常の工期(特急料金なし)の目安を把握してから、余裕を持った日程を組むのが費用を無駄なく抑える基本です。

特に中〜大規模のAndroidアプリの仕様書復元では、業務部門へのヒアリング期間も含めて3〜6ヶ月の工期を見込むのが現実的です。

ポイント

目的と成果物の範囲が決まらないまま見積もりを依頼すると、ベンダーの提案がずれやすくなります。迷ったら、まずこの二つを決めてから発注に進みます。

発注の進め方:RFP作成から契約締結までの流れ

Android固有のRFP記載項目を4枚のパネルで示す図。APK情報、解析手法、成果物仕様、法的コンプライアンスを並べています。
4つの観点を同じ粒度で記載すると、提案内容を見比べやすくなります。

準備が整ったら、RFP(提案依頼書)を作り、ベンダーに見積もりと提案を依頼します。Androidのリバースエンジニアリングに固有の項目を盛り込んだRFPを作ることが、適切な提案を引き出す鍵になります。

RFPに含めるべきAndroid固有の項目

一般的なRFPに加えて、Android固有の項目も必ず含めてください。まず、「解析対象APKの情報」として、APKのファイルサイズや推定コード行数、対応するAndroid APIレベルを記載します。加えて、DEXファイルの数(マルチDEXの有無)、ProGuardや商用難読化ツールの適用有無、NDKコードの有無も書きます。

次に「解析手法の明示要求」として、使用する逆コンパイラ(jadx/Procyon/CFR等)と静的解析ツールの仕様を、提案書に明示するよう求めます。動的解析ツール(Frida等)とネットワーク解析ツール(Burp Suite等)の仕様も、提案書で示してもらいます。

「成果物の詳細仕様」には、ドキュメント形式(Word/Excel/PlantUML等)と、難読化解除後の変数名リネーミングの実施有無を記載します。さらに、業務ロジックのWhyを含むコメントの可否と、成果物の保守性評価の方法も書きます。また、「法的コンプライアンス」では、クリーンルーム手法の運用体制、解析専用環境、レポート記録方法の説明を求めます。

NDA・クリーンルーム手法の契約条項

契約の前に、必ずNDA(秘密保持契約)を締結します。リリース前のAndroidアプリや脆弱性情報を含む解析結果は機密性が高いため、解析で知り得た情報をベンダーがどう扱うかを、契約書に定めておく必要があります。具体的には、保管方法、閲覧権限、プロジェクト終了後の廃棄方法です。

クリーンルーム手法を採用する場合は、解析チームと開発チームを分け、法務担当者を配置します。さらに、仕様書から著作権の保護対象となる表現が除かれていることを確かめるプロセスを、契約条項として明記します。

この手法は、1980年代のフェニックス・テクノロジーズ対IBM BIOS訴訟で確立されたものです。解析チーム(Dirty Room)が作った仕様書を法務・仲介担当者がレビューし、著作権の保護対象となる「表現」は除いて、「機能・アルゴリズム」だけを抽出することで、著作権侵害を避けます。契約書にこのプロセスを明文化しておけば、将来の法的紛争に備えられます。

ポイント

RFPでは、一般的な項目に加えて、APKの情報、解析手法、成果物、法的な確認が書かれているかを見ると、ベンダーの提案を比べやすくなります。

プロジェクト推進時の役割分担:業務部門×IT部門×ベンダー

プロジェクト推進を担う業務部門、IT部門、ベンダーを三層に分けて示す図です。
三者の担当範囲を分けると、確認先と調整役が見えやすくなります。

Androidのリバースエンジニアリングは、技術作業だけで完結せず、業務部門・IT部門・ベンダーの三者が協力する複合プロジェクトです。そのため、役割分担を明確にしておくことが、スムーズな推進の土台になります。

三者の役割と責任範囲の標準的な定義

業務部門の主な役割は、ヒアリングへの対応、業務ロジックの確認、解析結果のレビューです。ベンダーが解析から「このロジックはこういう業務目的と推定される」と仮説を立て、業務部門がそれを確かめることで、仕様書の精度が高まります。特に、「このバリデーションはなぜこのルールなのか」「このAPIコールはどの業務プロセスに対応するのか」という問いには、業務部門だけが答えられます。

IT部門(発注側)は、プロジェクト全体のスケジュール管理と、ベンダーと業務部門の調整を担います。加えて、成果物の技術的レビューと、APKファイルの受け渡しや成果物の保管といった情報セキュリティの管理も担当します。ベンダーは、APK解析や静的・動的解析を行い、Design Recoveryと成果物の作成、進捗報告を受け持ちます。

この三者が週次または隔週でレビュー会議を開き、解析の進捗と課題を共有する体制が、最も効率的です。

WBS(作業分解構造)テンプレートと進捗管理の実践

Androidのリバースエンジニアリングの典型的なWBSは、4つのフェーズで組み立てます。フェーズ1は環境準備とAPKの事前評価で1〜2週間、フェーズ2は静的解析と動的解析で2〜4週間です。フェーズ2の期間は、難読化のレベルと規模によって変わります。

フェーズ3はDesign Recoveryと業務部門へのヒアリングで2〜6週間、フェーズ4は成果物作成、レビュー、修正で2〜4週間が標準的です。各フェーズの完了時点でマイルストーンレビューを行うことを契約書に明記しておくと、途中で方向を修正しやすくなります。

進捗管理には、BacklogやJiraといったプロジェクト管理ツールを共有し、ベンダーが解析済みの機能と未解析の機能、課題をリアルタイムで更新できる環境を整えることが推奨されます。さらに、週次報告書のフォーマットも事前に合意しておけば、報告書の質がばらつくリスクを抑えられます。

ポイント

業務ロジックの意味は業務部門が、スケジュールと調整はIT部門が、解析と成果物の作成はベンダーが担うのが基本です。役割が重なったときは、この線に戻って判断するとよいです。

よくあるトラブルと回避策:Androidリバースエンジニアリング特有の問題

Androidのリバースエンジニアリングでは、Android固有の技術的課題と外注に共通する運用の課題が重なり、特有のトラブルが起きやすくなっています。よく起きる問題は、LOC見積もりの齟齬、成果物の保守性不足、スコープクリープの三つで、いずれも契約の段階から対策できます。

トラブル1:LOC見積もりの齟齬と費用オーバー

最も多いトラブルは、LOC(コード行数)ベースの見積もりで実際の費用が大きく膨らむケースです。難読化されたAndroidアプリでは、逆コンパイル後のコード量が元のソースコードより増えることがあります。

また、ProGuardを適用したアプリの変数名やクラス名を、意味のある名称に置き換えるリネーミング作業が見積もりに入っておらず、あとから追加費用が生じるケースも少なくありません。

回避策として、LOCで見積もるベンダーには、事前にAPKを確認したうえで、難読化調整係数(難読化なし:1.0×、ProGuard標準:1.2×、DexGuard:1.5×など)を見積もりに明示させます。LOCに代えて、機能・画面数ベースの固定費用や、時間単価×工数上限の形で契約する方法も、費用の上限を明確にするうえで有効です。

トラブル2:成果物の保守性不足と業務ルール欠損

「解析は完了したが、納品された仕様書が実際には使えない」というトラブルは、仕様書復元のプロジェクトで頻発します。代表的なケースは三つあります。

一つ目は、ProGuardで難読化されたクラス名(a、b、cなど)が意味不明なままのフローチャートが納品される場合です。二つ目は、業務部門へのヒアリングを行わず、技術的なロジックだけを書いた仕様書が納品される場合です。三つ目は、特定条件での例外処理の背景など、コードからは読み取れない業務ルールが抜けたままになる場合です。

回避策として、契約書の成果物定義に、具体的な品質基準を明記します。基準には、変数名とクラス名を業務上の意味のある名称にすること、ヒアリングに基づいてWhyを仕様書に含めること、若手エンジニアが保守できる可読性を確保することが入ります。さらに、納品前に発注側がサンプル箇所を確認する中間レビューを、契約に組み込むのも有効です。

トラブル3:スコープクリープと追加費用の発生

解析が進むにつれて「この機能も解析してほしい」という追加要望が出てくることを、スコープクリープと呼びます。外注プロジェクト全般で起きやすい問題です。

特にAndroidアプリは、機能どうしの依存関係が複雑になりがちです。そのため、一つの機能を深く解析すると、隣接する機能も解析しないと全体像がつかめない状況が生まれやすく、スコープが際限なく広がるおそれがあります。

回避策として、契約書に初期スコープを明記します。解析する機能の一覧(インスコープリスト)と、解析しない機能の一覧(アウトオブスコープリスト)の両方を含めます。さらに、追加解析が必要になった場合は、変更要求書の提出を求め、追加費用の承認とスケジュール調整を行う流れを事前に決めておけば、追加費用が生じても迅速かつ透明に判断できます。

ポイント

三つのトラブルは、いずれも契約段階で対策を書き込めます。見積もりや成果物の定義に、その対策が入っているかを見ておくとよいです。

まとめ

外注を成功させるには、発注前の五つの準備を整えておくことが欠かせません。APKの棚卸と目的の明確化、成果物要件の定義を進めるとともに、業務部門の巻き込みと法的リスクの整理も行います。

RFPには、難読化レベルや使用ツール、変数名リネーミングの要否といったAndroid固有の項目を明記します。NDAとクリーンルーム手法に関する契約条項も設定すると、法的・品質面のリスクを大きく減らせます。

プロジェクト推進では、業務部門・IT部門・ベンダーの三者が明確な役割分担のもとで週次レビューを行います。そのうえで、WBSに基づいてマイルストーンを管理することが成功の鍵です。

LOC見積もりの齟齬、成果物の保守性不足、スコープクリープという三つのトラブルは、契約段階から対策を組み込んでおくことで、発注後のトラブルを防ぎやすくなります。正しい準備と運用により、Androidリバースエンジニアリングのプロジェクトから最大限の価値を引き出せます。

会社紹介

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

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

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

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

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

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