Cursor / CopilotにどのVPNを選ぶべきか。重要なのは速度テストで一時的に高いピーク値が出ることではなく、エディターが安定した出口を継続して利用できるかどうかです。コード補完、チャット生成、インデックス取得、ターミナルコマンドは別々のプロセスから実行されることがあります。どこか一つでもプロキシを正しく通らないと、補完が終わらない、セッションが切れる、ログイン状態が何度も無効になる、エディターは使えるのにCLIから依存サービスへ接続できない、といった症状が起こります。

そのため、AIコーディングツール向けの回線は、まず長時間接続の安定性を確認し、次に出口の一貫性、経路の揺らぎ、DNS処理、分割ルーティングを見ます。帯域幅も役立ちますが、通常のコードテキストは大容量ファイルではありません。日常的な補完では、短時間のダウンロードは速くても頻繁に経路が変わる回線より、揺らぎが少なく再接続が速く、エディターとターミナルの挙動がそろう回線のほうが適しています。

まず結論:ピーク速度より安定した出口

選び方の結論:Cursorのチャット、Copilotの補完、ターミナルツールを頻繁に使うなら、経路が安定した中継またはIEPL専線を優先します。コードをたまに確認する程度で、利用中のネットワークからの直結品質が良好なら、通常回線でも対応できます。プロトコル名だけで判断せず、経路、クライアントの実装、ローカルの分割ルーティングをまとめて確認しましょう。

AIコーディングは単一のWebリクエストではありません。エディターがストリーミング応答を維持し、拡張機能が認証やモデルのAPIへアクセスし、プロジェクトのインデックスがコードホスティング、パッケージリポジトリ、ドキュメントサイトを参照することもあります。補完が一度返ってきたからといって、ワークフロー全体が安定したとは限りません。実際の使い勝手を左右するのは、連続編集中に再試行が必要になるか、また有線から無線へ切り替えたときや端末がスリープから復帰したときに接続を回復できるかです。

ブラウザーの速度テストだけで回線を選ぶと、判断を誤りやすくなります。速度テストは連続転送能力を重視しますが、補完では最初の応答と、その後のデータが安定して届くかが重要です。一時的な混雑、出口の切り替え、パケットロス後の再送によって、エディター上は「接続中」に見えても、実際のストリーミング出力が止まることがあります。エディター、ターミナル、バージョン管理を同じテストフローで確認してください。

  • ✅ 連続補完や長時間のチャット中に、再試行の表示が頻繁に出ない。
  • ✅ エディター、内蔵ターミナル、独立したターミナルが、想定どおり同じ出口を使う。
  • ✅ 端末のスリープ復帰やネットワーク切り替え後に、セッションを再確立できる。
  • ✅ コードホスティング、拡張機能マーケット、パッケージリポジトリへ、分割ルーティングのルールどおり接続できる。
  • ❌ 1回のダウンロードピーク値だけで、開発に適した回線かどうかを判断する。
  • ❌ システムプロキシ、環境変数、アプリ設定を同時に変更し、変更内容を記録しない。

長時間接続が回線の問題を広げる理由

従来のWebページなら、リクエストに失敗した後で更新できます。しかしコード補完は入力中に発生します。エディターはコンテキストを遠隔サービスへ送り、結果を継続的に受け取る必要があります。具体的な実装はクライアントのバージョンやサービス側の方針によって変わり、通常のHTTPSストリーミングを使う場合も、継続的なセッションに適した接続方式を使う場合もあります。共通しているのは、接続時間が長いほど、経路の揺らぎ、ネットワーク切り替え、アイドルタイムアウトが表面化しやすいことです。

長時間接続の問題は、必ずしも「まったく通信できない」状態ではありません。一部だけが機能しないことがあります。ログイン画面は開くのに補完APIがタイムアウトする、エディターのチャットは正常なのにターミナルのパッケージマネージャーだけ別経路を使う、システムプロキシは有効なのにバックグラウンドプロセスが設定を引き継いでいない、といったケースです。これは、確認すべき対象がノードだけでなく、プロキシモードとプロセスの境界にもあることを示しています。

補完の初回応答

入力を終えてから最初の候補が表示されるまでの時間は、最も体感しやすい指標です。ローカル処理、DNS名前解決、接続確立、回線転送、サービス側の応答が含まれます。同じ回線でも速いときと長時間結果が出ないときがあるなら、安定しているものの少し遅い回線より作業のリズムに影響します。比較では同じプロジェクトでよく使う操作を繰り返し、異なるコードベースで条件を変えないようにします。

セッションの切断と復旧

長いチャットやエージェントタスクでは、内容が継続的に転送されます。途中で出口が変わったり、クライアントが設定を再読み込みしたり、無線ネットワーク間を移動したりすると、既存の接続が無効になることがあります。優れた状態とは接続が一度も切れないことではなく、切断が少なく、無効になった後に明確に再接続できることです。エディターが読み込み中のまま止まり、手動でキャンセルしないと続行できない場合は、回線のパケットロス、アプリのプロキシ設定、システムのスリープ設定を確認してください。

出口の一貫性

認証、モデルAPI、コードホスティングサービスは、それぞれ異なるアドレスへ名前解決されることがあります。細かすぎる分割ルーティングでは、関連するリクエストが別々の出口から送信され、追加認証やセッション無効化を招く可能性があります。開発用途では、サービスのドメイン群とプロセスの要件に基づいてルールを管理し、主要ドメインだけをプロキシして認証、リソース配信、拡張機能の依存先を漏らさないようにします。

直結・中継・IEPL専線の選び方

ここでいう直結は、端末が遠隔ノードへ直接接続し、経路が主にインターネットのルーティングに左右される方式です。中継は、接続側と遠隔出口の間に転送ノードを追加し、一部の不安定な公衆網区間を改善します。IEPL専線は通常、重要な国際区間を一般的な公衆網の経路から分離し、目的の出口へ接続します。3種類に絶対的な上下関係があるわけではなく、実際の使い勝手はローカル接続、入口の位置、出口の負荷、目的サービスにも左右されます。

回線タイプ 長時間接続での挙動 主な変数 適した用途
直結 経路は単純ですが、公衆網の迂回や夜間の混雑の影響を受けやすい 通信事業者、国際出口、遠隔ノードの位置 接続ネットワークが安定し、利用頻度が低い開発作業
中継 不安定な公衆網区間を一部回避できますが、入口の品質が上限を左右する 入口までの距離、転送経路、出口の負荷 継続的な補完を使いながら、コストと回線の安定性も重視する場合
IEPL専線 重要な国際区間の経路を比較的制御しやすく、継続的なセッションに適する ローカルから入口までの接続品質、出口ノードの状態 高頻度のチャット、エージェントタスク、リモート開発リソース

IEPL専線にしたからといって、ローカルネットワークの問題が自動的に解消されるわけではありません。端末から入口まではローカル接続網を通り、遠隔出口から目的サービスまでも外部経路を通ります。無線信号が不安定だったり、クライアントが頻繁に再読み込みされたりする場合、専線に替えてもローカルのパケットロスは直せません。価値は重要な国際経路の不確実性を減らすことであり、包括的な切り分けの代わりではありません。

中継回線では入口を重点的に確認します。入口が現在のネットワーク構成から近いほど、安定した接続を確立しやすい傾向があります。入口自体が混雑している場合は、転送が一段増えることでかえって変数が増えます。直結は基準となるテストに適しています。現在のネットワークで直結が長期的に安定しているなら、回線名が複雑という理由だけで切り替える必要はありません。

Shadowsocks、VMess、Trojan、VLESS、Hysteria2、TUIC

プロトコルはデータのカプセル化と転送方法を決めますが、基盤となる回線品質を単独で示すものではありません。Shadowsocksは軽量な暗号化プロキシ方式で、対応クライアントが多く、ルールベースの分割ルーティングや日常的な開発通信に適しています。VMessとVLESSはさまざまな転送方式との組み合わせで使われ、前者は独自の認証設計を備え、後者はよりシンプルで、外側の転送方式とセキュリティ設定に依存することが多いです。TrojanはTLSに近い形で通信を運びますが、安定性は証明書、サーバー、ネットワーク経路に左右されます。

Hysteria2とTUICはQUICおよびUDPの考え方に基づき、パケットロスがある環境での転送効率や、モバイルネットワーク切り替え時の復旧性を重視します。UDPが利用でき、経路品質も適している環境では、より速く復旧できる可能性があります。一方、オフィスネットワーク、公衆ネットワーク、上流機器によってUDPが制限される場合は、TCPベースの方式より不安定になることがあります。対応プロトコルの一覧だけでなく、現在の接続ネットワークがその転送方式を許可しているかも確認しましょう。

プロトコル 転送時の重点 開発用途での確認点
Shadowsocks 軽量な実装で、エコシステムが成熟している クライアントの分割ルーティング機能、DNSがプロキシ経由で処理されるか
VMess 複数の転送方式を組み合わせられる クライアントとサーバーの設定が一致しているか
VLESS プロトコル自体はシンプルで、外側の設定に依存する TLS、転送層、ルーティング設定をまとめて確認する必要がある
Trojan TLSで接続を運ぶ 証明書の状態、ハンドシェイク経路、出口の安定性
Hysteria2 QUICベースで、弱いネットワークでの転送を重視する 現在のネットワークでUDPが使えるか、フォールバック方式があるか
TUIC QUICベースで、並行処理と接続復旧を重視する クライアントの対応状況とUDP経路の品質

再現可能な実測手順

テストの目的は、見栄えのよいスクリーンショットを撮ることではなく、実際の作業日に行う操作を再現することです。開始前に不要なダウンロードや同期を停止し、同じ端末、同じ接続方法、同じエディターのバージョン、同じプロジェクトに固定します。現在のノード、プロトコル、プロキシモード、分割ルーティングのルールを記録し、テスト後に元へ戻せるようにします。

  • ✅ エディターで普段使うコード補完を実行し、最初の候補が安定して表示されるか確認する。
  • ✅ 連続チャットを開始し、回答が自然に完了するまで待って、停止や手動再試行が必要か記録する。
  • ✅ 内蔵ターミナルからコードホスティングとパッケージサービスへアクセスし、想定したプロキシを通っているか確認する。
  • ✅ バージョン管理でリモートの読み取り操作を実行し、認証情報の処理とネットワーク経路が正常か確認する。
  • ✅ 端末をスリープから復帰させるかネットワークを切り替え、エディターが自動的に再接続するか確認する。
  • ✅ 回線を切り替えた後にセッションを再確立し、古い接続を使って新しい回線を判断しない。

結果は「安定して完了」「ときどき再試行」「継続的に失敗」といった分類で記録できます。単一の遅延値にこだわる必要はありません。遅延は目的サービス、プロジェクトのコンテキスト、ネットワークの時間帯によって変わりますが、切断の種類は診断に役立ちます。ある回線だけチャットの途中で毎回止まり、通常のWebページは正常なら、まず長時間接続、アイドルタイムアウト、経路の揺らぎを確認します。

クライアントの再接続とアプリ側の再試行も区別してください。プロキシクライアントに「接続済み」と表示されても、トンネルが存在することを示すだけです。エディター内の古いセッションは、無効になった接続に紐づいたままかもしれません。ノードを切り替えたら、待機中の生成タスクをキャンセルしてから、新しい補完やチャットを開始します。そうしないと、確認しているのは新しい回線ではなく、古い接続の残りかもしれません。

サブスクリプションのインポートと各プラットフォームのクライアントの違い

サブスクリプションURLは、クライアントへノードと設定の更新を提供するためのものであり、システムがすべての通信を自動的に引き受けることを意味しません。インポート後は、更新が成功したか、ノードに接続できるか、システムプロキシまたはTUNモードが有効かを確認し、分割ルーティングのルールがエディター関連サービスをカバーしているか確認します。サブスクリプションURLを信頼できないページに貼り付けたり、スクリーンショット、問い合わせ、公開リポジトリで完全なURLを公開したりしないでください。

Windowsのクライアントでは通常、システムプロキシを設定でき、TUNモードを備えている場合もあります。システムプロキシはプロキシ設定に従うデスクトップアプリに適していますが、一部のCLIプログラムやバックグラウンドサービスは自動的に引き継ぎません。TUNモードはより広い範囲をカバーし、エディター、ターミナル、拡張機能を統一して処理したい場合に適していますが、ローカル開発サービス、仮想マシン、コンテナのネットワークには注意が必要です。

macOSにも、システムプロキシと仮想ネットワークインターフェースという2つの考え方があります。エディターは通常システム設定を読み取れますが、起動方法の異なるターミナルでは環境変数が異なる場合があります。グラフィカルな画面から起動したアプリと、ターミナルから同じアプリを起動した場合でも、引き継ぐ環境が異なることがあります。切り分けでは設定パネルだけでなく、実際のプロセスがどこから起動されたかを確認します。

Linuxのデスクトップ環境でプロキシ設定がどの程度統一されるかは、ディストリビューション、デスクトップコンポーネント、アプリの実装に左右されます。CLIツールは環境変数や独自設定に依存することが多いです。コンテナ、リモート開発環境、サブシステムが独立したネットワーク名前空間を持つ場合、ホスト側のプロキシアドレスに直接アクセスできるとは限りません。経路と待ち受け範囲をそれぞれ確認してください。

モバイル端末は通常、主要なプログラミング環境ではありませんが、テザリング接続やリモートターミナルには利用できます。モバイル通信と無線ネットワークの間で切り替わると、QUICベースのプロトコルと従来のTCP方式で復旧挙動が異なることがあります。テストで重視すべきなのは、特定のプロトコルがすべてのモバイルネットワークで速いと仮定することではなく、セッションを再確立できるかどうかです。

CLIプロキシが見落とされやすい理由

エディターでは補完できるのに、ターミナルからリポジトリを取得したり依存関係をインストールしたりできないのは、よくある層別の問題です。エディターはシステムプロキシに従う一方、ターミナルのプログラムは環境変数だけを読むことがあります。バージョン管理ツールが独自のプロキシ設定を保存している場合もあります。まず現在の環境を確認し、いきなり新しい設定を繰り返し書き込まないでください。

env | grep -i proxy
git config --global --get http.proxy
git config --global --get https.proxy

これらのコマンドが何も出力しなくても、ターミナルがプロキシを通れないとは限りません。TUNモードがネットワーク層で通信を引き受けている可能性があります。逆に、環境変数が存在していても、そのアドレスが有効とは限りません。クライアントが待ち受け方式を変更した後、古い設定が閉じられたローカルエンドポイントを指していることがあります。クライアントのログと実際のリクエストを組み合わせて判断してください。

HTTP_PROXYHTTPS_PROXYはHTTPプロキシでよく使われ、ALL_PROXYはSOCKSに対応するプログラムで読み取られることがあります。ただし、ツールごとに対応範囲は完全には一致しません。バージョン管理ツール、パッケージマネージャー、コンテナツールが独自の設定ファイルを持つ場合もあります。設定前に各ツールのドキュメントを確認し、グローバル設定が社内ネットワーク、プライベートリポジトリ、ローカルサービスへ影響しないようにします。

分割ルーティングでは、ローカルループバックアドレス、LAN上の開発サービス、必要な社内ドメインを保持します。すべての通信を遠隔出口へ送ると、ローカルデバッグ、デバイス検出、社内アーティファクトリポジトリに影響する可能性があります。まず最小限のルールを作り、ログを見ながら不足しているドメインを追加する方法が安全です。出所の不明な長大なルールセットをそのままコピーするのは避けましょう。

DNSリーク、分割ルーティング、出口の一貫性

ここでのDNSリークは、プライバシーだけでなく可用性にも関わります。ドメインをローカルネットワークで名前解決し、接続は遠隔出口から行うと、解決結果と出口地域が一致しない可能性があります。地域別の振り分けを使うサービスでは、この組み合わせの誤りが迂回経路や到達不能なアドレスを増やすことがあります。接続だけをプロキシし、DNSを処理しないと、ブラウザーは正常なのにエディターだけ失敗することがあります。

TUNモードは通常、システムの通信とDNSをまとめて引き受けやすいものの、実際の挙動はクライアントの実装によって異なります。ルールベースのプロキシでは、遠隔DNS、ローカルDNS、ドメイン別の処理を明確に選ぶ必要があります。ブラウザーが独自のセキュアDNSを有効にしていると、システム設定を迂回する場合もあります。DNSをテストするときは、ブラウザー、エディターのプロセス、ターミナルをそれぞれ確認し、一つのページですべてのアプリを判断しないでください。

分割ルーティングのルールは、ワークフローを中心に組み立てます。認証とモデルAPIは同じ出口を使い、コードホスティングとリソースのドメインは用途に応じて処理し、ローカルサービスと社内リソースは直接接続します。メインサイトのドメインだけに一致するルールでは、拡張機能のダウンロード、静的リソース、ログインコールバックが別の経路を通る可能性があります。ログインが繰り返し無効になる場合は、まず関連ドメインを一時的に同じ出口へ統一し、問題が分割ルーティングにあるか確認します。

よくある障害の切り分け手順

障害対応は、境界が明確な層から始めます。まずローカルネットワーク自体が利用できることを確認し、次にプロキシクライアントが接続しているか、アプリがプロキシに入っているかを確認します。最後に目的サービスの状態を判断します。前の層を飛ばしてノードを変更すると、一時的に問題を隠せても、次に同じことが起きる理由を説明できません。

症状 優先して確認する項目 次の手順
エディターにはログインできるが、補完が待機し続ける モデルAPIの分割ルーティング、長時間接続、古いセッション タスクをキャンセルして新しいセッションを作り、回線を切り替えて比較する
エディターは使えるが、ターミナルのリクエストが失敗する 環境変数、ツール独自の設定、TUNの適用範囲 ターミナルが実際に使う出口とローカルプロキシのエンドポイントを確認する
ノードを切り替えても失敗する 古い接続のキャッシュ、DNSキャッシュ、アプリのプロセス 接続を再確立し、必要に応じて該当アプリを再起動する
オフィスネットワークでは使えるが、公衆ネットワークでは失敗する UDPの可用性、認証ページ、ネットワークの制限 現在のネットワークに対応する転送方式へ切り替える
ログイン状態が何度も無効になる 認証ドメインが異なる出口を使っていないか 関連する分割ルーティングのルールを統合し、出口をそろえる

クライアントのログは、「ノードがオンラインに見える」ことより有用です。接続が確立したか、DNSが結果を返したか、どのルールにリクエストが一致したか、失敗がローカル、入口、遠隔のどこで起きたかを確認します。ログにはドメイン、サブスクリプション情報、ローカルパスが含まれることがあるため、サポートへ送る前に機密情報を削除してください。

同じ端末で複数の回線がすべて失敗し、別の端末では正常なら、問題は本体のプロキシ、証明書環境、ファイアウォール、アプリ設定にある可能性が高いです。同じ接続ネットワークにある複数の端末で同じ問題が起きる場合は、ルーティングと転送プロトコルを確認します。このような相互検証により、クライアントの障害を回線の障害と誤認しにくくなります。

最終提案:開発スタイルで選ぶ

短い補完が中心で、チャットの利用が少ない開発者は、まず安定した直結または通常の中継から始め、エディターとターミナルの設定が一致しているか確認するとよいでしょう。エージェントタスク、継続的なチャット、リモート開発リソースを長時間使う場合は、経路をより制御しやすい中継またはIEPL専線を優先し、制限のあるネットワークにも対応できる予備の転送方式を残しておきます。

プロトコルについては、Shadowsocks、VMess、VLESS、Trojanは、通常のTCPとTLS通信だけを許可する環境に適応しやすい傾向があります。Hysteria2とTUICは、UDPを利用できる条件なら弱いネットワーク向けの選択肢になります。プロトコル名だけで恒久的な順位をつけず、現在のネットワークで接続復旧、DNS、分割ルーティング、クライアント対応を検証してください。

実際の選定基準:補完と長時間のチャットを安定して完了でき、ターミナルとエディターの出口が一致し、スリープ復帰後にも再接続できることが、AIコーディングに適した回線の条件です。ピーク速度、ノード名、プロトコルのラベルは手がかりにすぎず、完全なワークフローテストの代わりにはなりません。

最後に、利用中のサブスクリプション、ノードタイプ、プロキシモード、分割ルーティングのルール、CLI設定を含む、復元可能な設定記録を残します。変更するときは一度に一項目だけ調整します。こうすればCursorとCopilotに適した接続方法を見つけられるだけでなく、クライアントの更新、ネットワークの切り替え、開発環境の移行後も違いをすばやく特定できます。