高速アプリ切り替えとは何ですか?

高速アプリ切り替えとは何ですか?

iTunesを使ってiPhoneやiPod touchに最新のiOS 4をインストールしたばかりの方、あるいはこれからiPhone 4を手に入れようとしている方は、この新システムの目玉機能の一つである「高速アプリ切り替え」について疑問に思われるかもしれません。「高速アプリ切り替え」とは何でしょうか?マルチタスクとどう関係があるのでしょうか?ホームボタンを2回押しするだけの新しい動作でのみ機能するのでしょうか?そして、なぜほとんどのアプリでは、特に目立った新機能や新しい機能は見られないのでしょうか?

アダムが挑発的な「iPhone OS にマルチタスクは必要か?」(2010 年 2 月 8 日)を執筆した、あのワクワクする昔の日々(本当にたった 4 か月前のことだったのだろうか?)に戻りましょう。アダムが当時、先見の明のある鋭い分析で指摘したように、マルチタスクの意味は人によって異なります。(1) Mac OS X で実際に複数のアプリケーションが同時に実行され、アプリケーション A からアプリケーション B のウィンドウに戻ると、終了したときと同じ状態になっている、ということを指すかもしれません。あるいは、(2) 最近使用したアプリケーションをすばやく切り替える機能(終了時に状態が保存されるため、終了したときと同じ状態のままであるかのように動作する)
を指すかもしれません 。Apple が実際に実装したのは、オプション 2 よりも少し野心的なものですが、オプション 1 ほどリソースを消費しません(また、危険性も低くなります)。

要点をまとめると、iOS 4 でアプリを実行中にホームボタンを一度押して終了しても、アプリは終了しません。代わりに、「2001年宇宙の旅」の極低温冬眠中の科学者のように、仮死状態になります。アプリはシステムからのイベントの受信を停止するだけで、実行ループはループしません。アプリはバックグラウンドで停止し、停止状態になりますが、リソースとインターフェイスがまだ存在するという意味で「実行中」のままです。そのため、再開するために最初から再起動する必要はありません。そのため、どのような方法であれ、そのアプリに戻ったときに、アプリは中断した時点の作業を即座に再開できます。

この動作は高速アプリ切り替えであり、Apple が iOS 4 でマルチタスクと呼んでいるものの大部分を占めます。(これは iOS 4 のマルチタスクのすべてではありません。特殊な機能を持つ一部のアプリは、1 つのスレッドがアクティブなまま一時停止状態になることが許可されるようにシステムに登録するためです。このような機能は、オーディオの再生、位置検出、および Voice over IP に厳密に制限されています。ただし、この記事ではこれらの状況については扱いません。)

したがって、ホームボタンを 2 回押したときに表示されるアプリの高速切り替えインターフェース (このジェスチャーも Adam の記事で正しく予測されていました) は、この話とはほとんど関係がありません。実際、iOS 4.0 を早期に採用した人は、アプリの高速切り替えインターフェースに実行中のアプリが一覧表示されないことに驚きます。表示されるのは最近使用したアプリです。これは、アプリを終了して、最近使用した別のアプリを起動 (または再開) するのに便利な方法ですが、iPhone OS の初期のバージョンに存在していてもおかしくありませんでした。これは単なるインターフェースであり、Mac の Command-Tab スイッチャーの iPhone 版です。また、非常に優れた、非常にありがたいインターフェースでもあります。 アプリ間の切り替え、特に特定のアプリ間の切り替えは、私にとって非常に頻繁に行うことなので、iPhone が最初からこのように動作していればよかったのにと思います。しかし、これはアプリの高速切り替えの基盤となるマルチタスク技術とはまったく関係がありません。

実際には、どのアプリが実行中(一時停止中)なのかを簡単に確認する方法はありません。アプリを起動または再開すると、通常、アプリが終了されたのか一時停止されたのかを判別できます。終了されたアプリは起動手順(スプラッシュスクリーンなどの分かりやすい表示が含まれる場合があります)を実行するのに対し、一時停止されたアプリは、終了した場所に即座に表示されるからです。また、アプリを完全に終了(終了)する簡単な方法はありません。アプリを終了させる方法は、高速アプリ切り替えインターフェースを使用するか、ホームボタンを1回押すかに関わらず、システムによって処理されます。ユーザーが操作することはできません。

ここまで読んで、アプリが本当に終了する仕組みがあるのか​​と疑問に思われた方もいるかもしれません。iPhoneを再起動するまで、何十個ものアプリがフリーズしたままの状態になっているなんて、想像もつきませんよね?アプリが本当に終了するケースは3つあります。

  • システムはいつでも、一時停止中のアプリを終了できます(これもまた、「2001年宇宙の旅」の科学者たちのように)。システムがそうするのは、(HAL 9000のように)気が狂ったからではなく、一時停止中のアプリはCPU時間を全く使用していなくても、メモリを消費しているからです。モバイルデバイスではメモリは限られた貴重なリソースです。したがって、システムは一時停止中のアプリを終了させることでメモリを回収する権利を留保しています。
  • 一時停止中のアプリは手動で終了できます。ホームボタンを2回押してアプリの高速切り替えインターフェースに入り、そこに表示される4つのアイコンのいずれかを長押しして「シェイクモード」に切り替え、4つのアイコンのいずれかにある赤い削除ボタンをタップすると、アプリが終了します。(もちろん、アプリが全く起動していない場合は、最近使用したアプリのリストから削除されるだけです。)
  • 画像

  • アプリが iOS 4 用に特別に再コンパイルされていない場合、どのような方法でも、アプリを離れるとアプリ終了します。

この最後のポイントは重要です。特に、これまでマルチタスクについて述べてきたことすべてと矛盾するからです。マルチタスクに参加し、サスペンド状態を可能にするには、すべてのアプリをiOS 4用に再コンパイルする必要があることが判明しました。iOS 4で再開した際に、以前のバージョンのシステムで再起動した時と何ら変わらないように見えるアプリは、単にまだ再コンパイルされていないだけです。少し考えてみればわかるように、大多数のアプリがまさにその状態です。

開発者がiOS 4向けに再コンパイルし、AppleのApp Storeのゲートキーパーを通過してデバイスにアップデートを届けるまでには、明らかに時間がかかるでしょう。それまでは、iOS 4のマルチタスクのメリットをそれほど実感できないでしょう。新しい動作をするのは、Apple独自のアプリと、既にアップデートされている少数のアプリだけです。

さらに、iOS 4 用に再コンパイルするのは簡単ではありません(TidBITS News アプリでそれを試しているときに気づいたのですが – 2010年1月4日の記事「無料 TidBITS News iPhone アプリ」参照)。というのも、ある程度の書き換えが必要になるからです。このアプリは、新しい iOS 4.0 フレームワークにリンクするだけで、コードを変更することなく即座にマルチタスクに対応します – しかし、だからといってマルチタスクにうまく対応しているわけではありません。

大きな問題の一つは、iOS 4ネイティブアプリはサスペンド時には通知されますが、終了時には通知されないことです。そのため、アプリは、後で終了する場合に備えて、サスペンド時に状態を保存するために、終了時に行っていたのと同じ処理をすべて実行する必要があります。もう一つの問題は、サスペンド中のアプリは、後で問題を引き起こす可能性のある処理を停止する必要があることです。後でシステムによってバックグラウンドで終了される候補になりたくない場合は、メモリ使用量を明示的に削減する必要があります。ネットワークアクティビティはすべて停止する必要があります。ユーザーが後で(おそらく数日後に)再開したときに意味をなさない可能性のあるアラートなどのモーダル状態をキャンセルする必要があるかもしれません。

これらはすべて、TidBITS News アプリを iOS 4.0 にアップデートする際に私が心配しなければならなかったことです。基本的に、ユーザーがやって来て一時停止した瞬間にアプリがどのような状態になっているか、あらゆる状況を考慮する必要がありました。これは驚くほど困難であることがわかりました。しかも、TidBITS News アプリは非常にシンプルで小さいのです!ですから、お気に入りのサードパーティ製アプリがアップデートされるまでにどれほどの時間がかかるか想像してみてください。

しかし、アップデートが完了すれば、瞬時に切り替えができるようになります。アプリの切り替えが本当に速くなり、アプリを終了して後で戻ってきたら、すぐに前回終了したところから再開できる、という体験ができるでしょう。これがiOS 4版のマルチタスクです。

Idfte
Contributing writer at Idfte. Passionate about sharing knowledge and keeping readers informed.