【Giz Explains】スマートフォンごとに違うマルチタスキング、どうなってるの?

2010.05.07 23:00
  • このエントリーをはてなブックマークに追加

100506_multitasking1.jpg


各プラットフォームの特徴が出てる感じです。

iPhone OS 4がマルチタスク対応し、スマートフォンでのマルチタスキングはもはや当たり前になりました。が、一口に「マルチタスク」といっても、実現方法は各プラットフォームごとに結構違っています。今回は、主要プラットフォームがどうやって複数アプリをさばいているのか、解説します!


スマートフォンの制約

プラットフォームごとの違いに入る前に、共通する制約をまとめます。

スマートフォンは、ポケットに入る小さなコンピューター。とはいえ、デスクトップにはない制約があるために、マルチタスキングがもっとずっとトリッキーです。特に、以下4つのリソースが制限されており、これらがほぼそのままスマートフォンでのマルチタスキングを形作る要因になっています。

  • スクリーンサイズ:3~4インチのスクリーンで一度にできることは非常に限られます。
  • バッテリー寿命:電話ですから、丸1日か、それに近い時間はもってほしいですよね。
  • CPU:サイズは小さく、バッテリー寿命は長くするために、どんなラップトップよりも遅いです。
  • メモリ:バッテリー寿命のせいもあって、あまりたくさんは積めません。

最後に挙げたメモリ問題のために、一度にできることはとても少なくなります。また、ディスクスワップも主要なOSではできないので、ストレージをバーチャルメモリとして活用するなんてこともできません。RAMが潤沢でないことは、バッテリー寿命問題に次いで致命的だと思われます

デスクトップでのマルチタスキングに関しては、たとえばWindowsからLinuxやMacに移行しても、ユーザーはそれほど違いを感じません。でもスマートフォンでは、各プラットフォームがそれぞれの考えでそれぞれのマルチタスキングを実現しています

たとえば旧Windows MobileやBlackBerryでは、サードパーティアプリがほとんど好き放題に何でもできる状況でした。が、一方でiPhone OS 4.0(プレ版)やWindows Phone 7では、制限が非常に多くなっています。スマートフォンでは共通機能である、通知機能や高速アプリスイッチングでさえ、プラットフォームごとに大きく異なっています。

続きで、主要プラットフォームの「マルチタスキング」をそれぞれ解説します
 

Android

100506_multitasking2.jpg


Androidのマルチタスキングは、なかなか面白いです。バックグラウンドでアプリを動かすことについてはとてもオープンでありながら、同時にユーザーからはそれを全く見せないようにする、という、ハイブリッドなやり方です。このためユーザーは、能動的にアプリを開いたり閉じたりしなくてよいのです。ちょっと複雑なので、Androidのエンジニアに中がどう動いているか、話を聞いてみました。


・アプリを切り替えると、どうなる?

もともと立ち上げていた方のアプリは、停止するわけではなく、プロセスは上がりっぱなしです。少なくとも、上がっていられる間は。Androidがメモリが足りないと検知したら、プロセスを止めてリソース負荷を減らします。そのときAndroidはアプリに対し、アプリを切り替えたときの状態を保存するように指示します。そうすることで、いつどこでプロセスを止めても、止めたアプリに戻った時には元の状態を回復できます


・バックグラウンドで何ができる?

Androidはサードパーティアプリのマルチタスキングのために、基本的な機能をふたつ用意しています。「ブロードキャストレシーバー」「サービス」です。

ブロードキャストレシーバーでは、バックグラウンド動作に入ろうとするアプリは、イベントを通知してもらうようリクエストします。イベントとは、たとえば500メートル移動したら、とか、バッテリーが一定のパーセンテージになったとか、です。グーグルのプッシュを使ったアプリ、たとえばGmailなどが動く仕組みはこれです。メールチェックするためにサーバーに定期的にPingを打つのではなく、メールが届いたという通知を待つのです。そうすることで、アプリは閉じてしまっても問題なくなり、リソースを節約できると同時に、必要なときには再開することができます

サービスはより古典的なバックグラウンドプロセスで、音楽を流すアプリとか、ターンバイターン方式のナビゲーションなどで使われます。これはつまり、アプリがある一定時間動きたいというリクエストを出すことができる機能です。


・バックグラウンドでできないことは?

Android初期の、ゴミみたいなバッテリー寿命を覚えているでしょうか? あれは、バックグラウンドでアプリが消費できるリソースが無制限だったために起こった現象でした。Android 1.5以降は、バックグラウンドで動くアプリはCPU全体の5~10パーセント以内しか使えないよう上限をかけられています。これはAndroidでは唯一の大きな制限です。もうひとつ、アプリが前面に出にくいようになっているのも制限と言えば制限で、これは、ウィンドウ・シェードでの通知システムがあるためです。


iPhone OS 4.0

100506_multitasking3.jpg


iPhoneは元々マルチタスキングOSではありましたが、それは自社アプリのみでした。iPhone 4.0ではそれが変わります。サードパーティアプリでもマルチタスキング、バックグラウンド動作ができます。でも、アップルらしく、コントロールされた中でになります。Androidと同様、ユーザーはアプリの開け閉めを自分で管理する必要はなく、システムが面倒を見てくれます。残念ながら技術的な細かいところは未公開なのですが、基本的なところはわかってきました。


・アプリを切り替えると、どうなる?

発表された7つのマルチタスキングサービスのうち、アプリ切り替えのときにはふたつのサービスが活躍します。まず高速アプリスイッチング機能では、アプリは閉じられるのではなく凍結されます。これは、ユーザーがアプリを再開するとき、リロードしなくても切り替えた時点に戻れるようにするためのものです。ユーザーはアプリを完全に閉じるかどうか能動的に管理しているわけではないので、システムは、あまりにアプリが立ち上がりすぎているときに閉じているようです。この点はある意味Androidに似ています。

もうひとつの機能はタスク・フィニッシング機能です。これは、アプリがあるタスクを動かしている最中にユーザーが別のアプリに切り替えてしまったとき、アプリからOSに対し、タスク完了するまで動作し続ける必要があることを通知できるというものです。


・バックグラウンドで何ができる?

サードパーティアプリは、タスク・フィニッシングのほかに、アップルの新マルチタスキングサービスを使って限定的ながらバックグラウンド動作が可能です。iPhoneとAndroidの違いは、iPhoneではアプリは完全に動作しているのではなく、これらアップルのサービスを通じて動いている、ということです。ユーザーが「できること」として意識するのは、VoIP(Skypeなどを使って電話をかけたり受けたり)、バックグラウンドオーディオ(PandoraやRhapsody、Slackerをバックグラウンドで流す)、バックグラウンドでの位置情報でしょう。位置情報に関しては、バッテリー寿命を保つには基地局を使う方式、ナビゲーションアプリならフルのGPSトラッキングが選べます。


・バックグラウンドでできないことは?

基本的に、7つのサービスに指定されていないものは何もできません。なので、VoIPとかバックグラウンドオーディオとか位置情報でないものは、バックグラウンドで動作できないものと思われます。でも、高速復帰できるようにメモリに凍結されることはできます。なので、手を離しているときに動いてもらう必要がないアプリであれば、問題ありません


 

WebOS

100506_multitasking4.jpg


Palmは最近HPに買収されましたが、その主なねらいはWebOSでした。Palmは、タスクベースのマルチタスキングについてはおそらくもっともエレガントに実現しています。ユーザーがアプリの開け閉めを管理するのが一見面倒ですが、開いているアプリをフロートするカードとして表現するメタファーが優れているので、問題ないのです。とはいえ、裏ではいくつもの機能が動いていて、見た目より複雑なのです。PalmのCTO、ミッチ・アレン氏に話を聞きました。


・アプリを切り替えると、どうなる?

「アプリを切り替える」の意味によって違います。カードが開いているときに、フリックしてカードを消せば、アプリは完全に死にます。そうでなく、元のカードを開けたままで別のカードにスイッチするのであれば、アプリは「最小化された」ことになり、半休眠状態に入ります。半休眠状態では、アクセスできるサービスが制限され、加速度計のようなものは使えなくなります。また、カードをたくさん開きすぎてメモリが足りない場合は、OSから警告が出されます。


・バックグラウンドで何ができる?

バックグラウンド動作にはいくつかの方法があります。最小化されたカードでは、アプリは「データとネットワークへのアクセスに関してはほとんどのことが可能」とアラン氏は言います。なぜなら「我々はオープンアーキテクチャーを目指しているから」ということで、「ピュアなバックグラウンドアプリ」は自己起動をスケジュールして最長30秒間データにアクセスできたり、さらに次の起動をスケジュールできたりもします。アプリを完全に閉じてしまった場合、そのアプリはPalmで言うところのダッシュボードを開くことができます。ダッシュボードとは「トラフィックモニターみたいなもの」で、基本的には通知を受けることができる、というものです。


・バックグラウンドでできないことは?

アプリごとに異なります。標準的なWeb言語のアプリ、基本的に1月以前のもの全てに関しては、アラン氏によると、最小化されているときはほとんど何でもオープンにアクセス可能です。が、「バッテリー消耗が激しい」Palmスロットルサービス、たとえばコンスタントなデータリクエストや加速度計へのアクセスはできません。Palmでは全体的に制限を微妙にゆるくする方向です。バックグラウンドアプリが今は30秒間データリクエストできますが、それがかつては15秒でした。PDKを使ったアプリ、たとえばCESで紹介されていたゲームのようなものは、内部のハードウェアにもアクセスできますが、他のアプリとは違う制限もあります。たとえばメモリ利用が制限されていたり、バックグラウンドではグラフィックスがサスペンドされたりします。


 

Windows Phone 7

100506_multitasking5.jpg


皮肉なことに、マイクロソフトはWindows MobileというオープンなマルチタスキングができるOSから、Windows Phone 7という非常に制限されたOSへと軸足を移してしまいました。

彼らのマルチタスキングにおけるゴールは、「マルチタスキング」にみんなが求める「コアのエクスペリエンス」を、完全装備はせずに実現しようというものです。って、なんかこう...うーん。というわけで、マイクロソフトのモバイルコミュニケーションビジネス部門ディレクターのアーロン・ウッドマン氏にうかがってみました。


・アプリを切り替えると、どうなる?

Windows Phone 7では、他のアプリに切り替えても、元のアプリは死にません。あるアプリから切り替えるときは、メモリにその状態を保存して凍結します。これはAndroidやiPhone 4.0と同様です。ウッドマン氏いわく、「ユーザーがアプリから離れていき、かつリソースが必要になったときには、アプリがリソースを解放します。でも、ユーザーはすぐに元の状態に戻ることができます。」リソースを解放する必要が出てきたとき、アプリは「乾燥される」のです。これは、「『死ぬ』よりはひとつ手前の状態」で、再開したときには乾燥状態から「戻され」て、保存された状態が再現されます。


・バックグラウンドで何ができる?

あまり多くはできません。旧来のiPhoneみたいな感じで、アプリが動いていないときは通知だけが来るという感じです。Pandoraがバックグラウンドで動いている華々しいデモがありましたが、そういうことができるのはサードパーティでもエリートなパートナーだけです。ウッドマン氏いわく、そういったアクセスは「より広くスケール可能かどうかわからない」とのことです。通知に関しては、マイクロソフトはなかなか多様な選択肢を用意しています。タイル通知はホームスクリーンのLive Tileに新着情報をプッシュします。トースト通知はポップアップで、電話の着信などはこれです。他にもアプリに生データが送られる、生の通知があります。


・バックグラウンドでできないことは?

基本的には、何もできません。通知を出した受けたりすることはできます。特別なアプリを除いては、以上です。希望があるとしたら、ウッドマン氏いわく、「最終的には、我々はサードパーティやユーザーからの声によってプラットフォームを変えていくだろう」ということです。


各プラットフォームのマルチタスク解説は以上となります。すでにマイクロソフト自身からも過去のものとされたWindows Mobileや、OS 6で変化しそうなBlackBerry、Symbian^3でねじれが起きているSymbian、などはあえて対象外にしました。


matt buchanan(原文/miho)
 

  • このエントリーをはてなブックマークに追加
4569775691
モバイル・コンピューティング (単行本(ソフトカバー))




 

・関連メディア