ホームボタンダブルクリックで出て来る例のアレと、iOS 4.0の「マルチタスク」機能に対する誤解。--「マルチタスクとは何か」


今朝未明、iOS 4.0が公開された。iPhoneiPadなどに搭載されているOSの最新バージョンだ。
このiOS 4.0におけるウリの新機能の一つが"Multitasking"と称されるシステムなのだが、iOS 4.0の公開このかた見ていると、この"Multitasking"については、どうも世の中誤解が蔓延しているようだ。あの天才プログラマー小飼弾さんもなんだかちょっと妙ちくりんなことを書いているくらいだ

そんなわけで、本文では、タイトルにあるように、「ホームボタンダブルクリックで出て来るアレ」がなんであるのか、ということを中心にして、iOS 4.0のマルチタスクについての代表的な誤解を解いて行きたいと思う。

話はまず、iPhoneの"Multitasking"が求めるところの「マルチタスク」とは何か、と言うところから始める。iPhoneマルチタスク機能は一般的に想像されるそれとはちょっと違ったものである。それでいてかつ、何よりも本質的なマルチタスク機能であると筆者は考える。この「iPhoneの目指すマルチタスク」に対する不理解が、基本的にはそれぞれ細かな誤解に繋がっているのだ。

"Multitasking"については、具体的には、次のような誤解がよく目につくものだと思う。

  • iOS 4.0の登場によって"Multitasking"が実現したという誤解
  • ホームボタンをダブルクリックすると出て来る例のアレ--タスクスイッチ="Multitasking"という誤解
  • アプリの終了」を求めるという誤解

これらの誤解を解くことが本文の到達点だ。

では、やや観念的な話になるが、まずはマルチタスクとは何か、ということから考えたい。これを考えることが、実は非常に重要なことなのだ。何故と言えば、AppleiPhoneチームが(多分)ここから考えて新OSの開発に取り組んだからだ。

マルチタスクとは何か

マルチタスクとは何か。
多分この問いの答えとして多くの人が「バックグラウンドで他のアプリが動いていること」と考えている。これがすべての誤解の根源にあるものだ。
聞こう。「バックグラウンドで他のアプリが動いている」それの何が嬉しい?
自分が利用してもいない処理の為にデバイスリソースが裂かれる。その何が嬉しい?
無駄な処理にリソースが裂かれることはまったくもって嬉しいことではないのだ。メモリは溢れる電池は減る。良いことなど一つもない
しかしユーザはマルチタスクを求めるマルチタスクには確かに人を引きつける魅力利点がある。
これはどういうことか?
マルチタスクとは、「バックグラウンドで他のアプリが動いていること」ではないのである。正確に言うと、ユーザがマルチタスクを唱えるときそこに求めている利点とは、「バックグラウンドで他のアプリが動いている」点ではないのである。

では、マルチタスクとは何か。ユーザがマルチタスクを唱えるときそこに求めている利点とは何か。考えをこの段階まで純化させて初めて、iOS 4.0の新機能であるところの"Multitasking"が生まれるのだ。
マルチタスクの利点とは何か、結論から言うと、iOSチームはこれを次の点に集約させたと思われる。

  • アプリをまたいで行ったり来たりする作業のシームレスな遷移
  • いくつかのバックグラウンドで動かすべき処理をバックグラウンドで動かす事
  • バックグラウンドの処理からフォアグラウンドへの通知によるこれらの有機的な結合

2番目の文章はちょっとよく読んでいただきたい。「バックグラウンドで必要な『処理』を動かす」これは「バックグラウンドでアプリが動いている」こととは似て非なることだ。

また細かく言うと、このいくつかの『処理』はiPhoneのデバイス的特性を考慮して

  • 音声の入出力
  • GPSによる追跡
  • ダウンロード等の『待ち』を要求する処理

と言ったものに絞られた。蛇足。

以上一言で言うと、「いくつかの必要な処理をバックグラウンドで走らせ、フォアグラウンドではアプリ間をシームレスに遷移する」ことが、iOSチームの出した「マルチタスクとは何か」という問へのなのである。この点をしっかりふまえてもらいたい。すると、以下に上げるよくある理解が何故誤っているのかと言うのが分かっていただけると思う。

iOS 4.0の登場によってマルチタスク機能が実現したという誤解

さて、いよいよ本題の世に蔓延る誤解を一つ一つ解いて行きたいと思う。

iOS 4.0の登場でマルチタスク機能は実現したのか。答えはNOである。
それはちょっと相反するような二つの観点から否定される。

  • OSにバンドルされた基本アプリにおいては既に実現していた
  • サードパーティアプリについては、まだその殆どについて実現されていない

重要なのは後者だ。
マルチタスクとは何か。それはシームレスなタスクスイッチングと処理のバックグラウンド化であることは先に述べた。ではそれらの機能はどのように実現されるのか?
iPhoneにおけるマルチタスク実装APIによってなされている。
これはどういうことかというと、iOS 4.0はマルチタスクの実現のためにAPIを提供するが、そのAPIサードパーティアプリが利用してアプリに組み込んで初めてマルチタスクが本当に実現するのである。
よって、この対応アプリがまだ世にそれほど出回っていない現状では、iOS 4.0が登場してもまだマルチタスク機能は実現していないと言うことになる。まあもちろんこれは時間の問題で解決されることであろうし、Appleもそれを見越して現状を軽く見ているのだと思う。それは多分間違った見通しではないが、まあちょっと今は置いておくことにする。

ホームボタンをダブルクリックすると出て来る例のアレ--タスクスイッチ=マルチタスク機能という誤解

ホームボタンをダブルクリックすると出て来る例のアレを利用すること、すなわちタスクスイッチを利用することは=マルチタスクを利用したと言えるのかNO
上で述べたようにiOS 4.0はマルチタスクの実装のほとんどをAPIという形で提供したが、一つだけ、アプリ間の遷移を実現するためのUIだけはOSの標準機能として用意した。これがタスクスイッチ、ホームボタンのダブルクリックで出てくるアレである。
そう、アレはアプリ間遷移の為のUIに過ぎないマルチタスクに対応していないアプリに用いたところで、ただ単に今までと同じ起動と終了をもって画面遷移を起こすだけマルチタスク機能ではないのである。
「じゃあマルチタスク機能って?」と思われるかも知れない。それは次の項で説明するが、重要なのはマルチタスク必ずしもアプリを終了させずに置くものではないということである。

「アプリの終了」を求めるという誤解

アプリの終了」はいつ行われているのか。
結論から言うとそれはアプリの切り替えの度に常に行われている。上で述べたタスクスイッチはただあるアプリを終了し次のアプリを起動するだけである。
「え?それってマルチタスクなの?」と言われるだろう。ここで思い出して貰いたいのはiOSの出した「マルチタスクとは何か」という問への答だ。それは「必要な処理をバックグラウンドで行い、アプリ間遷移をシームレスに行う」ことだった。
アプリ間のシームレスな遷移に、あるアプリが終了しているとかしていないとか言うことは本質的に無関係だ。重要なのは作業状態の迅速な保存と復帰であり、それを実現するためのAPIだ。
要するにiOSはユーザがフォアグラウンドアプリを切り替えるたびに、必要な処理を残して毎回そのアプリを終了させる。ただし、この終了状態の復帰を迅速に行うためのAPIを提供しているので、ユーザの利便性には全く問題ない、ということなのだ。
アプリの終了はどうするのか、どうなっているのか」と言う問はナンセンスである。それは常に行われているし、実用的には永遠に行われないとも言える。マルチタスクに対応したアプリの場合は。そんなことは本質的ではないし、ユーザが気にするべきことではないのだ。そして、ユーザが気にしないで良いようになっているのが、iPhoneマルチタスクなのである。

終わりに

以上に上げた誤解の存在、そしてその誤解が現実問題として不幸を招きかねないというのは、要するところマルチタスク機能が実際にはまだ機能していない、対応アプリが出そろっていないという理由がなにより大きい。しかしそれは本当にすぐに解消されることだろうと思う。筆者はその時が来るのを今日か明日かと(比喩でもなく)期待している。

余談

iPhoneマルチタスクはユーザが気にしないでよいように出来ている。
なので、今現在の些細な誤解、そこからくるマルチタスクへの不満なんてどうでも良いことなのかも知れない。
どうせそのうち、もう本当に近いうちに、もしかしたら今日にでも殆どのアプリは対応し、マルチタスクは実現する。そうなればもはや本当にマルチタスクが何であるか、内部で何が行われているのかなどということはユーザには関係のないことだ。
ユーザは愚直であればあるほど幸せになれるようになっている。それがAppleの製品だ。しかしながら人は愚かではあってもなかなか愚直にはなれない。そしてそれはもっとも不幸せを招く原因なのではないかと、最近思う。