ActionScript 3.0で始めるオブジェクト指向スクリプティング

第1回Flash Player 9とActionScript 3.0

米国アドビ システムズ社(以下Adobe)から、2007年3月におけるFlash Playerのバージョン別普及率が公表された[1]⁠。その調査結果によると、Flash Player 9の普及率はアメリカとカナダで84.0%、ヨーロッパが83.5%、日本は81.8%に達した図1⁠。

Flash Player 9は、昨年の6月にFlex 2とともにリリースされた。Flash Player 9およびActionScript 3.0をサポートするFlash CS3 Professionalもついに米国で発売になり[2]⁠、日本語版は6月下旬に出荷が始まる予定だ。

本連載では、スクリプトの初学者を対象に、ActionScript 3.0を使ったスクリプティングについて解説する。ただこの第1回では、技術的な説明に先立ち、Flash Player 9は従来のバージョンとどこが違うのか、また新しいActionScript 3.0を採用する利点と注意点が何なのかを確認しておきたい。

図1 アメリカ/カナダと日本におけるFlash Player 8と9の普及率
図1 アメリカ/カナダと日本におけるFlash Player 8と9の普及率

Flash Player 9とは

Flash Player 9のもっとも大きな特徴は、ActionScriptを実行する仮想マシン「AVM2(ActionScript Virtual Machine 2⁠⁠」が、まったく新たに開発されたということだ。これまでのPlayerがバージョンアップのたびに増改築を繰返してきたのに対し、更地から新築した建物のようなものだ。基本的な設計から最適化が考慮され、AVM2専用の言語としてActionScript 3.0がデザインされた。そのため、まずこれまでと比べて、処理が10倍程度まで高速化された。

ただし、従来のActionScript 2.0や1.0では、AVM2で実行するスクリプトを記述することはできない。その代わりFlash Player 9には、ActionScript 2.0や1.0のスクリプトを実行する仮想マシン「AVM1」も併せて搭載されている図2⁠。そのため、過去に制作されたコンテンツはもちろん、今後もActionScript 2.0や1.0でスクリプトを記述したムービーが、Flash Player 9で問題なく再生できる。そして、AVM1はFlash Player 9以降も、サポートされる予定である。

図2 Flash Player 9のアーキテクチャ
図2 Flash Player 9のアーキテクチャ

ActionScrtipt 3.0で何が変わるのか

ActionScript 3.0で記述したスクリプトを、AVM2で実行すれば、きわめて高速に処理される。しかし、仮想マシンが扱うのはスクリプトの実行だ。つまり、アニメーションの描画やサウンドの再生、テキストのレンダリング、サーバーとのデータのやり取りなどは、Flash Playerが相変わらずAVM1と共通に処理している。したがって、ActionScript 3.0の実行がいかに速くても、これらの処理がボトルネックになれば、ActionScript 2.0や1.0との明らかな速度差は生じなくなる。

ActionScript 3.0の処理速度については、FLASH-japanで森巧尚氏が興味深いテストをされている。⁠5000個の点をランダムに移動させる」ムービーだ図3※3⁠。1回の描画(つまり1フレーム)ごとの処理量を膨大に増やすと、スクリプトの速度の差が現れる。ただし、アニメーションするものが増えれば、それにともなって描画の負荷も上がってしまう。

図3 5000個の点をランダムに移動させる
図3 5000個の点をランダムに移動させる

そのため、この実験用のムービーでは、描画するものを1ピクセルの点としていることに注意すべきだろう。これをもっと大きなボールにしたり、グラデーションをかけたりすれば、描画処理がたちまちボトルネックとなる。そうなれば、アニメーションの再生速度が落ち、ActionScript 3.0による高速処理のメリットは打消されてしまう結果となる。

いくらポルシェで高速道に乗っても、渋滞してしまったら、ノロノロ運転になってしまう。結局、アニメーションの表現が主体のFlashコンテンツでは、ActionScript 3.0を使っても、ただちに目に見える変化に結びつかない場合は少なくない[4]⁠。

だからといって、見えない部分を軽視すべきではない。ActionScript 3.0は、最新のプログラミング言語と遜色ない体系が整備され、開発をサポートする機能も大幅に強化された。それはチーム開発や大規模プロジェクトにメリットをもたらすだけだけではない。プログラムの流用や汎用化が進めやすくなり、ひいてはFlashコミュニティでもライプラリ(クラス)の公開や共有化が拡がるだろう[5]⁠。

ActionScriptとFlash Playerのバージョン対応

ActionScript 3.0を実際に使う場合に重要なポイントは、Flash Player 9以降でないとサポートされないということだ。

これはActionScript 3.0が、Flash Player 9をサポートするFlash CS3 Professionalで実装された以上、当然と思われるかもしれない。しかし、ActionScript 2.0を初めて採用したFlash MX 2004からは、その前のバージョンであるMXのときにリリースされたFlash Player 6でムービーをパブリッシュする(書出す)ことができた。

FlashムービーはSWFファイルにパブリッシュし、そのSWFに書出されたスクリプトがFlash Playerにより実行される。その際、ActionScriptとして人間が読取れるスクリプト(コード)は、Flash Playerが認識できるバイトコードという命令語に変換される。その書出されるバイトコードは、ActionScript 2.0と1.0で基本的に違いがなかったのである[6]⁠。

つまり、ActionScript 2.0と1.0とのスクリプトの違いは、もっぱらプログラムを書く人間の側から見た差であって、Flash Playerからはほとんど同一のものだといえた。そのため、プログラミングの文法(シンタックス)としてより洗練されたActionScript 2.0を利用しつつ、コンテンツはFlash Player 6対応で作成するというワークフローも十分可能だった。

ところが、ActionScript 3.0で記述されたスクリプトは、2.0や1.0とバイトコード自体異なり、AVM2でしか実行できない。逆に、ActionScript 2.0や1.0でスクリプトを書くと、Flash Player 9でパブリッシュはできるものの、実行はAVM1限定になる。ActionScript 3.0か、2.0/1.0かは、コンテンツ制作時に選択しなければならない。高速道を利用するか、一般道を走るかと同じで、入り口で選択したら、走行途中で乗入れすることはできないのだ。

ActionScript 3.0を使えるかどうかは、まずFlash Player 9の普及率がひとつの大きな判断基準になる。日本で約82%という普及率は、商用コンテンツのプラットフォームとしてはまだ十分とはいえない。しかし、 Flash CS3が発売されたばかりであることを考えれば、これから急速に広まることは十分に期待できる。さらに、プログラム資産の共有化が進めば、開発環境としても大きく魅力は増す。

来るべきときに備え、この連載を通じてActionScript 3.0のスクリプティングを学習していこう。

おすすめ記事

記事・ニュース一覧