コンテンツにスキップ

保護のしくみ

参照を辿るだけでは「使っているかどうか」を判断できないものがあります。コードから名前で読み込まれるアセット、エディタ拡張、シェーダーのバリアント——こうしたものは参照グラフに現れません。

そこでこのツールは、参照が無くても消してはいけないものを、判定より先に候補から外します。 これが保護です。

基本方針

判定に迷ったら、必ず「残す」側に倒します。消し損ねは無害ですが、誤削除は買った資産を壊します。

自動で保護されるもの

保護 (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 もシェーダーもツール本体も候補に並びます。その状態で退避を実行すると、プロジェクトは高い確率で壊れます。取り戻す容量に見合うリスクではないと判断しています。

個別に保護を外したい場合は、次のどちらかを使ってください。

それでも見落としはあります

保護の仕組みがあっても、依存関係の解析で見えない参照は存在します。

  • コード内に文字列でパスが書かれている
  • アドレスやラベルで動的に読み込んでいる
  • エディタ拡張が独自の方法で参照している

だからこそ、このツールの既定は削除ではなく退避です。おかしいと思ったら戻せます。