といってもSDKを見ているわけではないし(見ている人は,NDAで書けないわけですが),適当なことを書くだけですが「iPadにマルチタスクはやっぱり欲しかったと思う」とかってことを書いた手前もありちょっと感想を。

iPhone OSは元々Mac OS X=NEXTSTEPをベースにしているわけですからOSとしてのマルチタスク機能は存在しています。これをどうサードパーティに使わせるかが課題であり,そのときの最大のネックはメモリ(主記憶)だと考えています。パソコンのOSだと,仮想記憶といってディスク領域の一部をメモリであるかのように利用していますが,iPhoneのようにディスクがフラッシュ・メモリ(ちなみにiPhoneの8Gとか16Gとかいうのは,このようなディスクとしての容量のことです)の場合,書き換え回数の限界が低いので仮想記憶を使っていません(そういえばSSDってこの問題どーしてるんだろう?)。アプリケーションを複数並行利用する場合,作業領域だけでなく,プログラム自体が占めるメモリも必要になるので,そこがクリティカルなのです(今回3Gが対象外なのは主記憶が少ないからではないかと思います)。

僕は,その部分をデスクアクセサリのようなミニアプリ形式を用意することで逃げるのではないかと想像していたのですが,今回の仕様を見ると,2段階のサポートを行うようです。まずはタスクスイッチによる切り替え。この機能の実装に関してはバックグラウンドでの動作が必要でないので,作業メモリだけ残してプログラムはアンロード/ロードするのではないかと思います。

もう一つはバックグラウンドでの動作。ここでは音楽再生など特定のAPIを使うアプリだけがバックグラウンドで動きます。この場合の実装は二つありそうです。音楽再生や通話といった既にOSが用意している機能では,アプリケーションからOSの特定モジュールにデータを渡してそのモジュールがバックグラウンドで動作し,アプリケーション自体のコードはバックグラウンドでは動かさないのでは,と思います。ただ,ファイル保存などアプリのコード自体を動かさないといけないものは例外で,その小さなモジュールだけをメモリに残す形にするのでは,と思います。これが二つ目の実装です。

実際の実装はどうなんでしょうね。