アクセシビリティ
Adobe
サインイン 注文状況 ユーザー登録

コリン・ムックの「今から始める ActionScript 3.0 - WORLD WIDE TOUR」

Essential ActionScript 3.0


はじめに

会場

セミナーで利用した教材はこちら

日本語訳版はこちら
担当:小野田 智(オノダサトシ)

去る1月15日、ActionScript エキスパート、コリン・ムック氏によるセミナーが開催されました。
今回は平日の朝10時から19時までと非常に長丁場であるにもかかわらず、会場は開始前から満員御礼の状態で、来場者のActionScript 3.0を学ぶ意気込みが感じられました。
「皆さまおはようございます。朝10時は早いですね。照明あかるくしましょう、でないとみなさん眠くなっちゃいますよね」などといったコメントを日本語で行い、場をなごませつつ、ムック氏がステージ上に登場しました。来場者も期待に胸膨らませて大きな拍手で迎えてました。


利用コンテンツ:仮想動物園 VirtualZoo [教材:[the virtual zoo]章を参照のこと]

今回のセミナーは、「仮想動物園 VirtualZoo」を題材に、ActionScript 3.0 プログラミングを基礎から解説していきます。
「VirtualZoo」 という動物園に生息する VirtualPet 「Stan君」 がメインキャラクターなのですが、、彼はスシとリンゴを食べ、お腹が空くと死んでしまいます。なぜ、このような仮想動物園のペットを育てる育成シュミレーションをテーマにしたかというと、ActionScript 3.0のオブジェクト指向を学ぶ上でオブジェクトの性質(生まれる、行動する、消える)を分かりやすく伝えるには、最適なテーマだったからとのことです。

Stan君

「仮想動物園 VirtualZoo」のVirtualPet 「Stan君」

クラスをつくろう![教材:主に[package]と[black box principle] 以降の章を参照のこと]

会場の様子

ActionScript が動作する環境についての一通りの説明の後、クラスはオブジェクトを作るために必要な概念であることを紹介しました。そして、具体的にプログラミング作法を紹介するファーストステップとして

package{
}

と書くところから講義はスタートしました。来場者の中の3割の方は、ActionScript 3.0のプログラミングをまったく初歩から始める方々で、顔つきも緊張してましたが、クラス、コンストラクタ、変数と、ひとつひとつ書き加えるたび、意味と役割を丁寧に説明。整理された形で頭の中に入ってきて、とても分かりやすい講義でした。
「初心者には理解が難しいものも多いかもしれないが、色んな概念に接してもらいたい。聞いたことがあれば、次に勉強する時にきっと力になる。」とムック氏。


ムック氏は、難しく感じる概念を、簡単な例えで分かりやすく説明してくれます。
「クラスはブラックボックス。(と、そこで利用していたピンマイクの本体部分を持ち出し)このピンマイクの本体のように使う人は、オン・オフボタンの切り替えが出来れば、本体部分の中身がどうなってるかあまり気にしないよね。でも外側のオン・オフボタン部分が変わると、大混乱になってしまう。クラスも同じで、内部だけで使う変数やメソッド、つまり、開発者本人以外には触らせたくない部分は、private か internal、外部からのアクセスを受け入れる要素には public 宣言を利用しよう。ブラックボックスの状態のままのものが良いピンマイクの内部の動きは、privateかinternalにて利用者に手渡しているともいえますね。」

全ての変数は基本的にprivateであるべきで、publicな要素はそのクラスのAPIとして機能するものに限定するべきで、外部からの変数アクセスにはmodifier(set~)、retriever (get~)を使うと良いとのアドバイスもありました。 ( setter、 getter という言い方は、ActionScript では別の概念を表すので使わないようにしているそうです。)

継承(inheritance)の話[教材:[inheritance] 以降の章を参照のこと]

会場の様子

車とボートのクラスを作る時、まず乗り物クラスをつくり、車とボートはそこから派生させる。大きいクラス(乗り物)に含まれるクラス(車/ボート)を利用する際に継承という概念を利用します。つまり「 乗り物クラスは、車クラスのスーパークラスであり、車は、乗り物のサブクラス」となります。寿司とリンゴを例にとるのならば、まず食べ物クラスを作り、寿司クラスとリンゴクラスは食べ物クラスを継承して作成します。


package{
class Sushi extends Food(){
public function Sushi(){
......
}
}
}