保護のしくみ¶
参照を辿るだけでは「使っているかどうか」を判断できないものがあります。コードから名前で読み込まれるアセット、エディタ拡張、シェーダーのバリアント——こうしたものは参照グラフに現れません。
そこでこのツールは、参照が無くても消してはいけないものを、判定より先に候補から外します。 これが保護です。
基本方針
判定に迷ったら、必ず「残す」側に倒します。消し損ねは無害ですが、誤削除は買った資産を壊します。
自動で保護されるもの¶
保護 (Protection) タブで内容を確認できます。
| 種類 | 保護される条件 |
|---|---|
| コード資産 | .cs / .asmdef / .dll を含むフォルダ |
| パッケージ | package.json を含むフォルダ |
| エディタ拡張 | Editor/ フォルダを持つもの |
| シェーダー | .shader などのシェーダーファイルを含むフォルダ |
| 既知のツール | VRChat SDK / lilToon / Poiyomi / Modular Avatar / NDMF / VRCFury などの名前を含むパス |
| 特定の拡張子 | 消すと復旧できない種類のファイル |
フォルダ単位で保護されます。 中に 1 つでもスクリプトがあれば、そのフォルダ全体が守られます。
ツール本体と生成物が同居している場合
上のルールがあるため、変換ツールの生成物までツール本体の巻き添えで保護されることがあります。これを解除するのがスキャンと退避の「ツール出力フォルダ」設定です。
自分で保護を追加する¶
ユーザーホワイトリストに glob パターンを登録すると、そのパスを常に保護できます。
Assets/MyTools/**
Assets/自作/衣装素材/**
追加の方法は 2 通りあります。
- 保護タブのホワイトリスト欄にパターンを入力して「追加」
- スキャン結果の各行にある 「保護に追加」 を押す(そのパスがワンクリックで登録されます)
「これは絶対に消したくない」と分かっているものは、先に登録しておくと安心です。
なぜ候補に出ないのかを確認する¶
スキャン結果の 「保護された単位」 に、保護されたものとその理由が一覧表示されます。
候補が 0 件のときも表示されます
「何も出てこない = ツールが壊れている」ではありません。正しく保護しているだけのことがほとんどです。まずここを開いて理由を読んでください。
理由の例:
| 表示 | 意味 |
|---|---|
| どのルートからも到達不能 | 候補側の判定根拠。使用中のものからは辿り着けなかった |
| スキャンの起点(暗黙ルート)として扱っているため保護 | それ自体が起点になっている(ルートの設定) |
| 起点から除外したファイルを含むため保護 | 起点から外した操作の巻き添えで消えないように守っている |
保護を一括で無効にする機能はありません¶
「保護を全部切って全部出す」スイッチは意図的に用意していません。
範囲を指定し忘れた瞬間に、VRChat SDK もシェーダーもツール本体も候補に並びます。その状態で退避を実行すると、プロジェクトは高い確率で壊れます。取り戻す容量に見合うリスクではないと判断しています。
個別に保護を外したい場合は、次のどちらかを使ってください。
- 生成物を分離したい → ツール出力フォルダの登録
- ツールの設定が起点になっている → 暗黙ルートを起点から外す
それでも見落としはあります¶
保護の仕組みがあっても、依存関係の解析で見えない参照は存在します。
- コード内に文字列でパスが書かれている
- アドレスやラベルで動的に読み込んでいる
- エディタ拡張が独自の方法で参照している
だからこそ、このツールの既定は削除ではなく退避です。おかしいと思ったら戻せます。