コラム

AS3から学んだ方がよいの
デザインドリルで学ぶActionScriptは2.0です。最新のActionScriptは3.0なのに なぜActionScript2.0を学ぶのか、ここではデザインドリルのActionScript3.0に対するスタンスを説明しています。

ActionScriptのバージョンは1.0/2.0/3.0進化してきましたが、3.0へ進化はこれまでの進化とは性質がことなります。その理由は..。ActionScript3.0はこれまでのActionScriptとは全く互換性が無いのです。

ActionScript2.0形式のflaにはActionScript1.0やさらに昔のアクションを書いても機能します。
しかしActionScript3.0形式のflaにはActionScript2.0以前のActionScriptは書くことが出来ません。

迷惑に感じますが気持ちは分かります。例えばActionScript2.0までのActionScriptでは、イベントについてもイベントハンドラ、イベントハンドラメソッド、イベントリスナーが混在していたり、プロパティもアンダースコア(_)が必要だったり必要なかったり。クラスもありつつプロトタイプもつかえます。

ActionScriptは2.0まで互換性を保ちつつ進化を重ねてきました。そのおかげで利用者は自分にあった手法を選択でき、デザイナーからプログラマーまで幅広く利用できる優れた言語になりました。
しかしAdobeでFlashを開発している人にとっては、すべてのバージョンを開発し続けることは工数がかかります。そしてFlashを動かしている本体であるAVM(ActionScript Virtual Machine)を効率的に機能させるのも難しいでしょう。

ですからActionScript3.0は互換性を無くし、過去の遺物を切り捨てたのでしょう。そのおかげでAVMの処理速度は飛躍的に上がり、ActionScript3.0の機能も拡張しやすくなりなり進化の速度を上げることができます。
もちろんActionScript2.0や1.0もこれまで通り利用することは可能なので、ActionScript3.0が互換性を持っていないことは致命的な問題ではありません。ですが...

前項でFlashを開発している人が古い仕組みを切り捨てたことをお話ししました。もしActionScriptに何か機能を追加するとき、開発者は切り捨てたものにも機能を追加してくれるでしょうか?するはずはありません。もしActionScript2.0にも新しい機能を追加してくれるなら、そもそもActionScript3.0との互換性を切るようなことはしないでしょう。

つまりActionScript2.0は現状のまま進化を止め、新たな機能はActionScript3.0にしか追加されなくなるのです。
だからデザイナー出身のFlash使いもActionScript3.0には乗り換えるべきです。

以前アドビのイベントでGrant Skinner氏がActionScript3.0の素敵なところを50個紹介するというものがありました。リクルートさんのMedia Technology Labsで和訳されています。が...。デザイナー出身のFlash使いにとっては意味の分からないものばかりです...。

しかしデザイナー出身のFlash使いにもメリットは確実にあります。例えばActionScript3.0はボタンの中にボタンを入れても機能するのでプルダウンメニューが作りやすい、とかFlashの領域から外に出たかを調べることができるのでショーケースFlashを作りやすい等です。(ショーケースFlashとは一定時間毎に表示する広告画像などを切り替えるコンテンツです。Flash上にマウスがあるときはユーザーが広告の内容を読んでいると想定し、広告の切り替えをストップするなどの配慮が必要になります。)

前項の説明の通り、デザイナー出身のFlash使いにもメリットがあるので、デザインドリルではActionScript3.0までの修得を目標とします(まだ講座開発が間に合わない状態ですが...)。
なのになぜ、ActionScript3.0と互換性のないActionScript2.0から学び始めるかを説明したいと思います。

ActionScript3.0の一番のネックは「初期段階で必要なプログラミングの知識が多い」ということです。簡単に言うと、シンプルな機能を実現するにも比較的多くのActionScriptを書かなくてはならず、それぞれをきちんと理解しなくてはいけない。ということです。つまり「こんなシンプルな物を作るのにこんなに大変なの??」という感じを受けやすいのです。

誤解を招かないように補足します。ActionScript3.0はコンテンツを効率よく作成するためにいろいろ下準備が必要なのです。そのおかげで大規模のコンテンツでも効率的に作成できます。しかし簡単な物にも同じように下準備が必要なので、上記の印象につながるのです。

もちろん、入門レベルでの教材ではシンプルなコンテンツを作ることになりますから上記のような印象を受け、モチベーションが下がりがちです。ActionScript2.0も初期段階で必要な知識は少なくはないので、結構大変なのですがActionScript3.0よりは学びやすくなっています。

またActionScript2.0から始めることで、プログラムの考え方を学ぶのにも役に立ちます。デザインドリルでは、最初の講座ではonを利用してインスタンスにActionScriptを書くことを学びます(これはFlash5の時代の書き方です)。これは覚える事も少なく、簡単にボタンを作成できますが効率的な設計ができません。講座では具体的な事例と共になぜ効率的でないかを説明します。

その後で、イベントハンドラメソッドを利用した手法(FlashMX以降の書き方)を学び、どのように効率的にできるかを説明します。そして最後、(まだ講座は完成していませんが)クラスという仕組み(FlashMX2004以降の書き方)を学ぶ際にはイベントハンドラメソッドを利用した手法の限界を提示し、それをクラスがどのように打ち破るかを説明します。

クラスという仕組みは、昔の開発者が勝手に作り上げた物ではありません。効率的な設計を求め続けて辿り着いた仕組みなのです。そういった流れを追体験することによって、仕事で大切な効率的で仕様変更にも柔軟に対応できる設計思想を感じることが出来るのです。

デザインドリルは株式会社です。ですから営利を求めて活動しています。上記のようにActionScript2.0を学ぶ必要性を説いたのもActionScript2.0を学んだ後でActionScript3.0を学ばせ「二重に受講料を得る」ためと考える方がいるかもしれません。そういうときはセカンドオピニオン(第三者の意見)を参考にしましょう。ここではActionScript3.0の講座を開催しているサイトへのリンクを紹介します。そこで対象者の項目を確認してください。

・もっとほんきでクスール
概要での最初の見出しに「1.ActionScript 1.0/2.0を学んだ人を対象としています」とあります。

・ロクナナワークショップ:林拓也のActionScript 3.0入門講座(前半)
ページ一番下「受講対象レベルチェック問題」というところでActionScript1.0/2.0の問題があるので、ActionScriptを使ったことのある方を対象としていることがわかります。そしてActionScript2.0の講座もきちんと用意されています。

上記の例からも、ActionScript3.0を修得するにはActionScript2.0を先に修得した方がよいという考えは信憑性があると言えるのではないでしょうか。

2009.5/21

閉じる