ActionScript(アクションスクリプト)とは、アドビの製品であるFlashに使用されるプログラミング言語である。ECMAScriptを拡張した物である。これを用いることにより、動画や音声のプレイヤーの作成など、コンテンツに複雑な処理や双方向性を持たせFlash作品を作ることが可能である。

## 概要

ActionScriptが初めて搭載されたのが2000年に発売されたFlash 5で、後継バージョンである Flash MX 2004 (Flash 7) からは 2.0 が、Flash CS3 (Flash 9) では3.0が搭載されている。Flash 4やそれ以前にもスクリプト機能は搭載されていたが、それは、ActionScriptとは呼ばれておらず、ECMAScriptベースでもなかった。

初代 ActionScriptは単純で覚えやすいスクリプト言語であり、プロトタイプベースのオブジェクト指向言語だったが、ActionScript 2.0、3.0ではより大規模開発に適したクラスベースのオブジェクト指向言語を搭載した。

ActionScriptは主にSWFファイルの開発用ソフトウェアである Adobe FlashおよびAdobe Flexでスクリプトとして記述する。

## 文法

ActionScript 1.0は文法がJavaScriptに似ているが、ActionScript 2.0からはクラスベースのオブジェクト指向言語になりJavaに似通った特徴を持つようになった。ActionScriptではすべてのデータをオブジェクトと見なしている。Flash ではプログラミングコードを記述する場所が複数あり、タイムラインのフレーム上に書いた場合とクラスとして外部ファイルに書いた場合と記述の仕方が若干異なる。また、ActionScript 2.0 (Flash 8) まではムービークリップまたはボタン上にプログラミングコードを記述できたが、 ActionScript 3.0 (Flash CS3) で廃止された。ここでは ActionScript 3.0の文法を説明していく。

### 変数の宣言

変数の宣言は下記の書式で記述する。

例:

### 関数の宣言

関数の宣言は下記の書式で記述する。

例:

戻り値がない場合は戻り値の型を `void` とする。`void`と宣言した場合、戻り値は `undefined` になる。

### クラスの宣言

クラスの構文はJavaやC#に似通っている。クラスのアクセスレベルはパッケージ外からもアクセスできる`public`とパッケージ内のみからアクセスできる`internal`の2種類があり、省略した場合は`internal`となる。コンストラクタやメソッド、フィールド(メンバー変数、メンバー定数)のアクセスレベルは`public`, `internal`, `protected`, `private`の4種類があり、省略した場合は`internal`となる。コンストラクタは省略可能であり、省略した場合はデフォルトコンストラクタが自動定義される。ソースファイル外部に公開されるクラスの名前は、そのクラスを含むソースファイルの名前と一致する必要がある。ソースファイルの名前は「`クラス名.as`」とし、パッケージと同じディレクトリに置かなければならない。

## 統合開発環境

### アドビ

ActionScriptを編集するためにアドビが提供する各種アプリケーションは、一般的に使われている統合開発環境とは異なる点が多く、それらに慣れたプログラマには評判が悪い傾向がある。Adobe Flex Builder では、Eclipseプラグインの形で編集環境を提供しており、別言語の修得者は差異に悩むことなく開発を行える。またAdobe Flex SDKがアドビから無償で提供されている。これら以外の統合開発環境ではFlashDevelopなどがある。

### その他

無償のオープンソースの物や、アドビ以外の会社が提供するFlash開発用ソフトウェアも発売されている。それらのソフトウェアにもActionScriptに対応しているものがある。オープンソースの Motion-Twin ActionScript 2 Compiler はアドビシステムズ社の製品よりもコンパイルが速いと謳われている。

またオープンソースのコンパイラを利用して ActionScript から SWF ファイルを作る、「FAME」「FAMES」「FLAMES」等と呼ばれる開発環境/開発手法が注目されている。

| 製品名 | 備考 |
| --- | --- |
| LiveSwif | タイムライン式。ActionScriptに対応している。 |
| ParaFla! | イベント式。ActionScriptに対応している。 |
| Suzuka | タイムライン式。ActionScriptに対応している。 |
| wonderfl | ブラウザからActionScriptを入力し、サーバサイドでコンパイルを行うことで無償で開発を行うことができる。 |
| CodeDrive |
| ActionScript 3/Flash IDE |  |
| FlashDevelop | Adobe AIR製ソフトやFlashコンテンツを作成できる無償の開発環境 |

## Flash における ActionScript の歴史

### ActionScript 前

| 公開日 | 製品 | 備考 |
| --- | --- | --- |
| 1997年 | Flash 2 | ボタン機能搭載と共に「ボタンアクション」「フレームアクション」搭載。`getURL()` や `gotoAndPlay()` などが可能。フレーム間の移動が可能になる。 |
| 1998年 | Flash 3 | 複数のスクリプトの記述が可能になった。`loadMovie()`、`fscommand()`など実装。 |
| 1999年 | Flash 4 | 「アクション」機能大幅高度化。変数、四則演算、文字列処理、条件分岐などが追加。関数呼び出しに相当するのは、フレームの移動である、`call()` である。 |

### ActionScript 1

処理系は ActionScript Virtual Machine 1 である。

| 公開日 | 製品 | 備考 |
| --- | --- | --- |
| 2000年 | Flash 5 | ECMAScriptベースとなり、関数が作れるようになる。 |
| 2002年 | Flash MX | イベントハンドラメソッド」搭載。`instanceof` や `===` が導入され、よりECMAScript準拠となる。 |

### ActionScript 2

| 公開日 | 製品 | 備考 |
| --- | --- | --- |
| 2003年 | Flash MX 2004 | クラスベースのオブジェクト指向が導入される。例外処理を追加。 |
| 2005年 | Flash 8 |  |

### ActionScript 3

処理系がActionScript Virtual Machine 2となった。フレームワークも全面的に改装され、立体、透視の実装や、新しいディスプレイオブジェクトとディスプレイオブジェクトコンテイナーの体制が取り入れた。文法では、関数を直接イベントに使用することなどが出来なくなり、3Dモデリングソフトウェアのように自動的に物体の「深さ」(デプス)をレンダリングできないので、これ以前の版に慣れているプログラマには難しいかもしれない。そのために、色々なライブラリ(3D、フィルターなど)がウェブ上で公開されている。

| 公開日 | 製品 | 備考 |
| --- | --- | --- |
| 2006年7月28日 | Flex 2.0 |  |
| 2007年3月27日 | Flash CS3 |  |
| 2008年2月25日 | Flex 3.0 |  |
| 2008年2月25日 | AIR 1.0 |  |
| 2008年12月19日 | Flash CS4 |  |