iPhoneアプリを使い終わったら強制終了すればバッテリーを節約できると思っていませんか?それは間違いです!この記事では、この大きな誤解を解き明かします。
コーヒーショップの列に並んでいると、目の前にいる男性が、Appスイッチャーのカードを全部上にスワイプして、ついさっき起動したばかりのアプリを強制終了させようと必死になっている。なぜそうしているのかは分かっているが、つい尋ねてしまう。「バッテリーを節約するためだよ」と彼は答えるが、自分が今したことがiPhoneのバッテリー消費に全く逆の効果をもたらしていることに気づいていない。
彼に間違いを指摘し、アプリを強制終了するとAppスイッチャーに残しておくよりもバッテリーの消耗が早くなる理由を説明しても無駄だ。何年も同じことを言い続けてきたので、無駄だと分かっている。私の家族を含め、誰もこの悪い習慣を断ち切ることはできず、OSが実際にバッテリーを節約する方法でアプリを管理してくれると信じることができていない。
最悪なのは、Apple Storeの店員自身がアプリを強制終了するのが良いと言っていることです。彼らも完全に間違っています!彼らはただ、そのことを知らないだけです。
バッテリーが長持ちすると信じてアプリを強制終了している人は、その行為を止めてこれを読んでください。
長い話は短く
詳細を気にしない人のために、話の要点を述べます。
- アプリが正常に動作していない場合を除き、アプリを強制終了しないでください。
- 多くの人が信じているのとは異なり、アプリを強制終了すると実際にはバッテリーが無駄になります
- Appleは開発者に、アプリがバックグラウンドで効率的に動作するための適切なツールを提供している。
- ユーザーは、システムがアクティブでないアプリを効果的に管理していることを信頼する必要がある
アプリの強制終了について詳しく知りたい場合は、詳細な説明を読んでください。
用語: 終了と強制終了
わかりやすくするために、基本的な用語についてお互いの認識を一致させておきましょう。
アプリを閉じるには、画面の下から上にスワイプするか、古い iPhone の場合はホームボタンを押します。
アプリを強制終了するには、ユーザーは上にスワイプして押したまま(またはホームボタンを 2 回押して)、App スイッチャーのアプリ カードを上にスワイプする必要があります。
神話
もちろん、Appスイッチャーからアプリを強制終了すれば、アプリがバックグラウンドで動作しなくなるためバッテリーを節約できるという迷信があります。これは多くの人が信じていることで、多くの場合、友人や家族、あるいはもっとひどい場合はAppleの社員からそう言われています。
現実
実際には、画面下部から上にスワイプ(またはホームボタン)してアプリを閉じると、CPUの使用が停止し、アプリのメモリ使用も一時停止されます。その際、アプリはバックグラウンドでアクティブに動作していません。
例外もありますが、それについては後ほど詳しく説明しますが、一般的な考え方としては、画面の下から上にスワイプするとアプリがフリーズし、実質的にバッテリーを消費しないサスペンド状態になります。アプリをメモリに保持することで、システムはアプリを再度起動した際に、前回中断したところから再開できるようにします。
アプリを強制終了すると、そのアプリが使用していたメモリがオフロードされます。これは当然のことながら、ごくわずかではありますが、バッテリーに悪影響を及ぼします。次に同じアプリを起動すると、オペレーティングシステムはアプリをメモリに再読み込みするプロセスを実行し、さらにバッテリーを消費します。アプリを強制終了してすぐに再起動すると、そもそもアプリは電力を消費していなかったため、実際にはバッテリーを無駄に2回も消耗してしまうことになります。
重要なのは、アプリを閉じると、そのアプリは CPU を使わずに一時停止状態になり、メモリ内に残っているにもかかわらず、バッテリーにはほとんど影響がないということです。
繰り返しになりますが、この一般的な経験則には例外があり、それについては後で説明します。
このように考えてみましょう
私たちのポッドキャスト「Let's Talk Jailbreak」の前回のエピソードで、私が使った例え話が何人かのリスナーからとても理にかなっていると言われたので、ここで詳しく説明しようと思いました。
テレビを見ながら喉が渇いたと想像してみてください。キッチンに行き、グラスを手に取り、水を満たして半分飲みます。そして、グラスの残り半分をシンクに空け、グラスを洗ってからソファに戻ります。
20分後、また喉が渇きました。キッチンに戻り、グラスに水を注ぎ、また半分飲み、残りをシンクに捨て、グラスをまたきれいに洗います。
意味が分かりませんよね?近いうちにまた喉が渇く可能性が高いのに、なぜその水を捨てるのでしょうか?半分入ったグラスをカウンターに置いて、必要な時に水を補充する代わりに、そのまま飲まないのはなぜでしょうか?
アプリを強制終了すると、まさにリソースが無駄になります。アプリをメモリから削除し、再起動時に再度読み込むことで、バッテリーを無駄に消費しているのです。
アプリを閉じるときにiOSがどのように処理するか
iOS とマルチタスクに関する誤解を詳述した投稿で、Fraser Spears 氏は、アプリの実行状態は次の 5 つのいずれかであると説明しています。
- 実行されていません: アプリは起動されていないか、終了しています。メモリに常駐していません。バッテリーも使用していません。
- 非アクティブ: アプリはフォアグラウンドで実行されていますが、使用されていません。例えば、アプリが画面に表示されている状態でデバイスをロックした場合などです。メモリに常駐していますが、CPUやバッテリーは消費しません。
- アクティブ: アプリは現在使用中です。CPUを使用し、メモリに常駐しています。バッテリーも消費します。
- 背景:アプリはコードを処理中ですが、画面には表示されません。CPUを使用し、メモリに常駐しています。バッテリーも消費します。
- 一時停止:アプリは画面に表示されておらず、コードも実行されていません。CPUは使用していませんが、メモリ上に常駐しています。バッテリーも消費していません。
アクティブからバックグラウンド、そして一時停止へ
アプリを使用中の場合、そのアプリはアクティブ状態とみなされます。CPUとメモリを使用しています。画面下部から上にスワイプするとすぐに、アプリはバックグラウンドに移動され、ごく短時間(数秒)待機した後、一時停止されます。アプリを閉じてから数秒後、一時停止中のアプリはCPUを使用しなくなりますが、メモリ内には引き続き存在するため、次に開いたときに高速に再開できます。
停止から停止へ
例えば、メモリを大量に消費するゲームを起動しようとしていて、デバイスにメモリが必要な場合、システムはフォアグラウンドアプリ用のスペースを確保するために、一時停止中のアプリを消去することがあります。一時停止中のアプリを消去すると、そのアプリは「実行されていない」状態になり、メモリから完全に削除されます。簡単に言えば、これはiOSがユーザーに代わってアプリを自動的に強制終了し、他のアプリのためにメモリを解放するのと同じです。
アプリの実行状態の詳細については、Apple の iOS 向けアプリ プログラミング ガイドをご覧ください。
例外
先ほど述べたルールの例外についてお話ししましょう。Appleは開発者向けライブラリで、この種のアプリについて非常に詳細な情報を提供しています。ここで簡単にまとめておきます。
短時間のタスクの実行を完了する必要があるアプリ: フォアグラウンドでプロセスを開始したアプリですが、アプリ終了時にそのプロセスを完了するための時間延長が提供されます。例えば、サードパーティ製のメールクライアントを使用して非常に大きなファイルを送信している場合、「送信」をタップしてアプリを閉じることができます。このアプリは、タスクを完了する間、拡張機能をバックグラウンドで実行するよう要求できます。タスクが完了すると、アプリは一時停止されます。
バックグラウンドでコンテンツをダウンロードする必要があるアプリ:フォアグラウンドでダウンロードを開始するものの、アプリがバックグラウンドに移動するとタスクを完了するのに時間がかかるアプリです。Appleによると、これらのアプリはダウンロードの管理をシステムに委ねることができるため、ダウンロード中にアプリを一時停止または終了することができます。良い例としては、ポッドキャストアプリが新しいエピソードをダウンロードしている場合が挙げられます。ダウンロードを開始してアプリを閉じることはできますが、ダウンロードはバックグラウンドで処理されます。
長時間実行されるタスクを実行する必要のあるアプリ: 音声 コンテンツの再生 (音楽アプリ)、音声の録音、位置情報のアクティブな追跡 (ナビゲーション アプリ)、Voice over Internet Protocol (VoIP) のサポート (Skype など)、新しいコンテンツの定期的な処理 (雑誌スタイルのアプリ)、外部アクセサリからの定期的な更新の受信 (物理的な心拍数モニターにリンクされたアプリ) など、特定の種類のタスクを実行するためにバックグラウンドでの実行を許可する必要があるアプリです。
もう一度言いますが、ユーザーはシステムがこれらのアプリを効率的に管理することを信頼する必要があります。
バックグラウンド実行の詳細については、Apple の iOS アプリ プログラミング ガイドをご覧ください。
アプリのバックグラウンド更新について
とはいえ、バックグラウンド更新が有効になっているアプリケーションはどうなるのかと疑問に思われる方もいらっしゃるかもしれません。この機能に関する技術的な詳細は、以下のサポートドキュメント以外ではほとんど見つかりませんでした。
別のアプリに切り替えた後、一部のアプリは短時間実行された後、一時停止状態になります。一時停止状態のアプリは、アクティブに使用されていない、開かれていない、またはシステムリソースを消費していない状態です。Appのバックグラウンド更新を使用すると、一時停止中のアプリでもアップデートや新しいコンテンツを確認できます。
実は、この同じドキュメントの以前のバージョンでは、バックグラウンド アプリ更新が実際にどのように機能するかについて、より詳しい説明が書かれていました。
一部のアプリはバックグラウンドで動作し続けることがあります。これらのアプリを自動的に更新するには、「Appのバックグラウンド更新」をオンにします。この設定により、アプリは新しいコンテンツをチェックしてアップデートをダウンロードしたり、プッシュ通知を受信したときにバックグラウンドで更新コンテンツを取得したりできるようになります。
バッテリーを節約するため、バックグラウンドで実行されているアプリは、デバイスがWi-Fiに接続されているとき、電源に接続されているとき、またはデバイスがアクティブに使用されているときなど、特定のタイミングで更新されます。iOSはデバイスの使用状況に基づいてパターンを学習し、バックグラウンドで実行されているアプリの更新タイミングを予測しようとします。また、夜間などデバイスが通常非アクティブな時間帯も学習し、デバイスを使用していないときにアプリが更新されないようにします。アプリは、位置情報に基づいてバックグラウンド更新のスケジュールを設定することもできます。
以前のサポートドキュメントと常識に鑑みると、iOSはアプリのバックグラウンド更新を巧みに実行しており、一日中アプリを無計画に更新し続けることはないと推測できます。例えば、Facebookのフィードを一日中バックグラウンドで更新し続けるようなことはしません。
バッテリー消費を気にするなら、「設定」>「一般」>「Appのバックグラウンド更新」と進み、使わないアプリやバックグラウンド更新をそれほど気にしないアプリを無効にしておくのが良いでしょう。個人的には、約80%のアプリの「Appのバックグラウンド更新」をオフにしています。これらのアプリは、手動で起動しなくても更新されるほど気にしないので、更新されても大丈夫です。
こちらもご覧ください: iPhoneのバッテリー寿命を節約する方法
では、いつアプリを強制終了すればよいのでしょうか?
理論上は、アプリケーションを強制終了する必要はまったくありません。しかし実際には、アプリが正常に動作しない、あるいはフリーズしているなど、強制終了しなければならない状況もあるため、状況は多少異なります。例えば、私はMessengerとSkypeのアプリケーションを常に強制終了しています。これらのアプリケーションはバッテリー消費が激しいと考えているからです。このような場合は、もちろん強制終了することをお勧めします。それ以外のアプリケーションはiOSに任せましょう。それがiOSの役割です。あなたはデバイスを楽しむことだけに集中してください。
さあ、ご友人やご家族のためにも、お願いがあります。もし誰かがアプリケーションを強制終了しているのを見かけたら、この投稿へのリンクを送るか、強制終了は絶対にやってはいけないことだと説明してください。