作成日

27 June 2006

ActionScript 3.0はオブジェクト指向の強力なプログラミング言語で、Flash Player実行時の可能性を大きく進化させることができます。ActionScript 3.0の目的は、急速に増加するリッチインターネットアプリケーションのために理想的な言語を提供することです。こうしたアプリケーションはWebでの体験に欠かせない要素になっています。

ActionScriptの従来のバージョンも、魅力あるWeb体験を提供するために必要な機能と柔軟性を備えていました。 さらに進化したActionScript 3.0は優れたパフォーマンスと使いやすさを備えた言語で、高度に複雑なアプリケーション、大量のデータセットおよびオブジェクト指向の再利用可能なコードベースに簡単に対応することができます。ActionScript 3.0を使用すれば、Flash Player向けの高性能のコンテンツとアプリケーションを効率よく開発することが可能になります。

ActionScript 3.0は、スクリプト記述用の国際標準プログラミング言語であるECMAScriptを基礎としています。 ECMAScript言語仕様第3版(ECMA-262)に準拠しています。さらに、現在、ECMA内で作成中のECMAScript第4版に基づいた機能も備えています。

ActionScriptはFlash Playerに組み込まれたAVM(ActionScript Virtual Machine)で実行されます。AVM1は従来のActionScriptコードを実行するための仮想マシンで、現在のFlash Player用の強力なコンテンツの開発、およびさまざまなインタラクティブメディアやリッチインターネットアプリケーションを実現するために使用されました。

しかし、開発者はAVM1の限界を感じ始めていました。現在のプロジェクトはより強力な仮想マシンを必要としています。ActionScript 3.0には新しく開発された高度に最適化されたAVM2が搭載され、そのパフォーマンスは前バージョンに比べ飛躍的に高速化しました。その結果、従来のActionScriptコードの約10倍の実行速度が実現しています。

最新バージョンの仮想マシンであるAVM2は、Flash Player 9に搭載されており、今後、ActionScript実行時の主力エンジンとして活躍します。従来のAVM1は引き続き、Flash Playerの下位互換性によりサポートされます。

Flash Player実行時を対象にしたコンテンツやアプリケーションを作成するさまざまな製品があります。こうした製品は多くの場合、作品にインタラクティブな操作やビヘイビアを追加するためにActionScriptを組み込んでいます。Adobe製品ファミリーの場合は、プロのデザイナーや開発者がFlash Player用のコンテンツを作成するために、Flash、Flex、Flash Media Serverなどの複数のツールやサーバ内でActionScriptを使用することを考慮しています。——Eclipseベースの新しいFlex Builder 2 IDEなどのFlex製品ファミリーが、ActionScript 3.0の新機能を使用することができる最初の製品となる予定です。

ActionScript 3.0の目的

ActionScript 3.0の目的は一貫性のあるより良いプログラミングモデルを提供すること、業界標準に準拠すること、そして従来の製品に比べて大幅に向上したパフォーマンスを実現することです。ActionScript 3.0は実行時用の新しいプログラミングモデルを提供しますが、オブジェクト指向プログラミングの基本的知識があれば、簡単に使用することができます。

ActionScript 3.0は次のような特長を備えています。

  • 安全性:型の安全性を確保できるので、あいまいさのないメンテナンスの容易なコードを記述することができます。
  • 簡単:直感的に使用できるので、リファレンスマニュアルをひんぱんに参照しなくても、プログラムを読んだり記述したりすることができます。
  • パフォーマンス:複雑であっても効率的で応答性の良いプログラムを記述することができます。
  • 互換性:下位互換性と上位互換性を備え、業界標準に準拠しています。ActionScript 3.0はECMAScriptに基づいており、ActionScript 2.0の機能に加えて、ECMAScript for XML(E4X)の機能が搭載され、言語の一貫性が維持されます。

ActionScript 3.0の機能

ActionScript 3.0はコア言語とFlash Player APIで構成されています。コア言語は文、式、条件、ループおよび型などのプログラミング言語の基本的な単位を定義しています。Flash Player APIは、Flash Player固有の機能にアクセスするためのクラスから成り立っています。

ActionScript 3.0には強力な新機能が多数搭載されており、開発プロセスを大幅に高速化することができます。正規表現を使用できるので、テキストに対してさまざまな強力な演算を適用することができます。ECMAScript for XML(E4X)によってXMLをネイティブデータ型に変換できるので、XML処理が非常に簡単になります。新しいDisplay List APIによって、ビジュアルオブジェクトを直接的で一貫性のある方法で操作することができます。標準化されたDOMイベントモデルによって、実行時にオブジェクト同士を対話させることができます。これらはActionScript 3.0の数多くの新機能のほんの一部です。

言語の機能

ActionScript 2.0のコア言語については、ActionScript 3.0では ECMAScript標準に準拠したものとなり、さらに新機能や強化された機能が加わりました。これらの新機能について詳しくは、『ActionScript 3.0 リファレンスガイド』を参照してください。これはベータ版のAdobe Labsで入手できます。

次に、新機能の利点と使用方法の概要を説明します。

実行時例外

ActionScript 2.0では多くの実行時エラーは報告されません。そのため、古いWebブラウザを使用する場合のJavaScriptのように、Flash Playerに不可解なダイアログボックスが表示されることはありませんでした。しかし、エラーが報告されないため、ActionScriptプログラムのデバッグがむずかしくなります。

ActionScript 3.0では一般的なエラー条件のさまざまな実行時例外が用意されているので、デバッグが容易になり、アプリケーションでエラーを確実に処理できるようになります。実行時エラーの際にソースファイルと行番号の情報が提供されるので、エラーを素早く正確に特定することができます。

実行時の型

ActionScript 2.0では、型の注釈は主に開発者を補助するためのもので、実行時にすべての値が動的に入力されました。

ActionScript 3.0では型の情報が実行時に保存されるので、さまざまな目的に利用することができます。Flash Playerによって実行時の型のチェックが行われるので、システムにおける型の安全性が向上します。型の情報を使用して、ネイティブマシンの表現で変数が表現されるので、パフォーマンスが向上し、使用するメモリを少なくすることができます。

シールクラス

ActionScript 3.0にはシールクラスの概念が導入されています。 シールクラスは、コンパイル時に定義されたプロパティとメソッドの固定セットのみを所有し、プロパティとメソッドを追加することはできません。このため、コンパイル時に厳格なチェックを行うことが可能になり、より堅牢なプログラムを作成することができます。各オブジェクトインスタンスの内部ハッシュテーブルが必要ないので、メモリ使用量も少なくなります。ダイナミックキーワードを使用するダイナミッククラスも可能になります。

メソッドのクロージャ

ActionScript 3.0では、組み込みのイベント代理を提供するメソッドのクロージャによってイベント処理が簡単になります。ActionScript 2.0では、抽出元のオブジェクトインスタンスがクロージャに保存されないため、クロージャを呼び出したときに予期しない動作が起こることがありました。一般的な解決策はmx.utils.Delegateクラスを使用することでしたが、そのためには次のようなコードを記述する必要があります。

myButton.addEventListener("click", Delegate.create(this, someMethod)); Delegate.create(this, someMethod)

このクラスはActionScript 3.0では必要ありません。 someMethodが参照されます。元のオブジェクトインスタンスがメソッドのクロージャに自動的に保存されます。次のように簡単に記述するだけで済みます。

myButton.addEventListener("click", someMethod);

ECMAScript for XML(E4X)

ActionScript 3.0には、最近ECMA-357として標準化された完全なECMAScript for XML(E4X)が実装されています。E4Xによって、自然でなめらかな言語でXMLを操作できます。従来のXML解析APIとは異なり、E4Xでは XMLをネイティブデータ型であるかのように操作することが可能になります。必要なコードの量を大幅に減らして、XMLを操作するアプリケーションを効率的に開発することができます。

E4X仕様の詳細 (PDF, 1.8 MB)

正規表現

ActionScript 3.0は正規表現をネイティブでサポートするため、文字列を素早く検索して操作することができます。ActionScript 3.0では、ECMAScript言語仕様(ECMA-262)で定義された正規表現を使用することができます。

名前空間

名前空間は宣言の可視性を制御するための革新的なメカニズムです。 宣言の可視性(public、private、protected)を制御するために使用する従来のアクセス指定子と同様に、名前空間も基本的にはカスタムのアクセス指定子で、選択した名前を使用することができます。たとえば、Flexフレームワークでは内部データにmx_internalという名前空間を使用します。名前空間にはURI(Universal Resource Identifier)があり、衝突を避けることができます。また、E4Xを使用する場合にはXML名前空間を表すこともできます。

新しいプリミティブ型

ActionScript 2.0では単一の数値型 Numberは、2倍精度浮動小数点数です。ActionScript 3.0では、新しくint型が追加されました。これは、32ビット符号付き整数で、ActionScriptコードでCPUの高速な整数値処理機能を利用できるようにします。int型はループカウンタに便利で、ほとんどの場合は小数点が必要ありません。もう1つの新しい型はuintです。符号なしの32ビット整数型で、int型と似ています。

Flash Player APIの機能

Flash Player APIはクラスと関数のセットで、Flash Playerの機能と ActionScript言語を仲介します。つまり、この機能はActionScriptのコア言語と他のプラットフォームの橋渡しをします。Flashアプリケーションにとって非常に重要で、また、コア言語を補完する重要な役割も果たしています。スペースの関係でここではAPIについて詳しく説明できませんが、新機能や興味深い機能のいくつかについて説明します。

DOM3イベントモデル

イベントモデルによって、標準的な方法でイベントメッセージを生成および処理し、アプリケーション内のオブジェクトが対話や通信を行ったり、状態を維持したり変化に応答したりすることを可能にします。このモデルはW3C DOM3イベント仕様に従っており、従来のバージョンのActionScriptのイベントシステムよりも明確で効率的なメカニズムです。FlexアプリケーションフレームワークではFlash Player APIと同様のイベントモデルが使用されるので、プラットフォーム間でイベントシステムが統一されます。

Display List API

Display List API 1は、Flashのビジュアルなプリミティブを操作するための改良されたクラスのセットから成り立っています。

新しいSpriteクラスは、MovieClipと同様に軽量なクラスですが、UIコンポーネントの基本クラスとしてより適切です。新しいShapeクラスはRawベクトル形状を表現します。新しい演算子でこれらのクラスからインスタンスを生成したり、いつでも動的に再度親にしたりすることができます。

リストオブジェクトを表示するために深度の数値を割り当てる必要はありません。深度の管理はFlash Playerに組み込まれており、自動的に行われます。オブジェクトのzオーダを指定して管理する新しいメソッドが追加されました。

次のステップ

このActionScript 3.0の概要では、APIと言語の機能のほんの一部を取り上げました。ActionScript 3.0について詳しく学べば、もっと多くの機能について知ることができます。 『ActionScript 3.0 のプログラミング』(LiveDocsまたはPDF形式)は、ActionScriptのプログラミング概念を実装する方法を学ぶ入門として最適です。『ActionScript 3.0 リファレンスガイド』はコア言語と Flash Player APIについて詳しく学ぶために最適です。ActionScript 1.0または2.0を使い慣れている場合は、「ActionScript 3.0のヒント」をご覧ください。

Flash Player開発チームは、Adobe Labsを通して言語のプレビュー、機能、向上したパフォーマンスを発表できることを大変うれしく思っております。ActionScript 3.0について詳しく知れば、Flex Builder 2、Flexフレームワーク、Flex Data Services 2、およびFlash Player 9を通してどんなことが実現できるかおわかりいただけるでしょう。このプラットフォームの将来にご期待ください。フィードバックはAdobe Labsを通してお寄せください。お待ちしております。