2009年10月4から7日の期間中、「Adobe MAX 2009」がロサンゼルスで開催された。先日公開された基調講演のレポートに続き今回は、参加した各セッションをレポートします。
マルチスクリーンWebを考慮したデザイン、開発手法
Thibault Imbert氏のセッションでは、基調講演にて発表されたFlash Player10.1を使ってマルチデバイスに対応したFlashコンテンツを作成するに際の注意点と、最新のFlash Player10.1がマルチデバイス向けにどのように最適化されているかの説明が行われた。
Designing and Developing for the Multiscreen Web on Adobe TV

セッションの冒頭で、Thibault Imbert氏はマルチスクリーンWebとは、「PCやモバイル端末に限らず、冷蔵庫からカーナビにいたるまで、スクリーンを持った全ての画面に対応するWebコンテンツ」と説明。
Flash ecosystem
Flash Player10.1がスマートフォンや様々なデバイスに対応した事で、これまで、PC向けのコンテンツはFlash Playerを、モバイル向けのコンテンツはFlash Liteをランタイムとして利用していたのが、今後はデバイスに関わらず、Flash Player10.1のAPIを活用する事が可能になった。これを「Flashecosystem」と説明。
Flash Player10.1でいかに、マルチスクリーンWebを作るかの説明の前に、マルチデバイスにおいて、デザイナー/デベロッパーは、CPUやメモリーに対して最適化する必要性を述べた。

デザイナーが気をつけるべき事
マルチスクリーンWebを作る際に、デザイナーが意識すべき点として、小さなスクリーンでも分かりやすいシンプルなユーザーインターフェース設計とデザインレベルでのパフォーマンスの最適化を意識する必要があると述べ、下記の項目がマルチスクリーンWebのデザインにおいて重要と示した。
- 効率的でシンプルなレイアウトにする事
- 小さな画面サイズも考慮して、テキスト入力よりもTouch eventやGesture Eventを使う事
- テキスト入力を使う場合は、オートコンピレーションを使う事
- 複雑でパスが多いシェイプは、メモリーを消費しやすいので、パスを最適化する事
- ドロップシャドウなどのフィルタは動的に必要な場合以外は、あらかじめデザインツールの方で作成しておく事
デベロッパーが気をつけるべき事
デベロッパーが気をつけるべき事としては、4GB近くのメモリーを搭載できるPC環境とは違い、マルチスクリーンWebでは、例えばモバイル端末の用に128MB程度しかメモリが無い環境を考慮した開発を行わなくてはならないので下記の項目が重要であると説明。
- getSize()メソッドを使うと各オブジェクトのサイズを検証する事ができるので、こまめにメモリサイズを検証する事
- オブジェクトをfor文の中で定義するのではなく、for文の外で、var = hogeなどとで定義する事
- 反復するオブジェクトを利用する際は、BitmapDataを利用する事
- ドロップシャドウなどのフィルタは、動的生成すると非常にメモリーを利用するので、動的にフィルタをかける必要が無い場合は、あらかじめデザインツールで作成しておく事
- Arrayクラスを使わずに、Vectorクラスを使い、型宣言を都度定義する事
- Cacheas bitmapは、複数のオブジェクトを選択してしまうと、オブジェクト間の余白も入ってしまうので、個別にする事
- データ通信においては、AMFの方がXMLよりも軽いので、可能な限りAMFを利用する事
マルチデバイスに最適化されたFlash Player10.1
10月5日の基調講演で、Flash Player10.1がWindows mobileやAndroid端末に搭載される事が発表された。それにともない、CPUやメモリーが少ないモバイル端末等でも快適に動作するように最適化が行われてる。
Flash Player10.1による最適化
- ビットマップのダウンサンプリング
- ビットマップの動的アンローディング制御
- ミップマッピング
- テキスト表示の最適化
- スリープモード
- 停止とレジューム

Flash Player10.1に搭載された、新しいメモリーのプロパティ
Flash Player 10.1には、Private Memoryと、Free Memoryという2つの新しいメモリーのプロパティが追加された。
- Total Memory : FlashPlayerやAIRで使われているメモリー
- Private Memory : アプリケーション全体で使われているメモリー(AIRアプリケーション向け)
- Free Memory : Total Memoryで使われていない空きメモリー
このプロパティがSystemクラスに追加された事で、
trace(System.totalMemory / 1024);
trace(System.freeMemory ? 1024);
と記述する事で、使用中のメモリー量、非使用のメモリー量の監視をする事が可能になった。

停止とレジューム
画面に表示されていない、swfファイルは実行しない機能。
例えば、モバイル向けサイトで、ページ下部にFlashのバナーがある場合などは、画面領域にそのバナーが表示されるまで実行されない。またPrority フラグを立てる事で、どのswfファイルが優先的に実行されるべきかをコントロールする事ができる。
スリープモード
Flash Player10.1では、スクリーンのバックライトが落ちたタイミングで、フレームレートを4fpsにしレンダリングをストップする機能。
ビットマップの動的アンローディング制御
もし、filterが30秒間変形されていない場合、また非表示になっている場合、スクリーンの外のある場合は、フィルタ機能を無効にしてくれる機能。
ビットマップのダウンサンプリング
ビットマップのダウンサンプリングは、16-Bitで動いているマシンを検知し、自動的に16-Bitにしてくれる機能。
ミップマッピング
Mipmappingをオリジナルソースを対して直接できる機能。

テキスト表示の最適化
TLF(テキストレイアウトフレームワーク)は現状8MBもあるので、現在モバイル環境向けのTLFのライトバージョンも開発中。
このように、Flash Player10.1は、マルチデバイスで使えるように様々な機能が追加され最適化されている。
