なぜiPhoneやiPadはシングルタスクでFlashがないのか?
FlashもUSBもないiPad――Apple製品じゃなかったら売れない
iPadについてオルタナティブ・ブログでも何人かの方々がコメントなさっているようです:
iPhoneやiPadがかたくなにシングルタスクなわけ
iPad仕様はデファクトスタンダードになるか?Flashプレイヤーが消え去る日
iPadがFlashがサポートしないのは~新幹線が止まって思い知らされる
ということで、私も思ったことを少々。。。
なぜiPhoneやiPadがシングルタスクなのか
まず最初におさえておきたいのは、iPhoneやiPadで走っているOSはiPhone OSといい、これはMac OS Xベース、つまりカーネルはDarwinベースだということです。Darwinというのはもともと、カーネギーメロン大学で開発されたMachをベースにしたUnix系のOSで、カーネル自体はマルチプロセス、マルチスレッドをサポートしています。なのでカーネルからみるとiPhone OS上では複数のプロセスが実行されています。他のOSと同じ様にiPhone OSにもGUIのアプリケーションを管理し表示するウインドウシステム(GUIレイヤ)がありますが、これはカーネルの外で、つまりユーザープログラムとして動いています。その上で、GUIアプリケーション(いわゆるiPhoneアプリケーション)が動いています。ところが、iPhoneやiPadのウィンドウシステムでは、通常、1つのiPhoneアプリケーションしか起動できないようになっています。つまり、iPhoneアプリケーションを切り替えると前のiPhoneアプリケーションは終了するようになっています。
このシングルタスク(一度にひとつしかiPhoneアプリケーションが実行されない)の話はすでにiPhoneのころからいろいろ書かれてきました。その中で参考になるページのひとつが以下のページです。(ちょっと古いですが)
iPhone 2.0 SDK: The No Multitasking Myth
iPhone 3GSおよび最新のiPod Touchは、ストレージこそギガ単位の容量を持っていますが、RAMは256MBの容量です。(旧世代だと128MB)iPadもiPhone OSベースということで、似通った程度のRAM容量なのではと思います。PCと比べてみた場合、128MBとか256MBというのは非常に少ない容量です。その容量でOSやアプリケーションなどを走らせなければなりません。またバッテリー消費などもおさえていかなければなりません。メモリ容量やバッテリーなど限られたハードウェア資源を効率よく利用し、アプリケーションやOSにそれらハードウェア資源を十分に割り当てるにはということで、Appleが選んだのは、iPhoneアプリケーションを実行できる数を1つだけに制限するということだったのでしょう。(上記のページでは、比較として、Windows CEでのマルチタスクの話もしています。)
iPhoneやiPadの、スムースに動くアニメーション効果や3D効果は、本当にクールです。これが可能になったのは、シングルタスク(シングルiPhoneアプリケーションのみの実行を許すQuartzによる軽量ウィンドウシステムやレンダリングエンジン)だからというだけでなく、こういったデバイスで、より強力なハードウェアアクセラレーションが可能になり、ハードウェア/GPUでより高速により効率的にグラフィックをレンダリングできるようになったのも一つの重要な要素だと思います。特にAppleのアプリケーションで使われるアニメーション効果や3D効果では、ハードウェアアクセラレーションを前提とした高速なグラフィックスのレンダリングがあたりまえになってきました。これはデスクトップでも言えることで、例えば、Windows版のSafariやiTuneでのcover flowは、ビデオカードがハードウェアアクセラレーション(Direct3D)をサポートされていないと表示されません。今までDirect3Dや、OpenGLなどを用いたハードウェアアクセラレーションによるアニメーションや3D効果は、ゲームなどで主に使われてきましたが、Windows VistaやMac OS X自身が使うようになって、一気に一般的になってきました。(実はこのアニメーションや3D効果を使う流れって、かなりのイノベーションだと思うんです。もう名前をつけるなら"UI 2.0"と呼んでもいいというくらい。)今後は、そういったクールなアニメーション効果や3D効果は、モバイルデバイスから、ビジネス向け、エンタープライズ向けのアプリケーションにまで適用されて行くのではと思っています。
なぜiPhoneやiPadにはFlashがないのか
なぜiPhoneやiPadにはFlashがないのか、この話も昔から言われているようです。
簡単に言ってしまえば、iPhone SDKの使用許諾書にはアプリケーションは他の実行可能なコードをインストールしたり起動したりしてはならないという条件が含まれていて、Flashはその条件に違反しているからというのが理由の1つのようです。
しかし、また、こんな話もあります。Wired.comの記事(日本語訳)では、Jobsが「Flashはバギーだから、AppleはFlashをサポートしない、MacのクラッシュはだいたいFlashが原因だ、そのうちFlashは誰も使わなくなる。」と言ったとのこと。こちらにも同じような話があります:Ten Myth of Apple’s iPad: 2. iPad needs Adobe Flash(AppleはFlashを殺す気だとも言っています)
iPhoneやiPadにはFlashがないというのは、確かに残念な話ではあります。
私が思うのは、Flashは、技術的に言えば現在のUIテクノロジーでホットな分野の1つだと思います。Mac OS XやWindows Vistaなどで、ユーザーインターフェースというものがよりダイナミックになり、アニメーション効果やグラフィック効果が実際のOSやアプリケーションで使えるようになってきて、グラフィックテクノロジーに関して注目されるようになってきました。同じ様に、多くのFlashの開発者たちは、どのようにしたらクールなグラフィック効果を表現できるかということに関心があります。現在グラフィック技術そのものをキャッチアップしているもののひとつに、Flashも含められるでしょう。
ということで、最近ポピュラーなFlashをベースにしたテクノロジーの一例あげると以下のようなものがあります:
TweenerやTweenMax - アニメーションフレームワーク
papervision3d - 3Dレンダリングフレームワーク (例)
FLARToolKit - 仮想現実(Augmeunted Realty)フレームワーク(例)
Box2DFlashAS3 - 2D物理エンジン(例)
APEやJiglib - 3D物理エンジン(例)
一方で、今後は、HTML5をはじめ、OpenGL ESのJavaScript実装であるWebGLなどがブラウザに組み込まれていきます。現在のiPhoneのSafariはSVGとCanvasをサポートしています。今後iPhoneのSafariも新しいUIテクノロジーを取り込んでいくでしょう。ブラウザ上、JavaScript上で可能なグラフィックレンダリングが充実してくると、それとともにこういったFlash/ActionScriptのフレームワークがJavaScriptへと移植されていくのは、次の流れになるような気がしています。ただし今のところは、上記のフレームワークなどを見る限り、まだまだFlashがグラフィックレンダリングエンジンとしては柔軟でポピュラーで、また、いろんな魅力的なオープンソースのフレームワークも充実していてると思っています。
おまけ:iPhoneやiPadでFlashを表示させるハック
ところで、代替にはならないと思いますが、iPhoneやiPadでFlashを表示させるハックがあります。
JavaScript Hack Enables Flash on iPhone
これはFlashをJavaScriptを使ってSVGで表示させるというものです。
FlashなだけにGordonとは、この名前おもしろいですね。
参考:Flash Gordon