この記事の要点

ShadowrocketのOn Demandは、条件に応じてVPN接続を開始する機能であり、省電力設定ではありません。自身で利用するサービスやサブスクリプションを用意していて、バックグラウンドでの消費電力の原因を調べたいiPhone・iPadユーザー向けに、まず自動接続の起動と接続中の通信処理を区別し、次にシステムのバッテリー記録を確認します。最後に、同じネットワークと設定で有効・無効を比較し、自動接続を使い続けるか手動接続にするかを判断します。

On Demandとバックグラウンド接続は別のもの

まず結論として、On Demandが有効だからといって、それだけで消費電力の原因とは判断できません。また、無効にしただけでVPNが切断されたとも限りません。On Demandが決めるのは、設定済みの条件に基づいてシステムがいつ接続を開始するかです。VPN接続後は、ルーティング設定に該当するネットワークリクエストの処理が続きます。実際の消費電力は、リクエスト数、電波状況、接続の再試行、サーバーの応答、画面の使用状況などにも左右されます。

ShadowrocketでSettings → On Demandを開き、現在有効になっているか、設定済みの条件は何かを確認します。システムは適用される条件に基づいて、オンデマンド接続を確立するか判断します。条件には、利用中のネットワーク環境やネットワークへのアクセス状況が関係する場合があります。「特定のWebページを開いたときだけ動作する」という意味ではなく、画面ロック後すぐに停止することを保証する機能でもありません。設定できる項目はアプリ内の表示に従い、実際の画面と異なるスイッチ名を前提にしないでください。

ネットワーク条件の変化 オンデマンド条件の判定 システムトンネルの確立 ルーティングポリシーによる処理 リクエストの完了または再試行

この流れでは、接続を開始する段階と、接続後に通信を処理する段階を区別しています。Shadowrocketの画面を閉じても、システムのVPNトンネルは接続されたままの場合があります。反対に、アプリの画面を長時間開いていないからといって、バックグラウンドで通信が処理されていないとは限りません。アプリを閉じることは、切断や省電力を確認する確実な方法ではありません。

まずiPhoneのバッテリー画面で確認する3項目

システムの「設定 → バッテリー」を開き、画面に表示される期間を選んでアプリ一覧を確認します。グラフや期間の名称、操作方法はシステムによって異なる場合があるため、実際の端末画面に従ってください。アプリの割合だけを切り取って判断しないようにしましょう。この数値は通常、選択した期間における消費電力の割合を示すもので、そのアプリだけでバッテリーが何ポイント減ったかを表すものではありません。

  1. 集計期間を確認する。問題が起きた時間を含む期間を選びます。グラフで時間や日付を選べる場合は、バッテリー残量が急に減った時間帯に絞ってください。充電中だったか、画面を長時間点灯していたか、Wi-Fiとモバイル通信のどちらを使っていたかも記録します。
  2. アクティビティの内訳を見る。Shadowrocketの項目を開くか、画面上のアクティビティ表示を使って、バックグラウンドでの動作があったか確認します。システムにはネットワーク拡張機能の消費電力を割り当てる独自の集計方法があるため、一覧のひとつの項目だけでネットワーク全体の消費電力を測定することはできません。
  3. 同じ時間帯に使っていたほかのアプリも確認する。動画再生、写真の同期、システムアップデート、大容量ファイルの転送とバッテリー残量の低下が重なっていれば、それらも判断材料に含めます。ほかのアプリが開始したリクエストもVPNを経由する場合があります。「バックグラウンドで長時間動作した」ことと「異常な電池消費」は同じ意味ではありません。

たとえば、ある時間帯にShadowrocketの割合が昨日より高く表示されても、今日はほかのアプリの使用量が少なかっただけで、Shadowrocketの絶対的な消費電力が増えたとは限りません。その時間帯の端末全体のバッテリー残量の推移、アクティビティ、実行していた作業をあわせて確認しましょう。以下の数値は観察方法の目安であり、製品性能や実測のバッテリー駆動時間を示すものではありません。

2回
ほかの条件をそろえ、On Demandを有効にした場合と無効にした場合をそれぞれ観察
30分
各回の初期観察時間の目安。差がはっきりしない場合は観察時間を延長
3項目
バッテリー残量の変化、バックグラウンドアクティビティ、接続の再試行を記録

結論:同じ時間帯の状況を比べ、割合の順位だけで設定を変えない

まずバッテリー残量が明らかに減った時間帯を選び、ネットワーク上の作業や再接続の記録を確認します。割合だけが上がり、端末全体の消費が速くなっていないなら、その数値だけを理由に接続方法を変える必要はありません。

手順を決めて有効・無効を比較する

比較テストでは、まず調べたいことを明確にします。「自動接続が頻繁に起動するか」と「接続中のほうが切断中より電池を消費するか」は別の問題です。ひとつのテストで混同しないでください。両方のテストで同じVPN接続を手動で維持する場合、On Demandの有効・無効による違いは主に自動接続の動作に現れます。同じ通信の処理コストまで変わるとは限りません。

  1. 現在の状態を記録する。Homeで接続状態とGlobal Routingの選択内容を記録し、Configで使用中の設定を確認してから、Settings → On Demandで現在の状態を記録します。記録にとどめ、消費電力の調査に便乗してルール、プロトコル、サブスクリプションを変更しないでください。
  2. テスト環境をそろえる。2回とも同じ場所のWi-Fi、近い画面輝度、同じ作業内容にし、低電力モードの状態もそろえます。1回目は電波の弱いモバイル通信、2回目は安定したWi-Fiでテストして、その差をOn Demandの影響と判断しないでください。
  3. 有効時の状態を観察する。現在のオンデマンド条件を維持し、開始時と終了時のバッテリー残量、VPNが自動接続したか、切断と再接続を繰り返したか、画面ロック中に実際の同期作業があったかを記録します。
  4. 無効時の状態を観察する。On Demandを無効にします。自動再接続を調べる場合は、まずHomeで切断してから、接続動作が続くか観察します。接続中の処理コストを調べる場合は手動接続し、前回と同じ作業を行います。
  5. 結果を再確認し、設定を戻す。結果をシステムのバッテリー画面と照合します。差がわずか、集計期間が一致しない、または環境が大きく変わった場合は、観察を繰り返してください。終了後は必要な設定に戻し、テストのために必要な接続を長時間中断しないようにします。

Global Routingは通信経路を決める設定で、接続のオン・オフとは異なる

Global RoutingとOn Demandは、それぞれ異なる役割を担います。前者はリクエストのルーティング方法を決め、後者は条件に応じて接続を開始します。Global RoutingをDirectにしても、システムのVPNトンネルが終了したことにはなりません。Configに変更しても、プロキシポリシーに一致するリクエストが発生しないとは限りません。

画面上の項目確認するポイント調査時の注意点
Proxyプロキシ経由のルーティングを使い、現在選択されているアウトバウンドが利用可能か確認します。選択内容だけで消費電力の大小は判断できません。通信量と接続品質も確認してください。
Direct直接接続する方式です。VPNの切断ボタンではないため、「トンネルが停止した」と判断する根拠にはなりません。
Config現在の設定にあるルールとポリシーに従ってリクエストを処理します。同じ設定で比較し、ルール変更によって通信経路が変わらないようにします。
Scene設定済みのシーンと、その実際の適用結果を確認します。シーンの設定によって比較条件が変わる場合があります。実際に適用されたルーティング動作を記録してください。

Configを使用している場合、DOMAIN-SUFFIX、IP-CIDR、GEOIP、FINALなどのルールがリクエストのマッチ結果に影響します。ただし、「ルールを増やすこと」を一般的な省電力手順と考えないでください。まず、対象のリクエストに適用されたポリシーが想定どおりか確認し、重複アクセスや失敗による再試行がないかを調べます。根拠がなければ、現在の設定を維持するほうが比較しやすくなります。

再接続を繰り返す場合は、まずネットワークエラーを調べる

電波が弱い、ネットワークが切り替わる、サーバーに到達できない、接続パラメーターが一致しないといった原因で、接続が何度も試行される場合があります。On Demandを無効にして再接続が減っても、自動起動がその過程に関与していたとわかるだけで、根本的な接続障害が解消したとは限りません。まず安定したネットワークで、利用中の接続をテストし、アドレス、ポート、プロトコルのパラメーターを確認してください。最初からプロトコルを変えてエラーを覆い隠そうとしないでください。

以下はネットワークログに記録されることのあるエラー例であり、障害のたびに必ず表示される定型メッセージではありません。実際のログに同じ文言がある場合に限り、その内容に沿って確認してください。接続段階が異なっても同じエラーが出ることがあるため、前後のログもあわせて判断します。

エラー:i/o timeout

原因と対処:ネットワークの読み込みまたは書き込みが、規定時間内に完了しなかった状態です。利用中のネットワーク、名前解決、接続先からの応答などが原因として考えられます。まず安定したネットワークに切り替えて再テストし、利用中のサービス事業者から提供されたアドレスとポートを確認します。エラーが接続確立時とデータ転送時のどちらで発生するかも調べてください。

エラー:connection refused

原因と対処:接続が拒否されています。接続先のポートでサービスが待ち受けていない、またはアクセスが明示的に拒否されている可能性があります。アドレス、ポート、サービスの稼働状況を照合し、利用中のサービス事業者に確認してから再テストしてください。On Demandを何度切り替えても、接続先の待ち受けに関する問題は解決しません。

使い方に合わせて有効・無効を選ぶ

判断のポイントは、接続を自動で復帰させたいか、必要なときに手動で接続するのを忘れずに行えるかです。On Demandに、誰にでも当てはまる省電力の正解はありません。無効にした場合に直接変わるのは自動起動の動作であり、バッテリーの推移が改善するとは限りません。有効にする利点は、条件に該当したときの手動操作を減らせることです。ネットワーク切り替え時の問題をすべて解消できるわけではありません。

結論:自動での接続復帰が必要なら有効のままにし、不要なら検証可能な手動操作にする

必要な作業を安定して完了できることを前提に接続方法を選びます。繰り返し比較して、無効にしたときに不要な接続が減り、通常の使い方にも影響しないと確認できた場合に限り、自分の利用環境に合わせてOn Demandを無効にします。

設定変更後は一通り確認して終了する

調査が終わったらHomeで接続状態を確認し、Global Routingで実際に使用される方式を確認してから、Configで有効な設定を確認します。自動接続が必要な場合は、Settings → On Demandで適切な設定に戻してください。手動接続を選ぶ場合は、切断後にほかの既存VPN自動接続設定によって再接続されないことも確認します。

  1. 普段利用しているサービスにアクセスし、想定どおり接続できるか、リクエストがどの経路を通るかを確認します。VPNの接続状態を示す表示だけで、すべてのリクエストが成功したと判断しないでください。
  2. 次に、同程度の時間使った後でシステムの「設定 → バッテリー」を再確認します。Shadowrocketのアプリ一覧での順位だけではなく、端末全体のバッテリー消費が継続して改善したかを判断してください。
  3. 最終的なスイッチの状態、テストに使ったネットワーク、エラーの記録を残します。再現性のある差がなければ、普段の使い方に合った設定に戻し、複数のパラメーターを変更し続けないようにしてください。

この記事では、Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuardの消費電力に一律の順位を付けていません。プロトコルのパラメーター、通信経路の品質、通信量はそれぞれ異なるため、プロトコル名だけでバッテリー駆動時間を予測することはできません。操作手順ははじめに、用語の意味は用語集をご覧ください。

App Storeでの正規アプリ確認と接続設定

ShadowrocketはAppleプラットフォーム向けのクローズドソースの有料アプリで、App Storeで買い切り購入できます。購入前に、デベロッパ名がShadow Launch Technology Limited、アプリIDが932747118であることを確認してください。システム要件はApp Storeの掲載内容をご確認ください。アプリの買い切り購入に通信サービスのプランは含まれません。この記事では、利用者自身がサービス事業者とサブスクリプションを用意していることを前提としており、接続先やサブスクリプションの提供、販売、推奨は行いません。

正規アプリの確認ページへ 使い方を見る