Clash、mihomo、Verge Rev の関係とは:オープンソース系譜とカーネル進化の整理
Clashエコシステムに初めて触れると、「結局どれを入れればいいのか」で戸惑う人が多い。Clash、Clash Meta、mihomo、Clash Verge Rev、FlClash……名前は似ているが指しているプロジェクトはそれぞれ違う。本記事ではカーネルとクライアントの継承関係を時系列で整理し、誰が誰の後継なのか、そしてあるプロジェクトが今も維持されているかどうかをどう見分けるかを説明する。
Clashエコシステムに初めて触れると、「結局どれを入れればいいのか」で戸惑う人が多い。Clash、Clash Meta、mihomo、Clash Verge Rev、FlClash……名前は似ているが指しているプロジェクトはそれぞれ違う。本記事ではカーネルとクライアントの継承関係を時系列で整理し、誰が誰の後継なのか、そしてあるプロジェクトが今も維持されているかどうかをどう見分けるかを説明する。
最初期のClashはGo言語で書かれたルールベースのプロキシツールで、ドメイン名・IPレンジ・GeoIPなどの条件に応じてトラフィックを異なる出口へ振り分け、Shadowsocks、VMess、Trojanなど複数プロトコルを統一的に管理できるのが核心機能だった。設計思想としては「ルールエンジン」と「プロトコル実装」を分離している点が特徴で、設定ファイルにルールを書き、カーネルがマッチングと転送を担うため、利用者は下層のハンドシェイクの詳細を意識しなくてよい。この構造はその後ほぼすべてのClash系クライアントに引き継がれ、エコシステム全体を理解する出発点になっている。
オリジナルのリポジトリは長年のメンテナンスを経て作者によりアーカイブされ、新機能の受け入れも新たな互換性問題の修正も行われなくなった。一般利用者への直接的な影響は、このカーネルを使った旧クライアントを使い続けた場合、新プロトコル非対応や新しいOSバージョンへの適合問題が発生しても公式の更新で解決されなくなるということだ。これがコミュニティによる多数のフォークが生まれた直接の理由でもある——中核機能自体が消えたわけではなく、新たなメンテナーが引き継ぐ必要があっただけだ。
オリジナルプロジェクトの発展中期、作者はクローズドソースのPremiumカーネルをリリースし、TUNモード、より完全なルールサブスクリプション、スクリプト拡張などの上級機能を追加し、完全オープンソースの基本版と並行して存在していた。この経緯が、後のコミュニティフォークに2つの方向性をもたらした——ひとつはオープンソースの基盤の上にPremium時代の機能を自前で実装して補う方向(独自にTUN対応を実装するなど)、もうひとつはこれらの上級機能をどう統合・再現するかを軸に展開する方向だ。
これが、現在「機能はほぼ同じだがコードの出自が異なる」複数のクライアントが存在する理由でもある——それぞれオープンソースエコシステムの異なるブランチ上で、Premium時代に生まれた機能要件を独自に再実装している。利用者としては歴史的な経緯にこだわる必要はなく、現在使っているバージョンがTUNモード、ルールサブスクリプション、スクリプトポリシーといった主要機能に対応しているかだけを確認すればよい。
オリジナルカーネルのアーカイブ後、コミュニティ内で最も活発かつ更新頻度の高かった後継プロジェクトが最終的に発展し、mihomoへと名称変更された。機能面では従来のルールマッチングやプロトコル対応を完全にカバーし、新プロトコル(Hysteria2、TUICなど)やOS層の適合(macOS/WindowsのTUN権限モデルの変化など)にも継続的に追随している。現在も積極的に更新されているClash系GUIクライアントの大半は、内部でmihomoカーネルを呼び出しており、アーカイブ済みの最初のバージョンではない。
ここが重要なポイントだ:多くのクライアントは画面上では今も「Clash」というブランド名を製品名として使い続けているが、実際に動いているカーネルはとうにmihomoへ切り替わっている。あるクライアントがプロトコル更新に追随できているかどうかを判断する本質は、紐づいているカーネルのバージョン更新頻度を見ることであり、画面上のブランド名を見ることではない。
| フェーズ | 主要プロジェクト | 状態 |
|---|---|---|
| 初期 | オリジナルClashカーネル | アーカイブ済み、更新停止 |
| 過渡期 | Clash Premium(クローズドソース) | 過去のバージョン、以後の更新なし |
| 現在の本流 | mihomoカーネル | 活発に維持、主要クライアントの基盤 |
カーネルの上には各社のGUIクライアントがあり、画面表示、サブスクリプション管理、システムプロキシ設定など利用者が直接触れる部分を担い、内部では特定バージョンのカーネルを呼び出している。この階層関係を整理してこそ、あるクライアントが「新しいかどうか」を判断できる。
これらのクライアント間の関係は「誰が誰をコピーしたか」ではなく、同じカーネル機能が異なるプラットフォーム・異なる技術スタックで実装された画面違いであることが分かる。どれを選ぶかは、OS、画面の好み、更新頻度によって決めればよく、「本流か否か」にこだわる必要はない。
似たようなプロジェクト名が並ぶ中、経緯を丹念に追うよりも実用的な判断方法を押さえておく方が効率的だ:
直近数ヶ月以内に新バージョンがリリースされているかが最も直接的な指標。長期間更新が止まったままダウンロード可能なバージョンは、大半が一時的な応急使用にしか向かない。
クライアントの設定画面や「このアプリについて」ページには紐づいているカーネルのバージョン番号が表示されることが多く、比較的新しいmihomoバージョンかどうかを確認できる。
新しく登場したプロキシプロトコルがクライアント側に対応する選択肢すら見当たらない場合、カーネルバージョンが古い可能性が高い。
OSアップデート後(特にmacOSのネットワーク拡張権限、Windowsの TUNドライバ署名要件)、クライアント側が追随して適合しているかどうかも、メンテナンス活発度を示す指標になる。
日常的な利用においては、オープンソースの歴史の専門家になる必要はなく、ダウンロードページで現在も積極的に更新されているクライアントのバージョンを選び、有効なサブスクリプションリンクと組み合わせれば、ルール振り分けやTUNモードといった一通りの機能を利用できる。技術選定の詳細はプロジェクトのメンテナーに委ね、一般利用者が気にすべきはただ「安定して使いやすく、OS更新に追随しているか」という2点だけだ。
カーネルの系譜を理解したら、ダウンロードページから現在活発に維持されているクライアントバージョンを選び、プラットフォームに合わせてインストールパッケージを取得しよう。