ForgeHelm › ドキュメントのないシステムを引き継ぐ

ドキュメントのないシステムを引き継ぐ

書いた人はもういません。どこを直すと何が壊れるのか、誰も断言できない状態です。勘に頼るより、まず一度スキャンして、何が入っていて、何が何を呼び、どこにリスクがあるかを可視化しましょう。

4 つの状況、同じ問題

🚪

自社で作り、担当者が辞めた

情報システム部門が自ら開発・保守してきたシステムで、書いた担当者は数年前に退職。引き継ぎ資料は 1 本だけ。項目を 1 つ変えるにも、ほかが壊れないと言い切れる人がいません。

📦

外注で作り、ベンダーとの取引は終了

当時委託して構築したシステムで、検収と同時に案件は終了。元のベンダーは担当が替わったか、もう受けてくれません。手元にはソース一式だけで、中身は分かりません。

🤝

顧客からシステムの保守を任された

コンサルタントや開発会社が顧客の既存システムを引き継ぐケースです。見積もりの前に「直せるのか、どれくらいかかるのか」を答える必要があるのに、人手でコードを読むしかありません。

📑

入札で前任者のシステムを引き継いだ

落札後に前の事業者が作ったシステムを引き継ぐ場合、引き継ぎも検収も根拠を示す必要があります。経験談だけでは顧客は押印してくれません。

スキャンした初日に手元に残るもの

「リスクは高めです」という一言ではなく、会議に持ち込めて、ファイルを指させるものです。

🗺️

このシステムの全体像

クラス図、パッケージ図、コンポーネント図、呼び出しグラフ、依存グラフ、データフロー図、シーケンス図、配置図——合計 20 種類のアーキテクチャ図をコードから直接生成します。役割(システム分析、システム設計、開発、データベース管理、画面設計、プロジェクト管理、コンプライアンス、経営層の 9 種類)で絞り込めるので、一度にすべてを見る必要はありません。

📍

どこに問題があり、何行目か

31 のフレームワークを同時に照合し、指摘事項は具体的なファイルと行番号を示してリスク順に並びます。この一覧が工数見積もりと優先順位付けの根拠になります。

🧾

どのライブラリを使い、地雷はないか

SBOM がすべての依存ライブラリ、ライセンス条項、既知の脆弱性を一覧化します(CycloneDX と SPDX の 2 形式)。ライセンス上の問題や保守終了のライブラリは、引き継ぐ前に把握できます。

🎯

全体の健全性と、推定値がどれかの明示

8 軸リスク指紋:セキュリティ態勢はスキャンによる実測値です。ドキュメント、テスト、依存関係、技術的負債の 4 軸は現時点ではシステム既定の推定値で、図表に(推定)と表示し、リスク検出としても扱いません。隠すより明示するほうがよいと考えています。

🧑‍💻

人に関わる側面

リスク評価アンケートが、スキャンでは見えない部分を補います。システム引き継ぎ、要件トレーサビリティ、変更予測、検収基準、コミュニケーションコストの 5 側面。スコアは回答から算出され、コードスキャンによるものではありません。

レポートと成果物の所有権はお客様に帰属します。引き継ぎ、検収、見積もりの添付資料として、顧客や上長にそのまま提出できます。

解析できる範囲

たいてい最初に訊かれることなので、はっきり書いておきます。解析は二層に分かれます。.NET ファミリーは構文木に加えてコンプライアンスとセキュリティの規則も実行します。他の 62 の技術ファミリーは構文解析と呼び出し関係までで、それらの規則は実行しません。

深い解析(構文木レベル)

C#、VB.NET、ASP.NET WebForms(.aspx とコードビハインド)。クラスの継承と依存関係、API エンドポイント、データフロー、業務ロジック、エラー処理をこの層で解析します。

コンプライアンス規則がスキャンするファイル

.cs、.vb、.aspx、.sql、.config、.json、.xml、.yml、.yaml、.ps1、.sh、.tf、および .md と .txt のドキュメント。従来の 24 の枠組みの指摘一覧は、これらのファイルから抽出されます。AI ガバナンスの 7 つは、対応するすべての言語で AI を使っている箇所を別に見ます。.cbl、.pas、.pbl、.prg、.abap といった拡張子は対象外なので、古い言語のソースに埋め込まれたパスワードや SQL インジェクションのパターンは指摘一覧には出てきません。その層が見るのは構造と呼び出し関係です。

構文解析と呼び出し関係(62 の技術ファミリー)

Java、Python 2/3、PHP 5/7/8、Go、Rust、C++、SAP ABAP、PowerBuilder、VB6、COBOL(85/2002/IBM/Micro Focus/GnuCOBOL)、Delphi、FoxPro、Fortran、Pro*C、クラシック ASP(VBScript/JScript)、AngularJS、jQuery、Ember、TypeScript、CoffeeScript、Blazor、Flutter、MAUI、Xamarin、Flash/Flex、Silverlight、およびソースのない .NET DLL(逆コンパイル後に棚卸し)。この層はファイル数を数えるだけではありません。プログラム、クラス、手続きを抽出し、何が何を呼ぶかの呼び出しグラフを構築し、各ルーチンの条件分岐・ループ・例外処理の数を記録し、動的呼び出し箇所——呼び先が実行時にしか決まらない場所で、移行でいちばん見落とされるところ——を洗い出します。COBOL ではさらに copybook を展開し(REPLACING を含む)、方言を判別します。これらの結果は .NET 層と同じ一覧に統合されるため、構成図や影響範囲の分析にも含まれます。

コードの取り込み方法

Git リポジトリの URL(GitHub、GitLab、Bitbucket、Azure DevOps、Gitea など。社内に自前構築した Git サーバーは設定で許可する必要があります)、または ZIP の直接アップロード(1 回あたり上限 2 GB)。CI もプルリクエストの運用もなくて構いません——フォルダーを ZIP にすればスキャンできます。

この層は分析エンジン(Agent)のホストに Python が必要です。技術ファミリーごとに個別に有効・無効を切り替えられます。

現時点で未対応のもの

TFVC と SVN への直接接続(ZIP アップロードで代替できます)、Oracle PL/SQL パッケージ、Excel VBA マクロ、PLC および OT コントローラーのプログラム。スキャンの途中で気づくより、先にお伝えします。

古い技術を置き換える場合

技術スタック移行モジュールは、まず評価から始まります。このシステムが現在何を使っているか、移行を何段階に分けるか、各段階でどのファイルに手を入れるか。自動変換(Codemod)は現在 .NET が中心で、WebForms → Razor、EF6 → EF Core、.NET Framework → .NET 9 などに対応します。その他の言語には評価と移行前後のコンプライアンス比較を提供し、変換自体はお客様のチームが実施します。

  • 移行前後のコンプライアンス状態を並べて比較——アップグレードで安全性を下げていないことの裏付けになります
  • 各段階の成果物はドキュメントセンターに残り、ダウンロードも遡及確認も可能です
  • 変換結果はそのままプルリクエストとして作成できます(GitHub、GitLab、Bitbucket、Azure DevOps、Gitea)

まず 1 プロジェクトをスキャンしてみる

無料プランはずっと無料です。1 席、月 3 回の分析、完全な報告書とスコアのオンライン閲覧。オンラインのセルフ登録はまだ開放していないため、実際の結果をご覧になりたい場合はまずお問い合わせください。コードを社外に出せない場合は、自社環境で動かす方法をご相談ください。