ActionScript を薦める5つの理由

最近 ActionScript 3.0 はじめました。

ActionScript がすごいこと気づいてしまいました。

JavaScript の多くの限界を簡単に克服できちゃいます。

そこで、ActionScript 3.0 の魅力を JavaScript と比較しながらまとめてみました。

1. 何も考えなくてもクロスブラウザ

JavaScript を書く上で避けられないのがクロスブラウザ化です。IE や FireFox 専用、などと言い切ってしまうのは簡単なのですが、対応ブラウザを増やすためには、初期開発と同等、もしくはそれ以上の時間がかかってしまいます。

1年ほど前の情報ですが、Google Maps のソースコードは Safari だけ別の JavaScript ファイルをロードしていました。あの Google が1つのブラウザを特別扱いしてしまうぐらいにクロスブラウザ化は面倒なのです。

それに比べ、Flash はどのブラウザでも動きます。クロスブラウザを意識しながらコーディングするストレスから開放されます。これは予想以上に幸せなことでした。

  • Flash Player のバグで特定の機能が使えない、といった問題もあるようですが、JavaScript に比べればはるかに楽でしょう
  • ケータイで動かすには Flash Lite で開発することになります。Cybozu の鴨志田さん資料がよくまとまっています。

2. DOM をいじるのに比べて描画表示が速い

JavaScript には DIV タグを使ったり、canvas と VML などを組み合わせて力技で図形描画するテクニックがありますが、ActionScript を使えば円でもなんでも好きに描画できます。もともと Flash はベクター画像が得意なわけですから、描画も高速! ブラウザに負荷をかけることはありません。

Flash でグラフ描画するツール amChartsXML/SWF を見れば、表現力は一目瞭然ですね。

Flash で作った Photoshop もどきの Fauxto も最近話題になりましたが、ActionScript 3 / Flex 2 に手を出している私としては、あーできるできる、と思ってしまいました。

3. ECMAScript ベース、むしろ未来の JavaScript が見えてくる

AS 3.0 は ECMAScript なので JavaScript で蓄えたノウハウが使えます。Date や Array はそのまんま。prototype 拡張のテクニックも使えてしまいます。

現在、ECMAScript は 3.0 まで策定されているのですが、AS 3.0 は ECMAScript 4.0 をベースにしていることになっています。実際、AS 3.0 の実行エンジンが Mozilla に寄贈され、FireFox の次世代の JS エンジンは AS 3.0 と同じものになるようです。

Adobe は Mozilla を取り込んで、AS 3.0 をデファクトスタンダードにする気満々なんでしょうね。

4. E4X 実装

E4X が実装されてます。E4X は XML を DOM 経由でいじるめんどくさいのを解消してくれる素晴らしい仕様。

例えば、こんな XML でも

<order>
    <item id='1'>
        <menuName>burger</menuName>
        <price>3.95</price>
    </item>
    <item id='2'>
        <menuName>fries</menuName>
        <price>1.45</price>
    </item>
</order>

こんな風に XML を Object として扱えちゃいます。

trace(myXML.item[0].menuName); // 出力 : burger
trace(myXML.item.(@id==2).menuName); // 出力 : fries
trace(myXML.item.(menuName=="burger").price); // 出力 : 3.95

JavaScript で例えると、XML2JSON なサービスがネイティブに実装されているイメージ、Perl で例えると XML::Simple みたいなのりです。

詳しくは 公式ドキュメント を参照あれ。

5. コマンドラインで SWF を作れる

Flex SDK を導入すれば、エディタ+コマンドプロンプトで SWF を作れます。もちろん無料。使い慣れたエディタでの開発できるのは魅力的です。

作成した SWF をサーバーにアップロードするだけで公開できます。Flex は、バージョン 1.5 まではサーバー側で SWF を吐くための技術でしたが、Flex 2 からは一般人でも SDK を触って、簡単に SWF を作れるようになりました。

クラスライブラリも分かりやすく、JAVA・C#・MFC などで GUI アプリの開発経験があれば、マニュアルをみればだいたいの使い方は分かると思います。

また、SDK に Flex ライブラリのソースコードが付属しているのも魅力的です。ちょっと挙動が気になったときにソースを読みたくなる人にはうれしいところでしょう。

おまけ:ActionScript の嫌なところ

いいところばかりを書いてみましたが、いかがだったでしょうか。

褒めちぎるのもあれなので、嫌なところも簡単にまとめてみます。

Flash Player 9 必須
まだ、8 の人が多いと思います。そのうち、解消されるでしょうが、不安要素ではあります。
デバッグ環境
JavaScript は FireBug を使えば恐ろしいぐらいに開発効率がよくなりますが、Flash の開発補助ツールはまだまだ発展途上です。Adobe 純正の Flex Builder を使えばそれなりの効率はでますが、6万円という値段は個人では敷居が高いところです。
Flex のファイルサイズでかい
MXML をはじめとする Flex ライブラリは便利でなのですが、Flex を使うとファイルサイズが100KB超えてしまいます。ActionScript 3 だけでビルドすれば軽量ですが、Flex も使いたい…微妙な心境です。
ActionScript の言語仕様への不満
ブロックスコープなし、抽象クラスなし、eval なし、1ファイル1クラス...など
ドキュメント不足
Adobe は積極的に情報を公開してくれているのですが、自発的にノウハウを公開する開発者がほとんどいません。国内は皆無、海外にはちょぼちょぼいますが、JavaScript のそれに比べると、「うわーこいつすげー」というブログはなかなか見かけません。

リンク