Clash オープンソース生態系マップ:無印・Meta/mihomo と各クライアントの関係
Clash という言葉は、すでに更新が止まった無印コア、コミュニティが引き継いだ mihomo 系列、そして見た目の異なる十数種類のクライアントを同時に指す。本稿では系譜をたどる形でこの生態系を記録する。無印コアがアーカイブされた経緯、Clash Meta から mihomo への継承関係、コアとクライアントの役割分担、各プラットフォームのクライアントの現状を整理し、最後にプラットフォーム別の選定指針をまとめる。
一、無印 Clash の経緯
無印 Clash は開発者 Dreamacro によって Go 言語で書かれ、2018 年頃に公開され、GPL-3.0 ライセンスで配布された。純粋な CLI コアであり、GUI は持たず、起動時に config.yaml という設定ファイルを読み込み、ローカルで HTTP と SOCKS プロキシポートを開き、設定内のルールに従って各接続を直接通信または指定のプロキシへ振り分ける。
当時としてはプロトコル対応が充実していた。Shadowsocks、VMess、Trojan、Snell、そして標準的な HTTP・SOCKS5 のアウトバウンドに対応し、ルールシステムはドメイン末尾一致、キーワード、IP レンジ、GEOIP といったマッチング方式をサポートしていた。「上から順に評価し、最初に一致したルールで確定する」という振り分けモデルと、アウトバウンドの選択機構である「プロキシグループ」は、以後この生態系全体で受け継がれる共通の作法となった。
オープンソース版のほかに、作者はクローズドソースの Premium コアも公開しており、TUN 仮想ネットワークカードやスクリプトルールなどの拡張機能をビルド済みバイナリの形で提供し、必要なユーザーが差し替えて使えるようにしていた。
2023 年 11 月、作者は GitHub 上の clash リポジトリを削除し、プロジェクトのホームページは以後アクセスできなくなった。同時期、Clash for Windows など知名度の高い下流クライアントの多くが更新停止や配布中止を発表した。無印コアのバージョンはここで固定され、プロトコル対応や機能もそれ以上進化していない。これが今日の生態系全体を理解する出発点となる。
二、Clash Meta から mihomo へ
無印が更新停止する前から、コミュニティにはすでに機能拡張ブランチ Clash.Meta が存在し、MetaCubeX という組織によって、無印のコードを土台に新しいプロトコルや機能を継続的に取り込む形で維持されていた。無印のリポジトリ削除後、このブランチが実質的な主流となる。2024 年初頭、プロジェクトは mihomo に改名され、リポジトリは MetaCubeX/mihomo に移転、バージョン番号は既存の連番を引き継ぎ、ライセンスも GPL-3.0 のまま変わっていない。
無印と比べた mihomo の主な追加要素を、カテゴリ別に整理すると次のようになる。
- アウトバウンドプロトコル:VLESS、Hysteria、Hysteria2、TUIC、WireGuard などを新たに追加し、無印がアーカイブされた後に登場した主要プロトコルの大半をカバーしている。
- ルールシステム:ルールプロバイダー(rule-providers)とバイナリ形式のルールセットを導入し、大規模なドメイン・IP リストの配布と読み込みを容易にした。
- DNS モジュール:ドメインごとに解決方式を振り分ける機能やドメインスニッフィングなどに対応し、DNS 汚染や振り分けのずれを緩和する。
- TUN モード:仮想ネットワークカードのスタックを書き直して強化し、gVisor と system の 2 種類の実装を提供、システム全体のトラフィック引き受けがより安定した。
- コントロール API:external-controller は無印バージョンとの互換性を保っており、既存のパネルやクライアントも問題なく移行できる。
現在、メンテナンスが続いている Clash 系クライアントのほぼすべてが、デフォルトまたは推奨コアとして mihomo を採用している。無印コアはごく一部の旧端末や旧設定でのみ使われ続けている。
三、コアとクライアントの役割分担
Clash 生態系のアーキテクチャは「コア + 外側の器」という 2 層構造でまとめられる。コアはバックグラウンドプロセスで、プロキシプロトコル、ルールマッチング、DNS 解決を担う。クライアントは GUI 部分で、画面表示、サブスクリプションのダウンロードと更新、システムプロキシの ON/OFF、自動起動などを担い、コアが公開する RESTful のコントロール API を通じて指示を送り、動作状態を取得する。このインターフェースはデフォルトでローカルの 127.0.0.1:9090 で待ち受けている。
# config.yaml(抜粋):コアの外部コントロールインターフェース
external-controller: 127.0.0.1:9090
secret: ""
設定ファイルの形式はコア間でほぼ互換性があるため、同じ config.yaml を別のクライアントへそのまま流用できることが多い。metacubexd や zashboard のようなパネル系ツールも同じコントロール API を通じて動作するため、どのクライアントを使っているかに関わらず、任意の mihomo インスタンスに接続できる。
サブスクリンクの実体は、Clash の設定形式で生成された yaml テキストであり、クライアントが定期的に取得してローカル設定にマージする役割を担う。「コア・外側の器・サブスクリプション」という 3 層構造を理解すれば、新しく登場したクライアントであっても、まずどのコアを内蔵しているか、次にサブスクリプションとシステムプロキシをどう包んでいるかを見れば、すぐに位置づけがつかめる。
四、各プラットフォームのクライアントの現状
以下は、各プロジェクトの公開リリースページに基づき、プラットフォーム別に主なクライアントのコア採用状況とメンテナンス状況をまとめた表である。
| クライアント | プラットフォーム | 内蔵コア | メンテナンス状況 |
|---|---|---|---|
| Clash Verge Rev | Windows / macOS / Linux | mihomo | 活発に更新中 |
| FlClash | Windows / macOS / Linux / Android | mihomo | 活発に更新中 |
| mihomo party | Windows / macOS / Linux | mihomo | 活発に更新中 |
| ClashX Meta | macOS | mihomo | 更新中 |
| ClashMetaForAndroid | Android | mihomo | 更新中 |
| OpenClash | OpenWrt | mihomo(設定で切り替え可能) | 活発に更新中 |
| Clash for Windows | Windows / macOS / Linux | 無印 / Premium | 2023年11月に更新停止 |
| Clash for Android | Android | 無印 | 更新停止 |
| ClashX | macOS | 無印 | 更新停止 |
| Clash Verge(旧版) | Windows / macOS / Linux | 無印 / Meta | 更新停止、Rev が後継 |
補足事項をいくつか記しておく。Clash Verge Rev は更新停止した Clash Verge のコミュニティ後継版で、Tauri をベースに構築され、旧版の UI をほぼそのまま継承している。FlClash は Flutter で書かれており、デスクトップとモバイルで同じ UI ロジックを共有している。OpenClash は OpenWrt 上の LuCI アプリで、コアは設定から切り替え可能。iOS でよく使われる Stash はクローズドソースの有料アプリで、Clash の設定形式に対応しているものの、オープンソースコアとの直接的な継承関係はなく、ここでは参考として記載する。
五、選定の指針
以上の系譜を踏まえると、選定は次の 3 点に整理できる。
- 今も更新されている組み合わせを優先する。プロキシソフトはプロトコルの実装やOSの変化に合わせて継続的な更新が必要であり、更新停止版は旧環境でしか動作せず、見つかった問題も今後修正されない。
- コアは mihomo を基準に選ぶ。新しいプロトコルやルールセット形式は mihomo 側でのみ進化しており、旧設定が無印固有の挙動に強く依存している場合を除き、アーカイブ済みのコアに戻す理由はない。
- クライアントはプラットフォームの使用感に合わせて選ぶ。デスクトップ3プラットフォームでは Clash Verge Rev と FlClash を UI の好みで選び、Android では ClashMetaForAndroid または FlClash、OpenWrt ルーターでは OpenClash を使う。
旧クライアントから書き出された config.yaml は、多くの場合そのまま mihomo ベースのクライアントに読み込める。一部の廃止済みの旧フィールドや旧プロトコルの記述は、mihomo の公式ドキュメントを参照しながら項目ごとに調整してから読み込み、起動エラーを避ける必要がある。
各クライアントの入手方法、システム要件、インストール手順は本サイトのインストールパッケージページに項目別に記載している。初回の設定手順はクイックスタートガイドを参照しながら進めるとよい。
六、用語早見表
プロキシと振り分けを実際に処理するバックグラウンドプロセスで、それ自体には UI がない。無印 Clash や mihomo がこれに当たる。
コアの GUI 部分で、設定管理、サブスクリプションの更新、システムプロキシの ON/OFF などを担う。
Clash の設定形式でノードとルールを配布するリンクで、クライアントが定期的に取得する。
アウトバウンドの選択機構で、あるルールに一致した通信を最終的にどのノードやグループに渡すかを決める。
仮想ネットワークカードでシステム全体のトラフィックを引き受ける動作方式で、システムプロキシに従わないアプリも対象にできる。
再利用可能なルール一覧ファイルで、mihomo は容量の小さいバイナリ形式も別途提供している。