![]()
[Adobe Max 2010]カンファレンス速報:最適化の重要性
こんにちは、鈴木です。
今、僕はLAで開催されているAdobe Max 2010に参加しています。既に基調講演を中心とした、レポートがあがっているので、初日のセッションの内容を最適化の重要性という観点でレポートしてみたいと思います。
基調講演で語られたマルチデバイス化

Adobe Max 2010は、昨年と同じくNOKIAシアターでの基調講演からスタートしました。
今年のMaxでは、基調講演の模様がリアルタイムに(※しかも日本語同時通訳付き)配信されていたので、ご覧になられた方も多いかと思うのですが、スマートフォンやGoogle TVに代表されるようなマルチデバイス対応、新しいFlashPlayerのGPUを利用した3Dアニメーションの発表などがありました。
詳しいレポートはこちらにアップされています。

基調講演の中で、2014年には、モバイルからのインターネットアクセスがPCを上回るという予測が非常に興味深く、基調講演後には観客全員にDROID2というモトローラ社のAndroid端末がプレゼントされた事からも、今後モバイル端末にいかに対応していくかがコンテンツを作る側からすると非常に重要な時代になるのだなぁと感じました。
マルチデバイス時代だからこそ、重要になるコードの最適化
マルチデバイス=非力なハードからもコンテンツにアクセスできてしまうという事
マルチデバイスというと、1つのコンテンツを様々な端末から見たり、触ったりする事ができるという利便性がフォーカスされる事が多いのですが、その反面PC向けに作られたリッチなコンテンツに非力なモバイル端末からもアクセスできるようになってしまうという危険性があります。
例えば、動画やアニメーションを多様したリッチなPC向けキャンペーンサイトに、Twitter経由でスマートフォンからアクセスした結果、アニメーションがカクカクとしか動かず、本来伝えたかった情報がユーザーに届かない状態が発生したりなど。。。
またこの問題は、基調講演でも発表されたAndroid端末にAIRが搭載されていくロードマップを進んで行くと更に顕在化していくと思います。
それでは、普段コンテンツを作っている僕らに出来る事ってなんなんだろうと思いながら、受講した初日の2つのセッションが印象的でした。
Quick As Flash:コードによる最適化
Grant Skinner氏のセッション"Quick As Flash"は、ASのコードレベルでの最適化の話でした。
セッション内容は、Grant Skinner氏のサイトで公開されているのですが、興味深かった点をピックアップすると、
•StatsやFlex Profilerを利用しメモリやFPSを監視する事でどこが問題点かを把握する。
•Flash Player 10では、uint型の方がNumber型よりも早いが、Player9では、Number型の方が早い
•無名関数は極力使わない。
•型の指定は必ず行う。Obejct型のままにしない。
•ファンクションを使わずにワンライナーで記述する
•BitmapDataを利用する場合は、cacheし、sprite.z=0にする(2.5Dを利用する)
•非表示にする場合は、alpha=0としてもレンダリングは実行されるので、visible=falseにする。
•visible=falseにした場合でもイベント等は実行されているので不必要なタイミングで必ずremoveする
等、普段書いているコードをちょっと見直すだけでコードの最適化が可能になり、コンテンツのパフォーマンスを向上できるようになりますね!
Advanced ActionScript with Apparat:フレームワークを利用した最適化
Joa Ebert氏がオープンソースのプロジェクトとして開発している、Apparatはswfをよりコンパクトにする為のフレームワークです。
使い方としては、FlashBuilderやFDTなどのエディタにScalaをインストールし、Antでコンパイルする事でより圧縮された、swfファイルを生成する事ができます。
Joa氏のサイトでデモを見ると明らかに軽量化/高速化されています。
Apparat自体がまだ日本ではほとんど聞いた事の無いフレームワークなのでぜひとも試してみたいと思います。
アーキテクチャを見直す事
Grant Skinner氏もJoa氏も揃って、コードを最適化する場合一番パフォーマンスがあがるのは、「アーキテクチャ自体を最適化する」事だそうです。
例えば、Grant Skinner氏がコードの最適化を行った、kulerでは、30以上あったクラスを再設計しなした事で、30倍近いパフォーマンスの向上が実行できました。
また、Joa氏もバイトコードで記述したMacroクラスを作成し、全ての値はそこのクラスを参照するような構造にしているそうです。
初日を終えて感じた事
今回のAdobe Maxを通じて感じている事として、AdobeやGoogleに加えて、ソニーやモトローラ等の企業が協力しあいながら、マルチデバイスのプラットフォームを構築してくれている中で、僕たち開発者は、ユーザーが快適に閲覧できるコンテンツを作って行く事が重要だという事を再認識しました。
その上でコードの最適化今後ますます重要になってくると思っています。
という事で、これから、2日目のセッションに行ってきます!
こちらのアカウントで実況をしているので、気になる方は是非!
