ソース・仕様書のないシステム引き継ぎの知識マップ(知識グラフ)
type: Dataset
description: ソースコードも仕様書もない業務システムを引き継いだ場合、最初にすべきは改修ではなく現状の保全で、Disk2vhdによるディスクイメージ化とVSSを使ったバックアップを取得し、復元できることまで確かめる。次に実行ファイル・自動起動・スケジュールタスクなどをAutorunsやProcess Monitorで棚卸しし、業務利用者へのヒアリングや実挙動の観測から仕様を復元していく。中身の復元可能性は技術スタック次第で、通常のIL形式の.NETアセンブリはILSpyでかなり読める一方、Native AOT発行やVB6は逆コンパイルによる復元が現実的でなく、著作権法第30条の4や使用許諾契約の解析禁止条項も事前に確認する必要がある。中身の分からないシステムの調査は準委任契約で進め、仕様が固まった個別改修だけ請負に切り替えるのが健全な進め方である。

ソースコード・仕様書がないシステムの引き継ぎ
type: Concept
definition: 開発した会社や担当者と連絡が取れず、ソースコードも仕様書も残っていない業務システムを、動いている状態のまま引き継いで運用・保守を続けること。
alternative label: レガシーシステムの引き継ぎ
alternative label: ブラックボックス化したシステムの保守
requires: 現状の保全
requires: 構成要素の棚卸し
requires: 仕様の復元

現状の保全
type: Concept
definition: 改修に着手する前に、動いている本番環境とデータベースをバックアップし、復元できることまで確認する最初の工程。
alternative label: 環境の保全
should precede: 構成要素の棚卸し

仕様の復元
type: Concept
definition: 仕様書がない状態で、ヒアリング・画面や帳票・データベーススキーマ・ログ・実挙動の観測から、システムの仕様を後から組み立てる作業。
alternative label: 仕様復元
uses: 業務利用者へのヒアリング
uses: Process Monitor(procmon.exe)

Disk2vhd
type: Concept
definition: 稼働中のシステムをオンラインのままボリュームシャドウコピーサービス(VSS)で一貫性のある時点のVHD/VHDXへ変換するSysinternalsのツール。
alternative label: Disk2vhd (Sysinternals)
uses: VSS(ボリュームシャドウコピーサービス)

VSS(ボリュームシャドウコピーサービス)
type: Concept
definition: 稼働中のボリュームについて、ある時点で一貫性のあるスナップショットを取得するWindowsの仕組み。
alternative label: Volume Shadow Copy Service

構成要素の棚卸し
type: Concept
definition: 実行ファイル・自動起動・スケジュールタスク・設定・連携先・アカウントなど、システムを構成する要素を機械的に洗い出して一覧化する作業。
alternative label: 棚卸し
should precede: 仕様の復元

Autoruns
type: Concept
definition: スタートアップ・サービス・スケジュールタスクなど、Windowsの自動起動ポイントに登録されたプログラムを網羅的に一覧表示できるSysinternalsのツール。
alternative label: Autoruns for Windows (Sysinternals)

Process Monitor(procmon.exe)
type: Concept
definition: ファイルI/O・レジストリ・プロセス/スレッド活動をリアルタイムに監視できるSysinternalsのツール。Advanced Outputを有効にすると、IRPやファストI/Oのカーネル側の語彙で操作を表示する。
alternative label: Procmon
alternative label: Process Monitor

業務利用者へのヒアリング
type: Concept
definition: 日次・月次・年次の業務の流れに沿って、どの画面で何を入力し何が出てくるかを、実際にシステムを使っている利用者から聞き取ること。
alternative label: 利用者ヒアリング

逆コンパイル
type: Concept
definition: 実行ファイルから高級言語のソースコードに近い形を再構成すること。IL(中間言語)やJavaバイトコードのように構造情報が残る形式で有効。
alternative label: リバースエンジニアリング(コード解析)
not recommended for: Native AOT
not recommended for: Visual Basic 6.0(VB6)
requires: 著作権法第30条の4

ILSpy
type: Concept
definition: オープンソースの.NETアセンブリブラウザー・逆コンパイラで、Visual Studioの逆コンパイル機能の基盤になっている。
alternative label: .NET逆コンパイラ

.NET(Core以降)
type: Concept
definition: .NET Frameworkの後継となる、クロスプラットフォーム対応の.NETランタイム(.NET 5以降)。
alternative label: .NET Core
alternative label: モダンな.NET

Native AOT
type: Concept
definition: .NETアプリを単一のネイティブバイナリへ事前コンパイルする発行方式。非対応リストにC++/CLIが明記されている。
alternative label: PublishAot

Visual Basic 6.0(VB6)
type: Concept
definition: COMコンポーネントを型付きで呼び出せる、レガシーなVisual Basicの開発環境・言語。
alternative label: VB6

難読化(オブファスケーション)
type: Concept
definition: クラス名・メソッド名を無意味な文字列に置き換えるなどして、逆コンパイル結果を読みにくくする加工。
alternative label: Obfuscation

PDB(プログラムデータベース)
type: Concept
definition: ビルド後の.dll/.exeと、ソースコード上の行・変数名を結びつけるデバッグ情報ファイル。アプリケーションの実行には通常不要だが、デバッグ・例外調査・ダンプ解析に使う。
alternative label: Program Database
alternative label: シンボルファイル

著作権法第30条の4
type: Concept
definition: プログラムの調査解析のような、著作物に表現された思想または感情の享受を目的としない利用を、必要と認められる限度で原則として許容する平成30年改正の権利制限規定。
alternative label: 著作物の享受を目的としない利用

使用許諾契約(EULA)の解析禁止条項
type: Concept
definition: パッケージソフトや納品物の使用許諾契約に含まれる、リバースエンジニアリングや解析を禁じる条項。その効力をどう考えるかは契約上の論点として残る。
alternative label: EULA解析禁止条項

準委任契約
type: Concept
definition: 専門家として業務を行うことに対して報酬を支払う契約類型。受託側は完成責任を負わず、善管注意義務を負う。
alternative label: 準委任
alternative label: Quasi-Mandate Contract
should precede: 請負契約

請負契約
type: Concept
definition: 仕事を完成させることを約束し、その結果に対して報酬が支払われる契約類型。
alternative label: 請負
alternative label: Contract for Work

subject: ソースコード・仕様書がないシステムの引き継ぎ
predicate: requires
object: 現状の保全
description: 何もない状態からシステムを引き継いだら、改修より先に動いている環境そのものを保全することが最初の作業になる
evidence: disk2vhd
verified at: 2026-08-01
certainty: established

subject: 現状の保全
predicate: uses
object: Disk2vhd
description: 本番環境をディスクイメージとして丸ごと保全する場合、Sysinternalsが提供するDisk2vhdを使う
evidence: disk2vhd
verified at: 2026-08-01
certainty: context-dependent

subject: Disk2vhd
predicate: uses
object: VSS(ボリュームシャドウコピーサービス)
description: Disk2vhdは稼働中のシステムをオンラインのまま、VSS(ボリュームシャドウコピーサービス)で一貫性のある時点のVHD/VHDXに変換する
evidence: volume-shadow-copy-service
verified at: 2026-08-01
certainty: established

subject: ソースコード・仕様書がないシステムの引き継ぎ
predicate: requires
object: 構成要素の棚卸し
description: 現状保全の次に、実行ファイル・自動起動・タスク・設定・連携先・アカウントを機械的に棚卸しする工程が必要になる
evidence: autoruns
verified at: 2026-08-01
certainty: established

subject: 構成要素の棚卸し
predicate: uses
object: Autoruns
description: 自動起動する項目の洗い出しに絞る場合、SysinternalsのAutorunsを使う
evidence: autoruns
verified at: 2026-08-01
certainty: context-dependent

subject: 構成要素の棚卸し
predicate: uses
object: Process Monitor(procmon.exe)
description: 設定ファイルや出力先の場所が分からない場合は、Process Monitorでファイル・レジストリアクセスを観測するのが早道になる
evidence: procmon
verified at: 2026-08-01
certainty: context-dependent

subject: ソースコード・仕様書がないシステムの引き継ぎ
predicate: requires
object: 仕様の復元
description: 仕様書がなくても、ヒアリングや実挙動の観察から仕様を復元する工程が引き継ぎには必要になる
evidence: procmon
verified at: 2026-08-01
certainty: established

subject: 仕様の復元
predicate: uses
object: 業務利用者へのヒアリング
description: 最大の仕様書は、毎日そのシステムを使っている業務利用者の頭の中にあり、ヒアリングが仕様復元の主要な材料になる
evidence: www.ipa.go.jp
verified at: 2026-08-01
certainty: established

subject: 仕様の復元
predicate: uses
object: Process Monitor(procmon.exe)
description: 実挙動の観測(ファイル・レジストリ・ネットワークのアクセス)にProcess Monitorを使い、入出力の対応関係をソースコードなしで裏付ける
evidence: procmon
verified at: 2026-08-01
certainty: established

subject: 仕様の復元
predicate: requires
object: 逆コンパイル
description: 実行ファイルの中身の挙動を理解する材料として、技術スタックが許す場合は逆コンパイルが仕様復元の選択肢になる
evidence: decompilation
verified at: 2026-08-01
certainty: context-dependent

subject: 逆コンパイル
predicate: uses
object: ILSpy
description: Visual Studioに内蔵の逆コンパイル機能を使う場合、それはオープンソースのILSpyに基づく
evidence: ILSpy
verified at: 2026-08-01
certainty: context-dependent

subject: 逆コンパイル
predicate: requires
object: .NET(Core以降)
description: 通常のIL形式で配置された.NET製アプリの場合、逆コンパイルで得られるC#コードは処理の理解に十分実用的な水準になる
evidence: decompilation
verified at: 2026-08-01
certainty: context-dependent

subject: 逆コンパイル
predicate: notRecommendedFor
object: Native AOT
description: Native AOTで発行されたバイナリはILを含まずネイティブコードに変換済みのため、逆コンパイラでのC#復元は期待できない
evidence: native-aot
verified at: 2026-08-01
certainty: established

subject: 逆コンパイル
predicate: notRecommendedFor
object: Visual Basic 6.0(VB6)
description: VB6の実行ファイルは元ソースに近い形への機械的な復元が現実的でなく、挙動ベースの解析と部分的な再実装が中心になる
evidence: visual-basic-6
verified at: 2026-08-01
certainty: established

subject: 難読化(オブファスケーション)
predicate: mitigates
object: 逆コンパイル
description: 難読化が施されている場合、逆コンパイルによって処理の内容を読み取れる度合いが大きく下がる
evidence: decompilation
verified at: 2026-08-01
certainty: context-dependent

subject: PDB(プログラムデータベース)
predicate: recommendedFor
object: 逆コンパイル
description: 実行ファイルと一緒にPDB(シンボルファイル)が残っていれば、関数名や埋め込みソースまで復元できる場合があり、解析の助けになる
evidence: symbols
verified at: 2026-08-01
certainty: context-dependent

subject: 逆コンパイル
predicate: requires
object: 著作権法第30条の4
description: 逆コンパイルを含む調査解析は、著作権法第30条の4が定める『著作物の享受を目的としない利用』の範囲に収まるかどうかの確認を要する
evidence: https://laws.e-gov.go.jp/law/345AC0000000048
verified at: 2026-08-01
certainty: established

subject: 使用許諾契約(EULA)の解析禁止条項
predicate: incompatibleWith
object: 逆コンパイル
description: 使用許諾契約(EULA)に解析禁止条項が含まれる場合、逆コンパイルの実施可否に契約上の制約がかかりうる
evidence: https://laws.e-gov.go.jp/law/345AC0000000048
verified at: 2026-08-01
certainty: context-dependent

subject: ソースコード・仕様書がないシステムの引き継ぎ
predicate: requires
object: 準委任契約
description: 外部に保守を依頼する場合、中身の分からないシステムの調査には完成責任を約束できないため、調査フェーズは請負ではなく準委任契約で進めるのが基本になる。社内担当者による引き継ぎのように契約が発生しない場合は当てはまらない
evidence: https://laws.e-gov.go.jp/law/129AC0000000089
verified at: 2026-08-01
certainty: context-dependent

subject: 準委任契約
predicate: shouldPrecede
object: 請負契約
description: 調査フェーズは準委任で進め、仕様が固まった後の個別改修フェーズになって初めて請負(または成果完成型準委任)へ切り替えるのがフェーズ分けの原則
evidence: https://laws.e-gov.go.jp/law/129AC0000000089
verified at: 2026-08-01
certainty: established

subject: 現状の保全
predicate: shouldPrecede
object: 構成要素の棚卸し
description: 変更凍結とバックアップによる現状保全を終えてから、構成要素の棚卸しに進む順序が実務の型になる
evidence: disk2vhd
verified at: 2026-08-01
certainty: established

subject: 構成要素の棚卸し
predicate: shouldPrecede
object: 仕様の復元
description: 棚卸しを先に短期間で終えて対象の本数を数えることが、見積もりの精度を上げる近道になるため、仕様復元より先に切り上げるべき工程とされる
evidence: procmon
verified at: 2026-08-01
certainty: established