Clashプロファイルとは:設定ファイルの基本概念とマルチ設定切り替え管理入門
Profileはクライアントが読み込む完全な設定単位で、サブスクリプション・ノード・ルールを包含する。取得元、保存場所、更新の仕組み、複数設定の切り替え管理までを解説。
Profileはクライアントが読み込む完全な設定単位で、サブスクリプション・ノード・ルールを包含する。取得元、保存場所、更新の仕組み、複数設定の切り替え管理までを解説。
Clashおよびその派生コア(Clash Premium、Clash Meta、mihomo)の文脈において、Profile(設定ファイル)とは、クライアントが実際に読み込んで有効化する完全なYAMLファイルを指す。これは「サブスクリプション」の同義語でもなく、「ノードリスト」の同義語でもない——サブスクリプションは設定ファイルを取得する手段の一つにすぎず、ノードは設定ファイル内の一部の内容にすぎない。この包含関係を正しく理解しておくことで、この先の保存場所・更新ロジック・複数設定の切り替えについての説明が混同されずに済む。
典型的なClash設定ファイルには、通常次の項目が順に含まれる。
これら五つの要素がまとまって、初めて完全に使用可能なProfileとなる。proxiesセクションがなければポリシーグループは選択対象を持てず、rulesセクションがなければクライアントはmodeで指定されたデフォルト動作で全通信を処理するしかなく、「振り分け」とは言えない。
取得方法によってProfileは大きく3種類に分けられ、日常使用ではこれらが混在することも多い。
最も一般的な方式。サービス提供者がHTTP(S)リンクを提供し、クライアントがそのリンクにリクエストを送ると、サーバー側がノード情報を返す(完全なYAMLのまま返す場合も、Base64エンコードされたノードリストの場合もある)。多くのClash系クライアント(Clash Verge、FlClash、ClashX Metaなど)は、ノードデータを受け取った後、内蔵または独自のルールテンプレートと組み合わせて完全なProfileを組み立て、ローカルに保存する。同じサブスクリプションリンクでもクライアントによってポリシーグループ構成やルール数が異なるのは、この組み立てテンプレートが違うためだ。
すでに他人から共有された、または自分で作成したYAMLファイルがある場合、クライアントの「ファイルからインポート」機能で直接読み込める。ネットワークリクエストを経由しないため、この種のProfileは自動更新されず、内容は固定される。デバッグやオフライン環境での利用に向いている。
上級ユーザーはテキストエディタやクライアント内蔵の設定編集パネルを使い、proxy-groupsやrulesセクションを直接書いたり編集したりする。特定のポリシーグループに独自ノードを追加する、特定アプリだけ出口を指定する、特定ドメインをブロックするなどが典型的な用途だ。こうした変更を行う前には元ファイルをバックアップしておくのがよい。構文エラーでクライアントが読み込めなくなった際に戻せなくなるのを避けるためだ。
Profileはローカルファイルであり、保存パスはクライアントによって異なる。トラブル対応の際は実際にディレクトリを開いてファイルが本当に更新されているか確認する場面が多い。主なクライアントの保存パスの傾向は次のとおり。
| クライアント | 設定ファイルの保存傾向 | 補足 |
|---|---|---|
| Clash Verge / Clash Verge Rev | アプリデータディレクトリ内のprofilesフォルダ。各サブスクリプションはハッシュ/UUID名の.yamlファイルに対応 | 現在有効になっているものはconfig.yamlに記録される |
| ClashX Meta(macOS) | ユーザーディレクトリ配下の.config/clash/フォルダ | ターミナルやエディタで直接開ける |
| FlClash(クロスプラットフォーム) | アプリ専用データディレクトリ内のprofileサブディレクトリ | モバイル端末では直接ファイルを編集せず、内蔵編集パネルを使う方が安全 |
| コア単体(mihomo/Clash Meta core) | 起動パラメータ-fで指定したパス。既定値はカレントディレクトリのconfig.yaml | GUIラッパーがないため、パスは起動方法によって完全に決まる |
強調しておきたいのは、多くのGUIクライアントでは、自動生成されたこれらのファイルをアプリデータディレクトリで直接編集することは推奨されないという点だ。クライアント自身の更新ロジックが、次回の更新時に手動編集内容を上書きしてしまう可能性があるためだ。独自ルールを長期的に保持したい場合は、クライアントが提供する「設定の結合」や「オーバーライド(override)」機能を使い、独自の断片を別途保存してからサブスクリプション生成の主設定に重ね合わせる方が確実だ。
「更新」という動作が発生するのはサブスクリプションリンク経由で取得したProfileのみで、ローカルインポートや手書きのファイルは自ら変化することはない。更新の仕組みは主に次の2点で決まる。
更新時、クライアントは基本的にノード関連の内容だけを差し替え、ユーザーがローカルで追加した独自ルールには手を出さない(ただし「結合/オーバーライド」機能を使っている場合に限る。自動生成ファイル本体を直接編集していると話は別だ)。更新後に独自の振り分けルールが消えていた場合、大半は自動生成される主ファイルの方に変更を書き込んでいたためで、オーバーライド機能を使って再設定し直すべきだ。
ほとんどのユーザーは1つの設定だけを使っているわけではない——例えば同時に2つのサービスをサブスクリプションしていたり、動画配信サービス向けの振り分けをカスタマイズした版と、日常用のシンプルな版をローカルに保存していたりする。こうした場合、設定ファイルの「切り替え」と「管理」は日常操作から避けられない部分になる。
クライアントのコアは実行中に1つのProfileしか読み込まない。GUI上で見える「設定一覧」は本質的に複数の保存済みYAMLファイルであり、いずれかをクリックすると現在の有効設定として設定され、クライアントはコアを再読み込みして新しいproxies・proxy-groups・rulesを適用する。切り替え時には一時的な接続の中断が発生することがあるが、これは正常な現象だ。
設定の数が増えると、デフォルト生成されたファイル名だけでは用途を区別しづらくなる。クライアント上で各設定にリネームを行い、取得元や用途を明記しておくとよい。例えば「日常サブスクリプション」「一時テスト用」「ローカル独自ルール」のように分類しておくと、誤って別の設定に切り替えるリスクを減らせる。一部のクライアントは設定にタグを付けたりグループ化したりする機能を備えており、シーン別に整理して管理できる。
既存のサブスクリプションに数個の独自ルールを追加したいだけの場合(例えば社内サービス用ドメインを強制直結にする、など)、新しい設定を一から作る必要はなく、クライアントの「オーバーライド(override)」や「結合設定」機能を使う方が推奨される。この機能では、追加・置き換えたいルールだけを含む小さなYAML断片を独立して管理し、適用時に主設定へ重ね合わせる。主設定が更新されてもオーバーライド断片はそのまま残るため、毎回追加し直す必要がない。
長期間使っていないテスト用設定は早めに削除しておくべきだ。特に実際のノードの認証情報が含まれているファイルは要注意だ——サブスクリプションが失効していても、ファイル内の鍵情報は平文でローカルに残ったままになる。古い設定を整理することも、基本的な運用習慣の一つと言える。
| 疑問 | 結論 |
|---|---|
| Profileとサブスクリプションは同じものか | いいえ。サブスクリプションはProfileを取得する手段の一つで、Profileは最終的に有効になる完全な設定ファイル |
| 設定ファイルを手動編集すると次回更新で上書きされるか | 自動生成される主ファイルを直接編集した場合は上書きされる。オーバーライド/結合機能を使って独自内容を別途保存するのが推奨 |
| 複数の設定を同時に有効化できるか | コアは同時に1つしか読み込まない。複数設定は切り替えで運用し、同時に重ね合わせるのはオーバーライド機構による |
| ローカルインポートしたファイルは自動更新されるか | されない。サブスクリプションリンクに紐付いた設定のみ自動/手動更新が可能 |
これらの点を整理しておけば、クライアント画面上の「設定管理」「サブスクリプション情報」「オーバーライド」といったタブが、本文で説明した保存・更新・重ね合わせという3つの仕組みのどれに対応するかが見えてきて、Profile・サブスクリプション・ノード・ルールという概念を混同しにくくなる。