作成日

18 August 2008

Adobe Flash Player 9とともに登場したActionScript 3.0が公開されてから、すでにかなりの時間が経過しています。ユーザからのフィードバックを総合すると、Flashコミュニティの有志の多くがすでにActionScript 2.0から3.0へと移行し、デベロッパーの多くが、新しい言語にとても満足していることが示されています。

ただし、一方では新しい言語への移行に躊躇しているインタラクティブデザイナーが、数多く存在するのも事実です。ActionScript 3.0に関しては、従来より複雑になった、あるいは、1つの処理を行うにあたって、より多くのコードが必要になった、などの誤解が生じているようです。この記事では、これらのいくつかの誤解を解くことに努めるとともに、なぜFlashプロジェクトにおいて、ActionScript 3.0のみを使用すべきかについても解説することにします。

ActionScriptコードを記述するユーザは、大半、次の2つのグループに分かれます。まずは、ハードコアなデベロッパー。通常、このユーザ層はプログラミングに対するバックグラウンドをもち、JavaやC#といった開発言語でのプロジェクト構築経験を有しています。ActionScript 3.0はこれらのユーザが慣れ親しんだ言語に似ているため、手軽に習得できると言っても過言ではありません。もう一方のユーザ層は、インタラクティブデザイナーです。筆者のいう「インタラクティブデザイナー」は、デザインまたはアニメーション関連のバックグラウンドをもち、自らのビジョンを実現するためにFlashプログラミングを習得したユーザの総称です。 インタラクティブデザイナーは、コードをタイムラインに追加することが大半です。中には、オブジェクト指向プログラミングの基礎知識を有しているユーザもいることでしょう。筆者は、後者のグループに属するユーザであると自負しています。そこで、この記事は、ActionScript 3.0への移行に躊躇しがちなこのユーザ層をターゲットにすることにします。

ActionScriptの略歴

ActionScriptの前身にあたるものは、Flash Player 4の段階で登場しました。これにより、Flash上での多彩なインタラクティビティが可能になったものの、成熟度と理解しやすさには、やや難があったと言わざるをえませんでした。また、後のバージョンではECMAScriptに似た文法が利用できるようになったとはいえ、当初の文法および意味論はECMAScriptのそれとは、かけ離れていました。

ActionScript 1.0はFlash Player 5の段階で登場し、これにはECMAScriptベースの文法と意味論が採用されていました。このバージョンは、Flash Player 6およびFlash Player 7のリリースを期に意味論に対して幾分の調整が行われたものの、本質的にはほぼ同じままで維持されました。

ActionScript 2.0は、Flash MX 2004およびFlex 1.0とともにリリースされました。この言語バージョンは、ActionScript 1.0ランタイム上に実装されたレイヤーであったため、Flash Player 6およびFlash Player 7でも実行することができました。しかし、このような実装であったからこそ、ActionScript 2.0にはActionScript 1.0と同じオブジェクトモデルが採用され、本来の高性能さを十分に発揮できなかったとも言えます。

Flash Player 9の計画段階においては、これ以上、ActionScript 1.0とActionScript 2.0の原動力となっていた、従来のActionScriptエンジンへの改良は不可能であることが明らかであったため、ActionScript Virtual Machine(AVM)をいちから開発し直すことが決断されました。この結果として登場したのが、高度な最適化が施されたバーチャルマシンのAVM2です。また、これにあわせて、AVM2で使用されることを前提とした新しいバージョンのActionScriptもリリースされました。 AVM2は今後、ActionScriptコードを実行するための主力バーチャルマシンとして活躍していきます。ただし、既存および過去のFlashコンテンツとの後方互換性を保つためにも、Flash Playerは引き続き、従来のAVM1もサポートしています。

ActionScript 3.0の使用をお勧めする理由

ActionScriptを習得することの主なメリットは次の通りです。なお、項目の記載順には大きな意味はありません。

1. 開発スキルに対する高度な需要

筆者の意見としては、この点こそが、Flashデベロッパーとして活躍している、あるいはこれからFlashデベロッパーになろうと考えている方に、最新言語の習得をお勧めする最大の理由です。すでに、有力なFlashコンテンツの大半はActionScript 3.0のみで開発されています。ActionScript 2.0のスキルが求められる案件は、そう多くありません。Flashにかかわる仕事に就くのであれば、ActionScript 3.0の習得が不可欠と言えるでしょう。

2. コンテンツのスピードアップ

以前からFlashプロジェクトを手がけていたデベロッパーなら、たとえ魅力的なアイデアを思いついたとしても、Flash Playerの制約が原因でコンテンツをスムーズに実行できなかったという経験があることでしょう。ActionScript 3.0では以前のバージョンの言語に比べ、最大10倍もの高速パフォーマンスが実現可能です。一部のケースでは、それ以上の性能向上が確認されているほどです。つまり、ステージ上ではより多くのオブジェクトを同時制御できるようになります。プロジェクトで最善の見栄えと最大限のパフォーマンスを達成するには、ActionScript 3.0に移行することが最短の近道と言えます。

3. 充実した最新のAPI群

筆者を含め、Flashデベロッパーは、プロジェクトに組み込める新たなガジェットの登場をいつも心待ちにしています。 ActionScript 3.0には、XML、正規表現、バイナリソケットなどを利用するための最新のAPIが100種類以上用意されています。しかも、必要な言語機能に一段と容易にアクセスできるよう、言語全体がパッケージおよび名前空間に基づいた方法で再整理されています。ActionScript 3.0を使用すれば、Flashのツールボックスが一層充実するだけでなく、一段と整理性に優れた言語のメリットを享受できます。

4. Display List

ActionScript 3.0最大の変更点と言えば、ムービー上のビジュアルオブジェクトをFlashがどのように扱うかの動作です。以前の言語バージョンでFlashムービー上のアイテムの重なり順(深度)を調整するには、まるで魔術のようなテクニック・操作が必要とされていました。回避策やハックが数多く存在してはいたものの、これらはActionScript初心者にとって、不可解なものばかりでした。例えば、特定の視覚要素をムービーの最も手前で表示したいような場合、これまでは深度に非常に高い値を設定する方法が頻繁に用いられていました。この方法では、手動での重ね順の管理手間が発生するなど、大規模プロジェクトにおいて数々の問題が生じていました。ActionScript 3.0新機能のDisplay Listは、ムービー上のアセットがどのようにレンダリングされるかを管理する、明快なメカニズムです。一度この機能を使い始めると、これまでの努力がうそのようにさえ感じることでしょう。

5. なにかと便利なオブジェクト指向

一段と磨きのかかったActionScript 3.0のオブジェクト指向構造には、ランタイム時の型指定、独立性の高いクラス、パッケージ、名前空間、見直された最新のイベントモデルなどが含まれており、デベロッパーの期待に応える内容になっています。ActionScript 3.0でのプログラミングは、JavaやC#など、高次元な他の開発言語と同じレベルに達していると言えるでしょう。ActionScript 3.0に装備された新機能は、コードのモジュール化、読みやすさ、拡張性のすべてを一段と高めます。これらの機能の中には、インタラクティブデザイナーによって使用されないものも一部含まれているかもしれませんが、将来、より高度なプログラミングを手がけることになっても、混乱なく使用できるので安心です。

6. ActionScript 3.0ならもっと楽しくできる!

主観的な意見に過ぎないかもしれませんが、筆者は本当にそう感じています。試しに、ActionScript 3.0を知るユーザに、ActionScript 2.0に戻ってプロジェクトを開発するよう要求してみてください。後ずさりするユーザが大半を占めることでしょう。ActionScriptの以前のバージョンではバグ、ハック、回避策などが横行していたため、これに比べるとActionScript 3.0は簡単過ぎるように感じるかもしれません。ActionScript 3.0に慣れるまで、少し時間がかかるかもしれませんが、この努力によって得られるメリットには十分な価値があります。

後方互換性と将来のテクノロジについて

ここまでに紹介した数多くのメリットをみてもActionScript 3.0の習得に躊躇するのであれば、引き続きActionScript 2.0のコードでプロジェクトを開発し続けても問題はありません。ただし、Flashプラットフォームの進化とともに登場する、魅力的な最新テクノロジの多くはActionScript 3.0なしに利用することができません。例えば、Adobe Flex 3やAdobe AIRでは、すでにActionScript 3.0が必須になっています。これらのテクノロジを利用するにあたり、旧バージョンのActionScriptの使用は選択肢になりえません。

ActionScript 3.0に関するFAQ

この節ではActionScript 3.0に関して頻繁に寄せられる、質問とその答えを紹介します。最新バージョンへの移行にあたっての、疑問や悩みにお答えします。

ActionScript 3.0のコード量がActionScript 2.0より多くなるのはなぜですか?

端的にお答えするならば、大半のケースではActionScript 3.0でコードが増えるということはありません。この質問は、ボタンがクリックされたかどうかを、イベントリスナで処理することに関して寄せられることがほとんどです。確かに、ActionScript 3.0の方がコード数行分、多くなるケースもありますが、この追加分により、言語全体の可読性と整頓性が一段と高まります。ActionScript 2.0のイベント処理時に必要な数々のハックを精査すると、新しい言語体系の方が道理にかなっていることに気付くはずです。

コードをシンボルに直接添付できなくなった理由は?

残念ながら、このコード記述法は大規模プロジェクトにおいて、かなりの混乱を引き起こしていました。ActionScriptコードが一箇所に集中されず、プロジェクトのあちこちに散在する羽目になっていたからです。一見、シンボルにコードを添付する方が、はるかに簡単にみえるかもしれません。しかし長期的な観点から考えた場合、コードを一元的に管理する方が、可読性と管理性の両面で優れた結果を得られます。これらの理由から、Flash CS3でActionScript 3.0プロジェクトを手がける際には、シンボルにコードを添付することができません。

クラスファイルにすべてを記述したくない場合は?

ActionScript 3.0に対する重大な誤解の1つが、すべての要素に対し、その都度クラスファイルを記述しなければならないのでは、という点です。これはあくまで誤解に過ぎません。タイムライン上にも、引き続きスクリプトを記述することは可能です。現に、筆者は現在も、この手法を数多くのプロジェクトで採用しています。ただし、よりオブジェクト指向性の高いコードを記述する必要が発生した際には、ActionScript 3.0に慣れておくことで、オブジェクト指向のプログラミングをより簡単に習得することができます。

アドビがデベロッパーばかり注目する理由は?

筆者は、そのように感じられる場面があることを理解しています。しかし、今実際には、アドビはデザイナー向けの機能に対してより多くの時間を費やしています。デベロッパーがFlashを新たな次元へと導くためには、ActionScript 3.0が必要不可欠です。しかし、ActionScript 3.0が完成してからは、より多くの開発努力がデザイン・アニメーション機能に対して費やされています。このことは、Flash Player 10の搭載機能リストを見ることで確認できるはずです。3Dのサポート、カスタムフィルタ、インバースキネマティック(IK)の応用など、最新機能の大半はインタラクティブデザイナーから寄せられた要望にお応えするものです。

次のステップ

ActionScript 3.0への移行を支援するために、数多くの学習リソースが用意されています。以下の記事には、ActionScript 3.0の習得時に役立つ、貴重な情報が豊富に含まれています。

  • ActionScript 3.0の概要」には、この開発言語の目的と搭載機能の紹介に加え、ECMAScript for XML(E4X)とFlash PlayerのAPI機能に関する解説が含まれています。
  • ActionScript 3.0を用いた開発への移行を支援するために、Flash PlayerチームのEmmy Huangがこちらの記事でヒントとよくある問題点をまとめています。
  • 忘れずに、ActionScriptテクノロジセンターのActionScript 3.0のセクションも参照してください。他にも、記事およびオンラインリソースが数多く用意されています。
  • 書籍『Learning ActionScript 3.0』もお勧めです。この書籍は、最新バージョンのActionScript言語初心者に適しています。Adobe Developer Connectionには、この書籍からの抜粋3章が掲載されています。
  • より高度なコード記述者向けとしては、ActionScript 3.0開発時の必携書とも呼ばれる、Colin Moock氏著の『Essential ActionScript 3.0』があります。Adobe Developer Connectionには、この書籍からの抜粋2章が掲載されています。
  • ビデオを見ながら学びたいユーザのためにも、数多くのリソースが存在します。ActionScript 3.0について学ぶには、Lynda.comがお勧めです。中でも、「ActionScript 3.0 in Flash CS3 Professional*」がActionScript 3.0の概要を知るために有用なリソースです。また、筆者も無償のビデオチュートリアルサイト(gotoandlearn.com*)を運営しており、ここにもActionScript 3.0関連のチュートリアルが多数掲載されています。